27 |
28 | ## 🚀 Installation
29 |
30 | ### CDN
31 |
32 | Include the following `
36 | ```
37 |
38 | ### NPM
39 |
40 | ```shell
41 | npm install @marcreichel/alpine-auto-animate
42 | ```
43 |
44 | Add the `x-auto-animate` directive to your project by importing the package **before** starting Alpine.
45 |
46 | ```js
47 | import Alpine from 'alpinejs';
48 | import AutoAnimate from '@marcreichel/alpine-auto-animate';
49 |
50 | Alpine.plugin(AutoAnimate);
51 |
52 | Alpine.start();
53 | ```
54 |
55 | ## 🪄 Usage
56 |
57 | Add the `x-auto-animate` directive to any element where you want to apply animations (including their direct children).
58 |
59 | ```html
60 |
61 |
Lorem
62 |
Ipsum
63 |
64 | ```
65 |
66 | ### Duration
67 |
68 | To adjust the animation duration add a modifier like so:
69 |
70 | ```html
71 |
72 |
73 |
74 | ```
75 |
76 | or
77 |
78 | ```html
79 |
80 |
81 |
82 | ```
83 |
84 | ### Easing function
85 |
86 | To adjust the easing function add it as a modifier:
87 |
88 | ```html
89 |
90 |
91 |
92 | ```
93 |
94 | ### Toggle animations
95 |
96 | In some situations it may be necessary to disable animations and re-enable them later.
97 |
98 | For this you can provide a boolean to the directive like so:
99 |
100 | ```html
101 |
102 |
103 |
104 |
105 |
108 |
109 | ```
110 |
111 | ## Global config
112 |
113 | If you are using the `npm` installation method for this package or the ESM distribution, you can use the
114 | `AutoAnimate.configure` method to provide a configuration:
115 |
116 | ```javascript
117 | import AutoAnimate from '@marcreichel/alpine-auto-animate';
118 |
119 | Alpine.plugin(AutoAnimate.configure({
120 | duration: 1000,
121 | easing: 'linear',
122 | disrespectUserMotionPreference: true,
123 | }));
124 | ```
125 |
126 | ## 📄 License
127 |
128 | Copyright (c) 2022 Marc Reichel and contributors.
129 |
130 | Licensed under the MIT license, see [LICENSE](LICENSE) for details.
131 |
--------------------------------------------------------------------------------
/builds/cdn.js:
--------------------------------------------------------------------------------
1 | import AutoAnimate from "../src/index.js";
2 |
3 | document.addEventListener('alpine:init', () => {
4 | AutoAnimate(window.Alpine);
5 | });
6 |
--------------------------------------------------------------------------------
/dist/alpine-auto-animate.js:
--------------------------------------------------------------------------------
1 | (function (factory) {
2 | typeof define === 'function' && define.amd ? define(factory) :
3 | factory();
4 | })((function () { 'use strict';
5 |
6 | /**
7 | * A set of all the parents currently being observe. This is the only non weak
8 | * registry.
9 | */
10 | const parents = new Set();
11 | /**
12 | * Element coordinates that is constantly kept up to date.
13 | */
14 | const coords = new WeakMap();
15 | /**
16 | * Siblings of elements that have been removed from the dom.
17 | */
18 | const siblings = new WeakMap();
19 | /**
20 | * Animations that are currently running.
21 | */
22 | const animations = new WeakMap();
23 | /**
24 | * A map of existing intersection observers used to track element movements.
25 | */
26 | const intersections = new WeakMap();
27 | /**
28 | * Intervals for automatically checking the position of elements occasionally.
29 | */
30 | const intervals = new WeakMap();
31 | /**
32 | * The configuration options for each group of elements.
33 | */
34 | const options = new WeakMap();
35 | /**
36 | * Debounce counters by id, used to debounce calls to update positions.
37 | */
38 | const debounces = new WeakMap();
39 | /**
40 | * All parents that are currently enabled are tracked here.
41 | */
42 | const enabled = new WeakSet();
43 | /**
44 | * The document used to calculate transitions.
45 | */
46 | let root;
47 | /**
48 | * Used to sign an element as the target.
49 | */
50 | const TGT = "__aa_tgt";
51 | /**
52 | * Used to sign an element as being part of a removal.
53 | */
54 | const DEL = "__aa_del";
55 | /**
56 | * Callback for handling all mutations.
57 | * @param mutations - A mutation list
58 | */
59 | const handleMutations = (mutations) => {
60 | const elements = getElements(mutations);
61 | // If elements is "false" that means this mutation that should be ignored.
62 | if (elements) {
63 | elements.forEach((el) => animate(el));
64 | }
65 | };
66 | /**
67 | *
68 | * @param entries - Elements that have been resized.
69 | */
70 | const handleResizes = (entries) => {
71 | entries.forEach((entry) => {
72 | if (entry.target === root)
73 | updateAllPos();
74 | if (coords.has(entry.target))
75 | updatePos(entry.target);
76 | });
77 | };
78 | /**
79 | * Observe this elements position.
80 | * @param el - The element to observe the position of.
81 | */
82 | function observePosition(el) {
83 | const oldObserver = intersections.get(el);
84 | oldObserver === null || oldObserver === void 0 ? void 0 : oldObserver.disconnect();
85 | let rect = coords.get(el);
86 | let invocations = 0;
87 | const buffer = 5;
88 | if (!rect) {
89 | rect = getCoords(el);
90 | coords.set(el, rect);
91 | }
92 | const { offsetWidth, offsetHeight } = root;
93 | const rootMargins = [
94 | rect.top - buffer,
95 | offsetWidth - (rect.left + buffer + rect.width),
96 | offsetHeight - (rect.top + buffer + rect.height),
97 | rect.left - buffer,
98 | ];
99 | const rootMargin = rootMargins
100 | .map((px) => `${-1 * Math.floor(px)}px`)
101 | .join(" ");
102 | const observer = new IntersectionObserver(() => {
103 | ++invocations > 1 && updatePos(el);
104 | }, {
105 | root,
106 | threshold: 1,
107 | rootMargin,
108 | });
109 | observer.observe(el);
110 | intersections.set(el, observer);
111 | }
112 | /**
113 | * Update the exact position of a given element.
114 | * @param el - An element to update the position of.
115 | */
116 | function updatePos(el) {
117 | clearTimeout(debounces.get(el));
118 | const optionsOrPlugin = getOptions(el);
119 | const delay = typeof optionsOrPlugin === "function" ? 500 : optionsOrPlugin.duration;
120 | debounces.set(el, setTimeout(async () => {
121 | const currentAnimation = animations.get(el);
122 | if (!currentAnimation || (await currentAnimation.finished)) {
123 | coords.set(el, getCoords(el));
124 | observePosition(el);
125 | }
126 | }, delay));
127 | }
128 | /**
129 | * Updates all positions that are currently being tracked.
130 | */
131 | function updateAllPos() {
132 | clearTimeout(debounces.get(root));
133 | debounces.set(root, setTimeout(() => {
134 | parents.forEach((parent) => forEach(parent, (el) => lowPriority(() => updatePos(el))));
135 | }, 100));
136 | }
137 | /**
138 | * Its possible for a quick scroll or other fast events to get past the
139 | * intersection observer, so occasionally we need want "cold-poll" for the
140 | * latests and greatest position. We try to do this in the most non-disruptive
141 | * fashion possible. First we only do this ever couple seconds, staggard by a
142 | * random offset.
143 | * @param el - Element
144 | */
145 | function poll(el) {
146 | setTimeout(() => {
147 | intervals.set(el, setInterval(() => lowPriority(updatePos.bind(null, el)), 2000));
148 | }, Math.round(2000 * Math.random()));
149 | }
150 | /**
151 | * Perform some operation that is non critical at some point.
152 | * @param callback
153 | */
154 | function lowPriority(callback) {
155 | if (typeof requestIdleCallback === "function") {
156 | requestIdleCallback(() => callback());
157 | }
158 | else {
159 | requestAnimationFrame(() => callback());
160 | }
161 | }
162 | /**
163 | * The mutation observer responsible for watching each root element.
164 | */
165 | let mutations;
166 | /**
167 | * A resize observer, responsible for recalculating elements on resize.
168 | */
169 | let resize;
170 | /**
171 | * If this is in a browser, initialize our Web APIs
172 | */
173 | if (typeof window !== "undefined") {
174 | root = document.documentElement;
175 | mutations = new MutationObserver(handleMutations);
176 | resize = new ResizeObserver(handleResizes);
177 | resize.observe(root);
178 | }
179 | /**
180 | * Retrieves all the elements that may have been affected by the last mutation
181 | * including ones that have been removed and are no longer in the DOM.
182 | * @param mutations - A mutation list.
183 | * @returns
184 | */
185 | function getElements(mutations) {
186 | return mutations.reduce((elements, mutation) => {
187 | // Short circuit if we find a purposefully deleted node.
188 | if (elements === false)
189 | return false;
190 | if (mutation.target instanceof Element) {
191 | target(mutation.target);
192 | if (!elements.has(mutation.target)) {
193 | elements.add(mutation.target);
194 | for (let i = 0; i < mutation.target.children.length; i++) {
195 | const child = mutation.target.children.item(i);
196 | if (!child)
197 | continue;
198 | if (DEL in child)
199 | return false;
200 | target(mutation.target, child);
201 | elements.add(child);
202 | }
203 | }
204 | if (mutation.removedNodes.length) {
205 | for (let i = 0; i < mutation.removedNodes.length; i++) {
206 | const child = mutation.removedNodes[i];
207 | if (DEL in child)
208 | return false;
209 | if (child instanceof Element) {
210 | elements.add(child);
211 | target(mutation.target, child);
212 | siblings.set(child, [
213 | mutation.previousSibling,
214 | mutation.nextSibling,
215 | ]);
216 | }
217 | }
218 | }
219 | }
220 | return elements;
221 | }, new Set());
222 | }
223 | /**
224 | * Assign the target to an element.
225 | * @param el - The root element
226 | * @param child
227 | */
228 | function target(el, child) {
229 | if (!child && !(TGT in el))
230 | Object.defineProperty(el, TGT, { value: el });
231 | else if (child && !(TGT in child))
232 | Object.defineProperty(child, TGT, { value: el });
233 | }
234 | /**
235 | * Determines what kind of change took place on the given element and then
236 | * performs the proper animation based on that.
237 | * @param el - The specific element to animate.
238 | */
239 | function animate(el) {
240 | var _a;
241 | const isMounted = root.contains(el);
242 | const preExisting = coords.has(el);
243 | if (isMounted && siblings.has(el))
244 | siblings.delete(el);
245 | if (animations.has(el)) {
246 | (_a = animations.get(el)) === null || _a === void 0 ? void 0 : _a.cancel();
247 | }
248 | if (preExisting && isMounted) {
249 | remain(el);
250 | }
251 | else if (preExisting && !isMounted) {
252 | remove(el);
253 | }
254 | else {
255 | add(el);
256 | }
257 | }
258 | /**
259 | * Removes all non-digits from a string and casts to a number.
260 | * @param str - A string containing a pixel value.
261 | * @returns
262 | */
263 | function raw(str) {
264 | return Number(str.replace(/[^0-9.\-]/g, ""));
265 | }
266 | /**
267 | * Get the coordinates of elements adjusted for scroll position.
268 | * @param el - Element
269 | * @returns
270 | */
271 | function getCoords(el) {
272 | const rect = el.getBoundingClientRect();
273 | return {
274 | top: rect.top + window.scrollY,
275 | left: rect.left + window.scrollX,
276 | width: rect.width,
277 | height: rect.height,
278 | };
279 | }
280 | /**
281 | * Returns the width/height that the element should be transitioned between.
282 | * This takes into account box-sizing.
283 | * @param el - Element being animated
284 | * @param oldCoords - Old set of Coordinates coordinates
285 | * @param newCoords - New set of Coordinates coordinates
286 | * @returns
287 | */
288 | function getTransitionSizes(el, oldCoords, newCoords) {
289 | let widthFrom = oldCoords.width;
290 | let heightFrom = oldCoords.height;
291 | let widthTo = newCoords.width;
292 | let heightTo = newCoords.height;
293 | const styles = getComputedStyle(el);
294 | const sizing = styles.getPropertyValue("box-sizing");
295 | if (sizing === "content-box") {
296 | const paddingY = raw(styles.paddingTop) +
297 | raw(styles.paddingBottom) +
298 | raw(styles.borderTopWidth) +
299 | raw(styles.borderBottomWidth);
300 | const paddingX = raw(styles.paddingLeft) +
301 | raw(styles.paddingRight) +
302 | raw(styles.borderRightWidth) +
303 | raw(styles.borderLeftWidth);
304 | widthFrom -= paddingX;
305 | widthTo -= paddingX;
306 | heightFrom -= paddingY;
307 | heightTo -= paddingY;
308 | }
309 | return [widthFrom, widthTo, heightFrom, heightTo].map(Math.round);
310 | }
311 | /**
312 | * Retrieves animation options for the current element.
313 | * @param el - Element to retrieve options for.
314 | * @returns
315 | */
316 | function getOptions(el) {
317 | return TGT in el && options.has(el[TGT])
318 | ? options.get(el[TGT])
319 | : { duration: 250, easing: "ease-in-out" };
320 | }
321 | /**
322 | * Returns the target of a given animation (generally the parent).
323 | * @param el - An element to check for a target
324 | * @returns
325 | */
326 | function getTarget(el) {
327 | if (TGT in el)
328 | return el[TGT];
329 | return undefined;
330 | }
331 | /**
332 | * Checks if animations are enabled or disabled for a given element.
333 | * @param el - Any element
334 | * @returns
335 | */
336 | function isEnabled(el) {
337 | const target = getTarget(el);
338 | return target ? enabled.has(target) : false;
339 | }
340 | /**
341 | * Iterate over the children of a given parent.
342 | * @param parent - A parent element
343 | * @param callback - A callback
344 | */
345 | function forEach(parent, ...callbacks) {
346 | callbacks.forEach((callback) => callback(parent, options.has(parent)));
347 | for (let i = 0; i < parent.children.length; i++) {
348 | const child = parent.children.item(i);
349 | if (child) {
350 | callbacks.forEach((callback) => callback(child, options.has(child)));
351 | }
352 | }
353 | }
354 | /**
355 | * The element in question is remaining in the DOM.
356 | * @param el - Element to flip
357 | * @returns
358 | */
359 | function remain(el) {
360 | const oldCoords = coords.get(el);
361 | const newCoords = getCoords(el);
362 | if (!isEnabled(el))
363 | return coords.set(el, newCoords);
364 | let animation;
365 | if (!oldCoords)
366 | return;
367 | const pluginOrOptions = getOptions(el);
368 | if (typeof pluginOrOptions !== "function") {
369 | const deltaX = oldCoords.left - newCoords.left;
370 | const deltaY = oldCoords.top - newCoords.top;
371 | const [widthFrom, widthTo, heightFrom, heightTo] = getTransitionSizes(el, oldCoords, newCoords);
372 | const start = {
373 | transform: `translate(${deltaX}px, ${deltaY}px)`,
374 | };
375 | const end = {
376 | transform: `translate(0, 0)`,
377 | };
378 | if (widthFrom !== widthTo) {
379 | start.width = `${widthFrom}px`;
380 | end.width = `${widthTo}px`;
381 | }
382 | if (heightFrom !== heightTo) {
383 | start.height = `${heightFrom}px`;
384 | end.height = `${heightTo}px`;
385 | }
386 | animation = el.animate([start, end], {
387 | duration: pluginOrOptions.duration,
388 | easing: pluginOrOptions.easing,
389 | });
390 | }
391 | else {
392 | animation = new Animation(pluginOrOptions(el, "remain", oldCoords, newCoords));
393 | animation.play();
394 | }
395 | animations.set(el, animation);
396 | coords.set(el, newCoords);
397 | animation.addEventListener("finish", updatePos.bind(null, el));
398 | }
399 | /**
400 | * Adds the element with a transition.
401 | * @param el - Animates the element being added.
402 | */
403 | function add(el) {
404 | const newCoords = getCoords(el);
405 | coords.set(el, newCoords);
406 | const pluginOrOptions = getOptions(el);
407 | if (!isEnabled(el))
408 | return;
409 | let animation;
410 | if (typeof pluginOrOptions !== "function") {
411 | animation = el.animate([
412 | { transform: "scale(.98)", opacity: 0 },
413 | { transform: "scale(0.98)", opacity: 0, offset: 0.5 },
414 | { transform: "scale(1)", opacity: 1 },
415 | ], {
416 | duration: pluginOrOptions.duration * 1.5,
417 | easing: "ease-in",
418 | });
419 | }
420 | else {
421 | animation = new Animation(pluginOrOptions(el, "add", newCoords));
422 | animation.play();
423 | }
424 | animations.set(el, animation);
425 | animation.addEventListener("finish", updatePos.bind(null, el));
426 | }
427 | /**
428 | * Animates the removal of an element.
429 | * @param el - Element to remove
430 | */
431 | function remove(el) {
432 | var _a;
433 | if (!siblings.has(el) || !coords.has(el))
434 | return;
435 | const [prev, next] = siblings.get(el);
436 | Object.defineProperty(el, DEL, { value: true });
437 | if (next && next.parentNode && next.parentNode instanceof Element) {
438 | next.parentNode.insertBefore(el, next);
439 | }
440 | else if (prev && prev.parentNode) {
441 | prev.parentNode.appendChild(el);
442 | }
443 | else {
444 | (_a = getTarget(el)) === null || _a === void 0 ? void 0 : _a.appendChild(el);
445 | }
446 | function cleanUp() {
447 | var _a;
448 | el.remove();
449 | coords.delete(el);
450 | siblings.delete(el);
451 | animations.delete(el);
452 | (_a = intersections.get(el)) === null || _a === void 0 ? void 0 : _a.disconnect();
453 | }
454 | if (!isEnabled(el))
455 | return cleanUp();
456 | const [top, left, width, height] = deletePosition(el);
457 | const optionsOrPlugin = getOptions(el);
458 | const oldCoords = coords.get(el);
459 | let animation;
460 | Object.assign(el.style, {
461 | position: "absolute",
462 | top: `${top}px`,
463 | left: `${left}px`,
464 | width: `${width}px`,
465 | height: `${height}px`,
466 | margin: 0,
467 | pointerEvents: "none",
468 | transformOrigin: "center",
469 | zIndex: 100,
470 | });
471 | if (typeof optionsOrPlugin !== "function") {
472 | animation = el.animate([
473 | {
474 | transform: "scale(1)",
475 | opacity: 1,
476 | },
477 | {
478 | transform: "scale(.98)",
479 | opacity: 0,
480 | },
481 | ], { duration: optionsOrPlugin.duration, easing: "ease-out" });
482 | }
483 | else {
484 | animation = new Animation(optionsOrPlugin(el, "remove", oldCoords));
485 | animation.play();
486 | }
487 | animations.set(el, animation);
488 | animation.addEventListener("finish", cleanUp);
489 | }
490 | function deletePosition(el) {
491 | const oldCoords = coords.get(el);
492 | const [width, , height] = getTransitionSizes(el, oldCoords, getCoords(el));
493 | let offsetParent = el.parentElement;
494 | while (offsetParent &&
495 | (getComputedStyle(offsetParent).position === "static" ||
496 | offsetParent instanceof HTMLBodyElement)) {
497 | offsetParent = offsetParent.parentElement;
498 | }
499 | if (!offsetParent)
500 | offsetParent = document.body;
501 | const parentStyles = getComputedStyle(offsetParent);
502 | const parentCoords = coords.get(offsetParent) || getCoords(offsetParent);
503 | const top = Math.round(oldCoords.top - parentCoords.top) -
504 | raw(parentStyles.borderTopWidth);
505 | const left = Math.round(oldCoords.left - parentCoords.left) -
506 | raw(parentStyles.borderLeftWidth);
507 | return [top, left, width, height];
508 | }
509 | /**
510 | * A function that automatically adds animation effects to itself and its
511 | * immediate children. Specifically it adds effects for adding, moving, and
512 | * removing DOM elements.
513 | * @param el - A parent element to add animations to.
514 | * @param options - An optional object of options.
515 | */
516 | function autoAnimate(el, config = {}) {
517 | if (mutations && resize) {
518 | const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
519 | const isDisabledDueToReduceMotion = mediaQuery.matches &&
520 | typeof config !== "function" &&
521 | !config.disrespectUserMotionPreference;
522 | if (!isDisabledDueToReduceMotion) {
523 | enabled.add(el);
524 | if (getComputedStyle(el).position === "static") {
525 | Object.assign(el.style, { position: "relative" });
526 | }
527 | forEach(el, updatePos, poll, (element) => resize === null || resize === void 0 ? void 0 : resize.observe(element));
528 | if (typeof config === "function") {
529 | options.set(el, config);
530 | }
531 | else {
532 | options.set(el, { duration: 250, easing: "ease-in-out", ...config });
533 | }
534 | mutations.observe(el, { childList: true });
535 | parents.add(el);
536 | }
537 | }
538 | return Object.freeze({
539 | parent: el,
540 | enable: () => {
541 | enabled.add(el);
542 | },
543 | disable: () => {
544 | enabled.delete(el);
545 | },
546 | isEnabled: () => enabled.has(el),
547 | });
548 | }
549 |
550 | let autoAnimateConfig = {};
551 |
552 | function AutoAnimate(Alpine) {
553 | Alpine.directive('auto-animate', (el, {
554 | expression,
555 | modifiers
556 | }, {
557 | evaluateLater,
558 | effect
559 | }) => {
560 | let config = {};
561 | const durationModifier = modifiers.filter(modifier => modifier.match(/^\d+m?s$/))[0] || null;
562 |
563 | if (durationModifier) {
564 | const inMilliseconds = !!durationModifier.match(/ms$/);
565 | const matchedDuration = +durationModifier.match(/^\d+/);
566 | config.duration = matchedDuration * (inMilliseconds ? 1 : 1000);
567 | }
568 |
569 | const easingModifier = modifiers.filter(modifier => !modifier.match(/^\d+m?s$/))[0] || null;
570 |
571 | if (easingModifier) {
572 | config.easing = easingModifier;
573 | }
574 |
575 | const controller = autoAnimate(el, { ...autoAnimateConfig,
576 | ...config
577 | });
578 |
579 | if (expression) {
580 | const isEnabled = evaluateLater(expression);
581 | effect(() => {
582 | isEnabled(enabled => {
583 | if (enabled) {
584 | controller.enable();
585 | } else {
586 | controller.disable();
587 | }
588 | });
589 | });
590 | }
591 | });
592 | }
593 |
594 | AutoAnimate.configure = config => {
595 | autoAnimateConfig = config;
596 | };
597 |
598 | document.addEventListener('alpine:init', () => {
599 | AutoAnimate(window.Alpine);
600 | });
601 |
602 | }));
603 | //# sourceMappingURL=alpine-auto-animate.js.map
604 |
--------------------------------------------------------------------------------
/dist/alpine-auto-animate.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"alpine-auto-animate.js","sources":["../node_modules/@formkit/auto-animate/index.mjs","../src/index.js","../builds/cdn.js"],"sourcesContent":["/**\n * A set of all the parents currently being observe. This is the only non weak\n * registry.\n */\nconst parents = new Set();\n/**\n * Element coordinates that is constantly kept up to date.\n */\nconst coords = new WeakMap();\n/**\n * Siblings of elements that have been removed from the dom.\n */\nconst siblings = new WeakMap();\n/**\n * Animations that are currently running.\n */\nconst animations = new WeakMap();\n/**\n * A map of existing intersection observers used to track element movements.\n */\nconst intersections = new WeakMap();\n/**\n * Intervals for automatically checking the position of elements occasionally.\n */\nconst intervals = new WeakMap();\n/**\n * The configuration options for each group of elements.\n */\nconst options = new WeakMap();\n/**\n * Debounce counters by id, used to debounce calls to update positions.\n */\nconst debounces = new WeakMap();\n/**\n * All parents that are currently enabled are tracked here.\n */\nconst enabled = new WeakSet();\n/**\n * The document used to calculate transitions.\n */\nlet root;\n/**\n * Used to sign an element as the target.\n */\nconst TGT = \"__aa_tgt\";\n/**\n * Used to sign an element as being part of a removal.\n */\nconst DEL = \"__aa_del\";\n/**\n * Callback for handling all mutations.\n * @param mutations - A mutation list\n */\nconst handleMutations = (mutations) => {\n const elements = getElements(mutations);\n // If elements is \"false\" that means this mutation that should be ignored.\n if (elements) {\n elements.forEach((el) => animate(el));\n }\n};\n/**\n *\n * @param entries - Elements that have been resized.\n */\nconst handleResizes = (entries) => {\n entries.forEach((entry) => {\n if (entry.target === root)\n updateAllPos();\n if (coords.has(entry.target))\n updatePos(entry.target);\n });\n};\n/**\n * Observe this elements position.\n * @param el - The element to observe the position of.\n */\nfunction observePosition(el) {\n const oldObserver = intersections.get(el);\n oldObserver === null || oldObserver === void 0 ? void 0 : oldObserver.disconnect();\n let rect = coords.get(el);\n let invocations = 0;\n const buffer = 5;\n if (!rect) {\n rect = getCoords(el);\n coords.set(el, rect);\n }\n const { offsetWidth, offsetHeight } = root;\n const rootMargins = [\n rect.top - buffer,\n offsetWidth - (rect.left + buffer + rect.width),\n offsetHeight - (rect.top + buffer + rect.height),\n rect.left - buffer,\n ];\n const rootMargin = rootMargins\n .map((px) => `${-1 * Math.floor(px)}px`)\n .join(\" \");\n const observer = new IntersectionObserver(() => {\n ++invocations > 1 && updatePos(el);\n }, {\n root,\n threshold: 1,\n rootMargin,\n });\n observer.observe(el);\n intersections.set(el, observer);\n}\n/**\n * Update the exact position of a given element.\n * @param el - An element to update the position of.\n */\nfunction updatePos(el) {\n clearTimeout(debounces.get(el));\n const optionsOrPlugin = getOptions(el);\n const delay = typeof optionsOrPlugin === \"function\" ? 500 : optionsOrPlugin.duration;\n debounces.set(el, setTimeout(async () => {\n const currentAnimation = animations.get(el);\n if (!currentAnimation || (await currentAnimation.finished)) {\n coords.set(el, getCoords(el));\n observePosition(el);\n }\n }, delay));\n}\n/**\n * Updates all positions that are currently being tracked.\n */\nfunction updateAllPos() {\n clearTimeout(debounces.get(root));\n debounces.set(root, setTimeout(() => {\n parents.forEach((parent) => forEach(parent, (el) => lowPriority(() => updatePos(el))));\n }, 100));\n}\n/**\n * Its possible for a quick scroll or other fast events to get past the\n * intersection observer, so occasionally we need want \"cold-poll\" for the\n * latests and greatest position. We try to do this in the most non-disruptive\n * fashion possible. First we only do this ever couple seconds, staggard by a\n * random offset.\n * @param el - Element\n */\nfunction poll(el) {\n setTimeout(() => {\n intervals.set(el, setInterval(() => lowPriority(updatePos.bind(null, el)), 2000));\n }, Math.round(2000 * Math.random()));\n}\n/**\n * Perform some operation that is non critical at some point.\n * @param callback\n */\nfunction lowPriority(callback) {\n if (typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => callback());\n }\n else {\n requestAnimationFrame(() => callback());\n }\n}\n/**\n * The mutation observer responsible for watching each root element.\n */\nlet mutations;\n/**\n * A resize observer, responsible for recalculating elements on resize.\n */\nlet resize;\n/**\n * If this is in a browser, initialize our Web APIs\n */\nif (typeof window !== \"undefined\") {\n root = document.documentElement;\n mutations = new MutationObserver(handleMutations);\n resize = new ResizeObserver(handleResizes);\n resize.observe(root);\n}\n/**\n * Retrieves all the elements that may have been affected by the last mutation\n * including ones that have been removed and are no longer in the DOM.\n * @param mutations - A mutation list.\n * @returns\n */\nfunction getElements(mutations) {\n return mutations.reduce((elements, mutation) => {\n // Short circuit if we find a purposefully deleted node.\n if (elements === false)\n return false;\n if (mutation.target instanceof Element) {\n target(mutation.target);\n if (!elements.has(mutation.target)) {\n elements.add(mutation.target);\n for (let i = 0; i < mutation.target.children.length; i++) {\n const child = mutation.target.children.item(i);\n if (!child)\n continue;\n if (DEL in child)\n return false;\n target(mutation.target, child);\n elements.add(child);\n }\n }\n if (mutation.removedNodes.length) {\n for (let i = 0; i < mutation.removedNodes.length; i++) {\n const child = mutation.removedNodes[i];\n if (DEL in child)\n return false;\n if (child instanceof Element) {\n elements.add(child);\n target(mutation.target, child);\n siblings.set(child, [\n mutation.previousSibling,\n mutation.nextSibling,\n ]);\n }\n }\n }\n }\n return elements;\n }, new Set());\n}\n/**\n * Assign the target to an element.\n * @param el - The root element\n * @param child\n */\nfunction target(el, child) {\n if (!child && !(TGT in el))\n Object.defineProperty(el, TGT, { value: el });\n else if (child && !(TGT in child))\n Object.defineProperty(child, TGT, { value: el });\n}\n/**\n * Determines what kind of change took place on the given element and then\n * performs the proper animation based on that.\n * @param el - The specific element to animate.\n */\nfunction animate(el) {\n var _a;\n const isMounted = root.contains(el);\n const preExisting = coords.has(el);\n if (isMounted && siblings.has(el))\n siblings.delete(el);\n if (animations.has(el)) {\n (_a = animations.get(el)) === null || _a === void 0 ? void 0 : _a.cancel();\n }\n if (preExisting && isMounted) {\n remain(el);\n }\n else if (preExisting && !isMounted) {\n remove(el);\n }\n else {\n add(el);\n }\n}\n/**\n * Removes all non-digits from a string and casts to a number.\n * @param str - A string containing a pixel value.\n * @returns\n */\nfunction raw(str) {\n return Number(str.replace(/[^0-9.\\-]/g, \"\"));\n}\n/**\n * Get the coordinates of elements adjusted for scroll position.\n * @param el - Element\n * @returns\n */\nfunction getCoords(el) {\n const rect = el.getBoundingClientRect();\n return {\n top: rect.top + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n height: rect.height,\n };\n}\n/**\n * Returns the width/height that the element should be transitioned between.\n * This takes into account box-sizing.\n * @param el - Element being animated\n * @param oldCoords - Old set of Coordinates coordinates\n * @param newCoords - New set of Coordinates coordinates\n * @returns\n */\nfunction getTransitionSizes(el, oldCoords, newCoords) {\n let widthFrom = oldCoords.width;\n let heightFrom = oldCoords.height;\n let widthTo = newCoords.width;\n let heightTo = newCoords.height;\n const styles = getComputedStyle(el);\n const sizing = styles.getPropertyValue(\"box-sizing\");\n if (sizing === \"content-box\") {\n const paddingY = raw(styles.paddingTop) +\n raw(styles.paddingBottom) +\n raw(styles.borderTopWidth) +\n raw(styles.borderBottomWidth);\n const paddingX = raw(styles.paddingLeft) +\n raw(styles.paddingRight) +\n raw(styles.borderRightWidth) +\n raw(styles.borderLeftWidth);\n widthFrom -= paddingX;\n widthTo -= paddingX;\n heightFrom -= paddingY;\n heightTo -= paddingY;\n }\n return [widthFrom, widthTo, heightFrom, heightTo].map(Math.round);\n}\n/**\n * Retrieves animation options for the current element.\n * @param el - Element to retrieve options for.\n * @returns\n */\nfunction getOptions(el) {\n return TGT in el && options.has(el[TGT])\n ? options.get(el[TGT])\n : { duration: 250, easing: \"ease-in-out\" };\n}\n/**\n * Returns the target of a given animation (generally the parent).\n * @param el - An element to check for a target\n * @returns\n */\nfunction getTarget(el) {\n if (TGT in el)\n return el[TGT];\n return undefined;\n}\n/**\n * Checks if animations are enabled or disabled for a given element.\n * @param el - Any element\n * @returns\n */\nfunction isEnabled(el) {\n const target = getTarget(el);\n return target ? enabled.has(target) : false;\n}\n/**\n * Iterate over the children of a given parent.\n * @param parent - A parent element\n * @param callback - A callback\n */\nfunction forEach(parent, ...callbacks) {\n callbacks.forEach((callback) => callback(parent, options.has(parent)));\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children.item(i);\n if (child) {\n callbacks.forEach((callback) => callback(child, options.has(child)));\n }\n }\n}\n/**\n * The element in question is remaining in the DOM.\n * @param el - Element to flip\n * @returns\n */\nfunction remain(el) {\n const oldCoords = coords.get(el);\n const newCoords = getCoords(el);\n if (!isEnabled(el))\n return coords.set(el, newCoords);\n let animation;\n if (!oldCoords)\n return;\n const pluginOrOptions = getOptions(el);\n if (typeof pluginOrOptions !== \"function\") {\n const deltaX = oldCoords.left - newCoords.left;\n const deltaY = oldCoords.top - newCoords.top;\n const [widthFrom, widthTo, heightFrom, heightTo] = getTransitionSizes(el, oldCoords, newCoords);\n const start = {\n transform: `translate(${deltaX}px, ${deltaY}px)`,\n };\n const end = {\n transform: `translate(0, 0)`,\n };\n if (widthFrom !== widthTo) {\n start.width = `${widthFrom}px`;\n end.width = `${widthTo}px`;\n }\n if (heightFrom !== heightTo) {\n start.height = `${heightFrom}px`;\n end.height = `${heightTo}px`;\n }\n animation = el.animate([start, end], {\n duration: pluginOrOptions.duration,\n easing: pluginOrOptions.easing,\n });\n }\n else {\n animation = new Animation(pluginOrOptions(el, \"remain\", oldCoords, newCoords));\n animation.play();\n }\n animations.set(el, animation);\n coords.set(el, newCoords);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Adds the element with a transition.\n * @param el - Animates the element being added.\n */\nfunction add(el) {\n const newCoords = getCoords(el);\n coords.set(el, newCoords);\n const pluginOrOptions = getOptions(el);\n if (!isEnabled(el))\n return;\n let animation;\n if (typeof pluginOrOptions !== \"function\") {\n animation = el.animate([\n { transform: \"scale(.98)\", opacity: 0 },\n { transform: \"scale(0.98)\", opacity: 0, offset: 0.5 },\n { transform: \"scale(1)\", opacity: 1 },\n ], {\n duration: pluginOrOptions.duration * 1.5,\n easing: \"ease-in\",\n });\n }\n else {\n animation = new Animation(pluginOrOptions(el, \"add\", newCoords));\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Animates the removal of an element.\n * @param el - Element to remove\n */\nfunction remove(el) {\n var _a;\n if (!siblings.has(el) || !coords.has(el))\n return;\n const [prev, next] = siblings.get(el);\n Object.defineProperty(el, DEL, { value: true });\n if (next && next.parentNode && next.parentNode instanceof Element) {\n next.parentNode.insertBefore(el, next);\n }\n else if (prev && prev.parentNode) {\n prev.parentNode.appendChild(el);\n }\n else {\n (_a = getTarget(el)) === null || _a === void 0 ? void 0 : _a.appendChild(el);\n }\n function cleanUp() {\n var _a;\n el.remove();\n coords.delete(el);\n siblings.delete(el);\n animations.delete(el);\n (_a = intersections.get(el)) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n if (!isEnabled(el))\n return cleanUp();\n const [top, left, width, height] = deletePosition(el);\n const optionsOrPlugin = getOptions(el);\n const oldCoords = coords.get(el);\n let animation;\n Object.assign(el.style, {\n position: \"absolute\",\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n margin: 0,\n pointerEvents: \"none\",\n transformOrigin: \"center\",\n zIndex: 100,\n });\n if (typeof optionsOrPlugin !== \"function\") {\n animation = el.animate([\n {\n transform: \"scale(1)\",\n opacity: 1,\n },\n {\n transform: \"scale(.98)\",\n opacity: 0,\n },\n ], { duration: optionsOrPlugin.duration, easing: \"ease-out\" });\n }\n else {\n animation = new Animation(optionsOrPlugin(el, \"remove\", oldCoords));\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", cleanUp);\n}\nfunction deletePosition(el) {\n const oldCoords = coords.get(el);\n const [width, , height] = getTransitionSizes(el, oldCoords, getCoords(el));\n let offsetParent = el.parentElement;\n while (offsetParent &&\n (getComputedStyle(offsetParent).position === \"static\" ||\n offsetParent instanceof HTMLBodyElement)) {\n offsetParent = offsetParent.parentElement;\n }\n if (!offsetParent)\n offsetParent = document.body;\n const parentStyles = getComputedStyle(offsetParent);\n const parentCoords = coords.get(offsetParent) || getCoords(offsetParent);\n const top = Math.round(oldCoords.top - parentCoords.top) -\n raw(parentStyles.borderTopWidth);\n const left = Math.round(oldCoords.left - parentCoords.left) -\n raw(parentStyles.borderLeftWidth);\n return [top, left, width, height];\n}\n/**\n * A function that automatically adds animation effects to itself and its\n * immediate children. Specifically it adds effects for adding, moving, and\n * removing DOM elements.\n * @param el - A parent element to add animations to.\n * @param options - An optional object of options.\n */\nfunction autoAnimate(el, config = {}) {\n if (mutations && resize) {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const isDisabledDueToReduceMotion = mediaQuery.matches &&\n typeof config !== \"function\" &&\n !config.disrespectUserMotionPreference;\n if (!isDisabledDueToReduceMotion) {\n enabled.add(el);\n if (getComputedStyle(el).position === \"static\") {\n Object.assign(el.style, { position: \"relative\" });\n }\n forEach(el, updatePos, poll, (element) => resize === null || resize === void 0 ? void 0 : resize.observe(element));\n if (typeof config === \"function\") {\n options.set(el, config);\n }\n else {\n options.set(el, { duration: 250, easing: \"ease-in-out\", ...config });\n }\n mutations.observe(el, { childList: true });\n parents.add(el);\n }\n }\n return Object.freeze({\n parent: el,\n enable: () => {\n enabled.add(el);\n },\n disable: () => {\n enabled.delete(el);\n },\n isEnabled: () => enabled.has(el),\n });\n}\n/**\n * The vue directive.\n */\nconst vAutoAnimate = {\n mounted: (el, binding) => {\n autoAnimate(el, binding.value || {});\n },\n};\n\nexport { autoAnimate as default, getTransitionSizes, vAutoAnimate };\n","import autoAnimate from '@formkit/auto-animate';\n\nlet autoAnimateConfig = {};\n\nfunction AutoAnimate(Alpine) {\n Alpine.directive('auto-animate', (el, { expression, modifiers }, { evaluateLater, effect }) => {\n let config = {};\n const durationModifier = modifiers.filter((modifier) => modifier.match(/^\\d+m?s$/))[0] || null;\n if (durationModifier) {\n const inMilliseconds = !!durationModifier.match(/ms$/);\n const matchedDuration = + durationModifier.match(/^\\d+/);\n config.duration = matchedDuration * (inMilliseconds ? 1 : 1000);\n }\n const easingModifier = modifiers.filter((modifier) => !modifier.match(/^\\d+m?s$/))[0] || null;\n if (easingModifier) {\n config.easing = easingModifier;\n }\n const controller = autoAnimate(el, { ...autoAnimateConfig, ...config });\n if (expression) {\n const isEnabled = evaluateLater(expression);\n effect(() => {\n isEnabled((enabled) => {\n if (enabled) {\n controller.enable();\n } else {\n controller.disable();\n }\n });\n })\n }\n });\n}\n\nAutoAnimate.configure = (config) => {\n autoAnimateConfig = config;\n};\n\nexport default AutoAnimate;\n","import AutoAnimate from \"../src/index.js\";\n\ndocument.addEventListener('alpine:init', () => {\n AutoAnimate(window.Alpine);\n});\n"],"names":["autoAnimateConfig","AutoAnimate","Alpine","directive","el","expression","modifiers","evaluateLater","effect","config","durationModifier","filter","modifier","match","inMilliseconds","matchedDuration","duration","easingModifier","easing","controller","autoAnimate","isEnabled","enabled","enable","disable","configure","document","addEventListener","window"],"mappings":"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"}
--------------------------------------------------------------------------------
/dist/alpine-auto-animate.min.js:
--------------------------------------------------------------------------------
1 | !function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e=new Set,t=new WeakMap,n=new WeakMap,i=new WeakMap,o=new WeakMap,a=new WeakMap,r=new WeakMap,s=new WeakMap,d=new WeakSet;let c;const l="__aa_tgt",f="__aa_del",u=e=>{const a=function(e){return e.reduce(((e,t)=>{if(!1===e)return!1;if(t.target instanceof Element){if(v(t.target),!e.has(t.target)){e.add(t.target);for(let n=0;nfunction(e){var a;const r=c.contains(e),s=t.has(e);r&&n.has(e)&&n.delete(e);i.has(e)&&(null===(a=i.get(e))||void 0===a||a.cancel());s&&r?function(e){const n=t.get(e),o=E(e);if(!$(e))return t.set(e,o);let a;if(!n)return;const r=x(e);if("function"!=typeof r){const t=n.left-o.left,i=n.top-o.top,[s,d,c,l]=M(e,n,o),f={transform:`translate(${t}px, ${i}px)`},u={transform:"translate(0, 0)"};s!==d&&(f.width=`${s}px`,u.width=`${d}px`),c!==l&&(f.height=`${c}px`,u.height=`${l}px`),a=e.animate([f,u],{duration:r.duration,easing:r.easing})}else a=new Animation(r(e,"remain",n,o)),a.play();i.set(e,a),t.set(e,o),a.addEventListener("finish",h.bind(null,e))}(e):s&&!r?function(e){var a;if(!n.has(e)||!t.has(e))return;const[r,s]=n.get(e);Object.defineProperty(e,f,{value:!0}),s&&s.parentNode&&s.parentNode instanceof Element?s.parentNode.insertBefore(e,s):r&&r.parentNode?r.parentNode.appendChild(e):null===(a=W(e))||void 0===a||a.appendChild(e);function d(){var a;e.remove(),t.delete(e),n.delete(e),i.delete(e),null===(a=o.get(e))||void 0===a||a.disconnect()}if(!$(e))return d();const[c,l,u,p]=function(e){const n=t.get(e),[i,,o]=M(e,n,E(e));let a=e.parentElement;for(;a&&("static"===getComputedStyle(a).position||a instanceof HTMLBodyElement);)a=a.parentElement;a||(a=document.body);const r=getComputedStyle(a),s=t.get(a)||E(a),d=Math.round(n.top-s.top)-y(r.borderTopWidth),c=Math.round(n.left-s.left)-y(r.borderLeftWidth);return[d,c,i,o]}(e),h=x(e),g=t.get(e);let m;Object.assign(e.style,{position:"absolute",top:`${c}px`,left:`${l}px`,width:`${u}px`,height:`${p}px`,margin:0,pointerEvents:"none",transformOrigin:"center",zIndex:100}),"function"!=typeof h?m=e.animate([{transform:"scale(1)",opacity:1},{transform:"scale(.98)",opacity:0}],{duration:h.duration,easing:"ease-out"}):(m=new Animation(h(e,"remove",g)),m.play());i.set(e,m),m.addEventListener("finish",d)}(e):function(e){const n=E(e);t.set(e,n);const o=x(e);if(!$(e))return;let a;"function"!=typeof o?a=e.animate([{transform:"scale(.98)",opacity:0},{transform:"scale(0.98)",opacity:0,offset:.5},{transform:"scale(1)",opacity:1}],{duration:1.5*o.duration,easing:"ease-in"}):(a=new Animation(o(e,"add",n)),a.play());i.set(e,a),a.addEventListener("finish",h.bind(null,e))}(e)}(e)))},p=n=>{n.forEach((n=>{n.target===c&&(clearTimeout(s.get(c)),s.set(c,setTimeout((()=>{e.forEach((e=>k(e,(e=>m((()=>h(e)))))))}),100))),t.has(n.target)&&h(n.target)}))};function h(e){clearTimeout(s.get(e));const n=x(e),a="function"==typeof n?500:n.duration;s.set(e,setTimeout((async()=>{const n=i.get(e);n&&!await n.finished||(t.set(e,E(e)),function(e){const n=o.get(e);null==n||n.disconnect();let i=t.get(e),a=0;i||(i=E(e),t.set(e,i));const{offsetWidth:r,offsetHeight:s}=c,d=[i.top-5,r-(i.left+5+i.width),s-(i.top+5+i.height),i.left-5].map((e=>-1*Math.floor(e)+"px")).join(" "),l=new IntersectionObserver((()=>{++a>1&&h(e)}),{root:c,threshold:1,rootMargin:d});l.observe(e),o.set(e,l)}(e))}),a))}function g(e){setTimeout((()=>{a.set(e,setInterval((()=>m(h.bind(null,e))),2e3))}),Math.round(2e3*Math.random()))}function m(e){"function"==typeof requestIdleCallback?requestIdleCallback((()=>e())):requestAnimationFrame((()=>e()))}let b,w;function v(e,t){t||l in e?t&&!(l in t)&&Object.defineProperty(t,l,{value:e}):Object.defineProperty(e,l,{value:e})}function y(e){return Number(e.replace(/[^0-9.\-]/g,""))}function E(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX,width:t.width,height:t.height}}function M(e,t,n){let i=t.width,o=t.height,a=n.width,r=n.height;const s=getComputedStyle(e);if("content-box"===s.getPropertyValue("box-sizing")){const e=y(s.paddingTop)+y(s.paddingBottom)+y(s.borderTopWidth)+y(s.borderBottomWidth),t=y(s.paddingLeft)+y(s.paddingRight)+y(s.borderRightWidth)+y(s.borderLeftWidth);i-=t,a-=t,o-=e,r-=e}return[i,a,o,r].map(Math.round)}function x(e){return l in e&&r.has(e[l])?r.get(e[l]):{duration:250,easing:"ease-in-out"}}function W(e){if(l in e)return e[l]}function $(e){const t=W(e);return!!t&&d.has(t)}function k(e,...t){t.forEach((t=>t(e,r.has(e))));for(let n=0;ne(i,r.has(i))))}}"undefined"!=typeof window&&(c=document.documentElement,b=new MutationObserver(u),w=new ResizeObserver(p),w.observe(c));let L={};function O(t){t.directive("auto-animate",((t,{expression:n,modifiers:i},{evaluateLater:o,effect:a})=>{let s={};const c=i.filter((e=>e.match(/^\d+m?s$/)))[0]||null;if(c){const e=!!c.match(/ms$/),t=+c.match(/^\d+/);s.duration=t*(e?1:1e3)}const l=i.filter((e=>!e.match(/^\d+m?s$/)))[0]||null;l&&(s.easing=l);const f=function(t,n={}){b&&w&&(window.matchMedia("(prefers-reduced-motion: reduce)").matches&&"function"!=typeof n&&!n.disrespectUserMotionPreference||(d.add(t),"static"===getComputedStyle(t).position&&Object.assign(t.style,{position:"relative"}),k(t,h,g,(e=>null==w?void 0:w.observe(e))),"function"==typeof n?r.set(t,n):r.set(t,{duration:250,easing:"ease-in-out",...n}),b.observe(t,{childList:!0}),e.add(t)));return Object.freeze({parent:t,enable:()=>{d.add(t)},disable:()=>{d.delete(t)},isEnabled:()=>d.has(t)})}(t,{...L,...s});if(n){const e=o(n);a((()=>{e((e=>{e?f.enable():f.disable()}))}))}}))}O.configure=e=>{L=e},document.addEventListener("alpine:init",(()=>{O(window.Alpine)}))}));
2 | //# sourceMappingURL=alpine-auto-animate.min.js.map
3 |
--------------------------------------------------------------------------------
/dist/alpine-auto-animate.min.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"alpine-auto-animate.min.js","sources":["../node_modules/@formkit/auto-animate/index.mjs","../src/index.js","../builds/cdn.js"],"sourcesContent":["/**\n * A set of all the parents currently being observe. This is the only non weak\n * registry.\n */\nconst parents = new Set();\n/**\n * Element coordinates that is constantly kept up to date.\n */\nconst coords = new WeakMap();\n/**\n * Siblings of elements that have been removed from the dom.\n */\nconst siblings = new WeakMap();\n/**\n * Animations that are currently running.\n */\nconst animations = new WeakMap();\n/**\n * A map of existing intersection observers used to track element movements.\n */\nconst intersections = new WeakMap();\n/**\n * Intervals for automatically checking the position of elements occasionally.\n */\nconst intervals = new WeakMap();\n/**\n * The configuration options for each group of elements.\n */\nconst options = new WeakMap();\n/**\n * Debounce counters by id, used to debounce calls to update positions.\n */\nconst debounces = new WeakMap();\n/**\n * All parents that are currently enabled are tracked here.\n */\nconst enabled = new WeakSet();\n/**\n * The document used to calculate transitions.\n */\nlet root;\n/**\n * Used to sign an element as the target.\n */\nconst TGT = \"__aa_tgt\";\n/**\n * Used to sign an element as being part of a removal.\n */\nconst DEL = \"__aa_del\";\n/**\n * Callback for handling all mutations.\n * @param mutations - A mutation list\n */\nconst handleMutations = (mutations) => {\n const elements = getElements(mutations);\n // If elements is \"false\" that means this mutation that should be ignored.\n if (elements) {\n elements.forEach((el) => animate(el));\n }\n};\n/**\n *\n * @param entries - Elements that have been resized.\n */\nconst handleResizes = (entries) => {\n entries.forEach((entry) => {\n if (entry.target === root)\n updateAllPos();\n if (coords.has(entry.target))\n updatePos(entry.target);\n });\n};\n/**\n * Observe this elements position.\n * @param el - The element to observe the position of.\n */\nfunction observePosition(el) {\n const oldObserver = intersections.get(el);\n oldObserver === null || oldObserver === void 0 ? void 0 : oldObserver.disconnect();\n let rect = coords.get(el);\n let invocations = 0;\n const buffer = 5;\n if (!rect) {\n rect = getCoords(el);\n coords.set(el, rect);\n }\n const { offsetWidth, offsetHeight } = root;\n const rootMargins = [\n rect.top - buffer,\n offsetWidth - (rect.left + buffer + rect.width),\n offsetHeight - (rect.top + buffer + rect.height),\n rect.left - buffer,\n ];\n const rootMargin = rootMargins\n .map((px) => `${-1 * Math.floor(px)}px`)\n .join(\" \");\n const observer = new IntersectionObserver(() => {\n ++invocations > 1 && updatePos(el);\n }, {\n root,\n threshold: 1,\n rootMargin,\n });\n observer.observe(el);\n intersections.set(el, observer);\n}\n/**\n * Update the exact position of a given element.\n * @param el - An element to update the position of.\n */\nfunction updatePos(el) {\n clearTimeout(debounces.get(el));\n const optionsOrPlugin = getOptions(el);\n const delay = typeof optionsOrPlugin === \"function\" ? 500 : optionsOrPlugin.duration;\n debounces.set(el, setTimeout(async () => {\n const currentAnimation = animations.get(el);\n if (!currentAnimation || (await currentAnimation.finished)) {\n coords.set(el, getCoords(el));\n observePosition(el);\n }\n }, delay));\n}\n/**\n * Updates all positions that are currently being tracked.\n */\nfunction updateAllPos() {\n clearTimeout(debounces.get(root));\n debounces.set(root, setTimeout(() => {\n parents.forEach((parent) => forEach(parent, (el) => lowPriority(() => updatePos(el))));\n }, 100));\n}\n/**\n * Its possible for a quick scroll or other fast events to get past the\n * intersection observer, so occasionally we need want \"cold-poll\" for the\n * latests and greatest position. We try to do this in the most non-disruptive\n * fashion possible. First we only do this ever couple seconds, staggard by a\n * random offset.\n * @param el - Element\n */\nfunction poll(el) {\n setTimeout(() => {\n intervals.set(el, setInterval(() => lowPriority(updatePos.bind(null, el)), 2000));\n }, Math.round(2000 * Math.random()));\n}\n/**\n * Perform some operation that is non critical at some point.\n * @param callback\n */\nfunction lowPriority(callback) {\n if (typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => callback());\n }\n else {\n requestAnimationFrame(() => callback());\n }\n}\n/**\n * The mutation observer responsible for watching each root element.\n */\nlet mutations;\n/**\n * A resize observer, responsible for recalculating elements on resize.\n */\nlet resize;\n/**\n * If this is in a browser, initialize our Web APIs\n */\nif (typeof window !== \"undefined\") {\n root = document.documentElement;\n mutations = new MutationObserver(handleMutations);\n resize = new ResizeObserver(handleResizes);\n resize.observe(root);\n}\n/**\n * Retrieves all the elements that may have been affected by the last mutation\n * including ones that have been removed and are no longer in the DOM.\n * @param mutations - A mutation list.\n * @returns\n */\nfunction getElements(mutations) {\n return mutations.reduce((elements, mutation) => {\n // Short circuit if we find a purposefully deleted node.\n if (elements === false)\n return false;\n if (mutation.target instanceof Element) {\n target(mutation.target);\n if (!elements.has(mutation.target)) {\n elements.add(mutation.target);\n for (let i = 0; i < mutation.target.children.length; i++) {\n const child = mutation.target.children.item(i);\n if (!child)\n continue;\n if (DEL in child)\n return false;\n target(mutation.target, child);\n elements.add(child);\n }\n }\n if (mutation.removedNodes.length) {\n for (let i = 0; i < mutation.removedNodes.length; i++) {\n const child = mutation.removedNodes[i];\n if (DEL in child)\n return false;\n if (child instanceof Element) {\n elements.add(child);\n target(mutation.target, child);\n siblings.set(child, [\n mutation.previousSibling,\n mutation.nextSibling,\n ]);\n }\n }\n }\n }\n return elements;\n }, new Set());\n}\n/**\n * Assign the target to an element.\n * @param el - The root element\n * @param child\n */\nfunction target(el, child) {\n if (!child && !(TGT in el))\n Object.defineProperty(el, TGT, { value: el });\n else if (child && !(TGT in child))\n Object.defineProperty(child, TGT, { value: el });\n}\n/**\n * Determines what kind of change took place on the given element and then\n * performs the proper animation based on that.\n * @param el - The specific element to animate.\n */\nfunction animate(el) {\n var _a;\n const isMounted = root.contains(el);\n const preExisting = coords.has(el);\n if (isMounted && siblings.has(el))\n siblings.delete(el);\n if (animations.has(el)) {\n (_a = animations.get(el)) === null || _a === void 0 ? void 0 : _a.cancel();\n }\n if (preExisting && isMounted) {\n remain(el);\n }\n else if (preExisting && !isMounted) {\n remove(el);\n }\n else {\n add(el);\n }\n}\n/**\n * Removes all non-digits from a string and casts to a number.\n * @param str - A string containing a pixel value.\n * @returns\n */\nfunction raw(str) {\n return Number(str.replace(/[^0-9.\\-]/g, \"\"));\n}\n/**\n * Get the coordinates of elements adjusted for scroll position.\n * @param el - Element\n * @returns\n */\nfunction getCoords(el) {\n const rect = el.getBoundingClientRect();\n return {\n top: rect.top + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n height: rect.height,\n };\n}\n/**\n * Returns the width/height that the element should be transitioned between.\n * This takes into account box-sizing.\n * @param el - Element being animated\n * @param oldCoords - Old set of Coordinates coordinates\n * @param newCoords - New set of Coordinates coordinates\n * @returns\n */\nfunction getTransitionSizes(el, oldCoords, newCoords) {\n let widthFrom = oldCoords.width;\n let heightFrom = oldCoords.height;\n let widthTo = newCoords.width;\n let heightTo = newCoords.height;\n const styles = getComputedStyle(el);\n const sizing = styles.getPropertyValue(\"box-sizing\");\n if (sizing === \"content-box\") {\n const paddingY = raw(styles.paddingTop) +\n raw(styles.paddingBottom) +\n raw(styles.borderTopWidth) +\n raw(styles.borderBottomWidth);\n const paddingX = raw(styles.paddingLeft) +\n raw(styles.paddingRight) +\n raw(styles.borderRightWidth) +\n raw(styles.borderLeftWidth);\n widthFrom -= paddingX;\n widthTo -= paddingX;\n heightFrom -= paddingY;\n heightTo -= paddingY;\n }\n return [widthFrom, widthTo, heightFrom, heightTo].map(Math.round);\n}\n/**\n * Retrieves animation options for the current element.\n * @param el - Element to retrieve options for.\n * @returns\n */\nfunction getOptions(el) {\n return TGT in el && options.has(el[TGT])\n ? options.get(el[TGT])\n : { duration: 250, easing: \"ease-in-out\" };\n}\n/**\n * Returns the target of a given animation (generally the parent).\n * @param el - An element to check for a target\n * @returns\n */\nfunction getTarget(el) {\n if (TGT in el)\n return el[TGT];\n return undefined;\n}\n/**\n * Checks if animations are enabled or disabled for a given element.\n * @param el - Any element\n * @returns\n */\nfunction isEnabled(el) {\n const target = getTarget(el);\n return target ? enabled.has(target) : false;\n}\n/**\n * Iterate over the children of a given parent.\n * @param parent - A parent element\n * @param callback - A callback\n */\nfunction forEach(parent, ...callbacks) {\n callbacks.forEach((callback) => callback(parent, options.has(parent)));\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children.item(i);\n if (child) {\n callbacks.forEach((callback) => callback(child, options.has(child)));\n }\n }\n}\n/**\n * The element in question is remaining in the DOM.\n * @param el - Element to flip\n * @returns\n */\nfunction remain(el) {\n const oldCoords = coords.get(el);\n const newCoords = getCoords(el);\n if (!isEnabled(el))\n return coords.set(el, newCoords);\n let animation;\n if (!oldCoords)\n return;\n const pluginOrOptions = getOptions(el);\n if (typeof pluginOrOptions !== \"function\") {\n const deltaX = oldCoords.left - newCoords.left;\n const deltaY = oldCoords.top - newCoords.top;\n const [widthFrom, widthTo, heightFrom, heightTo] = getTransitionSizes(el, oldCoords, newCoords);\n const start = {\n transform: `translate(${deltaX}px, ${deltaY}px)`,\n };\n const end = {\n transform: `translate(0, 0)`,\n };\n if (widthFrom !== widthTo) {\n start.width = `${widthFrom}px`;\n end.width = `${widthTo}px`;\n }\n if (heightFrom !== heightTo) {\n start.height = `${heightFrom}px`;\n end.height = `${heightTo}px`;\n }\n animation = el.animate([start, end], {\n duration: pluginOrOptions.duration,\n easing: pluginOrOptions.easing,\n });\n }\n else {\n animation = new Animation(pluginOrOptions(el, \"remain\", oldCoords, newCoords));\n animation.play();\n }\n animations.set(el, animation);\n coords.set(el, newCoords);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Adds the element with a transition.\n * @param el - Animates the element being added.\n */\nfunction add(el) {\n const newCoords = getCoords(el);\n coords.set(el, newCoords);\n const pluginOrOptions = getOptions(el);\n if (!isEnabled(el))\n return;\n let animation;\n if (typeof pluginOrOptions !== \"function\") {\n animation = el.animate([\n { transform: \"scale(.98)\", opacity: 0 },\n { transform: \"scale(0.98)\", opacity: 0, offset: 0.5 },\n { transform: \"scale(1)\", opacity: 1 },\n ], {\n duration: pluginOrOptions.duration * 1.5,\n easing: \"ease-in\",\n });\n }\n else {\n animation = new Animation(pluginOrOptions(el, \"add\", newCoords));\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Animates the removal of an element.\n * @param el - Element to remove\n */\nfunction remove(el) {\n var _a;\n if (!siblings.has(el) || !coords.has(el))\n return;\n const [prev, next] = siblings.get(el);\n Object.defineProperty(el, DEL, { value: true });\n if (next && next.parentNode && next.parentNode instanceof Element) {\n next.parentNode.insertBefore(el, next);\n }\n else if (prev && prev.parentNode) {\n prev.parentNode.appendChild(el);\n }\n else {\n (_a = getTarget(el)) === null || _a === void 0 ? void 0 : _a.appendChild(el);\n }\n function cleanUp() {\n var _a;\n el.remove();\n coords.delete(el);\n siblings.delete(el);\n animations.delete(el);\n (_a = intersections.get(el)) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n if (!isEnabled(el))\n return cleanUp();\n const [top, left, width, height] = deletePosition(el);\n const optionsOrPlugin = getOptions(el);\n const oldCoords = coords.get(el);\n let animation;\n Object.assign(el.style, {\n position: \"absolute\",\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n margin: 0,\n pointerEvents: \"none\",\n transformOrigin: \"center\",\n zIndex: 100,\n });\n if (typeof optionsOrPlugin !== \"function\") {\n animation = el.animate([\n {\n transform: \"scale(1)\",\n opacity: 1,\n },\n {\n transform: \"scale(.98)\",\n opacity: 0,\n },\n ], { duration: optionsOrPlugin.duration, easing: \"ease-out\" });\n }\n else {\n animation = new Animation(optionsOrPlugin(el, \"remove\", oldCoords));\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", cleanUp);\n}\nfunction deletePosition(el) {\n const oldCoords = coords.get(el);\n const [width, , height] = getTransitionSizes(el, oldCoords, getCoords(el));\n let offsetParent = el.parentElement;\n while (offsetParent &&\n (getComputedStyle(offsetParent).position === \"static\" ||\n offsetParent instanceof HTMLBodyElement)) {\n offsetParent = offsetParent.parentElement;\n }\n if (!offsetParent)\n offsetParent = document.body;\n const parentStyles = getComputedStyle(offsetParent);\n const parentCoords = coords.get(offsetParent) || getCoords(offsetParent);\n const top = Math.round(oldCoords.top - parentCoords.top) -\n raw(parentStyles.borderTopWidth);\n const left = Math.round(oldCoords.left - parentCoords.left) -\n raw(parentStyles.borderLeftWidth);\n return [top, left, width, height];\n}\n/**\n * A function that automatically adds animation effects to itself and its\n * immediate children. Specifically it adds effects for adding, moving, and\n * removing DOM elements.\n * @param el - A parent element to add animations to.\n * @param options - An optional object of options.\n */\nfunction autoAnimate(el, config = {}) {\n if (mutations && resize) {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const isDisabledDueToReduceMotion = mediaQuery.matches &&\n typeof config !== \"function\" &&\n !config.disrespectUserMotionPreference;\n if (!isDisabledDueToReduceMotion) {\n enabled.add(el);\n if (getComputedStyle(el).position === \"static\") {\n Object.assign(el.style, { position: \"relative\" });\n }\n forEach(el, updatePos, poll, (element) => resize === null || resize === void 0 ? void 0 : resize.observe(element));\n if (typeof config === \"function\") {\n options.set(el, config);\n }\n else {\n options.set(el, { duration: 250, easing: \"ease-in-out\", ...config });\n }\n mutations.observe(el, { childList: true });\n parents.add(el);\n }\n }\n return Object.freeze({\n parent: el,\n enable: () => {\n enabled.add(el);\n },\n disable: () => {\n enabled.delete(el);\n },\n isEnabled: () => enabled.has(el),\n });\n}\n/**\n * The vue directive.\n */\nconst vAutoAnimate = {\n mounted: (el, binding) => {\n autoAnimate(el, binding.value || {});\n },\n};\n\nexport { autoAnimate as default, getTransitionSizes, vAutoAnimate };\n","import autoAnimate from '@formkit/auto-animate';\n\nlet autoAnimateConfig = {};\n\nfunction AutoAnimate(Alpine) {\n Alpine.directive('auto-animate', (el, { expression, modifiers }, { evaluateLater, effect }) => {\n let config = {};\n const durationModifier = modifiers.filter((modifier) => modifier.match(/^\\d+m?s$/))[0] || null;\n if (durationModifier) {\n const inMilliseconds = !!durationModifier.match(/ms$/);\n const matchedDuration = + durationModifier.match(/^\\d+/);\n config.duration = matchedDuration * (inMilliseconds ? 1 : 1000);\n }\n const easingModifier = modifiers.filter((modifier) => !modifier.match(/^\\d+m?s$/))[0] || null;\n if (easingModifier) {\n config.easing = easingModifier;\n }\n const controller = autoAnimate(el, { ...autoAnimateConfig, ...config });\n if (expression) {\n const isEnabled = evaluateLater(expression);\n effect(() => {\n isEnabled((enabled) => {\n if (enabled) {\n controller.enable();\n } else {\n controller.disable();\n }\n });\n })\n }\n });\n}\n\nAutoAnimate.configure = (config) => {\n autoAnimateConfig = config;\n};\n\nexport default AutoAnimate;\n","import AutoAnimate from \"../src/index.js\";\n\ndocument.addEventListener('alpine:init', () => {\n AutoAnimate(window.Alpine);\n});\n"],"names":["parents","Set","coords","WeakMap","siblings","animations","intersections","intervals","options","debounces","enabled","WeakSet","root","TGT","DEL","handleMutations","mutations","elements","reduce","mutation","target","Element","has","add","i","children","length","child","item","removedNodes","set","previousSibling","nextSibling","getElements","forEach","el","_a","isMounted","contains","preExisting","delete","get","cancel","oldCoords","newCoords","getCoords","isEnabled","animation","pluginOrOptions","getOptions","deltaX","left","deltaY","top","widthFrom","widthTo","heightFrom","heightTo","getTransitionSizes","start","transform","end","width","height","animate","duration","easing","Animation","play","addEventListener","updatePos","bind","remain","prev","next","Object","defineProperty","value","parentNode","insertBefore","appendChild","getTarget","cleanUp","remove","disconnect","offsetParent","parentElement","getComputedStyle","position","HTMLBodyElement","document","body","parentStyles","parentCoords","Math","round","raw","borderTopWidth","borderLeftWidth","deletePosition","optionsOrPlugin","assign","style","margin","pointerEvents","transformOrigin","zIndex","opacity","offset","handleResizes","entries","entry","clearTimeout","setTimeout","parent","lowPriority","delay","async","currentAnimation","finished","oldObserver","rect","invocations","offsetWidth","offsetHeight","rootMargin","map","px","floor","join","observer","IntersectionObserver","threshold","observe","observePosition","poll","setInterval","random","callback","requestIdleCallback","requestAnimationFrame","resize","str","Number","replace","getBoundingClientRect","window","scrollY","scrollX","styles","getPropertyValue","paddingY","paddingTop","paddingBottom","borderBottomWidth","paddingX","paddingLeft","paddingRight","borderRightWidth","callbacks","documentElement","MutationObserver","ResizeObserver","autoAnimateConfig","AutoAnimate","Alpine","directive","expression","modifiers","evaluateLater","effect","config","durationModifier","filter","modifier","match","inMilliseconds","matchedDuration","easingModifier","controller","matchMedia","matches","disrespectUserMotionPreference","element","childList","freeze","enable","disable","autoAnimate","configure"],"mappings":"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"}
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 | Alpine Auto Animate Examples
9 |
10 |
30 |
31 |
32 |
33 |
34 |
35 |