UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

1 lines 18.5 kB
{"version":3,"file":"animations.cjs","names":["MC","_interopRequireWildcard","require","MH","_cssAlter","_domOptimize","_math","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_awaitAsyncGenerator","_OverloadYield","_wrapAsyncGenerator","AsyncGenerator","apply","arguments","resume","value","u","Promise","resolve","v","then","k","done","settle","reject","next","key","arg","_invoke","return","prototype","Symbol","asyncIterator","throw","d","_asyncIterator","iterator","AsyncFromSyncIterator","TypeError","AsyncFromSyncIteratorContinuation","s","waitForAnimationFrame","newPromise","onAnimationFrame","exports","onEveryAnimationFrame","callback","elapsed","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","newAnimationFrameIterator","_step","shouldRepeat","err","_x","_newAnimationFrameIterator","startTime","previousTimeStamp","total","totalSeed","sinceLast","sinceLastSeed","step","timeStamp","totalElapsed","elapsedSinceLast","newCriticallyDampedAnimationIterator","_x2","_newCriticallyDampedAnimationIterator","settings","l","lTarget","lag","precision","dt","criticallyDamped","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_yield$result","result","iterateAnimations","element","webAnimationCallback","legacyCallback","realtime","getData","prefixName","waitForMeasureTime","animation","getAnimations","waitForMutateTime","resetCssAnimationsNow","addClassesNow","PREFIX_ANIMATE_DISABLE","S_CLIENT_WIDTH","removeClassesNow"],"sources":["../../../src/ts/utils/animations.ts"],"sourcesContent":["/**\n * @module Utils\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport {\n addClassesNow,\n removeClassesNow,\n getData,\n} from \"@lisn/utils/css-alter\";\nimport {\n waitForMeasureTime,\n waitForMutateTime,\n} from \"@lisn/utils/dom-optimize\";\nimport { criticallyDamped } from \"@lisn/utils/math\";\n\n/**\n * @since v1.2.0\n *\n * @category Animations\n */\nexport type ElapsedTimes = {\n total: number;\n sinceLast: number;\n};\n\n/**\n * The callback is as an argument the {@link ElapsedTimes | elapsed times}:\n * - The total elapsed time in milliseconds since the start\n * - The elapsed time in milliseconds since the previous frame\n *\n * The first time this callback is called both of these will be 0 unless seed\n * values were provided.\n *\n * The callback must return `true` if it wants to animate again on the next\n * frame and `false` if done.\n *\n * @since v1.2.0\n *\n * @category Animations\n */\nexport type AnimationCallback = (elapsed: ElapsedTimes) => boolean;\n\n/**\n * Returns a promise that resolves at the next animation frame. Async/await\n * version of\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame | requestAnimationFrame}.\n *\n * @returns The timestamp gotten from `requestAnimationFrame`\n *\n * @category Animations\n */\nexport const waitForAnimationFrame = async () =>\n MH.newPromise<number>((resolve) => {\n MH.onAnimationFrame(resolve);\n });\n\n/**\n * Calls the given callback on every animation frame.\n *\n * The returned Promise resolves when the callback is done (returns `false`).\n *\n * @param callback See {@link AnimationCallback}.\n * @param elapsed Seed values to use as the total elapsed and elapsed since\n * last. Otherwise it will use the timestamp of the first frame\n * as the start, which will result in those values being 0 the\n * first time.\n *\n * @since v1.2.0\n *\n * @category Animations\n */\nexport const onEveryAnimationFrame = async (\n callback: AnimationCallback,\n elapsed?: ElapsedTimes,\n) => {\n for await (elapsed of newAnimationFrameIterator(elapsed)) {\n const shouldRepeat = callback(elapsed);\n if (!shouldRepeat) {\n break;\n }\n }\n};\n\n/**\n * Generator version of {@link onEveryAnimationFrame}.\n *\n * Returns a new async iterator which yields the total elapsed time and elapsed\n * time since the last call on every animation frame.\n *\n * @example\n * ```javascript\n * for await (const elapsed of newAnimationFrameIterator()) {\n * // ... do something\n * if (done) break;\n * }\n * ```\n *\n * @since v1.2.0\n *\n * @category Animations\n */\nexport async function* newAnimationFrameIterator(\n elapsed?: ElapsedTimes,\n): AsyncGenerator<ElapsedTimes, never> {\n let startTime: number, previousTimeStamp: number;\n const { total: totalSeed = 0, sinceLast: sinceLastSeed = 0 } = elapsed ?? {};\n\n const step = async () => {\n const timeStamp = await waitForAnimationFrame();\n if (!startTime || !previousTimeStamp) {\n // First time\n startTime = timeStamp - totalSeed;\n previousTimeStamp = timeStamp - sinceLastSeed;\n }\n\n const totalElapsed = timeStamp - startTime;\n const elapsedSinceLast = timeStamp - previousTimeStamp;\n previousTimeStamp = timeStamp;\n\n return { total: totalElapsed, sinceLast: elapsedSinceLast };\n };\n\n while (true) {\n yield step();\n }\n}\n\n/**\n * Returns an animation iterator based on {@link criticallyDamped} that starts\n * at the given position `l`, with velocity `v = 0` and time `t = 0` and yields\n * the new position and velocity, and total time at every animation frame.\n *\n * @param [settings.lTarget] The initial target position. Can be updated when\n * calling next().\n * @param [settings.lag] See {@link criticallyDamped}.\n * @param [settings.l = 0] The initial starting position.\n * @param [settings.precision] See {@link criticallyDamped}.\n *\n * @returns An iterator whose `next` method accepts an optional new `lTarget`.\n * The iterator yields an object containing successive values for:\n * - position (`l`)\n * - velocity (`v`)\n * - total time elapsed (`t`)\n *\n * @example\n * If you never need to update the target you can use a for await loop:\n *\n * ```javascript\n * const iterator = newCriticallyDampedAnimationIterator({\n * l: 10,\n * lTarget: 100,\n * lag: 1500\n * });\n *\n * for await (const { l, v, t } of iterator) {\n * console.log({ l, v, t });\n * }\n * ```\n *\n * @example\n * If you do need to update the target, then call `next` explicitly:\n *\n * ```javascript\n * const iterator = newCriticallyDampedAnimationIterator({\n * l: 10,\n * lTarget: 100,\n * lag: 1500\n * });\n *\n * let { value: { l, v, t } } = await iterator.next();\n * ({ value: { l, v, t } } = await iterator.next()); // updated\n * ({ value: { l, v, t } } = await iterator.next(200)); // updated towards a new target\n * ```\n *\n * @since v1.2.0\n *\n * @category Animations\n */\nexport async function* newCriticallyDampedAnimationIterator(settings: {\n lTarget: number;\n lag: number;\n l?: number;\n precision?: number;\n}): AsyncGenerator<{ l: number; v: number; t: number }> {\n let { l, lTarget } = settings;\n const { lag, precision } = settings;\n let v = 0,\n t = 0,\n dt = 0;\n\n const next = async () => {\n ({ l, v } = criticallyDamped({\n lTarget,\n lag,\n l,\n dt,\n v,\n precision,\n }));\n return { l, v, t };\n };\n\n for await ({ total: t, sinceLast: dt } of newAnimationFrameIterator()) {\n if (dt === 0) {\n continue;\n }\n\n const result = next();\n lTarget = (yield result) ?? lTarget;\n if (l === lTarget) {\n return result;\n }\n }\n}\n\n/**\n * @param webAnimationCallback This function is called for each\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Animation | Animation}\n * on the element. It {@link waitForMeasureTime}\n * before reading the animations.\n * @param legacyCallback This function is called if the browser does not\n * support the Web Animations API. It is called\n * after {@link waitForMutateTime} so it can safely\n * modify styles.\n * @param realtime If true, then it does not\n * {@link waitForMeasureTime} or\n * {@link waitForMutateTime} and runs\n * synchronously.\n *\n * @category Animations\n */\nexport const iterateAnimations = async (\n element: Element,\n webAnimationCallback: (animation: Animation) => void,\n legacyCallback: (element: Element) => void,\n realtime = false,\n) => {\n /* istanbul ignore next */ // jsdom doesn't support Web Animations\n if (\n \"getAnimations\" in element &&\n getData(element, MH.prefixName(\"test-legacy\")) === null\n ) {\n if (!realtime) {\n await waitForMeasureTime();\n }\n\n for (const animation of element.getAnimations()) {\n webAnimationCallback(animation);\n }\n\n // Old browsers, no Animation API\n } else {\n if (!realtime) {\n await waitForMutateTime();\n }\n\n legacyCallback(element);\n }\n};\n\n/**\n * @ignore\n * @internal\n */\nexport const resetCssAnimationsNow = (element: Element) => {\n addClassesNow(element, MC.PREFIX_ANIMATE_DISABLE); // cause it to reset\n // If we remove the disable class immediately, then it will not have the\n // effect to reset the animation, since the browser won't see any change in\n // the classList at the start of the frame. So we ideally need to remove the\n // disable class after the next paint. However, depending on the animation,\n // and its state, disabling animation and waiting for the next animation\n // frame may cause a visible glitch, so we need to force layout now.\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions */\n element[MC.S_CLIENT_WIDTH]; // forces layout\n\n removeClassesNow(element, MC.PREFIX_ANIMATE_DISABLE);\n};\n"],"mappings":"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","ignoreList":[]}