react-ui-animate 5.2.0 → 5.3.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +651 -114
  2. package/dist/index.d.ts +651 -5
  3. package/dist/index.mjs +1 -0
  4. package/package.json +34 -24
  5. package/dist/animation/Config.d.ts +0 -63
  6. package/dist/animation/descriptors.d.ts +0 -7
  7. package/dist/animation/drivers.d.ts +0 -4
  8. package/dist/animation/helpers.d.ts +0 -3
  9. package/dist/animation/hooks/index.d.ts +0 -2
  10. package/dist/animation/hooks/useMount.d.ts +0 -16
  11. package/dist/animation/hooks/useValue.d.ts +0 -9
  12. package/dist/animation/index.d.ts +0 -5
  13. package/dist/animation/modules/Mount.d.ts +0 -17
  14. package/dist/animation/modules/index.d.ts +0 -1
  15. package/dist/animation/to.d.ts +0 -2
  16. package/dist/animation/types.d.ts +0 -42
  17. package/dist/gestures/controllers/DragGesture.d.ts +0 -47
  18. package/dist/gestures/controllers/Gesture.d.ts +0 -13
  19. package/dist/gestures/controllers/MoveGesture.d.ts +0 -30
  20. package/dist/gestures/controllers/ScrollGesture.d.ts +0 -29
  21. package/dist/gestures/controllers/WheelGesture.d.ts +0 -28
  22. package/dist/gestures/hooks/index.d.ts +0 -4
  23. package/dist/gestures/hooks/useDrag.d.ts +0 -5
  24. package/dist/gestures/hooks/useMove.d.ts +0 -8
  25. package/dist/gestures/hooks/useRecognizer.d.ts +0 -13
  26. package/dist/gestures/hooks/useScroll.d.ts +0 -11
  27. package/dist/gestures/hooks/useWheel.d.ts +0 -8
  28. package/dist/hooks/events/useOutsideClick.d.ts +0 -2
  29. package/dist/hooks/index.d.ts +0 -2
  30. package/dist/hooks/observers/useInView.d.ts +0 -5
  31. package/dist/hooks/observers/useScrollProgress.d.ts +0 -23
  32. package/dist/index.js +0 -2
  33. package/dist/index.js.map +0 -1
  34. package/dist/utils/index.d.ts +0 -4
@@ -1,8 +0,0 @@
1
- import { RefObject } from 'react';
2
- import { type WheelEvent } from '../controllers/WheelGesture';
3
- export declare function useWheel(refs: Window, onWheel: (e: WheelEvent & {
4
- index: 0;
5
- }) => void): void;
6
- export declare function useWheel<T extends HTMLElement>(refs: RefObject<T> | Array<RefObject<T>>, onWheel: (e: WheelEvent & {
7
- index: number;
8
- }) => void): void;
@@ -1,2 +0,0 @@
1
- import { RefObject, DependencyList } from 'react';
2
- export declare function useOutsideClick(ref: RefObject<HTMLElement>, callback: (event: MouseEvent | TouchEvent) => void, deps?: DependencyList): void;
@@ -1,2 +0,0 @@
1
- export { useOutsideClick } from './events/useOutsideClick';
2
- export { useInView } from './observers/useInView';
@@ -1,5 +0,0 @@
1
- import { RefObject } from 'react';
2
- export interface UseInViewOptions extends IntersectionObserverInit {
3
- once?: boolean;
4
- }
5
- export declare function useInView(ref: RefObject<Element>, options?: UseInViewOptions): boolean;
@@ -1,23 +0,0 @@
1
- import { RefObject } from 'react';
2
- import { MotionValue } from '@raidipesh78/re-motion';
3
- import { type Descriptor } from '../../animation/types';
4
- type SupportedEdgeUnit = 'px' | 'vw' | 'vh' | '%';
5
- type EdgeUnit = `${number}${SupportedEdgeUnit}`;
6
- type NamedEdges = 'start' | 'end' | 'center';
7
- type EdgeString = NamedEdges | EdgeUnit | `${number}`;
8
- type Edge = EdgeString | number;
9
- type ProgressIntersection = [number, number];
10
- type Intersection = `${Edge} ${Edge}`;
11
- type ScrollOffset = Array<Edge | Intersection | ProgressIntersection>;
12
- export interface UseScrollProgressOptions {
13
- target?: RefObject<HTMLElement>;
14
- axis?: 'x' | 'y';
15
- offset?: ScrollOffset;
16
- animate?: boolean;
17
- toDescriptor?: (t: number) => Descriptor;
18
- }
19
- export declare function useScrollProgress(refs: Window | RefObject<HTMLElement>, { target, axis, offset, animate, toDescriptor, }?: UseScrollProgressOptions): {
20
- scrollYProgress: MotionValue<number>;
21
- scrollXProgress: MotionValue<number>;
22
- };
23
- export {};
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- var t=require("@raidipesh78/re-motion"),e=require("react"),n=require("react/jsx-runtime"),o=function(t,e){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},o(t,e)};function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var r=function(){return r=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},r.apply(this,arguments)};function s(t,e){var n={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(o=Object.getOwnPropertySymbols(t);i<o.length;i++)e.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(t,o[i])&&(n[o[i]]=t[o[i]])}return n}function a(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,i,r=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=r.next()).done;)s.push(o.value)}catch(t){i={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function u(t,e,n){if(n||2===arguments.length)for(var o,i=0,r=e.length;i<r;i++)!o&&i in e||(o||(o=Array.prototype.slice.call(e,0,i)),o[i]=e[i]);return t.concat(o||Array.prototype.slice.call(e))}function c(t,e){return void 0===t&&(t={}),e?t:(t.onStart,t.onChange,t.onComplete,s(t,["onStart","onChange","onComplete"]))}function l(t){return"object"==typeof t&&null!==t&&"type"in t&&"string"==typeof t.type}function f(e,n){var o,i,r,s,a,u,c=n.type,l=n.to,v=n.options,p=void 0===v?{}:v;switch(c){case"spring":return t.spring(e,l,p);case"timing":return t.timing(e,l,p);case"decay":return t.decay(e,null!==(o=p.velocity)&&void 0!==o?o:0,p);case"delay":return t.delay(null!==(i=p.delay)&&void 0!==i?i:0);case"sequence":var d=(null!==(r=p.animations)&&void 0!==r?r:[]).map((function(t){return f(e,t)}));return t.sequence(d,p);case"loop":var h=p.animation;if(!h)return console.warn("[buildAnimation] loop missing `animation` descriptor"),{start:function(){},pause:function(){},resume:function(){},cancel:function(){},reset:function(){}};var m="sequence"===h.type?t.sequence((null!==(a=null===(s=h.options)||void 0===s?void 0:s.animations)&&void 0!==a?a:[]).map((function(t){return f(e,t)})),h.options):f(e,h);return t.loop(m,null!==(u=p.iterations)&&void 0!==u?u:0,p);default:return console.warn("Unsupported animation type: ".concat(c)),{start:function(){},pause:function(){},resume:function(){},cancel:function(){},reset:function(){}}}}function v(e,n){var o=Object.entries(e).filter((function(t){var e=a(t,1)[0];return"decay"===n.type||"delay"===n.type||void 0!==n.to[e]})).map((function(t,e){var o=a(t,2),i=o[0];return f(o[1],{type:n.type,to:"decay"===n.type||"delay"===n.type?n.to:n.to[i],options:c(n.options,0===e)})}));return t.parallel(o)}function p(n){var o=e.useRef(null),i=e.useMemo((function(){return Array.isArray(n)?n.map((function(e){return new t.MotionValue(e)})):"object"==typeof n?Object.fromEntries(Object.entries(n).map((function(e){var n=a(e,2),o=n[0],i=n[1];return[o,new t.MotionValue(i)]}))):new t.MotionValue(n)}),[]);return[i,function(e){var s=null;s=Array.isArray(n)?function(e,n){var o,i;if(!l(n))return n.forEach((function(t,n){var o;null===(o=e[n])||void 0===o||o.set(t)})),null;var s=n,a=Object.fromEntries(e.map((function(t,e){return[e.toString(),t]})));switch(s.type){case"sequence":var u=s.options.animations.map((function(e){var n,o;return"delay"===e.type?t.delay(null!==(o=null===(n=e.options)||void 0===n?void 0:n.delay)&&void 0!==o?o:0):v(a,r(r({},e),{to:Array.isArray(e.to)?Object.fromEntries(e.to.map((function(t,e){return[e.toString(),t]}))):e.to}))}));return t.sequence(u,s.options);case"loop":var f=s.options.animation;if("sequence"===f.type){var p=f.options.animations.map((function(t){return v(a,r(r({},t),{to:Array.isArray(t.to)?Object.fromEntries(t.to.map((function(t,e){return[e.toString(),t]}))):t.to}))})),d=t.sequence(p,c(f.options,!0));return t.loop(d,null!==(o=s.options.iterations)&&void 0!==o?o:0,c(s.options,!0))}var h=v(a,f);return t.loop(h,null!==(i=s.options.iterations)&&void 0!==i?i:0,c(s.options,!0));default:return v(a,s)}}(i,e):"object"==typeof n?function(e,n){var o,i;if(l(n))switch(n.type){case"sequence":var r=n.options.animations.map((function(n){var o;return"delay"===n.type?t.delay(null!==(o=n.options.delay)&&void 0!==o?o:0):v(e,n)}));return t.sequence(r,n.options);case"loop":var s=n.options.animation;if("sequence"===s.type){r=s.options.animations.map((function(t){return v(e,t)}));return t.loop(t.sequence(r,c(s.options,!0)),null!==(o=n.options.iterations)&&void 0!==o?o:0,c(n.options,!0))}return t.loop(v(e,s),null!==(i=n.options.iterations)&&void 0!==i?i:0,c(n.options,!0));default:return v(e,n)}return Object.entries(n).forEach((function(t){var n,o=a(t,2),i=o[0],r=o[1];null===(n=e[i])||void 0===n||n.set(r)})),null}(i,e):function(e,n){var o,i,r,s,a,u,c,l,v;if("number"==typeof n||"string"==typeof n)return e.set(n),null;if("sequence"===n.type){var p=(null!==(i=null===(o=n.options)||void 0===o?void 0:o.animations)&&void 0!==i?i:[]).map((function(t){return f(e,t)}));return t.sequence(p,n.options)}if("loop"===n.type){var d=null===(r=n.options)||void 0===r?void 0:r.animation;if(!d)return null;if("sequence"===d.type){p=(null!==(a=null===(s=d.options)||void 0===s?void 0:s.animations)&&void 0!==a?a:[]).map((function(t){return f(e,t)}));return t.loop(t.sequence(p),null!==(c=null===(u=n.options)||void 0===u?void 0:u.iterations)&&void 0!==c?c:0,n.options)}return t.loop(f(e,d),null!==(v=null===(l=n.options)||void 0===l?void 0:l.iterations)&&void 0!==v?v:0,n.options)}return f(e,n)}(i,e),o.current=s,s&&s.start()},{start:function(){var t;return null===(t=o.current)||void 0===t?void 0:t.start()},pause:function(){var t;return null===(t=o.current)||void 0===t?void 0:t.pause()},resume:function(){var t;return null===(t=o.current)||void 0===t?void 0:t.resume()},cancel:function(){var t;return null===(t=o.current)||void 0===t?void 0:t.cancel()},reset:function(){var t;return null===(t=o.current)||void 0===t?void 0:t.reset()}}]}"function"==typeof SuppressedError&&SuppressedError;var d={Timing:{BOUNCE:{duration:500,easing:t.Easing.bounce},EASE_IN:{duration:500,easing:t.Easing.in(t.Easing.ease)},EASE_OUT:{duration:500,easing:t.Easing.out(t.Easing.ease)},EASE_IN_OUT:{duration:500,easing:t.Easing.inOut(t.Easing.ease)},POWER1:{duration:500,easing:t.Easing.bezier(.17,.42,.51,.97)},POWER2:{duration:500,easing:t.Easing.bezier(.07,.11,.13,1)},POWER3:{duration:500,easing:t.Easing.bezier(.09,.7,.16,1.04)},POWER4:{duration:500,easing:t.Easing.bezier(.05,.54,0,1.03)},LINEAR:{duration:500,easing:t.Easing.linear}},Spring:{ELASTIC:{mass:1,damping:18,stiffness:250},EASE:{mass:1,damping:20,stiffness:158},STIFF:{mass:1,damping:18,stiffness:350},WOBBLE:{mass:1,damping:8,stiffness:250}}},h=function(t,e){var n,o,i;return{type:"spring",to:t,options:{stiffness:null!==(n=null==e?void 0:e.stiffness)&&void 0!==n?n:d.Spring.EASE.stiffness,damping:null!==(o=null==e?void 0:e.damping)&&void 0!==o?o:d.Spring.EASE.damping,mass:null!==(i=null==e?void 0:e.mass)&&void 0!==i?i:d.Spring.EASE.mass,onStart:null==e?void 0:e.onStart,onChange:null==e?void 0:e.onChange,onComplete:null==e?void 0:e.onComplete}}};function m(t,n){void 0===n&&(n={});var o=n,i=o.from,s=void 0===i?0:i,u=o.enter,c=void 0===u?1:u,f=o.exit,v=void 0===f?0:f,d=a(e.useState(t),2),m=d[0],y=d[1],E=e.useRef(!0),g=a(p(s),2),w=g[0],x=g[1],T=e.useMemo((function(){return l(c)?c:h(c)}),[c]),L=e.useMemo((function(){return l(v)?r(r({},v),{options:r(r({},v.options),{onComplete:function(){var t,e;null===(e=null===(t=v.options)||void 0===t?void 0:t.onComplete)||void 0===e||e.call(t),y(!1)}})}):h(v,{onComplete:function(){return y(!1)}})}),[v]);return e.useEffect((function(){if(E.current)return E.current=!1,void(t&&(y(!0),queueMicrotask((function(){return x(T)}))));t?(y(!0),queueMicrotask((function(){return x(T)}))):queueMicrotask((function(){return x(L)}))}),[t]),function(t){return t(w,m)}}function y(t,e,n){return Math.min(Math.max(t,e),n)}function E(t,e,n){return 0===e||Math.abs(e)===1/0?function(t,e){return Math.pow(t,5*e)}(t,n):t*e*n/(e+n*t)}var g=function(){function t(){this.changeListeners=new Set,this.endListeners=new Set}return t.prototype.onChange=function(t){return this.changeListeners.add(t),this},t.prototype.onEnd=function(t){return this.endListeners.add(t),this},t.prototype.emitChange=function(t){this.changeListeners.forEach((function(e){return e(t)}))},t.prototype.emitEnd=function(t){this.endListeners.forEach((function(e){return e(t)}))},t.VELOCITY_LIMIT=20,t}(),w=function(t){function e(e){void 0===e&&(e={});var n=t.call(this)||this;return n.prev={x:0,y:0},n.lastTime=0,n.movement={x:0,y:0},n.velocity={x:0,y:0},n.start={x:0,y:0},n.offset={x:0,y:0},n.pointerCaptured=!1,n.activePointerId=null,n.attachedEls=new Set,n.activeEl=null,n.pointerDownPos={x:0,y:0},n.thresholdPassed=!1,n.config=e,n}return i(e,t),e.prototype.attach=function(t){var e=this;if(t===window)return function(){};var n=Array.isArray(t)?t:[t],o=this.onDown.bind(this),i=this.onMove.bind(this),r=this.onUp.bind(this);return n.forEach((function(t){e.attachedEls.add(t),t.addEventListener("pointerdown",o,{passive:!1})})),window.addEventListener("pointermove",i,{passive:!1}),window.addEventListener("pointerup",r),window.addEventListener("pointercancel",r),function(){n.forEach((function(t){t.removeEventListener("pointerdown",o),e.attachedEls.delete(t)})),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",r),window.removeEventListener("pointercancel",r)}},e.prototype.onDown=function(t){var e,n,o;if(0===t.button){var i=t.currentTarget;this.attachedEls.has(i)&&(this.activeEl=i,this.activePointerId=t.pointerId,this.pointerCaptured=!1,this.start=!1===this.thresholdPassed&&0===this.start.x&&0===this.start.y?null!==(o=null===(n=(e=this.config).initial)||void 0===n?void 0:n.call(e))&&void 0!==o?o:{x:0,y:0}:r({},this.offset),this.offset=r({},this.start),this.movement={x:0,y:0},this.velocity={x:0,y:0},this.pointerDownPos={x:t.clientX,y:t.clientY},this.thresholdPassed=!1,this.prev={x:t.clientX,y:t.clientY},this.lastTime=t.timeStamp,this.emitChange({down:!0,movement:{x:0,y:0},offset:r({},this.offset),velocity:{x:0,y:0},event:t,cancel:this.cancel.bind(this)}))}},e.prototype.onMove=function(t){var e;if(this.activePointerId===t.pointerId&&this.activeEl){var n=null!==(e=this.config.threshold)&&void 0!==e?e:0;if(!this.thresholdPassed){var o=t.clientX-this.pointerDownPos.x,i=t.clientY-this.pointerDownPos.y;if(Math.hypot(o,i)<n)return;this.thresholdPassed=!0,this.activeEl.setPointerCapture(t.pointerId),this.pointerCaptured=!0}this.pointerCaptured&&t.preventDefault();var s=Math.max((t.timeStamp-this.lastTime)/1e3,1e-6);this.lastTime=t.timeStamp;var a=(t.clientX-this.prev.x)/s/1e3,u=(t.clientY-this.prev.y)/s/1e3;this.velocity={x:y(a,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT),y:y(u,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT)};var c={x:t.clientX-this.pointerDownPos.x,y:t.clientY-this.pointerDownPos.y};this.movement={x:"y"===this.config.axis?0:c.x,y:"x"===this.config.axis?0:c.y},this.offset={x:this.start.x+this.movement.x,y:this.start.y+this.movement.y},this.prev={x:t.clientX,y:t.clientY},this.emitChange({down:!0,movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:this.cancel.bind(this)})}},e.prototype.onUp=function(t){this.activePointerId===t.pointerId&&this.activeEl&&(this.activeEl.releasePointerCapture(t.pointerId),this.emitEnd({down:!1,movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:this.cancel.bind(this)}),this.activePointerId=null,this.pointerCaptured=!1)},e.prototype.cancel=function(){this.activeEl&&null!==this.activePointerId&&(this.activeEl.releasePointerCapture(this.activePointerId),this.activePointerId=null,this.activeEl=null)},e}(g);function x(t,n,o,i){var s=T(o),a=T(i);if(n!==window){var u=Array.isArray(n)?n:[n],c=e.useRef([]);c.current.length!==u.length&&(c.current=u.map((function(e,n){var o=new t(a.current),i=function(t){return s.current(r(r({},t),{index:n}))};return o.onChange(i).onEnd(i),o}))),e.useEffect((function(){var t=u.map((function(t,e){var n=t.current;return n?c.current[e].attach(n):null})).filter((function(t){return!!t}));return function(){return t.forEach((function(t){return t()}))}}),[u.map((function(t){return t.current}))])}else{var l=e.useRef();if(!l.current){var f=new t(a.current),v=function(t){return s.current(r(r({},t),{index:0}))};f.onChange(v).onEnd(v),l.current=f}e.useEffect((function(){var t=l.current.attach(window);return function(){t()}}),[n])}}function T(t){var n=e.useRef(t);return e.useEffect((function(){n.current=t}),[t]),n}var L=function(t){function e(){var e=t.apply(this,u([],a(arguments),!1))||this;return e.attachedEls=new Set,e.prev={x:0,y:0},e.lastTime=0,e.movement={x:0,y:0},e.offset={x:0,y:0},e.velocity={x:0,y:0},e.startPos=null,e}return i(e,t),e.prototype.attach=function(t){var e=this,n=Array.isArray(t)?t:[t],o=this.onMove.bind(this),i=this.onLeave.bind(this);return n.forEach((function(t){e.attachedEls.add(t),t.addEventListener("pointermove",o,{passive:!1}),t.addEventListener("pointerleave",i)})),function(){n.forEach((function(t){t.removeEventListener("pointermove",o),t.removeEventListener("pointerleave",i),e.attachedEls.delete(t)}))}},e.prototype.cancel=function(){},e.prototype.onMove=function(t){var e=this,n=t.timeStamp;null===this.startPos&&(this.startPos={x:t.clientX,y:t.clientY},this.prev={x:t.clientX,y:t.clientY},this.lastTime=n);var o=Math.max((n-this.lastTime)/1e3,1e-6);this.lastTime=n;var i=t.clientX-this.prev.x,s=t.clientY-this.prev.y;this.prev={x:t.clientX,y:t.clientY},this.movement={x:t.clientX-this.startPos.x,y:t.clientY-this.startPos.y};var a=t.currentTarget,u=a instanceof HTMLElement?a.getBoundingClientRect():{left:0,top:0};this.offset={x:t.clientX-u.left,y:t.clientY-u.top};var c=i/o/1e3,l=s/o/1e3;this.velocity={x:y(c,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT),y:y(l,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT)},this.emitChange({movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:function(){return e.onLeave(t)}})},e.prototype.onLeave=function(t){this.emitEnd({movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:function(){}})},e}(g);var I=function(t){function e(){var e=t.apply(this,u([],a(arguments),!1))||this;return e.attachedEls=new Set,e.movement={x:0,y:0},e.offset={x:0,y:0},e.velocity={x:0,y:0},e.prevScroll={x:0,y:0},e.lastTime=0,e}return i(e,t),e.prototype.attach=function(t){var e=this,n=Array.isArray(t)?t:[t],o=this.onScroll.bind(this);return n.forEach((function(t){e.attachedEls.add(t),t.addEventListener("scroll",o,{passive:!0})})),function(){n.forEach((function(t){t.removeEventListener("scroll",o),e.attachedEls.delete(t)})),null!=e.endTimeout&&(clearTimeout(e.endTimeout),e.endTimeout=void 0)}},e.prototype.cancel=function(){},e.prototype.onScroll=function(t){var e=this,n=Date.now(),o=Math.max((n-this.lastTime)/1e3,1e-6);this.lastTime=n;var i=t.currentTarget,s=i instanceof HTMLElement?i.scrollLeft:window.scrollX,a=i instanceof HTMLElement?i.scrollTop:window.scrollY,u=s-this.prevScroll.x,c=a-this.prevScroll.y;this.prevScroll={x:s,y:a},this.movement={x:u,y:c},this.offset={x:s,y:a};var l=u/o/1e3,f=c/o/1e3;this.velocity={x:y(l,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT),y:y(f,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT)},this.emitChange({movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:function(){null!=e.endTimeout&&clearTimeout(e.endTimeout)}}),null!=this.endTimeout&&clearTimeout(this.endTimeout),this.endTimeout=window.setTimeout((function(){e.emitEnd({movement:r({},e.movement),offset:r({},e.offset),velocity:r({},e.velocity),event:t,cancel:function(){}})}),150)},e}(g);function C(t,n){var o=void 0===n?{}:n,i=o.target,r=o.axis,s=void 0===r?"y":r,u=o.offset,c=void 0===u?["start start","end end"]:u,l=o.animate,f=void 0===l||l,v=o.toDescriptor,d=void 0===v?function(t){return h(t)}:v,m=a(p(0),2),y=m[0],E=m[1],g=a(p(0),2),w=g[0],T=g[1],L=e.useRef([0,0]);return e.useEffect((function(){var e,n=t instanceof Window?window:t.current,o=null!==(e=null==i?void 0:i.current)&&void 0!==e?e:document.documentElement;L.current=function(t,e,n,o){var i=a(t,2),r=i[0],s=i[1];return[M(r,e,n,o),M(s,e,n,o)]}(c,o,n,s)}),[t,i,s,c]),x(I,t,(function(t){var e="y"===s?t.offset.y:t.offset.x,n=a(L.current,2),o=n[0],i=n[1],r=i===o?e<o?0:1:(e-o)/(i-o),u=Math.min(Math.max(r,0),1),c=f?d:function(t){return t};"y"===s?(E(c(u)),T(0)):(T(c(u)),E(0))})),{scrollYProgress:y,scrollXProgress:w}}function b(t,e){return t instanceof HTMLElement?"y"===e?t.clientHeight:t.clientWidth:"y"===e?window.innerHeight:window.innerWidth}function M(t,e,n,o){var i=a(t.trim().split(/\s+/),2),r=i[0],s=i[1],u=void 0===s?r:s;if(n instanceof HTMLElement){var c=e.getBoundingClientRect(),l=n.getBoundingClientRect(),f=function(t,e){return t instanceof HTMLElement?"y"===e?t.scrollTop:t.scrollLeft:"y"===e?window.scrollY:window.scrollX}(n,o),v=("y"===o?c.top-l.top:c.left-l.left)+f,p="y"===o?c.height:c.width,d=b(n,o);return O(r,v,p,d)-O(u,0,d,d)}return S(r,o,e,!1)-S(u,o,window,!0)}function O(t,e,n,o){if("start"===t)return e;if("center"===t)return e+n/2;if("end"===t)return e+n;var i=t.match(/^(-?\d+(?:\.\d+)?)(px|%|vw|vh)?$/);if(!i)throw new Error("Invalid edge marker “".concat(t,"”"));var r=parseFloat(i[1]);switch(i[2]){case"px":return e+r;case"%":return e+r/100*n;case"vw":case"vh":return e+r/100*o;default:return e+r*n}}function S(t,e,n,o){var i=n;return O(t,o?0:function(){if(!(n instanceof HTMLElement))throw new Error("Expected HTMLElement for element-relative edge");var t=n.getBoundingClientRect(),o="y"===e?window.pageYOffset||window.scrollY:window.pageXOffset||window.scrollX;return("y"===e?t.top:t.left)+o}(),o?b(n,e):function(){if(!(n instanceof HTMLElement))throw new Error;var t=n.getBoundingClientRect();return"y"===e?t.height:t.width}(),b(i,e))}var P=function(t){function e(){var e=t.apply(this,u([],a(arguments),!1))||this;return e.attachedEls=new Set,e.movement={x:0,y:0},e.offset={x:0,y:0},e.velocity={x:0,y:0},e.lastTime=0,e}return i(e,t),e.prototype.attach=function(t){var e=this,n=Array.isArray(t)?t:[t],o=this.onWheel.bind(this);return n.forEach((function(t){e.attachedEls.add(t),t.addEventListener("wheel",o,{passive:!1})})),function(){n.forEach((function(t){t.removeEventListener("wheel",o),e.attachedEls.delete(t)})),null!=e.endTimeout&&(clearTimeout(e.endTimeout),e.endTimeout=void 0)}},e.prototype.cancel=function(){},e.prototype.onWheel=function(t){var e=this;t.preventDefault();var n=t.timeStamp,o=Math.max((n-this.lastTime)/1e3,1e-6);this.lastTime=n;var i=t.deltaX,s=t.deltaY;this.movement={x:i,y:s},this.offset.x+=i,this.offset.y+=s;var a=i/o/1e3,u=s/o/1e3;this.velocity={x:y(a,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT),y:y(u,-g.VELOCITY_LIMIT,g.VELOCITY_LIMIT)},this.emitChange({movement:r({},this.movement),offset:r({},this.offset),velocity:r({},this.velocity),event:t,cancel:function(){null!=e.endTimeout&&clearTimeout(e.endTimeout)}}),null!=this.endTimeout&&clearTimeout(this.endTimeout),this.endTimeout=window.setTimeout((function(){e.emitEnd({movement:r({},e.movement),offset:r({},e.offset),velocity:r({},e.velocity),event:t,cancel:function(){}})}),150)},e}(g);Object.defineProperty(exports,"Easing",{enumerable:!0,get:function(){return t.Easing}}),Object.defineProperty(exports,"animate",{enumerable:!0,get:function(){return t.motion}}),Object.defineProperty(exports,"combine",{enumerable:!0,get:function(){return t.combine}}),Object.defineProperty(exports,"makeAnimated",{enumerable:!0,get:function(){return t.makeMotion}}),exports.Config=d,exports.Mount=function(t){var e=t.state,o=t.children,i=m(e,s(t,["state","children"]));return n.jsx(n.Fragment,{children:i((function(t,e){return e&&o(t)}))})},exports.clamp=y,exports.move=function(t,e,n){var o=t[e],i=t.length,r=e-n;if(r>0)return u(u(u(u([],a(t.slice(0,n)),!1),[o],!1),a(t.slice(n,e)),!1),a(t.slice(e+1,i)),!1);if(r<0){var s=n+1;return u(u(u(u([],a(t.slice(0,e)),!1),a(t.slice(e+1,s)),!1),[o],!1),a(t.slice(s,i)),!1)}return t},exports.rubberClamp=function(t,e,n,o){return void 0===o&&(o=.15),0===o?y(t,e,n):t<e?-E(e-t,n-e,o)+e:t>n?+E(t-n,n-e,o)+n:t},exports.snapTo=function(t,e,n){var o=t+.2*e,i=function(t){return Math.abs(t-o)},r=n.map(i),s=Math.min.apply(Math,u([],a(r),!1));return n.reduce((function(t,e){return i(e)===s?e:t}))},exports.to=function(e,n,o,i){return t.to(n,o,i)(e)},exports.useDrag=function(t,e,n){return x(w,t,e,n)},exports.useInView=function(t,n){void 0===n&&(n={});var o=n.root,i=n.rootMargin,r=n.threshold,s=n.once,u=void 0!==s&&s,c=a(e.useState(!1),2),l=c[0],f=c[1];return e.useEffect((function(){var e=t.current;if(e){var n=new IntersectionObserver((function(t){var e=a(t,1)[0];e.isIntersecting?(f(!0),u&&(n.unobserve(e.target),n.disconnect())):u||f(!1)}),{root:null!=o?o:null,rootMargin:i,threshold:r});return n.observe(e),function(){return n.disconnect()}}}),[t,o,i,r,u]),l},exports.useMount=m,exports.useMove=function(t,e){return x(L,t,e)},exports.useOutsideClick=function(t,n,o){void 0===o&&(o=[]);var i=e.useRef(n);e.useEffect((function(){i.current=n}),u([n],a(o),!1)),e.useEffect((function(){function e(e){var n=t.current,o=e.target;n&&o&&o.isConnected&&(n.contains(o)||i.current(e))}return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[t])},exports.useScroll=function(t,e){return"function"==typeof e?x(I,t,e):C(t,e)},exports.useValue=p,exports.useWheel=function(t,e){return x(P,t,e)},exports.withDecay=function(t,e){return{type:"decay",options:{velocity:t,clamp:null==e?void 0:e.clamp,onStart:null==e?void 0:e.onStart,onChange:null==e?void 0:e.onChange,onComplete:null==e?void 0:e.onComplete}}},exports.withDelay=function(t){return{type:"delay",options:{delay:t}}},exports.withLoop=function(t,e,n){return void 0===e&&(e=1/0),{type:"loop",options:{animation:t,iterations:e,onStart:null==n?void 0:n.onStart,onComplete:null==n?void 0:n.onComplete}}},exports.withSequence=function(t,e){return{type:"sequence",options:{animations:t,onStart:null==e?void 0:e.onStart,onComplete:null==e?void 0:e.onComplete}}},exports.withSpring=h,exports.withTiming=function(t,e){return{type:"timing",to:t,options:{duration:null==e?void 0:e.duration,easing:null==e?void 0:e.easing,onStart:null==e?void 0:e.onStart,onChange:null==e?void 0:e.onChange,onComplete:null==e?void 0:e.onComplete}}};
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/animation/helpers.ts","../src/animation/drivers.ts","../src/animation/hooks/useValue.ts","../src/animation/Config.ts","../src/animation/descriptors.ts","../src/animation/hooks/useMount.ts","../src/utils/index.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/gestures/controllers/MoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/hooks/observers/useScrollProgress.ts","../src/gestures/controllers/WheelGesture.ts","../src/animation/modules/Mount.tsx","../src/animation/to.ts","../src/gestures/hooks/useDrag.ts","../src/hooks/observers/useInView.ts","../src/gestures/hooks/useMove.ts","../src/hooks/events/useOutsideClick.ts","../src/gestures/hooks/useScroll.ts","../src/gestures/hooks/useWheel.ts"],"sourcesContent":["import type { Descriptor } from './types';\n\nexport function filterCallbackOptions(\n options: Record<string, any> = {},\n attach: boolean\n) {\n if (attach) return options;\n const { onStart, onChange, onComplete, ...rest } = options;\n return rest;\n}\n\nexport function isDescriptor(x: unknown): x is Descriptor {\n return (\n typeof x === 'object' &&\n x !== null &&\n 'type' in x &&\n typeof (x as any).type === 'string'\n );\n}\n","import {\n decay,\n MotionValue,\n spring,\n timing,\n parallel,\n delay,\n sequence,\n loop,\n} from '@raidipesh78/re-motion';\n\nimport { filterCallbackOptions } from './helpers';\nimport type { Primitive, Descriptor } from './types';\n\nexport function buildAnimation(\n mv: MotionValue<Primitive>,\n { type, to, options = {} }: Descriptor\n): ReturnType<typeof timing> {\n switch (type) {\n case 'spring':\n return spring(mv, to as Primitive, options);\n case 'timing':\n return timing(mv, to as Primitive, options);\n case 'decay':\n return decay(mv as MotionValue<number>, options.velocity ?? 0, options);\n case 'delay':\n return delay(options.delay ?? 0);\n case 'sequence': {\n const animations = options.animations ?? [];\n const ctrls = animations.map((step) => buildAnimation(mv, step));\n return sequence(ctrls, options);\n }\n case 'loop': {\n const innerDesc = options.animation;\n\n if (!innerDesc) {\n console.warn('[buildAnimation] loop missing `animation` descriptor');\n return { start() {}, pause() {}, resume() {}, cancel() {}, reset() {} };\n }\n\n const innerCtrl =\n innerDesc.type === 'sequence'\n ? sequence(\n (innerDesc.options?.animations ?? []).map((s) =>\n buildAnimation(mv, s)\n ),\n innerDesc.options\n )\n : buildAnimation(mv, innerDesc);\n\n return loop(innerCtrl, options.iterations ?? 0, options);\n }\n\n default:\n console.warn(`Unsupported animation type: ${type}`);\n return { start() {}, pause() {}, resume() {}, cancel() {}, reset() {} };\n }\n}\n\nexport function buildParallel(\n mvMap: Record<string, MotionValue<Primitive>>,\n step: Descriptor\n) {\n const entries = Object.entries(mvMap).filter(([key]) => {\n return (\n step.type === 'decay' ||\n step.type === 'delay' ||\n (step.to as Record<string, Primitive>)[key] !== undefined\n );\n });\n\n const ctrls = entries.map(([key, mv], idx) =>\n buildAnimation(mv, {\n type: step.type,\n to:\n step.type === 'decay' || step.type === 'delay'\n ? (step.to as any)\n : (step.to as Record<string, Primitive>)[key],\n options: filterCallbackOptions(step.options, idx === 0),\n })\n );\n\n return parallel(ctrls);\n}\n","import { useMemo, useRef } from 'react';\nimport { delay, sequence, loop, MotionValue } from '@raidipesh78/re-motion';\n\nimport { buildAnimation, buildParallel } from '../drivers';\nimport { filterCallbackOptions, isDescriptor } from '../helpers';\nimport type { Primitive, Descriptor, Controls } from '../types';\n\ntype Widen<T> = T extends number ? number : T extends string ? string : T;\n\ntype ValueReturn<T> = T extends Primitive\n ? MotionValue<Widen<T>>\n : T extends Primitive[]\n ? MotionValue<Widen<Primitive>>[]\n : { [K in keyof T]: MotionValue<Widen<T[K]>> };\n\ntype Base = Primitive | Primitive[] | Record<string, Primitive>;\n\nexport function useValue<T extends Base>(\n initial: T\n): [ValueReturn<T>, (to: Base | Descriptor) => void, Controls] {\n const controllerRef = useRef<Controls | null>(null);\n\n const value = useMemo(() => {\n if (Array.isArray(initial)) {\n return initial.map((v) => new MotionValue(v));\n }\n\n if (typeof initial === 'object') {\n return Object.fromEntries(\n Object.entries(initial).map(([k, v]) => [k, new MotionValue(v)])\n );\n }\n\n return new MotionValue(initial);\n }, []) as ValueReturn<T>;\n\n function set(to: Base | Descriptor) {\n let ctrl: Controls | null = null;\n\n if (Array.isArray(initial)) {\n ctrl = handleArray(\n value as Array<MotionValue<Primitive>>,\n to as Primitive[] | Descriptor\n );\n } else if (typeof initial === 'object') {\n ctrl = handleObject(\n value as Record<string, MotionValue<Primitive>>,\n to as Record<string, Primitive> | Descriptor\n );\n } else {\n ctrl = handlePrimitive(\n value as MotionValue<Primitive>,\n to as Primitive | Descriptor\n );\n }\n\n controllerRef.current = ctrl;\n if (ctrl) ctrl.start();\n }\n\n const controls = {\n start: () => controllerRef.current?.start(),\n pause: () => controllerRef.current?.pause(),\n resume: () => controllerRef.current?.resume(),\n cancel: () => controllerRef.current?.cancel(),\n reset: () => controllerRef.current?.reset(),\n };\n\n return [value, set, controls] as const;\n}\n\nfunction handlePrimitive(\n mv: MotionValue<Primitive>,\n to: Primitive | Descriptor\n) {\n if (typeof to === 'number' || typeof to === 'string') {\n mv.set(to);\n return null;\n }\n\n if (to.type === 'sequence') {\n const animations = to.options?.animations ?? [];\n const ctrls = animations.map((step) => buildAnimation(mv, step));\n return sequence(ctrls, to.options);\n }\n\n if (to.type === 'loop') {\n const animation = to.options?.animation;\n if (!animation) return null;\n\n if (animation.type === 'sequence') {\n const animations = animation.options?.animations ?? [];\n const ctrls = animations.map((step) => buildAnimation(mv, step));\n return loop(sequence(ctrls), to.options?.iterations ?? 0, to.options);\n }\n\n return loop(\n buildAnimation(mv, animation),\n to.options?.iterations ?? 0,\n to.options\n );\n }\n\n return buildAnimation(mv, to);\n}\n\nfunction handleArray(\n mvs: Array<MotionValue<Primitive>>,\n to: Primitive[] | Descriptor\n) {\n if (!isDescriptor(to)) {\n (to as Primitive[]).forEach((val, i) => {\n mvs[i]?.set(val);\n });\n return null;\n }\n\n const desc = to as Descriptor;\n\n const mvsRecord = Object.fromEntries(\n mvs.map((mv, idx) => [idx.toString(), mv])\n ) as Record<string, MotionValue<Primitive>>;\n\n switch (desc.type) {\n case 'sequence': {\n const ctrls = desc.options!.animations!.map((step) =>\n step.type === 'delay'\n ? delay(step.options?.delay ?? 0)\n : buildParallel(mvsRecord, {\n ...step,\n to: Array.isArray(step.to)\n ? Object.fromEntries(\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\n )\n : step.to,\n })\n );\n\n return sequence(ctrls, desc.options);\n }\n\n case 'loop': {\n const inner = desc.options!.animation!;\n\n if (inner.type === 'sequence') {\n const seqCtrls = inner.options!.animations!.map((step) =>\n buildParallel(mvsRecord, {\n ...step,\n to: Array.isArray(step.to)\n ? Object.fromEntries(\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\n )\n : step.to,\n })\n );\n\n const seq = sequence(\n seqCtrls,\n filterCallbackOptions(inner.options, true)\n );\n\n return loop(\n seq,\n desc.options!.iterations ?? 0,\n filterCallbackOptions(desc.options, true)\n );\n }\n\n const par = buildParallel(mvsRecord, inner);\n return loop(\n par,\n desc.options!.iterations ?? 0,\n filterCallbackOptions(desc.options, true)\n );\n }\n\n case 'decay':\n return buildParallel(mvsRecord, desc);\n\n default:\n return buildParallel(mvsRecord, desc);\n }\n}\n\nfunction handleObject(\n mvs: Record<string, MotionValue<Primitive>>,\n to: Record<string, Primitive> | Descriptor\n) {\n if (isDescriptor(to)) {\n switch (to.type) {\n case 'sequence': {\n const ctrls = to.options!.animations!.map((step) =>\n step.type === 'delay'\n ? delay(step.options!.delay ?? 0)\n : buildParallel(mvs, step)\n );\n return sequence(ctrls, to.options);\n }\n\n case 'loop': {\n const inner = to.options!.animation!;\n if (inner.type === 'sequence') {\n const ctrls = inner.options!.animations!.map((s) =>\n buildParallel(mvs, s)\n );\n return loop(\n sequence(ctrls, filterCallbackOptions(inner.options, true)),\n to.options!.iterations ?? 0,\n filterCallbackOptions(to.options, true)\n );\n }\n return loop(\n buildParallel(mvs, inner),\n to.options!.iterations ?? 0,\n filterCallbackOptions(to.options, true)\n );\n }\n\n case 'decay':\n return buildParallel(mvs, to);\n\n default:\n return buildParallel(mvs, to);\n }\n }\n\n Object.entries(to).forEach(([k, v]) => {\n mvs[k]?.set(v);\n });\n\n return null;\n}\n","import { Easing } from '@raidipesh78/re-motion';\n\nexport const Config = {\n Timing: {\n BOUNCE: { duration: 500, easing: Easing.bounce },\n EASE_IN: { duration: 500, easing: Easing.in(Easing.ease) },\n EASE_OUT: { duration: 500, easing: Easing.out(Easing.ease) },\n EASE_IN_OUT: { duration: 500, easing: Easing.inOut(Easing.ease) },\n POWER1: { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) },\n POWER2: { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) },\n POWER3: { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) },\n POWER4: { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) },\n LINEAR: { duration: 500, easing: Easing.linear },\n },\n Spring: {\n ELASTIC: { mass: 1, damping: 18, stiffness: 250 },\n EASE: { mass: 1, damping: 20, stiffness: 158 },\n STIFF: { mass: 1, damping: 18, stiffness: 350 },\n WOBBLE: { mass: 1, damping: 8, stiffness: 250 },\n },\n};\n","import { Config } from './Config';\nimport {\n Callbacks,\n DecayOptions,\n Descriptor,\n SpringOptions,\n TimingOptions,\n} from './types';\n\nexport const withSpring = (\n to: Descriptor['to'],\n opts?: SpringOptions & Callbacks\n): Descriptor => ({\n type: 'spring',\n to,\n options: {\n stiffness: opts?.stiffness ?? Config.Spring.EASE.stiffness,\n damping: opts?.damping ?? Config.Spring.EASE.damping,\n mass: opts?.mass ?? Config.Spring.EASE.mass,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withTiming = (\n to: Descriptor['to'],\n opts?: TimingOptions & Callbacks\n): Descriptor => ({\n type: 'timing',\n to,\n options: {\n duration: opts?.duration,\n easing: opts?.easing,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withDecay = (\n velocity: number,\n opts?: DecayOptions & Callbacks\n): Descriptor => ({\n type: 'decay',\n options: {\n velocity,\n clamp: opts?.clamp,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withDelay = (ms: number): Descriptor => ({\n type: 'delay',\n options: { delay: ms },\n});\n\nexport const withSequence = (\n animations: Descriptor[],\n opts?: Omit<Callbacks, 'onChange'>\n): Descriptor => ({\n type: 'sequence',\n options: {\n animations,\n onStart: opts?.onStart,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withLoop = (\n animation: Descriptor,\n iterations = Infinity,\n opts?: Omit<Callbacks, 'onChange'>\n): Descriptor => ({\n type: 'loop',\n options: {\n animation,\n iterations,\n onStart: opts?.onStart,\n onComplete: opts?.onComplete,\n },\n});\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { MotionValue } from '@raidipesh78/re-motion';\n\nimport { withSpring } from '../descriptors';\nimport { isDescriptor } from '../helpers';\nimport type { Primitive, Descriptor } from '../types';\nimport { useValue } from './useValue';\n\nexport type ConfigSingle<T extends Primitive> = {\n from?: T;\n enter?: T | Descriptor;\n exit?: T | Descriptor;\n};\n\nexport type ConfigMulti<I extends Record<string, Primitive>> = {\n from: I;\n enter?: I | Descriptor;\n exit?: I | Descriptor;\n};\n\nexport function useMount<T extends Primitive = number>(\n isOpen: boolean,\n config?: ConfigSingle<T>\n): (\n fn: (value: MotionValue<T>, mounted: boolean) => React.ReactNode\n) => React.ReactNode;\n\nexport function useMount<I extends Record<string, Primitive>>(\n isOpen: boolean,\n config: ConfigMulti<I>\n): (\n fn: (\n values: { [K in keyof I]: MotionValue<I[K]> },\n mounted: boolean\n ) => React.ReactNode\n) => React.ReactNode;\n\nexport function useMount(\n isOpen: boolean,\n config: any = {}\n): (fn: (values: any, mounted: boolean) => React.ReactNode) => React.ReactNode {\n const { from = 0, enter = 1, exit = 0 } = config as any;\n\n const [mounted, setMounted] = useState(isOpen);\n const initial = useRef(true);\n const [values, setValues] = useValue(from);\n\n const enterDesc = useMemo(\n () => (isDescriptor(enter) ? enter : withSpring(enter)),\n [enter]\n );\n\n const exitDesc = useMemo(() => {\n if (isDescriptor(exit)) {\n return {\n ...exit,\n options: {\n ...exit.options,\n onComplete: () => {\n exit.options?.onComplete?.();\n setMounted(false);\n },\n },\n };\n }\n return withSpring(exit, { onComplete: () => setMounted(false) });\n }, [exit]);\n\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n if (isOpen) {\n setMounted(true);\n queueMicrotask(() => setValues(enterDesc));\n }\n return;\n }\n\n if (isOpen) {\n setMounted(true);\n queueMicrotask(() => setValues(enterDesc));\n } else {\n queueMicrotask(() => setValues(exitDesc));\n }\n }, [isOpen]);\n\n return (fn) => fn(values as any, mounted);\n}\n","export function clamp(value: number, lowerbound: number, upperbound: number) {\n return Math.min(Math.max(value, lowerbound), upperbound);\n}\n\nfunction rubber2(distanceFromEdge: number, constant: number) {\n return Math.pow(distanceFromEdge, constant * 5);\n}\n\nfunction rubber(distanceFromEdge: number, dimension: number, constant: number) {\n if (dimension === 0 || Math.abs(dimension) === Infinity)\n return rubber2(distanceFromEdge, constant);\n return (\n (distanceFromEdge * dimension * constant) /\n (dimension + constant * distanceFromEdge)\n );\n}\n\nexport function rubberClamp(\n value: number,\n lowerbound: number,\n upperbound: number,\n constant: number = 0.15\n) {\n if (constant === 0) return clamp(value, lowerbound, upperbound);\n\n if (value < lowerbound) {\n return (\n -rubber(lowerbound - value, upperbound - lowerbound, constant) +\n lowerbound\n );\n }\n\n if (value > upperbound) {\n return (\n +rubber(value - upperbound, upperbound - lowerbound, constant) +\n upperbound\n );\n }\n\n return value;\n}\n\nexport function snapTo(\n value: number,\n velocity: number,\n snapPoints: Array<number>\n): number {\n const finalValue = value + velocity * 0.2;\n const getDiff = (point: number) => Math.abs(point - finalValue);\n const deltas = snapPoints.map(getDiff);\n const minDelta = Math.min(...deltas);\n\n return snapPoints.reduce(function (acc, point) {\n if (getDiff(point) === minDelta) {\n return point;\n } else {\n return acc;\n }\n });\n}\n\nexport function move(array: Array<any>, moveIndex: number, toIndex: number) {\n const item = array[moveIndex];\n const length = array.length;\n const diff = moveIndex - toIndex;\n\n if (diff > 0) {\n return [\n ...array.slice(0, toIndex),\n item,\n ...array.slice(toIndex, moveIndex),\n ...array.slice(moveIndex + 1, length),\n ];\n } else if (diff < 0) {\n const targetIndex = toIndex + 1;\n return [\n ...array.slice(0, moveIndex),\n ...array.slice(moveIndex + 1, targetIndex),\n item,\n ...array.slice(targetIndex, length),\n ];\n }\n return array;\n}\n","type Listener<E> = (event: E) => void;\n\nexport abstract class Gesture<E> {\n public static readonly VELOCITY_LIMIT = 20;\n\n private changeListeners = new Set<Listener<E>>();\n private endListeners = new Set<Listener<E>>();\n\n onChange(listener: Listener<E>): this {\n this.changeListeners.add(listener);\n return this;\n }\n\n onEnd(listener: Listener<E>): this {\n this.endListeners.add(listener);\n return this;\n }\n\n protected emitChange(event: E): void {\n this.changeListeners.forEach((fn) => fn(event));\n }\n\n protected emitEnd(event: E): void {\n this.endListeners.forEach((fn) => fn(event));\n }\n\n abstract attach(elements: HTMLElement | HTMLElement | Window): () => void;\n\n abstract cancel(): void;\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface DragEvent {\n down: boolean;\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: PointerEvent;\n cancel: () => void;\n}\n\nexport interface DragConfig {\n threshold?: number;\n axis?: 'x' | 'y';\n initial?: () => { x: number; y: number };\n}\n\nexport class DragGesture extends Gesture<DragEvent> {\n private config: DragConfig;\n private prev = { x: 0, y: 0 };\n private lastTime = 0;\n\n private movement = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n private start = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n\n private pointerCaptured = false;\n private activePointerId: number | null = null;\n private attachedEls = new Set<HTMLElement>();\n private activeEl: HTMLElement | null = null;\n private pointerDownPos = { x: 0, y: 0 };\n private thresholdPassed = false;\n\n constructor(config: DragConfig = {}) {\n super();\n this.config = config;\n }\n\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\n if (elements === window) return () => {};\n\n const els = Array.isArray(elements) ? elements : [elements as HTMLElement];\n const down = this.onDown.bind(this);\n const move = this.onMove.bind(this);\n const up = this.onUp.bind(this);\n\n els.forEach((el) => {\n this.attachedEls.add(el);\n el.addEventListener('pointerdown', down, { passive: false });\n });\n\n window.addEventListener('pointermove', move, { passive: false });\n window.addEventListener('pointerup', up);\n window.addEventListener('pointercancel', up);\n\n return () => {\n els.forEach((el) => {\n el.removeEventListener('pointerdown', down);\n this.attachedEls.delete(el);\n });\n\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n window.removeEventListener('pointercancel', up);\n };\n }\n\n private onDown(e: PointerEvent) {\n if (e.button !== 0) return;\n\n const target = e.currentTarget as HTMLElement;\n if (!this.attachedEls.has(target)) return;\n\n this.activeEl = target;\n this.activePointerId = e.pointerId;\n this.pointerCaptured = false;\n\n this.start =\n this.thresholdPassed === false && this.start.x === 0 && this.start.y === 0\n ? this.config.initial?.() ?? { x: 0, y: 0 }\n : { ...this.offset };\n this.offset = { ...this.start };\n this.movement = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n this.pointerDownPos = { x: e.clientX, y: e.clientY };\n this.thresholdPassed = false;\n this.prev = { x: e.clientX, y: e.clientY };\n this.lastTime = e.timeStamp;\n\n this.emitChange({\n down: true,\n movement: { x: 0, y: 0 },\n offset: { ...this.offset },\n velocity: { x: 0, y: 0 },\n event: e,\n cancel: this.cancel.bind(this),\n });\n }\n\n private onMove(e: PointerEvent) {\n if (this.activePointerId !== e.pointerId || !this.activeEl) return;\n\n const threshold = this.config.threshold ?? 0;\n if (!this.thresholdPassed) {\n const dxTotal = e.clientX - this.pointerDownPos.x;\n const dyTotal = e.clientY - this.pointerDownPos.y;\n const dist = Math.hypot(dxTotal, dyTotal);\n if (dist < threshold) return;\n this.thresholdPassed = true;\n\n this.activeEl.setPointerCapture(e.pointerId);\n this.pointerCaptured = true;\n }\n\n if (this.pointerCaptured) {\n e.preventDefault();\n }\n\n const dt = Math.max((e.timeStamp - this.lastTime) / 1000, 1e-6);\n this.lastTime = e.timeStamp;\n const dx = e.clientX - this.prev.x;\n const dy = e.clientY - this.prev.y;\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n const moveRaw = {\n x: e.clientX - this.pointerDownPos.x,\n y: e.clientY - this.pointerDownPos.y,\n };\n this.movement = {\n x: this.config.axis === 'y' ? 0 : moveRaw.x,\n y: this.config.axis === 'x' ? 0 : moveRaw.y,\n };\n\n this.offset = {\n x: this.start.x + this.movement.x,\n y: this.start.y + this.movement.y,\n };\n\n this.prev = { x: e.clientX, y: e.clientY };\n\n this.emitChange({\n down: true,\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: this.cancel.bind(this),\n });\n }\n\n private onUp(e: PointerEvent) {\n if (this.activePointerId !== e.pointerId || !this.activeEl) return;\n this.activeEl.releasePointerCapture(e.pointerId);\n\n this.emitEnd({\n down: false,\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: this.cancel.bind(this),\n });\n\n this.activePointerId = null;\n this.pointerCaptured = false;\n }\n\n cancel() {\n if (this.activeEl && this.activePointerId !== null) {\n this.activeEl.releasePointerCapture(this.activePointerId);\n this.activePointerId = null;\n this.activeEl = null;\n }\n }\n}\n","import { RefObject, useEffect, useRef } from 'react';\n\ninterface GestureInstance<E> {\n onChange(handler: (event: E) => void): this;\n onEnd(handler: (event: E) => void): this;\n attach(target: Window | HTMLElement): () => void;\n}\n\ninterface GestureConstructor<C, E> {\n new (config?: C): GestureInstance<E>;\n}\n\nexport function useRecognizer<T extends HTMLElement, C, E>(\n GestureClass: GestureConstructor<C, E>,\n refs: Window | RefObject<T> | Array<RefObject<T>>,\n onEvent: (e: E & { index: number }) => void,\n config?: C\n) {\n const handlerRef = useLatest(onEvent);\n const configRef = useLatest(config);\n\n if (refs === window) {\n const gestureRef = useRef<GestureInstance<E>>();\n\n if (!gestureRef.current) {\n const g = new GestureClass(configRef.current);\n const handler = (e: E) => handlerRef.current({ ...e, index: 0 });\n g.onChange(handler).onEnd(handler);\n gestureRef.current = g;\n }\n\n useEffect(() => {\n const cleanup = gestureRef.current!.attach(window);\n return () => {\n cleanup();\n };\n }, [refs]);\n\n return;\n }\n\n const list = Array.isArray(refs) ? refs : ([refs] as RefObject<T>[]);\n const gesturesRef = useRef<GestureInstance<E>[]>([]);\n\n if (gesturesRef.current.length !== list.length) {\n gesturesRef.current = list.map((_, i) => {\n const g = new GestureClass(configRef.current);\n const handler = (e: E) => handlerRef.current({ ...e, index: i });\n g.onChange(handler).onEnd(handler);\n return g;\n });\n }\n\n useEffect(() => {\n const cleanups = list\n .map((r, i) => {\n const el = r.current;\n if (!el) return null;\n return gesturesRef.current[i].attach(el);\n })\n .filter((fn): fn is () => void => !!fn);\n\n return () => cleanups.forEach((fn) => fn());\n }, [list.map((r) => r.current)]);\n}\n\nfunction useLatest<T>(value: T) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref as React.MutableRefObject<T>;\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface MoveEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: PointerEvent;\n cancel?: () => void;\n}\n\nexport class MoveGesture extends Gesture<MoveEvent> {\n private attachedEls = new Set<HTMLElement | Window>();\n\n private prev = { x: 0, y: 0 };\n private lastTime = 0;\n\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n private startPos: { x: number; y: number } | null = null;\n\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\n const els = Array.isArray(elements) ? elements : [elements];\n const move = this.onMove.bind(this);\n const leave = this.onLeave.bind(this);\n\n els.forEach((el) => {\n this.attachedEls.add(el);\n el.addEventListener('pointermove', move, { passive: false });\n el.addEventListener('pointerleave', leave);\n });\n\n return () => {\n els.forEach((el) => {\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n this.attachedEls.delete(el);\n });\n };\n }\n\n cancel(): void {}\n\n private onMove(e: PointerEvent) {\n const now = e.timeStamp;\n\n if (this.startPos === null) {\n this.startPos = { x: e.clientX, y: e.clientY };\n this.prev = { x: e.clientX, y: e.clientY };\n this.lastTime = now;\n }\n\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const dx = e.clientX - this.prev.x;\n const dy = e.clientY - this.prev.y;\n this.prev = { x: e.clientX, y: e.clientY };\n\n this.movement = {\n x: e.clientX - this.startPos.x,\n y: e.clientY - this.startPos.y,\n };\n\n const tgt = e.currentTarget as HTMLElement | Window;\n const rect =\n tgt instanceof HTMLElement\n ? tgt.getBoundingClientRect()\n : { left: 0, top: 0 };\n\n this.offset = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n\n const rawVx = dx / dt / 1000;\n const rawVy = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawVx, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawVy, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => this.onLeave(e),\n });\n }\n\n private onLeave(e: PointerEvent) {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface ScrollEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: Event;\n cancel?: () => void;\n}\n\nexport class ScrollGesture extends Gesture<ScrollEvent> {\n private attachedEls = new Set<HTMLElement | Window>();\n\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n\n private prevScroll = { x: 0, y: 0 };\n private lastTime = 0;\n private endTimeout?: number;\n\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\n const els = Array.isArray(elements) ? elements : [elements];\n const scroll = this.onScroll.bind(this);\n\n els.forEach((el) => {\n this.attachedEls.add(el);\n el.addEventListener('scroll', scroll, { passive: true });\n });\n\n return () => {\n els.forEach((el) => {\n el.removeEventListener('scroll', scroll);\n this.attachedEls.delete(el);\n });\n\n if (this.endTimeout != null) {\n clearTimeout(this.endTimeout);\n this.endTimeout = undefined;\n }\n };\n }\n\n cancel(): void {}\n\n private onScroll(e: Event) {\n const now = Date.now();\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const tgt = e.currentTarget as HTMLElement | Window;\n const x = tgt instanceof HTMLElement ? tgt.scrollLeft : window.scrollX;\n const y = tgt instanceof HTMLElement ? tgt.scrollTop : window.scrollY;\n\n const dx = x - this.prevScroll.x;\n const dy = y - this.prevScroll.y;\n this.prevScroll = { x, y };\n\n this.movement = { x: dx, y: dy };\n this.offset = { x, y };\n\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n },\n });\n\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n this.endTimeout = window.setTimeout(() => {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }, 150);\n }\n}\n","import { RefObject, useEffect, useRef } from 'react';\nimport { MotionValue } from '@raidipesh78/re-motion';\n\nimport { useValue, withSpring } from '../../animation';\nimport { ScrollGesture } from '../../gestures/controllers/ScrollGesture';\nimport { useRecognizer } from '../../gestures/hooks/useRecognizer';\nimport { type Descriptor } from '../../animation/types';\n\ntype SupportedEdgeUnit = 'px' | 'vw' | 'vh' | '%';\ntype EdgeUnit = `${number}${SupportedEdgeUnit}`;\ntype NamedEdges = 'start' | 'end' | 'center';\ntype EdgeString = NamedEdges | EdgeUnit | `${number}`;\ntype Edge = EdgeString | number;\ntype ProgressIntersection = [number, number];\ntype Intersection = `${Edge} ${Edge}`;\ntype ScrollOffset = Array<Edge | Intersection | ProgressIntersection>;\n\nexport interface UseScrollProgressOptions {\n target?: RefObject<HTMLElement>;\n axis?: 'x' | 'y';\n offset?: ScrollOffset;\n animate?: boolean;\n toDescriptor?: (t: number) => Descriptor;\n}\n\nexport function useScrollProgress(\n refs: Window | RefObject<HTMLElement>,\n {\n target,\n axis = 'y',\n offset = ['start start', 'end end'],\n animate = true,\n toDescriptor = (v: number) => withSpring(v),\n }: UseScrollProgressOptions = {}\n): {\n scrollYProgress: MotionValue<number>;\n scrollXProgress: MotionValue<number>;\n} {\n const [yProgress, setYProgress] = useValue(0);\n const [xProgress, setXProgress] = useValue(0);\n const rangeRef = useRef<[number, number]>([0, 0]);\n\n useEffect(() => {\n const containerEl =\n refs instanceof Window ? window : (refs.current as HTMLElement);\n const targetEl = target?.current ?? document.documentElement;\n\n rangeRef.current = getScrollRange(\n offset as [Intersection, Intersection],\n targetEl,\n containerEl,\n axis\n );\n }, [refs, target, axis, offset]);\n\n useRecognizer(ScrollGesture, refs, (e) => {\n const pos = axis === 'y' ? e.offset.y : e.offset.x;\n const [start, end] = rangeRef.current;\n\n const raw =\n end === start ? (pos < start ? 0 : 1) : (pos - start) / (end - start);\n\n const t = Math.min(Math.max(raw, 0), 1);\n const apply = animate ? toDescriptor : (v: number) => v;\n\n if (axis === 'y') {\n setYProgress(apply(t));\n setXProgress(0);\n } else {\n setXProgress(apply(t));\n setYProgress(0);\n }\n });\n\n return { scrollYProgress: yProgress, scrollXProgress: xProgress };\n}\n\nfunction getScroll(el: HTMLElement | Window, axis: 'x' | 'y') {\n if (el instanceof HTMLElement) {\n return axis === 'y' ? el.scrollTop : el.scrollLeft;\n }\n return axis === 'y' ? window.scrollY : window.scrollX;\n}\n\nfunction getSize(el: HTMLElement | Window, axis: 'x' | 'y') {\n if (el instanceof HTMLElement) {\n return axis === 'y' ? el.clientHeight : el.clientWidth;\n }\n return axis === 'y' ? window.innerHeight : window.innerWidth;\n}\n\nfunction getScrollRange(\n [startMarker, endMarker]: [Intersection, Intersection],\n targetEl: HTMLElement,\n containerEl: HTMLElement | Window,\n axis: 'x' | 'y'\n): [number, number] {\n return [\n resolveMarker(startMarker, targetEl, containerEl, axis),\n resolveMarker(endMarker, targetEl, containerEl, axis),\n ];\n}\n\nfunction resolveMarker(\n marker: Intersection,\n targetEl: HTMLElement,\n containerEl: HTMLElement | Window,\n axis: 'x' | 'y'\n): number {\n const [tMark, cMark = tMark] = marker.trim().split(/\\s+/) as [\n EdgeString,\n EdgeString\n ];\n\n if (containerEl instanceof HTMLElement) {\n const tRect = targetEl.getBoundingClientRect();\n const cRect = containerEl.getBoundingClientRect();\n const scroll = getScroll(containerEl, axis);\n const elementStart =\n (axis === 'y' ? tRect.top - cRect.top : tRect.left - cRect.left) + scroll;\n const elementSize = axis === 'y' ? tRect.height : tRect.width;\n const containerSize = getSize(containerEl, axis);\n\n const elemPos = resolveEdge(\n tMark,\n elementStart,\n elementSize,\n containerSize\n );\n const contPos = resolveEdge(cMark, 0, containerSize, containerSize);\n return elemPos - contPos;\n } else {\n const elemPos = parseEdgeValue(tMark, axis, targetEl, false);\n const contPos = parseEdgeValue(cMark, axis, window, true);\n return elemPos - contPos;\n }\n}\n\nfunction resolveEdge(\n edge: EdgeString,\n base: number,\n size: number,\n containerSize: number\n): number {\n if (edge === 'start') return base;\n if (edge === 'center') return base + size / 2;\n if (edge === 'end') return base + size;\n\n const m = edge.match(/^(-?\\d+(?:\\.\\d+)?)(px|%|vw|vh)?$/);\n if (!m) throw new Error(`Invalid edge marker “${edge}”`);\n\n const n = parseFloat(m[1]);\n const unit = m[2] as SupportedEdgeUnit | undefined;\n\n switch (unit) {\n case 'px':\n return base + n;\n case '%':\n return base + (n / 100) * size;\n case 'vw':\n return base + (n / 100) * containerSize;\n case 'vh':\n return base + (n / 100) * containerSize;\n default:\n return base + n * size;\n }\n}\n\nfunction parseEdgeValue(\n edge: EdgeString,\n axis: 'x' | 'y',\n el: HTMLElement | Window,\n isContainer: boolean\n): number {\n const scrollTarget = isContainer ? el : (el as HTMLElement);\n const base = isContainer\n ? 0\n : (() => {\n if (!(el instanceof HTMLElement))\n throw new Error('Expected HTMLElement for element-relative edge');\n const rect = el.getBoundingClientRect();\n const pageScroll =\n axis === 'y'\n ? window.pageYOffset || window.scrollY\n : window.pageXOffset || window.scrollX;\n return (axis === 'y' ? rect.top : rect.left) + pageScroll;\n })();\n\n const size = isContainer\n ? getSize(el, axis)\n : (() => {\n if (!(el instanceof HTMLElement)) throw new Error();\n const rect = el.getBoundingClientRect();\n return axis === 'y' ? rect.height : rect.width;\n })();\n\n return resolveEdge(edge, base, size, getSize(scrollTarget, axis));\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface WheelEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: globalThis.WheelEvent;\n cancel?: () => void;\n}\n\nexport class WheelGesture extends Gesture<WheelEvent> {\n private attachedEls = new Set<HTMLElement | Window>();\n\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n\n private lastTime = 0;\n private endTimeout?: number;\n\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\n const els = Array.isArray(elements) ? elements : [elements];\n const wheel = this.onWheel.bind(this);\n\n els.forEach((el) => {\n this.attachedEls.add(el);\n el.addEventListener('wheel', wheel, { passive: false });\n });\n\n return () => {\n els.forEach((el) => {\n el.removeEventListener('wheel', wheel);\n this.attachedEls.delete(el);\n });\n\n if (this.endTimeout != null) {\n clearTimeout(this.endTimeout);\n this.endTimeout = undefined;\n }\n };\n }\n\n cancel(): void {}\n\n private onWheel(e: globalThis.WheelEvent) {\n e.preventDefault();\n\n const now = e.timeStamp;\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const dx = e.deltaX;\n const dy = e.deltaY;\n\n this.movement = { x: dx, y: dy };\n this.offset.x += dx;\n this.offset.y += dy;\n\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n },\n });\n\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n this.endTimeout = window.setTimeout(() => {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }, 150);\n }\n}\n","import { ReactNode } from 'react';\nimport type { MotionValue } from '@raidipesh78/re-motion';\n\nimport type { Primitive } from '../types';\nimport {\n useMount,\n type ConfigMulti,\n type ConfigSingle,\n} from '../hooks/useMount';\n\ninterface MountPropsSingle<T extends Primitive>\n extends Partial<ConfigSingle<T>> {\n state: boolean;\n children: (animation: MotionValue<T>) => ReactNode;\n}\n\ninterface MountPropsMulti<I extends Record<string, Primitive>>\n extends ConfigMulti<I> {\n state: boolean;\n children: (animation: { [K in keyof I]: MotionValue<I[K]> }) => ReactNode;\n}\n\nexport function Mount<T extends Primitive = number>(\n props: MountPropsSingle<T>\n): JSX.Element;\n\nexport function Mount<I extends Record<string, Primitive>>(\n props: MountPropsMulti<I>\n): JSX.Element;\n\nexport function Mount({\n state,\n children,\n ...config\n}: MountPropsSingle<any> | MountPropsMulti<any>) {\n const open = useMount(state, config);\n return (\n <>{open((animation, mounted) => mounted && children(animation as any))}</>\n );\n}\n","import {\n type ExtrapolateConfig,\n to as interpolate,\n} from '@raidipesh78/re-motion';\n\nexport function to(\n input: number,\n inRange: number[],\n outRange: (number | string)[],\n config?: ExtrapolateConfig\n): number | string {\n return interpolate(inRange, outRange, config)(input);\n}\n","import { RefObject } from 'react';\n\nimport {\n type DragConfig,\n type DragEvent,\n DragGesture,\n} from '../controllers/DragGesture';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useDrag<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onDrag: (e: DragEvent & { index: number }) => void,\n config?: DragConfig\n): void {\n return useRecognizer(DragGesture, refs, onDrag, config);\n}\n","import { RefObject, useEffect, useState } from 'react';\n\nexport interface UseInViewOptions extends IntersectionObserverInit {\n once?: boolean;\n}\n\nexport function useInView(\n ref: RefObject<Element>,\n options: UseInViewOptions = {}\n) {\n const { root, rootMargin, threshold, once = false } = options;\n const [isInView, setIsInView] = useState(false);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsInView(true);\n if (once) {\n observer.unobserve(entry.target);\n observer.disconnect();\n }\n } else if (!once) {\n setIsInView(false);\n }\n },\n { root: root ?? null, rootMargin, threshold }\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [ref, root, rootMargin, threshold, once]);\n\n return isInView;\n}\n","import { RefObject } from 'react';\n\nimport { type MoveEvent, MoveGesture } from '../controllers/MoveGesture';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useMove(\n refs: Window,\n onMove: (e: MoveEvent & { index: 0 }) => void\n): void;\n\nexport function useMove<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onMove: (e: MoveEvent & { index: number }) => void\n): void;\n\nexport function useMove(refs: any, onMove: any): void {\n return useRecognizer(MoveGesture, refs, onMove);\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\nexport function useOutsideClick(\n ref: RefObject<HTMLElement>,\n callback: (event: MouseEvent | TouchEvent) => void,\n deps: DependencyList = []\n): void {\n const cbRef = useRef(callback);\n\n useEffect(() => {\n cbRef.current = callback;\n }, [callback, ...deps]);\n\n useEffect(() => {\n function onClick(event: MouseEvent | TouchEvent) {\n const el = ref.current;\n const target = event.target as Node | null;\n\n if (!el || !target || !target.isConnected) return;\n if (!el.contains(target)) {\n cbRef.current(event);\n }\n }\n\n document.addEventListener('mousedown', onClick);\n document.addEventListener('touchstart', onClick);\n\n return () => {\n document.removeEventListener('mousedown', onClick);\n document.removeEventListener('touchstart', onClick);\n };\n }, [ref]);\n}\n","import { RefObject } from 'react';\nimport { MotionValue } from '@raidipesh78/re-motion';\n\nimport { type ScrollEvent, ScrollGesture } from '../controllers/ScrollGesture';\nimport { useRecognizer } from './useRecognizer';\nimport {\n useScrollProgress,\n type UseScrollProgressOptions,\n} from '../../hooks/observers/useScrollProgress';\n\nexport function useScroll<T extends HTMLElement>(\n refs: Window | RefObject<T> | RefObject<T>[],\n onScroll: (e: ScrollEvent & { index: number }) => void\n): void;\n\nexport function useScroll<T extends HTMLElement>(\n refs: Window | RefObject<T> | RefObject<T>[],\n options?: UseScrollProgressOptions\n): {\n scrollYProgress: MotionValue<number>;\n scrollXProgress: MotionValue<number>;\n};\n\nexport function useScroll(\n refs: any,\n arg: any\n): void | {\n scrollYProgress: MotionValue<number>;\n scrollXProgress: MotionValue<number>;\n} {\n if (typeof arg === 'function') {\n return useRecognizer(ScrollGesture, refs, arg);\n }\n\n return useScrollProgress(refs, arg);\n}\n","import { RefObject } from 'react';\n\nimport { type WheelEvent, WheelGesture } from '../controllers/WheelGesture';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useWheel(\n refs: Window,\n onWheel: (e: WheelEvent & { index: 0 }) => void\n): void;\n\nexport function useWheel<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onWheel: (e: WheelEvent & { index: number }) => void\n): void;\n\nexport function useWheel(refs: any, onWheel: any): void {\n return useRecognizer(WheelGesture, refs, onWheel);\n}\n"],"names":["filterCallbackOptions","options","attach","onStart","onChange","isDescriptor","x","type","buildAnimation","mv","_a","to","_h","spring","timing","decay","_b","velocity","delay","_c","ctrls","_d","animations","map","step","sequence","innerDesc","animation","console","warn","start","pause","resume","cancel","reset","innerCtrl","_f","_e","s","loop","_g","iterations","buildParallel","mvMap","Object","entries","filter","key","__read","undefined","idx","parallel","useValue","initial","controllerRef","useRef","value","useMemo","Array","isArray","v","MotionValue","fromEntries","k","ctrl","mvs","forEach","val","i","set","desc","mvsRecord","toString","__assign","inner","seqCtrls","seq","par","handleArray","handleObject","_j","handlePrimitive","current","Config","Timing","BOUNCE","duration","easing","Easing","bounce","EASE_IN","in","ease","EASE_OUT","out","EASE_IN_OUT","inOut","POWER1","bezier","POWER2","POWER3","POWER4","LINEAR","linear","Spring","ELASTIC","mass","damping","stiffness","EASE","STIFF","WOBBLE","withSpring","opts","onComplete","useMount","isOpen","config","from","enter","exit","useState","mounted","setMounted","values","setValues","enterDesc","exitDesc","useEffect","queueMicrotask","fn","clamp","lowerbound","upperbound","Math","min","max","rubber","distanceFromEdge","dimension","constant","abs","Infinity","pow","rubber2","Gesture","this","changeListeners","Set","endListeners","prototype","listener","add","onEnd","emitChange","event","emitEnd","VELOCITY_LIMIT","DragGesture","_super","_this","prev","y","lastTime","movement","offset","pointerCaptured","activePointerId","attachedEls","activeEl","pointerDownPos","thresholdPassed","__extends","elements","window","els","down","onDown","bind","move","onMove","up","onUp","el","addEventListener","passive","removeEventListener","delete","e","button","target","currentTarget","has","pointerId","clientX","clientY","timeStamp","threshold","dxTotal","dyTotal","hypot","setPointerCapture","preventDefault","dt","rawX","rawY","moveRaw","axis","releasePointerCapture","useRecognizer","GestureClass","refs","onEvent","handlerRef","useLatest","configRef","list","gesturesRef","length","_","g","handler","index","cleanups","r","gestureRef_1","cleanup","ref","MoveGesture","startPos","leave","onLeave","now","dx","dy","tgt","rect","HTMLElement","getBoundingClientRect","left","top","rawVx","rawVy","ScrollGesture","prevScroll","scroll","onScroll","endTimeout","clearTimeout","Date","scrollLeft","scrollX","scrollTop","scrollY","setTimeout","useScrollProgress","animate","toDescriptor","yProgress","setYProgress","xProgress","setXProgress","rangeRef","containerEl","Window","targetEl","document","documentElement","startMarker","endMarker","resolveMarker","getScrollRange","pos","end","raw","t","apply","scrollYProgress","scrollXProgress","getSize","clientHeight","clientWidth","innerHeight","innerWidth","marker","trim","split","tMark","cMark","tRect","cRect","scroll_1","getScroll","elementStart","elementSize","height","width","containerSize","resolveEdge","parseEdgeValue","edge","base","size","m","match","Error","n","parseFloat","isContainer","scrollTarget","pageScroll","pageYOffset","pageXOffset","WheelGesture","wheel","onWheel","deltaX","deltaY","state","children","open","__rest","_jsx","array","moveIndex","toIndex","item","diff","__spreadArray","slice","targetIndex","snapPoints","finalValue","getDiff","point","deltas","minDelta","reduce","acc","input","inRange","outRange","interpolate","onDrag","root","rootMargin","once","isInView","setIsInView","observer","IntersectionObserver","entry","isIntersecting","unobserve","disconnect","observe","callback","deps","cbRef","onClick","isConnected","contains","arg","ms"],"mappings":"mhDAEM,SAAUA,EACdC,EACAC,GAEA,YAHA,IAAAD,IAAAA,EAAA,CAAA,GAGIC,EAAeD,GACgCA,EAAOE,QAAPF,EAAOG,SAAPH,eAAAA,EAA7C,CAAA,UAAA,WAAA,eAER,CAEM,SAAUI,EAAaC,GAC3B,MACe,iBAANA,GACD,OAANA,GACA,SAAUA,GACiB,iBAAnBA,EAAUC,IAEtB,CCJM,SAAUC,EACdC,EACAC,mBAAEH,EAAIG,EAAAH,KAAEI,EAAED,EAAAC,GAAEC,YAAAX,OAAO,IAAAW,EAAG,CAAA,EAAEA,EAExB,OAAQL,GACN,IAAK,SACH,OAAOM,SAAOJ,EAAIE,EAAiBV,GACrC,IAAK,SACH,OAAOa,SAAOL,EAAIE,EAAiBV,GACrC,IAAK,QACH,OAAOc,QAAMN,EAA2C,QAAhBO,EAAAf,EAAQgB,gBAAQ,IAAAD,EAAAA,EAAI,EAAGf,GACjE,IAAK,QACH,OAAOiB,EAAAA,MAAmB,QAAbC,EAAAlB,EAAQiB,aAAK,IAAAC,EAAAA,EAAI,GAChC,IAAK,WACH,IACMC,GAD+B,QAAlBC,EAAApB,EAAQqB,kBAAU,IAAAD,EAAAA,EAAI,IAChBE,KAAI,SAACC,GAAS,OAAAhB,EAAeC,EAAIe,MAC1D,OAAOC,EAAAA,SAASL,EAAOnB,GAEzB,IAAK,OACH,IAAMyB,EAAYzB,EAAQ0B,UAE1B,IAAKD,EAEH,OADAE,QAAQC,KAAK,wDACN,CAAEC,MAAK,WAAA,EAAOC,MAAK,WAAA,EAAOC,oBAAaC,OAAM,WAAA,EAAOC,MAAK,WAAA,GAGlE,IAAMC,EACe,aAAnBT,EAAUnB,KACNkB,oBACGW,EAAiB,QAAjBC,EAAAX,EAAUzB,eAAO,IAAAoC,OAAA,EAAAA,EAAEf,0BAAc,IAAIC,KAAI,SAACe,GACzC,OAAA9B,EAAeC,EAAI6B,EAAnB,IAEFZ,EAAUzB,SAEZO,EAAeC,EAAIiB,GAEzB,OAAOa,OAAKJ,EAA6B,QAAlBK,EAAAvC,EAAQwC,kBAAU,IAAAD,EAAAA,EAAI,EAAGvC,GAGlD,QAEE,OADA2B,QAAQC,KAAK,sCAA+BtB,IACrC,CAAEuB,MAAK,WAAA,EAAOC,MAAK,WAAA,EAAOC,oBAAaC,OAAM,WAAA,EAAOC,MAAK,WAAA,GAEtE,CAEM,SAAUQ,EACdC,EACAnB,GAEA,IAQMJ,EARUwB,OAAOC,QAAQF,GAAOG,QAAO,SAACpC,OAACqC,EAADC,EAAAtC,EAAA,GAAI,GAChD,MACgB,UAAdc,EAAKjB,MACS,UAAdiB,EAAKjB,WAC2C0C,IAA/CzB,EAAKb,GAAiCoC,EAE3C,IAEsBxB,KAAI,SAACb,EAAWwC,GAAX,IAAAlC,EAAAgC,OAACD,EAAG/B,EAAA,GAC7B,OAAAR,EADiCQ,EAAA,GACd,CACjBT,KAAMiB,EAAKjB,KACXI,GACgB,UAAda,EAAKjB,MAAkC,UAAdiB,EAAKjB,KACzBiB,EAAKb,GACLa,EAAKb,GAAiCoC,GAC7C9C,QAASD,EAAsBwB,EAAKvB,QAAiB,IAARiD,IAN/C,IAUF,OAAOC,EAAAA,SAAS/B,EAClB,CClEM,SAAUgC,EACdC,GAEA,IAAMC,EAAgBC,EAAAA,OAAwB,MAExCC,EAAQC,EAAAA,SAAQ,WACpB,OAAIC,MAAMC,QAAQN,GACTA,EAAQ9B,KAAI,SAACqC,GAAM,OAAA,IAAIC,EAAAA,YAAYD,MAGrB,iBAAZP,EACFT,OAAOkB,YACZlB,OAAOC,QAAQQ,GAAS9B,KAAI,SAACb,GAAA,IAAAM,EAAAgC,OAACe,EAAC/C,EAAA,GAAE4C,EAAC5C,EAAA,GAAM,MAAA,CAAC+C,EAAG,IAAIF,EAAAA,YAAYD,QAIzD,IAAIC,EAAAA,YAAYR,KACtB,IAkCH,MAAO,CAACG,EAhCR,SAAa7C,GACX,IAAIqD,EAAwB,KAG1BA,EADEN,MAAMC,QAAQN,GAmEtB,SACEY,EACAtD,WAEA,IAAKN,EAAaM,GAIhB,OAHCA,EAAmBuD,SAAQ,SAACC,EAAKC,iBAChC1D,EAAAuD,EAAIG,mBAAIC,IAAIF,EACd,IACO,KAGT,IAAMG,EAAO3D,EAEP4D,EAAY3B,OAAOkB,YACvBG,EAAI1C,KAAI,SAACd,EAAIyC,GAAQ,MAAA,CAACA,EAAIsB,WAAY/D,EAAG,KAG3C,OAAQ6D,EAAK/D,MACX,IAAK,WACH,IAAMa,EAAQkD,EAAKrE,QAASqB,WAAYC,KAAI,SAACC,WAC3C,MAAc,UAAdA,EAAKjB,KACDW,EAAAA,MAAyB,QAAnBF,EAAY,QAAZN,EAAAc,EAAKvB,eAAO,IAAAS,OAAA,EAAAA,EAAEQ,aAAK,IAAAF,EAAAA,EAAI,GAC7B0B,EAAc6B,EAASE,EAAAA,EAAA,CAAA,EAClBjD,GAAI,CACPb,GAAI+C,MAAMC,QAAQnC,EAAKb,IACnBiC,OAAOkB,YACJtC,EAAKb,GAAmBY,KAAI,SAACqC,EAAGQ,GAAM,MAAA,CAACA,EAAEI,WAAYZ,EAAE,KAE1DpC,EAAKb,KACT,IAGR,OAAOc,WAASL,EAAOkD,EAAKrE,SAG9B,IAAK,OACH,IAAMyE,EAAQJ,EAAKrE,QAAS0B,UAE5B,GAAmB,aAAf+C,EAAMnE,KAAqB,CAC7B,IAAMoE,EAAWD,EAAMzE,QAASqB,WAAYC,KAAI,SAACC,GAC/C,OAAAkB,EAAc6B,EAASE,EAAAA,EAAA,CAAA,EAClBjD,GAAI,CACPb,GAAI+C,MAAMC,QAAQnC,EAAKb,IACnBiC,OAAOkB,YACJtC,EAAKb,GAAmBY,KAAI,SAACqC,EAAGQ,GAAM,MAAA,CAACA,EAAEI,WAAYZ,EAAE,KAE1DpC,EAAKb,KANX,IAUIiE,EAAMnD,EAAAA,SACVkD,EACA3E,EAAsB0E,EAAMzE,SAAS,IAGvC,OAAOsC,EAAAA,KACLqC,EACwB,UAAxBN,EAAKrE,QAASwC,kBAAU,IAAA/B,EAAAA,EAAI,EAC5BV,EAAsBsE,EAAKrE,SAAS,IAIxC,IAAM4E,EAAMnC,EAAc6B,EAAWG,GACrC,OAAOnC,EAAAA,KACLsC,EACwB,UAAxBP,EAAKrE,QAASwC,kBAAU,IAAAzB,EAAAA,EAAI,EAC5BhB,EAAsBsE,EAAKrE,SAAS,IAOxC,QACE,OAAOyC,EAAc6B,EAAWD,GAEtC,CA9IaQ,CACLtB,EACA7C,GAE0B,iBAAZ0C,EA4ItB,SACEY,EACAtD,WAEA,GAAIN,EAAaM,GACf,OAAQA,EAAGJ,MACT,IAAK,WACH,IAAMa,EAAQT,EAAGV,QAASqB,WAAYC,KAAI,SAACC,SACzC,MAAc,UAAdA,EAAKjB,KACDW,QAAyB,QAAnBR,EAAAc,EAAKvB,QAASiB,aAAK,IAAAR,EAAAA,EAAI,GAC7BgC,EAAcuB,EAAKzC,EAAK,IAE9B,OAAOC,WAASL,EAAOT,EAAGV,SAG5B,IAAK,OACH,IAAMyE,EAAQ/D,EAAGV,QAAS0B,UAC1B,GAAmB,aAAf+C,EAAMnE,KAAqB,CACvBa,EAAQsD,EAAMzE,QAASqB,WAAYC,KAAI,SAACe,GAC5C,OAAAI,EAAcuB,EAAK3B,EAAnB,IAEF,OAAOC,OACLd,EAAAA,SAASL,EAAOpB,EAAsB0E,EAAMzE,SAAS,IAC/B,QAAtBS,EAAAC,EAAGV,QAASwC,kBAAU,IAAA/B,EAAAA,EAAI,EAC1BV,EAAsBW,EAAGV,SAAS,IAGtC,OAAOsC,EAAAA,KACLG,EAAcuB,EAAKS,GACG,QAAtB1D,EAAAL,EAAGV,QAASwC,kBAAU,IAAAzB,EAAAA,EAAI,EAC1BhB,EAAsBW,EAAGV,SAAS,IAOtC,QACE,OAAOyC,EAAcuB,EAAKtD,GAQhC,OAJAiC,OAAOC,QAAQlC,GAAIuD,SAAQ,SAACxD,SAAAS,EAAA6B,OAACe,EAAC5C,EAAA,GAAEyC,EAACzC,EAAA,WAC/BH,EAAAiD,EAAIF,mBAAIM,IAAIT,EACd,IAEO,IACT,CA1LamB,CACLvB,EACA7C,GAwBR,SACEF,EACAE,yBAEA,GAAkB,iBAAPA,GAAiC,iBAAPA,EAEnC,OADAF,EAAG4D,IAAI1D,GACA,KAGT,GAAgB,aAAZA,EAAGJ,KAAqB,CAC1B,IACMa,GADmC,QAAtBJ,EAAU,QAAVN,EAAAC,EAAGV,eAAO,IAAAS,OAAA,EAAAA,EAAEY,kBAAU,IAAAN,EAAAA,EAAI,IACpBO,KAAI,SAACC,GAAS,OAAAhB,EAAeC,EAAIe,MAC1D,OAAOC,WAASL,EAAOT,EAAGV,SAG5B,GAAgB,SAAZU,EAAGJ,KAAiB,CACtB,IAAMoB,EAAsB,QAAVR,EAAAR,EAAGV,eAAO,IAAAkB,OAAA,EAAAA,EAAEQ,UAC9B,IAAKA,EAAW,OAAO,KAEvB,GAAuB,aAAnBA,EAAUpB,KAAqB,CAE3Ba,GAD0C,QAA7BiB,EAAiB,QAAjBhB,EAAAM,EAAU1B,eAAO,IAAAoB,OAAA,EAAAA,EAAEC,kBAAU,IAAAe,EAAAA,EAAI,IAC3Bd,KAAI,SAACC,GAAS,OAAAhB,EAAeC,EAAIe,MAC1D,OAAOe,EAAAA,KAAKd,WAASL,GAA8B,UAAZ,QAAVgB,EAAAzB,EAAGV,eAAO,IAAAmC,OAAA,EAAAA,EAAEK,kBAAU,IAAAD,EAAAA,EAAI,EAAG7B,EAAGV,SAG/D,OAAOsC,OACL/B,EAAeC,EAAIkB,GACG,QAAtBqD,EAAU,QAAVpE,EAAAD,EAAGV,eAAO,IAAAW,OAAA,EAAAA,EAAE6B,kBAAU,IAAAuC,EAAAA,EAAI,EAC1BrE,EAAGV,SAIP,OAAOO,EAAeC,EAAIE,EAC5B,CAtDasE,CACLzB,EACA7C,GAIJ2C,EAAc4B,QAAUlB,EACpBA,GAAMA,EAAKlC,SAGA,CACfA,MAAO,WAAA,IAAApB,EAAM,OAAqB,QAArBA,EAAA4C,EAAc4B,eAAO,IAAAxE,OAAA,EAAAA,EAAEoB,OAAO,EAC3CC,MAAO,WAAA,IAAArB,EAAM,OAAqB,QAArBA,EAAA4C,EAAc4B,eAAO,IAAAxE,OAAA,EAAAA,EAAEqB,OAAO,EAC3CC,OAAQ,WAAA,IAAAtB,EAAM,OAAqB,QAArBA,EAAA4C,EAAc4B,eAAO,IAAAxE,OAAA,EAAAA,EAAEsB,QAAQ,EAC7CC,OAAQ,WAAA,IAAAvB,EAAM,OAAqB,QAArBA,EAAA4C,EAAc4B,eAAO,IAAAxE,OAAA,EAAAA,EAAEuB,QAAQ,EAC7CC,MAAO,WAAA,IAAAxB,EAAM,OAAqB,QAArBA,EAAA4C,EAAc4B,eAAO,IAAAxE,OAAA,EAAAA,EAAEwB,OAAO,GAI/C,qDCnEO,IAAMiD,EAAS,CACpBC,OAAQ,CACNC,OAAQ,CAAEC,SAAU,IAAKC,OAAQC,EAAAA,OAAOC,QACxCC,QAAS,CAAEJ,SAAU,IAAKC,OAAQC,EAAAA,OAAOG,GAAGH,SAAOI,OACnDC,SAAU,CAAEP,SAAU,IAAKC,OAAQC,EAAAA,OAAOM,IAAIN,SAAOI,OACrDG,YAAa,CAAET,SAAU,IAAKC,OAAQC,EAAAA,OAAOQ,MAAMR,SAAOI,OAC1DK,OAAQ,CAAEX,SAAU,IAAKC,OAAQC,EAAAA,OAAOU,OAAO,IAAM,IAAM,IAAM,MACjEC,OAAQ,CAAEb,SAAU,IAAKC,OAAQC,EAAAA,OAAOU,OAAO,IAAM,IAAM,IAAM,IACjEE,OAAQ,CAAEd,SAAU,IAAKC,OAAQC,EAAAA,OAAOU,OAAO,IAAM,GAAK,IAAM,OAChEG,OAAQ,CAAEf,SAAU,IAAKC,OAAQC,EAAAA,OAAOU,OAAO,IAAM,IAAM,EAAG,OAC9DI,OAAQ,CAAEhB,SAAU,IAAKC,OAAQC,EAAAA,OAAOe,SAE1CC,OAAQ,CACNC,QAAS,CAAEC,KAAM,EAAGC,QAAS,GAAIC,UAAW,KAC5CC,KAAM,CAAEH,KAAM,EAAGC,QAAS,GAAIC,UAAW,KACzCE,MAAO,CAAEJ,KAAM,EAAGC,QAAS,GAAIC,UAAW,KAC1CG,OAAQ,CAAEL,KAAM,EAAGC,QAAS,EAAGC,UAAW,OCTjCI,EAAa,SACxBrG,EACAsG,aACe,MAAA,CACf1G,KAAM,SACNI,GAAEA,EACFV,QAAS,CACP2G,UAA0B,QAAflG,EAAAuG,eAAAA,EAAML,iBAAS,IAAAlG,EAAAA,EAAIyE,EAAOqB,OAAOK,KAAKD,UACjDD,QAAsB,QAAb3F,EAAAiG,eAAAA,EAAMN,eAAO,IAAA3F,EAAAA,EAAImE,EAAOqB,OAAOK,KAAKF,QAC7CD,KAAgB,QAAVvF,EAAA8F,eAAAA,EAAMP,YAAI,IAAAvF,EAAAA,EAAIgE,EAAOqB,OAAOK,KAAKH,KACvCvG,QAAS8G,aAAI,EAAJA,EAAM9G,QACfC,SAAU6G,aAAI,EAAJA,EAAM7G,SAChB8G,WAAYD,aAAI,EAAJA,EAAMC,cCgBhB,SAAUC,EACdC,EACAC,QAAA,IAAAA,IAAAA,EAAA,CAAA,GAEM,IAAA3G,EAAoC2G,EAAlCrG,EAAAN,EAAA4G,KAAAA,OAAI,IAAAtG,EAAG,EAACA,EAAEG,EAAAT,EAAA6G,MAAAA,OAAK,IAAApG,EAAG,EAACA,EAAEE,EAAAX,EAAA8G,KAAAA,OAAI,IAAAnG,EAAG,EAACA,EAE/BgB,EAAAW,EAAwByE,WAASL,GAAO,GAAvCM,EAAOrF,EAAA,GAAEsF,OACVtE,EAAUE,EAAAA,QAAO,GACjBnB,EAAAY,EAAsBI,EAASkE,GAAK,GAAnCM,EAAMxF,EAAA,GAAEyF,OAETC,EAAYrE,EAAAA,SAChB,WAAM,OAACpD,EAAakH,GAASA,EAAQP,EAAWO,EAAO,GACvD,CAACA,IAGGQ,EAAWtE,EAAAA,SAAQ,WACvB,OAAIpD,EAAamH,GACf/C,EAAAA,EAAA,CAAA,EACK+C,IACHvH,QAAOwE,EAAAA,EAAA,CAAA,EACF+C,EAAKvH,SAAO,CACfiH,WAAY,2BACVlG,EAAY,UAAZwG,EAAKvH,eAAO,IAAAS,OAAA,EAAAA,EAAEwG,mCACdS,GAAW,EACb,MAICX,EAAWQ,EAAM,CAAEN,WAAY,WAAM,OAAAS,GAAW,KACzD,GAAG,CAACH,IAoBJ,OAlBAQ,EAAAA,WAAU,WACR,GAAI3E,EAAQ6B,QAMV,OALA7B,EAAQ6B,SAAU,OACdkC,IACFO,GAAW,GACXM,gBAAe,WAAM,OAAAJ,EAAUC,EAAU,MAKzCV,GACFO,GAAW,GACXM,gBAAe,WAAM,OAAAJ,EAAUC,EAAU,KAEzCG,gBAAe,WAAM,OAAAJ,EAAUE,EAAS,GAE5C,GAAG,CAACX,IAEG,SAACc,GAAO,OAAAA,EAAGN,EAAeF,EAAQ,CAC3C,UCvFgBS,EAAM3E,EAAe4E,EAAoBC,GACvD,OAAOC,KAAKC,IAAID,KAAKE,IAAIhF,EAAO4E,GAAaC,EAC/C,CAMA,SAASI,EAAOC,EAA0BC,EAAmBC,GAC3D,OAAkB,IAAdD,GAAmBL,KAAKO,IAAIF,KAAeG,IALjD,SAAiBJ,EAA0BE,GACzC,OAAON,KAAKS,IAAIL,EAA6B,EAAXE,EACpC,CAIWI,CAAQN,EAAkBE,GAEhCF,EAAmBC,EAAYC,GAC/BD,EAAYC,EAAWF,EAE5B,CCbA,IAAAO,EAAA,WAAA,SAAAA,IAGUC,KAAAC,gBAAkB,IAAIC,IACtBF,KAAAG,aAAe,IAAID,IAuB7B,OArBEH,EAAAK,UAAAlJ,SAAA,SAASmJ,GAEP,OADAL,KAAKC,gBAAgBK,IAAID,GAClBL,MAGTD,EAAAK,UAAAG,MAAA,SAAMF,GAEJ,OADAL,KAAKG,aAAaG,IAAID,GACfL,MAGCD,EAAAK,UAAAI,WAAV,SAAqBC,GACnBT,KAAKC,gBAAgBjF,SAAQ,SAACgE,GAAO,OAAAA,EAAGyB,OAGhCV,EAAAK,UAAAM,QAAV,SAAkBD,GAChBT,KAAKG,aAAanF,SAAQ,SAACgE,GAAO,OAAAA,EAAGyB,OApBhBV,EAAAY,eAAiB,GA0B1CZ,CAAC,ICXDa,EAAA,SAAAC,GAiBE,SAAAD,EAAYzC,QAAA,IAAAA,IAAAA,EAAA,CAAA,GACV,IAAA2C,EAAAD,cAAOb,YAhBDc,EAAAC,KAAO,CAAE3J,EAAG,EAAG4J,EAAG,GAClBF,EAAAG,SAAW,EAEXH,EAAAI,SAAW,CAAE9J,EAAG,EAAG4J,EAAG,GACtBF,EAAA/I,SAAW,CAAEX,EAAG,EAAG4J,EAAG,GACtBF,EAAAlI,MAAQ,CAAExB,EAAG,EAAG4J,EAAG,GACnBF,EAAAK,OAAS,CAAE/J,EAAG,EAAG4J,EAAG,GAEpBF,EAAAM,iBAAkB,EAClBN,EAAAO,gBAAiC,KACjCP,EAAAQ,YAAc,IAAIpB,IAClBY,EAAAS,SAA+B,KAC/BT,EAAAU,eAAiB,CAAEpK,EAAG,EAAG4J,EAAG,GAC5BF,EAAAW,iBAAkB,EAIxBX,EAAK3C,OAASA,IAiJlB,OApKiCuD,EAAAd,EAAAC,GAsB/BD,EAAAR,UAAApJ,OAAA,SAAO2K,GAAP,IAAAb,EAAAd,KACE,GAAI2B,IAAaC,OAAQ,OAAO,WAAA,EAEhC,IAAMC,EAAMrH,MAAMC,QAAQkH,GAAYA,EAAW,CAACA,GAC5CG,EAAO9B,KAAK+B,OAAOC,KAAKhC,MACxBiC,EAAOjC,KAAKkC,OAAOF,KAAKhC,MACxBmC,EAAKnC,KAAKoC,KAAKJ,KAAKhC,MAW1B,OATA6B,EAAI7G,SAAQ,SAACqH,GACXvB,EAAKQ,YAAYhB,IAAI+B,GACrBA,EAAGC,iBAAiB,cAAeR,EAAM,CAAES,SAAS,GACtD,IAEAX,OAAOU,iBAAiB,cAAeL,EAAM,CAAEM,SAAS,IACxDX,OAAOU,iBAAiB,YAAaH,GACrCP,OAAOU,iBAAiB,gBAAiBH,GAElC,WACLN,EAAI7G,SAAQ,SAACqH,GACXA,EAAGG,oBAAoB,cAAeV,GACtChB,EAAKQ,YAAYmB,OAAOJ,EAC1B,IAEAT,OAAOY,oBAAoB,cAAeP,GAC1CL,OAAOY,oBAAoB,YAAaL,GACxCP,OAAOY,oBAAoB,gBAAiBL,EAC9C,GAGMvB,EAAAR,UAAA2B,OAAR,SAAeW,aACb,GAAiB,IAAbA,EAAEC,OAAN,CAEA,IAAMC,EAASF,EAAEG,cACZ7C,KAAKsB,YAAYwB,IAAIF,KAE1B5C,KAAKuB,SAAWqB,EAChB5C,KAAKqB,gBAAkBqB,EAAEK,UACzB/C,KAAKoB,iBAAkB,EAEvBpB,KAAKpH,OACsB,IAAzBoH,KAAKyB,iBAA8C,IAAjBzB,KAAKpH,MAAMxB,GAA4B,IAAjB4I,KAAKpH,MAAMoI,EACxC,QAAvB/I,UAAAH,KAAAkI,KAAK7B,QAAOhE,6CAAW,IAAAlC,EAAAA,EAAI,CAAEb,EAAG,EAAG4J,EAAG,GACvCzF,EAAA,CAAA,EAAMyE,KAAKmB,QAChBnB,KAAKmB,OAAM5F,EAAA,CAAA,EAAQyE,KAAKpH,OACxBoH,KAAKkB,SAAW,CAAE9J,EAAG,EAAG4J,EAAG,GAC3BhB,KAAKjI,SAAW,CAAEX,EAAG,EAAG4J,EAAG,GAE3BhB,KAAKwB,eAAiB,CAAEpK,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SAC3CjD,KAAKyB,iBAAkB,EACvBzB,KAAKe,KAAO,CAAE3J,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SACjCjD,KAAKiB,SAAWyB,EAAEQ,UAElBlD,KAAKQ,WAAW,CACdsB,MAAM,EACNZ,SAAU,CAAE9J,EAAG,EAAG4J,EAAG,GACrBG,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAU,CAAEX,EAAG,EAAG4J,EAAG,GACrBP,MAAOiC,EACP3J,OAAQiH,KAAKjH,OAAOiJ,KAAKhC,QA5BP,GAgCdY,EAAAR,UAAA8B,OAAR,SAAeQ,SACb,GAAI1C,KAAKqB,kBAAoBqB,EAAEK,WAAc/C,KAAKuB,SAAlD,CAEA,IAAM4B,EAAiC,QAArB3L,EAAAwI,KAAK7B,OAAOgF,iBAAS,IAAA3L,EAAAA,EAAI,EAC3C,IAAKwI,KAAKyB,gBAAiB,CACzB,IAAM2B,EAAUV,EAAEM,QAAUhD,KAAKwB,eAAepK,EAC1CiM,EAAUX,EAAEO,QAAUjD,KAAKwB,eAAeR,EAEhD,GADa5B,KAAKkE,MAAMF,EAASC,GACtBF,EAAW,OACtBnD,KAAKyB,iBAAkB,EAEvBzB,KAAKuB,SAASgC,kBAAkBb,EAAEK,WAClC/C,KAAKoB,iBAAkB,EAGrBpB,KAAKoB,iBACPsB,EAAEc,iBAGJ,IAAMC,EAAKrE,KAAKE,KAAKoD,EAAEQ,UAAYlD,KAAKiB,UAAY,IAAM,MAC1DjB,KAAKiB,SAAWyB,EAAEQ,UAClB,IAEMQ,GAFKhB,EAAEM,QAAUhD,KAAKe,KAAK3J,GAEfqM,EAAK,IACjBE,GAFKjB,EAAEO,QAAUjD,KAAKe,KAAKC,GAEfyC,EAAK,IACvBzD,KAAKjI,SAAW,CACdX,EAAG6H,EAAMyE,GAAO3D,EAAQY,eAAgBZ,EAAQY,gBAChDK,EAAG/B,EAAM0E,GAAO5D,EAAQY,eAAgBZ,EAAQY,iBAGlD,IAAMiD,EAAU,CACdxM,EAAGsL,EAAEM,QAAUhD,KAAKwB,eAAepK,EACnC4J,EAAG0B,EAAEO,QAAUjD,KAAKwB,eAAeR,GAErChB,KAAKkB,SAAW,CACd9J,EAAwB,MAArB4I,KAAK7B,OAAO0F,KAAe,EAAID,EAAQxM,EAC1C4J,EAAwB,MAArBhB,KAAK7B,OAAO0F,KAAe,EAAID,EAAQ5C,GAG5ChB,KAAKmB,OAAS,CACZ/J,EAAG4I,KAAKpH,MAAMxB,EAAI4I,KAAKkB,SAAS9J,EAChC4J,EAAGhB,KAAKpH,MAAMoI,EAAIhB,KAAKkB,SAASF,GAGlChB,KAAKe,KAAO,CAAE3J,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SAEjCjD,KAAKQ,WAAW,CACdsB,MAAM,EACNZ,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQiH,KAAKjH,OAAOiJ,KAAKhC,OAnDiC,GAuDtDY,EAAAR,UAAAgC,KAAR,SAAaM,GACP1C,KAAKqB,kBAAoBqB,EAAEK,WAAc/C,KAAKuB,WAClDvB,KAAKuB,SAASuC,sBAAsBpB,EAAEK,WAEtC/C,KAAKU,QAAQ,CACXoB,MAAM,EACNZ,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQiH,KAAKjH,OAAOiJ,KAAKhC,QAG3BA,KAAKqB,gBAAkB,KACvBrB,KAAKoB,iBAAkB,IAGzBR,EAAAR,UAAArH,OAAA,WACMiH,KAAKuB,UAAqC,OAAzBvB,KAAKqB,kBACxBrB,KAAKuB,SAASuC,sBAAsB9D,KAAKqB,iBACzCrB,KAAKqB,gBAAkB,KACvBrB,KAAKuB,SAAW,OAGtBX,CAAA,CApKA,CAAiCb,GCN3B,SAAUgE,EACdC,EACAC,EACAC,EACA/F,GAEA,IAAMgG,EAAaC,EAAUF,GACvBG,EAAYD,EAAUjG,GAE5B,GAAI8F,IAASrC,OAAb,CAoBA,IAAM0C,EAAO9J,MAAMC,QAAQwJ,GAAQA,EAAQ,CAACA,GACtCM,EAAclK,EAAAA,OAA6B,IAE7CkK,EAAYvI,QAAQwI,SAAWF,EAAKE,SACtCD,EAAYvI,QAAUsI,EAAKjM,KAAI,SAACoM,EAAGvJ,GACjC,IAAMwJ,EAAI,IAAIV,EAAaK,EAAUrI,SAC/B2I,EAAU,SAACjC,GAAS,OAAAyB,EAAWnI,QAAOT,EAAAA,EAAA,CAAA,EAAMmH,IAAGkC,MAAO1J,IAAI,EAEhE,OADAwJ,EAAExN,SAASyN,GAASpE,MAAMoE,GACnBD,CACT,KAGF5F,EAAAA,WAAU,WACR,IAAM+F,EAAWP,EACdjM,KAAI,SAACyM,EAAG5J,GACP,IAAMmH,EAAKyC,EAAE9I,QACb,OAAKqG,EACEkC,EAAYvI,QAAQd,GAAGlE,OAAOqL,GADrB,IAElB,IACCzI,QAAO,SAACoF,GAAyB,QAAEA,CAAE,IAExC,OAAO,WAAM,OAAA6F,EAAS7J,SAAQ,SAACgE,GAAO,OAAAA,GAAI,GAAC,CAC7C,GAAG,CAACsF,EAAKjM,KAAI,SAACyM,GAAM,OAAAA,EAAE9I,OAAO,UA1C7B,CACE,IAAM+I,EAAa1K,EAAAA,SAEnB,IAAK0K,EAAW/I,QAAS,CACvB,IAAM0I,EAAI,IAAIV,EAAaK,EAAUrI,SAC/B2I,EAAU,SAACjC,GAAS,OAAAyB,EAAWnI,QAAOT,EAAAA,EAAA,CAAA,EAAMmH,IAAGkC,MAAO,IAAI,EAChEF,EAAExN,SAASyN,GAASpE,MAAMoE,GAC1BI,EAAW/I,QAAU0I,EAGvB5F,EAAAA,WAAU,WACR,IAAMkG,EAAUD,EAAW/I,QAAShF,OAAO4K,QAC3C,OAAO,WACLoD,GACF,CACF,GAAG,CAACf,IA4BR,CAEA,SAASG,EAAa9J,GACpB,IAAM2K,EAAM5K,EAAAA,OAAOC,GAInB,OAHAwE,EAAAA,WAAU,WACRmG,EAAIjJ,QAAU1B,CAChB,GAAG,CAACA,IACG2K,CACT,CC7DA,IAAAC,EAAA,SAAArE,GAAA,SAAAqE,2DACUpE,EAAAQ,YAAc,IAAIpB,IAElBY,EAAAC,KAAO,CAAE3J,EAAG,EAAG4J,EAAG,GAClBF,EAAAG,SAAW,EAEXH,EAAAI,SAAW,CAAE9J,EAAG,EAAG4J,EAAG,GACtBF,EAAAK,OAAS,CAAE/J,EAAG,EAAG4J,EAAG,GACpBF,EAAA/I,SAAW,CAAEX,EAAG,EAAG4J,EAAG,GACtBF,EAAAqE,SAA4C,OAiFtD,OA1FiCzD,EAAAwD,EAAArE,GAW/BqE,EAAA9E,UAAApJ,OAAA,SAAO2K,GAAP,IAAAb,EAAAd,KACQ6B,EAAMrH,MAAMC,QAAQkH,GAAYA,EAAW,CAACA,GAC5CM,EAAOjC,KAAKkC,OAAOF,KAAKhC,MACxBoF,EAAQpF,KAAKqF,QAAQrD,KAAKhC,MAQhC,OANA6B,EAAI7G,SAAQ,SAACqH,GACXvB,EAAKQ,YAAYhB,IAAI+B,GACrBA,EAAGC,iBAAiB,cAAeL,EAAM,CAAEM,SAAS,IACpDF,EAAGC,iBAAiB,eAAgB8C,EACtC,IAEO,WACLvD,EAAI7G,SAAQ,SAACqH,GACXA,EAAGG,oBAAoB,cAAeP,GACtCI,EAAGG,oBAAoB,eAAgB4C,GACvCtE,EAAKQ,YAAYmB,OAAOJ,EAC1B,GACF,GAGF6C,EAAA9E,UAAArH,OAAA,aAEQmM,EAAA9E,UAAA8B,OAAR,SAAeQ,GAAf,IAAA5B,EAAAd,KACQsF,EAAM5C,EAAEQ,UAEQ,OAAlBlD,KAAKmF,WACPnF,KAAKmF,SAAW,CAAE/N,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SACrCjD,KAAKe,KAAO,CAAE3J,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SACjCjD,KAAKiB,SAAWqE,GAGlB,IAAM7B,EAAKrE,KAAKE,KAAKgG,EAAMtF,KAAKiB,UAAY,IAAM,MAClDjB,KAAKiB,SAAWqE,EAEhB,IAAMC,EAAK7C,EAAEM,QAAUhD,KAAKe,KAAK3J,EAC3BoO,EAAK9C,EAAEO,QAAUjD,KAAKe,KAAKC,EACjChB,KAAKe,KAAO,CAAE3J,EAAGsL,EAAEM,QAAShC,EAAG0B,EAAEO,SAEjCjD,KAAKkB,SAAW,CACd9J,EAAGsL,EAAEM,QAAUhD,KAAKmF,SAAS/N,EAC7B4J,EAAG0B,EAAEO,QAAUjD,KAAKmF,SAASnE,GAG/B,IAAMyE,EAAM/C,EAAEG,cACR6C,EACJD,aAAeE,YACXF,EAAIG,wBACJ,CAAEC,KAAM,EAAGC,IAAK,GAEtB9F,KAAKmB,OAAS,CACZ/J,EAAGsL,EAAEM,QAAU0C,EAAKG,KACpB7E,EAAG0B,EAAEO,QAAUyC,EAAKI,KAGtB,IAAMC,EAAQR,EAAK9B,EAAK,IAClBuC,EAAQR,EAAK/B,EAAK,IACxBzD,KAAKjI,SAAW,CACdX,EAAG6H,EAAM8G,GAAQhG,EAAQY,eAAgBZ,EAAQY,gBACjDK,EAAG/B,EAAM+G,GAAQjG,EAAQY,eAAgBZ,EAAQY,iBAGnDX,KAAKQ,WAAW,CACdU,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQ,WAAM,OAAA+H,EAAKuE,QAAQ3C,EAAE,KAIzBwC,EAAA9E,UAAAiF,QAAR,SAAgB3C,GACd1C,KAAKU,QAAQ,CACXQ,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQ,gBAGdmM,CAAA,CA1FA,CAAiCnF,GCAjC,IAAAkG,EAAA,SAAApF,GAAA,SAAAoF,2DACUnF,EAAAQ,YAAc,IAAIpB,IAElBY,EAAAI,SAAW,CAAE9J,EAAG,EAAG4J,EAAG,GACtBF,EAAAK,OAAS,CAAE/J,EAAG,EAAG4J,EAAG,GACpBF,EAAA/I,SAAW,CAAEX,EAAG,EAAG4J,EAAG,GAEtBF,EAAAoF,WAAa,CAAE9O,EAAG,EAAG4J,EAAG,GACxBF,EAAAG,SAAW,IAuErB,OA/EmCS,EAAAuE,EAAApF,GAWjCoF,EAAA7F,UAAApJ,OAAA,SAAO2K,GAAP,IAAAb,EAAAd,KACQ6B,EAAMrH,MAAMC,QAAQkH,GAAYA,EAAW,CAACA,GAC5CwE,EAASnG,KAAKoG,SAASpE,KAAKhC,MAOlC,OALA6B,EAAI7G,SAAQ,SAACqH,GACXvB,EAAKQ,YAAYhB,IAAI+B,GACrBA,EAAGC,iBAAiB,SAAU6D,EAAQ,CAAE5D,SAAS,GACnD,IAEO,WACLV,EAAI7G,SAAQ,SAACqH,GACXA,EAAGG,oBAAoB,SAAU2D,GACjCrF,EAAKQ,YAAYmB,OAAOJ,EAC1B,IAEuB,MAAnBvB,EAAKuF,aACPC,aAAaxF,EAAKuF,YAClBvF,EAAKuF,gBAAatM,EAEtB,GAGFkM,EAAA7F,UAAArH,OAAA,aAEQkN,EAAA7F,UAAAgG,SAAR,SAAiB1D,GAAjB,IAAA5B,EAAAd,KACQsF,EAAMiB,KAAKjB,MACX7B,EAAKrE,KAAKE,KAAKgG,EAAMtF,KAAKiB,UAAY,IAAM,MAClDjB,KAAKiB,SAAWqE,EAEhB,IAAMG,EAAM/C,EAAEG,cACRzL,EAAIqO,aAAeE,YAAcF,EAAIe,WAAa5E,OAAO6E,QACzDzF,EAAIyE,aAAeE,YAAcF,EAAIiB,UAAY9E,OAAO+E,QAExDpB,EAAKnO,EAAI4I,KAAKkG,WAAW9O,EACzBoO,EAAKxE,EAAIhB,KAAKkG,WAAWlF,EAC/BhB,KAAKkG,WAAa,CAAE9O,IAAG4J,EAACA,GAExBhB,KAAKkB,SAAW,CAAE9J,EAAGmO,EAAIvE,EAAGwE,GAC5BxF,KAAKmB,OAAS,CAAE/J,IAAG4J,EAACA,GAEpB,IAAM0C,EAAO6B,EAAK9B,EAAK,IACjBE,EAAO6B,EAAK/B,EAAK,IACvBzD,KAAKjI,SAAW,CACdX,EAAG6H,EAAMyE,GAAO3D,EAAQY,eAAgBZ,EAAQY,gBAChDK,EAAG/B,EAAM0E,GAAO5D,EAAQY,eAAgBZ,EAAQY,iBAGlDX,KAAKQ,WAAW,CACdU,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQ,WACiB,MAAnB+H,EAAKuF,YAAoBC,aAAaxF,EAAKuF,eAI5B,MAAnBrG,KAAKqG,YAAoBC,aAAatG,KAAKqG,YAC/CrG,KAAKqG,WAAazE,OAAOgF,YAAW,WAClC9F,EAAKJ,QAAQ,CACXQ,SAAQ3F,EAAA,GAAOuF,EAAKI,UACpBC,OAAM5F,EAAA,GAAOuF,EAAKK,QAClBpJ,SAAQwD,EAAA,GAAOuF,EAAK/I,UACpB0I,MAAOiC,EACP3J,OAAQ,iBAET,MAEPkN,CAAA,CA/EA,CAAmClG,GCc7B,SAAU8G,EACd5C,EACAzM,OAAAM,OAAA,IAAAN,EAM8B,KAL5BoL,WACA3K,EAAAH,EAAA+L,KAAAA,OAAI,IAAA5L,EAAG,IAAGA,EACVE,WAAAgJ,aAAS,CAAC,cAAe,aACzBhI,EAAArB,EAAAgP,QAAAA,OAAO,IAAA3N,GAAOA,EACdD,iBAAA6N,aAAe,SAACrM,GAAc,OAAAoD,EAAWpD,EAAE,EAAAxB,EAMvCI,EAAAQ,EAA4BI,EAAS,GAAE,GAAtC8M,EAAS1N,EAAA,GAAE2N,OACZvP,EAAAoC,EAA4BI,EAAS,GAAE,GAAtCgN,EAASxP,EAAA,GAAEyP,OACZC,EAAW/M,EAAAA,OAAyB,CAAC,EAAG,IAkC9C,OAhCAyE,EAAAA,WAAU,iBACFuI,EACJpD,aAAgBqD,OAAS1F,OAAUqC,EAAKjI,QACpCuL,EAA0B,QAAf/P,EAAAoL,aAAM,EAANA,EAAQ5G,eAAO,IAAAxE,EAAAA,EAAIgQ,SAASC,gBAE7CL,EAASpL,QA4Cb,SACExE,EACA+P,EACAF,EACAxD,GAHA,IAAA/L,EAAAgC,OAAC4N,EAAW5P,EAAA,GAAE6P,EAAS7P,EAAA,GAKvB,MAAO,CACL8P,EAAcF,EAAaH,EAAUF,EAAaxD,GAClD+D,EAAcD,EAAWJ,EAAUF,EAAaxD,GAEpD,CAtDuBgE,CACjB1G,EACAoG,EACAF,EACAxD,KAED,CAACI,EAAMrB,EAAQiB,EAAM1C,IAExB4C,EAAckC,EAAehC,GAAM,SAACvB,GAClC,IAAMoF,EAAe,MAATjE,EAAenB,EAAEvB,OAAOH,EAAI0B,EAAEvB,OAAO/J,EAC3CI,EAAAsC,EAAesN,EAASpL,QAAO,GAA9BpD,EAAKpB,EAAA,GAAEuQ,EAAGvQ,EAAA,GAEXwQ,EACJD,IAAQnP,EAASkP,EAAMlP,EAAQ,EAAI,GAAMkP,EAAMlP,IAAUmP,EAAMnP,GAE3DqP,EAAI7I,KAAKC,IAAID,KAAKE,IAAI0I,EAAK,GAAI,GAC/BE,EAAQpB,EAAUC,EAAe,SAACrM,GAAc,OAAAA,CAAC,EAE1C,MAATmJ,GACFoD,EAAaiB,EAAMD,IACnBd,EAAa,KAEbA,EAAae,EAAMD,IACnBhB,EAAa,GAEjB,IAEO,CAAEkB,gBAAiBnB,EAAWoB,gBAAiBlB,EACxD,CASA,SAASmB,EAAQhG,EAA0BwB,GACzC,OAAIxB,aAAcsD,YACA,MAAT9B,EAAexB,EAAGiG,aAAejG,EAAGkG,YAE7B,MAAT1E,EAAejC,OAAO4G,YAAc5G,OAAO6G,UACpD,CAcA,SAASb,EACPc,EACAnB,EACAF,EACAxD,GAEM,IAAArM,EAAAsC,EAAyB4O,EAAOC,OAAOC,MAAM,UAA5CC,OAAO/Q,EAAAN,EAAA,GAAAsR,OAAK,IAAAhR,EAAG+Q,EAAK/Q,EAK3B,GAAIuP,aAAuB1B,YAAa,CACtC,IAAMoD,EAAQxB,EAAS3B,wBACjBoD,EAAQ3B,EAAYzB,wBACpBqD,EAxCV,SAAmB5G,EAA0BwB,GAC3C,OAAIxB,aAAcsD,YACA,MAAT9B,EAAexB,EAAGqE,UAAYrE,EAAGmE,WAE1B,MAAT3C,EAAejC,OAAO+E,QAAU/E,OAAO6E,OAChD,CAmCmByC,CAAU7B,EAAaxD,GAChCsF,GACM,MAATtF,EAAekF,EAAMjD,IAAMkD,EAAMlD,IAAMiD,EAAMlD,KAAOmD,EAAMnD,MAAQoD,EAC/DG,EAAuB,MAATvF,EAAekF,EAAMM,OAASN,EAAMO,MAClDC,EAAgBlB,EAAQhB,EAAaxD,GAS3C,OAPgB2F,EACdX,EACAM,EACAC,EACAG,GAEcC,EAAYV,EAAO,EAAGS,EAAeA,GAKrD,OAFgBE,EAAeZ,EAAOhF,EAAM0D,GAAU,GACtCkC,EAAeX,EAAOjF,EAAMjC,QAAQ,EAGxD,CAEA,SAAS4H,EACPE,EACAC,EACAC,EACAL,GAEA,GAAa,UAATG,EAAkB,OAAOC,EAC7B,GAAa,WAATD,EAAmB,OAAOC,EAAOC,EAAO,EAC5C,GAAa,QAATF,EAAgB,OAAOC,EAAOC,EAElC,IAAMC,EAAIH,EAAKI,MAAM,oCACrB,IAAKD,EAAG,MAAM,IAAIE,MAAM,+BAAwBL,EAAI,MAEpD,IAAMM,EAAIC,WAAWJ,EAAE,IAGvB,OAFaA,EAAE,IAGb,IAAK,KACH,OAAOF,EAAOK,EAChB,IAAK,IACH,OAAOL,EAAQK,EAAI,IAAOJ,EAC5B,IAAK,KAEL,IAAK,KACH,OAAOD,EAAQK,EAAI,IAAOT,EAC5B,QACE,OAAOI,EAAOK,EAAIJ,EAExB,CAEA,SAASH,EACPC,EACA7F,EACAxB,EACA6H,GAEA,IAAMC,EAA6B9H,EAsBnC,OAAOmH,EAAYE,EArBNQ,EACT,EACA,WACE,KAAM7H,aAAcsD,aAClB,MAAM,IAAIoE,MAAM,kDAClB,IAAMrE,EAAOrD,EAAGuD,wBACVwE,EACK,MAATvG,EACIjC,OAAOyI,aAAezI,OAAO+E,QAC7B/E,OAAO0I,aAAe1I,OAAO6E,QACnC,OAAiB,MAAT5C,EAAe6B,EAAKI,IAAMJ,EAAKG,MAAQuE,CAChD,CATD,GAWSF,EACT7B,EAAQhG,EAAIwB,GACZ,WACE,KAAMxB,aAAcsD,aAAc,MAAM,IAAIoE,MAC5C,IAAMrE,EAAOrD,EAAGuD,wBAChB,MAAgB,MAAT/B,EAAe6B,EAAK2D,OAAS3D,EAAK4D,KAC1C,CAJD,GAMiCjB,EAAQ8B,EAActG,GAC7D,CC1LA,IAAA0G,EAAA,SAAA1J,GAAA,SAAA0J,2DACUzJ,EAAAQ,YAAc,IAAIpB,IAElBY,EAAAI,SAAW,CAAE9J,EAAG,EAAG4J,EAAG,GACtBF,EAAAK,OAAS,CAAE/J,EAAG,EAAG4J,EAAG,GACpBF,EAAA/I,SAAW,CAAEX,EAAG,EAAG4J,EAAG,GAEtBF,EAAAG,SAAW,IAqErB,OA5EkCS,EAAA6I,EAAA1J,GAUhC0J,EAAAnK,UAAApJ,OAAA,SAAO2K,GAAP,IAAAb,EAAAd,KACQ6B,EAAMrH,MAAMC,QAAQkH,GAAYA,EAAW,CAACA,GAC5C6I,EAAQxK,KAAKyK,QAAQzI,KAAKhC,MAOhC,OALA6B,EAAI7G,SAAQ,SAACqH,GACXvB,EAAKQ,YAAYhB,IAAI+B,GACrBA,EAAGC,iBAAiB,QAASkI,EAAO,CAAEjI,SAAS,GACjD,IAEO,WACLV,EAAI7G,SAAQ,SAACqH,GACXA,EAAGG,oBAAoB,QAASgI,GAChC1J,EAAKQ,YAAYmB,OAAOJ,EAC1B,IAEuB,MAAnBvB,EAAKuF,aACPC,aAAaxF,EAAKuF,YAClBvF,EAAKuF,gBAAatM,EAEtB,GAGFwQ,EAAAnK,UAAArH,OAAA,aAEQwR,EAAAnK,UAAAqK,QAAR,SAAgB/H,GAAhB,IAAA5B,EAAAd,KACE0C,EAAEc,iBAEF,IAAM8B,EAAM5C,EAAEQ,UACRO,EAAKrE,KAAKE,KAAKgG,EAAMtF,KAAKiB,UAAY,IAAM,MAClDjB,KAAKiB,SAAWqE,EAEhB,IAAMC,EAAK7C,EAAEgI,OACPlF,EAAK9C,EAAEiI,OAEb3K,KAAKkB,SAAW,CAAE9J,EAAGmO,EAAIvE,EAAGwE,GAC5BxF,KAAKmB,OAAO/J,GAAKmO,EACjBvF,KAAKmB,OAAOH,GAAKwE,EAEjB,IAAM9B,EAAO6B,EAAK9B,EAAK,IACjBE,EAAO6B,EAAK/B,EAAK,IACvBzD,KAAKjI,SAAW,CACdX,EAAG6H,EAAMyE,GAAO3D,EAAQY,eAAgBZ,EAAQY,gBAChDK,EAAG/B,EAAM0E,GAAO5D,EAAQY,eAAgBZ,EAAQY,iBAGlDX,KAAKQ,WAAW,CACdU,SAAQ3F,EAAA,GAAOyE,KAAKkB,UACpBC,OAAM5F,EAAA,GAAOyE,KAAKmB,QAClBpJ,SAAQwD,EAAA,GAAOyE,KAAKjI,UACpB0I,MAAOiC,EACP3J,OAAQ,WACiB,MAAnB+H,EAAKuF,YAAoBC,aAAaxF,EAAKuF,eAI5B,MAAnBrG,KAAKqG,YAAoBC,aAAatG,KAAKqG,YAC/CrG,KAAKqG,WAAazE,OAAOgF,YAAW,WAClC9F,EAAKJ,QAAQ,CACXQ,SAAQ3F,EAAA,GAAOuF,EAAKI,UACpBC,OAAM5F,EAAA,GAAOuF,EAAKK,QAClBpJ,SAAQwD,EAAA,GAAOuF,EAAK/I,UACpB0I,MAAOiC,EACP3J,OAAQ,iBAET,MAEPwR,CAAA,CA5EA,CAAkCxK,+YCmB5B,SAAgBvI,GACpB,IAAAoT,UACAC,aAGMC,EAAO7M,EAAS2M,EAFbG,EAAAvT,EAHW,CAAA,QAAA,cAMpB,OACEwT,EAAAA,yBAAGF,GAAK,SAACrS,EAAW+F,GAAY,OAAAA,GAAWqM,EAASpS,OAExD,wCRsBqBwS,EAAmBC,EAAmBC,GACzD,IAAMC,EAAOH,EAAMC,GACb1G,EAASyG,EAAMzG,OACf6G,EAAOH,EAAYC,EAEzB,GAAIE,EAAO,EACT,OAAAC,EAAAA,EAAAA,EAAAA,EAAA,GAAAxR,EACKmR,EAAMM,MAAM,EAAGJ,KAAQ,GAAA,CAC1BC,IACG,GAAAtR,EAAAmR,EAAMM,MAAMJ,EAASD,KAAU,GAAApR,EAC/BmR,EAAMM,MAAML,EAAY,EAAG1G,KAAO,GAElC,GAAI6G,EAAO,EAAG,CACnB,IAAMG,EAAcL,EAAU,EAC9B,OAAAG,EAAAA,EAAAA,EAAAA,EAAA,GAAAxR,EACKmR,EAAMM,MAAM,EAAGL,KAAU,GAAApR,EACzBmR,EAAMM,MAAML,EAAY,EAAGM,KAAY,GAAA,CAC1CJ,IACG,GAAAtR,EAAAmR,EAAMM,MAAMC,EAAahH,KAAO,GAGvC,OAAOyG,CACT,sBAlEM,SACJ3Q,EACA4E,EACAC,EACAO,GAEA,YAFA,IAAAA,IAAAA,EAAA,KAEiB,IAAbA,EAAuBT,EAAM3E,EAAO4E,EAAYC,GAEhD7E,EAAQ4E,GAEPK,EAAOL,EAAa5E,EAAO6E,EAAaD,EAAYQ,GACrDR,EAIA5E,EAAQ6E,GAEPI,EAAOjF,EAAQ6E,EAAYA,EAAaD,EAAYQ,GACrDP,EAIG7E,CACT,0BAGEA,EACAvC,EACA0T,GAEA,IAAMC,EAAapR,EAAmB,GAAXvC,EACrB4T,EAAU,SAACC,GAAkB,OAAAxM,KAAKO,IAAIiM,EAAQF,EAAW,EACzDG,EAASJ,EAAWpT,IAAIsT,GACxBG,EAAW1M,KAAKC,UAALD,KAAIkM,EAAA,GAAAxR,EAAQ+R,IAAM,IAEnC,OAAOJ,EAAWM,QAAO,SAAUC,EAAKJ,GACtC,OAAID,EAAQC,KAAWE,EACdF,EAEAI,CAEX,GACF,aStDM,SACJC,EACAC,EACAC,EACAhO,GAEA,OAAOiO,EAAAA,GAAYF,EAASC,EAAUhO,EAA/BiO,CAAuCH,EAChD,2BCFEhI,EACAoI,EACAlO,GAEA,OAAO4F,EAAcnD,EAAaqD,EAAMoI,EAAQlO,EAClD,oBCTM,SACJ8G,EACAlO,QAAA,IAAAA,IAAAA,EAAA,CAAA,GAEQ,IAAAuV,EAA8CvV,EAAOuV,KAA/CC,EAAwCxV,EAAOwV,WAAnCpJ,EAA4BpM,EAAOoM,UAAxB3L,EAAiBT,EAAOyV,KAAxBA,OAAI,IAAAhV,GAAQA,EAC3CM,EAAAgC,EAA0ByE,YAAS,GAAM,GAAxCkO,EAAQ3U,EAAA,GAAE4U,OAyBjB,OAvBA5N,EAAAA,WAAU,WACR,IAAMuD,EAAK4C,EAAIjJ,QACf,GAAKqG,EAAL,CAEA,IAAMsK,EAAW,IAAIC,sBACnB,SAACpV,OAACqV,EAAD/S,EAAAtC,EAAA,GAAM,GACDqV,EAAMC,gBACRJ,GAAY,GACRF,IACFG,EAASI,UAAUF,EAAMjK,QACzB+J,EAASK,eAEDR,GACVE,GAAY,EAEhB,GACA,CAAEJ,KAAMA,QAAAA,EAAQ,KAAMC,WAAUA,EAAEpJ,UAASA,IAI7C,OADAwJ,EAASM,QAAQ5K,GACV,WAAM,OAAAsK,EAASK,YAAY,CAlBzB,CAmBX,GAAG,CAAC/H,EAAKqH,EAAMC,EAAYpJ,EAAWqJ,IAE/BC,CACT,qCCtBM,SAAkBxI,EAAW/B,GACjC,OAAO6B,EAAcmB,EAAajB,EAAM/B,EAC1C,mCCdE+C,EACAiI,EACAC,QAAA,IAAAA,IAAAA,EAAA,IAEA,IAAMC,EAAQ/S,EAAAA,OAAO6S,GAErBpO,EAAAA,WAAU,WACRsO,EAAMpR,QAAUkR,CAClB,GAAC5B,EAAA,CAAG4B,GAAQpT,EAAKqT,QAEjBrO,EAAAA,WAAU,WACR,SAASuO,EAAQ5M,GACf,IAAM4B,EAAK4C,EAAIjJ,QACT4G,EAASnC,EAAMmC,OAEhBP,GAAOO,GAAWA,EAAO0K,cACzBjL,EAAGkL,SAAS3K,IACfwK,EAAMpR,QAAQyE,IAOlB,OAHA+G,SAASlF,iBAAiB,YAAa+K,GACvC7F,SAASlF,iBAAiB,aAAc+K,GAEjC,WACL7F,SAAShF,oBAAoB,YAAa6K,GAC1C7F,SAAShF,oBAAoB,aAAc6K,EAC7C,CACF,GAAG,CAACpI,GACN,oBCTM,SACJhB,EACAuJ,GAKA,MAAmB,mBAARA,EACFzJ,EAAckC,EAAehC,EAAMuJ,GAGrC3G,EAAkB5C,EAAMuJ,EACjC,sCCpBM,SAAmBvJ,EAAWwG,GAClC,OAAO1G,EAAcwG,EAActG,EAAMwG,EAC3C,oBjBuByB,SACvB1S,EACAgG,GACe,MAAA,CACf1G,KAAM,QACNN,QAAS,CACPgB,SAAQA,EACRkH,MAAOlB,aAAI,EAAJA,EAAMkB,MACbhI,QAAS8G,aAAI,EAAJA,EAAM9G,QACfC,SAAU6G,aAAI,EAAJA,EAAM7G,SAChB8G,WAAYD,aAAI,EAAJA,EAAMC,YAEpB,oBAEuB,SAACyP,GAA2B,MAAA,CACnDpW,KAAM,QACNN,QAAS,CAAEiB,MAAOyV,GAClB,mBAcsB,SACtBhV,EACAc,EACAwE,GACe,YAFf,IAAAxE,IAAAA,EAAAqG,KAEe,CACfvI,KAAM,OACNN,QAAS,CACP0B,UAASA,EACTc,WAAUA,EACVtC,QAAS8G,aAAI,EAAJA,EAAM9G,QACf+G,WAAYD,aAAI,EAAJA,EAAMC,YANL,uBAhBW,SAC1B5F,EACA2F,GACe,MAAA,CACf1G,KAAM,WACNN,QAAS,CACPqB,WAAUA,EACVnB,QAAS8G,aAAI,EAAJA,EAAM9G,QACf+G,WAAYD,aAAI,EAAJA,EAAMC,YAEpB,0CA5CwB,SACxBvG,EACAsG,GACe,MAAA,CACf1G,KAAM,SACNI,GAAEA,EACFV,QAAS,CACPqF,SAAU2B,aAAI,EAAJA,EAAM3B,SAChBC,OAAQ0B,aAAI,EAAJA,EAAM1B,OACdpF,QAAS8G,aAAI,EAAJA,EAAM9G,QACfC,SAAU6G,aAAI,EAAJA,EAAM7G,SAChB8G,WAAYD,aAAI,EAAJA,EAAMC,YAEpB"}
@@ -1,4 +0,0 @@
1
- export declare function clamp(value: number, lowerbound: number, upperbound: number): number;
2
- export declare function rubberClamp(value: number, lowerbound: number, upperbound: number, constant?: number): number;
3
- export declare function snapTo(value: number, velocity: number, snapPoints: Array<number>): number;
4
- export declare function move(array: Array<any>, moveIndex: number, toIndex: number): any[];