1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067 |
- import {
- identity,
- isClient,
- isObject,
- noop,
- notNullish,
- toValue,
- tryOnScopeDispose,
- tryOnUnmounted
- } from "./chunk-6366KF45.js";
- import {
- computed2 as computed,
- defineComponent,
- getCurrentInstance,
- h,
- isHTMLTag,
- isRef,
- onMounted,
- onUpdated,
- reactive,
- ref,
- resolveComponent,
- unref,
- useSlots,
- watch,
- watchEffect
- } from "./chunk-RDKJTCL2.js";
- import "./chunk-HM4MQYWN.js";
- // node_modules/defu/dist/defu.mjs
- function isPlainObject(value) {
- if (value === null || typeof value !== "object") {
- return false;
- }
- const prototype = Object.getPrototypeOf(value);
- if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {
- return false;
- }
- if (Symbol.iterator in value) {
- return false;
- }
- if (Symbol.toStringTag in value) {
- return Object.prototype.toString.call(value) === "[object Module]";
- }
- return true;
- }
- function _defu(baseObject, defaults, namespace = ".", merger) {
- if (!isPlainObject(defaults)) {
- return _defu(baseObject, {}, namespace, merger);
- }
- const object = Object.assign({}, defaults);
- for (const key in baseObject) {
- if (key === "__proto__" || key === "constructor") {
- continue;
- }
- const value = baseObject[key];
- if (value === null || value === void 0) {
- continue;
- }
- if (merger && merger(object, key, value, namespace)) {
- continue;
- }
- if (Array.isArray(value) && Array.isArray(object[key])) {
- object[key] = [...value, ...object[key]];
- } else if (isPlainObject(value) && isPlainObject(object[key])) {
- object[key] = _defu(
- value,
- object[key],
- (namespace ? `${namespace}.` : "") + key.toString(),
- merger
- );
- } else {
- object[key] = value;
- }
- }
- return object;
- }
- function createDefu(merger) {
- return (...arguments_) => (
- // eslint-disable-next-line unicorn/no-array-reduce
- arguments_.reduce((p, c2) => _defu(p, c2, "", merger), {})
- );
- }
- var defu = createDefu();
- var defuFn = createDefu((object, key, currentValue) => {
- if (object[key] !== void 0 && typeof currentValue === "function") {
- object[key] = currentValue(object[key]);
- return true;
- }
- });
- var defuArrayFn = createDefu((object, key, currentValue) => {
- if (Array.isArray(object[key]) && typeof currentValue === "function") {
- object[key] = currentValue(object[key]);
- return true;
- }
- });
- // node_modules/@vueuse/motion/node_modules/vue-demi/lib/index.mjs
- var isVue2 = false;
- // node_modules/@vueuse/motion/node_modules/@vueuse/core/index.mjs
- function unrefElement(elRef) {
- var _a;
- const plain = toValue(elRef);
- return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
- }
- var defaultWindow = isClient ? window : void 0;
- var defaultDocument = isClient ? window.document : void 0;
- var defaultNavigator = isClient ? window.navigator : void 0;
- var defaultLocation = isClient ? window.location : void 0;
- function useEventListener(...args) {
- let target;
- let events;
- let listeners;
- let options;
- if (typeof args[0] === "string" || Array.isArray(args[0])) {
- [events, listeners, options] = args;
- target = defaultWindow;
- } else {
- [target, events, listeners, options] = args;
- }
- if (!target)
- return noop;
- if (!Array.isArray(events))
- events = [events];
- if (!Array.isArray(listeners))
- listeners = [listeners];
- const cleanups = [];
- const cleanup = () => {
- cleanups.forEach((fn) => fn());
- cleanups.length = 0;
- };
- const register = (el, event, listener, options2) => {
- el.addEventListener(event, listener, options2);
- return () => el.removeEventListener(event, listener, options2);
- };
- const stopWatch = watch(
- () => [unrefElement(target), toValue(options)],
- ([el, options2]) => {
- cleanup();
- if (!el)
- return;
- const optionsClone = isObject(options2) ? { ...options2 } : options2;
- cleanups.push(
- ...events.flatMap((event) => {
- return listeners.map((listener) => register(el, event, listener, optionsClone));
- })
- );
- },
- { immediate: true, flush: "post" }
- );
- const stop = () => {
- stopWatch();
- cleanup();
- };
- tryOnScopeDispose(stop);
- return stop;
- }
- function useMounted() {
- const isMounted = ref(false);
- const instance = getCurrentInstance();
- if (instance) {
- onMounted(() => {
- isMounted.value = true;
- }, isVue2 ? null : instance);
- }
- return isMounted;
- }
- function useSupported(callback) {
- const isMounted = useMounted();
- return computed(() => {
- isMounted.value;
- return Boolean(callback());
- });
- }
- function useMediaQuery(query, options = {}) {
- const { window: window2 = defaultWindow } = options;
- const isSupported = useSupported(() => window2 && "matchMedia" in window2 && typeof window2.matchMedia === "function");
- let mediaQuery;
- const matches = ref(false);
- const handler = (event) => {
- matches.value = event.matches;
- };
- const cleanup = () => {
- if (!mediaQuery)
- return;
- if ("removeEventListener" in mediaQuery)
- mediaQuery.removeEventListener("change", handler);
- else
- mediaQuery.removeListener(handler);
- };
- const stopWatch = watchEffect(() => {
- if (!isSupported.value)
- return;
- cleanup();
- mediaQuery = window2.matchMedia(toValue(query));
- if ("addEventListener" in mediaQuery)
- mediaQuery.addEventListener("change", handler);
- else
- mediaQuery.addListener(handler);
- matches.value = mediaQuery.matches;
- });
- tryOnScopeDispose(() => {
- stopWatch();
- cleanup();
- mediaQuery = void 0;
- });
- return matches;
- }
- var _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
- var globalKey = "__vueuse_ssr_handlers__";
- var handlers = getHandlers();
- function getHandlers() {
- if (!(globalKey in _global))
- _global[globalKey] = _global[globalKey] || {};
- return _global[globalKey];
- }
- function useIntersectionObserver(target, callback, options = {}) {
- const {
- root,
- rootMargin = "0px",
- threshold = 0.1,
- window: window2 = defaultWindow,
- immediate = true
- } = options;
- const isSupported = useSupported(() => window2 && "IntersectionObserver" in window2);
- const targets = computed(() => {
- const _target = toValue(target);
- return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);
- });
- let cleanup = noop;
- const isActive = ref(immediate);
- const stopWatch = isSupported.value ? watch(
- () => [targets.value, unrefElement(root), isActive.value],
- ([targets2, root2]) => {
- cleanup();
- if (!isActive.value)
- return;
- if (!targets2.length)
- return;
- const observer = new IntersectionObserver(
- callback,
- {
- root: unrefElement(root2),
- rootMargin,
- threshold
- }
- );
- targets2.forEach((el) => el && observer.observe(el));
- cleanup = () => {
- observer.disconnect();
- cleanup = noop;
- };
- },
- { immediate, flush: "post" }
- ) : noop;
- const stop = () => {
- cleanup();
- stopWatch();
- isActive.value = false;
- };
- tryOnScopeDispose(stop);
- return {
- isSupported,
- isActive,
- pause() {
- cleanup();
- isActive.value = false;
- },
- resume() {
- isActive.value = true;
- },
- stop
- };
- }
- var defaultState = {
- x: 0,
- y: 0,
- pointerId: 0,
- pressure: 0,
- tiltX: 0,
- tiltY: 0,
- width: 0,
- height: 0,
- twist: 0,
- pointerType: null
- };
- var keys = Object.keys(defaultState);
- var DEFAULT_UNITS = [
- { max: 6e4, value: 1e3, name: "second" },
- { max: 276e4, value: 6e4, name: "minute" },
- { max: 72e6, value: 36e5, name: "hour" },
- { max: 5184e5, value: 864e5, name: "day" },
- { max: 24192e5, value: 6048e5, name: "week" },
- { max: 28512e6, value: 2592e6, name: "month" },
- { max: Number.POSITIVE_INFINITY, value: 31536e6, name: "year" }
- ];
- var _TransitionPresets = {
- easeInSine: [0.12, 0, 0.39, 0],
- easeOutSine: [0.61, 1, 0.88, 1],
- easeInOutSine: [0.37, 0, 0.63, 1],
- easeInQuad: [0.11, 0, 0.5, 0],
- easeOutQuad: [0.5, 1, 0.89, 1],
- easeInOutQuad: [0.45, 0, 0.55, 1],
- easeInCubic: [0.32, 0, 0.67, 0],
- easeOutCubic: [0.33, 1, 0.68, 1],
- easeInOutCubic: [0.65, 0, 0.35, 1],
- easeInQuart: [0.5, 0, 0.75, 0],
- easeOutQuart: [0.25, 1, 0.5, 1],
- easeInOutQuart: [0.76, 0, 0.24, 1],
- easeInQuint: [0.64, 0, 0.78, 0],
- easeOutQuint: [0.22, 1, 0.36, 1],
- easeInOutQuint: [0.83, 0, 0.17, 1],
- easeInExpo: [0.7, 0, 0.84, 0],
- easeOutExpo: [0.16, 1, 0.3, 1],
- easeInOutExpo: [0.87, 0, 0.13, 1],
- easeInCirc: [0.55, 0, 1, 0.45],
- easeOutCirc: [0, 0.55, 0.45, 1],
- easeInOutCirc: [0.85, 0, 0.15, 1],
- easeInBack: [0.36, 0, 0.66, -0.56],
- easeOutBack: [0.34, 1.56, 0.64, 1],
- easeInOutBack: [0.68, -0.6, 0.32, 1.6]
- };
- var TransitionPresets = Object.assign({}, { linear: identity }, _TransitionPresets);
- // node_modules/framesync/dist/es/on-next-frame.mjs
- var defaultTimestep = 1 / 60 * 1e3;
- var getCurrentTime = typeof performance !== "undefined" ? () => performance.now() : () => Date.now();
- var onNextFrame = typeof window !== "undefined" ? (callback) => window.requestAnimationFrame(callback) : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);
- // node_modules/framesync/dist/es/create-render-step.mjs
- function createRenderStep(runNextFrame2) {
- let toRun = [];
- let toRunNextFrame = [];
- let numToRun = 0;
- let isProcessing2 = false;
- let flushNextFrame = false;
- const toKeepAlive = /* @__PURE__ */ new WeakSet();
- const step = {
- schedule: (callback, keepAlive = false, immediate = false) => {
- const addToCurrentFrame = immediate && isProcessing2;
- const buffer = addToCurrentFrame ? toRun : toRunNextFrame;
- if (keepAlive)
- toKeepAlive.add(callback);
- if (buffer.indexOf(callback) === -1) {
- buffer.push(callback);
- if (addToCurrentFrame && isProcessing2)
- numToRun = toRun.length;
- }
- return callback;
- },
- cancel: (callback) => {
- const index = toRunNextFrame.indexOf(callback);
- if (index !== -1)
- toRunNextFrame.splice(index, 1);
- toKeepAlive.delete(callback);
- },
- process: (frameData) => {
- if (isProcessing2) {
- flushNextFrame = true;
- return;
- }
- isProcessing2 = true;
- [toRun, toRunNextFrame] = [toRunNextFrame, toRun];
- toRunNextFrame.length = 0;
- numToRun = toRun.length;
- if (numToRun) {
- for (let i = 0; i < numToRun; i++) {
- const callback = toRun[i];
- callback(frameData);
- if (toKeepAlive.has(callback)) {
- step.schedule(callback);
- runNextFrame2();
- }
- }
- }
- isProcessing2 = false;
- if (flushNextFrame) {
- flushNextFrame = false;
- step.process(frameData);
- }
- }
- };
- return step;
- }
- // node_modules/framesync/dist/es/index.mjs
- var maxElapsed = 40;
- var useDefaultElapsed = true;
- var runNextFrame = false;
- var isProcessing = false;
- var frame = {
- delta: 0,
- timestamp: 0
- };
- var stepsOrder = [
- "read",
- "update",
- "preRender",
- "render",
- "postRender"
- ];
- var steps = stepsOrder.reduce((acc, key) => {
- acc[key] = createRenderStep(() => runNextFrame = true);
- return acc;
- }, {});
- var sync = stepsOrder.reduce((acc, key) => {
- const step = steps[key];
- acc[key] = (process2, keepAlive = false, immediate = false) => {
- if (!runNextFrame)
- startLoop();
- return step.schedule(process2, keepAlive, immediate);
- };
- return acc;
- }, {});
- var cancelSync = stepsOrder.reduce((acc, key) => {
- acc[key] = steps[key].cancel;
- return acc;
- }, {});
- var flushSync = stepsOrder.reduce((acc, key) => {
- acc[key] = () => steps[key].process(frame);
- return acc;
- }, {});
- var processStep = (stepId) => steps[stepId].process(frame);
- var processFrame = (timestamp2) => {
- runNextFrame = false;
- frame.delta = useDefaultElapsed ? defaultTimestep : Math.max(Math.min(timestamp2 - frame.timestamp, maxElapsed), 1);
- frame.timestamp = timestamp2;
- isProcessing = true;
- stepsOrder.forEach(processStep);
- isProcessing = false;
- if (runNextFrame) {
- useDefaultElapsed = false;
- onNextFrame(processFrame);
- }
- };
- var startLoop = () => {
- runNextFrame = true;
- useDefaultElapsed = true;
- if (!isProcessing)
- onNextFrame(processFrame);
- };
- var getFrameData = () => frame;
- var es_default = sync;
- // node_modules/tslib/tslib.es6.js
- function __rest(s, e) {
- var t = {};
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- }
- // node_modules/hey-listen/dist/hey-listen.es.js
- var warning = function() {
- };
- var invariant = function() {
- };
- if (true) {
- warning = function(check, message) {
- if (!check && typeof console !== "undefined") {
- console.warn(message);
- }
- };
- invariant = function(check, message) {
- if (!check) {
- throw new Error(message);
- }
- };
- }
- // node_modules/popmotion/dist/es/utils/clamp.mjs
- var clamp2 = (min, max, v) => Math.min(Math.max(v, min), max);
- // node_modules/popmotion/dist/es/animations/utils/find-spring.mjs
- var safeMin = 1e-3;
- var minDuration = 0.01;
- var maxDuration = 10;
- var minDamping = 0.05;
- var maxDamping = 1;
- function findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {
- let envelope;
- let derivative;
- warning(duration <= maxDuration * 1e3, "Spring duration must be 10 seconds or less");
- let dampingRatio = 1 - bounce;
- dampingRatio = clamp2(minDamping, maxDamping, dampingRatio);
- duration = clamp2(minDuration, maxDuration, duration / 1e3);
- if (dampingRatio < 1) {
- envelope = (undampedFreq2) => {
- const exponentialDecay = undampedFreq2 * dampingRatio;
- const delta = exponentialDecay * duration;
- const a2 = exponentialDecay - velocity;
- const b2 = calcAngularFreq(undampedFreq2, dampingRatio);
- const c2 = Math.exp(-delta);
- return safeMin - a2 / b2 * c2;
- };
- derivative = (undampedFreq2) => {
- const exponentialDecay = undampedFreq2 * dampingRatio;
- const delta = exponentialDecay * duration;
- const d = delta * velocity + velocity;
- const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;
- const f = Math.exp(-delta);
- const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);
- const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;
- return factor * ((d - e) * f) / g;
- };
- } else {
- envelope = (undampedFreq2) => {
- const a2 = Math.exp(-undampedFreq2 * duration);
- const b2 = (undampedFreq2 - velocity) * duration + 1;
- return -safeMin + a2 * b2;
- };
- derivative = (undampedFreq2) => {
- const a2 = Math.exp(-undampedFreq2 * duration);
- const b2 = (velocity - undampedFreq2) * (duration * duration);
- return a2 * b2;
- };
- }
- const initialGuess = 5 / duration;
- const undampedFreq = approximateRoot(envelope, derivative, initialGuess);
- duration = duration * 1e3;
- if (isNaN(undampedFreq)) {
- return {
- stiffness: 100,
- damping: 10,
- duration
- };
- } else {
- const stiffness = Math.pow(undampedFreq, 2) * mass;
- return {
- stiffness,
- damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),
- duration
- };
- }
- }
- var rootIterations = 12;
- function approximateRoot(envelope, derivative, initialGuess) {
- let result = initialGuess;
- for (let i = 1; i < rootIterations; i++) {
- result = result - envelope(result) / derivative(result);
- }
- return result;
- }
- function calcAngularFreq(undampedFreq, dampingRatio) {
- return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
- }
- // node_modules/popmotion/dist/es/animations/generators/spring.mjs
- var durationKeys = ["duration", "bounce"];
- var physicsKeys = ["stiffness", "damping", "mass"];
- function isSpringType(options, keys2) {
- return keys2.some((key) => options[key] !== void 0);
- }
- function getSpringOptions(options) {
- let springOptions = Object.assign({ velocity: 0, stiffness: 100, damping: 10, mass: 1, isResolvedFromDuration: false }, options);
- if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {
- const derived = findSpring(options);
- springOptions = Object.assign(Object.assign(Object.assign({}, springOptions), derived), { velocity: 0, mass: 1 });
- springOptions.isResolvedFromDuration = true;
- }
- return springOptions;
- }
- function spring(_a) {
- var { from = 0, to = 1, restSpeed = 2, restDelta } = _a, options = __rest(_a, ["from", "to", "restSpeed", "restDelta"]);
- const state = { done: false, value: from };
- let { stiffness, damping, mass, velocity, duration, isResolvedFromDuration } = getSpringOptions(options);
- let resolveSpring = zero;
- let resolveVelocity = zero;
- function createSpring() {
- const initialVelocity = velocity ? -(velocity / 1e3) : 0;
- const initialDelta = to - from;
- const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));
- const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1e3;
- if (restDelta === void 0) {
- restDelta = Math.min(Math.abs(to - from) / 100, 0.4);
- }
- if (dampingRatio < 1) {
- const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
- resolveSpring = (t) => {
- const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
- return to - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));
- };
- resolveVelocity = (t) => {
- const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
- return dampingRatio * undampedAngularFreq * envelope * (Math.sin(angularFreq * t) * (initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq + initialDelta * Math.cos(angularFreq * t)) - envelope * (Math.cos(angularFreq * t) * (initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) - angularFreq * initialDelta * Math.sin(angularFreq * t));
- };
- } else if (dampingRatio === 1) {
- resolveSpring = (t) => to - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);
- } else {
- const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);
- resolveSpring = (t) => {
- const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
- const freqForT = Math.min(dampedAngularFreq * t, 300);
- return to - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;
- };
- }
- }
- createSpring();
- return {
- next: (t) => {
- const current = resolveSpring(t);
- if (!isResolvedFromDuration) {
- const currentVelocity = resolveVelocity(t) * 1e3;
- const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;
- const isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;
- state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
- } else {
- state.done = t >= duration;
- }
- state.value = state.done ? to : current;
- return state;
- },
- flipTarget: () => {
- velocity = -velocity;
- [from, to] = [to, from];
- createSpring();
- }
- };
- }
- spring.needsInterpolation = (a2, b2) => typeof a2 === "string" || typeof b2 === "string";
- var zero = (_t) => 0;
- // node_modules/popmotion/dist/es/utils/progress.mjs
- var progress = (from, to, value) => {
- const toFromDifference = to - from;
- return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
- };
- // node_modules/popmotion/dist/es/utils/mix.mjs
- var mix = (from, to, progress2) => -progress2 * from + progress2 * to + from;
- // node_modules/style-value-types/dist/es/utils.mjs
- var clamp3 = (min, max) => (v) => Math.max(Math.min(v, max), min);
- var sanitize = (v) => v % 1 ? Number(v.toFixed(5)) : v;
- var floatRegex = /(-)?([\d]*\.?[\d])+/g;
- var colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi;
- var singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;
- function isString(v) {
- return typeof v === "string";
- }
- // node_modules/style-value-types/dist/es/numbers/index.mjs
- var number = {
- test: (v) => typeof v === "number",
- parse: parseFloat,
- transform: (v) => v
- };
- var alpha = Object.assign(Object.assign({}, number), { transform: clamp3(0, 1) });
- var scale = Object.assign(Object.assign({}, number), { default: 1 });
- // node_modules/style-value-types/dist/es/numbers/units.mjs
- var createUnitType = (unit) => ({
- test: (v) => isString(v) && v.endsWith(unit) && v.split(" ").length === 1,
- parse: parseFloat,
- transform: (v) => `${v}${unit}`
- });
- var degrees = createUnitType("deg");
- var percent = createUnitType("%");
- var px = createUnitType("px");
- var vh = createUnitType("vh");
- var vw = createUnitType("vw");
- var progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });
- // node_modules/style-value-types/dist/es/color/utils.mjs
- var isColorString = (type, testProp) => (v) => {
- return Boolean(isString(v) && singleColorRegex.test(v) && v.startsWith(type) || testProp && Object.prototype.hasOwnProperty.call(v, testProp));
- };
- var splitColor = (aName, bName, cName) => (v) => {
- if (!isString(v))
- return v;
- const [a2, b2, c2, alpha2] = v.match(floatRegex);
- return {
- [aName]: parseFloat(a2),
- [bName]: parseFloat(b2),
- [cName]: parseFloat(c2),
- alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1
- };
- };
- // node_modules/style-value-types/dist/es/color/hsla.mjs
- var hsla = {
- test: isColorString("hsl", "hue"),
- parse: splitColor("hue", "saturation", "lightness"),
- transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
- return "hsla(" + Math.round(hue) + ", " + percent.transform(sanitize(saturation)) + ", " + percent.transform(sanitize(lightness)) + ", " + sanitize(alpha.transform(alpha$1)) + ")";
- }
- };
- // node_modules/style-value-types/dist/es/color/rgba.mjs
- var clampRgbUnit = clamp3(0, 255);
- var rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });
- var rgba = {
- test: isColorString("rgb", "red"),
- parse: splitColor("red", "green", "blue"),
- transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + rgbUnit.transform(red) + ", " + rgbUnit.transform(green) + ", " + rgbUnit.transform(blue) + ", " + sanitize(alpha.transform(alpha$1)) + ")"
- };
- // node_modules/style-value-types/dist/es/color/hex.mjs
- function parseHex(v) {
- let r = "";
- let g = "";
- let b2 = "";
- let a2 = "";
- if (v.length > 5) {
- r = v.substr(1, 2);
- g = v.substr(3, 2);
- b2 = v.substr(5, 2);
- a2 = v.substr(7, 2);
- } else {
- r = v.substr(1, 1);
- g = v.substr(2, 1);
- b2 = v.substr(3, 1);
- a2 = v.substr(4, 1);
- r += r;
- g += g;
- b2 += b2;
- a2 += a2;
- }
- return {
- red: parseInt(r, 16),
- green: parseInt(g, 16),
- blue: parseInt(b2, 16),
- alpha: a2 ? parseInt(a2, 16) / 255 : 1
- };
- }
- var hex = {
- test: isColorString("#"),
- parse: parseHex,
- transform: rgba.transform
- };
- // node_modules/style-value-types/dist/es/color/index.mjs
- var color = {
- test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
- parse: (v) => {
- if (rgba.test(v)) {
- return rgba.parse(v);
- } else if (hsla.test(v)) {
- return hsla.parse(v);
- } else {
- return hex.parse(v);
- }
- },
- transform: (v) => {
- return isString(v) ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
- }
- };
- // node_modules/style-value-types/dist/es/complex/index.mjs
- var colorToken = "${c}";
- var numberToken = "${n}";
- function test(v) {
- var _a, _b, _c, _d;
- return isNaN(v) && isString(v) && ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;
- }
- function analyse(v) {
- if (typeof v === "number")
- v = `${v}`;
- const values = [];
- let numColors = 0;
- const colors = v.match(colorRegex);
- if (colors) {
- numColors = colors.length;
- v = v.replace(colorRegex, colorToken);
- values.push(...colors.map(color.parse));
- }
- const numbers = v.match(floatRegex);
- if (numbers) {
- v = v.replace(floatRegex, numberToken);
- values.push(...numbers.map(number.parse));
- }
- return { values, numColors, tokenised: v };
- }
- function parse(v) {
- return analyse(v).values;
- }
- function createTransformer(v) {
- const { values, numColors, tokenised } = analyse(v);
- const numValues = values.length;
- return (v2) => {
- let output = tokenised;
- for (let i = 0; i < numValues; i++) {
- output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v2[i]) : sanitize(v2[i]));
- }
- return output;
- };
- }
- var convertNumbersToZero = (v) => typeof v === "number" ? 0 : v;
- function getAnimatableNone(v) {
- const parsed = parse(v);
- const transformer = createTransformer(v);
- return transformer(parsed.map(convertNumbersToZero));
- }
- var complex = { test, parse, createTransformer, getAnimatableNone };
- // node_modules/style-value-types/dist/es/complex/filter.mjs
- var maxDefaults = /* @__PURE__ */ new Set(["brightness", "contrast", "saturate", "opacity"]);
- function applyDefaultFilter(v) {
- let [name, value] = v.slice(0, -1).split("(");
- if (name === "drop-shadow")
- return v;
- const [number2] = value.match(floatRegex) || [];
- if (!number2)
- return v;
- const unit = value.replace(number2, "");
- let defaultValue = maxDefaults.has(name) ? 1 : 0;
- if (number2 !== value)
- defaultValue *= 100;
- return name + "(" + defaultValue + unit + ")";
- }
- var functionRegex = /([a-z-]*)\(.*?\)/g;
- var filter = Object.assign(Object.assign({}, complex), { getAnimatableNone: (v) => {
- const functions = v.match(functionRegex);
- return functions ? functions.map(applyDefaultFilter).join(" ") : v;
- } });
- // node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs
- function hueToRgb(p, q, t) {
- if (t < 0)
- t += 1;
- if (t > 1)
- t -= 1;
- if (t < 1 / 6)
- return p + (q - p) * 6 * t;
- if (t < 1 / 2)
- return q;
- if (t < 2 / 3)
- return p + (q - p) * (2 / 3 - t) * 6;
- return p;
- }
- function hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {
- hue /= 360;
- saturation /= 100;
- lightness /= 100;
- let red = 0;
- let green = 0;
- let blue = 0;
- if (!saturation) {
- red = green = blue = lightness;
- } else {
- const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;
- const p = 2 * lightness - q;
- red = hueToRgb(p, q, hue + 1 / 3);
- green = hueToRgb(p, q, hue);
- blue = hueToRgb(p, q, hue - 1 / 3);
- }
- return {
- red: Math.round(red * 255),
- green: Math.round(green * 255),
- blue: Math.round(blue * 255),
- alpha: alpha2
- };
- }
- // node_modules/popmotion/dist/es/utils/mix-color.mjs
- var mixLinearColor = (from, to, v) => {
- const fromExpo = from * from;
- const toExpo = to * to;
- return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));
- };
- var colorTypes = [hex, rgba, hsla];
- var getColorType = (v) => colorTypes.find((type) => type.test(v));
- var notAnimatable = (color2) => `'${color2}' is not an animatable color. Use the equivalent color code instead.`;
- var mixColor = (from, to) => {
- let fromColorType = getColorType(from);
- let toColorType = getColorType(to);
- invariant(!!fromColorType, notAnimatable(from));
- invariant(!!toColorType, notAnimatable(to));
- let fromColor = fromColorType.parse(from);
- let toColor = toColorType.parse(to);
- if (fromColorType === hsla) {
- fromColor = hslaToRgba(fromColor);
- fromColorType = rgba;
- }
- if (toColorType === hsla) {
- toColor = hslaToRgba(toColor);
- toColorType = rgba;
- }
- const blended = Object.assign({}, fromColor);
- return (v) => {
- for (const key in blended) {
- if (key !== "alpha") {
- blended[key] = mixLinearColor(fromColor[key], toColor[key], v);
- }
- }
- blended.alpha = mix(fromColor.alpha, toColor.alpha, v);
- return fromColorType.transform(blended);
- };
- };
- // node_modules/popmotion/dist/es/utils/inc.mjs
- var isNum = (v) => typeof v === "number";
- // node_modules/popmotion/dist/es/utils/pipe.mjs
- var combineFunctions = (a2, b2) => (v) => b2(a2(v));
- var pipe = (...transformers) => transformers.reduce(combineFunctions);
- // node_modules/popmotion/dist/es/utils/mix-complex.mjs
- function getMixer(origin, target) {
- if (isNum(origin)) {
- return (v) => mix(origin, target, v);
- } else if (color.test(origin)) {
- return mixColor(origin, target);
- } else {
- return mixComplex(origin, target);
- }
- }
- var mixArray = (from, to) => {
- const output = [...from];
- const numValues = output.length;
- const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));
- return (v) => {
- for (let i = 0; i < numValues; i++) {
- output[i] = blendValue[i](v);
- }
- return output;
- };
- };
- var mixObject = (origin, target) => {
- const output = Object.assign(Object.assign({}, origin), target);
- const blendValue = {};
- for (const key in output) {
- if (origin[key] !== void 0 && target[key] !== void 0) {
- blendValue[key] = getMixer(origin[key], target[key]);
- }
- }
- return (v) => {
- for (const key in blendValue) {
- output[key] = blendValue[key](v);
- }
- return output;
- };
- };
- function analyse2(value) {
- const parsed = complex.parse(value);
- const numValues = parsed.length;
- let numNumbers = 0;
- let numRGB = 0;
- let numHSL = 0;
- for (let i = 0; i < numValues; i++) {
- if (numNumbers || typeof parsed[i] === "number") {
- numNumbers++;
- } else {
- if (parsed[i].hue !== void 0) {
- numHSL++;
- } else {
- numRGB++;
- }
- }
- }
- return { parsed, numNumbers, numRGB, numHSL };
- }
- var mixComplex = (origin, target) => {
- const template = complex.createTransformer(target);
- const originStats = analyse2(origin);
- const targetStats = analyse2(target);
- const canInterpolate = originStats.numHSL === targetStats.numHSL && originStats.numRGB === targetStats.numRGB && originStats.numNumbers >= targetStats.numNumbers;
- if (canInterpolate) {
- return pipe(mixArray(originStats.parsed, targetStats.parsed), template);
- } else {
- warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);
- return (p) => `${p > 0 ? target : origin}`;
- }
- };
- // node_modules/popmotion/dist/es/utils/interpolate.mjs
- var mixNumber = (from, to) => (p) => mix(from, to, p);
- function detectMixerFactory(v) {
- if (typeof v === "number") {
- return mixNumber;
- } else if (typeof v === "string") {
- if (color.test(v)) {
- return mixColor;
- } else {
- return mixComplex;
- }
- } else if (Array.isArray(v)) {
- return mixArray;
- } else if (typeof v === "object") {
- return mixObject;
- }
- }
- function createMixers(output, ease, customMixer) {
- const mixers = [];
- const mixerFactory = customMixer || detectMixerFactory(output[0]);
- const numMixers = output.length - 1;
- for (let i = 0; i < numMixers; i++) {
- let mixer = mixerFactory(output[i], output[i + 1]);
- if (ease) {
- const easingFunction = Array.isArray(ease) ? ease[i] : ease;
- mixer = pipe(easingFunction, mixer);
- }
- mixers.push(mixer);
- }
- return mixers;
- }
- function fastInterpolate([from, to], [mixer]) {
- return (v) => mixer(progress(from, to, v));
- }
- function slowInterpolate(input, mixers) {
- const inputLength = input.length;
- const lastInputIndex = inputLength - 1;
- return (v) => {
- let mixerIndex = 0;
- let foundMixerIndex = false;
- if (v <= input[0]) {
- foundMixerIndex = true;
- } else if (v >= input[lastInputIndex]) {
- mixerIndex = lastInputIndex - 1;
- foundMixerIndex = true;
- }
- if (!foundMixerIndex) {
- let i = 1;
- for (; i < inputLength; i++) {
- if (input[i] > v || i === lastInputIndex) {
- break;
- }
- }
- mixerIndex = i - 1;
- }
- const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);
- return mixers[mixerIndex](progressInRange);
- };
- }
- function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
- const inputLength = input.length;
- invariant(inputLength === output.length, "Both input and output ranges must be the same length");
- invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, "Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.");
- if (input[0] > input[inputLength - 1]) {
- input = [].concat(input);
- output = [].concat(output);
- input.reverse();
- output.reverse();
- }
- const mixers = createMixers(output, ease, mixer);
- const interpolator = inputLength === 2 ? fastInterpolate(input, mixers) : slowInterpolate(input, mixers);
- return isClamp ? (v) => interpolator(clamp2(input[0], input[inputLength - 1], v)) : interpolator;
- }
- // node_modules/popmotion/dist/es/easing/utils.mjs
- var reverseEasing = (easing) => (p) => 1 - easing(1 - p);
- var mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
- var createExpoIn = (power) => (p) => Math.pow(p, power);
- var createBackIn = (power) => (p) => p * p * ((power + 1) * p - power);
- var createAnticipate = (power) => {
- const backEasing = createBackIn(power);
- return (p) => (p *= 2) < 1 ? 0.5 * backEasing(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
- };
- // node_modules/popmotion/dist/es/easing/index.mjs
- var DEFAULT_OVERSHOOT_STRENGTH = 1.525;
- var BOUNCE_FIRST_THRESHOLD = 4 / 11;
- var BOUNCE_SECOND_THRESHOLD = 8 / 11;
- var BOUNCE_THIRD_THRESHOLD = 9 / 10;
- var linear = (p) => p;
- var easeIn = createExpoIn(2);
- var easeOut = reverseEasing(easeIn);
- var easeInOut = mirrorEasing(easeIn);
- var circIn = (p) => 1 - Math.sin(Math.acos(p));
- var circOut = reverseEasing(circIn);
- var circInOut = mirrorEasing(circOut);
- var backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);
- var backOut = reverseEasing(backIn);
- var backInOut = mirrorEasing(backIn);
- var anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);
- var ca = 4356 / 361;
- var cb = 35442 / 1805;
- var cc = 16061 / 1805;
- var bounceOut = (p) => {
- if (p === 1 || p === 0)
- return p;
- const p2 = p * p;
- return p < BOUNCE_FIRST_THRESHOLD ? 7.5625 * p2 : p < BOUNCE_SECOND_THRESHOLD ? 9.075 * p2 - 9.9 * p + 3.4 : p < BOUNCE_THIRD_THRESHOLD ? ca * p2 - cb * p + cc : 10.8 * p * p - 20.52 * p + 10.72;
- };
- var bounceIn = reverseEasing(bounceOut);
- var bounceInOut = (p) => p < 0.5 ? 0.5 * (1 - bounceOut(1 - p * 2)) : 0.5 * bounceOut(p * 2 - 1) + 0.5;
- // node_modules/popmotion/dist/es/animations/generators/keyframes.mjs
- function defaultEasing(values, easing) {
- return values.map(() => easing || easeInOut).splice(0, values.length - 1);
- }
- function defaultOffset(values) {
- const numValues = values.length;
- return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);
- }
- function convertOffsetToTimes(offset, duration) {
- return offset.map((o) => o * duration);
- }
- function keyframes({ from = 0, to = 1, ease, offset, duration = 300 }) {
- const state = { done: false, value: from };
- const values = Array.isArray(to) ? to : [from, to];
- const times = convertOffsetToTimes(offset && offset.length === values.length ? offset : defaultOffset(values), duration);
- function createInterpolator() {
- return interpolate(times, values, {
- ease: Array.isArray(ease) ? ease : defaultEasing(values, ease)
- });
- }
- let interpolator = createInterpolator();
- return {
- next: (t) => {
- state.value = interpolator(t);
- state.done = t >= duration;
- return state;
- },
- flipTarget: () => {
- values.reverse();
- interpolator = createInterpolator();
- }
- };
- }
- // node_modules/popmotion/dist/es/animations/generators/decay.mjs
- function decay({ velocity = 0, from = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget }) {
- const state = { done: false, value: from };
- let amplitude = power * velocity;
- const ideal = from + amplitude;
- const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);
- if (target !== ideal)
- amplitude = target - from;
- return {
- next: (t) => {
- const delta = -amplitude * Math.exp(-t / timeConstant);
- state.done = !(delta > restDelta || delta < -restDelta);
- state.value = state.done ? target : target + delta;
- return state;
- },
- flipTarget: () => {
- }
- };
- }
- // node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs
- var types = { keyframes, spring, decay };
- function detectAnimationFromOptions(config) {
- if (Array.isArray(config.to)) {
- return keyframes;
- } else if (types[config.type]) {
- return types[config.type];
- }
- const keys2 = new Set(Object.keys(config));
- if (keys2.has("ease") || keys2.has("duration") && !keys2.has("dampingRatio")) {
- return keyframes;
- } else if (keys2.has("dampingRatio") || keys2.has("stiffness") || keys2.has("mass") || keys2.has("damping") || keys2.has("restSpeed") || keys2.has("restDelta")) {
- return spring;
- }
- return keyframes;
- }
- // node_modules/popmotion/dist/es/animations/utils/elapsed.mjs
- function loopElapsed(elapsed, duration, delay = 0) {
- return elapsed - duration - delay;
- }
- function reverseElapsed(elapsed, duration, delay = 0, isForwardPlayback = true) {
- return isForwardPlayback ? loopElapsed(duration + -elapsed, duration, delay) : duration - (elapsed - duration) + delay;
- }
- function hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {
- return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;
- }
- // node_modules/popmotion/dist/es/animations/index.mjs
- var framesync = (update) => {
- const passTimestamp = ({ delta }) => update(delta);
- return {
- start: () => es_default.update(passTimestamp, true),
- stop: () => cancelSync.update(passTimestamp)
- };
- };
- function animate(_a) {
- var _b, _c;
- var { from, autoplay = true, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = "loop", repeatDelay = 0, onPlay, onStop, onComplete, onRepeat, onUpdate } = _a, options = __rest(_a, ["from", "autoplay", "driver", "elapsed", "repeat", "repeatType", "repeatDelay", "onPlay", "onStop", "onComplete", "onRepeat", "onUpdate"]);
- let { to } = options;
- let driverControls;
- let repeatCount = 0;
- let computedDuration = options.duration;
- let latest;
- let isComplete = false;
- let isForwardPlayback = true;
- let interpolateFromNumber;
- const animator = detectAnimationFromOptions(options);
- if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {
- interpolateFromNumber = interpolate([0, 100], [from, to], {
- clamp: false
- });
- from = 0;
- to = 100;
- }
- const animation = animator(Object.assign(Object.assign({}, options), { from, to }));
- function repeat() {
- repeatCount++;
- if (repeatType === "reverse") {
- isForwardPlayback = repeatCount % 2 === 0;
- elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);
- } else {
- elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);
- if (repeatType === "mirror")
- animation.flipTarget();
- }
- isComplete = false;
- onRepeat && onRepeat();
- }
- function complete() {
- driverControls.stop();
- onComplete && onComplete();
- }
- function update(delta) {
- if (!isForwardPlayback)
- delta = -delta;
- elapsed += delta;
- if (!isComplete) {
- const state = animation.next(Math.max(0, elapsed));
- latest = state.value;
- if (interpolateFromNumber)
- latest = interpolateFromNumber(latest);
- isComplete = isForwardPlayback ? state.done : elapsed <= 0;
- }
- onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);
- if (isComplete) {
- if (repeatCount === 0)
- computedDuration !== null && computedDuration !== void 0 ? computedDuration : computedDuration = elapsed;
- if (repeatCount < repeatMax) {
- hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();
- } else {
- complete();
- }
- }
- }
- function play() {
- onPlay === null || onPlay === void 0 ? void 0 : onPlay();
- driverControls = driver(update);
- driverControls.start();
- }
- autoplay && play();
- return {
- stop: () => {
- onStop === null || onStop === void 0 ? void 0 : onStop();
- driverControls.stop();
- }
- };
- }
- // node_modules/popmotion/dist/es/utils/velocity-per-second.mjs
- function velocityPerSecond(velocity, frameDuration) {
- return frameDuration ? velocity * (1e3 / frameDuration) : 0;
- }
- // node_modules/popmotion/dist/es/animations/inertia.mjs
- function inertia({ from = 0, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop }) {
- let currentAnimation;
- function isOutOfBounds(v) {
- return min !== void 0 && v < min || max !== void 0 && v > max;
- }
- function boundaryNearest(v) {
- if (min === void 0)
- return max;
- if (max === void 0)
- return min;
- return Math.abs(min - v) < Math.abs(max - v) ? min : max;
- }
- function startAnimation(options) {
- currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();
- currentAnimation = animate(Object.assign(Object.assign({}, options), {
- driver,
- onUpdate: (v) => {
- var _a;
- onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);
- (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);
- },
- onComplete,
- onStop
- }));
- }
- function startSpring(options) {
- startAnimation(Object.assign({ type: "spring", stiffness: bounceStiffness, damping: bounceDamping, restDelta }, options));
- }
- if (isOutOfBounds(from)) {
- startSpring({ from, velocity, to: boundaryNearest(from) });
- } else {
- let target = power * velocity + from;
- if (typeof modifyTarget !== "undefined")
- target = modifyTarget(target);
- const boundary = boundaryNearest(target);
- const heading = boundary === min ? -1 : 1;
- let prev;
- let current;
- const checkBoundary = (v) => {
- prev = current;
- current = v;
- velocity = velocityPerSecond(v - prev, getFrameData().delta);
- if (heading === 1 && v > boundary || heading === -1 && v < boundary) {
- startSpring({ from: v, to: boundary, velocity });
- }
- };
- startAnimation({
- type: "decay",
- from,
- velocity,
- timeConstant,
- power,
- restDelta,
- modifyTarget,
- onUpdate: isOutOfBounds(target) ? checkBoundary : void 0
- });
- }
- return {
- stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop()
- };
- }
- // node_modules/popmotion/dist/es/utils/attract.mjs
- var identity2 = (v) => v;
- var createAttractor = (alterDisplacement = identity2) => (constant, origin, v) => {
- const displacement = origin - v;
- const springModifiedDisplacement = -(0 - constant + 1) * (0 - alterDisplacement(Math.abs(displacement)));
- return displacement <= 0 ? origin + springModifiedDisplacement : origin - springModifiedDisplacement;
- };
- var attract = createAttractor();
- var attractExpo = createAttractor(Math.sqrt);
- // node_modules/popmotion/dist/es/easing/cubic-bezier.mjs
- var a = (a1, a2) => 1 - 3 * a2 + 3 * a1;
- var b = (a1, a2) => 3 * a2 - 6 * a1;
- var c = (a1) => 3 * a1;
- var calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;
- var getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);
- var subdivisionPrecision = 1e-7;
- var subdivisionMaxIterations = 10;
- function binarySubdivide(aX, aA, aB, mX1, mX2) {
- let currentX;
- let currentT;
- let i = 0;
- do {
- currentT = aA + (aB - aA) / 2;
- currentX = calcBezier(currentT, mX1, mX2) - aX;
- if (currentX > 0) {
- aB = currentT;
- } else {
- aA = currentT;
- }
- } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);
- return currentT;
- }
- var newtonIterations = 8;
- var newtonMinSlope = 1e-3;
- function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
- for (let i = 0; i < newtonIterations; ++i) {
- const currentSlope = getSlope(aGuessT, mX1, mX2);
- if (currentSlope === 0) {
- return aGuessT;
- }
- const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
- aGuessT -= currentX / currentSlope;
- }
- return aGuessT;
- }
- var kSplineTableSize = 11;
- var kSampleStepSize = 1 / (kSplineTableSize - 1);
- function cubicBezier(mX1, mY1, mX2, mY2) {
- if (mX1 === mY1 && mX2 === mY2)
- return linear;
- const sampleValues = new Float32Array(kSplineTableSize);
- for (let i = 0; i < kSplineTableSize; ++i) {
- sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
- }
- function getTForX(aX) {
- let intervalStart = 0;
- let currentSample = 1;
- const lastSample = kSplineTableSize - 1;
- for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
- intervalStart += kSampleStepSize;
- }
- --currentSample;
- const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
- const guessForT = intervalStart + dist * kSampleStepSize;
- const initialSlope = getSlope(guessForT, mX1, mX2);
- if (initialSlope >= newtonMinSlope) {
- return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
- } else if (initialSlope === 0) {
- return guessForT;
- } else {
- return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
- }
- }
- return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);
- }
- // node_modules/@vueuse/motion/dist/index.mjs
- var motionState = {};
- var __defProp$1 = Object.defineProperty;
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __publicField$1 = (obj, key, value) => {
- __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
- return value;
- };
- var SubscriptionManager = class {
- constructor() {
- __publicField$1(this, "subscriptions", /* @__PURE__ */ new Set());
- }
- add(handler) {
- this.subscriptions.add(handler);
- return () => this.subscriptions.delete(handler);
- }
- notify(a2, b2, c2) {
- if (!this.subscriptions.size)
- return;
- for (const handler of this.subscriptions)
- handler(a2, b2, c2);
- }
- clear() {
- this.subscriptions.clear();
- }
- };
- var __defProp = Object.defineProperty;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __publicField = (obj, key, value) => {
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
- return value;
- };
- function isFloat(value) {
- return !isNaN(parseFloat(value));
- }
- var MotionValue = class {
- /**
- * @param init - The initiating value
- * @param config - Optional configuration options
- */
- constructor(init) {
- __publicField(this, "current");
- __publicField(this, "prev");
- __publicField(this, "timeDelta", 0);
- __publicField(this, "lastUpdated", 0);
- __publicField(this, "updateSubscribers", new SubscriptionManager());
- __publicField(this, "stopAnimation");
- __publicField(this, "canTrackVelocity", false);
- __publicField(this, "updateAndNotify", (v) => {
- this.prev = this.current;
- this.current = v;
- const { delta, timestamp: timestamp2 } = getFrameData();
- if (this.lastUpdated !== timestamp2) {
- this.timeDelta = delta;
- this.lastUpdated = timestamp2;
- }
- es_default.postRender(this.scheduleVelocityCheck);
- this.updateSubscribers.notify(this.current);
- });
- __publicField(this, "scheduleVelocityCheck", () => es_default.postRender(this.velocityCheck));
- __publicField(this, "velocityCheck", ({ timestamp: timestamp2 }) => {
- if (!this.canTrackVelocity)
- this.canTrackVelocity = isFloat(this.current);
- if (timestamp2 !== this.lastUpdated)
- this.prev = this.current;
- });
- this.prev = this.current = init;
- this.canTrackVelocity = isFloat(this.current);
- }
- /**
- * Adds a function that will be notified when the `MotionValue` is updated.
- *
- * It returns a function that, when called, will cancel the subscription.
- */
- onChange(subscription) {
- return this.updateSubscribers.add(subscription);
- }
- clearListeners() {
- this.updateSubscribers.clear();
- }
- /**
- * Sets the state of the `MotionValue`.
- *
- * @param v
- * @param render
- */
- set(v) {
- this.updateAndNotify(v);
- }
- /**
- * Returns the latest state of `MotionValue`
- *
- * @returns - The latest state of `MotionValue`
- */
- get() {
- return this.current;
- }
- /**
- * Get previous value.
- *
- * @returns - The previous latest state of `MotionValue`
- */
- getPrevious() {
- return this.prev;
- }
- /**
- * Returns the latest velocity of `MotionValue`
- *
- * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.
- */
- getVelocity() {
- return this.canTrackVelocity ? velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 0;
- }
- /**
- * Registers a new animation to control this `MotionValue`. Only one
- * animation can drive a `MotionValue` at one time.
- */
- start(animation) {
- this.stop();
- return new Promise((resolve) => {
- const { stop } = animation(resolve);
- this.stopAnimation = stop;
- }).then(() => this.clearAnimation());
- }
- /**
- * Stop the currently active animation.
- */
- stop() {
- if (this.stopAnimation)
- this.stopAnimation();
- this.clearAnimation();
- }
- /**
- * Returns `true` if this value is currently animating.
- */
- isAnimating() {
- return !!this.stopAnimation;
- }
- /**
- * Clear the current animation reference.
- */
- clearAnimation() {
- this.stopAnimation = null;
- }
- /**
- * Destroy and clean up subscribers to this `MotionValue`.
- */
- destroy() {
- this.updateSubscribers.clear();
- this.stop();
- }
- };
- function getMotionValue(init) {
- return new MotionValue(init);
- }
- var { isArray } = Array;
- function useMotionValues() {
- const motionValues = ref({});
- const stop = (keys2) => {
- const destroyKey = (key) => {
- if (!motionValues.value[key])
- return;
- motionValues.value[key].stop();
- motionValues.value[key].destroy();
- delete motionValues.value[key];
- };
- if (keys2) {
- if (isArray(keys2)) {
- keys2.forEach(destroyKey);
- } else {
- destroyKey(keys2);
- }
- } else {
- Object.keys(motionValues.value).forEach(destroyKey);
- }
- };
- const get = (key, from, target) => {
- if (motionValues.value[key])
- return motionValues.value[key];
- const motionValue = getMotionValue(from);
- motionValue.onChange((v) => target[key] = v);
- motionValues.value[key] = motionValue;
- return motionValue;
- };
- tryOnUnmounted(stop);
- return {
- motionValues,
- get,
- stop
- };
- }
- function isKeyframesTarget(v) {
- return Array.isArray(v);
- }
- function underDampedSpring() {
- return {
- type: "spring",
- stiffness: 500,
- damping: 25,
- restDelta: 0.5,
- restSpeed: 10
- };
- }
- function criticallyDampedSpring(to) {
- return {
- type: "spring",
- stiffness: 550,
- damping: to === 0 ? 2 * Math.sqrt(550) : 30,
- restDelta: 0.01,
- restSpeed: 10
- };
- }
- function overDampedSpring(to) {
- return {
- type: "spring",
- stiffness: 550,
- damping: to === 0 ? 100 : 30,
- restDelta: 0.01,
- restSpeed: 10
- };
- }
- function linearTween() {
- return {
- type: "keyframes",
- ease: "linear",
- duration: 300
- };
- }
- function keyframes2(values) {
- return {
- type: "keyframes",
- duration: 800,
- values
- };
- }
- var defaultTransitions = {
- default: overDampedSpring,
- x: underDampedSpring,
- y: underDampedSpring,
- z: underDampedSpring,
- rotate: underDampedSpring,
- rotateX: underDampedSpring,
- rotateY: underDampedSpring,
- rotateZ: underDampedSpring,
- scaleX: criticallyDampedSpring,
- scaleY: criticallyDampedSpring,
- scale: criticallyDampedSpring,
- backgroundColor: linearTween,
- color: linearTween,
- opacity: linearTween
- };
- function getDefaultTransition(valueKey, to) {
- let transitionFactory;
- if (isKeyframesTarget(to)) {
- transitionFactory = keyframes2;
- } else {
- transitionFactory = defaultTransitions[valueKey] || defaultTransitions.default;
- }
- return { to, ...transitionFactory(to) };
- }
- var int = {
- ...number,
- transform: Math.round
- };
- var valueTypes = {
- // Color props
- color,
- backgroundColor: color,
- outlineColor: color,
- fill: color,
- stroke: color,
- // Border props
- borderColor: color,
- borderTopColor: color,
- borderRightColor: color,
- borderBottomColor: color,
- borderLeftColor: color,
- borderWidth: px,
- borderTopWidth: px,
- borderRightWidth: px,
- borderBottomWidth: px,
- borderLeftWidth: px,
- borderRadius: px,
- radius: px,
- borderTopLeftRadius: px,
- borderTopRightRadius: px,
- borderBottomRightRadius: px,
- borderBottomLeftRadius: px,
- // Positioning props
- width: px,
- maxWidth: px,
- height: px,
- maxHeight: px,
- size: px,
- top: px,
- right: px,
- bottom: px,
- left: px,
- // Spacing props
- padding: px,
- paddingTop: px,
- paddingRight: px,
- paddingBottom: px,
- paddingLeft: px,
- margin: px,
- marginTop: px,
- marginRight: px,
- marginBottom: px,
- marginLeft: px,
- // Transform props
- rotate: degrees,
- rotateX: degrees,
- rotateY: degrees,
- rotateZ: degrees,
- scale,
- scaleX: scale,
- scaleY: scale,
- scaleZ: scale,
- skew: degrees,
- skewX: degrees,
- skewY: degrees,
- distance: px,
- translateX: px,
- translateY: px,
- translateZ: px,
- x: px,
- y: px,
- z: px,
- perspective: px,
- transformPerspective: px,
- opacity: alpha,
- originX: progressPercentage,
- originY: progressPercentage,
- originZ: px,
- // Misc
- zIndex: int,
- filter,
- WebkitFilter: filter,
- // SVG
- fillOpacity: alpha,
- strokeOpacity: alpha,
- numOctaves: int
- };
- var getValueType = (key) => valueTypes[key];
- function getValueAsType(value, type) {
- return type && typeof value === "number" && type.transform ? type.transform(value) : value;
- }
- function getAnimatableNone2(key, value) {
- let defaultValueType = getValueType(key);
- if (defaultValueType !== filter)
- defaultValueType = complex;
- return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;
- }
- var easingLookup = {
- linear,
- easeIn,
- easeInOut,
- easeOut,
- circIn,
- circInOut,
- circOut,
- backIn,
- backInOut,
- backOut,
- anticipate,
- bounceIn,
- bounceInOut,
- bounceOut
- };
- function easingDefinitionToFunction(definition) {
- if (Array.isArray(definition)) {
- const [x1, y1, x2, y2] = definition;
- return cubicBezier(x1, y1, x2, y2);
- } else if (typeof definition === "string") {
- return easingLookup[definition];
- }
- return definition;
- }
- function isEasingArray(ease) {
- return Array.isArray(ease) && typeof ease[0] !== "number";
- }
- function isAnimatable(key, value) {
- if (key === "zIndex")
- return false;
- if (typeof value === "number" || Array.isArray(value))
- return true;
- if (typeof value === "string" && // It's animatable if we have a string
- complex.test(value) && // And it contains numbers and/or colors
- !value.startsWith("url("))
- return true;
- return false;
- }
- function hydrateKeyframes(options) {
- if (Array.isArray(options.to) && options.to[0] === null) {
- options.to = [...options.to];
- options.to[0] = options.from;
- }
- return options;
- }
- function convertTransitionToAnimationOptions({ ease, times, delay, ...transition }) {
- const options = { ...transition };
- if (times)
- options.offset = times;
- if (ease) {
- options.ease = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);
- }
- if (delay)
- options.elapsed = -delay;
- return options;
- }
- function getPopmotionAnimationOptions(transition, options, key) {
- if (Array.isArray(options.to)) {
- if (!transition.duration)
- transition.duration = 800;
- }
- hydrateKeyframes(options);
- if (!isTransitionDefined(transition)) {
- transition = {
- ...transition,
- ...getDefaultTransition(key, options.to)
- };
- }
- return {
- ...options,
- ...convertTransitionToAnimationOptions(transition)
- };
- }
- function isTransitionDefined({ delay, repeat, repeatType, repeatDelay, from, ...transition }) {
- return !!Object.keys(transition).length;
- }
- function getValueTransition(transition, key) {
- return transition[key] || transition.default || transition;
- }
- function getAnimation(key, value, target, transition, onComplete) {
- const valueTransition = getValueTransition(transition, key);
- let origin = valueTransition.from === null || valueTransition.from === void 0 ? value.get() : valueTransition.from;
- const isTargetAnimatable = isAnimatable(key, target);
- if (origin === "none" && isTargetAnimatable && typeof target === "string")
- origin = getAnimatableNone2(key, target);
- const isOriginAnimatable = isAnimatable(key, origin);
- function start(complete) {
- const options = {
- from: origin,
- to: target,
- velocity: transition.velocity ? transition.velocity : value.getVelocity(),
- onUpdate: (v) => value.set(v)
- };
- return valueTransition.type === "inertia" || valueTransition.type === "decay" ? inertia({ ...options, ...valueTransition }) : animate({
- ...getPopmotionAnimationOptions(valueTransition, options, key),
- onUpdate: (v) => {
- options.onUpdate(v);
- if (valueTransition.onUpdate)
- valueTransition.onUpdate(v);
- },
- onComplete: () => {
- if (transition.onComplete)
- transition.onComplete();
- if (onComplete)
- onComplete();
- if (complete)
- complete();
- }
- });
- }
- function set2(complete) {
- value.set(target);
- if (transition.onComplete)
- transition.onComplete();
- if (onComplete)
- onComplete();
- if (complete)
- complete();
- return { stop: () => {
- } };
- }
- return !isOriginAnimatable || !isTargetAnimatable || valueTransition.type === false ? set2 : start;
- }
- function useMotionTransitions() {
- const { motionValues, stop, get } = useMotionValues();
- const push = (key, value, target, transition = {}, onComplete) => {
- const from = target[key];
- const motionValue = get(key, from, target);
- if (transition && transition.immediate) {
- motionValue.set(value);
- return;
- }
- const animation = getAnimation(key, motionValue, value, transition, onComplete);
- motionValue.start(animation);
- };
- return { motionValues, stop, push };
- }
- function useMotionControls(motionProperties, variants = {}, { motionValues, push, stop } = useMotionTransitions()) {
- const _variants = unref(variants);
- const isAnimating = ref(false);
- watch(
- motionValues,
- (newVal) => {
- isAnimating.value = Object.values(newVal).filter((value) => value.isAnimating()).length > 0;
- },
- {
- immediate: true,
- deep: true
- }
- );
- const getVariantFromKey = (variant) => {
- if (!_variants || !_variants[variant])
- throw new Error(`The variant ${variant} does not exist.`);
- return _variants[variant];
- };
- const apply = (variant) => {
- if (typeof variant === "string")
- variant = getVariantFromKey(variant);
- return Promise.all(
- Object.entries(variant).map(([key, value]) => {
- if (key === "transition")
- return void 0;
- return new Promise(
- (resolve) => (
- // @ts-expect-error - Fix errors later for typescript 5
- push(key, value, motionProperties, variant.transition || getDefaultTransition(key, variant[key]), resolve)
- )
- );
- }).filter(Boolean)
- );
- };
- const set2 = (variant) => {
- const variantData = isObject(variant) ? variant : getVariantFromKey(variant);
- Object.entries(variantData).forEach(([key, value]) => {
- if (key === "transition")
- return;
- push(key, value, motionProperties, {
- immediate: true
- });
- });
- };
- const leave = async (done) => {
- let leaveVariant;
- if (_variants) {
- if (_variants.leave)
- leaveVariant = _variants.leave;
- if (!_variants.leave && _variants.initial)
- leaveVariant = _variants.initial;
- }
- if (!leaveVariant) {
- done();
- return;
- }
- await apply(leaveVariant);
- done();
- };
- return {
- isAnimating,
- apply,
- set: set2,
- leave,
- stop
- };
- }
- var isBrowser = typeof window !== "undefined";
- var supportsPointerEvents = () => isBrowser && window.onpointerdown === null;
- var supportsTouchEvents = () => isBrowser && window.ontouchstart === null;
- var supportsMouseEvents = () => isBrowser && window.onmousedown === null;
- function registerEventListeners({ target, state, variants, apply }) {
- const _variants = unref(variants);
- const hovered = ref(false);
- const tapped = ref(false);
- const focused = ref(false);
- const mutableKeys = computed(() => {
- let result = [];
- if (!_variants)
- return result;
- if (_variants.hovered)
- result = [...result, ...Object.keys(_variants.hovered)];
- if (_variants.tapped)
- result = [...result, ...Object.keys(_variants.tapped)];
- if (_variants.focused)
- result = [...result, ...Object.keys(_variants.focused)];
- return result;
- });
- const computedProperties = computed(() => {
- const result = {};
- Object.assign(result, state.value);
- if (hovered.value && _variants.hovered)
- Object.assign(result, _variants.hovered);
- if (tapped.value && _variants.tapped)
- Object.assign(result, _variants.tapped);
- if (focused.value && _variants.focused)
- Object.assign(result, _variants.focused);
- for (const key in result) {
- if (!mutableKeys.value.includes(key))
- delete result[key];
- }
- return result;
- });
- if (_variants.hovered) {
- useEventListener(target, "mouseenter", () => hovered.value = true);
- useEventListener(target, "mouseleave", () => {
- hovered.value = false;
- tapped.value = false;
- });
- useEventListener(target, "mouseout", () => {
- hovered.value = false;
- tapped.value = false;
- });
- }
- if (_variants.tapped) {
- if (supportsMouseEvents()) {
- useEventListener(target, "mousedown", () => tapped.value = true);
- useEventListener(target, "mouseup", () => tapped.value = false);
- }
- if (supportsPointerEvents()) {
- useEventListener(target, "pointerdown", () => tapped.value = true);
- useEventListener(target, "pointerup", () => tapped.value = false);
- }
- if (supportsTouchEvents()) {
- useEventListener(target, "touchstart", () => tapped.value = true);
- useEventListener(target, "touchend", () => tapped.value = false);
- }
- }
- if (_variants.focused) {
- useEventListener(target, "focus", () => focused.value = true);
- useEventListener(target, "blur", () => focused.value = false);
- }
- watch(computedProperties, apply);
- }
- function registerLifeCycleHooks({ set: set2, target, variants, variant }) {
- const _variants = unref(variants);
- watch(
- () => target,
- () => {
- if (!_variants)
- return;
- if (_variants.initial)
- set2("initial");
- if (_variants.enter)
- variant.value = "enter";
- },
- {
- immediate: true,
- flush: "pre"
- }
- );
- }
- function registerVariantsSync({ state, apply }) {
- watch(
- state,
- (newVal) => {
- if (newVal)
- apply(newVal);
- },
- {
- immediate: true
- }
- );
- }
- function registerVisibilityHooks({ target, variants, variant }) {
- const _variants = unref(variants);
- if (_variants && (_variants.visible || _variants.visibleOnce)) {
- useIntersectionObserver(target, ([{ isIntersecting }]) => {
- if (_variants.visible) {
- if (isIntersecting)
- variant.value = "visible";
- else
- variant.value = "initial";
- } else if (_variants.visibleOnce) {
- if (isIntersecting && variant.value !== "visibleOnce")
- variant.value = "visibleOnce";
- else if (!variant.value)
- variant.value = "initial";
- }
- });
- }
- }
- function useMotionFeatures(instance, options = {
- syncVariants: true,
- lifeCycleHooks: true,
- visibilityHooks: true,
- eventListeners: true
- }) {
- if (options.lifeCycleHooks)
- registerLifeCycleHooks(instance);
- if (options.syncVariants)
- registerVariantsSync(instance);
- if (options.visibilityHooks)
- registerVisibilityHooks(instance);
- if (options.eventListeners)
- registerEventListeners(instance);
- }
- function reactiveStyle(props = {}) {
- const state = reactive({
- ...props
- });
- const style = ref({});
- watch(
- state,
- () => {
- const result = {};
- for (const [key, value] of Object.entries(state)) {
- const valueType = getValueType(key);
- const valueAsType = getValueAsType(value, valueType);
- result[key] = valueAsType;
- }
- style.value = result;
- },
- {
- immediate: true,
- deep: true
- }
- );
- return {
- state,
- style
- };
- }
- function usePermissiveTarget(target, onTarget) {
- watch(
- () => unrefElement(target),
- (el) => {
- if (!el)
- return;
- onTarget(el);
- },
- {
- immediate: true
- }
- );
- }
- var translateAlias = {
- x: "translateX",
- y: "translateY",
- z: "translateZ"
- };
- function reactiveTransform(props = {}, enableHardwareAcceleration = true) {
- const state = reactive({ ...props });
- const transform = ref("");
- watch(
- state,
- (newVal) => {
- let result = "";
- let hasHardwareAcceleration = false;
- if (enableHardwareAcceleration && (newVal.x || newVal.y || newVal.z)) {
- const str = [newVal.x || 0, newVal.y || 0, newVal.z || 0].map(px.transform).join(",");
- result += `translate3d(${str}) `;
- hasHardwareAcceleration = true;
- }
- for (const [key, value] of Object.entries(newVal)) {
- if (enableHardwareAcceleration && (key === "x" || key === "y" || key === "z"))
- continue;
- const valueType = getValueType(key);
- const valueAsType = getValueAsType(value, valueType);
- result += `${translateAlias[key] || key}(${valueAsType}) `;
- }
- if (enableHardwareAcceleration && !hasHardwareAcceleration)
- result += "translateZ(0px) ";
- transform.value = result.trim();
- },
- {
- immediate: true,
- deep: true
- }
- );
- return {
- state,
- transform
- };
- }
- var transformAxes = ["", "X", "Y", "Z"];
- var order = ["perspective", "translate", "scale", "rotate", "skew"];
- var transformProps = ["transformPerspective", "x", "y", "z"];
- order.forEach((operationKey) => {
- transformAxes.forEach((axesKey) => {
- const key = operationKey + axesKey;
- transformProps.push(key);
- });
- });
- var transformPropSet = new Set(transformProps);
- function isTransformProp(key) {
- return transformPropSet.has(key);
- }
- var transformOriginProps = /* @__PURE__ */ new Set(["originX", "originY", "originZ"]);
- function isTransformOriginProp(key) {
- return transformOriginProps.has(key);
- }
- function splitValues(variant) {
- const transform = {};
- const style = {};
- Object.entries(variant).forEach(([key, value]) => {
- if (isTransformProp(key) || isTransformOriginProp(key))
- transform[key] = value;
- else
- style[key] = value;
- });
- return { transform, style };
- }
- function variantToStyle(variant) {
- const { transform: _transform, style: _style } = splitValues(variant);
- const { transform } = reactiveTransform(_transform);
- const { style } = reactiveStyle(_style);
- if (transform.value)
- style.value.transform = transform.value;
- return style.value;
- }
- function useElementStyle(target, onInit) {
- let _cache;
- let _target;
- const { state, style } = reactiveStyle();
- usePermissiveTarget(target, (el) => {
- _target = el;
- for (const key of Object.keys(valueTypes)) {
- if (el.style[key] === null || el.style[key] === "" || isTransformProp(key) || isTransformOriginProp(key))
- continue;
- state[key] = el.style[key];
- }
- if (_cache) {
- Object.entries(_cache).forEach(([key, value]) => el.style[key] = value);
- }
- if (onInit)
- onInit(state);
- });
- watch(
- style,
- (newVal) => {
- if (!_target) {
- _cache = newVal;
- return;
- }
- for (const key in newVal)
- _target.style[key] = newVal[key];
- },
- {
- immediate: true
- }
- );
- return {
- style: state
- };
- }
- function parseTransform(transform) {
- const transforms = transform.trim().split(/\) |\)/);
- if (transforms.length === 1)
- return {};
- const parseValues = (value) => {
- if (value.endsWith("px") || value.endsWith("deg"))
- return parseFloat(value);
- if (isNaN(Number(value)))
- return Number(value);
- return value;
- };
- return transforms.reduce((acc, transform2) => {
- if (!transform2)
- return acc;
- const [name, transformValue] = transform2.split("(");
- const valueArray = transformValue.split(",");
- const values = valueArray.map((val) => {
- return parseValues(val.endsWith(")") ? val.replace(")", "") : val.trim());
- });
- const value = values.length === 1 ? values[0] : values;
- return {
- ...acc,
- [name]: value
- };
- }, {});
- }
- function stateFromTransform(state, transform) {
- Object.entries(parseTransform(transform)).forEach(([key, value]) => {
- const axes = ["x", "y", "z"];
- if (key === "translate3d") {
- if (value === 0) {
- axes.forEach((axis) => state[axis] = 0);
- return;
- }
- value.forEach((axisValue, index) => state[axes[index]] = axisValue);
- return;
- }
- value = parseFloat(value);
- if (key === "translateX") {
- state.x = value;
- return;
- }
- if (key === "translateY") {
- state.y = value;
- return;
- }
- if (key === "translateZ") {
- state.z = value;
- return;
- }
- state[key] = value;
- });
- }
- function useElementTransform(target, onInit) {
- let _cache;
- let _target;
- const { state, transform } = reactiveTransform();
- usePermissiveTarget(target, (el) => {
- _target = el;
- if (el.style.transform)
- stateFromTransform(state, el.style.transform);
- if (_cache)
- el.style.transform = _cache;
- if (onInit)
- onInit(state);
- });
- watch(
- transform,
- (newValue) => {
- if (!_target) {
- _cache = newValue;
- return;
- }
- _target.style.transform = newValue;
- },
- {
- immediate: true
- }
- );
- return {
- transform: state
- };
- }
- function useMotionProperties(target, defaultValues) {
- const motionProperties = reactive({});
- const apply = (values) => Object.entries(values).forEach(([key, value]) => motionProperties[key] = value);
- const { style } = useElementStyle(target, apply);
- const { transform } = useElementTransform(target, apply);
- watch(
- motionProperties,
- (newVal) => {
- Object.entries(newVal).forEach(([key, value]) => {
- const target2 = isTransformProp(key) ? transform : style;
- if (target2[key] && target2[key] === value)
- return;
- target2[key] = value;
- });
- },
- {
- immediate: true,
- deep: true
- }
- );
- usePermissiveTarget(target, () => defaultValues && apply(defaultValues));
- return {
- motionProperties,
- style,
- transform
- };
- }
- function useMotionVariants(variants = {}) {
- const _variants = unref(variants);
- const variant = ref();
- const state = computed(() => {
- if (!variant.value)
- return;
- return _variants[variant.value];
- });
- return {
- state,
- variant
- };
- }
- function useMotion(target, variants = {}, options) {
- const { motionProperties } = useMotionProperties(target);
- const { variant, state } = useMotionVariants(variants);
- const controls = useMotionControls(motionProperties, variants);
- const instance = {
- target,
- variant,
- variants,
- state,
- motionProperties,
- ...controls
- };
- useMotionFeatures(instance, options);
- return instance;
- }
- var directivePropsKeys = ["initial", "enter", "leave", "visible", "visible-once", "visibleOnce", "hovered", "tapped", "focused", "delay"];
- function resolveVariants(node, variantsRef) {
- const target = node.props ? node.props : node.data && node.data.attrs ? node.data.attrs : {};
- if (target) {
- if (target.variants && isObject(target.variants)) {
- variantsRef.value = {
- ...variantsRef.value,
- ...target.variants
- };
- }
- directivePropsKeys.forEach((key) => {
- if (key === "delay") {
- if (target && target[key] && typeof target[key] === "number") {
- const delay = target[key];
- if (variantsRef && variantsRef.value) {
- if (variantsRef.value.enter) {
- if (!variantsRef.value.enter.transition)
- variantsRef.value.enter.transition = {};
- variantsRef.value.enter.transition = {
- delay,
- ...variantsRef.value.enter.transition
- };
- }
- if (variantsRef.value.visible) {
- if (!variantsRef.value.visible.transition)
- variantsRef.value.visible.transition = {};
- variantsRef.value.visible.transition = {
- delay,
- ...variantsRef.value.visible.transition
- };
- }
- if (variantsRef.value.visibleOnce) {
- if (!variantsRef.value.visibleOnce.transition)
- variantsRef.value.visibleOnce.transition = {};
- variantsRef.value.visibleOnce.transition = {
- delay,
- ...variantsRef.value.visibleOnce.transition
- };
- }
- }
- }
- return;
- }
- if (target && target[key] && isObject(target[key])) {
- const prop = target[key];
- if (key === "visible-once")
- key = "visibleOnce";
- variantsRef.value[key] = prop;
- }
- });
- }
- }
- function directive(variants) {
- const register = (el, binding, node) => {
- const key = binding.value && typeof binding.value === "string" ? binding.value : node.key;
- if (key && motionState[key])
- motionState[key].stop();
- const variantsRef = ref(variants || {});
- if (typeof binding.value === "object")
- variantsRef.value = binding.value;
- resolveVariants(node, variantsRef);
- const motionOptions = { eventListeners: true, lifeCycleHooks: true, syncVariants: true, visibilityHooks: false };
- const motionInstance = useMotion(el, variantsRef, motionOptions);
- el.motionInstance = motionInstance;
- if (key)
- motionState[key] = motionInstance;
- };
- const mounted = (el, binding, node) => {
- el.motionInstance && registerVisibilityHooks(el.motionInstance);
- };
- return {
- created: register,
- mounted,
- getSSRProps(binding, node) {
- let { initial: bindingInitial } = binding.value || node && (node == null ? void 0 : node.props) || {};
- bindingInitial = unref(bindingInitial);
- const initial = defu((variants == null ? void 0 : variants.initial) || {}, bindingInitial || {});
- if (!initial || Object.keys(initial).length === 0)
- return;
- const style = variantToStyle(initial);
- return {
- style
- };
- }
- };
- }
- var fade = {
- initial: {
- opacity: 0
- },
- enter: {
- opacity: 1
- }
- };
- var fadeVisible = {
- initial: {
- opacity: 0
- },
- visible: {
- opacity: 1
- }
- };
- var fadeVisibleOnce = {
- initial: {
- opacity: 0
- },
- visibleOnce: {
- opacity: 1
- }
- };
- var pop = {
- initial: {
- scale: 0,
- opacity: 0
- },
- enter: {
- scale: 1,
- opacity: 1
- }
- };
- var popVisible = {
- initial: {
- scale: 0,
- opacity: 0
- },
- visible: {
- scale: 1,
- opacity: 1
- }
- };
- var popVisibleOnce = {
- initial: {
- scale: 0,
- opacity: 0
- },
- visibleOnce: {
- scale: 1,
- opacity: 1
- }
- };
- var rollLeft = {
- initial: {
- x: -100,
- rotate: 90,
- opacity: 0
- },
- enter: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleLeft = {
- initial: {
- x: -100,
- rotate: 90,
- opacity: 0
- },
- visible: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleOnceLeft = {
- initial: {
- x: -100,
- rotate: 90,
- opacity: 0
- },
- visibleOnce: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollRight = {
- initial: {
- x: 100,
- rotate: -90,
- opacity: 0
- },
- enter: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleRight = {
- initial: {
- x: 100,
- rotate: -90,
- opacity: 0
- },
- visible: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleOnceRight = {
- initial: {
- x: 100,
- rotate: -90,
- opacity: 0
- },
- visibleOnce: {
- x: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollTop = {
- initial: {
- y: -100,
- rotate: -90,
- opacity: 0
- },
- enter: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleTop = {
- initial: {
- y: -100,
- rotate: -90,
- opacity: 0
- },
- visible: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleOnceTop = {
- initial: {
- y: -100,
- rotate: -90,
- opacity: 0
- },
- visibleOnce: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollBottom = {
- initial: {
- y: 100,
- rotate: 90,
- opacity: 0
- },
- enter: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleBottom = {
- initial: {
- y: 100,
- rotate: 90,
- opacity: 0
- },
- visible: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var rollVisibleOnceBottom = {
- initial: {
- y: 100,
- rotate: 90,
- opacity: 0
- },
- visibleOnce: {
- y: 0,
- rotate: 0,
- opacity: 1
- }
- };
- var slideLeft = {
- initial: {
- x: -100,
- opacity: 0
- },
- enter: {
- x: 0,
- opacity: 1
- }
- };
- var slideVisibleLeft = {
- initial: {
- x: -100,
- opacity: 0
- },
- visible: {
- x: 0,
- opacity: 1
- }
- };
- var slideVisibleOnceLeft = {
- initial: {
- x: -100,
- opacity: 0
- },
- visibleOnce: {
- x: 0,
- opacity: 1
- }
- };
- var slideRight = {
- initial: {
- x: 100,
- opacity: 0
- },
- enter: {
- x: 0,
- opacity: 1
- }
- };
- var slideVisibleRight = {
- initial: {
- x: 100,
- opacity: 0
- },
- visible: {
- x: 0,
- opacity: 1
- }
- };
- var slideVisibleOnceRight = {
- initial: {
- x: 100,
- opacity: 0
- },
- visibleOnce: {
- x: 0,
- opacity: 1
- }
- };
- var slideTop = {
- initial: {
- y: -100,
- opacity: 0
- },
- enter: {
- y: 0,
- opacity: 1
- }
- };
- var slideVisibleTop = {
- initial: {
- y: -100,
- opacity: 0
- },
- visible: {
- y: 0,
- opacity: 1
- }
- };
- var slideVisibleOnceTop = {
- initial: {
- y: -100,
- opacity: 0
- },
- visibleOnce: {
- y: 0,
- opacity: 1
- }
- };
- var slideBottom = {
- initial: {
- y: 100,
- opacity: 0
- },
- enter: {
- y: 0,
- opacity: 1
- }
- };
- var slideVisibleBottom = {
- initial: {
- y: 100,
- opacity: 0
- },
- visible: {
- y: 0,
- opacity: 1
- }
- };
- var slideVisibleOnceBottom = {
- initial: {
- y: 100,
- opacity: 0
- },
- visibleOnce: {
- y: 0,
- opacity: 1
- }
- };
- var presets = {
- __proto__: null,
- fade,
- fadeVisible,
- fadeVisibleOnce,
- pop,
- popVisible,
- popVisibleOnce,
- rollBottom,
- rollLeft,
- rollRight,
- rollTop,
- rollVisibleBottom,
- rollVisibleLeft,
- rollVisibleOnceBottom,
- rollVisibleOnceLeft,
- rollVisibleOnceRight,
- rollVisibleOnceTop,
- rollVisibleRight,
- rollVisibleTop,
- slideBottom,
- slideLeft,
- slideRight,
- slideTop,
- slideVisibleBottom,
- slideVisibleLeft,
- slideVisibleOnceBottom,
- slideVisibleOnceLeft,
- slideVisibleOnceRight,
- slideVisibleOnceTop,
- slideVisibleRight,
- slideVisibleTop
- };
- var component = defineComponent({
- props: {
- is: {
- type: [String, Object],
- required: false
- },
- // Preset to be loaded
- preset: {
- type: String,
- required: false
- },
- // Instance
- instance: {
- type: Object,
- required: false
- },
- // Variants
- variants: {
- type: Object,
- required: false
- },
- // Initial variant
- initial: {
- type: Object,
- required: false
- },
- // Lifecycle hooks variants
- enter: {
- type: Object,
- required: false
- },
- leave: {
- type: Object,
- required: false
- },
- // Intersection observer variants
- visible: {
- type: Object,
- required: false
- },
- visibleOnce: {
- type: Object,
- required: false
- },
- // Event listeners variants
- hovered: {
- type: Object,
- required: false
- },
- tapped: {
- type: Object,
- required: false
- },
- focused: {
- type: Object,
- required: false
- },
- // Helpers
- delay: {
- type: [Number, String],
- required: false
- }
- },
- setup(props) {
- const slots = useSlots();
- const instances = reactive({});
- if (!props.is && !slots.default)
- return () => h("div", {});
- const _preset = computed(() => {
- let preset;
- if (props.preset)
- preset = presets[props.preset];
- return preset;
- });
- const propsConfig = computed(() => ({
- initial: props.initial,
- enter: props.enter,
- leave: props.leave,
- visible: props.visible,
- visibleOnce: props.visibleOnce,
- hovered: props.hovered,
- tapped: props.tapped,
- focused: props.focused
- }));
- const motionConfig = computed(() => {
- const config = {
- ...propsConfig.value,
- ..._preset.value || {},
- ...props.variants || {}
- };
- if (props.delay) {
- config.enter.transition = { ...config.enter.transition };
- config.enter.transition.delay = parseInt(props.delay);
- }
- return config;
- });
- const component2 = computed(() => {
- if (!props.is)
- return;
- let comp = props.is;
- if (typeof component2.value === "string" && !isHTMLTag(comp)) {
- comp = resolveComponent(comp);
- }
- return comp;
- });
- if (true) {
- const replayAnimation = (instance) => {
- var _a;
- if ((_a = instance.variants) == null ? void 0 : _a.initial)
- instance.set("initial");
- setTimeout(() => {
- var _a2, _b, _c;
- if ((_a2 = instance.variants) == null ? void 0 : _a2.enter)
- instance.apply("enter");
- if ((_b = instance.variants) == null ? void 0 : _b.visible)
- instance.apply("visible");
- if ((_c = instance.variants) == null ? void 0 : _c.visibleOnce)
- instance.apply("visibleOnce");
- }, 10);
- };
- onUpdated(() => Object.entries(instances).forEach(([_, value]) => replayAnimation(value)));
- }
- return {
- slots,
- component: component2,
- motionConfig,
- instances
- };
- },
- render({ slots, motionConfig, instances, component: component2 }) {
- var _a;
- const style = variantToStyle(motionConfig.initial || {});
- const setNode = (node, index) => {
- if (!node.props)
- node.props = {};
- node.props.style = style;
- node.props.onVnodeMounted = ({ el }) => {
- const instance = useMotion(el, motionConfig);
- instances[index] = instance;
- };
- return node;
- };
- if (component2) {
- const node = h(component2, void 0, slots);
- setNode(node, 0);
- return node;
- }
- const nodes = ((_a = slots.default) == null ? void 0 : _a.call(slots)) || [];
- return nodes.map((node, index) => setNode(node, index));
- }
- });
- function slugify(string) {
- const a2 = "àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;";
- const b2 = "aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------";
- const p = new RegExp(a2.split("").join("|"), "g");
- return string.toString().replace(/[A-Z]/g, (s) => `-${s}`).toLowerCase().replace(/\s+/g, "-").replace(p, (c2) => b2.charAt(a2.indexOf(c2))).replace(/&/g, "-and-").replace(/[^\w\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
- }
- var MotionPlugin = {
- install(app, options) {
- app.directive("motion", directive());
- app.component("Motion", component);
- if (!options || options && !options.excludePresets) {
- for (const key in presets) {
- const preset = presets[key];
- app.directive(`motion-${slugify(key)}`, directive(preset));
- }
- }
- if (options && options.directives) {
- for (const key in options.directives) {
- const variants = options.directives[key];
- if (!variants.initial && __DEV__) {
- console.warn(`Your directive v-motion-${key} is missing initial variant!`);
- }
- app.directive(`motion-${key}`, directive(variants));
- }
- }
- }
- };
- function isMotionInstance(obj) {
- const _obj = obj;
- return _obj.apply !== void 0 && typeof _obj.apply === "function" && _obj.set !== void 0 && typeof _obj.set === "function" && _obj.target !== void 0 && isRef(_obj.target);
- }
- function useMotions() {
- return motionState;
- }
- function useSpring(values, spring2) {
- const { stop, get } = useMotionValues();
- return {
- values,
- stop,
- set: (properties) => Promise.all(
- Object.entries(properties).map(([key, value]) => {
- const motionValue = get(key, values[key], values);
- return motionValue.start((onComplete) => {
- const options = {
- type: "spring",
- ...spring2 || getDefaultTransition(key, value)
- };
- return animate({
- from: motionValue.get(),
- to: value,
- velocity: motionValue.getVelocity(),
- onUpdate: (v) => motionValue.set(v),
- onComplete,
- ...options
- });
- });
- })
- )
- };
- }
- function useReducedMotion(options = {}) {
- return useMediaQuery("(prefers-reduced-motion: reduce)", options);
- }
- export {
- directive as MotionDirective,
- MotionPlugin,
- fade,
- fadeVisible,
- fadeVisibleOnce,
- isMotionInstance,
- pop,
- popVisible,
- popVisibleOnce,
- reactiveStyle,
- reactiveTransform,
- rollBottom,
- rollLeft,
- rollRight,
- rollTop,
- rollVisibleBottom,
- rollVisibleLeft,
- rollVisibleOnceBottom,
- rollVisibleOnceLeft,
- rollVisibleOnceRight,
- rollVisibleOnceTop,
- rollVisibleRight,
- rollVisibleTop,
- slideBottom,
- slideLeft,
- slideRight,
- slideTop,
- slideVisibleBottom,
- slideVisibleLeft,
- slideVisibleOnceBottom,
- slideVisibleOnceLeft,
- slideVisibleOnceRight,
- slideVisibleOnceTop,
- slideVisibleRight,
- slideVisibleTop,
- slugify,
- useElementStyle,
- useElementTransform,
- useMotion,
- useMotionControls,
- useMotionProperties,
- useMotionTransitions,
- useMotionVariants,
- useMotions,
- useReducedMotion,
- useSpring
- };
- //# sourceMappingURL=@vueuse_motion.js.map
|