react-ui-animate 4.1.0 → 4.1.2

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.
@@ -1,4 +1,3 @@
1
1
  export * from './isDefined';
2
- export * from './delay';
3
2
  export * from './getToValue';
4
3
  export * from './animationType';
@@ -2,4 +2,4 @@ export { interpolate, bInterpolate } from './interpolation';
2
2
  export { MountedBlock, ScrollableBlock, TransitionBlock } from './modules';
3
3
  export { useValue, useValues, useMount, type UseValueConfig, type UseMountConfig, } from './hooks';
4
4
  export { withSpring, withTiming, withSequence, withDelay, withEase, withConfig, withDecay, withLoop, } from './controllers';
5
- export { delay, AnimationConfig } from './helpers';
5
+ export { AnimationConfig } from './helpers';
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { Easing, makeFluid as makeAnimated, fluid as animate, } from '@raidipesh
2
2
  export { AnimationConfig, MountedBlock, ScrollableBlock, TransitionBlock, } from './animation';
3
3
  export { interpolate, bInterpolate } from './animation';
4
4
  export { useValue, useMount, useValues } from './animation';
5
- export { withSpring, withTiming, withSequence, withDelay, withEase, withConfig, withDecay, withLoop, delay, } from './animation';
5
+ export { withSpring, withTiming, withSequence, withDelay, withEase, withConfig, withDecay, withLoop, } from './animation';
6
6
  export { useMeasure, useOutsideClick, useWindowDimension } from './hooks';
7
7
  export { useDrag, useGesture, useMouseMove, useScroll, useWheel, } from './gestures/hooks';
8
8
  export { bin, clamp, mix, rubberClamp, move, snapTo } from './gestures/helpers';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("@raidipesh78/re-motion"),t=require("react/jsx-runtime"),n=require("react");function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var r=i(n),o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},o(e,t)};function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},a.apply(this,arguments)};function u(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,o=n.call(e),f=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)f.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return f}function l(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<o;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var c=/[+-]?\d+(\.\d+)?|[\s]?\.\d+|#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/gi,h=/#[a-f\d]{3,}|transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|burntsienna|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen/gi,d={transparent:"#00000000",aliceblue:"#f0f8ffff",antiquewhite:"#faebd7ff",aqua:"#00ffffff",aquamarine:"#7fffd4ff",azure:"#f0ffffff",beige:"#f5f5dcff",bisque:"#ffe4c4ff",black:"#000000ff",blanchedalmond:"#ffebcdff",blue:"#0000ffff",blueviolet:"#8a2be2ff",brown:"#a52a2aff",burlywood:"#deb887ff",burntsienna:"#ea7e5dff",cadetblue:"#5f9ea0ff",chartreuse:"#7fff00ff",chocolate:"#d2691eff",coral:"#ff7f50ff",cornflowerblue:"#6495edff",cornsilk:"#fff8dcff",crimson:"#dc143cff",cyan:"#00ffffff",darkblue:"#00008bff",darkcyan:"#008b8bff",darkgoldenrod:"#b8860bff",darkgray:"#a9a9a9ff",darkgreen:"#006400ff",darkgrey:"#a9a9a9ff",darkkhaki:"#bdb76bff",darkmagenta:"#8b008bff",darkolivegreen:"#556b2fff",darkorange:"#ff8c00ff",darkorchid:"#9932ccff",darkred:"#8b0000ff",darksalmon:"#e9967aff",darkseagreen:"#8fbc8fff",darkslateblue:"#483d8bff",darkslategray:"#2f4f4fff",darkslategrey:"#2f4f4fff",darkturquoise:"#00ced1ff",darkviolet:"#9400d3ff",deeppink:"#ff1493ff",deepskyblue:"#00bfffff",dimgray:"#696969ff",dimgrey:"#696969ff",dodgerblue:"#1e90ffff",firebrick:"#b22222ff",floralwhite:"#fffaf0ff",forestgreen:"#228b22ff",fuchsia:"#ff00ffff",gainsboro:"#dcdcdcff",ghostwhite:"#f8f8ffff",gold:"#ffd700ff",goldenrod:"#daa520ff",gray:"#808080ff",green:"#008000ff",greenyellow:"#adff2fff",grey:"#808080ff",honeydew:"#f0fff0ff",hotpink:"#ff69b4ff",indianred:"#cd5c5cff",indigo:"#4b0082ff",ivory:"#fffff0ff",khaki:"#f0e68cff",lavender:"#e6e6faff",lavenderblush:"#fff0f5ff",lawngreen:"#7cfc00ff",lemonchiffon:"#fffacdff",lightblue:"#add8e6ff",lightcoral:"#f08080ff",lightcyan:"#e0ffffff",lightgoldenrodyellow:"#fafad2ff",lightgray:"#d3d3d3ff",lightgreen:"#90ee90ff",lightgrey:"#d3d3d3ff",lightpink:"#ffb6c1ff",lightsalmon:"#ffa07aff",lightseagreen:"#20b2aaff",lightskyblue:"#87cefaff",lightslategray:"#778899ff",lightslategrey:"#778899ff",lightsteelblue:"#b0c4deff",lightyellow:"#ffffe0ff",lime:"#00ff00ff",limegreen:"#32cd32ff",linen:"#faf0e6ff",magenta:"#ff00ffff",maroon:"#800000ff",mediumaquamarine:"#66cdaaff",mediumblue:"#0000cdff",mediumorchid:"#ba55d3ff",mediumpurple:"#9370dbff",mediumseagreen:"#3cb371ff",mediumslateblue:"#7b68eeff",mediumspringgreen:"#00fa9aff",mediumturquoise:"#48d1ccff",mediumvioletred:"#c71585ff",midnightblue:"#191970ff",mintcream:"#f5fffaff",mistyrose:"#ffe4e1ff",moccasin:"#ffe4b5ff",navajowhite:"#ffdeadff",navy:"#000080ff",oldlace:"#fdf5e6ff",olive:"#808000ff",olivedrab:"#6b8e23ff",orange:"#ffa500ff",orangered:"#ff4500ff",orchid:"#da70d6ff",palegoldenrod:"#eee8aaff",palegreen:"#98fb98ff",paleturquoise:"#afeeeeff",palevioletred:"#db7093ff",papayawhip:"#ffefd5ff",peachpuff:"#ffdab9ff",peru:"#cd853fff",pink:"#ffc0cbff",plum:"#dda0ddff",powderblue:"#b0e0e6ff",purple:"#800080ff",rebeccapurple:"#663399ff",red:"#ff0000ff",rosybrown:"#bc8f8fff",royalblue:"#4169e1ff",saddlebrown:"#8b4513ff",salmon:"#fa8072ff",sandybrown:"#f4a460ff",seagreen:"#2e8b57ff",seashell:"#fff5eeff",sienna:"#a0522dff",silver:"#c0c0c0ff",skyblue:"#87ceebff",slateblue:"#6a5acdff",slategray:"#708090ff",slategrey:"#708090ff",snow:"#fffafaff",springgreen:"#00ff7fff",steelblue:"#4682b4ff",tan:"#d2b48cff",teal:"#008080ff",thistle:"#d8bfd8ff",tomato:"#ff6347ff",turquoise:"#40e0d0ff",violet:"#ee82eeff",wheat:"#f5deb3ff",white:"#ffffffff",whitesmoke:"#f5f5f5ff",yellow:"#ffff00ff",yellowgreen:"#9acd32ff"};function v(e){var t=function(e){return e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,i){return"#"+t+t+n+n+i+i}))}(e),n=function(e){return 7===e.length?e+"FF":e}(t),i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16),a:parseInt(i[4],16)/255}}function m(e){var t=e.r,n=e.g,i=e.b,r=e.a;return"#"+(256|t).toString(16).slice(1)+(256|n).toString(16).slice(1)+(256|i).toString(16).slice(1)+(255*r|256).toString(16).slice(1)}var p=function(e,t,n,i){var r=s(t,4),o=r[0],f=r[1],a=r[2],u=r[3],l=e;if(l<o){if("identity"===n)return l;"clamp"===n&&(l=o)}if(l>f){if("identity"===i)return l;"clamp"===i&&(l=f)}return a===u?a:o===f?e<=o?a:u:(o===-1/0?l=-l:f===1/0?l-=o:l=(l-o)/(f-o),a===-1/0?l=-l:u===1/0?l+=a:l=l*(u-a)+a,l)},g=function(e,t,n,i){var r=s(t,4),o=r[0],f=r[1],a=r[2],u=r[3];if(a.length===u.length)return a.map((function(t,r){return"string"==typeof t?function(e,t){var n=s(t,4),i=n[0],r=n[1],o=n[2],f=n[3],a=v(o),u=v(f);return m({r:p(e,[i,r,a.r,u.r],"clamp","clamp"),g:p(e,[i,r,a.g,u.g],"clamp","clamp"),b:p(e,[i,r,a.b,u.b],"clamp","clamp"),a:p(e,[i,r,a.a,u.a],"clamp","clamp")})}(e,[o,f,t,u[r]]):p(e,[o,f,t,u[r]],n,i)}));throw new Error("Array length doesn't match")},y=function(e){return e.replace(c,"$")},b=function(e){return e.match(c).map((function(e){return-1!==e.indexOf("#")?e:Number(e)}))},x=function(e){return e.replace(h,(function(e){if(-1!==e.indexOf("#"))return m(v(e));if(Object.prototype.hasOwnProperty.call(d,e))return d[e];throw new Error("String cannot be parsed!")}))};function w(e,t,n,i){var r,o,f=null==i?void 0:i.extrapolate,a=null==i?void 0:i.extrapolateLeft,l=null==i?void 0:i.extrapolateRight,c=function(e,t,n){var i=t.length,r=[];e<t[0]?r=[t[0],t[1],n[0],n[1]]:e>t[i-1]&&(r=[t[i-2],t[i-1],n[i-2],n[i-1]]);for(var o=1;o<i;++o)if(e<=t[o]){r=[t[o-1],t[o],n[o-1],n[o]];break}return r}(e,t,n),h="extend";void 0!==a?h=a:void 0!==f&&(h=f);var d,v="extend";if(void 0!==l?v=l:void 0!==f&&(v=f),n.length){if("number"==typeof n[0])return p(e,c,h,v);if(Array.isArray(n[0]))return g(e,c,h,v);var m=s(c,4),w=m[0],E=m[1],k=m[2],M=m[3],_=x(k),I=x(M),A=y(_);if(d=I,y(_).trim().replace(/\s/g,"")===y(d).trim().replace(/\s/g,"")){var O=b(_),T=b(I),S=g(e,[w,E,O,T],h,v);try{for(var C=u(S),L=C.next();!L.done;L=C.next()){var Y=L.value;A=A.replace("$",Y)}}catch(e){r={error:e}}finally{try{L&&!L.done&&(o=C.return)&&o.call(C)}finally{if(r)throw r.error}}return A}throw new Error("Output range doesn't match string format!")}throw new Error("Output range cannot be Empty")}var E=function(t,n,i,r){return t instanceof e.FluidValue?t.interpolate(n,i,r):w(t,n,i,r)},k=function(e){return null!=e};function M(e,t){return"number"==typeof e||"string"==typeof e?{toValue:e,config:t}:e}var _={ELASTIC:{mass:1,friction:18,tension:250},BOUNCE:{duration:500,easing:e.Easing.bounce},EASE:{mass:1,friction:26,tension:170},STIFF:{mass:1,friction:18,tension:350},WOOBLE:{mass:1,friction:8,tension:250},EASE_IN:{duration:500,easing:e.Easing.in(e.Easing.ease)},EASE_OUT:{duration:500,easing:e.Easing.out(e.Easing.ease)},EASE_IN_OUT:{duration:500,easing:e.Easing.inOut(e.Easing.ease)},POWER1:{duration:500,easing:e.Easing.bezier(.17,.42,.51,.97)},POWER2:{duration:500,easing:e.Easing.bezier(.07,.11,.13,1)},POWER3:{duration:500,easing:e.Easing.bezier(.09,.7,.16,1.04)},POWER4:{duration:500,easing:e.Easing.bezier(.05,.54,0,1.03)},LINEAR:{duration:500,easing:e.Easing.linear}},I=function(){function t(t,n){this.iterationsSoFar=0,this.fluid=new e.FluidValue(t),this.defaultConfig=n}return t.prototype.getAnimation=function(t,n){if("string"==typeof t.toValue)return e.native(this.fluid,{toValue:t.toValue});if(k(null==n?void 0:n.duration)||(null==n?void 0:n.immediate)){if(!k(t.toValue))throw new Error("No `toValue` is defined");var i={toValue:t.toValue,delay:null==n?void 0:n.delay,duration:(null==n?void 0:n.immediate)?0:null==n?void 0:n.duration,easing:null==n?void 0:n.easing};return e.timing(this.fluid,i)}if(null==n?void 0:n.decay){var r={velocity:null==n?void 0:n.velocity,deceleration:null==n?void 0:n.deceleration,delay:null==n?void 0:n.delay};return e.decay(this.fluid,r)}if(!k(t.toValue))throw new Error("No `toValue` is defined");var o={toValue:t.toValue,delay:null==n?void 0:n.delay,mass:null==n?void 0:n.mass,tension:null==n?void 0:n.tension,friction:null==n?void 0:n.friction,restDistance:null==n?void 0:n.restDistance};return e.spring(this.fluid,o)},t.prototype.runAnimation=function(e,t){var n,i=this,r=a(a({},this.defaultConfig),e.config),o=null!==(n=null==r?void 0:r.loop)&&void 0!==n?n:0;this.fluid.removeAllListeners(),(null==r?void 0:r.onStart)&&r.onStart(this.fluid.get()),(null==r?void 0:r.onChange)&&this.fluid.addListener((function(e){var t;return null===(t=null==r?void 0:r.onChange)||void 0===t?void 0:t.call(r,e)}));var f=this.getAnimation(e,r),u=function(e){var n;e.finished&&(null===(n=null==r?void 0:r.onRest)||void 0===n||n.call(r,e.value),null==t||t(e.value))},s=function(e){e.finished&&(i.iterationsSoFar++,-1===o||i.iterationsSoFar<o?(f.reset(),f.start(s)):u(e))};f.start(k(null==r?void 0:r.loop)?s:u)},t.prototype.setFluid=function(e,t){var n=this;if(e)if(Array.isArray(e)){var i=0,r=function(o){++i!==e.length?n.runAnimation(e[i],r):t&&t(o)};this.runAnimation(e[i],r)}else this.runAnimation(e,t)},t.prototype.getFluid=function(){return this.fluid},t}(),A=function(e,t){var i=n.useRef(new I(e,t)).current,r=n.useCallback((function(e,t){i.setFluid(e,t)}),[]);return[n.useMemo((function(){return i.getFluid()}),[]),r]};function O(e,t){var i=n.useRef(!0),r=s(A(e,a(a({},_.EASE),t)),2),o=r[0],f=r[1],u=n.useCallback((function(e){Array.isArray(e)?queueMicrotask((function(){return f(e.map((function(e){return M(e)})))})):queueMicrotask((function(){return f(M(e))}))}),[]);return n.useLayoutEffect((function(){i.current||u(e),i.current=!1}),[e,t]),{set value(e){u(e)},get value(){return o},get currentValue(){return o.get()}}}var T=function(){function e(e,t){this.fluidControllers=e.map((function(e){return new I(e,t)}))}return e.prototype.setFluid=function(e,t){this.fluidControllers.map((function(n,i){n.setFluid(e[i],t)}))},e.prototype.getFluid=function(){return this.fluidControllers.map((function(e){return e.getFluid()}))},e}();function S(e,t){var i=function(e,t){var i=s(n.useState(!1),2),r=i[0],o=i[1],f=n.useRef(t).current,a=f.from,u=f.enter,l=f.exit,c=f.config,h=s(A(a,c),2),d=h[0],v=h[1];return n.useLayoutEffect((function(){e?(o(!0),queueMicrotask((function(){return v(Array.isArray(u)?u.map((function(e){return M(e,c)})):M(u,c))}))):v(Array.isArray(l)?l.map((function(e){return M(e,c)})):M(l,c),(function(){o(!1),d.getSubscriptions().forEach((function(e){return d.removeSubscription(e)}))}))}),[e]),function(e){return e(d,r)}}(e,t);return function(e){return i((function(t,n){return e({value:t},n)}))}}function C(e){return e?1:0}function L(e,t,n){return Math.min(Math.max(e,t),n)}function Y(e,t,n){return 0===t||Math.abs(t)===1/0?function(e,t){return Math.pow(e,5*t)}(e,n):e*t*n/(t+n*e)}var V=function(e,t){return{toValue:e,config:t}},R=function(e){return e.reduce((function(e,t){return Array.isArray(t)?e.push.apply(e,l([],s(R(t)),!1)):e.push(M(t)),e}),[])};function q(e,t){var n=new Map;return t.forEach((function(t){var i=s(t,3),r=i[0],o=i[1],f=i[2],a=void 0!==f&&f;n.set(r,function(e,t,n,i){return void 0===i&&(i=!1),e.forEach((function(e){e.addEventListener(t,n,i)})),function(){e.forEach((function(e){e.removeEventListener(t,n,i)}))}}(e,r,o,a))})),function(e){var t,i;try{for(var r=u(n.entries()),o=r.next();!o.done;o=r.next()){var f=s(o.value,2),a=f[0],l=f[1];if(!e)return void l();-1!==e.indexOf(a)&&l()}}catch(e){t={error:e}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(t)throw t.error}}}}var D=function(e,t){return{x:e,y:t}},X=function(){function e(){this.lastTimeStamp=Date.now(),this.isActive=!1,this.targetElements=[]}return e.prototype._initEvents=function(){},e.prototype._cancelEvents=function(){this._subscribe&&this._subscribe()},e.prototype.applyCallback=function(e){this.callback=e},e.prototype.applyGesture=function(e){var t=this,n=e.targetElement,i=e.targetElements,r=e.callback,o=e.config;return this.targetElement=n,this.targetElements=i.map((function(e){return e.current})),this.callback=r,this.config=o,this._initEvents(),function(){return t._subscribe&&t._subscribe()}},e._VELOCITY_LIMIT=20,e}(),F=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movementStart=D(0,0),t.initialMovement=D(0,0),t.movement=D(0,0),t.previousMovement=D(0,0),t.translation=D(0,0),t.offset=D(0,0),t.velocity=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){(this.targetElement||this.targetElements.length>0)&&(this._subscribe=q([window],[["mousedown",this.pointerDown.bind(this)],["mousemove",this.pointerMove.bind(this)],["mouseup",this.pointerUp.bind(this)],["touchstart",this.pointerDown.bind(this),{passive:!1}],["touchmove",this.pointerMove.bind(this),{passive:!1}],["touchend",this.pointerUp.bind(this)]]))},t.prototype._cancelEvents=function(){this._subscribe&&this._subscribe(["mousedown","mousemove","touchstart","touchmove"])},t.prototype._handleCallback=function(){var e=this;this.callback&&this.callback({args:[this.currentIndex],down:this.isActive,movementX:this.movement.x,movementY:this.movement.y,offsetX:this.translation.x,offsetY:this.translation.y,velocityX:this.velocity.x,velocityY:this.velocity.y,distanceX:Math.abs(this.movement.x),distanceY:Math.abs(this.movement.y),directionX:Math.sign(this.movement.x),directionY:Math.sign(this.movement.y),cancel:function(){e._cancelEvents()}})},t.prototype.pointerDown=function(e){var t;"touchstart"===e.type?this.movementStart={x:e.touches[0].clientX,y:e.touches[0].clientY}:this.movementStart={x:e.clientX,y:e.clientY},this.movement={x:0,y:0},this.offset={x:this.translation.x,y:this.translation.y},this.previousMovement={x:0,y:0},this.velocity={x:0,y:0};var n=this.targetElements.find((function(t){return t===e.target}));if(e.target===this.targetElement||n){this.isActive=!0,e.preventDefault(),n&&(this.currentIndex=this.targetElements.indexOf(n));var i=(null===(t=this.config)||void 0===t?void 0:t.initial)&&this.config.initial(),r=null==i?void 0:i.movementX,o=null==i?void 0:i.movementY;this.initialMovement={x:null!=r?r:0,y:null!=o?o:0},this.movement={x:this.initialMovement.x,y:this.initialMovement.y},this.previousMovement={x:this.initialMovement.x,y:this.initialMovement.y},this._handleCallback()}},t.prototype.pointerMove=function(e){if(this.isActive){e.preventDefault();var t=Date.now(),n=L(t-this.lastTimeStamp,.1,64);this.lastTimeStamp=t;var i=n/1e3;"touchmove"===e.type?this.movement={x:this.initialMovement.x+(e.touches[0].clientX-this.movementStart.x),y:this.initialMovement.y+(e.touches[0].clientY-this.movementStart.y)}:this.movement={x:this.initialMovement.x+(e.clientX-this.movementStart.x),y:this.initialMovement.y+(e.clientY-this.movementStart.y)},this.translation={x:this.offset.x+this.movement.x,y:this.offset.y+this.movement.y},this.velocity={x:L((this.movement.x-this.previousMovement.x)/i/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L((this.movement.y-this.previousMovement.y)/i/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()}},t.prototype.pointerUp=function(){this.isActive&&(this.isActive=!1,this._handleCallback(),this._cancelEvents(),this._initEvents())},t}(X),j=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.velocity=D(0,0),t.direction=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement?this._subscribe=q([this.targetElement],[["mousemove",this.onMouseMove.bind(this)]]):this.targetElements.length>0?this._subscribe=q(this.targetElements,[["mousemove",this.onMouseMove.bind(this)]]):this._subscribe=q([window],[["mousemove",this.onMouseMove.bind(this)]])},t.prototype._handleCallback=function(){var e;this.callback&&this.callback({args:[this.currentIndex],event:this.event,isMoving:this.isActive,target:null===(e=this.event)||void 0===e?void 0:e.target,mouseX:this.movement.x,mouseY:this.movement.y,velocityX:this.velocity.x,velocityY:this.velocity.y,directionX:this.direction.x,directionY:this.direction.y})},t.prototype.onMouseMove=function(e){var t=this,n=this.targetElements.find((function(t){return t===e.target}));n&&(this.currentIndex=this.targetElements.indexOf(n)),this.event=e;var i=Date.now(),r=Math.min(i-this.lastTimeStamp,64);this.lastTimeStamp=i;var o=r/1e3,f=e.clientX,a=e.clientY;this.movement={x:f,y:a},-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.direction={x:0,y:0},t.velocity={x:0,y:0},t._handleCallback()}),250);var u=this.movement.x-this.previousMovement.x,s=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(u),y:Math.sign(s)},this.velocity={x:L(u/o/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(s/o/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t}(X),W=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.direction=D(0,0),t.velocity=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement?this._subscribe=q([this.targetElement],[["scroll",this.scrollElementListener.bind(this)]]):this._subscribe=q([window],[["scroll",this.scrollListener.bind(this)]])},t.prototype._handleCallback=function(){this.callback&&this.callback({isScrolling:this.isActive,scrollX:this.movement.x,scrollY:this.movement.y,velocityX:this.velocity.x,velocityY:this.velocity.y,directionX:this.direction.x,directionY:this.direction.y})},t.prototype.onScroll=function(e){var t=this,n=e.x,i=e.y,r=Date.now(),o=Math.min(r-this.lastTimeStamp,64);this.lastTimeStamp=r;var f=o/1e3;this.movement={x:n,y:i},-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.direction={x:0,y:0},t.velocity={x:0,y:0},t._handleCallback()}),250);var a=this.movement.x-this.previousMovement.x,u=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(a),y:Math.sign(u)},this.velocity={x:L(a/f/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(u/f/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t.prototype.scrollListener=function(){var e=window.pageYOffset,t=window.pageXOffset;this.onScroll({x:t,y:e})},t.prototype.scrollElementListener=function(){var e,t,n=(null===(e=this.targetElement)||void 0===e?void 0:e.scrollLeft)||0,i=(null===(t=this.targetElement)||void 0===t?void 0:t.scrollTop)||0;this.onScroll({x:n,y:i})},t}(X),P=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.direction=D(0,0),t.velocity=D(0,0),t.delta=D(0,0),t.offset=D(0,0),t.translation=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement&&(this._subscribe=q([this.targetElement],[["wheel",this.onWheel.bind(this)]]))},t.prototype._handleCallback=function(){this.callback&&this.callback({target:this.targetElement,isWheeling:this.isActive,deltaX:this.delta.x,deltaY:this.delta.y,directionX:this.direction.x,directionY:this.direction.y,movementX:this.movement.x,movementY:this.movement.y,offsetX:this.offset.x,offsetY:this.offset.y,velocityX:this.velocity.x,velocityY:this.velocity.y})},t.prototype.onWheel=function(e){var t=this,n=e.deltaX,i=e.deltaY,r=e.deltaMode,o=Date.now(),f=Math.min(o-this.lastTimeStamp,64);this.lastTimeStamp=o;var a=f/1e3;this.isActive=!0,-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.translation={x:t.offset.x,y:t.offset.y},t._handleCallback(),t.velocity={x:0,y:0},t.movement={x:0,y:0}}),200),1===r?(n*=40,i*=40):2===r&&(n*=800,i*=800),this.delta={x:n,y:i},this.movement={x:this.movement.x+n,y:this.movement.y+i},this.offset={x:this.translation.x+this.movement.x,y:this.translation.y+this.movement.y};var u=this.movement.x-this.previousMovement.x,s=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(u),y:Math.sign(s)},this.velocity={x:L(u/a/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(s/a/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t}(X),z=function(e){var t=r.useRef(),n=r.useRef([]),i=r.useRef(new Map).current;return r.useEffect((function(){var t,n;try{for(var r=u(i.entries()),o=r.next();!o.done;o=r.next()){var f=s(o.value,2)[1],a=f.keyIndex,l=f.gesture,c=s(e[a],3)[2];l.applyCallback(c)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}),[e]),r.useEffect((function(){return e.forEach((function(e,r){var o=s(e,4),f=o[0],a=o[1],u=o[2],l=o[3];queueMicrotask((function(){return i.set(f,{keyIndex:r,gesture:a,unsubscribe:a.applyGesture({targetElement:t.current,targetElements:n.current,callback:u,config:l})})}))})),function(){var e,t;try{for(var n=u(i.entries()),r=n.next();!r.done;r=n.next()){var o=s(r.value,2)[1].unsubscribe;o&&o()}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}})),function(e){return null==e?{ref:t}:(n.current[e]=n.current[e]||r.createRef(),{ref:n.current[e]})}};Object.defineProperty(exports,"Easing",{enumerable:!0,get:function(){return e.Easing}}),Object.defineProperty(exports,"animate",{enumerable:!0,get:function(){return e.fluid}}),Object.defineProperty(exports,"makeAnimated",{enumerable:!0,get:function(){return e.makeFluid}}),exports.AnimationConfig=_,exports.MountedBlock=function(e){var n=e.state,i=e.children,r=e.from,o=void 0===r?0:r,f=e.enter,a=void 0===f?1:f,u=e.exit,s=S(n,{from:o,enter:a,exit:void 0===u?0:u,config:e.config});return t.jsx(t.Fragment,{children:s((function(e,t){return t&&i({value:e.value})}))})},exports.ScrollableBlock=function(e){var n=e.children,i=e.direction,o=void 0===i?"single":i,f=e.animationConfig,a=e.threshold,u=void 0===a?.2:a,l=r.useRef(null),c=O(0,f);return r.useEffect((function(){var e=l.current,t=new IntersectionObserver((function(e){s(e,1)[0].isIntersecting?c.value=1:"both"===o&&(c.value=0)}),{root:null,threshold:u});return e&&t.observe(e),function(){e&&t.unobserve(e)}}),[]),t.jsx("div",{ref:l,children:n&&n({value:c.value})})},exports.TransitionBlock=function(e){var n=e.state,i=e.children,r=e.config,o=O(C(n),r);return t.jsx(t.Fragment,{children:i({value:o.value})})},exports.bInterpolate=function(e,t,n,i){return E(e,[0,1],[t,n],i)},exports.bin=C,exports.clamp=L,exports.delay=function(e){return new Promise((function(t){setTimeout((function(){return t(null)}),e)}))},exports.interpolate=E,exports.mix=function(e,t,n){return t*(1-e)+n*e},exports.move=function(e,t,n){var i=e[t],r=e.length,o=t-n;if(o>0)return l(l(l(l([],s(e.slice(0,n)),!1),[i],!1),s(e.slice(n,t)),!1),s(e.slice(t+1,r)),!1);if(o<0){var f=n+1;return l(l(l(l([],s(e.slice(0,t)),!1),s(e.slice(t+1,f)),!1),[i],!1),s(e.slice(f,r)),!1)}return e},exports.rubberClamp=function(e,t,n,i){return void 0===i&&(i=.15),0===i?L(e,t,n):e<t?-Y(t-e,n-t,i)+t:e>n?+Y(e-n,n-t,i)+n:e},exports.snapTo=function(e,t,n){var i=e+.2*t,r=function(e){return Math.abs(e-i)},o=n.map(r),f=Math.min.apply(Math,l([],s(o),!1));return n.reduce((function(e,t){return r(t)===f?t:e}))},exports.useDrag=function(e,t){var n=r.useRef(new F).current;return z([["drag",n,e,t]])},exports.useGesture=function(e){var t=e.onDrag,n=e.onWheel,i=e.onScroll,o=e.onMouseMove,f=r.useRef(new F).current,a=r.useRef(new P).current,u=r.useRef(new W).current,s=r.useRef(new j).current;return z([["drag",f,t],["wheel",a,n],["scroll",u,i],["move",s,o]])},exports.useMeasure=function(e,t){var i=n.useRef(null),r=n.useRef([]),o=n.useRef(e);return n.useEffect((function(){return o.current=e,function(){o.current=function(){return!1}}}),t),n.useEffect((function(){var e=i.current||document.documentElement,t=r.current,n=new ResizeObserver((function(t){var n=s(t,1)[0].target.getBoundingClientRect(),i=n.left,r=n.top,f=n.width,a=n.height,u=window.pageXOffset,l=window.pageYOffset;if(o){if(e===document.documentElement)return;o.current({left:i+u,top:r+l,width:f,height:a,vLeft:i,vTop:r})}})),f=new ResizeObserver((function(e){var t=[],n=[],i=[],r=[],f=[],a=[];e.forEach((function(e){var o=e.target.getBoundingClientRect(),u=o.left,s=o.top,l=o.width,c=o.height,h=u+window.pageXOffset,d=s+window.pageYOffset;t.push(h),n.push(d),i.push(l),r.push(c),f.push(u),a.push(s)})),o&&o.current({left:t,top:n,width:i,height:r,vLeft:f,vTop:a})}));return e&&(e===document.documentElement&&t.length>0?t.forEach((function(e){f.observe(e.current)})):n.observe(e)),function(){e&&(e===document.documentElement&&t.length>0?t.forEach((function(e){f.unobserve(e.current)})):n.unobserve(e))}}),[]),function(e){return null==e?{ref:i}:(r.current[e]=r.current[e]||n.createRef(),{ref:r.current[e]})}},exports.useMount=S,exports.useMouseMove=function(e){var t=r.useRef(new j).current;return z([["move",t,e]])},exports.useOutsideClick=function(e,t,i){var r=n.useRef();r.current||(r.current=t),n.useEffect((function(){return r.current=t,function(){r.current=function(){return!1}}}),i),n.useEffect((function(){var t=q([document],[["mousedown",function(t){var n=t.target;n&&n.isConnected&&(e.current&&!e.current.contains(n)&&r.current&&r.current(t))}]]);return function(){return t&&t()}}),[])},exports.useScroll=function(e){var t=r.useRef(new W).current;return z([["scroll",t,e]])},exports.useValue=O,exports.useValues=function(e,t){var i=n.useRef(!0),r=s(function(e,t){var i=n.useRef(new T(e,t)).current,r=n.useCallback((function(e,t){i.setFluid(e,t)}),[]);return[n.useMemo((function(){return i.getFluid()}),[]),r]}(e,a(a({},_.EASE),t)),2),o=r[0],f=r[1],u=n.useCallback((function(e){var t=e.map((function(e){return Array.isArray(e)?e.map((function(e){return M(e)})):M(e)}));queueMicrotask((function(){return f(t)}))}),[]);return n.useLayoutEffect((function(){i.current||u(e),i.current=!1}),[e,t]),{set value(e){u(e)},get value(){return o},get currentValue(){return o.map((function(e){return e.get()}))}}},exports.useWheel=function(e){var t=r.useRef(new P).current;return z([["wheel",t,e]])},exports.useWindowDimension=function(e,t){var i=n.useRef({width:0,height:0,innerWidth:0,innerHeight:0}),r=n.useRef(e);n.useEffect((function(){return r.current=e,function(){r.current=function(){return!1}}}),t),n.useEffect((function(){var e=new ResizeObserver((function(e){var t=s(e,1)[0].target,n=t.clientWidth,o=t.clientHeight,f=window.innerWidth,u=window.innerHeight;i.current={width:n,height:o,innerWidth:f,innerHeight:u},r&&r.current(a({},i.current))}));return e.observe(document.documentElement),function(){return e.unobserve(document.documentElement)}}),[])},exports.withConfig=V,exports.withDecay=function(e){return{config:a({decay:!0},e)}},exports.withDelay=function(e,t){return a(a({},t),{config:a(a({},t.config),{delay:e})})},exports.withEase=function(e,t){return V(e,a(a({},_.EASE),t))},exports.withLoop=function(e,t){if(Array.isArray(e)){for(var n=[],i=0;i<t;i++)n=n.concat(e);return n}return Array(t).fill({toValue:e.toValue,config:a(a({},e.config),{loop:t})})},exports.withSequence=function(e){return R(e)},exports.withSpring=function(e,t){return V(e,a(a({},_.ELASTIC),t))},exports.withTiming=function(e,t){return V(e,a({duration:250},t))};
1
+ var e=require("@raidipesh78/re-motion"),t=require("react/jsx-runtime"),n=require("react");function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var r=i(n),o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},o(e,t)};function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},a.apply(this,arguments)};function u(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,o=n.call(e),f=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)f.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return f}function l(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<o;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var c=/[+-]?\d+(\.\d+)?|[\s]?\.\d+|#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/gi,h=/#[a-f\d]{3,}|transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|burntsienna|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen/gi,d={transparent:"#00000000",aliceblue:"#f0f8ffff",antiquewhite:"#faebd7ff",aqua:"#00ffffff",aquamarine:"#7fffd4ff",azure:"#f0ffffff",beige:"#f5f5dcff",bisque:"#ffe4c4ff",black:"#000000ff",blanchedalmond:"#ffebcdff",blue:"#0000ffff",blueviolet:"#8a2be2ff",brown:"#a52a2aff",burlywood:"#deb887ff",burntsienna:"#ea7e5dff",cadetblue:"#5f9ea0ff",chartreuse:"#7fff00ff",chocolate:"#d2691eff",coral:"#ff7f50ff",cornflowerblue:"#6495edff",cornsilk:"#fff8dcff",crimson:"#dc143cff",cyan:"#00ffffff",darkblue:"#00008bff",darkcyan:"#008b8bff",darkgoldenrod:"#b8860bff",darkgray:"#a9a9a9ff",darkgreen:"#006400ff",darkgrey:"#a9a9a9ff",darkkhaki:"#bdb76bff",darkmagenta:"#8b008bff",darkolivegreen:"#556b2fff",darkorange:"#ff8c00ff",darkorchid:"#9932ccff",darkred:"#8b0000ff",darksalmon:"#e9967aff",darkseagreen:"#8fbc8fff",darkslateblue:"#483d8bff",darkslategray:"#2f4f4fff",darkslategrey:"#2f4f4fff",darkturquoise:"#00ced1ff",darkviolet:"#9400d3ff",deeppink:"#ff1493ff",deepskyblue:"#00bfffff",dimgray:"#696969ff",dimgrey:"#696969ff",dodgerblue:"#1e90ffff",firebrick:"#b22222ff",floralwhite:"#fffaf0ff",forestgreen:"#228b22ff",fuchsia:"#ff00ffff",gainsboro:"#dcdcdcff",ghostwhite:"#f8f8ffff",gold:"#ffd700ff",goldenrod:"#daa520ff",gray:"#808080ff",green:"#008000ff",greenyellow:"#adff2fff",grey:"#808080ff",honeydew:"#f0fff0ff",hotpink:"#ff69b4ff",indianred:"#cd5c5cff",indigo:"#4b0082ff",ivory:"#fffff0ff",khaki:"#f0e68cff",lavender:"#e6e6faff",lavenderblush:"#fff0f5ff",lawngreen:"#7cfc00ff",lemonchiffon:"#fffacdff",lightblue:"#add8e6ff",lightcoral:"#f08080ff",lightcyan:"#e0ffffff",lightgoldenrodyellow:"#fafad2ff",lightgray:"#d3d3d3ff",lightgreen:"#90ee90ff",lightgrey:"#d3d3d3ff",lightpink:"#ffb6c1ff",lightsalmon:"#ffa07aff",lightseagreen:"#20b2aaff",lightskyblue:"#87cefaff",lightslategray:"#778899ff",lightslategrey:"#778899ff",lightsteelblue:"#b0c4deff",lightyellow:"#ffffe0ff",lime:"#00ff00ff",limegreen:"#32cd32ff",linen:"#faf0e6ff",magenta:"#ff00ffff",maroon:"#800000ff",mediumaquamarine:"#66cdaaff",mediumblue:"#0000cdff",mediumorchid:"#ba55d3ff",mediumpurple:"#9370dbff",mediumseagreen:"#3cb371ff",mediumslateblue:"#7b68eeff",mediumspringgreen:"#00fa9aff",mediumturquoise:"#48d1ccff",mediumvioletred:"#c71585ff",midnightblue:"#191970ff",mintcream:"#f5fffaff",mistyrose:"#ffe4e1ff",moccasin:"#ffe4b5ff",navajowhite:"#ffdeadff",navy:"#000080ff",oldlace:"#fdf5e6ff",olive:"#808000ff",olivedrab:"#6b8e23ff",orange:"#ffa500ff",orangered:"#ff4500ff",orchid:"#da70d6ff",palegoldenrod:"#eee8aaff",palegreen:"#98fb98ff",paleturquoise:"#afeeeeff",palevioletred:"#db7093ff",papayawhip:"#ffefd5ff",peachpuff:"#ffdab9ff",peru:"#cd853fff",pink:"#ffc0cbff",plum:"#dda0ddff",powderblue:"#b0e0e6ff",purple:"#800080ff",rebeccapurple:"#663399ff",red:"#ff0000ff",rosybrown:"#bc8f8fff",royalblue:"#4169e1ff",saddlebrown:"#8b4513ff",salmon:"#fa8072ff",sandybrown:"#f4a460ff",seagreen:"#2e8b57ff",seashell:"#fff5eeff",sienna:"#a0522dff",silver:"#c0c0c0ff",skyblue:"#87ceebff",slateblue:"#6a5acdff",slategray:"#708090ff",slategrey:"#708090ff",snow:"#fffafaff",springgreen:"#00ff7fff",steelblue:"#4682b4ff",tan:"#d2b48cff",teal:"#008080ff",thistle:"#d8bfd8ff",tomato:"#ff6347ff",turquoise:"#40e0d0ff",violet:"#ee82eeff",wheat:"#f5deb3ff",white:"#ffffffff",whitesmoke:"#f5f5f5ff",yellow:"#ffff00ff",yellowgreen:"#9acd32ff"};function v(e){var t=function(e){return e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,i){return"#"+t+t+n+n+i+i}))}(e),n=function(e){return 7===e.length?e+"FF":e}(t),i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16),a:parseInt(i[4],16)/255}}function m(e){var t=e.r,n=e.g,i=e.b,r=e.a;return"#"+(256|t).toString(16).slice(1)+(256|n).toString(16).slice(1)+(256|i).toString(16).slice(1)+(255*r|256).toString(16).slice(1)}var p=function(e,t,n,i){var r=s(t,4),o=r[0],f=r[1],a=r[2],u=r[3],l=e;if(l<o){if("identity"===n)return l;"clamp"===n&&(l=o)}if(l>f){if("identity"===i)return l;"clamp"===i&&(l=f)}return a===u?a:o===f?e<=o?a:u:(o===-1/0?l=-l:f===1/0?l-=o:l=(l-o)/(f-o),a===-1/0?l=-l:u===1/0?l+=a:l=l*(u-a)+a,l)},g=function(e,t,n,i){var r=s(t,4),o=r[0],f=r[1],a=r[2],u=r[3];if(a.length===u.length)return a.map((function(t,r){return"string"==typeof t?function(e,t){var n=s(t,4),i=n[0],r=n[1],o=n[2],f=n[3],a=v(o),u=v(f);return m({r:p(e,[i,r,a.r,u.r],"clamp","clamp"),g:p(e,[i,r,a.g,u.g],"clamp","clamp"),b:p(e,[i,r,a.b,u.b],"clamp","clamp"),a:p(e,[i,r,a.a,u.a],"clamp","clamp")})}(e,[o,f,t,u[r]]):p(e,[o,f,t,u[r]],n,i)}));throw new Error("Array length doesn't match")},y=function(e){return e.replace(c,"$")},b=function(e){return e.match(c).map((function(e){return-1!==e.indexOf("#")?e:Number(e)}))},x=function(e){return e.replace(h,(function(e){if(-1!==e.indexOf("#"))return m(v(e));if(Object.prototype.hasOwnProperty.call(d,e))return d[e];throw new Error("String cannot be parsed!")}))};function w(e,t,n,i){var r,o,f=null==i?void 0:i.extrapolate,a=null==i?void 0:i.extrapolateLeft,l=null==i?void 0:i.extrapolateRight,c=function(e,t,n){var i=t.length,r=[];e<t[0]?r=[t[0],t[1],n[0],n[1]]:e>t[i-1]&&(r=[t[i-2],t[i-1],n[i-2],n[i-1]]);for(var o=1;o<i;++o)if(e<=t[o]){r=[t[o-1],t[o],n[o-1],n[o]];break}return r}(e,t,n),h="extend";void 0!==a?h=a:void 0!==f&&(h=f);var d,v="extend";if(void 0!==l?v=l:void 0!==f&&(v=f),n.length){if("number"==typeof n[0])return p(e,c,h,v);if(Array.isArray(n[0]))return g(e,c,h,v);var m=s(c,4),w=m[0],E=m[1],k=m[2],M=m[3],_=x(k),I=x(M),A=y(_);if(d=I,y(_).trim().replace(/\s/g,"")===y(d).trim().replace(/\s/g,"")){var O=b(_),T=b(I),S=g(e,[w,E,O,T],h,v);try{for(var C=u(S),L=C.next();!L.done;L=C.next()){var Y=L.value;A=A.replace("$",Y)}}catch(e){r={error:e}}finally{try{L&&!L.done&&(o=C.return)&&o.call(C)}finally{if(r)throw r.error}}return A}throw new Error("Output range doesn't match string format!")}throw new Error("Output range cannot be Empty")}var E=function(t,n,i,r){return t instanceof e.FluidValue?t.interpolate(n,i,r):w(t,n,i,r)},k=function(e){return null!=e};function M(e,t){return"number"==typeof e||"string"==typeof e?{toValue:e,config:t}:e}var _={ELASTIC:{mass:1,friction:18,tension:250},BOUNCE:{duration:500,easing:e.Easing.bounce},EASE:{mass:1,friction:26,tension:170},STIFF:{mass:1,friction:18,tension:350},WOOBLE:{mass:1,friction:8,tension:250},EASE_IN:{duration:500,easing:e.Easing.in(e.Easing.ease)},EASE_OUT:{duration:500,easing:e.Easing.out(e.Easing.ease)},EASE_IN_OUT:{duration:500,easing:e.Easing.inOut(e.Easing.ease)},POWER1:{duration:500,easing:e.Easing.bezier(.17,.42,.51,.97)},POWER2:{duration:500,easing:e.Easing.bezier(.07,.11,.13,1)},POWER3:{duration:500,easing:e.Easing.bezier(.09,.7,.16,1.04)},POWER4:{duration:500,easing:e.Easing.bezier(.05,.54,0,1.03)},LINEAR:{duration:500,easing:e.Easing.linear}},I=function(){function t(t,n){this.iterationsSoFar=0,this.fluid=new e.FluidValue(t),this.defaultConfig=n}return t.prototype.getAnimation=function(t,n){if("string"==typeof t.toValue)return e.native(this.fluid,{toValue:t.toValue});if(k(null==n?void 0:n.duration)||(null==n?void 0:n.immediate)){if(!k(t.toValue))throw new Error("No `toValue` is defined");var i={toValue:t.toValue,duration:(null==n?void 0:n.immediate)?0:null==n?void 0:n.duration,easing:null==n?void 0:n.easing};return e.timing(this.fluid,i)}if(null==n?void 0:n.decay){var r={velocity:null==n?void 0:n.velocity,deceleration:null==n?void 0:n.deceleration};return e.decay(this.fluid,r)}if(!k(t.toValue))throw new Error("No `toValue` is defined");var o={toValue:t.toValue,mass:null==n?void 0:n.mass,tension:null==n?void 0:n.tension,friction:null==n?void 0:n.friction,restDistance:null==n?void 0:n.restDistance};return e.spring(this.fluid,o)},t.prototype.runAnimation=function(t,n){var i,r,o=this,f=a(a({},this.defaultConfig),t.config),u=null!==(i=null==f?void 0:f.loop)&&void 0!==i?i:0,s=null!==(r=null==f?void 0:f.delay)&&void 0!==r?r:0;this.fluid.removeAllListeners(),(null==f?void 0:f.onStart)&&f.onStart(this.fluid.get()),(null==f?void 0:f.onChange)&&this.fluid.addListener((function(e){var t;return null===(t=null==f?void 0:f.onChange)||void 0===t?void 0:t.call(f,e)}));var l=e.sequence([e.delay(s),this.getAnimation(t,f)]),c=function(e){var t;e.finished&&(null===(t=null==f?void 0:f.onRest)||void 0===t||t.call(f,e.value),null==n||n(e.value))},h=function(e){e.finished&&(o.iterationsSoFar++,-1===u||o.iterationsSoFar<u?(l.reset(),l.start(h)):c(e))};l.start(k(null==f?void 0:f.loop)?h:c)},t.prototype.setFluid=function(e,t){var n=this;if(e)if(Array.isArray(e)){var i=0,r=function(o){++i!==e.length?n.runAnimation(e[i],r):t&&t(o)};this.runAnimation(e[i],r)}else this.runAnimation(e,t)},t.prototype.getFluid=function(){return this.fluid},t}(),A=function(e,t){var i=n.useRef(new I(e,t)).current,r=n.useCallback((function(e,t){i.setFluid(e,t)}),[]);return[n.useMemo((function(){return i.getFluid()}),[]),r]};function O(e,t){var i=n.useRef(!0),r=s(A(e,a(a({},_.EASE),t)),2),o=r[0],f=r[1],u=n.useCallback((function(e){Array.isArray(e)?queueMicrotask((function(){return f(e.map((function(e){return M(e)})))})):queueMicrotask((function(){return f(M(e))}))}),[]);return n.useLayoutEffect((function(){i.current||u(e),i.current=!1}),[e,t]),{set value(e){u(e)},get value(){return o},get currentValue(){return o.get()}}}var T=function(){function e(e,t){this.fluidControllers=e.map((function(e){return new I(e,t)}))}return e.prototype.setFluid=function(e,t){this.fluidControllers.map((function(n,i){n.setFluid(e[i],t)}))},e.prototype.getFluid=function(){return this.fluidControllers.map((function(e){return e.getFluid()}))},e}();function S(e,t){var i=function(e,t){var i=s(n.useState(!1),2),r=i[0],o=i[1],f=n.useRef(t).current,a=f.from,u=f.enter,l=f.exit,c=f.config,h=s(A(a,c),2),d=h[0],v=h[1];return n.useLayoutEffect((function(){e?(o(!0),queueMicrotask((function(){return v(Array.isArray(u)?u.map((function(e){return M(e,c)})):M(u,c))}))):v(Array.isArray(l)?l.map((function(e){return M(e,c)})):M(l,c),(function(){o(!1),d.getSubscriptions().forEach((function(e){return d.removeSubscription(e)}))}))}),[e]),function(e){return e(d,r)}}(e,t);return function(e){return i((function(t,n){return e({value:t},n)}))}}function C(e){return e?1:0}function L(e,t,n){return Math.min(Math.max(e,t),n)}function Y(e,t,n){return 0===t||Math.abs(t)===1/0?function(e,t){return Math.pow(e,5*t)}(e,n):e*t*n/(t+n*e)}var V=function(e,t){return{toValue:e,config:t}},R=function(e){return e.reduce((function(e,t){return Array.isArray(t)?e.push.apply(e,l([],s(R(t)),!1)):e.push(M(t)),e}),[])};function q(e,t){var n=new Map;return t.forEach((function(t){var i=s(t,3),r=i[0],o=i[1],f=i[2],a=void 0!==f&&f;n.set(r,function(e,t,n,i){return void 0===i&&(i=!1),e.forEach((function(e){e.addEventListener(t,n,i)})),function(){e.forEach((function(e){e.removeEventListener(t,n,i)}))}}(e,r,o,a))})),function(e){var t,i;try{for(var r=u(n.entries()),o=r.next();!o.done;o=r.next()){var f=s(o.value,2),a=f[0],l=f[1];if(!e)return void l();-1!==e.indexOf(a)&&l()}}catch(e){t={error:e}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(t)throw t.error}}}}var D=function(e,t){return{x:e,y:t}},X=function(){function e(){this.lastTimeStamp=Date.now(),this.isActive=!1,this.targetElements=[]}return e.prototype._initEvents=function(){},e.prototype._cancelEvents=function(){this._subscribe&&this._subscribe()},e.prototype.applyCallback=function(e){this.callback=e},e.prototype.applyGesture=function(e){var t=this,n=e.targetElement,i=e.targetElements,r=e.callback,o=e.config;return this.targetElement=n,this.targetElements=i.map((function(e){return e.current})),this.callback=r,this.config=o,this._initEvents(),function(){return t._subscribe&&t._subscribe()}},e._VELOCITY_LIMIT=20,e}(),F=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movementStart=D(0,0),t.initialMovement=D(0,0),t.movement=D(0,0),t.previousMovement=D(0,0),t.translation=D(0,0),t.offset=D(0,0),t.velocity=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){(this.targetElement||this.targetElements.length>0)&&(this._subscribe=q([window],[["mousedown",this.pointerDown.bind(this)],["mousemove",this.pointerMove.bind(this)],["mouseup",this.pointerUp.bind(this)],["touchstart",this.pointerDown.bind(this),{passive:!1}],["touchmove",this.pointerMove.bind(this),{passive:!1}],["touchend",this.pointerUp.bind(this)]]))},t.prototype._cancelEvents=function(){this._subscribe&&this._subscribe(["mousedown","mousemove","touchstart","touchmove"])},t.prototype._handleCallback=function(){var e=this;this.callback&&this.callback({args:[this.currentIndex],down:this.isActive,movementX:this.movement.x,movementY:this.movement.y,offsetX:this.translation.x,offsetY:this.translation.y,velocityX:this.velocity.x,velocityY:this.velocity.y,distanceX:Math.abs(this.movement.x),distanceY:Math.abs(this.movement.y),directionX:Math.sign(this.movement.x),directionY:Math.sign(this.movement.y),cancel:function(){e._cancelEvents()}})},t.prototype.pointerDown=function(e){var t;"touchstart"===e.type?this.movementStart={x:e.touches[0].clientX,y:e.touches[0].clientY}:this.movementStart={x:e.clientX,y:e.clientY},this.movement={x:0,y:0},this.offset={x:this.translation.x,y:this.translation.y},this.previousMovement={x:0,y:0},this.velocity={x:0,y:0};var n=this.targetElements.find((function(t){return t===e.target}));if(e.target===this.targetElement||n){this.isActive=!0,e.preventDefault(),n&&(this.currentIndex=this.targetElements.indexOf(n));var i=(null===(t=this.config)||void 0===t?void 0:t.initial)&&this.config.initial(),r=null==i?void 0:i.movementX,o=null==i?void 0:i.movementY;this.initialMovement={x:null!=r?r:0,y:null!=o?o:0},this.movement={x:this.initialMovement.x,y:this.initialMovement.y},this.previousMovement={x:this.initialMovement.x,y:this.initialMovement.y},this._handleCallback()}},t.prototype.pointerMove=function(e){if(this.isActive){e.preventDefault();var t=Date.now(),n=L(t-this.lastTimeStamp,.1,64);this.lastTimeStamp=t;var i=n/1e3;"touchmove"===e.type?this.movement={x:this.initialMovement.x+(e.touches[0].clientX-this.movementStart.x),y:this.initialMovement.y+(e.touches[0].clientY-this.movementStart.y)}:this.movement={x:this.initialMovement.x+(e.clientX-this.movementStart.x),y:this.initialMovement.y+(e.clientY-this.movementStart.y)},this.translation={x:this.offset.x+this.movement.x,y:this.offset.y+this.movement.y},this.velocity={x:L((this.movement.x-this.previousMovement.x)/i/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L((this.movement.y-this.previousMovement.y)/i/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()}},t.prototype.pointerUp=function(){this.isActive&&(this.isActive=!1,this._handleCallback(),this._cancelEvents(),this._initEvents())},t}(X),j=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.velocity=D(0,0),t.direction=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement?this._subscribe=q([this.targetElement],[["mousemove",this.onMouseMove.bind(this)]]):this.targetElements.length>0?this._subscribe=q(this.targetElements,[["mousemove",this.onMouseMove.bind(this)]]):this._subscribe=q([window],[["mousemove",this.onMouseMove.bind(this)]])},t.prototype._handleCallback=function(){var e;this.callback&&this.callback({args:[this.currentIndex],event:this.event,isMoving:this.isActive,target:null===(e=this.event)||void 0===e?void 0:e.target,mouseX:this.movement.x,mouseY:this.movement.y,velocityX:this.velocity.x,velocityY:this.velocity.y,directionX:this.direction.x,directionY:this.direction.y})},t.prototype.onMouseMove=function(e){var t=this,n=this.targetElements.find((function(t){return t===e.target}));n&&(this.currentIndex=this.targetElements.indexOf(n)),this.event=e;var i=Date.now(),r=Math.min(i-this.lastTimeStamp,64);this.lastTimeStamp=i;var o=r/1e3,f=e.clientX,a=e.clientY;this.movement={x:f,y:a},-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.direction={x:0,y:0},t.velocity={x:0,y:0},t._handleCallback()}),250);var u=this.movement.x-this.previousMovement.x,s=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(u),y:Math.sign(s)},this.velocity={x:L(u/o/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(s/o/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t}(X),W=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.direction=D(0,0),t.velocity=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement?this._subscribe=q([this.targetElement],[["scroll",this.scrollElementListener.bind(this)]]):this._subscribe=q([window],[["scroll",this.scrollListener.bind(this)]])},t.prototype._handleCallback=function(){this.callback&&this.callback({isScrolling:this.isActive,scrollX:this.movement.x,scrollY:this.movement.y,velocityX:this.velocity.x,velocityY:this.velocity.y,directionX:this.direction.x,directionY:this.direction.y})},t.prototype.onScroll=function(e){var t=this,n=e.x,i=e.y,r=Date.now(),o=Math.min(r-this.lastTimeStamp,64);this.lastTimeStamp=r;var f=o/1e3;this.movement={x:n,y:i},-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.direction={x:0,y:0},t.velocity={x:0,y:0},t._handleCallback()}),250);var a=this.movement.x-this.previousMovement.x,u=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(a),y:Math.sign(u)},this.velocity={x:L(a/f/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(u/f/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t.prototype.scrollListener=function(){var e=window.pageYOffset,t=window.pageXOffset;this.onScroll({x:t,y:e})},t.prototype.scrollElementListener=function(){var e,t,n=(null===(e=this.targetElement)||void 0===e?void 0:e.scrollLeft)||0,i=(null===(t=this.targetElement)||void 0===t?void 0:t.scrollTop)||0;this.onScroll({x:n,y:i})},t}(X),P=function(e){function t(){var t=e.apply(this,l([],s(arguments),!1))||this;return t.movement=D(0,0),t.previousMovement=D(0,0),t.direction=D(0,0),t.velocity=D(0,0),t.delta=D(0,0),t.offset=D(0,0),t.translation=D(0,0),t}return f(t,e),t.prototype._initEvents=function(){this.targetElement&&(this._subscribe=q([this.targetElement],[["wheel",this.onWheel.bind(this)]]))},t.prototype._handleCallback=function(){this.callback&&this.callback({target:this.targetElement,isWheeling:this.isActive,deltaX:this.delta.x,deltaY:this.delta.y,directionX:this.direction.x,directionY:this.direction.y,movementX:this.movement.x,movementY:this.movement.y,offsetX:this.offset.x,offsetY:this.offset.y,velocityX:this.velocity.x,velocityY:this.velocity.y})},t.prototype.onWheel=function(e){var t=this,n=e.deltaX,i=e.deltaY,r=e.deltaMode,o=Date.now(),f=Math.min(o-this.lastTimeStamp,64);this.lastTimeStamp=o;var a=f/1e3;this.isActive=!0,-1!==this.isActiveID&&(this.isActive=!0,clearTimeout(this.isActiveID)),this.isActiveID=setTimeout((function(){t.isActive=!1,t.translation={x:t.offset.x,y:t.offset.y},t._handleCallback(),t.velocity={x:0,y:0},t.movement={x:0,y:0}}),200),1===r?(n*=40,i*=40):2===r&&(n*=800,i*=800),this.delta={x:n,y:i},this.movement={x:this.movement.x+n,y:this.movement.y+i},this.offset={x:this.translation.x+this.movement.x,y:this.translation.y+this.movement.y};var u=this.movement.x-this.previousMovement.x,s=this.movement.y-this.previousMovement.y;this.direction={x:Math.sign(u),y:Math.sign(s)},this.velocity={x:L(u/a/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT),y:L(s/a/1e3,-1*X._VELOCITY_LIMIT,X._VELOCITY_LIMIT)},this.previousMovement={x:this.movement.x,y:this.movement.y},this._handleCallback()},t}(X),z=function(e){var t=r.useRef(),n=r.useRef([]),i=r.useRef(new Map).current;return r.useEffect((function(){var t,n;try{for(var r=u(i.entries()),o=r.next();!o.done;o=r.next()){var f=s(o.value,2)[1],a=f.keyIndex,l=f.gesture,c=s(e[a],3)[2];l.applyCallback(c)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}),[e]),r.useEffect((function(){return e.forEach((function(e,r){var o=s(e,4),f=o[0],a=o[1],u=o[2],l=o[3];queueMicrotask((function(){return i.set(f,{keyIndex:r,gesture:a,unsubscribe:a.applyGesture({targetElement:t.current,targetElements:n.current,callback:u,config:l})})}))})),function(){var e,t;try{for(var n=u(i.entries()),r=n.next();!r.done;r=n.next()){var o=s(r.value,2)[1].unsubscribe;o&&o()}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}})),function(e){return null==e?{ref:t}:(n.current[e]=n.current[e]||r.createRef(),{ref:n.current[e]})}};Object.defineProperty(exports,"Easing",{enumerable:!0,get:function(){return e.Easing}}),Object.defineProperty(exports,"animate",{enumerable:!0,get:function(){return e.fluid}}),Object.defineProperty(exports,"makeAnimated",{enumerable:!0,get:function(){return e.makeFluid}}),exports.AnimationConfig=_,exports.MountedBlock=function(e){var n=e.state,i=e.children,r=e.from,o=void 0===r?0:r,f=e.enter,a=void 0===f?1:f,u=e.exit,s=S(n,{from:o,enter:a,exit:void 0===u?0:u,config:e.config});return t.jsx(t.Fragment,{children:s((function(e,t){return t&&i({value:e.value})}))})},exports.ScrollableBlock=function(e){var n=e.children,i=e.direction,o=void 0===i?"single":i,f=e.animationConfig,a=e.threshold,u=void 0===a?.2:a,l=r.useRef(null),c=O(0,f);return r.useEffect((function(){var e=l.current,t=new IntersectionObserver((function(e){s(e,1)[0].isIntersecting?c.value=1:"both"===o&&(c.value=0)}),{root:null,threshold:u});return e&&t.observe(e),function(){e&&t.unobserve(e)}}),[]),t.jsx("div",{ref:l,children:n&&n({value:c.value})})},exports.TransitionBlock=function(e){var n=e.state,i=e.children,r=e.config,o=O(C(n),r);return t.jsx(t.Fragment,{children:i({value:o.value})})},exports.bInterpolate=function(e,t,n,i){return E(e,[0,1],[t,n],i)},exports.bin=C,exports.clamp=L,exports.interpolate=E,exports.mix=function(e,t,n){return t*(1-e)+n*e},exports.move=function(e,t,n){var i=e[t],r=e.length,o=t-n;if(o>0)return l(l(l(l([],s(e.slice(0,n)),!1),[i],!1),s(e.slice(n,t)),!1),s(e.slice(t+1,r)),!1);if(o<0){var f=n+1;return l(l(l(l([],s(e.slice(0,t)),!1),s(e.slice(t+1,f)),!1),[i],!1),s(e.slice(f,r)),!1)}return e},exports.rubberClamp=function(e,t,n,i){return void 0===i&&(i=.15),0===i?L(e,t,n):e<t?-Y(t-e,n-t,i)+t:e>n?+Y(e-n,n-t,i)+n:e},exports.snapTo=function(e,t,n){var i=e+.2*t,r=function(e){return Math.abs(e-i)},o=n.map(r),f=Math.min.apply(Math,l([],s(o),!1));return n.reduce((function(e,t){return r(t)===f?t:e}))},exports.useDrag=function(e,t){var n=r.useRef(new F).current;return z([["drag",n,e,t]])},exports.useGesture=function(e){var t=e.onDrag,n=e.onWheel,i=e.onScroll,o=e.onMouseMove,f=r.useRef(new F).current,a=r.useRef(new P).current,u=r.useRef(new W).current,s=r.useRef(new j).current;return z([["drag",f,t],["wheel",a,n],["scroll",u,i],["move",s,o]])},exports.useMeasure=function(e,t){var i=n.useRef(null),r=n.useRef([]),o=n.useRef(e);return n.useEffect((function(){return o.current=e,function(){o.current=function(){return!1}}}),t),n.useEffect((function(){var e=i.current||document.documentElement,t=r.current,n=new ResizeObserver((function(t){var n=s(t,1)[0].target.getBoundingClientRect(),i=n.left,r=n.top,f=n.width,a=n.height,u=window.pageXOffset,l=window.pageYOffset;if(o){if(e===document.documentElement)return;o.current({left:i+u,top:r+l,width:f,height:a,vLeft:i,vTop:r})}})),f=new ResizeObserver((function(e){var t=[],n=[],i=[],r=[],f=[],a=[];e.forEach((function(e){var o=e.target.getBoundingClientRect(),u=o.left,s=o.top,l=o.width,c=o.height,h=u+window.pageXOffset,d=s+window.pageYOffset;t.push(h),n.push(d),i.push(l),r.push(c),f.push(u),a.push(s)})),o&&o.current({left:t,top:n,width:i,height:r,vLeft:f,vTop:a})}));return e&&(e===document.documentElement&&t.length>0?t.forEach((function(e){f.observe(e.current)})):n.observe(e)),function(){e&&(e===document.documentElement&&t.length>0?t.forEach((function(e){f.unobserve(e.current)})):n.unobserve(e))}}),[]),function(e){return null==e?{ref:i}:(r.current[e]=r.current[e]||n.createRef(),{ref:r.current[e]})}},exports.useMount=S,exports.useMouseMove=function(e){var t=r.useRef(new j).current;return z([["move",t,e]])},exports.useOutsideClick=function(e,t,i){var r=n.useRef();r.current||(r.current=t),n.useEffect((function(){return r.current=t,function(){r.current=function(){return!1}}}),i),n.useEffect((function(){var t=q([document],[["mousedown",function(t){var n=t.target;n&&n.isConnected&&(e.current&&!e.current.contains(n)&&r.current&&r.current(t))}]]);return function(){return t&&t()}}),[])},exports.useScroll=function(e){var t=r.useRef(new W).current;return z([["scroll",t,e]])},exports.useValue=O,exports.useValues=function(e,t){var i=n.useRef(!0),r=s(function(e,t){var i=n.useRef(new T(e,t)).current,r=n.useCallback((function(e,t){i.setFluid(e,t)}),[]);return[n.useMemo((function(){return i.getFluid()}),[]),r]}(e,a(a({},_.EASE),t)),2),o=r[0],f=r[1],u=n.useCallback((function(e){var t=e.map((function(e){return Array.isArray(e)?e.map((function(e){return M(e)})):M(e)}));queueMicrotask((function(){return f(t)}))}),[]);return n.useLayoutEffect((function(){i.current||u(e),i.current=!1}),[e,t]),{set value(e){u(e)},get value(){return o},get currentValue(){return o.map((function(e){return e.get()}))}}},exports.useWheel=function(e){var t=r.useRef(new P).current;return z([["wheel",t,e]])},exports.useWindowDimension=function(e,t){var i=n.useRef({width:0,height:0,innerWidth:0,innerHeight:0}),r=n.useRef(e);n.useEffect((function(){return r.current=e,function(){r.current=function(){return!1}}}),t),n.useEffect((function(){var e=new ResizeObserver((function(e){var t=s(e,1)[0].target,n=t.clientWidth,o=t.clientHeight,f=window.innerWidth,u=window.innerHeight;i.current={width:n,height:o,innerWidth:f,innerHeight:u},r&&r.current(a({},i.current))}));return e.observe(document.documentElement),function(){return e.unobserve(document.documentElement)}}),[])},exports.withConfig=V,exports.withDecay=function(e){return{config:a({decay:!0},e)}},exports.withDelay=function(e,t){return a(a({},t),{config:a(a({},t.config),{delay:e})})},exports.withEase=function(e,t){return V(e,a(a({},_.EASE),t))},exports.withLoop=function(e,t){if(Array.isArray(e)){for(var n=[],i=0;i<t;i++)n=n.concat(e);return n}return Array(t).fill({toValue:e.toValue,config:a(a({},e.config),{loop:t})})},exports.withSequence=function(e){return R(e)},exports.withSpring=function(e,t){return V(e,a(a({},_.ELASTIC),t))},exports.withTiming=function(e,t){return V(e,a({duration:250},t))};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/animation/interpolation/colors.ts","../src/animation/interpolation/interpolateNumbers.ts","../src/animation/interpolation/interpolate.ts","../src/animation/helpers/isDefined.ts","../src/animation/helpers/getToValue.ts","../src/animation/helpers/animationType.ts","../src/animation/core/FluidController.ts","../src/animation/core/useFluidValue.ts","../src/animation/hooks/useValue.ts","../src/animation/core/FluidArrayController.ts","../src/animation/hooks/useMount.ts","../src/animation/core/useMount.ts","../src/gestures/helpers/math.ts","../src/animation/modules/TransitionBlock.tsx","../src/animation/controllers/withConfig.ts","../src/animation/controllers/withSequence.ts","../src/gestures/helpers/eventAttacher.ts","../src/gestures/helpers/withDefault.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MouseMoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/animation/modules/MountedBlock.tsx","../src/animation/modules/ScrollableBlock.tsx","../src/animation/helpers/delay.ts","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useGesture.ts","../src/hooks/useMeasure.ts","../src/gestures/hooks/useMouseMove.ts","../src/hooks/useOutsideClick.ts","../src/gestures/hooks/useScroll.ts","../src/animation/hooks/useValues.ts","../src/animation/core/useFluidValues.ts","../src/gestures/hooks/useWheel.ts","../src/hooks/useWindowDimension.ts","../src/animation/controllers/withDecay.ts","../src/animation/controllers/withDelay.ts","../src/animation/controllers/withEase.ts","../src/animation/controllers/withLoop.ts","../src/animation/controllers/withSpring.ts","../src/animation/controllers/withTiming.ts"],"sourcesContent":["export const COLOR_NUMBER_REGEX =\n /[+-]?\\d+(\\.\\d+)?|[\\s]?\\.\\d+|#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/gi;\nexport const HEX_NAME_COLOR =\n /#[a-f\\d]{3,}|transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|burntsienna|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen/gi;\n\ninterface classNameType {\n [name: string]: string;\n}\n\n// Named colors\nexport const colorNames: classNameType = {\n transparent: '#00000000',\n aliceblue: '#f0f8ffff',\n antiquewhite: '#faebd7ff',\n aqua: '#00ffffff',\n aquamarine: '#7fffd4ff',\n azure: '#f0ffffff',\n beige: '#f5f5dcff',\n bisque: '#ffe4c4ff',\n black: '#000000ff',\n blanchedalmond: '#ffebcdff',\n blue: '#0000ffff',\n blueviolet: '#8a2be2ff',\n brown: '#a52a2aff',\n burlywood: '#deb887ff',\n burntsienna: '#ea7e5dff',\n cadetblue: '#5f9ea0ff',\n chartreuse: '#7fff00ff',\n chocolate: '#d2691eff',\n coral: '#ff7f50ff',\n cornflowerblue: '#6495edff',\n cornsilk: '#fff8dcff',\n crimson: '#dc143cff',\n cyan: '#00ffffff',\n darkblue: '#00008bff',\n darkcyan: '#008b8bff',\n darkgoldenrod: '#b8860bff',\n darkgray: '#a9a9a9ff',\n darkgreen: '#006400ff',\n darkgrey: '#a9a9a9ff',\n darkkhaki: '#bdb76bff',\n darkmagenta: '#8b008bff',\n darkolivegreen: '#556b2fff',\n darkorange: '#ff8c00ff',\n darkorchid: '#9932ccff',\n darkred: '#8b0000ff',\n darksalmon: '#e9967aff',\n darkseagreen: '#8fbc8fff',\n darkslateblue: '#483d8bff',\n darkslategray: '#2f4f4fff',\n darkslategrey: '#2f4f4fff',\n darkturquoise: '#00ced1ff',\n darkviolet: '#9400d3ff',\n deeppink: '#ff1493ff',\n deepskyblue: '#00bfffff',\n dimgray: '#696969ff',\n dimgrey: '#696969ff',\n dodgerblue: '#1e90ffff',\n firebrick: '#b22222ff',\n floralwhite: '#fffaf0ff',\n forestgreen: '#228b22ff',\n fuchsia: '#ff00ffff',\n gainsboro: '#dcdcdcff',\n ghostwhite: '#f8f8ffff',\n gold: '#ffd700ff',\n goldenrod: '#daa520ff',\n gray: '#808080ff',\n green: '#008000ff',\n greenyellow: '#adff2fff',\n grey: '#808080ff',\n honeydew: '#f0fff0ff',\n hotpink: '#ff69b4ff',\n indianred: '#cd5c5cff',\n indigo: '#4b0082ff',\n ivory: '#fffff0ff',\n khaki: '#f0e68cff',\n lavender: '#e6e6faff',\n lavenderblush: '#fff0f5ff',\n lawngreen: '#7cfc00ff',\n lemonchiffon: '#fffacdff',\n lightblue: '#add8e6ff',\n lightcoral: '#f08080ff',\n lightcyan: '#e0ffffff',\n lightgoldenrodyellow: '#fafad2ff',\n lightgray: '#d3d3d3ff',\n lightgreen: '#90ee90ff',\n lightgrey: '#d3d3d3ff',\n lightpink: '#ffb6c1ff',\n lightsalmon: '#ffa07aff',\n lightseagreen: '#20b2aaff',\n lightskyblue: '#87cefaff',\n lightslategray: '#778899ff',\n lightslategrey: '#778899ff',\n lightsteelblue: '#b0c4deff',\n lightyellow: '#ffffe0ff',\n lime: '#00ff00ff',\n limegreen: '#32cd32ff',\n linen: '#faf0e6ff',\n magenta: '#ff00ffff',\n maroon: '#800000ff',\n mediumaquamarine: '#66cdaaff',\n mediumblue: '#0000cdff',\n mediumorchid: '#ba55d3ff',\n mediumpurple: '#9370dbff',\n mediumseagreen: '#3cb371ff',\n mediumslateblue: '#7b68eeff',\n mediumspringgreen: '#00fa9aff',\n mediumturquoise: '#48d1ccff',\n mediumvioletred: '#c71585ff',\n midnightblue: '#191970ff',\n mintcream: '#f5fffaff',\n mistyrose: '#ffe4e1ff',\n moccasin: '#ffe4b5ff',\n navajowhite: '#ffdeadff',\n navy: '#000080ff',\n oldlace: '#fdf5e6ff',\n olive: '#808000ff',\n olivedrab: '#6b8e23ff',\n orange: '#ffa500ff',\n orangered: '#ff4500ff',\n orchid: '#da70d6ff',\n palegoldenrod: '#eee8aaff',\n palegreen: '#98fb98ff',\n paleturquoise: '#afeeeeff',\n palevioletred: '#db7093ff',\n papayawhip: '#ffefd5ff',\n peachpuff: '#ffdab9ff',\n peru: '#cd853fff',\n pink: '#ffc0cbff',\n plum: '#dda0ddff',\n powderblue: '#b0e0e6ff',\n purple: '#800080ff',\n rebeccapurple: '#663399ff',\n red: '#ff0000ff',\n rosybrown: '#bc8f8fff',\n royalblue: '#4169e1ff',\n saddlebrown: '#8b4513ff',\n salmon: '#fa8072ff',\n sandybrown: '#f4a460ff',\n seagreen: '#2e8b57ff',\n seashell: '#fff5eeff',\n sienna: '#a0522dff',\n silver: '#c0c0c0ff',\n skyblue: '#87ceebff',\n slateblue: '#6a5acdff',\n slategray: '#708090ff',\n slategrey: '#708090ff',\n snow: '#fffafaff',\n springgreen: '#00ff7fff',\n steelblue: '#4682b4ff',\n tan: '#d2b48cff',\n teal: '#008080ff',\n thistle: '#d8bfd8ff',\n tomato: '#ff6347ff',\n turquoise: '#40e0d0ff',\n violet: '#ee82eeff',\n wheat: '#f5deb3ff',\n white: '#ffffffff',\n whitesmoke: '#f5f5f5ff',\n yellow: '#ffff00ff',\n yellowgreen: '#9acd32ff',\n};\n\nfunction conv3to6(hex: string) {\n const regex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\n return hex.replace(regex, function (_, r, g, b) {\n return '#' + r + r + g + g + b + b;\n });\n}\n\nfunction conv6to8(hex: string) {\n if (hex.length === 7) {\n return hex + 'FF';\n }\n\n return hex;\n}\n\nexport function hexToRgba(hex: string) {\n const hex6: string = conv3to6(hex);\n const hex8: string = conv6to8(hex6);\n const hexRgba: any =\n /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex8);\n\n return {\n r: parseInt(hexRgba[1], 16),\n g: parseInt(hexRgba[2], 16),\n b: parseInt(hexRgba[3], 16),\n a: parseInt(hexRgba[4], 16) / 255,\n };\n}\n\nexport function rgbaToHex(rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n}) {\n const { r, g, b, a } = rgba;\n\n const hexR = (r | (1 << 8)).toString(16).slice(1);\n const hexG = (g | (1 << 8)).toString(16).slice(1);\n const hexB = (b | (1 << 8)).toString(16).slice(1);\n const hexA = ((a * 255) | (1 << 8)).toString(16).slice(1);\n\n return '#' + hexR + hexG + hexB + hexA;\n}\n\nexport function processColor(color: number | string) {\n if (typeof color === 'number') {\n const alpha = ((color >> 24) & 255) / 255;\n const red = (color >> 16) & 255;\n const green = (color >> 8) & 255;\n const blue = color & 255;\n\n return { r: red, g: green, b: blue, a: alpha };\n } else {\n // If string then check whether it has # in 0 index\n if (color[0] === '#') {\n return hexToRgba(color);\n } else {\n // It is string color\n const hexColorName: string = colorNames[color];\n if (hexColorName) {\n return hexToRgba(hexColorName);\n } else {\n throw new Error('String cannot be parsed!');\n }\n }\n }\n}\n","import {\n rgbaToHex,\n hexToRgba,\n COLOR_NUMBER_REGEX,\n HEX_NAME_COLOR,\n colorNames,\n} from './colors';\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\ntype ExtrapolateConfig = {\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\nconst interpolateValue = (\n val: number,\n arr: any,\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = arr;\n let result: number = val;\n\n // EXTRAPOLATE\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (val <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n};\n\nconst getNarrowedInput = function (\n x: number,\n input: number[],\n output: Array<number | string>\n): Array<number | string> {\n const length = input.length;\n let narrowedInput: Array<number | string> = [];\n\n // Boundaries\n if (x < input[0]) {\n narrowedInput = [input[0], input[1], output[0], output[1]];\n } else if (x > input[length - 1]) {\n narrowedInput = [\n input[length - 2],\n input[length - 1],\n output[length - 2],\n output[length - 1],\n ];\n }\n\n // Narrow the input and output ranges\n for (let i = 1; i < length; ++i) {\n if (x <= input[i]) {\n narrowedInput = [input[i - 1], input[i], output[i - 1], output[i]];\n break;\n }\n }\n\n return narrowedInput;\n};\n\nconst interpolateColor = (value: number, narrowedInput: string[]) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const outputMinProcessed = hexToRgba(outputMin);\n const outputMaxProcessed = hexToRgba(outputMax);\n\n const red = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.r, outputMaxProcessed.r],\n 'clamp',\n 'clamp'\n );\n\n const green = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.g, outputMaxProcessed.g],\n 'clamp',\n 'clamp'\n );\n\n const blue = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.b, outputMaxProcessed.b],\n 'clamp',\n 'clamp'\n );\n\n const alpha = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.a, outputMaxProcessed.a],\n 'clamp',\n 'clamp'\n );\n\n return rgbaToHex({ r: red, g: green, b: blue, a: alpha });\n};\n\nconst _getArrayInterpolate = (\n value: number,\n narrowedInput: Array<any>,\n _extrapolateLeft: ExtrapolateType,\n _extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n if (outputMin.length === outputMax.length) {\n return outputMin.map((val: any, index: number) => {\n if (typeof val === 'string') {\n // IF IT IS STRING THEN IT MUST BE HEX COLOR\n return interpolateColor(value, [\n inputMin,\n inputMax,\n val,\n outputMax[index],\n ]);\n } else {\n return interpolateValue(\n value,\n [inputMin, inputMax, val, outputMax[index]],\n _extrapolateLeft,\n _extrapolateRight\n );\n }\n });\n } else {\n throw new Error(\"Array length doesn't match\");\n }\n};\n\nconst getTemplateString = (str: string) => {\n return str.replace(COLOR_NUMBER_REGEX, '$');\n};\n\nconst _getParsedStringArray = (str: any) => {\n return str.match(COLOR_NUMBER_REGEX).map((v: string) => {\n if (v.indexOf('#') !== -1) {\n return v;\n } else {\n return Number(v);\n }\n });\n};\n\nconst stringMatched = (str1: string, str2: string) =>\n getTemplateString(str1).trim().replace(/\\s/g, '') ===\n getTemplateString(str2).trim().replace(/\\s/g, '');\n\n/**\n * Function which proccess the\n * hexadecimal colors to its proper formats\n * @param str - string\n * @returns hex color string\n */\nconst getProcessedColor = (str: string) => {\n return str.replace(HEX_NAME_COLOR, function (match: any) {\n if (match.indexOf('#') !== -1) {\n return rgbaToHex(hexToRgba(match));\n } else if (Object.prototype.hasOwnProperty.call(colorNames, match)) {\n return colorNames[match];\n } else {\n throw new Error('String cannot be parsed!');\n }\n });\n};\n\nexport function interpolateNumbers(\n value: number,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) {\n const extrapolate = extrapolateConfig?.extrapolate;\n const extrapolateLeft = extrapolateConfig?.extrapolateLeft;\n const extrapolateRight = extrapolateConfig?.extrapolateRight;\n\n const narrowedInput = getNarrowedInput(value, inputRange, outputRange);\n\n let _extrapolateLeft: ExtrapolateType = 'extend';\n if (extrapolateLeft !== undefined) {\n _extrapolateLeft = extrapolateLeft;\n } else if (extrapolate !== undefined) {\n _extrapolateLeft = extrapolate;\n }\n\n let _extrapolateRight: ExtrapolateType = 'extend';\n if (extrapolateRight !== undefined) {\n _extrapolateRight = extrapolateRight;\n } else if (extrapolate !== undefined) {\n _extrapolateRight = extrapolate;\n }\n\n if (outputRange.length) {\n if (typeof outputRange[0] === 'number') {\n return interpolateValue(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else if (Array.isArray(outputRange[0])) {\n return _getArrayInterpolate(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const processedOutputMin = getProcessedColor(outputMin as string);\n const processedOutputMax = getProcessedColor(outputMax as string);\n\n let templateString = getTemplateString(processedOutputMin);\n\n if (stringMatched(processedOutputMin, processedOutputMax)) {\n const outputMinParsed = _getParsedStringArray(processedOutputMin);\n const outputMaxParsed = _getParsedStringArray(processedOutputMax);\n\n const result = _getArrayInterpolate(\n value,\n [inputMin, inputMax, outputMinParsed, outputMaxParsed],\n _extrapolateLeft,\n _extrapolateRight\n );\n\n for (const v of result) templateString = templateString.replace('$', v);\n return templateString;\n } else {\n throw new Error(\"Output range doesn't match string format!\");\n }\n }\n } else {\n throw new Error('Output range cannot be Empty');\n }\n}\n","import { FluidValue } from '@raidipesh78/re-motion';\n\nimport { interpolateNumbers } from './interpolateNumbers';\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\ntype ExtrapolateConfig = {\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\ntype InterpolateReturnType<T> = T extends number\n ? number\n : ReturnType<FluidValue['interpolate']>;\n\nexport const interpolate = <T extends number | FluidValue>(\n value: T,\n inputRange: number[],\n outputRange: number[] | string[],\n extrapolateConfig?: ExtrapolateConfig\n): InterpolateReturnType<T> => {\n if (value instanceof FluidValue) {\n return value.interpolate(\n inputRange,\n outputRange,\n extrapolateConfig\n ) as InterpolateReturnType<T>;\n } else {\n return interpolateNumbers(\n value,\n inputRange,\n outputRange,\n extrapolateConfig\n ) as InterpolateReturnType<T>;\n }\n};\n\nexport const bInterpolate = <T extends number | FluidValue>(\n value: T,\n minOutput: number | string,\n maxOutput: number | string,\n extrapolateConfig?: ExtrapolateConfig\n) =>\n interpolate(\n value,\n [0, 1],\n [minOutput, maxOutput] as number[] | string[],\n extrapolateConfig\n );\n","export const isDefined = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n","import { UpdateValue, UseFluidValueConfig } from '../core/FluidController';\n\nexport function getToValue(\n value: number | string | UpdateValue,\n config?: UseFluidValueConfig\n): UpdateValue {\n return typeof value === 'number' || typeof value === 'string'\n ? { toValue: value, config }\n : value;\n}\n","import { Easing } from '@raidipesh78/re-motion';\n\nexport const AnimationConfig = {\n ELASTIC: { mass: 1, friction: 18, tension: 250 },\n BOUNCE: { duration: 500, easing: Easing.bounce },\n EASE: { mass: 1, friction: 26, tension: 170 },\n STIFF: { mass: 1, friction: 18, tension: 350 },\n WOOBLE: { mass: 1, friction: 8, tension: 250 },\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","import {\n FluidValue,\n timing,\n decay,\n spring,\n native,\n} from '@raidipesh78/re-motion';\n\nimport { isDefined } from '../helpers';\n\ntype Fn<T, U> = (value: T) => U;\n\nexport interface UseFluidValueConfig {\n mass?: number;\n tension?: number;\n friction?: number;\n duration?: number;\n easing?: Fn<number, number>;\n immediate?: boolean;\n delay?: number;\n restDistance?: number;\n onChange?: Fn<number | string, void>;\n onRest?: Fn<number | string, void>;\n onStart?: Fn<number | string, void>;\n decay?: boolean;\n velocity?: number;\n deceleration?: number;\n loop?: number;\n}\n\nexport type UpdateValue = {\n toValue?: number | string;\n config?: UseFluidValueConfig;\n};\n\nexport class FluidController {\n private fluid: FluidValue;\n private defaultConfig?: UseFluidValueConfig;\n private iterationsSoFar: number = 0;\n\n constructor(value: number | string, config?: UseFluidValueConfig) {\n this.fluid = new FluidValue(value);\n this.defaultConfig = config;\n }\n\n private getAnimation(updateValue: UpdateValue, config: UseFluidValueConfig) {\n if (typeof updateValue.toValue === 'string') {\n return native(this.fluid, { toValue: updateValue.toValue });\n } else if (isDefined(config?.duration) || config?.immediate) {\n if (!isDefined(updateValue.toValue)) {\n throw new Error('No `toValue` is defined');\n }\n\n const timingConfig = {\n toValue: updateValue.toValue,\n delay: config?.delay,\n duration: config?.immediate ? 0 : config?.duration,\n easing: config?.easing,\n };\n\n return timing(this.fluid, timingConfig);\n } else if (config?.decay) {\n const decayConfig = {\n velocity: config?.velocity,\n deceleration: config?.deceleration,\n delay: config?.delay,\n };\n\n return decay(this.fluid, decayConfig);\n } else {\n if (!isDefined(updateValue.toValue)) {\n throw new Error('No `toValue` is defined');\n }\n\n const springConfig = {\n toValue: updateValue.toValue,\n delay: config?.delay,\n mass: config?.mass,\n tension: config?.tension,\n friction: config?.friction,\n restDistance: config?.restDistance,\n };\n\n return spring(this.fluid, springConfig);\n }\n }\n\n private runAnimation(\n updateValue: UpdateValue,\n onComplete?: (value: number) => void\n ) {\n const config = { ...this.defaultConfig, ...updateValue.config };\n const loopCount = config?.loop ?? 0;\n\n this.fluid.removeAllListeners();\n config?.onStart && config.onStart(this.fluid.get());\n\n if (config?.onChange) {\n this.fluid.addListener((value) => config?.onChange?.(value));\n }\n\n const animation = this.getAnimation(updateValue, config);\n\n const handleRest = (result: { finished: boolean; value: number }) => {\n if (result.finished) {\n config?.onRest?.(result.value);\n onComplete?.(result.value);\n }\n };\n\n const loopAnimation = (result: { finished: boolean; value: number }) => {\n if (result.finished) {\n this.iterationsSoFar++;\n\n if (loopCount === -1 || this.iterationsSoFar < loopCount) {\n animation.reset();\n animation.start(loopAnimation);\n } else {\n handleRest(result);\n }\n }\n };\n\n animation.start(isDefined(config?.loop) ? loopAnimation : handleRest);\n }\n\n public setFluid(\n updateValue: UpdateValue | UpdateValue[],\n callback?: (value: number) => void\n ) {\n if (!updateValue) {\n return;\n }\n\n if (Array.isArray(updateValue)) {\n let currentAnimation = 0;\n\n const onComplete = (value: number) => {\n currentAnimation++;\n\n if (currentAnimation === updateValue.length) {\n callback && callback(value);\n\n return;\n }\n\n this.runAnimation(updateValue[currentAnimation], onComplete);\n };\n\n this.runAnimation(updateValue[currentAnimation], onComplete);\n } else {\n this.runAnimation(updateValue, callback);\n }\n }\n\n public getFluid() {\n return this.fluid;\n }\n}\n","import { useCallback, useMemo, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport {\n UpdateValue,\n FluidController,\n UseFluidValueConfig,\n} from './FluidController';\n\nexport const useFluidValue = <T extends number | string>(\n value: T,\n config?: UseFluidValueConfig\n): [\n FluidValue,\n (updateValue: UpdateValue | UpdateValue[], callback?: () => void) => void,\n] => {\n const fluidController = useRef(new FluidController(value, config)).current;\n\n const onUpdate = useCallback(\n (updateValue: UpdateValue | UpdateValue[], callback?: () => void) => {\n fluidController.setFluid(updateValue, callback);\n },\n []\n );\n\n const fluidValue = useMemo(() => fluidController.getFluid(), []);\n\n return [fluidValue, onUpdate];\n};\n","import { useCallback, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValue } from '../core/useFluidValue';\nimport { getToValue, AnimationConfig } from '../helpers';\n\nimport type { UpdateValue, UseFluidValueConfig } from '../core/FluidController';\n\nexport interface UseValueConfig extends UseFluidValueConfig {}\n\n/**\n * `useValue` returns an animation value with `.value` and `.currentValue` property which is\n * initialized when passed to argument (`initialValue`). The returned value persist until the lifetime of\n * a component. It doesn't cast any re-renders which can is very good for performance optimization.\n *\n * @param { number } initialValue - Initial value\n * @param { UseValueConfig } config - Animation configuration object.\n */\nexport function useValue<T extends number | string>(\n initialValue: T,\n config?: UseValueConfig\n) {\n const isInitialRender = useRef(true);\n const [animation, setAnimation] = useFluidValue(initialValue, {\n ...AnimationConfig.EASE,\n ...config,\n });\n\n const updateAnimation = useCallback(\n (value: string | number | UpdateValue | number[] | UpdateValue[]) => {\n if (Array.isArray(value)) {\n queueMicrotask(() => setAnimation(value.map((v) => getToValue(v))));\n } else {\n queueMicrotask(() => setAnimation(getToValue(value)));\n }\n },\n []\n );\n\n useLayoutEffect(() => {\n if (!isInitialRender.current) {\n updateAnimation(initialValue);\n }\n\n isInitialRender.current = false;\n }, [initialValue, config]);\n\n return {\n set value(to: number | string | UpdateValue | number[] | UpdateValue[]) {\n updateAnimation(to);\n },\n get value(): FluidValue {\n return animation;\n },\n get currentValue() {\n return animation.get();\n },\n };\n}\n","import { FluidController } from './FluidController';\n\nimport type { UpdateValue, UseFluidValueConfig } from './FluidController';\n\nexport class FluidArrayController {\n private fluidControllers: FluidController[];\n\n constructor(values: number[] | string[], config?: UseFluidValueConfig) {\n this.fluidControllers = values.map((v) => new FluidController(v, config));\n }\n\n public setFluid(\n updateValue: Array<UpdateValue | UpdateValue[]>,\n callback?: () => void\n ) {\n this.fluidControllers.map((fc, i) => {\n fc.setFluid(updateValue[i], callback);\n });\n }\n\n public getFluid() {\n return this.fluidControllers.map((fc) => fc.getFluid());\n }\n}\n","import { FluidValue } from '@raidipesh78/re-motion';\n\nimport {\n useMount as useInternalMount,\n UseMountConfig as UseInternalMountConfig,\n} from '../core/useMount';\n\nexport interface UseMountConfig extends UseInternalMountConfig {}\n\n/**\n * `useMount` handles mounting and unmounting of a component which captures current state\n * passed as an argument (`state`) and exposes the shadow state which handles the mount and unmount\n * of a component.\n *\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\n * @param { UseMountConfig } config - Animation configuration.\n */\nexport function useMount(state: boolean, config: UseMountConfig) {\n const mv = useInternalMount(state, config);\n return (\n cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode\n ) => mv((a, m) => cb({ value: a }, m));\n}\n","import { useState, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValue } from './useFluidValue';\n\nimport type { UpdateValue, UseFluidValueConfig } from './FluidController';\nimport { getToValue } from '../helpers';\n\nexport interface UseMountConfig {\n from: number;\n enter: number | UpdateValue | number[] | UpdateValue[];\n exit: number | UpdateValue | number[] | UpdateValue[];\n config?: UseFluidValueConfig;\n}\n\n/**\n * `useMount`\n *\n * applies mounting and unmounting of a component according to state change\n * applying transitions\n *\n * @param state - boolean indicating mount state of a component\n * @param config - the config object `UseMountConfig`\n */\nexport const useMount = (state: boolean, config: UseMountConfig) => {\n const [mounted, setMounted] = useState(false);\n const { from, enter, exit, config: innerConfig } = useRef(config).current;\n const [animation, setAnimation] = useFluidValue(from, innerConfig);\n\n useLayoutEffect(() => {\n if (state) {\n setMounted(true);\n queueMicrotask(() =>\n setAnimation(\n Array.isArray(enter)\n ? enter.map((e) => getToValue(e, innerConfig))\n : getToValue(enter, innerConfig)\n )\n );\n } else {\n setAnimation(\n Array.isArray(exit)\n ? exit.map((e) => getToValue(e, innerConfig))\n : getToValue(exit, innerConfig),\n () => {\n setMounted(false);\n // cleanup\n animation\n .getSubscriptions()\n .forEach((s) => animation.removeSubscription(s));\n }\n );\n }\n }, [state]);\n\n return (\n callback: (animation: FluidValue, mounted: boolean) => React.ReactNode\n ) => callback(animation, mounted);\n};\n","/**\n * bin(booleanValue)\n * returns 1 if booleanValue == true and 0 if booleanValue == false\n */\nexport function bin(bool: boolean) {\n return bool ? 1 : 0;\n}\n\n/**\n * mix(progress, a, b)\n * linear interpolation between a and b\n */\nexport function mix(perc: number, val1: number, val2: number) {\n return val1 * (1 - perc) + val2 * perc;\n}\n\n/**\n * clamp(value, min, max)\n * clamps value for min and max bounds\n */\nexport 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\n/**\n * rubberClamp(value, min, max, constant?)\n * constant is optional : default 0.15\n * clamps the value for min and max value and\n * extends beyond min and max values with constant\n * factor to create elastic rubber band effect\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\n/**\n * snapTo(value, velocity, snapPoints[])\n * Calculates the final snapPoint according to given current value,\n * velocity and snapPoints array\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\n/**\n * move(array, moveIndex, toIndex)\n * move array item from moveIndex to toIndex without array modification\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","import * as React from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { bin } from '../../gestures/helpers';\nimport { useValue, type UseValueConfig } from '../hooks';\n\ninterface TransitionBlockProps {\n state: boolean;\n children: (animation: { value: FluidValue }) => React.ReactNode;\n config?: UseValueConfig;\n}\n\n/**\n * TransitionBlock - Higher order component which animates on state change.\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @prop { UseValueConfig } config - Animation configuration.\n */\nexport const TransitionBlock = ({\n state,\n children,\n config,\n}: TransitionBlockProps) => {\n const amv = useValue(bin(state), config);\n\n return <>{children({ value: amv.value })}</>;\n};\n","import type { UseValueConfig } from '../hooks';\nimport type { UpdateValue } from '../core/FluidController';\n\nexport interface WithOnCallbacks\n extends Pick<UseValueConfig, 'onRest' | 'onStart' | 'onChange'> {}\n\nexport const withConfig = (toValue: number, config?: UseValueConfig): UpdateValue => ({\n toValue,\n config,\n});\n","import { getToValue } from '../helpers';\nimport { type UpdateValue } from '../core/FluidController';\n\nconst flattenUpdateValues = (\n animations: Array<UpdateValue | number | Array<UpdateValue | number>>\n): UpdateValue[] => {\n return animations.reduce<UpdateValue[]>((acc, value) => {\n if (Array.isArray(value)) {\n acc.push(...flattenUpdateValues(value));\n } else {\n acc.push(getToValue(value));\n }\n return acc;\n }, []);\n};\n\nexport const withSequence = (\n animations: Array<UpdateValue | number | Array<UpdateValue | number>>\n): UpdateValue[] => {\n return flattenUpdateValues(animations);\n};\n","type MouseEventType =\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mousemove'\n | 'mouseup'\n | 'touchstart'\n | 'touchmove'\n | 'touchend'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseout'\n | 'mouseover'\n | 'scroll'\n | 'wheel'\n | 'contextmenu';\n\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\n\n/**\n * Attach single document / window event / HTMLElement\n */\nfunction attachEvent(\n domTargets: DomTargetTypes,\n event: MouseEventType,\n callback: (e: any) => void,\n capture: any = false\n) {\n domTargets.forEach((target) => {\n target.addEventListener(event, callback, capture);\n });\n\n return function () {\n domTargets.forEach((target) => {\n target.removeEventListener(event, callback, capture);\n });\n };\n}\n\n/**\n * Attach multiple document / window event / HTMLElement\n */\nexport function attachEvents(\n domTargets: DomTargetTypes,\n events: Array<\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\n >\n) {\n const subscribers = new Map();\n\n events.forEach(function ([event, callback, capture = false]) {\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\n });\n\n return function (eventKeys?: Array<string>) {\n for (const [eventKey, subscriber] of subscribers.entries()) {\n if (!eventKeys) {\n subscriber();\n return;\n }\n\n if (eventKeys.indexOf(eventKey) !== -1) {\n subscriber();\n }\n }\n };\n}\n","export const withDefault = (x: number, y: number) => {\n return { x, y };\n};\n","export class Gesture {\n currentIndex?: number;\n lastTimeStamp: number = Date.now();\n isActive: boolean = false;\n targetElement?: HTMLElement; // represents the bounded element\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\n config?: any;\n callback?: <T>(event: T) => void;\n _subscribe?: (eventKeys?: Array<string>) => void;\n static _VELOCITY_LIMIT: number = 20;\n\n // it must be overridden by other child classes\n _initEvents() {}\n\n // cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe();\n }\n }\n\n // re-apply new callback\n applyCallback(callback: <T>(event: T) => void) {\n this.callback = callback;\n }\n\n // apply gesture\n applyGesture({\n targetElement,\n targetElements,\n callback,\n config,\n }: {\n targetElement?: any;\n targetElements?: any;\n callback: <T>(event: T) => void;\n config?: any;\n }) {\n this.targetElement = targetElement;\n this.targetElements = targetElements.map(\n (element: { current: any }) => element.current\n );\n this.callback = callback;\n this.config = config;\n\n // initialize events\n this._initEvents();\n\n // unbind\n return () => this._subscribe && this._subscribe();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nimport type { Vector2 } from '../types';\n\nexport class DragGesture extends Gesture {\n movementStart: Vector2 = withDefault(0, 0);\n initialMovement: Vector2 = withDefault(0, 0);\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n offset: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement || this.targetElements.length > 0) {\n this._subscribe = attachEvents(\n [window],\n [\n ['mousedown', this.pointerDown.bind(this)],\n ['mousemove', this.pointerMove.bind(this)],\n ['mouseup', this.pointerUp.bind(this)],\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\n ['touchend', this.pointerUp.bind(this)],\n ]\n );\n }\n }\n\n // @override - cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n down: this.isActive,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.translation.x,\n offsetY: this.translation.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n distanceX: Math.abs(this.movement.x),\n distanceY: Math.abs(this.movement.y),\n directionX: Math.sign(this.movement.x),\n directionY: Math.sign(this.movement.y),\n cancel: () => {\n this._cancelEvents();\n },\n });\n }\n }\n\n pointerDown(e: any) {\n if (e.type === 'touchstart') {\n this.movementStart = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n } else {\n this.movementStart = { x: e.clientX, y: e.clientY };\n }\n\n this.movement = { x: 0, y: 0 };\n this.offset = { x: this.translation.x, y: this.translation.y };\n this.previousMovement = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n if (e.target === this.targetElement || currElem) {\n this.isActive = true;\n e.preventDefault();\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n // if initial function is defined then call it to get initial movementX and movementY\n // if only select to bounded draggable element\n const initial = this.config?.initial && this.config.initial();\n const initialMovementX = initial?.movementX;\n const initialMovementY = initial?.movementY;\n\n this.initialMovement = {\n x: initialMovementX ?? 0,\n y: initialMovementY ?? 0,\n };\n\n this.movement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this.previousMovement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerMove(e: any) {\n if (this.isActive) {\n e.preventDefault();\n const now = Date.now();\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\n this.lastTimeStamp = now;\n\n const t = deltaTime / 1000;\n\n if (e.type === 'touchmove') {\n this.movement = {\n x:\n this.initialMovement.x +\n (e.touches[0].clientX - this.movementStart.x),\n y:\n this.initialMovement.y +\n (e.touches[0].clientY - this.movementStart.y),\n };\n } else {\n this.movement = {\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\n };\n }\n\n this.translation = {\n x: this.offset.x + this.movement.x,\n y: this.offset.y + this.movement.y,\n };\n\n this.velocity = {\n x: clamp(\n (this.movement.x - this.previousMovement.x) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n (this.movement.y - this.previousMovement.y) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerUp() {\n if (this.isActive) {\n this.isActive = false;\n this._handleCallback();\n this._cancelEvents();\n this._initEvents();\n }\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class MouseMoveGesture extends Gesture {\n event?: MouseEvent;\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n } else if (this.targetElements.length > 0) {\n this._subscribe = attachEvents(this.targetElements, [\n ['mousemove', this.onMouseMove.bind(this)],\n ]);\n } else {\n this._subscribe = attachEvents(\n [window],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n event: this.event,\n isMoving: this.isActive,\n target: this.event?.target,\n mouseX: this.movement.x,\n mouseY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onMouseMove(e: MouseEvent) {\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n this.event = e;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n const x = e.clientX;\n const y = e.clientY;\n\n this.movement = { x, y };\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback();\n }, 250); // Debounce 250 milliseconds\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\n\n this._handleCallback();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class ScrollGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['scroll', this.scrollElementListener.bind(this)]]\n );\n } else {\n this._subscribe = attachEvents(\n [window],\n [['scroll', this.scrollListener.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n isScrolling: this.isActive,\n scrollX: this.movement.x,\n scrollY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onScroll({ x, y }: Vector2) {\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.movement = { x, y };\n\n // Clear if scrolling\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n\n // Reset Velocity\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback(); // Debounce 250milliseconds\n }, 250);\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n\n scrollListener() {\n const { pageYOffset: y, pageXOffset: x } = window;\n this.onScroll({ x, y });\n }\n\n scrollElementListener() {\n const x = this.targetElement?.scrollLeft || 0;\n const y = this.targetElement?.scrollTop || 0;\n this.onScroll({ x, y });\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nexport class WheelGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n delta: Vector2 = withDefault(0, 0);\n\n // Holds offsets\n offset: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['wheel', this.onWheel.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n target: this.targetElement,\n isWheeling: this.isActive,\n deltaX: this.delta.x,\n deltaY: this.delta.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.offset.x,\n offsetY: this.offset.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n });\n }\n }\n\n onWheel(event: WheelEvent) {\n let { deltaX, deltaY, deltaMode } = event;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.isActive = true;\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.translation = { x: this.offset.x, y: this.offset.y };\n this._handleCallback();\n\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\n this.movement = { x: 0, y: 0 };\n }, 200);\n\n // normalize wheel values, especially for Firefox\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n\n this.delta = { x: deltaX, y: deltaY };\n this.movement = {\n x: this.movement.x + deltaX,\n y: this.movement.y + deltaY,\n };\n this.offset = {\n x: this.translation.x + this.movement.x,\n y: this.translation.y + this.movement.y,\n };\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\ntype UseRecognizerHandlerType = Array<\n [\n key: 'drag' | 'wheel' | 'move' | 'scroll',\n gesture: any,\n callback: any,\n config?: any\n ]\n>;\n\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\n const ref = React.useRef<any>();\n const elementRefs = React.useRef<Array<any>>([]);\n const subscribers = React.useRef<\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\n >(new Map()).current;\n\n // re-initiate callback on change\n React.useEffect(() => {\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\n const [, , callback] = handlers[keyIndex];\n gesture.applyCallback(callback);\n }\n }, [handlers]);\n\n React.useEffect(() => {\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\n queueMicrotask(() =>\n subscribers.set(key, {\n keyIndex,\n gesture,\n unsubscribe: gesture.applyGesture({\n targetElement: ref.current,\n targetElements: elementRefs.current,\n callback,\n config,\n }),\n })\n );\n });\n\n return () => {\n for (let [, { unsubscribe }] of subscribers.entries()) {\n unsubscribe && unsubscribe();\n }\n };\n });\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] =\n elementRefs.current[index] || React.createRef();\n\n return { ref: elementRefs.current[index] };\n }\n };\n};\n","import * as React from 'react';\n\nimport { useMount, type UseMountConfig } from '../hooks';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\ninterface MountedBlockProps extends Partial<UseMountConfig> {\n state: boolean;\n children: (animation: { value: FluidValue }) => React.ReactNode;\n}\n\n/**\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\n * @param { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @param { number } } from - Number that dictates the beginning state for animation.\n * @param { number } enter - Number that dictates the entry state for animation.\n * @param { number } exit - Number that dictates the exit state for animation.\n * @param { UseValueConfig } config - Animation configuration for overall animation.\n */\nexport const MountedBlock = ({\n state,\n children,\n from = 0,\n enter = 1,\n exit = 0,\n config,\n}: MountedBlockProps) => {\n const open = useMount(state, {\n from,\n enter,\n exit,\n config,\n });\n\n return (\n <>\n {open(\n (animation, mounted) =>\n mounted && children({ value: animation.value as any })\n )}\n </>\n );\n};\n","import * as React from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useValue, type UseValueConfig } from '../hooks';\n\ninterface ScrollableBlockProps {\n children?: (animation: { value: FluidValue }) => React.ReactNode;\n direction?: 'single' | 'both';\n threshold?: number;\n animationConfig?: UseValueConfig;\n}\n\n/**\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\n * of a component when it enters or exit the viewport. Accepts child as a function with\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\n * @prop { UseValueConfig } animationConfig - Animation config\n */\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\n const {\n children,\n direction = 'single',\n animationConfig,\n threshold = 0.2,\n } = props;\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\n const animation = useValue(0, animationConfig); // 0: not intersecting | 1: intersecting\n\n React.useEffect(() => {\n const _scrollableBlock = scrollableBlockRef.current;\n\n const observer = new IntersectionObserver(\n function ([entry]) {\n const { isIntersecting } = entry;\n\n if (isIntersecting) {\n animation.value = 1;\n } else {\n if (direction === 'both') animation.value = 0;\n }\n },\n {\n root: null, // FOR VIEWPORT ONLY\n threshold,\n }\n );\n\n if (_scrollableBlock) {\n observer.observe(_scrollableBlock);\n }\n\n return () => {\n if (_scrollableBlock) {\n observer.unobserve(_scrollableBlock);\n }\n };\n }, []);\n\n return (\n <div ref={scrollableBlockRef}>\n {children && children({ value: animation.value })}\n </div>\n );\n};\n","/**\n * @param { number } ms - number of milliseconds to delay code execution\n * @returns Promise\n */\nexport function delay(ms: number) {\n return new Promise((resolve) => {\n setTimeout(() => resolve(null), ms);\n });\n}\n","import * as React from 'react';\n\nimport { DragEventType, UseDragConfig } from '../types';\nimport { DragGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useDrag(\n callback: (event: DragEventType) => void,\n config?: UseDragConfig\n) {\n const gesture = React.useRef(new DragGesture()).current;\n\n return useRecognizer([['drag', gesture, callback, config]]);\n}\n","import * as React from 'react';\nimport {\n DragGesture,\n MouseMoveGesture,\n ScrollGesture,\n WheelGesture,\n} from '../controllers';\nimport {\n DragEventType,\n WheelEventType,\n ScrollEventType,\n MouseMoveEventType,\n} from '../types';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useGesture({\n onDrag,\n onWheel,\n onScroll,\n onMouseMove,\n}: {\n onDrag?: (event: DragEventType) => void;\n onWheel?: (event: WheelEventType) => void;\n onScroll?: (event: ScrollEventType) => void;\n onMouseMove?: (event: MouseMoveEventType) => void;\n}) {\n const dragGesture = React.useRef(new DragGesture()).current;\n const wheelGesture = React.useRef(new WheelGesture()).current;\n const scrollGesture = React.useRef(new ScrollGesture()).current;\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([\n ['drag', dragGesture, onDrag],\n ['wheel', wheelGesture, onWheel],\n ['scroll', scrollGesture, onScroll],\n ['move', mouseMoveGesture, onMouseMove],\n ]);\n}\n","import { useRef, useEffect, DependencyList, createRef } from 'react';\n\ntype MeasurementValue = number | Array<number>;\n\ntype MeasurementType = {\n left: MeasurementValue;\n top: MeasurementValue;\n width: MeasurementValue;\n height: MeasurementValue;\n vLeft: MeasurementValue;\n vTop: MeasurementValue;\n};\n\nexport function useMeasure(\n callback: (event: MeasurementType) => void,\n deps?: DependencyList\n) {\n const ref = useRef(null);\n const elementRefs = useRef([]);\n const callbackRef = useRef<(event: MeasurementType) => void>(callback);\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const _refElement = ref.current || document.documentElement;\n const _refElementsMultiple = elementRefs.current;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { left, top, width, height } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n\n if (callbackRef) {\n if (_refElement === document.documentElement) {\n return; // no-op for document\n } else {\n callbackRef.current({\n left: left + pageXOffset,\n top: top + pageYOffset,\n width,\n height,\n vLeft: left,\n vTop: top,\n });\n }\n }\n });\n\n const resizeObserverMultiple = new ResizeObserver((entries) => {\n const left: Array<number> = [];\n const top: Array<number> = [];\n const width: Array<number> = [];\n const height: Array<number> = [];\n const vLeft: Array<number> = [];\n const vTop: Array<number> = [];\n\n entries.forEach((entry) => {\n const {\n left: _left,\n top: _top,\n width: _width,\n height: _height,\n } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n const _pageLeft = _left + pageXOffset;\n const _pageTop = _top + pageYOffset;\n\n left.push(_pageLeft);\n top.push(_pageTop);\n width.push(_width);\n height.push(_height);\n vLeft.push(_left);\n vTop.push(_top);\n });\n\n if (callbackRef) {\n callbackRef.current({\n left,\n top,\n width,\n height,\n vLeft,\n vTop,\n });\n }\n });\n\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.observe(element.current);\n });\n } else {\n resizeObserver.observe(_refElement);\n }\n }\n\n return () => {\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.unobserve(element.current);\n });\n } else {\n resizeObserver.unobserve(_refElement);\n }\n }\n };\n }, []);\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] = elementRefs.current[index] || createRef();\n\n return { ref: elementRefs.current[index] };\n }\n }; // ...bind() or ...bind(index) for multiple\n}\n","import * as React from 'react';\n\nimport { MouseMoveEventType } from '../types';\nimport { MouseMoveGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\n const gesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([['move', gesture, callback]]);\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\nimport { attachEvents } from '../gestures/helpers/eventAttacher';\n\nexport function useOutsideClick(\n elementRef: RefObject<HTMLElement>,\n callback: (event: MouseEvent) => void,\n deps?: DependencyList\n) {\n const callbackRef = useRef<(event: MouseEvent) => void>();\n\n if (!callbackRef.current) {\n callbackRef.current = callback;\n }\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const handleOutsideClick = (e: MouseEvent) => {\n const target = e.target as Node;\n\n if (!target || !target.isConnected) {\n return;\n }\n\n const isOutside =\n elementRef.current && !elementRef.current.contains(target);\n\n if (isOutside) {\n callbackRef.current && callbackRef.current(e);\n }\n };\n\n const subscribe = attachEvents(\n [document],\n [['mousedown', handleOutsideClick]]\n );\n\n return () => subscribe && subscribe();\n }, []);\n}\n","import * as React from 'react';\n\nimport { ScrollEventType } from '../types';\nimport { ScrollGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useScroll(callback: (event: ScrollEventType) => void) {\n const gesture = React.useRef(new ScrollGesture()).current;\n\n return useRecognizer([['scroll', gesture, callback]]);\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValues } from '../core/useFluidValues';\nimport { getToValue, AnimationConfig } from '../helpers';\n\nimport { type UpdateValue } from '../core/FluidController';\nimport { type UseValueConfig } from './useValue';\n\nexport function useValues<T extends number[] | string[]>(\n initialValue: T,\n config?: UseValueConfig\n) {\n const isInitialRender = useRef(true);\n const [animation, setAnimation] = useFluidValues(initialValue, {\n ...AnimationConfig.EASE,\n ...config,\n });\n\n const updateAnimation = useCallback(\n (\n values: Array<number | number[] | string | UpdateValue | UpdateValue[]>\n ) => {\n const update = values.map((value) => {\n if (Array.isArray(value)) {\n return value.map((v) => getToValue(v));\n } else {\n return getToValue(value);\n }\n });\n queueMicrotask(() => setAnimation(update));\n },\n []\n );\n\n useLayoutEffect(() => {\n if (!isInitialRender.current) {\n updateAnimation(initialValue);\n }\n\n isInitialRender.current = false;\n }, [initialValue, config]);\n\n return {\n set value(\n to: Array<number | number[] | string | UpdateValue | UpdateValue[]>\n ) {\n updateAnimation(to);\n },\n get value(): FluidValue[] {\n return animation;\n },\n get currentValue() {\n return animation.map((a) => a.get());\n },\n };\n}\n","import { useCallback, useMemo, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { UpdateValue, UseFluidValueConfig } from './FluidController';\nimport { FluidArrayController } from './FluidArrayController';\n\nexport const useFluidValues = <T extends number[] | string[]>(\n value: T,\n config?: UseFluidValueConfig\n): [\n FluidValue[],\n (\n updateValue: Array<UpdateValue | UpdateValue[]>,\n callback?: () => void\n ) => void,\n] => {\n const fluidController = useRef(\n new FluidArrayController(value, config)\n ).current;\n\n const onUpdate = useCallback(\n (\n updateValue: UpdateValue[] | Array<UpdateValue[]>,\n callback?: () => void\n ) => {\n fluidController.setFluid(updateValue, callback);\n },\n []\n );\n\n const fluidValue = useMemo(() => fluidController.getFluid(), []);\n\n return [fluidValue, onUpdate];\n};\n","import * as React from 'react';\n\nimport { WheelEventType } from '../types';\nimport { WheelGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useWheel(callback: (event: WheelEventType) => void) {\n const gesture = React.useRef(new WheelGesture()).current;\n\n return useRecognizer([['wheel', gesture, callback]]);\n}\n","import { useRef, useEffect, DependencyList } from 'react';\n\ntype WindowDimensionType = {\n width: number;\n height: number;\n innerWidth: number;\n innerHeight: number;\n};\n\nexport function useWindowDimension(\n callback: (event: WindowDimensionType) => void,\n deps?: DependencyList\n) {\n const windowDimensionsRef = useRef<WindowDimensionType>({\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n });\n const callbackRef = useRef<(event: WindowDimensionType) => void>(callback);\n\n const handleCallback: () => void = () => {\n if (callbackRef) {\n callbackRef.current({\n ...windowDimensionsRef.current,\n });\n }\n };\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { clientWidth, clientHeight } = entry.target;\n const { innerWidth, innerHeight } = window;\n\n windowDimensionsRef.current = {\n width: clientWidth,\n height: clientHeight,\n innerWidth,\n innerHeight,\n };\n\n handleCallback();\n });\n\n resizeObserver.observe(document.documentElement);\n\n return () => resizeObserver.unobserve(document.documentElement);\n }, []);\n}\n","import type { UseValueConfig } from '../hooks';\nimport type { WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithDecayConfig\n extends Pick<UseValueConfig, 'velocity' | 'deceleration'>,\n WithOnCallbacks {}\n\nexport const withDecay = (config?: WithDecayConfig): UpdateValue => ({\n config: {\n decay: true,\n ...config,\n },\n});\n","import type { UseValueConfig } from '../hooks';\nimport type { UpdateValue } from '../core/FluidController';\n\nexport const withDelay = (\n delay: number,\n animation: { toValue: number; config?: UseValueConfig }\n): UpdateValue => ({\n ...animation,\n config: {\n ...animation.config,\n delay,\n },\n});\n","import { AnimationConfig } from '../helpers';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithEaseConfig extends WithOnCallbacks {}\n\nexport const withEase = (toValue: number, config?: WithEaseConfig): UpdateValue =>\n withConfig(toValue, { ...AnimationConfig.EASE, ...config });\n","import type { UpdateValue } from '../core/FluidController';\n\nexport const withLoop = (\n updateValue: UpdateValue | UpdateValue[],\n loop: number\n): UpdateValue[] => {\n if (Array.isArray(updateValue)) {\n let loopedValues: UpdateValue[] = [];\n for (let i = 0; i < loop; i++) {\n loopedValues = loopedValues.concat(updateValue);\n }\n return loopedValues;\n } else {\n return Array(loop).fill({\n toValue: updateValue.toValue,\n config: { ...updateValue.config, loop },\n });\n }\n};\n","import { AnimationConfig } from '../helpers';\nimport { type UseValueConfig } from '../hooks';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithSpringConfig\n extends Pick<UseValueConfig, 'mass' | 'friction' | 'tension'>,\n WithOnCallbacks {}\n\nexport const withSpring = (\n toValue: number,\n config?: WithSpringConfig\n): UpdateValue =>\n withConfig(toValue, { ...AnimationConfig.ELASTIC, ...config });\n","import { type UseValueConfig } from '../hooks';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithTimingConfig\n extends Pick<UseValueConfig, 'duration' | 'easing'>,\n WithOnCallbacks {}\n\nexport const withTiming = (\n toValue: number,\n config?: WithTimingConfig\n): UpdateValue => withConfig(toValue, { duration: 250, ...config });\n"],"names":["COLOR_NUMBER_REGEX","HEX_NAME_COLOR","colorNames","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexToRgba","hex","hex6","replace","_","r","g","b","conv3to6","hex8","length","conv6to8","hexRgba","exec","parseInt","a","rgbaToHex","rgba","toString","slice","interpolateValue","val","arr","extrapolateLeft","extrapolateRight","_a","__read","inputMin","inputMax","outputMin","outputMax","result","Infinity","_getArrayInterpolate","value","narrowedInput","_extrapolateLeft","_extrapolateRight","map","index","outputMinProcessed","outputMaxProcessed","interpolateColor","Error","getTemplateString","str","_getParsedStringArray","match","v","indexOf","Number","getProcessedColor","Object","prototype","hasOwnProperty","call","interpolateNumbers","inputRange","outputRange","extrapolateConfig","extrapolate","x","input","output","i","getNarrowedInput","undefined","str2","Array","isArray","_b","processedOutputMin","processedOutputMax","templateString","trim","outputMinParsed","outputMaxParsed","result_1","__values","result_1_1","next","done","interpolate","FluidValue","isDefined","getToValue","config","toValue","AnimationConfig","ELASTIC","mass","friction","tension","BOUNCE","duration","easing","Easing","bounce","EASE","STIFF","WOOBLE","EASE_IN","in","ease","EASE_OUT","out","EASE_IN_OUT","inOut","POWER1","bezier","POWER2","POWER3","POWER4","LINEAR","linear","FluidController","this","iterationsSoFar","fluid","defaultConfig","getAnimation","updateValue","native","immediate","timingConfig","delay","timing","decay","decayConfig","velocity","deceleration","springConfig","restDistance","spring","runAnimation","onComplete","_this","__assign","loopCount","loop","removeAllListeners","onStart","get","onChange","addListener","animation","handleRest","finished","onRest","loopAnimation","reset","start","setFluid","callback","currentAnimation_1","onComplete_1","getFluid","useFluidValue","fluidController","useRef","current","onUpdate","useCallback","useMemo","useValue","initialValue","isInitialRender","setAnimation","updateAnimation","queueMicrotask","useLayoutEffect","to","currentValue","FluidArrayController","values","fluidControllers","fc","useMount","state","mv","useState","mounted","setMounted","from","enter","exit","innerConfig","_c","e","getSubscriptions","forEach","s","removeSubscription","useInternalMount","cb","m","bin","bool","clamp","lowerbound","upperbound","Math","min","max","rubber","distanceFromEdge","dimension","constant","abs","pow","rubber2","withConfig","flattenUpdateValues","animations","reduce","acc","push","apply","attachEvents","domTargets","events","subscribers","Map","event","capture","set","target","addEventListener","removeEventListener","attachEvent","eventKeys","entries","_d","eventKey","subscriber","withDefault","y","Gesture","lastTimeStamp","Date","now","isActive","targetElements","_initEvents","_cancelEvents","_subscribe","applyCallback","applyGesture","targetElement","element","_VELOCITY_LIMIT","DragGesture","_super","movementStart","initialMovement","movement","previousMovement","translation","offset","__extends","window","pointerDown","bind","pointerMove","pointerUp","passive","_handleCallback","args","currentIndex","down","movementX","movementY","offsetX","offsetY","velocityX","velocityY","distanceX","distanceY","directionX","sign","directionY","cancel","type","touches","clientX","clientY","currElem","find","elem","preventDefault","initial","initialMovementX","initialMovementY","deltaTime","t","MouseMoveGesture","direction","onMouseMove","isMoving","mouseX","mouseY","isActiveID","clearTimeout","setTimeout","diffX","diffY","ScrollGesture","scrollElementListener","scrollListener","isScrolling","scrollX","scrollY","onScroll","pageYOffset","pageXOffset","scrollLeft","scrollTop","WheelGesture","delta","onWheel","isWheeling","deltaX","deltaY","deltaMode","useRecognizer","handlers","ref","React","elementRefs","useEffect","_e","keyIndex","gesture","key","unsubscribe","createRef","children","open","_jsx","_Fragment","props","animationConfig","threshold","scrollableBlockRef","_scrollableBlock","observer","IntersectionObserver","isIntersecting","root","observe","unobserve","amv","minOutput","maxOutput","ms","Promise","resolve","perc","val1","val2","array","moveIndex","toIndex","item","diff","__spreadArray","targetIndex","snapPoints","finalValue","getDiff","point","deltas","minDelta","onDrag","dragGesture","wheelGesture","scrollGesture","mouseMoveGesture","deps","callbackRef","_refElement","document","documentElement","_refElementsMultiple","resizeObserver","ResizeObserver","getBoundingClientRect","left","top","width","height","vLeft","vTop","resizeObserverMultiple","entry","_left","_top","_width","_height","_pageLeft","_pageTop","elementRef","subscribe","isConnected","contains","useFluidValues","update","windowDimensionsRef","innerWidth","innerHeight","clientWidth","clientHeight","loopedValues","concat","fill"],"mappings":"qzDAAO,IAAMA,EACX,kFACWC,EACX,u+CAOWC,EAA4B,CACvCC,YAAa,YACbC,UAAW,YACXC,aAAc,YACdC,KAAM,YACNC,WAAY,YACZC,MAAO,YACPC,MAAO,YACPC,OAAQ,YACRC,MAAO,YACPC,eAAgB,YAChBC,KAAM,YACNC,WAAY,YACZC,MAAO,YACPC,UAAW,YACXC,YAAa,YACbC,UAAW,YACXC,WAAY,YACZC,UAAW,YACXC,MAAO,YACPC,eAAgB,YAChBC,SAAU,YACVC,QAAS,YACTC,KAAM,YACNC,SAAU,YACVC,SAAU,YACVC,cAAe,YACfC,SAAU,YACVC,UAAW,YACXC,SAAU,YACVC,UAAW,YACXC,YAAa,YACbC,eAAgB,YAChBC,WAAY,YACZC,WAAY,YACZC,QAAS,YACTC,WAAY,YACZC,aAAc,YACdC,cAAe,YACfC,cAAe,YACfC,cAAe,YACfC,cAAe,YACfC,WAAY,YACZC,SAAU,YACVC,YAAa,YACbC,QAAS,YACTC,QAAS,YACTC,WAAY,YACZC,UAAW,YACXC,YAAa,YACbC,YAAa,YACbC,QAAS,YACTC,UAAW,YACXC,WAAY,YACZC,KAAM,YACNC,UAAW,YACXC,KAAM,YACNC,MAAO,YACPC,YAAa,YACbC,KAAM,YACNC,SAAU,YACVC,QAAS,YACTC,UAAW,YACXC,OAAQ,YACRC,MAAO,YACPC,MAAO,YACPC,SAAU,YACVC,cAAe,YACfC,UAAW,YACXC,aAAc,YACdC,UAAW,YACXC,WAAY,YACZC,UAAW,YACXC,qBAAsB,YACtBC,UAAW,YACXC,WAAY,YACZC,UAAW,YACXC,UAAW,YACXC,YAAa,YACbC,cAAe,YACfC,aAAc,YACdC,eAAgB,YAChBC,eAAgB,YAChBC,eAAgB,YAChBC,YAAa,YACbC,KAAM,YACNC,UAAW,YACXC,MAAO,YACPC,QAAS,YACTC,OAAQ,YACRC,iBAAkB,YAClBC,WAAY,YACZC,aAAc,YACdC,aAAc,YACdC,eAAgB,YAChBC,gBAAiB,YACjBC,kBAAmB,YACnBC,gBAAiB,YACjBC,gBAAiB,YACjBC,aAAc,YACdC,UAAW,YACXC,UAAW,YACXC,SAAU,YACVC,YAAa,YACbC,KAAM,YACNC,QAAS,YACTC,MAAO,YACPC,UAAW,YACXC,OAAQ,YACRC,UAAW,YACXC,OAAQ,YACRC,cAAe,YACfC,UAAW,YACXC,cAAe,YACfC,cAAe,YACfC,WAAY,YACZC,UAAW,YACXC,KAAM,YACNC,KAAM,YACNC,KAAM,YACNC,WAAY,YACZC,OAAQ,YACRC,cAAe,YACfC,IAAK,YACLC,UAAW,YACXC,UAAW,YACXC,YAAa,YACbC,OAAQ,YACRC,WAAY,YACZC,SAAU,YACVC,SAAU,YACVC,OAAQ,YACRC,OAAQ,YACRC,QAAS,YACTC,UAAW,YACXC,UAAW,YACXC,UAAW,YACXC,KAAM,YACNC,YAAa,YACbC,UAAW,YACXC,IAAK,YACLC,KAAM,YACNC,QAAS,YACTC,OAAQ,YACRC,UAAW,YACXC,OAAQ,YACRC,MAAO,YACPC,MAAO,YACPC,WAAY,YACZC,OAAQ,YACRC,YAAa,aAmBT,SAAUC,EAAUC,GACxB,IAAMC,EAjBR,SAAkBD,GAGhB,OAAOA,EAAIE,QAFG,oCAEY,SAAUC,EAAGC,EAAGC,EAAGC,GAC3C,MAAO,IAAMF,EAAIA,EAAIC,EAAIA,EAAIC,EAAIA,CACnC,GACF,CAWuBC,CAASP,GACxBQ,EAVR,SAAkBR,GAChB,OAAmB,IAAfA,EAAIS,OACCT,EAAM,KAGRA,CACT,CAIuBU,CAAST,GACxBU,EACJ,wDAAwDC,KAAKJ,GAE/D,MAAO,CACLJ,EAAGS,SAASF,EAAQ,GAAI,IACxBN,EAAGQ,SAASF,EAAQ,GAAI,IACxBL,EAAGO,SAASF,EAAQ,GAAI,IACxBG,EAAGD,SAASF,EAAQ,GAAI,IAAM,IAElC,CAEM,SAAUI,EAAUC,GAMhB,IAAAZ,EAAeY,IAAZX,EAAYW,EAAIX,EAAbC,EAASU,EAARV,EAAEQ,EAAME,IAOvB,MAAO,KALY,IAALZ,GAAca,SAAS,IAAIC,MAAM,IAC5B,IAALb,GAAcY,SAAS,IAAIC,MAAM,IAC5B,IAALZ,GAAcW,SAAS,IAAIC,MAAM,IAC5B,IAAJJ,EAAO,KAAcG,SAAS,IAAIC,MAAM,EAGzD,CC/LA,IAAMC,EAAmB,SACvBC,EACAC,EACAC,EACAC,GAEM,IAAAC,EAAAC,EAA6CJ,EAAG,GAA/CK,EAAQF,EAAA,GAAEG,EAAQH,EAAA,GAAEI,EAASJ,EAAA,GAAEK,OAClCC,EAAiBV,EAGrB,GAAIU,EAASJ,EAAU,CACrB,GAAwB,aAApBJ,EACF,OAAOQ,EACsB,UAApBR,IACTQ,EAASJ,EAIZ,CAED,GAAII,EAASH,EAAU,CACrB,GAAyB,aAArBJ,EACF,OAAOO,EACuB,UAArBP,IACTO,EAASH,EAIZ,CAED,OAAIC,IAAcC,EACTD,EAGLF,IAAaC,EACXP,GAAOM,EACFE,EAEFC,GAILH,KAAcK,IAChBD,GAAUA,EACDH,IAAaI,IACtBD,GAAkBJ,EAElBI,GAAUA,EAASJ,IAAaC,EAAWD,GAIzCE,KAAeG,IACjBD,GAAUA,EACDD,IAAcE,IACvBD,GAAkBF,EAElBE,EAASA,GAAUD,EAAYD,GAAaA,EAGvCE,EACT,EAsEME,EAAuB,SAC3BC,EACAC,EACAC,EACAC,GAEM,IAAAZ,EAAAC,EAA6CS,EAAa,GAAzDR,EAAQF,EAAA,GAAEG,EAAQH,EAAA,GAAEI,EAASJ,EAAA,GAAEK,OAEtC,GAAID,EAAUnB,SAAWoB,EAAUpB,OACjC,OAAOmB,EAAUS,KAAI,SAACjB,EAAUkB,GAC9B,MAAmB,iBAARlB,EA/CQ,SAACa,EAAeC,GACjC,IAAAV,EAAAC,EAA6CS,EAAa,GAAzDR,EAAQF,EAAA,GAAEG,EAAQH,EAAA,GAAEI,EAASJ,EAAA,GAAEK,OAEhCU,EAAqBxC,EAAU6B,GAC/BY,EAAqBzC,EAAU8B,GA8BrC,OAAOd,EAAU,CAAEX,EA5BPe,EACVc,EACA,CAACP,EAAUC,EAAUY,EAAmBnC,EAAGoC,EAAmBpC,GAC9D,QACA,SAwByBC,EArBbc,EACZc,EACA,CAACP,EAAUC,EAAUY,EAAmBlC,EAAGmC,EAAmBnC,GAC9D,QACA,SAiBmCC,EAdxBa,EACXc,EACA,CAACP,EAAUC,EAAUY,EAAmBjC,EAAGkC,EAAmBlC,GAC9D,QACA,SAU4CQ,EAPhCK,EACZc,EACA,CAACP,EAAUC,EAAUY,EAAmBzB,EAAG0B,EAAmB1B,GAC9D,QACA,UAIJ,CAce2B,CAAiBR,EAAO,CAC7BP,EACAC,EACAP,EACAS,EAAUS,KAGLnB,EACLc,EACA,CAACP,EAAUC,EAAUP,EAAKS,EAAUS,IACpCH,EACAC,EAGN,IAEA,MAAM,IAAIM,MAAM,6BAEpB,EAEMC,EAAoB,SAACC,GACzB,OAAOA,EAAI1C,QAAQ5J,EAAoB,IACzC,EAEMuM,EAAwB,SAACD,GAC7B,OAAOA,EAAIE,MAAMxM,GAAoB+L,KAAI,SAACU,GACxC,OAAwB,IAApBA,EAAEC,QAAQ,KACLD,EAEAE,OAAOF,EAElB,GACF,EAYMG,EAAoB,SAACN,GACzB,OAAOA,EAAI1C,QAAQ3J,GAAgB,SAAUuM,GAC3C,IAA4B,IAAxBA,EAAME,QAAQ,KAChB,OAAOjC,EAAUhB,EAAU+C,IACtB,GAAIK,OAAOC,UAAUC,eAAeC,KAAK9M,EAAYsM,GAC1D,OAAOtM,EAAWsM,GAElB,MAAM,IAAIJ,MAAM,2BAEpB,GACF,EAEM,SAAUa,EACdtB,EACAuB,EACAC,EACAC,WAEMC,EAAcD,aAAA,EAAAA,EAAmBC,YACjCrC,EAAkBoC,aAAA,EAAAA,EAAmBpC,gBACrCC,EAAmBmC,aAAA,EAAAA,EAAmBnC,iBAEtCW,EAlJiB,SACvB0B,EACAC,EACAC,GAEA,IAAMrD,EAASoD,EAAMpD,OACjByB,EAAwC,GAGxC0B,EAAIC,EAAM,GACZ3B,EAAgB,CAAC2B,EAAM,GAAIA,EAAM,GAAIC,EAAO,GAAIA,EAAO,IAC9CF,EAAIC,EAAMpD,EAAS,KAC5ByB,EAAgB,CACd2B,EAAMpD,EAAS,GACfoD,EAAMpD,EAAS,GACfqD,EAAOrD,EAAS,GAChBqD,EAAOrD,EAAS,KAKpB,IAAK,IAAIsD,EAAI,EAAGA,EAAItD,IAAUsD,EAC5B,GAAIH,GAAKC,EAAME,GAAI,CACjB7B,EAAgB,CAAC2B,EAAME,EAAI,GAAIF,EAAME,GAAID,EAAOC,EAAI,GAAID,EAAOC,IAC/D,KACD,CAGH,OAAO7B,CACT,CAqHwB8B,CAAiB/B,EAAOuB,EAAYC,GAEtDtB,EAAoC,cAChB8B,IAApB3C,EACFa,EAAmBb,OACM2C,IAAhBN,IACTxB,EAAmBwB,GAGrB,IAzCmCO,EAyC/B9B,EAAqC,SAOzC,QANyB6B,IAArB1C,EACFa,EAAoBb,OACK0C,IAAhBN,IACTvB,EAAoBuB,GAGlBF,EAAYhD,OAAQ,CACtB,GAA8B,iBAAnBgD,EAAY,GACrB,OAAOtC,EACLc,EACAC,EACAC,EACAC,GAEG,GAAI+B,MAAMC,QAAQX,EAAY,IACnC,OAAOzB,EACLC,EACAC,EACAC,EACAC,GAGI,IAAAiC,EAAA5C,EAA6CS,EAAa,GAAzDR,EAAQ2C,EAAA,GAAE1C,EAAQ0C,EAAA,GAAEzC,EAASyC,EAAA,GAAExC,OAEhCyC,EAAqBpB,EAAkBtB,GACvC2C,EAAqBrB,EAAkBrB,GAEzC2C,EAAiB7B,EAAkB2B,GAEvC,GAvE+BJ,EAuEOK,EAtE1C5B,EAsEsB2B,GAtEEG,OAAOvE,QAAQ,MAAO,MAC9CyC,EAAkBuB,GAAMO,OAAOvE,QAAQ,MAAO,IAqEiB,CACzD,IAAMwE,EAAkB7B,EAAsByB,GACxCK,EAAkB9B,EAAsB0B,GAExCzC,EAASE,EACbC,EACA,CAACP,EAAUC,EAAU+C,EAAiBC,GACtCxC,EACAC,OAGF,IAAgB,IAAAwC,EAAAC,EAAA/C,GAAMgD,EAAAF,EAAAG,QAAAD,EAAAE,KAAAF,EAAAF,EAAAG,OAAA,CAAjB,IAAMhC,EAAC+B,EAAA7C,MAAYuC,EAAiBA,EAAetE,QAAQ,IAAK6C,EAAG,mGACxE,OAAOyB,CACR,CACC,MAAM,IAAI9B,MAAM,4CAGrB,CACC,MAAM,IAAIA,MAAM,+BAEpB,CC3Qa,IAAAuC,EAAc,SACzBhD,EACAuB,EACAC,EACAC,GAEA,OAAIzB,aAAiBiD,EAAAA,WACZjD,EAAMgD,YACXzB,EACAC,EACAC,GAGKH,EACLtB,EACAuB,EACAC,EACAC,EAGN,ECpCayB,EAAY,SAAIlD,GAC3B,OAAOA,OACT,ECAgB,SAAAmD,EACdnD,EACAoD,GAEA,MAAwB,iBAAVpD,GAAuC,iBAAVA,EACvC,CAAEqD,QAASrD,EAAOoD,UAClBpD,CACN,CCPa,IAAAsD,EAAkB,CAC7BC,QAAS,CAAEC,KAAM,EAAGC,SAAU,GAAIC,QAAS,KAC3CC,OAAQ,CAAEC,SAAU,IAAKC,OAAQC,EAAAA,OAAOC,QACxCC,KAAM,CAAER,KAAM,EAAGC,SAAU,GAAIC,QAAS,KACxCO,MAAO,CAAET,KAAM,EAAGC,SAAU,GAAIC,QAAS,KACzCQ,OAAQ,CAAEV,KAAM,EAAGC,SAAU,EAAGC,QAAS,KACzCS,QAAS,CAAEP,SAAU,IAAKC,OAAQC,EAAAA,OAAOM,GAAGN,SAAOO,OACnDC,SAAU,CAAEV,SAAU,IAAKC,OAAQC,EAAAA,OAAOS,IAAIT,SAAOO,OACrDG,YAAa,CAAEZ,SAAU,IAAKC,OAAQC,EAAAA,OAAOW,MAAMX,SAAOO,OAC1DK,OAAQ,CAAEd,SAAU,IAAKC,OAAQC,EAAAA,OAAOa,OAAO,IAAM,IAAM,IAAM,MACjEC,OAAQ,CAAEhB,SAAU,IAAKC,OAAQC,EAAAA,OAAOa,OAAO,IAAM,IAAM,IAAM,IACjEE,OAAQ,CAAEjB,SAAU,IAAKC,OAAQC,EAAAA,OAAOa,OAAO,IAAM,GAAK,IAAM,OAChEG,OAAQ,CAAElB,SAAU,IAAKC,OAAQC,EAAAA,OAAOa,OAAO,IAAM,IAAM,EAAG,OAC9DI,OAAQ,CAAEnB,SAAU,IAAKC,OAAQC,EAAAA,OAAOkB,SCoB1CC,EAAA,WAKE,SAAYA,EAAAjF,EAAwBoD,GAF5B8B,KAAeC,gBAAW,EAGhCD,KAAKE,MAAQ,IAAInC,EAAUA,WAACjD,GAC5BkF,KAAKG,cAAgBjC,CACtB,CAmHH,OAjHU6B,EAAA9D,UAAAmE,aAAR,SAAqBC,EAA0BnC,GAC7C,GAAmC,iBAAxBmC,EAAYlC,QACrB,OAAOmC,EAAAA,OAAON,KAAKE,MAAO,CAAE/B,QAASkC,EAAYlC,UAC5C,GAAIH,EAAUE,aAAA,EAAAA,EAAQQ,YAAaR,aAAA,EAAAA,EAAQqC,WAAW,CAC3D,IAAKvC,EAAUqC,EAAYlC,SACzB,MAAM,IAAI5C,MAAM,2BAGlB,IAAMiF,EAAe,CACnBrC,QAASkC,EAAYlC,QACrBsC,MAAOvC,aAAA,EAAAA,EAAQuC,MACf/B,UAAUR,aAAA,EAAAA,EAAQqC,WAAY,EAAIrC,aAAM,EAANA,EAAQQ,SAC1CC,OAAQT,aAAA,EAAAA,EAAQS,QAGlB,OAAO+B,SAAOV,KAAKE,MAAOM,EAC3B,CAAM,GAAItC,aAAM,EAANA,EAAQyC,MAAO,CACxB,IAAMC,EAAc,CAClBC,SAAU3C,aAAA,EAAAA,EAAQ2C,SAClBC,aAAc5C,aAAA,EAAAA,EAAQ4C,aACtBL,MAAOvC,aAAA,EAAAA,EAAQuC,OAGjB,OAAOE,QAAMX,KAAKE,MAAOU,EAC1B,CACC,IAAK5C,EAAUqC,EAAYlC,SACzB,MAAM,IAAI5C,MAAM,2BAGlB,IAAMwF,EAAe,CACnB5C,QAASkC,EAAYlC,QACrBsC,MAAOvC,aAAA,EAAAA,EAAQuC,MACfnC,KAAMJ,aAAA,EAAAA,EAAQI,KACdE,QAASN,aAAA,EAAAA,EAAQM,QACjBD,SAAUL,aAAA,EAAAA,EAAQK,SAClByC,aAAc9C,aAAA,EAAAA,EAAQ8C,cAGxB,OAAOC,SAAOjB,KAAKE,MAAOa,IAItBhB,EAAA9D,UAAAiF,aAAR,SACEb,EACAc,GAFF,MAqCCC,EAAApB,KAjCO9B,EAAcmD,EAAAA,EAAA,CAAA,EAAArB,KAAKG,eAAkBE,EAAYnC,QACjDoD,EAA4B,QAAhBjH,EAAA6D,aAAA,EAAAA,EAAQqD,YAAQ,IAAAlH,EAAAA,EAAA,EAElC2F,KAAKE,MAAMsB,sBACXtD,eAAAA,EAAQuD,UAAWvD,EAAOuD,QAAQzB,KAAKE,MAAMwB,QAEzCxD,aAAM,EAANA,EAAQyD,WACV3B,KAAKE,MAAM0B,aAAY,SAAC9G,GAAU,IAAAT,EAAA,OAAgB,QAAhBA,EAAA6D,aAAM,EAANA,EAAQyD,gBAAQ,IAAAtH,OAAA,EAAAA,EAAA8B,KAAA+B,EAAGpD,EAAM,IAG7D,IAAM+G,EAAY7B,KAAKI,aAAaC,EAAanC,GAE3C4D,EAAa,SAACnH,SACdA,EAAOoH,WACK,QAAd1H,EAAA6D,aAAM,EAANA,EAAQ8D,cAAM,IAAA3H,GAAAA,EAAA8B,KAAA+B,EAAGvD,EAAOG,OACxBqG,SAAAA,EAAaxG,EAAOG,OAExB,EAEMmH,EAAgB,SAACtH,GACjBA,EAAOoH,WACTX,EAAKnB,mBAEc,IAAfqB,GAAoBF,EAAKnB,gBAAkBqB,GAC7CO,EAAUK,QACVL,EAAUM,MAAMF,IAEhBH,EAAWnH,GAGjB,EAEAkH,EAAUM,MAAMnE,EAAUE,aAAM,EAANA,EAAQqD,MAAQU,EAAgBH,IAGrD/B,EAAA9D,UAAAmG,SAAP,SACE/B,EACAgC,GAFF,IA2BCjB,EAAApB,KAvBC,GAAKK,EAIL,GAAIrD,MAAMC,QAAQoD,GAAc,CAC9B,IAAIiC,EAAmB,EAEjBC,EAAa,SAACzH,KAClBwH,IAEyBjC,EAAY/G,OAMrC8H,EAAKF,aAAab,EAAYiC,GAAmBC,GAL/CF,GAAYA,EAASvH,EAMzB,EAEAkF,KAAKkB,aAAab,EAAYiC,GAAmBC,EAClD,MACCvC,KAAKkB,aAAab,EAAagC,IAI5BtC,EAAA9D,UAAAuG,SAAP,WACE,OAAOxC,KAAKE,OAEfH,CAAD,ICrJa0C,EAAgB,SAC3B3H,EACAoD,GAKA,IAAMwE,EAAkBC,EAAAA,OAAO,IAAI5C,EAAgBjF,EAAOoD,IAAS0E,QAE7DC,EAAWC,EAAAA,aACf,SAACzC,EAA0CgC,GACzCK,EAAgBN,SAAS/B,EAAagC,EACvC,GACD,IAKF,MAAO,CAFYU,EAAOA,SAAC,WAAM,OAAAL,EAAgBF,aAAY,IAEzCK,EACtB,ECVgB,SAAAG,EACdC,EACA/E,GAEA,IAAMgF,EAAkBP,UAAO,GACzBtI,EAAAC,EAA4BmI,EAAcQ,EAAY5B,EAAAA,EAAA,CAAA,EACvDjD,EAAgBU,MAChBZ,OAFE2D,OAAWsB,OAKZC,EAAkBN,eACtB,SAAChI,GACKkC,MAAMC,QAAQnC,GAChBuI,gBAAe,WAAM,OAAAF,EAAarI,EAAMI,KAAI,SAACU,GAAM,OAAAqC,EAAWrC,EAAE,IAAE,IAElEyH,gBAAe,WAAM,OAAAF,EAAalF,EAAWnD,GAAxB,GAExB,GACD,IAWF,OARAwI,EAAAA,iBAAgB,WACTJ,EAAgBN,SACnBQ,EAAgBH,GAGlBC,EAAgBN,SAAU,CAC5B,GAAG,CAACK,EAAc/E,IAEX,CACL,SAAIpD,CAAMyI,GACRH,EAAgBG,EACjB,EACD,SAAIzI,GACF,OAAO+G,CACR,EACD,gBAAI2B,GACF,OAAO3B,EAAUH,KAClB,EAEL,CCtDA,IAAA+B,EAAA,WAGE,SAAYA,EAAAC,EAA6BxF,GACvC8B,KAAK2D,iBAAmBD,EAAOxI,KAAI,SAACU,GAAM,OAAA,IAAImE,EAAgBnE,EAAGsC,EAAO,GACzE,CAcH,OAZSuF,EAAAxH,UAAAmG,SAAP,SACE/B,EACAgC,GAEArC,KAAK2D,iBAAiBzI,KAAI,SAAC0I,EAAIhH,GAC7BgH,EAAGxB,SAAS/B,EAAYzD,GAAIyF,EAC9B,KAGKoB,EAAAxH,UAAAuG,SAAP,WACE,OAAOxC,KAAK2D,iBAAiBzI,KAAI,SAAC0I,GAAO,OAAAA,EAAGpB,UAAH,KAE5CiB,CAAD,ICNgB,SAAAI,EAASC,EAAgB5F,GACvC,IAAM6F,ECMgB,SAACD,EAAgB5F,GACjC,IAAA7D,EAAAC,EAAwB0J,EAAQA,UAAC,GAAM,GAAtCC,EAAO5J,EAAA,GAAE6J,OACVhH,EAA6CyF,EAAAA,OAAOzE,GAAQ0E,QAA1DuB,SAAMC,UAAOC,SAAcC,WAC7BC,EAAAjK,EAA4BmI,EAAc0B,EAAMG,GAAY,GAA3DzC,EAAS0C,EAAA,GAAEpB,OA4BlB,OA1BAG,EAAAA,iBAAgB,WACVQ,GACFI,GAAW,GACXb,gBAAe,WACb,OAAAF,EACEnG,MAAMC,QAAQmH,GACVA,EAAMlJ,KAAI,SAACsJ,GAAM,OAAAvG,EAAWuG,EAAGF,MAC/BrG,EAAWmG,EAAOE,GAHxB,KAOFnB,EACEnG,MAAMC,QAAQoH,GACVA,EAAKnJ,KAAI,SAACsJ,GAAM,OAAAvG,EAAWuG,EAAGF,MAC9BrG,EAAWoG,EAAMC,IACrB,WACEJ,GAAW,GAEXrC,EACG4C,mBACAC,SAAQ,SAACC,GAAM,OAAA9C,EAAU+C,mBAAmBD,EAA7B,GACpB,GAGN,GAAG,CAACb,IAEG,SACLzB,GACG,OAAAA,EAASR,EAAWoC,GAC3B,CDxCaY,CAAiBf,EAAO5F,GACnC,OAAO,SACL4G,GACG,OAAAf,GAAG,SAACpK,EAAGoL,GAAM,OAAAD,EAAG,CAAEhK,MAAOnB,GAAKoL,EAAE,IACvC,CElBM,SAAUC,EAAIC,GAClB,OAAOA,EAAO,EAAI,CACpB,UAcgBC,EAAMpK,EAAeqK,EAAoBC,GACvD,OAAOC,KAAKC,IAAID,KAAKE,IAAIzK,EAAOqK,GAAaC,EAC/C,CAMA,SAASI,EAAOC,EAA0BC,EAAmBC,GAC3D,OAAkB,IAAdD,GAAmBL,KAAKO,IAAIF,KAAe9K,IALjD,SAAiB6K,EAA0BE,GACzC,OAAON,KAAKQ,IAAIJ,EAA6B,EAAXE,EACpC,CAIWG,CAAQL,EAAkBE,GAEhCF,EAAmBC,EAAYC,GAC/BD,EAAYC,EAAWF,EAE5B,CCjBO,ICZMM,EAAa,SAAC5H,EAAiBD,GAAyC,MAAC,CACpFC,QAAOA,EACPD,OAAMA,EACN,ECNI8H,EAAsB,SAC1BC,GAEA,OAAOA,EAAWC,QAAsB,SAACC,EAAKrL,GAM5C,OALIkC,MAAMC,QAAQnC,GAChBqL,EAAIC,KAAJC,MAAAF,SAAYH,EAAoBlL,KAAQ,IAExCqL,EAAIC,KAAKnI,EAAWnD,IAEfqL,CACR,GAAE,GACL,EC4BgB,SAAAG,EACdC,EACAC,GAIA,IAAMC,EAAc,IAAIC,IAMxB,OAJAF,EAAO9B,SAAQ,SAAUrK,GAAA,IAAA6C,EAAA5C,EAAkCD,EAAA,GAAjCsM,EAAKzJ,EAAA,GAAEmF,EAAQnF,EAAA,GAAEqH,EAAerH,EAAA,GAAf0J,OAAO,IAAArC,GAAQA,EACxDkC,EAAYI,IAAIF,EA7BpB,SACEJ,EACAI,EACAtE,EACAuE,GAMA,YANA,IAAAA,IAAAA,GAAoB,GAEpBL,EAAW7B,SAAQ,SAACoC,GAClBA,EAAOC,iBAAiBJ,EAAOtE,EAAUuE,EAC3C,IAEO,WACLL,EAAW7B,SAAQ,SAACoC,GAClBA,EAAOE,oBAAoBL,EAAOtE,EAAUuE,EAC9C,GACF,CACF,CAc2BK,CAAYV,EAAYI,EAAOtE,EAAUuE,GAClE,IAEO,SAAUM,eACf,IAAqC,IAAAhK,EAAAQ,EAAA+I,EAAYU,WAAS5C,EAAArH,EAAAU,QAAA2G,EAAA1G,KAAA0G,EAAArH,EAAAU,OAAE,CAAjD,IAAAwJ,EAAA9M,EAAsBiK,EAAAzJ,MAAA,GAArBuM,EAAQD,EAAA,GAAEE,EAAUF,EAAA,GAC9B,IAAKF,EAEH,YADAI,KAImC,IAAjCJ,EAAUrL,QAAQwL,IACpBC,GAEH,mGACH,CACF,CClEO,IAAMC,EAAc,SAAC9K,EAAW+K,GACrC,MAAO,CAAE/K,EAACA,EAAE+K,EAACA,EACf,ECFAC,EAAA,WAAA,SAAAA,IAEEzH,KAAA0H,cAAwBC,KAAKC,MAC7B5H,KAAQ6H,UAAY,EAEpB7H,KAAA8H,eAAqC,EAgDtC,CAAD,OAzCEL,EAAWxL,UAAA8L,YAAX,aAKAN,EAAAxL,UAAA+L,cAAA,WACMhI,KAAKiI,YACPjI,KAAKiI,cAKTR,EAAaxL,UAAAiM,cAAb,SAAc7F,GACZrC,KAAKqC,SAAWA,GAIlBoF,EAAYxL,UAAAkM,aAAZ,SAAa9N,GAAb,IAuBC+G,EAAApB,KAtBCoI,EAAa/N,EAAA+N,cACbN,EAAczN,EAAAyN,eACdzF,EAAQhI,EAAAgI,SACRnE,EAAM7D,EAAA6D,OAkBN,OAXA8B,KAAKoI,cAAgBA,EACrBpI,KAAK8H,eAAiBA,EAAe5M,KACnC,SAACmN,GAA8B,OAAAA,EAAQzF,OAAR,IAEjC5C,KAAKqC,SAAWA,EAChBrC,KAAK9B,OAASA,EAGd8B,KAAK+H,cAGE,WAAM,OAAA3G,EAAK6G,YAAc7G,EAAK6G,eA1ChCR,EAAea,gBAAW,GA4ClCb,CAAA,IC9CDc,EAAA,SAAAC,GAAA,SAAAD,2DACEnH,EAAAqH,cAAyBlB,EAAY,EAAG,GACxCnG,EAAAsH,gBAA2BnB,EAAY,EAAG,GAC1CnG,EAAAuH,SAAoBpB,EAAY,EAAG,GACnCnG,EAAAwH,iBAA4BrB,EAAY,EAAG,GAC3CnG,EAAAyH,YAAuBtB,EAAY,EAAG,GACtCnG,EAAA0H,OAAkBvB,EAAY,EAAG,GACjCnG,EAAAP,SAAoB0G,EAAY,EAAG,IAmKpC,CAAD,OA1KiCwB,EAAOR,EAAAC,GAWtCD,EAAAtM,UAAA8L,YAAA,YACM/H,KAAKoI,eAAiBpI,KAAK8H,eAAexO,OAAS,KACrD0G,KAAKiI,WAAa3B,EAChB,CAAC0C,QACD,CACE,CAAC,YAAahJ,KAAKiJ,YAAYC,KAAKlJ,OACpC,CAAC,YAAaA,KAAKmJ,YAAYD,KAAKlJ,OACpC,CAAC,UAAWA,KAAKoJ,UAAUF,KAAKlJ,OAChC,CAAC,aAAcA,KAAKiJ,YAAYC,KAAKlJ,MAAO,CAAEqJ,SAAS,IACvD,CAAC,YAAarJ,KAAKmJ,YAAYD,KAAKlJ,MAAO,CAAEqJ,SAAS,IACtD,CAAC,WAAYrJ,KAAKoJ,UAAUF,KAAKlJ,WASzCuI,EAAAtM,UAAA+L,cAAA,WACMhI,KAAKiI,YACPjI,KAAKiI,WAAW,CAAC,YAAa,YAAa,aAAc,eAI7DM,EAAAtM,UAAAqN,gBAAA,WAAA,IAoBClI,EAAApB,KAnBKA,KAAKqC,UACPrC,KAAKqC,SAAS,CACZkH,KAAM,CAACvJ,KAAKwJ,cACZC,KAAMzJ,KAAK6H,SACX6B,UAAW1J,KAAK2I,SAASlM,EACzBkN,UAAW3J,KAAK2I,SAASnB,EACzBoC,QAAS5J,KAAK6I,YAAYpM,EAC1BoN,QAAS7J,KAAK6I,YAAYrB,EAC1BsC,UAAW9J,KAAKa,SAASpE,EACzBsN,UAAW/J,KAAKa,SAAS2G,EACzBwC,UAAW3E,KAAKO,IAAI5F,KAAK2I,SAASlM,GAClCwN,UAAW5E,KAAKO,IAAI5F,KAAK2I,SAASnB,GAClC0C,WAAY7E,KAAK8E,KAAKnK,KAAK2I,SAASlM,GACpC2N,WAAY/E,KAAK8E,KAAKnK,KAAK2I,SAASnB,GACpC6C,OAAQ,WACNjJ,EAAK4G,eACN,KAKPO,EAAWtM,UAAAgN,YAAX,SAAYzE,SACK,eAAXA,EAAE8F,KACJtK,KAAKyI,cAAgB,CACnBhM,EAAG+H,EAAE+F,QAAQ,GAAGC,QAChBhD,EAAGhD,EAAE+F,QAAQ,GAAGE,SAGlBzK,KAAKyI,cAAgB,CAAEhM,EAAG+H,EAAEgG,QAAShD,EAAGhD,EAAEiG,SAG5CzK,KAAK2I,SAAW,CAAElM,EAAG,EAAG+K,EAAG,GAC3BxH,KAAK8I,OAAS,CAAErM,EAAGuD,KAAK6I,YAAYpM,EAAG+K,EAAGxH,KAAK6I,YAAYrB,GAC3DxH,KAAK4I,iBAAmB,CAAEnM,EAAG,EAAG+K,EAAG,GACnCxH,KAAKa,SAAW,CAAEpE,EAAG,EAAG+K,EAAG,GAG3B,IAAMkD,EAAW1K,KAAK8H,eAAe6C,MAAK,SAACC,GAAc,OAAAA,IAASpG,EAAEsC,MAAM,IAE1E,GAAItC,EAAEsC,SAAW9G,KAAKoI,eAAiBsC,EAAU,CAC/C1K,KAAK6H,UAAW,EAChBrD,EAAEqG,iBAGEH,IACF1K,KAAKwJ,aAAexJ,KAAK8H,eAAejM,QAAQ6O,IAKlD,IAAMI,GAAqB,QAAXzQ,EAAA2F,KAAK9B,cAAM,IAAA7D,OAAA,EAAAA,EAAEyQ,UAAW9K,KAAK9B,OAAO4M,UAC9CC,EAAmBD,aAAA,EAAAA,EAASpB,UAC5BsB,EAAmBF,aAAA,EAAAA,EAASnB,UAElC3J,KAAK0I,gBAAkB,CACrBjM,EAAGsO,QAAAA,EAAoB,EACvBvD,EAAGwD,QAAAA,EAAoB,GAGzBhL,KAAK2I,SAAW,CACdlM,EAAGuD,KAAK0I,gBAAgBjM,EACxB+K,EAAGxH,KAAK0I,gBAAgBlB,GAG1BxH,KAAK4I,iBAAmB,CACtBnM,EAAGuD,KAAK0I,gBAAgBjM,EACxB+K,EAAGxH,KAAK0I,gBAAgBlB,GAG1BxH,KAAKsJ,iBACN,GAGHf,EAAWtM,UAAAkN,YAAX,SAAY3E,GACV,GAAIxE,KAAK6H,SAAU,CACjBrD,EAAEqG,iBACF,IAAMjD,EAAMD,KAAKC,MACXqD,EAAY/F,EAAM0C,EAAM5H,KAAK0H,cAAe,GAAK,IACvD1H,KAAK0H,cAAgBE,EAErB,IAAMsD,EAAID,EAAY,IAEP,cAAXzG,EAAE8F,KACJtK,KAAK2I,SAAW,CACdlM,EACEuD,KAAK0I,gBAAgBjM,GACpB+H,EAAE+F,QAAQ,GAAGC,QAAUxK,KAAKyI,cAAchM,GAC7C+K,EACExH,KAAK0I,gBAAgBlB,GACpBhD,EAAE+F,QAAQ,GAAGE,QAAUzK,KAAKyI,cAAcjB,IAG/CxH,KAAK2I,SAAW,CACdlM,EAAGuD,KAAK0I,gBAAgBjM,GAAK+H,EAAEgG,QAAUxK,KAAKyI,cAAchM,GAC5D+K,EAAGxH,KAAK0I,gBAAgBlB,GAAKhD,EAAEiG,QAAUzK,KAAKyI,cAAcjB,IAIhExH,KAAK6I,YAAc,CACjBpM,EAAGuD,KAAK8I,OAAOrM,EAAIuD,KAAK2I,SAASlM,EACjC+K,EAAGxH,KAAK8I,OAAOtB,EAAIxH,KAAK2I,SAASnB,GAGnCxH,KAAKa,SAAW,CACdpE,EAAGyI,GACAlF,KAAK2I,SAASlM,EAAIuD,KAAK4I,iBAAiBnM,GAAKyO,EAAI,KACjD,EAAIzD,EAAQa,gBACbb,EAAQa,iBAEVd,EAAGtC,GACAlF,KAAK2I,SAASnB,EAAIxH,KAAK4I,iBAAiBpB,GAAK0D,EAAI,KACjD,EAAIzD,EAAQa,gBACbb,EAAQa,kBAIZtI,KAAK4I,iBAAmB,CACtBnM,EAAGuD,KAAK2I,SAASlM,EACjB+K,EAAGxH,KAAK2I,SAASnB,GAGnBxH,KAAKsJ,iBACN,GAGHf,EAAAtM,UAAAmN,UAAA,WACMpJ,KAAK6H,WACP7H,KAAK6H,UAAW,EAChB7H,KAAKsJ,kBACLtJ,KAAKgI,gBACLhI,KAAK+H,gBAGVQ,CAAD,CA1KA,CAAiCd,GCDjC0D,EAAA,SAAA3C,GAAA,SAAA2C,2DAGE/J,EAAAuH,SAAoBpB,EAAY,EAAG,GACnCnG,EAAAwH,iBAA4BrB,EAAY,EAAG,GAC3CnG,EAAAP,SAAoB0G,EAAY,EAAG,GACnCnG,EAAAgK,UAAqB7D,EAAY,EAAG,IAkGrC,CAAD,OAxGsCwB,EAAOoC,EAAA3C,GAU3C2C,EAAAlP,UAAA8L,YAAA,WACM/H,KAAKoI,cACPpI,KAAKiI,WAAa3B,EAChB,CAACtG,KAAKoI,eACN,CAAC,CAAC,YAAapI,KAAKqL,YAAYnC,KAAKlJ,SAE9BA,KAAK8H,eAAexO,OAAS,EACtC0G,KAAKiI,WAAa3B,EAAatG,KAAK8H,eAAgB,CAClD,CAAC,YAAa9H,KAAKqL,YAAYnC,KAAKlJ,SAGtCA,KAAKiI,WAAa3B,EAChB,CAAC0C,QACD,CAAC,CAAC,YAAahJ,KAAKqL,YAAYnC,KAAKlJ,UAK3CmL,EAAAlP,UAAAqN,gBAAA,iBACMtJ,KAAKqC,UACPrC,KAAKqC,SAAS,CACZkH,KAAM,CAACvJ,KAAKwJ,cACZ7C,MAAO3G,KAAK2G,MACZ2E,SAAUtL,KAAK6H,SACff,eAAQzM,EAAA2F,KAAK2G,4BAAOG,OACpByE,OAAQvL,KAAK2I,SAASlM,EACtB+O,OAAQxL,KAAK2I,SAASnB,EACtBsC,UAAW9J,KAAKa,SAASpE,EACzBsN,UAAW/J,KAAKa,SAAS2G,EACzB0C,WAAYlK,KAAKoL,UAAU3O,EAC3B2N,WAAYpK,KAAKoL,UAAU5D,KAKjC2D,EAAWlP,UAAAoP,YAAX,SAAY7G,GAAZ,IA0DCpD,EAAApB,KAxDO0K,EAAW1K,KAAK8H,eAAe6C,MAAK,SAACC,GAAc,OAAAA,IAASpG,EAAEsC,MAAM,IAGtE4D,IACF1K,KAAKwJ,aAAexJ,KAAK8H,eAAejM,QAAQ6O,IAGlD1K,KAAK2G,MAAQnC,EAEb,IAAMoD,EAAcD,KAAKC,MACnBqD,EAAY5F,KAAKC,IAAIsC,EAAM5H,KAAK0H,cAAe,IACrD1H,KAAK0H,cAAgBE,EACrB,IAAMsD,EAAID,EAAY,IAEhBxO,EAAI+H,EAAEgG,QACNhD,EAAIhD,EAAEiG,QAEZzK,KAAK2I,SAAW,CAAElM,IAAG+K,EAACA,IAEG,IAArBxH,KAAKyL,aACPzL,KAAK6H,UAAW,EAChB6D,aAAa1L,KAAKyL,aAGpBzL,KAAKyL,WAAaE,YAAW,WAC3BvK,EAAKyG,UAAW,EAChBzG,EAAKgK,UAAY,CAAE3O,EAAG,EAAG+K,EAAG,GAC5BpG,EAAKP,SAAW,CAAEpE,EAAG,EAAG+K,EAAG,GAE3BpG,EAAKkI,iBACN,GAAE,KAEH,IAAMsC,EAAQ5L,KAAK2I,SAASlM,EAAIuD,KAAK4I,iBAAiBnM,EAChDoP,EAAQ7L,KAAK2I,SAASnB,EAAIxH,KAAK4I,iBAAiBpB,EAEtDxH,KAAKoL,UAAY,CACf3O,EAAG4I,KAAK8E,KAAKyB,GACbpE,EAAGnC,KAAK8E,KAAK0B,IAGf7L,KAAKa,SAAW,CACdpE,EAAGyI,EACD0G,EAAQV,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,iBAEVd,EAAGtC,EACD2G,EAAQX,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,kBAIZtI,KAAK4I,iBAAmB,CAAEnM,EAAGuD,KAAK2I,SAASlM,EAAG+K,EAAGxH,KAAK2I,SAASnB,GAE/DxH,KAAKsJ,mBAER6B,CAAD,CAxGA,CAAsC1D,GCAtCqE,EAAA,SAAAtD,GAAA,SAAAsD,2DAEE1K,EAAAuH,SAAoBpB,EAAY,EAAG,GACnCnG,EAAAwH,iBAA4BrB,EAAY,EAAG,GAC3CnG,EAAAgK,UAAqB7D,EAAY,EAAG,GACpCnG,EAAAP,SAAoB0G,EAAY,EAAG,IA+FpC,CAAD,OApGmCwB,EAAO+C,EAAAtD,GASxCsD,EAAA7P,UAAA8L,YAAA,WACM/H,KAAKoI,cACPpI,KAAKiI,WAAa3B,EAChB,CAACtG,KAAKoI,eACN,CAAC,CAAC,SAAUpI,KAAK+L,sBAAsB7C,KAAKlJ,SAG9CA,KAAKiI,WAAa3B,EAChB,CAAC0C,QACD,CAAC,CAAC,SAAUhJ,KAAKgM,eAAe9C,KAAKlJ,UAK3C8L,EAAA7P,UAAAqN,gBAAA,WACMtJ,KAAKqC,UACPrC,KAAKqC,SAAS,CACZ4J,YAAajM,KAAK6H,SAClBqE,QAASlM,KAAK2I,SAASlM,EACvB0P,QAASnM,KAAK2I,SAASnB,EACvBsC,UAAW9J,KAAKa,SAASpE,EACzBsN,UAAW/J,KAAKa,SAAS2G,EACzB0C,WAAYlK,KAAKoL,UAAU3O,EAC3B2N,WAAYpK,KAAKoL,UAAU5D,KAKjCsE,EAAQ7P,UAAAmQ,SAAR,SAAS/R,GAAT,IAmDC+G,EAAApB,KAnDUvD,EAACpC,EAAAoC,EAAE+K,EAACnN,EAAAmN,EACPI,EAAcD,KAAKC,MACnBqD,EAAY5F,KAAKC,IAAIsC,EAAM5H,KAAK0H,cAAe,IACrD1H,KAAK0H,cAAgBE,EACrB,IAAMsD,EAAID,EAAY,IAEtBjL,KAAK2I,SAAW,CAAElM,IAAG+K,EAACA,IAGG,IAArBxH,KAAKyL,aACPzL,KAAK6H,UAAW,EAChB6D,aAAa1L,KAAKyL,aAGpBzL,KAAKyL,WAAaE,YAAW,WAC3BvK,EAAKyG,UAAW,EAChBzG,EAAKgK,UAAY,CAAE3O,EAAG,EAAG+K,EAAG,GAG5BpG,EAAKP,SAAW,CAAEpE,EAAG,EAAG+K,EAAG,GAE3BpG,EAAKkI,iBACN,GAAE,KAEH,IAAMsC,EAAQ5L,KAAK2I,SAASlM,EAAIuD,KAAK4I,iBAAiBnM,EAChDoP,EAAQ7L,KAAK2I,SAASnB,EAAIxH,KAAK4I,iBAAiBpB,EAEtDxH,KAAKoL,UAAY,CACf3O,EAAG4I,KAAK8E,KAAKyB,GACbpE,EAAGnC,KAAK8E,KAAK0B,IAGf7L,KAAKa,SAAW,CACdpE,EAAGyI,EACD0G,EAAQV,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,iBAEVd,EAAGtC,EACD2G,EAAQX,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,kBAIZtI,KAAK4I,iBAAmB,CACtBnM,EAAGuD,KAAK2I,SAASlM,EACjB+K,EAAGxH,KAAK2I,SAASnB,GAGnBxH,KAAKsJ,mBAGPwC,EAAA7P,UAAA+P,eAAA,WACU,IAAaxE,EAAsBwB,OAAMqD,YAAZ5P,EAAMuM,OAAMsD,YACjDtM,KAAKoM,SAAS,CAAE3P,EAACA,EAAE+K,EAACA,KAGtBsE,EAAA7P,UAAA8P,sBAAA,mBACQtP,GAAwB,QAApBpC,EAAA2F,KAAKoI,qBAAe,IAAA/N,OAAA,EAAAA,EAAAkS,aAAc,EACtC/E,GAAwB,QAApBtK,EAAA8C,KAAKoI,qBAAe,IAAAlL,OAAA,EAAAA,EAAAsP,YAAa,EAC3CxM,KAAKoM,SAAS,CAAE3P,EAACA,EAAE+K,EAACA,KAEvBsE,CAAD,CApGA,CAAmCrE,GCGnCgF,EAAA,SAAAjE,GAAA,SAAAiE,2DAEErL,EAAAuH,SAAoBpB,EAAY,EAAG,GACnCnG,EAAAwH,iBAA4BrB,EAAY,EAAG,GAC3CnG,EAAAgK,UAAqB7D,EAAY,EAAG,GACpCnG,EAAAP,SAAoB0G,EAAY,EAAG,GACnCnG,EAAAsL,MAAiBnF,EAAY,EAAG,GAGhCnG,EAAA0H,OAAkBvB,EAAY,EAAG,GACjCnG,EAAAyH,YAAuBtB,EAAY,EAAG,IAuGvC,CAAD,OAjHkCwB,EAAO0D,EAAAjE,GAcvCiE,EAAAxQ,UAAA8L,YAAA,WACM/H,KAAKoI,gBACPpI,KAAKiI,WAAa3B,EAChB,CAACtG,KAAKoI,eACN,CAAC,CAAC,QAASpI,KAAK2M,QAAQzD,KAAKlJ,WAKnCyM,EAAAxQ,UAAAqN,gBAAA,WACMtJ,KAAKqC,UACPrC,KAAKqC,SAAS,CACZyE,OAAQ9G,KAAKoI,cACbwE,WAAY5M,KAAK6H,SACjBgF,OAAQ7M,KAAK0M,MAAMjQ,EACnBqQ,OAAQ9M,KAAK0M,MAAMlF,EACnB0C,WAAYlK,KAAKoL,UAAU3O,EAC3B2N,WAAYpK,KAAKoL,UAAU5D,EAC3BkC,UAAW1J,KAAK2I,SAASlM,EACzBkN,UAAW3J,KAAK2I,SAASnB,EACzBoC,QAAS5J,KAAK8I,OAAOrM,EACrBoN,QAAS7J,KAAK8I,OAAOtB,EACrBsC,UAAW9J,KAAKa,SAASpE,EACzBsN,UAAW/J,KAAKa,SAAS2G,KAK/BiF,EAAOxQ,UAAA0Q,QAAP,SAAQhG,GAAR,IAsECvF,EAAApB,KArEO6M,EAA8BlG,EAAKkG,OAA3BC,EAAsBnG,EAAKmG,OAAnBC,EAAcpG,YAE9BiB,EAAcD,KAAKC,MACnBqD,EAAY5F,KAAKC,IAAIsC,EAAM5H,KAAK0H,cAAe,IACrD1H,KAAK0H,cAAgBE,EACrB,IAAMsD,EAAID,EAAY,IAEtBjL,KAAK6H,UAAW,GAES,IAArB7H,KAAKyL,aACPzL,KAAK6H,UAAW,EAChB6D,aAAa1L,KAAKyL,aAGpBzL,KAAKyL,WAAaE,YAAW,WAC3BvK,EAAKyG,UAAW,EAChBzG,EAAKyH,YAAc,CAAEpM,EAAG2E,EAAK0H,OAAOrM,EAAG+K,EAAGpG,EAAK0H,OAAOtB,GACtDpG,EAAKkI,kBAELlI,EAAKP,SAAW,CAAEpE,EAAG,EAAG+K,EAAG,GAC3BpG,EAAKuH,SAAW,CAAElM,EAAG,EAAG+K,EAAG,EAC5B,GAAE,KAGe,IAAduF,GACFF,GAvEc,GAwEdC,GAxEc,IAyES,IAAdC,IACTF,GAzEc,IA0EdC,GA1Ec,KA6EhB9M,KAAK0M,MAAQ,CAAEjQ,EAAGoQ,EAAQrF,EAAGsF,GAC7B9M,KAAK2I,SAAW,CACdlM,EAAGuD,KAAK2I,SAASlM,EAAIoQ,EACrBrF,EAAGxH,KAAK2I,SAASnB,EAAIsF,GAEvB9M,KAAK8I,OAAS,CACZrM,EAAGuD,KAAK6I,YAAYpM,EAAIuD,KAAK2I,SAASlM,EACtC+K,EAAGxH,KAAK6I,YAAYrB,EAAIxH,KAAK2I,SAASnB,GAGxC,IAAMoE,EAAQ5L,KAAK2I,SAASlM,EAAIuD,KAAK4I,iBAAiBnM,EAChDoP,EAAQ7L,KAAK2I,SAASnB,EAAIxH,KAAK4I,iBAAiBpB,EAEtDxH,KAAKoL,UAAY,CACf3O,EAAG4I,KAAK8E,KAAKyB,GACbpE,EAAGnC,KAAK8E,KAAK0B,IAGf7L,KAAKa,SAAW,CACdpE,EAAGyI,EACD0G,EAAQV,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,iBAEVd,EAAGtC,EACD2G,EAAQX,EAAI,KACX,EAAIzD,EAAQa,gBACbb,EAAQa,kBAIZtI,KAAK4I,iBAAmB,CACtBnM,EAAGuD,KAAK2I,SAASlM,EACjB+K,EAAGxH,KAAK2I,SAASnB,GAGnBxH,KAAKsJ,mBAERmD,CAAD,CAjHA,CAAkChF,GCGrBuF,EAAgB,SAACC,GAC5B,IAAMC,EAAMC,EAAMxK,SACZyK,EAAcD,EAAMxK,OAAmB,IACvC8D,EAAc0G,EAAMxK,OAExB,IAAI+D,KAAO9D,QAiCb,OA9BAuK,EAAME,WAAU,uBACd,IAAsC,IAAAnQ,EAAAQ,EAAA+I,EAAYU,WAAS5C,EAAArH,EAAAU,QAAA2G,EAAA1G,KAAA0G,EAAArH,EAAAU,OAAE,CAApD,IAAG0P,EAAHhT,aAAG,GAAEiT,EAAQD,EAAAC,SAAEC,EAAOF,EAAAE,QAClBnL,EAAL/H,EAAiB2S,EAASM,GAAS,GAAtB,GACnBC,EAAQtF,cAAc7F,EACvB,mGACH,GAAG,CAAC4K,IAEJE,EAAME,WAAU,WAgBd,OAfAJ,EAASvI,SAAQ,SAACrK,EAAkCkT,GAAlC,IAAArQ,EAAA5C,EAAgCD,EAAA,GAA/BoT,EAAGvQ,EAAA,GAAEsQ,EAAOtQ,EAAA,GAAEmF,EAAQnF,EAAA,GAAEgB,EAAMhB,EAAA,GAC/CmG,gBAAe,WACb,OAAAoD,EAAYI,IAAI4G,EAAK,CACnBF,SAAQA,EACRC,QAAOA,EACPE,YAAaF,EAAQrF,aAAa,CAChCC,cAAe8E,EAAItK,QACnBkF,eAAgBsF,EAAYxK,QAC5BP,SAAQA,EACRnE,OAAMA,KAPV,GAWJ,IAEO,uBACL,IAAgC,IAAAhB,EAAAQ,EAAA+I,EAAYU,WAAS5C,EAAArH,EAAAU,QAAA2G,EAAA1G,KAAA0G,EAAArH,EAAAU,OAAE,CAA9C,IAAK8P,EAALpT,EAAAiK,EAAAzJ,MAAA,GAAgB,GAAA4S,YACvBA,GAAeA,GAChB,mGACH,CACF,IAEO,SAACvS,GACN,OAAIA,QACK,CAAE+R,IAAGA,IAEZE,EAAYxK,QAAQzH,GAClBiS,EAAYxK,QAAQzH,IAAUgS,EAAMQ,YAE/B,CAAET,IAAKE,EAAYxK,QAAQzH,IAEtC,CACF,kUCzC4B,SAACd,OAC3ByJ,EAAKzJ,EAAAyJ,MACL8J,EAAQvT,EAAAuT,SACR1Q,EAAQ7C,EAAA8J,KAARA,OAAI,IAAAjH,EAAG,EAACA,EACRqH,EAAAlK,EAAA+J,MAAAA,OAAQ,IAAAG,EAAA,EAACA,EACT6C,EAAQ/M,EAAAgK,KAGFwJ,EAAOhK,EAASC,EAAO,CAC3BK,KAAIA,EACJC,MAAKA,EACLC,UANE,IAAA+C,EAAG,EAACA,EAONlJ,OANI7D,EAAA6D,SASN,OACE4P,EAAAA,IACGC,EAAAA,SAAA,CAAAH,SAAAC,GACC,SAAChM,EAAWoC,GACV,OAAAA,GAAW2J,EAAS,CAAE9S,MAAO+G,EAAU/G,OAAe,KAIhE,0BCrB+B,SAACkT,GAE5B,IAAAJ,EAIEI,EAJMJ,SACRvT,EAGE2T,EAHkB5C,UAApBA,OAAS,IAAA/Q,EAAG,SAAQA,EACpB4T,EAEED,EAFaC,gBACf/Q,EACE8Q,EADaE,UAAfA,OAAS,IAAAhR,EAAG,GAAGA,EAEXiR,EAAqBhB,EAAMxK,OAAuB,MAClDd,EAAYmB,EAAS,EAAGiL,GAgC9B,OA9BAd,EAAME,WAAU,WACd,IAAMe,EAAmBD,EAAmBvL,QAEtCyL,EAAW,IAAIC,sBACnB,SAAUjU,GAAAC,EAAAD,EAAA,GAAM,GACkBkU,eAG9B1M,EAAU/G,MAAQ,EAEA,SAAdsQ,IAAsBvJ,EAAU/G,MAAQ,EAEhD,GACA,CACE0T,KAAM,KACNN,UAASA,IAQb,OAJIE,GACFC,EAASI,QAAQL,GAGZ,WACDA,GACFC,EAASK,UAAUN,EAEvB,CACD,GAAE,IAGDN,aAAKZ,IAAKiB,EACPP,SAAAA,GAAYA,EAAS,CAAE9S,MAAO+G,EAAU/G,SAG/C,0BZhD+B,SAACT,GAC9B,IAAAyJ,UACA8J,EAAQvT,EAAAuT,SACR1P,EAAM7D,EAAA6D,OAEAyQ,EAAM3L,EAASgC,EAAIlB,GAAQ5F,GAEjC,OAAO4P,MAAGC,EAAAA,SAAA,CAAAH,SAAAA,EAAS,CAAE9S,MAAO6T,EAAI7T,SAClC,uBXY4B,SAC1BA,EACA8T,EACAC,EACAtS,GAEA,OAAAuB,EACEhD,EACA,CAAC,EAAG,GACJ,CAAC8T,EAAWC,GACZtS,EAJF,8CwBxCI,SAAgBuS,GACpB,OAAO,IAAIC,SAAQ,SAACC,GAClBrD,YAAW,WAAM,OAAAqD,EAAQ,KAAK,GAAEF,EAClC,GACF,6CdIoBG,EAAcC,EAAcC,GAC9C,OAAOD,GAAQ,EAAID,GAAQE,EAAOF,CACpC,wBAmFqBG,EAAmBC,EAAmBC,GACzD,IAAMC,EAAOH,EAAMC,GACb/V,EAAS8V,EAAM9V,OACfkW,EAAOH,EAAYC,EAEzB,GAAIE,EAAO,EACT,OAAAC,EAAAA,EAAAA,EAAAA,EAAA,GAAAnV,EACK8U,EAAMrV,MAAM,EAAGuV,KAAQ,GAAA,CAC1BC,IACG,GAAAjV,EAAA8U,EAAMrV,MAAMuV,EAASD,KACrB,GAAA/U,EAAA8U,EAAMrV,MAAMsV,EAAY,EAAG/V,KAC9B,GACG,GAAIkW,EAAO,EAAG,CACnB,IAAME,EAAcJ,EAAU,EAC9B,OAAAG,EAAAA,EAAAA,EAAAA,EAAA,GAAAnV,EACK8U,EAAMrV,MAAM,EAAGsV,KAAU,GAAA/U,EACzB8U,EAAMrV,MAAMsV,EAAY,EAAGK,KAAY,GAAA,CAC1CH,IACG,GAAAjV,EAAA8U,EAAMrV,MAAM2V,EAAapW,KAC5B,EACH,CACD,OAAO8V,CACT,sBA3EM,SACJtU,EACAqK,EACAC,EACAO,GAEA,YAFA,IAAAA,IAAAA,EAAuB,KAEN,IAAbA,EAAuBT,EAAMpK,EAAOqK,EAAYC,GAEhDtK,EAAQqK,GAEPK,EAAOL,EAAarK,EAAOsK,EAAaD,EAAYQ,GACrDR,EAIArK,EAAQsK,GAEPI,EAAO1K,EAAQsK,EAAYA,EAAaD,EAAYQ,GACrDP,EAIGtK,CACT,0BAQEA,EACA+F,EACA8O,GAEA,IAAMC,EAAa9U,EAAmB,GAAX+F,EACrBgP,EAAU,SAACC,GAAkB,OAAAzK,KAAKO,IAAIkK,EAAQF,IAC9CG,EAASJ,EAAWzU,IAAI2U,GACxBG,EAAW3K,KAAKC,UAALD,KAAIoK,EAAA,GAAAnV,EAAQyV,IAAM,IAEnC,OAAOJ,EAAWzJ,QAAO,SAAUC,EAAK2J,GACtC,OAAID,EAAQC,KAAWE,EACdF,EAEA3J,CAEX,GACF,kBerFgB,SACd9D,EACAnE,GAEA,IAAMsP,EAAUL,EAAMxK,OAAO,IAAI4F,GAAe3F,QAEhD,OAAOoK,EAAc,CAAC,CAAC,OAAQQ,EAASnL,EAAUnE,IACpD,qBCEM,SAAqB7D,OACzB4V,EAAM5V,EAAA4V,OACNtD,EAAOtS,EAAAsS,QACPP,EAAQ/R,EAAA+R,SACRf,EAAWhR,EAAAgR,YAOL6E,EAAc/C,EAAMxK,OAAO,IAAI4F,GAAe3F,QAC9CuN,EAAehD,EAAMxK,OAAO,IAAI8J,GAAgB7J,QAChDwN,EAAgBjD,EAAMxK,OAAO,IAAImJ,GAAiBlJ,QAClDyN,EAAmBlD,EAAMxK,OAAO,IAAIwI,GAAoBvI,QAE9D,OAAOoK,EAAc,CACnB,CAAC,OAAQkD,EAAaD,GACtB,CAAC,QAASE,EAAcxD,GACxB,CAAC,SAAUyD,EAAehE,GAC1B,CAAC,OAAQiE,EAAkBhF,IAE/B,qBCxBgB,SACdhJ,EACAiO,GAEA,IAAMpD,EAAMvK,SAAO,MACbyK,EAAczK,SAAO,IACrB4N,EAAc5N,SAAyCN,GAuG7D,OApGAgL,EAAAA,WAAU,WAGR,OAFAkD,EAAY3N,QAAUP,EAEf,WACLkO,EAAY3N,QAAU,WAAM,OAAA,CAAK,CACnC,CACD,GAAE0N,GAEHjD,EAAAA,WAAU,WACR,IAAMmD,EAActD,EAAItK,SAAW6N,SAASC,gBACtCC,EAAuBvD,EAAYxK,QAEnCgO,EAAiB,IAAIC,gBAAe,SAACxW,OACnCkK,EADmCjK,EAAAD,EAAA,GAAM,GACJyM,OAAOgK,wBAA1CC,SAAMC,QAAKC,UAAOC,WAClB5E,EAA6BtD,OAAMsD,YAAtBD,EAAgBrD,OAAMqD,YAE3C,GAAIkE,EAAa,CACf,GAAIC,IAAgBC,SAASC,gBAC3B,OAEAH,EAAY3N,QAAQ,CAClBmO,KAAMA,EAAOzE,EACb0E,IAAKA,EAAM3E,EACX4E,MAAKA,EACLC,OAAMA,EACNC,MAAOJ,EACPK,KAAMJ,GAGX,CACH,IAEMK,EAAyB,IAAIR,gBAAe,SAAC1J,GACjD,IAAM4J,EAAsB,GACtBC,EAAqB,GACrBC,EAAuB,GACvBC,EAAwB,GACxBC,EAAuB,GACvBC,EAAsB,GAE5BjK,EAAQzC,SAAQ,SAAC4M,GACT,IAAAjX,EAKFiX,EAAMxK,OAAOgK,wBAJTS,SACDC,QACEC,UACCC,WAGJC,EAAYJ,EADmBvI,OAAMsD,YAErCsF,EAAWJ,EAFoBxI,OAAMqD,YAI3C0E,EAAK3K,KAAKuL,GACVX,EAAI5K,KAAKwL,GACTX,EAAM7K,KAAKqL,GACXP,EAAO9K,KAAKsL,GACZP,EAAM/K,KAAKmL,GACXH,EAAKhL,KAAKoL,EACZ,IAEIjB,GACFA,EAAY3N,QAAQ,CAClBmO,KAAIA,EACJC,IAAGA,EACHC,MAAKA,EACLC,OAAMA,EACNC,MAAKA,EACLC,KAAIA,GAGV,IAeA,OAbIZ,IAEAA,IAAgBC,SAASC,iBACzBC,EAAqBrX,OAAS,EAE9BqX,EAAqBjM,SAAQ,SAAC2D,GAC5BgJ,EAAuB5C,QAAQpG,EAAQzF,QACzC,IAEAgO,EAAenC,QAAQ+B,IAIpB,WACDA,IAEAA,IAAgBC,SAASC,iBACzBC,EAAqBrX,OAAS,EAE9BqX,EAAqBjM,SAAQ,SAAC2D,GAC5BgJ,EAAuB3C,UAAUrG,EAAQzF,QAC3C,IAEAgO,EAAelC,UAAU8B,GAG/B,CACD,GAAE,IAEI,SAACrV,GACN,OAAIA,QACK,CAAE+R,IAAGA,IAEZE,EAAYxK,QAAQzH,GAASiS,EAAYxK,QAAQzH,IAAUwS,EAAAA,YAEpD,CAAET,IAAKE,EAAYxK,QAAQzH,KAGxC,0CC7HM,SAAuBkH,GAC3B,IAAMmL,EAAUL,EAAMxK,OAAO,IAAIwI,GAAoBvI,QAErD,OAAOoK,EAAc,CAAC,CAAC,OAAQQ,EAASnL,IAC1C,mCCLEwP,EACAxP,EACAiO,GAEA,IAAMC,EAAc5N,EAAAA,SAEf4N,EAAY3N,UACf2N,EAAY3N,QAAUP,GAIxBgL,EAAAA,WAAU,WAGR,OAFAkD,EAAY3N,QAAUP,EAEf,WACLkO,EAAY3N,QAAU,WAAM,OAAA,CAAK,CACnC,CACD,GAAE0N,GAEHjD,EAAAA,WAAU,WACR,IAeMyE,EAAYxL,EAChB,CAACmK,UACD,CAAC,CAAC,YAjBuB,SAACjM,GAC1B,IAAMsC,EAAStC,EAAEsC,OAEZA,GAAWA,EAAOiL,cAKrBF,EAAWjP,UAAYiP,EAAWjP,QAAQoP,SAASlL,IAGnDyJ,EAAY3N,SAAW2N,EAAY3N,QAAQ4B,GAE/C,KAOA,OAAO,WAAM,OAAAsN,GAAaA,GAAW,CACtC,GAAE,GACL,oBCzCM,SAAoBzP,GACxB,IAAMmL,EAAUL,EAAMxK,OAAO,IAAImJ,GAAiBlJ,QAElD,OAAOoK,EAAc,CAAC,CAAC,SAAUQ,EAASnL,IAC5C,uCCDgB,SACdY,EACA/E,GAEA,IAAMgF,EAAkBP,UAAO,GACzBtI,EAAAC,ECRsB,SAC5BQ,EACAoD,GAQA,IAAMwE,EAAkBC,EAAAA,OACtB,IAAIc,EAAqB3I,EAAOoD,IAChC0E,QAEIC,EAAWC,EAAAA,aACf,SACEzC,EACAgC,GAEAK,EAAgBN,SAAS/B,EAAagC,EACvC,GACD,IAKF,MAAO,CAFYU,EAAOA,SAAC,WAAM,OAAAL,EAAgBF,aAAY,IAEzCK,EACtB,CDnBoCoP,CAAehP,EAAY5B,EAAAA,EAAA,CAAA,EACxDjD,EAAgBU,MAChBZ,OAFE2D,OAAWsB,OAKZC,EAAkBN,eACtB,SACEY,GAEA,IAAMwO,EAASxO,EAAOxI,KAAI,SAACJ,GACzB,OAAIkC,MAAMC,QAAQnC,GACTA,EAAMI,KAAI,SAACU,GAAM,OAAAqC,EAAWrC,EAAX,IAEjBqC,EAAWnD,EAEtB,IACAuI,gBAAe,WAAM,OAAAF,EAAa+O,EAAO,GAC1C,GACD,IAWF,OARA5O,EAAAA,iBAAgB,WACTJ,EAAgBN,SACnBQ,EAAgBH,GAGlBC,EAAgBN,SAAU,CAC5B,GAAG,CAACK,EAAc/E,IAEX,CACL,SAAIpD,CACFyI,GAEAH,EAAgBG,EACjB,EACD,SAAIzI,GACF,OAAO+G,CACR,EACD,gBAAI2B,GACF,OAAO3B,EAAU3G,KAAI,SAACvB,GAAM,OAAAA,EAAE+H,KAAF,GAC7B,EAEL,mBElDM,SAAmBW,GACvB,IAAMmL,EAAUL,EAAMxK,OAAO,IAAI8J,GAAgB7J,QAEjD,OAAOoK,EAAc,CAAC,CAAC,QAASQ,EAASnL,IAC3C,6BCDgB,SACdA,EACAiO,GAEA,IAAM6B,EAAsBxP,EAAAA,OAA4B,CACtDsO,MAAO,EACPC,OAAQ,EACRkB,WAAY,EACZC,YAAa,IAET9B,EAAc5N,SAA6CN,GAWjEgL,EAAAA,WAAU,WAGR,OAFAkD,EAAY3N,QAAUP,EAEf,WACLkO,EAAY3N,QAAU,WAAM,OAAA,CAAK,CACnC,CACD,GAAE0N,GAEHjD,EAAAA,WAAU,WACR,IAAMuD,EAAiB,IAAIC,gBAAe,SAACxW,OACnCkK,EADmCjK,EAAAD,EAAA,GAAM,GACHyM,OAApCwL,EAAW/N,EAAA+N,YAAEC,EAAYhO,EAAAgO,aACzBH,EAA4BpJ,OAAMoJ,WAAtBC,EAAgBrJ,OAAMqJ,YAE1CF,EAAoBvP,QAAU,CAC5BqO,MAAOqB,EACPpB,OAAQqB,EACRH,WAAUA,EACVC,YAAWA,GAzBX9B,GACFA,EAAY3N,QAAOvB,EAAA,CAAA,EACd8Q,EAAoBvP,SA2B3B,IAIA,OAFAgO,EAAenC,QAAQgC,SAASC,iBAEzB,WAAM,OAAAE,EAAelC,UAAU+B,SAASC,iBAChD,GAAE,GACL,yCCjDyB,SAACxS,GAA0C,MAAC,CACnEA,UACEyC,OAAO,GACJzC,GAEL,oBCVuB,SACvBuC,EACAoB,GACgB,OACbR,EAAAA,EAAA,CAAA,EAAAQ,IACH3D,OAAMmD,EAAAA,EAAA,GACDQ,EAAU3D,QAAM,CACnBuC,MAAKA,KAJS,mBCAM,SAACtC,EAAiBD,GACxC,OAAA6H,EAAW5H,EAAOkD,EAAAA,EAAA,GAAOjD,EAAgBU,MAASZ,GAAlD,mBCLsB,SACtBmC,EACAkB,GAEA,GAAIvE,MAAMC,QAAQoD,GAAc,CAE9B,IADA,IAAImS,EAA8B,GACzB5V,EAAI,EAAGA,EAAI2E,EAAM3E,IACxB4V,EAAeA,EAAaC,OAAOpS,GAErC,OAAOmS,CACR,CACC,OAAOxV,MAAMuE,GAAMmR,KAAK,CACtBvU,QAASkC,EAAYlC,QACrBD,cAAamC,EAAYnC,QAAQ,CAAAqD,UAGvC,uBzBF4B,SAC1B0E,GAEA,OAAOD,EAAoBC,EAC7B,qB0BX0B,SACxB9H,EACAD,GAEA,OAAA6H,EAAW5H,EAAOkD,EAAAA,EAAA,GAAOjD,EAAgBC,SAAYH,GAArD,qBCLwB,SACxBC,EACAD,GACgB,OAAA6H,EAAW5H,EAAOkD,EAAA,CAAI3C,SAAU,KAAQR,GAAxC"}
1
+ {"version":3,"file":"index.js","sources":["../src/animation/interpolation/colors.ts","../src/animation/interpolation/interpolateNumbers.ts","../src/animation/interpolation/interpolate.ts","../src/animation/helpers/isDefined.ts","../src/animation/helpers/getToValue.ts","../src/animation/helpers/animationType.ts","../src/animation/core/FluidController.ts","../src/animation/core/useFluidValue.ts","../src/animation/hooks/useValue.ts","../src/animation/core/FluidArrayController.ts","../src/animation/hooks/useMount.ts","../src/animation/core/useMount.ts","../src/gestures/helpers/math.ts","../src/animation/modules/TransitionBlock.tsx","../src/animation/controllers/withConfig.ts","../src/animation/controllers/withSequence.ts","../src/gestures/helpers/eventAttacher.ts","../src/gestures/helpers/withDefault.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MouseMoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/animation/modules/MountedBlock.tsx","../src/animation/modules/ScrollableBlock.tsx","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useGesture.ts","../src/hooks/useMeasure.ts","../src/gestures/hooks/useMouseMove.ts","../src/hooks/useOutsideClick.ts","../src/gestures/hooks/useScroll.ts","../src/animation/hooks/useValues.ts","../src/animation/core/useFluidValues.ts","../src/gestures/hooks/useWheel.ts","../src/hooks/useWindowDimension.ts","../src/animation/controllers/withDecay.ts","../src/animation/controllers/withDelay.ts","../src/animation/controllers/withEase.ts","../src/animation/controllers/withLoop.ts","../src/animation/controllers/withSpring.ts","../src/animation/controllers/withTiming.ts"],"sourcesContent":["export const COLOR_NUMBER_REGEX =\n /[+-]?\\d+(\\.\\d+)?|[\\s]?\\.\\d+|#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/gi;\nexport const HEX_NAME_COLOR =\n /#[a-f\\d]{3,}|transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|burntsienna|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen/gi;\n\ninterface classNameType {\n [name: string]: string;\n}\n\n// Named colors\nexport const colorNames: classNameType = {\n transparent: '#00000000',\n aliceblue: '#f0f8ffff',\n antiquewhite: '#faebd7ff',\n aqua: '#00ffffff',\n aquamarine: '#7fffd4ff',\n azure: '#f0ffffff',\n beige: '#f5f5dcff',\n bisque: '#ffe4c4ff',\n black: '#000000ff',\n blanchedalmond: '#ffebcdff',\n blue: '#0000ffff',\n blueviolet: '#8a2be2ff',\n brown: '#a52a2aff',\n burlywood: '#deb887ff',\n burntsienna: '#ea7e5dff',\n cadetblue: '#5f9ea0ff',\n chartreuse: '#7fff00ff',\n chocolate: '#d2691eff',\n coral: '#ff7f50ff',\n cornflowerblue: '#6495edff',\n cornsilk: '#fff8dcff',\n crimson: '#dc143cff',\n cyan: '#00ffffff',\n darkblue: '#00008bff',\n darkcyan: '#008b8bff',\n darkgoldenrod: '#b8860bff',\n darkgray: '#a9a9a9ff',\n darkgreen: '#006400ff',\n darkgrey: '#a9a9a9ff',\n darkkhaki: '#bdb76bff',\n darkmagenta: '#8b008bff',\n darkolivegreen: '#556b2fff',\n darkorange: '#ff8c00ff',\n darkorchid: '#9932ccff',\n darkred: '#8b0000ff',\n darksalmon: '#e9967aff',\n darkseagreen: '#8fbc8fff',\n darkslateblue: '#483d8bff',\n darkslategray: '#2f4f4fff',\n darkslategrey: '#2f4f4fff',\n darkturquoise: '#00ced1ff',\n darkviolet: '#9400d3ff',\n deeppink: '#ff1493ff',\n deepskyblue: '#00bfffff',\n dimgray: '#696969ff',\n dimgrey: '#696969ff',\n dodgerblue: '#1e90ffff',\n firebrick: '#b22222ff',\n floralwhite: '#fffaf0ff',\n forestgreen: '#228b22ff',\n fuchsia: '#ff00ffff',\n gainsboro: '#dcdcdcff',\n ghostwhite: '#f8f8ffff',\n gold: '#ffd700ff',\n goldenrod: '#daa520ff',\n gray: '#808080ff',\n green: '#008000ff',\n greenyellow: '#adff2fff',\n grey: '#808080ff',\n honeydew: '#f0fff0ff',\n hotpink: '#ff69b4ff',\n indianred: '#cd5c5cff',\n indigo: '#4b0082ff',\n ivory: '#fffff0ff',\n khaki: '#f0e68cff',\n lavender: '#e6e6faff',\n lavenderblush: '#fff0f5ff',\n lawngreen: '#7cfc00ff',\n lemonchiffon: '#fffacdff',\n lightblue: '#add8e6ff',\n lightcoral: '#f08080ff',\n lightcyan: '#e0ffffff',\n lightgoldenrodyellow: '#fafad2ff',\n lightgray: '#d3d3d3ff',\n lightgreen: '#90ee90ff',\n lightgrey: '#d3d3d3ff',\n lightpink: '#ffb6c1ff',\n lightsalmon: '#ffa07aff',\n lightseagreen: '#20b2aaff',\n lightskyblue: '#87cefaff',\n lightslategray: '#778899ff',\n lightslategrey: '#778899ff',\n lightsteelblue: '#b0c4deff',\n lightyellow: '#ffffe0ff',\n lime: '#00ff00ff',\n limegreen: '#32cd32ff',\n linen: '#faf0e6ff',\n magenta: '#ff00ffff',\n maroon: '#800000ff',\n mediumaquamarine: '#66cdaaff',\n mediumblue: '#0000cdff',\n mediumorchid: '#ba55d3ff',\n mediumpurple: '#9370dbff',\n mediumseagreen: '#3cb371ff',\n mediumslateblue: '#7b68eeff',\n mediumspringgreen: '#00fa9aff',\n mediumturquoise: '#48d1ccff',\n mediumvioletred: '#c71585ff',\n midnightblue: '#191970ff',\n mintcream: '#f5fffaff',\n mistyrose: '#ffe4e1ff',\n moccasin: '#ffe4b5ff',\n navajowhite: '#ffdeadff',\n navy: '#000080ff',\n oldlace: '#fdf5e6ff',\n olive: '#808000ff',\n olivedrab: '#6b8e23ff',\n orange: '#ffa500ff',\n orangered: '#ff4500ff',\n orchid: '#da70d6ff',\n palegoldenrod: '#eee8aaff',\n palegreen: '#98fb98ff',\n paleturquoise: '#afeeeeff',\n palevioletred: '#db7093ff',\n papayawhip: '#ffefd5ff',\n peachpuff: '#ffdab9ff',\n peru: '#cd853fff',\n pink: '#ffc0cbff',\n plum: '#dda0ddff',\n powderblue: '#b0e0e6ff',\n purple: '#800080ff',\n rebeccapurple: '#663399ff',\n red: '#ff0000ff',\n rosybrown: '#bc8f8fff',\n royalblue: '#4169e1ff',\n saddlebrown: '#8b4513ff',\n salmon: '#fa8072ff',\n sandybrown: '#f4a460ff',\n seagreen: '#2e8b57ff',\n seashell: '#fff5eeff',\n sienna: '#a0522dff',\n silver: '#c0c0c0ff',\n skyblue: '#87ceebff',\n slateblue: '#6a5acdff',\n slategray: '#708090ff',\n slategrey: '#708090ff',\n snow: '#fffafaff',\n springgreen: '#00ff7fff',\n steelblue: '#4682b4ff',\n tan: '#d2b48cff',\n teal: '#008080ff',\n thistle: '#d8bfd8ff',\n tomato: '#ff6347ff',\n turquoise: '#40e0d0ff',\n violet: '#ee82eeff',\n wheat: '#f5deb3ff',\n white: '#ffffffff',\n whitesmoke: '#f5f5f5ff',\n yellow: '#ffff00ff',\n yellowgreen: '#9acd32ff',\n};\n\nfunction conv3to6(hex: string) {\n const regex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\n return hex.replace(regex, function (_, r, g, b) {\n return '#' + r + r + g + g + b + b;\n });\n}\n\nfunction conv6to8(hex: string) {\n if (hex.length === 7) {\n return hex + 'FF';\n }\n\n return hex;\n}\n\nexport function hexToRgba(hex: string) {\n const hex6: string = conv3to6(hex);\n const hex8: string = conv6to8(hex6);\n const hexRgba: any =\n /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex8);\n\n return {\n r: parseInt(hexRgba[1], 16),\n g: parseInt(hexRgba[2], 16),\n b: parseInt(hexRgba[3], 16),\n a: parseInt(hexRgba[4], 16) / 255,\n };\n}\n\nexport function rgbaToHex(rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n}) {\n const { r, g, b, a } = rgba;\n\n const hexR = (r | (1 << 8)).toString(16).slice(1);\n const hexG = (g | (1 << 8)).toString(16).slice(1);\n const hexB = (b | (1 << 8)).toString(16).slice(1);\n const hexA = ((a * 255) | (1 << 8)).toString(16).slice(1);\n\n return '#' + hexR + hexG + hexB + hexA;\n}\n\nexport function processColor(color: number | string) {\n if (typeof color === 'number') {\n const alpha = ((color >> 24) & 255) / 255;\n const red = (color >> 16) & 255;\n const green = (color >> 8) & 255;\n const blue = color & 255;\n\n return { r: red, g: green, b: blue, a: alpha };\n } else {\n // If string then check whether it has # in 0 index\n if (color[0] === '#') {\n return hexToRgba(color);\n } else {\n // It is string color\n const hexColorName: string = colorNames[color];\n if (hexColorName) {\n return hexToRgba(hexColorName);\n } else {\n throw new Error('String cannot be parsed!');\n }\n }\n }\n}\n","import {\n rgbaToHex,\n hexToRgba,\n COLOR_NUMBER_REGEX,\n HEX_NAME_COLOR,\n colorNames,\n} from './colors';\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\ntype ExtrapolateConfig = {\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\nconst interpolateValue = (\n val: number,\n arr: any,\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = arr;\n let result: number = val;\n\n // EXTRAPOLATE\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (val <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n};\n\nconst getNarrowedInput = function (\n x: number,\n input: number[],\n output: Array<number | string>\n): Array<number | string> {\n const length = input.length;\n let narrowedInput: Array<number | string> = [];\n\n // Boundaries\n if (x < input[0]) {\n narrowedInput = [input[0], input[1], output[0], output[1]];\n } else if (x > input[length - 1]) {\n narrowedInput = [\n input[length - 2],\n input[length - 1],\n output[length - 2],\n output[length - 1],\n ];\n }\n\n // Narrow the input and output ranges\n for (let i = 1; i < length; ++i) {\n if (x <= input[i]) {\n narrowedInput = [input[i - 1], input[i], output[i - 1], output[i]];\n break;\n }\n }\n\n return narrowedInput;\n};\n\nconst interpolateColor = (value: number, narrowedInput: string[]) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const outputMinProcessed = hexToRgba(outputMin);\n const outputMaxProcessed = hexToRgba(outputMax);\n\n const red = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.r, outputMaxProcessed.r],\n 'clamp',\n 'clamp'\n );\n\n const green = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.g, outputMaxProcessed.g],\n 'clamp',\n 'clamp'\n );\n\n const blue = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.b, outputMaxProcessed.b],\n 'clamp',\n 'clamp'\n );\n\n const alpha = interpolateValue(\n value,\n [inputMin, inputMax, outputMinProcessed.a, outputMaxProcessed.a],\n 'clamp',\n 'clamp'\n );\n\n return rgbaToHex({ r: red, g: green, b: blue, a: alpha });\n};\n\nconst _getArrayInterpolate = (\n value: number,\n narrowedInput: Array<any>,\n _extrapolateLeft: ExtrapolateType,\n _extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n if (outputMin.length === outputMax.length) {\n return outputMin.map((val: any, index: number) => {\n if (typeof val === 'string') {\n // IF IT IS STRING THEN IT MUST BE HEX COLOR\n return interpolateColor(value, [\n inputMin,\n inputMax,\n val,\n outputMax[index],\n ]);\n } else {\n return interpolateValue(\n value,\n [inputMin, inputMax, val, outputMax[index]],\n _extrapolateLeft,\n _extrapolateRight\n );\n }\n });\n } else {\n throw new Error(\"Array length doesn't match\");\n }\n};\n\nconst getTemplateString = (str: string) => {\n return str.replace(COLOR_NUMBER_REGEX, '$');\n};\n\nconst _getParsedStringArray = (str: any) => {\n return str.match(COLOR_NUMBER_REGEX).map((v: string) => {\n if (v.indexOf('#') !== -1) {\n return v;\n } else {\n return Number(v);\n }\n });\n};\n\nconst stringMatched = (str1: string, str2: string) =>\n getTemplateString(str1).trim().replace(/\\s/g, '') ===\n getTemplateString(str2).trim().replace(/\\s/g, '');\n\n/**\n * Function which proccess the\n * hexadecimal colors to its proper formats\n * @param str - string\n * @returns hex color string\n */\nconst getProcessedColor = (str: string) => {\n return str.replace(HEX_NAME_COLOR, function (match: any) {\n if (match.indexOf('#') !== -1) {\n return rgbaToHex(hexToRgba(match));\n } else if (Object.prototype.hasOwnProperty.call(colorNames, match)) {\n return colorNames[match];\n } else {\n throw new Error('String cannot be parsed!');\n }\n });\n};\n\nexport function interpolateNumbers(\n value: number,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) {\n const extrapolate = extrapolateConfig?.extrapolate;\n const extrapolateLeft = extrapolateConfig?.extrapolateLeft;\n const extrapolateRight = extrapolateConfig?.extrapolateRight;\n\n const narrowedInput = getNarrowedInput(value, inputRange, outputRange);\n\n let _extrapolateLeft: ExtrapolateType = 'extend';\n if (extrapolateLeft !== undefined) {\n _extrapolateLeft = extrapolateLeft;\n } else if (extrapolate !== undefined) {\n _extrapolateLeft = extrapolate;\n }\n\n let _extrapolateRight: ExtrapolateType = 'extend';\n if (extrapolateRight !== undefined) {\n _extrapolateRight = extrapolateRight;\n } else if (extrapolate !== undefined) {\n _extrapolateRight = extrapolate;\n }\n\n if (outputRange.length) {\n if (typeof outputRange[0] === 'number') {\n return interpolateValue(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else if (Array.isArray(outputRange[0])) {\n return _getArrayInterpolate(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const processedOutputMin = getProcessedColor(outputMin as string);\n const processedOutputMax = getProcessedColor(outputMax as string);\n\n let templateString = getTemplateString(processedOutputMin);\n\n if (stringMatched(processedOutputMin, processedOutputMax)) {\n const outputMinParsed = _getParsedStringArray(processedOutputMin);\n const outputMaxParsed = _getParsedStringArray(processedOutputMax);\n\n const result = _getArrayInterpolate(\n value,\n [inputMin, inputMax, outputMinParsed, outputMaxParsed],\n _extrapolateLeft,\n _extrapolateRight\n );\n\n for (const v of result) templateString = templateString.replace('$', v);\n return templateString;\n } else {\n throw new Error(\"Output range doesn't match string format!\");\n }\n }\n } else {\n throw new Error('Output range cannot be Empty');\n }\n}\n","import { FluidValue } from '@raidipesh78/re-motion';\n\nimport { interpolateNumbers } from './interpolateNumbers';\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\ntype ExtrapolateConfig = {\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\ntype InterpolateReturnType<T> = T extends number\n ? number\n : ReturnType<FluidValue['interpolate']>;\n\nexport const interpolate = <T extends number | FluidValue>(\n value: T,\n inputRange: number[],\n outputRange: number[] | string[],\n extrapolateConfig?: ExtrapolateConfig\n): InterpolateReturnType<T> => {\n if (value instanceof FluidValue) {\n return value.interpolate(\n inputRange,\n outputRange,\n extrapolateConfig\n ) as InterpolateReturnType<T>;\n } else {\n return interpolateNumbers(\n value,\n inputRange,\n outputRange,\n extrapolateConfig\n ) as InterpolateReturnType<T>;\n }\n};\n\nexport const bInterpolate = <T extends number | FluidValue>(\n value: T,\n minOutput: number | string,\n maxOutput: number | string,\n extrapolateConfig?: ExtrapolateConfig\n) =>\n interpolate(\n value,\n [0, 1],\n [minOutput, maxOutput] as number[] | string[],\n extrapolateConfig\n );\n","export const isDefined = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n","import { UpdateValue, UseFluidValueConfig } from '../core/FluidController';\n\nexport function getToValue(\n value: number | string | UpdateValue,\n config?: UseFluidValueConfig\n): UpdateValue {\n return typeof value === 'number' || typeof value === 'string'\n ? { toValue: value, config }\n : value;\n}\n","import { Easing } from '@raidipesh78/re-motion';\n\nexport const AnimationConfig = {\n ELASTIC: { mass: 1, friction: 18, tension: 250 },\n BOUNCE: { duration: 500, easing: Easing.bounce },\n EASE: { mass: 1, friction: 26, tension: 170 },\n STIFF: { mass: 1, friction: 18, tension: 350 },\n WOOBLE: { mass: 1, friction: 8, tension: 250 },\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","import {\n FluidValue,\n timing,\n decay,\n spring,\n native,\n delay,\n sequence,\n} from '@raidipesh78/re-motion';\n\nimport { isDefined } from '../helpers';\n\ntype Fn<T, U> = (value: T) => U;\n\nexport interface UseFluidValueConfig {\n mass?: number;\n tension?: number;\n friction?: number;\n duration?: number;\n easing?: Fn<number, number>;\n immediate?: boolean;\n delay?: number;\n restDistance?: number;\n onChange?: Fn<number | string, void>;\n onRest?: Fn<number | string, void>;\n onStart?: Fn<number | string, void>;\n decay?: boolean;\n velocity?: number;\n deceleration?: number;\n loop?: number;\n}\n\nexport type UpdateValue = {\n toValue?: number | string;\n config?: UseFluidValueConfig;\n};\n\nexport class FluidController {\n private fluid: FluidValue;\n private defaultConfig?: UseFluidValueConfig;\n private iterationsSoFar: number = 0;\n\n constructor(value: number | string, config?: UseFluidValueConfig) {\n this.fluid = new FluidValue(value);\n this.defaultConfig = config;\n }\n\n private getAnimation(updateValue: UpdateValue, config: UseFluidValueConfig) {\n if (typeof updateValue.toValue === 'string') {\n return native(this.fluid, { toValue: updateValue.toValue });\n } else if (isDefined(config?.duration) || config?.immediate) {\n if (!isDefined(updateValue.toValue)) {\n throw new Error('No `toValue` is defined');\n }\n\n const timingConfig = {\n toValue: updateValue.toValue,\n duration: config?.immediate ? 0 : config?.duration,\n easing: config?.easing,\n };\n\n return timing(this.fluid, timingConfig);\n } else if (config?.decay) {\n const decayConfig = {\n velocity: config?.velocity,\n deceleration: config?.deceleration,\n };\n\n return decay(this.fluid, decayConfig);\n } else {\n if (!isDefined(updateValue.toValue)) {\n throw new Error('No `toValue` is defined');\n }\n\n const springConfig = {\n toValue: updateValue.toValue,\n mass: config?.mass,\n tension: config?.tension,\n friction: config?.friction,\n restDistance: config?.restDistance,\n };\n\n return spring(this.fluid, springConfig);\n }\n }\n\n private runAnimation(\n updateValue: UpdateValue,\n onComplete?: (value: number) => void\n ) {\n const config = { ...this.defaultConfig, ...updateValue.config };\n const loopCount = config?.loop ?? 0;\n const delayMS = config?.delay ?? 0;\n\n this.fluid.removeAllListeners();\n config?.onStart && config.onStart(this.fluid.get());\n\n if (config?.onChange) {\n this.fluid.addListener((value) => config?.onChange?.(value));\n }\n\n const animation = sequence([\n delay(delayMS),\n this.getAnimation(updateValue, config),\n ]);\n\n const handleRest = (result: { finished: boolean; value: number }) => {\n if (result.finished) {\n config?.onRest?.(result.value);\n onComplete?.(result.value);\n }\n };\n\n const loopAnimation = (result: { finished: boolean; value: number }) => {\n if (result.finished) {\n this.iterationsSoFar++;\n\n if (loopCount === -1 || this.iterationsSoFar < loopCount) {\n animation.reset();\n animation.start(loopAnimation);\n } else {\n handleRest(result);\n }\n }\n };\n\n animation.start(isDefined(config?.loop) ? loopAnimation : handleRest);\n }\n\n public setFluid(\n updateValue: UpdateValue | UpdateValue[],\n callback?: (value: number) => void\n ) {\n if (!updateValue) {\n return;\n }\n\n if (Array.isArray(updateValue)) {\n let currentAnimation = 0;\n\n const onComplete = (value: number) => {\n currentAnimation++;\n\n if (currentAnimation === updateValue.length) {\n callback && callback(value);\n\n return;\n }\n\n this.runAnimation(updateValue[currentAnimation], onComplete);\n };\n\n this.runAnimation(updateValue[currentAnimation], onComplete);\n } else {\n this.runAnimation(updateValue, callback);\n }\n }\n\n public getFluid() {\n return this.fluid;\n }\n}\n","import { useCallback, useMemo, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport {\n UpdateValue,\n FluidController,\n UseFluidValueConfig,\n} from './FluidController';\n\nexport const useFluidValue = <T extends number | string>(\n value: T,\n config?: UseFluidValueConfig\n): [\n FluidValue,\n (updateValue: UpdateValue | UpdateValue[], callback?: () => void) => void,\n] => {\n const fluidController = useRef(new FluidController(value, config)).current;\n\n const onUpdate = useCallback(\n (updateValue: UpdateValue | UpdateValue[], callback?: () => void) => {\n fluidController.setFluid(updateValue, callback);\n },\n []\n );\n\n const fluidValue = useMemo(() => fluidController.getFluid(), []);\n\n return [fluidValue, onUpdate];\n};\n","import { useCallback, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValue } from '../core/useFluidValue';\nimport { getToValue, AnimationConfig } from '../helpers';\n\nimport type { UpdateValue, UseFluidValueConfig } from '../core/FluidController';\n\nexport interface UseValueConfig extends UseFluidValueConfig {}\n\n/**\n * `useValue` returns an animation value with `.value` and `.currentValue` property which is\n * initialized when passed to argument (`initialValue`). The returned value persist until the lifetime of\n * a component. It doesn't cast any re-renders which can is very good for performance optimization.\n *\n * @param { number } initialValue - Initial value\n * @param { UseValueConfig } config - Animation configuration object.\n */\nexport function useValue<T extends number | string>(\n initialValue: T,\n config?: UseValueConfig\n) {\n const isInitialRender = useRef(true);\n const [animation, setAnimation] = useFluidValue(initialValue, {\n ...AnimationConfig.EASE,\n ...config,\n });\n\n const updateAnimation = useCallback(\n (value: string | number | UpdateValue | number[] | UpdateValue[]) => {\n if (Array.isArray(value)) {\n queueMicrotask(() => setAnimation(value.map((v) => getToValue(v))));\n } else {\n queueMicrotask(() => setAnimation(getToValue(value)));\n }\n },\n []\n );\n\n useLayoutEffect(() => {\n if (!isInitialRender.current) {\n updateAnimation(initialValue);\n }\n\n isInitialRender.current = false;\n }, [initialValue, config]);\n\n return {\n set value(to: number | string | UpdateValue | number[] | UpdateValue[]) {\n updateAnimation(to);\n },\n get value(): FluidValue {\n return animation;\n },\n get currentValue() {\n return animation.get();\n },\n };\n}\n","import { FluidController } from './FluidController';\n\nimport type { UpdateValue, UseFluidValueConfig } from './FluidController';\n\nexport class FluidArrayController {\n private fluidControllers: FluidController[];\n\n constructor(values: number[] | string[], config?: UseFluidValueConfig) {\n this.fluidControllers = values.map((v) => new FluidController(v, config));\n }\n\n public setFluid(\n updateValue: Array<UpdateValue | UpdateValue[]>,\n callback?: () => void\n ) {\n this.fluidControllers.map((fc, i) => {\n fc.setFluid(updateValue[i], callback);\n });\n }\n\n public getFluid() {\n return this.fluidControllers.map((fc) => fc.getFluid());\n }\n}\n","import { FluidValue } from '@raidipesh78/re-motion';\n\nimport {\n useMount as useInternalMount,\n UseMountConfig as UseInternalMountConfig,\n} from '../core/useMount';\n\nexport interface UseMountConfig extends UseInternalMountConfig {}\n\n/**\n * `useMount` handles mounting and unmounting of a component which captures current state\n * passed as an argument (`state`) and exposes the shadow state which handles the mount and unmount\n * of a component.\n *\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\n * @param { UseMountConfig } config - Animation configuration.\n */\nexport function useMount(state: boolean, config: UseMountConfig) {\n const mv = useInternalMount(state, config);\n return (\n cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode\n ) => mv((a, m) => cb({ value: a }, m));\n}\n","import { useState, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValue } from './useFluidValue';\n\nimport type { UpdateValue, UseFluidValueConfig } from './FluidController';\nimport { getToValue } from '../helpers';\n\nexport interface UseMountConfig {\n from: number;\n enter: number | UpdateValue | number[] | UpdateValue[];\n exit: number | UpdateValue | number[] | UpdateValue[];\n config?: UseFluidValueConfig;\n}\n\n/**\n * `useMount`\n *\n * applies mounting and unmounting of a component according to state change\n * applying transitions\n *\n * @param state - boolean indicating mount state of a component\n * @param config - the config object `UseMountConfig`\n */\nexport const useMount = (state: boolean, config: UseMountConfig) => {\n const [mounted, setMounted] = useState(false);\n const { from, enter, exit, config: innerConfig } = useRef(config).current;\n const [animation, setAnimation] = useFluidValue(from, innerConfig);\n\n useLayoutEffect(() => {\n if (state) {\n setMounted(true);\n queueMicrotask(() =>\n setAnimation(\n Array.isArray(enter)\n ? enter.map((e) => getToValue(e, innerConfig))\n : getToValue(enter, innerConfig)\n )\n );\n } else {\n setAnimation(\n Array.isArray(exit)\n ? exit.map((e) => getToValue(e, innerConfig))\n : getToValue(exit, innerConfig),\n () => {\n setMounted(false);\n // cleanup\n animation\n .getSubscriptions()\n .forEach((s) => animation.removeSubscription(s));\n }\n );\n }\n }, [state]);\n\n return (\n callback: (animation: FluidValue, mounted: boolean) => React.ReactNode\n ) => callback(animation, mounted);\n};\n","/**\n * bin(booleanValue)\n * returns 1 if booleanValue == true and 0 if booleanValue == false\n */\nexport function bin(bool: boolean) {\n return bool ? 1 : 0;\n}\n\n/**\n * mix(progress, a, b)\n * linear interpolation between a and b\n */\nexport function mix(perc: number, val1: number, val2: number) {\n return val1 * (1 - perc) + val2 * perc;\n}\n\n/**\n * clamp(value, min, max)\n * clamps value for min and max bounds\n */\nexport 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\n/**\n * rubberClamp(value, min, max, constant?)\n * constant is optional : default 0.15\n * clamps the value for min and max value and\n * extends beyond min and max values with constant\n * factor to create elastic rubber band effect\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\n/**\n * snapTo(value, velocity, snapPoints[])\n * Calculates the final snapPoint according to given current value,\n * velocity and snapPoints array\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\n/**\n * move(array, moveIndex, toIndex)\n * move array item from moveIndex to toIndex without array modification\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","import * as React from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { bin } from '../../gestures/helpers';\nimport { useValue, type UseValueConfig } from '../hooks';\n\ninterface TransitionBlockProps {\n state: boolean;\n children: (animation: { value: FluidValue }) => React.ReactNode;\n config?: UseValueConfig;\n}\n\n/**\n * TransitionBlock - Higher order component which animates on state change.\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @prop { UseValueConfig } config - Animation configuration.\n */\nexport const TransitionBlock = ({\n state,\n children,\n config,\n}: TransitionBlockProps) => {\n const amv = useValue(bin(state), config);\n\n return <>{children({ value: amv.value })}</>;\n};\n","import type { UseValueConfig } from '../hooks';\nimport type { UpdateValue } from '../core/FluidController';\n\nexport interface WithOnCallbacks\n extends Pick<UseValueConfig, 'onRest' | 'onStart' | 'onChange'> {}\n\nexport const withConfig = (toValue: number, config?: UseValueConfig): UpdateValue => ({\n toValue,\n config,\n});\n","import { getToValue } from '../helpers';\nimport { type UpdateValue } from '../core/FluidController';\n\nconst flattenUpdateValues = (\n animations: Array<UpdateValue | number | Array<UpdateValue | number>>\n): UpdateValue[] => {\n return animations.reduce<UpdateValue[]>((acc, value) => {\n if (Array.isArray(value)) {\n acc.push(...flattenUpdateValues(value));\n } else {\n acc.push(getToValue(value));\n }\n return acc;\n }, []);\n};\n\nexport const withSequence = (\n animations: Array<UpdateValue | number | Array<UpdateValue | number>>\n): UpdateValue[] => {\n return flattenUpdateValues(animations);\n};\n","type MouseEventType =\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mousemove'\n | 'mouseup'\n | 'touchstart'\n | 'touchmove'\n | 'touchend'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseout'\n | 'mouseover'\n | 'scroll'\n | 'wheel'\n | 'contextmenu';\n\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\n\n/**\n * Attach single document / window event / HTMLElement\n */\nfunction attachEvent(\n domTargets: DomTargetTypes,\n event: MouseEventType,\n callback: (e: any) => void,\n capture: any = false\n) {\n domTargets.forEach((target) => {\n target.addEventListener(event, callback, capture);\n });\n\n return function () {\n domTargets.forEach((target) => {\n target.removeEventListener(event, callback, capture);\n });\n };\n}\n\n/**\n * Attach multiple document / window event / HTMLElement\n */\nexport function attachEvents(\n domTargets: DomTargetTypes,\n events: Array<\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\n >\n) {\n const subscribers = new Map();\n\n events.forEach(function ([event, callback, capture = false]) {\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\n });\n\n return function (eventKeys?: Array<string>) {\n for (const [eventKey, subscriber] of subscribers.entries()) {\n if (!eventKeys) {\n subscriber();\n return;\n }\n\n if (eventKeys.indexOf(eventKey) !== -1) {\n subscriber();\n }\n }\n };\n}\n","export const withDefault = (x: number, y: number) => {\n return { x, y };\n};\n","export class Gesture {\n currentIndex?: number;\n lastTimeStamp: number = Date.now();\n isActive: boolean = false;\n targetElement?: HTMLElement; // represents the bounded element\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\n config?: any;\n callback?: <T>(event: T) => void;\n _subscribe?: (eventKeys?: Array<string>) => void;\n static _VELOCITY_LIMIT: number = 20;\n\n // it must be overridden by other child classes\n _initEvents() {}\n\n // cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe();\n }\n }\n\n // re-apply new callback\n applyCallback(callback: <T>(event: T) => void) {\n this.callback = callback;\n }\n\n // apply gesture\n applyGesture({\n targetElement,\n targetElements,\n callback,\n config,\n }: {\n targetElement?: any;\n targetElements?: any;\n callback: <T>(event: T) => void;\n config?: any;\n }) {\n this.targetElement = targetElement;\n this.targetElements = targetElements.map(\n (element: { current: any }) => element.current\n );\n this.callback = callback;\n this.config = config;\n\n // initialize events\n this._initEvents();\n\n // unbind\n return () => this._subscribe && this._subscribe();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nimport type { Vector2 } from '../types';\n\nexport class DragGesture extends Gesture {\n movementStart: Vector2 = withDefault(0, 0);\n initialMovement: Vector2 = withDefault(0, 0);\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n offset: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement || this.targetElements.length > 0) {\n this._subscribe = attachEvents(\n [window],\n [\n ['mousedown', this.pointerDown.bind(this)],\n ['mousemove', this.pointerMove.bind(this)],\n ['mouseup', this.pointerUp.bind(this)],\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\n ['touchend', this.pointerUp.bind(this)],\n ]\n );\n }\n }\n\n // @override - cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n down: this.isActive,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.translation.x,\n offsetY: this.translation.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n distanceX: Math.abs(this.movement.x),\n distanceY: Math.abs(this.movement.y),\n directionX: Math.sign(this.movement.x),\n directionY: Math.sign(this.movement.y),\n cancel: () => {\n this._cancelEvents();\n },\n });\n }\n }\n\n pointerDown(e: any) {\n if (e.type === 'touchstart') {\n this.movementStart = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n } else {\n this.movementStart = { x: e.clientX, y: e.clientY };\n }\n\n this.movement = { x: 0, y: 0 };\n this.offset = { x: this.translation.x, y: this.translation.y };\n this.previousMovement = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n if (e.target === this.targetElement || currElem) {\n this.isActive = true;\n e.preventDefault();\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n // if initial function is defined then call it to get initial movementX and movementY\n // if only select to bounded draggable element\n const initial = this.config?.initial && this.config.initial();\n const initialMovementX = initial?.movementX;\n const initialMovementY = initial?.movementY;\n\n this.initialMovement = {\n x: initialMovementX ?? 0,\n y: initialMovementY ?? 0,\n };\n\n this.movement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this.previousMovement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerMove(e: any) {\n if (this.isActive) {\n e.preventDefault();\n const now = Date.now();\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\n this.lastTimeStamp = now;\n\n const t = deltaTime / 1000;\n\n if (e.type === 'touchmove') {\n this.movement = {\n x:\n this.initialMovement.x +\n (e.touches[0].clientX - this.movementStart.x),\n y:\n this.initialMovement.y +\n (e.touches[0].clientY - this.movementStart.y),\n };\n } else {\n this.movement = {\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\n };\n }\n\n this.translation = {\n x: this.offset.x + this.movement.x,\n y: this.offset.y + this.movement.y,\n };\n\n this.velocity = {\n x: clamp(\n (this.movement.x - this.previousMovement.x) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n (this.movement.y - this.previousMovement.y) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerUp() {\n if (this.isActive) {\n this.isActive = false;\n this._handleCallback();\n this._cancelEvents();\n this._initEvents();\n }\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class MouseMoveGesture extends Gesture {\n event?: MouseEvent;\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n } else if (this.targetElements.length > 0) {\n this._subscribe = attachEvents(this.targetElements, [\n ['mousemove', this.onMouseMove.bind(this)],\n ]);\n } else {\n this._subscribe = attachEvents(\n [window],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n event: this.event,\n isMoving: this.isActive,\n target: this.event?.target,\n mouseX: this.movement.x,\n mouseY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onMouseMove(e: MouseEvent) {\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n this.event = e;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n const x = e.clientX;\n const y = e.clientY;\n\n this.movement = { x, y };\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback();\n }, 250); // Debounce 250 milliseconds\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\n\n this._handleCallback();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class ScrollGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['scroll', this.scrollElementListener.bind(this)]]\n );\n } else {\n this._subscribe = attachEvents(\n [window],\n [['scroll', this.scrollListener.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n isScrolling: this.isActive,\n scrollX: this.movement.x,\n scrollY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onScroll({ x, y }: Vector2) {\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.movement = { x, y };\n\n // Clear if scrolling\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n\n // Reset Velocity\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback(); // Debounce 250milliseconds\n }, 250);\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n\n scrollListener() {\n const { pageYOffset: y, pageXOffset: x } = window;\n this.onScroll({ x, y });\n }\n\n scrollElementListener() {\n const x = this.targetElement?.scrollLeft || 0;\n const y = this.targetElement?.scrollTop || 0;\n this.onScroll({ x, y });\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nexport class WheelGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n delta: Vector2 = withDefault(0, 0);\n\n // Holds offsets\n offset: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['wheel', this.onWheel.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n target: this.targetElement,\n isWheeling: this.isActive,\n deltaX: this.delta.x,\n deltaY: this.delta.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.offset.x,\n offsetY: this.offset.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n });\n }\n }\n\n onWheel(event: WheelEvent) {\n let { deltaX, deltaY, deltaMode } = event;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.isActive = true;\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.translation = { x: this.offset.x, y: this.offset.y };\n this._handleCallback();\n\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\n this.movement = { x: 0, y: 0 };\n }, 200);\n\n // normalize wheel values, especially for Firefox\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n\n this.delta = { x: deltaX, y: deltaY };\n this.movement = {\n x: this.movement.x + deltaX,\n y: this.movement.y + deltaY,\n };\n this.offset = {\n x: this.translation.x + this.movement.x,\n y: this.translation.y + this.movement.y,\n };\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\ntype UseRecognizerHandlerType = Array<\n [\n key: 'drag' | 'wheel' | 'move' | 'scroll',\n gesture: any,\n callback: any,\n config?: any\n ]\n>;\n\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\n const ref = React.useRef<any>();\n const elementRefs = React.useRef<Array<any>>([]);\n const subscribers = React.useRef<\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\n >(new Map()).current;\n\n // re-initiate callback on change\n React.useEffect(() => {\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\n const [, , callback] = handlers[keyIndex];\n gesture.applyCallback(callback);\n }\n }, [handlers]);\n\n React.useEffect(() => {\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\n queueMicrotask(() =>\n subscribers.set(key, {\n keyIndex,\n gesture,\n unsubscribe: gesture.applyGesture({\n targetElement: ref.current,\n targetElements: elementRefs.current,\n callback,\n config,\n }),\n })\n );\n });\n\n return () => {\n for (let [, { unsubscribe }] of subscribers.entries()) {\n unsubscribe && unsubscribe();\n }\n };\n });\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] =\n elementRefs.current[index] || React.createRef();\n\n return { ref: elementRefs.current[index] };\n }\n };\n};\n","import * as React from 'react';\n\nimport { useMount, type UseMountConfig } from '../hooks';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\ninterface MountedBlockProps extends Partial<UseMountConfig> {\n state: boolean;\n children: (animation: { value: FluidValue }) => React.ReactNode;\n}\n\n/**\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\n * @param { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @param { number } } from - Number that dictates the beginning state for animation.\n * @param { number } enter - Number that dictates the entry state for animation.\n * @param { number } exit - Number that dictates the exit state for animation.\n * @param { UseValueConfig } config - Animation configuration for overall animation.\n */\nexport const MountedBlock = ({\n state,\n children,\n from = 0,\n enter = 1,\n exit = 0,\n config,\n}: MountedBlockProps) => {\n const open = useMount(state, {\n from,\n enter,\n exit,\n config,\n });\n\n return (\n <>\n {open(\n (animation, mounted) =>\n mounted && children({ value: animation.value as any })\n )}\n </>\n );\n};\n","import * as React from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useValue, type UseValueConfig } from '../hooks';\n\ninterface ScrollableBlockProps {\n children?: (animation: { value: FluidValue }) => React.ReactNode;\n direction?: 'single' | 'both';\n threshold?: number;\n animationConfig?: UseValueConfig;\n}\n\n/**\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\n * of a component when it enters or exit the viewport. Accepts child as a function with\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\n * @prop { UseValueConfig } animationConfig - Animation config\n */\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\n const {\n children,\n direction = 'single',\n animationConfig,\n threshold = 0.2,\n } = props;\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\n const animation = useValue(0, animationConfig); // 0: not intersecting | 1: intersecting\n\n React.useEffect(() => {\n const _scrollableBlock = scrollableBlockRef.current;\n\n const observer = new IntersectionObserver(\n function ([entry]) {\n const { isIntersecting } = entry;\n\n if (isIntersecting) {\n animation.value = 1;\n } else {\n if (direction === 'both') animation.value = 0;\n }\n },\n {\n root: null, // FOR VIEWPORT ONLY\n threshold,\n }\n );\n\n if (_scrollableBlock) {\n observer.observe(_scrollableBlock);\n }\n\n return () => {\n if (_scrollableBlock) {\n observer.unobserve(_scrollableBlock);\n }\n };\n }, []);\n\n return (\n <div ref={scrollableBlockRef}>\n {children && children({ value: animation.value })}\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { DragEventType, UseDragConfig } from '../types';\nimport { DragGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useDrag(\n callback: (event: DragEventType) => void,\n config?: UseDragConfig\n) {\n const gesture = React.useRef(new DragGesture()).current;\n\n return useRecognizer([['drag', gesture, callback, config]]);\n}\n","import * as React from 'react';\nimport {\n DragGesture,\n MouseMoveGesture,\n ScrollGesture,\n WheelGesture,\n} from '../controllers';\nimport {\n DragEventType,\n WheelEventType,\n ScrollEventType,\n MouseMoveEventType,\n} from '../types';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useGesture({\n onDrag,\n onWheel,\n onScroll,\n onMouseMove,\n}: {\n onDrag?: (event: DragEventType) => void;\n onWheel?: (event: WheelEventType) => void;\n onScroll?: (event: ScrollEventType) => void;\n onMouseMove?: (event: MouseMoveEventType) => void;\n}) {\n const dragGesture = React.useRef(new DragGesture()).current;\n const wheelGesture = React.useRef(new WheelGesture()).current;\n const scrollGesture = React.useRef(new ScrollGesture()).current;\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([\n ['drag', dragGesture, onDrag],\n ['wheel', wheelGesture, onWheel],\n ['scroll', scrollGesture, onScroll],\n ['move', mouseMoveGesture, onMouseMove],\n ]);\n}\n","import { useRef, useEffect, DependencyList, createRef } from 'react';\n\ntype MeasurementValue = number | Array<number>;\n\ntype MeasurementType = {\n left: MeasurementValue;\n top: MeasurementValue;\n width: MeasurementValue;\n height: MeasurementValue;\n vLeft: MeasurementValue;\n vTop: MeasurementValue;\n};\n\nexport function useMeasure(\n callback: (event: MeasurementType) => void,\n deps?: DependencyList\n) {\n const ref = useRef(null);\n const elementRefs = useRef([]);\n const callbackRef = useRef<(event: MeasurementType) => void>(callback);\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const _refElement = ref.current || document.documentElement;\n const _refElementsMultiple = elementRefs.current;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { left, top, width, height } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n\n if (callbackRef) {\n if (_refElement === document.documentElement) {\n return; // no-op for document\n } else {\n callbackRef.current({\n left: left + pageXOffset,\n top: top + pageYOffset,\n width,\n height,\n vLeft: left,\n vTop: top,\n });\n }\n }\n });\n\n const resizeObserverMultiple = new ResizeObserver((entries) => {\n const left: Array<number> = [];\n const top: Array<number> = [];\n const width: Array<number> = [];\n const height: Array<number> = [];\n const vLeft: Array<number> = [];\n const vTop: Array<number> = [];\n\n entries.forEach((entry) => {\n const {\n left: _left,\n top: _top,\n width: _width,\n height: _height,\n } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n const _pageLeft = _left + pageXOffset;\n const _pageTop = _top + pageYOffset;\n\n left.push(_pageLeft);\n top.push(_pageTop);\n width.push(_width);\n height.push(_height);\n vLeft.push(_left);\n vTop.push(_top);\n });\n\n if (callbackRef) {\n callbackRef.current({\n left,\n top,\n width,\n height,\n vLeft,\n vTop,\n });\n }\n });\n\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.observe(element.current);\n });\n } else {\n resizeObserver.observe(_refElement);\n }\n }\n\n return () => {\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.unobserve(element.current);\n });\n } else {\n resizeObserver.unobserve(_refElement);\n }\n }\n };\n }, []);\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] = elementRefs.current[index] || createRef();\n\n return { ref: elementRefs.current[index] };\n }\n }; // ...bind() or ...bind(index) for multiple\n}\n","import * as React from 'react';\n\nimport { MouseMoveEventType } from '../types';\nimport { MouseMoveGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\n const gesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([['move', gesture, callback]]);\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\nimport { attachEvents } from '../gestures/helpers/eventAttacher';\n\nexport function useOutsideClick(\n elementRef: RefObject<HTMLElement>,\n callback: (event: MouseEvent) => void,\n deps?: DependencyList\n) {\n const callbackRef = useRef<(event: MouseEvent) => void>();\n\n if (!callbackRef.current) {\n callbackRef.current = callback;\n }\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const handleOutsideClick = (e: MouseEvent) => {\n const target = e.target as Node;\n\n if (!target || !target.isConnected) {\n return;\n }\n\n const isOutside =\n elementRef.current && !elementRef.current.contains(target);\n\n if (isOutside) {\n callbackRef.current && callbackRef.current(e);\n }\n };\n\n const subscribe = attachEvents(\n [document],\n [['mousedown', handleOutsideClick]]\n );\n\n return () => subscribe && subscribe();\n }, []);\n}\n","import * as React from 'react';\n\nimport { ScrollEventType } from '../types';\nimport { ScrollGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useScroll(callback: (event: ScrollEventType) => void) {\n const gesture = React.useRef(new ScrollGesture()).current;\n\n return useRecognizer([['scroll', gesture, callback]]);\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { useFluidValues } from '../core/useFluidValues';\nimport { getToValue, AnimationConfig } from '../helpers';\n\nimport { type UpdateValue } from '../core/FluidController';\nimport { type UseValueConfig } from './useValue';\n\nexport function useValues<T extends number[] | string[]>(\n initialValue: T,\n config?: UseValueConfig\n) {\n const isInitialRender = useRef(true);\n const [animation, setAnimation] = useFluidValues(initialValue, {\n ...AnimationConfig.EASE,\n ...config,\n });\n\n const updateAnimation = useCallback(\n (\n values: Array<number | number[] | string | UpdateValue | UpdateValue[]>\n ) => {\n const update = values.map((value) => {\n if (Array.isArray(value)) {\n return value.map((v) => getToValue(v));\n } else {\n return getToValue(value);\n }\n });\n queueMicrotask(() => setAnimation(update));\n },\n []\n );\n\n useLayoutEffect(() => {\n if (!isInitialRender.current) {\n updateAnimation(initialValue);\n }\n\n isInitialRender.current = false;\n }, [initialValue, config]);\n\n return {\n set value(\n to: Array<number | number[] | string | UpdateValue | UpdateValue[]>\n ) {\n updateAnimation(to);\n },\n get value(): FluidValue[] {\n return animation;\n },\n get currentValue() {\n return animation.map((a) => a.get());\n },\n };\n}\n","import { useCallback, useMemo, useRef } from 'react';\nimport { FluidValue } from '@raidipesh78/re-motion';\n\nimport { UpdateValue, UseFluidValueConfig } from './FluidController';\nimport { FluidArrayController } from './FluidArrayController';\n\nexport const useFluidValues = <T extends number[] | string[]>(\n value: T,\n config?: UseFluidValueConfig\n): [\n FluidValue[],\n (\n updateValue: Array<UpdateValue | UpdateValue[]>,\n callback?: () => void\n ) => void,\n] => {\n const fluidController = useRef(\n new FluidArrayController(value, config)\n ).current;\n\n const onUpdate = useCallback(\n (\n updateValue: UpdateValue[] | Array<UpdateValue[]>,\n callback?: () => void\n ) => {\n fluidController.setFluid(updateValue, callback);\n },\n []\n );\n\n const fluidValue = useMemo(() => fluidController.getFluid(), []);\n\n return [fluidValue, onUpdate];\n};\n","import * as React from 'react';\n\nimport { WheelEventType } from '../types';\nimport { WheelGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useWheel(callback: (event: WheelEventType) => void) {\n const gesture = React.useRef(new WheelGesture()).current;\n\n return useRecognizer([['wheel', gesture, callback]]);\n}\n","import { useRef, useEffect, DependencyList } from 'react';\n\ntype WindowDimensionType = {\n width: number;\n height: number;\n innerWidth: number;\n innerHeight: number;\n};\n\nexport function useWindowDimension(\n callback: (event: WindowDimensionType) => void,\n deps?: DependencyList\n) {\n const windowDimensionsRef = useRef<WindowDimensionType>({\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n });\n const callbackRef = useRef<(event: WindowDimensionType) => void>(callback);\n\n const handleCallback: () => void = () => {\n if (callbackRef) {\n callbackRef.current({\n ...windowDimensionsRef.current,\n });\n }\n };\n\n // Re-initiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { clientWidth, clientHeight } = entry.target;\n const { innerWidth, innerHeight } = window;\n\n windowDimensionsRef.current = {\n width: clientWidth,\n height: clientHeight,\n innerWidth,\n innerHeight,\n };\n\n handleCallback();\n });\n\n resizeObserver.observe(document.documentElement);\n\n return () => resizeObserver.unobserve(document.documentElement);\n }, []);\n}\n","import type { UseValueConfig } from '../hooks';\nimport type { WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithDecayConfig\n extends Pick<UseValueConfig, 'velocity' | 'deceleration'>,\n WithOnCallbacks {}\n\nexport const withDecay = (config?: WithDecayConfig): UpdateValue => ({\n config: {\n decay: true,\n ...config,\n },\n});\n","import type { UseValueConfig } from '../hooks';\nimport type { UpdateValue } from '../core/FluidController';\n\nexport const withDelay = (\n delay: number,\n animation: { toValue: number; config?: UseValueConfig }\n): UpdateValue => ({\n ...animation,\n config: {\n ...animation.config,\n delay,\n },\n});\n","import { AnimationConfig } from '../helpers';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithEaseConfig extends WithOnCallbacks {}\n\nexport const withEase = (toValue: number, config?: WithEaseConfig): UpdateValue =>\n withConfig(toValue, { ...AnimationConfig.EASE, ...config });\n","import type { UpdateValue } from '../core/FluidController';\n\nexport const withLoop = (\n updateValue: UpdateValue | UpdateValue[],\n loop: number\n): UpdateValue[] => {\n if (Array.isArray(updateValue)) {\n let loopedValues: UpdateValue[] = [];\n for (let i = 0; i < loop; i++) {\n loopedValues = loopedValues.concat(updateValue);\n }\n return loopedValues;\n } else {\n return Array(loop).fill({\n toValue: updateValue.toValue,\n config: { ...updateValue.config, loop },\n });\n }\n};\n","import { AnimationConfig } from '../helpers';\nimport { type UseValueConfig } from '../hooks';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithSpringConfig\n extends Pick<UseValueConfig, 'mass' | 'friction' | 'tension'>,\n WithOnCallbacks {}\n\nexport const withSpring = (\n toValue: number,\n config?: WithSpringConfig\n): UpdateValue =>\n withConfig(toValue, { ...AnimationConfig.ELASTIC, ...config });\n","import { type UseValueConfig } from '../hooks';\nimport { withConfig, type WithOnCallbacks } from './withConfig';\nimport type { UpdateValue } from '../core/FluidController';\n\ninterface WithTimingConfig\n extends Pick<UseValueConfig, 'duration' | 'easing'>,\n WithOnCallbacks {}\n\nexport const withTiming = (\n toValue: number,\n config?: WithTimingConfig\n): UpdateValue => withConfig(toValue, { duration: 250, ...config });\n"],"names":["COLOR_NUMBER_REGEX","HEX_NAME_COLOR","colorNames","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexToRgba","hex","hex6","replace","_","r","g","b","conv3to6","hex8","length","conv6to8","hexRgba","exec","parseInt","a","rgbaToHex","rgba","toString","slice","interpolateValue","val","arr","extrapolateLeft","extrapolateRight","_a","__read","inputMin","inputMax","outputMin","outputMax","result","Infinity","_getArrayInterpolate","value","narrowedInput","_extrapolateLeft","_extrapolateRight","map","index","outputMinProcessed","outputMaxProcessed","interpolateColor","Error","getTemplateString","str","_getParsedStringArray","match","v","indexOf","Number","getProcessedColor","Object","prototype","hasOwnProperty","call","interpolateNumbers","inputRange","outputRange","extrapolateConfig","extrapolate","x","input","output","i","getNarrowedInput","undefined","str2","Array","isArray","_b","processedOutputMin","processedOutputMax","templateString","trim","outputMinParsed","outputMaxParsed","result_1","__values","result_1_1","next","done","interpolate","FluidValue","isDefined","getToValue","config","toValue","AnimationConfig","ELASTIC","mass","friction","tension","BOUNCE","duration","easing","Easing","bounce","EASE","STIFF","WOOBLE","EASE_IN","in","ease","EASE_OUT","out","EASE_IN_OUT","inOut","POWER1","bezier","POWER2","POWER3","POWER4","LINEAR","linear","FluidController","this","iterationsSoFar","fluid","defaultConfig","getAnimation","updateValue","native","immediate","timingConfig","timing","decay","decayConfig","velocity","deceleration","springConfig","restDistance","spring","runAnimation","onComplete","_this","__assign","loopCount","loop","delayMS","delay","removeAllListeners","onStart","get","onChange","addListener","animation","sequence","handleRest","finished","onRest","loopAnimation","reset","start","setFluid","callback","currentAnimation_1","onComplete_1","getFluid","useFluidValue","fluidController","useRef","current","onUpdate","useCallback","useMemo","useValue","initialValue","isInitialRender","setAnimation","updateAnimation","queueMicrotask","useLayoutEffect","to","currentValue","FluidArrayController","values","fluidControllers","fc","useMount","state","mv","useState","mounted","setMounted","from","enter","exit","innerConfig","_c","e","getSubscriptions","forEach","s","removeSubscription","useInternalMount","cb","m","bin","bool","clamp","lowerbound","upperbound","Math","min","max","rubber","distanceFromEdge","dimension","constant","abs","pow","rubber2","withConfig","flattenUpdateValues","animations","reduce","acc","push","apply","attachEvents","domTargets","events","subscribers","Map","event","capture","set","target","addEventListener","removeEventListener","attachEvent","eventKeys","entries","_d","eventKey","subscriber","withDefault","y","Gesture","lastTimeStamp","Date","now","isActive","targetElements","_initEvents","_cancelEvents","_subscribe","applyCallback","applyGesture","targetElement","element","_VELOCITY_LIMIT","DragGesture","_super","movementStart","initialMovement","movement","previousMovement","translation","offset","__extends","window","pointerDown","bind","pointerMove","pointerUp","passive","_handleCallback","args","currentIndex","down","movementX","movementY","offsetX","offsetY","velocityX","velocityY","distanceX","distanceY","directionX","sign","directionY","cancel","type","touches","clientX","clientY","currElem","find","elem","preventDefault","initial","initialMovementX","initialMovementY","deltaTime","t","MouseMoveGesture","direction","onMouseMove","isMoving","mouseX","mouseY","isActiveID","clearTimeout","setTimeout","diffX","diffY","ScrollGesture","scrollElementListener","scrollListener","isScrolling","scrollX","scrollY","onScroll","pageYOffset","pageXOffset","scrollLeft","scrollTop","WheelGesture","delta","onWheel","isWheeling","deltaX","deltaY","deltaMode","useRecognizer","handlers","ref","React","elementRefs","useEffect","_e","keyIndex","gesture","key","unsubscribe","createRef","children","open","_jsx","_Fragment","props","animationConfig","threshold","scrollableBlockRef","_scrollableBlock","observer","IntersectionObserver","isIntersecting","root","observe","unobserve","amv","minOutput","maxOutput","perc","val1","val2","array","moveIndex","toIndex","item","diff","__spreadArray","targetIndex","snapPoints","finalValue","getDiff","point","deltas","minDelta","onDrag","dragGesture","wheelGesture","scrollGesture","mouseMoveGesture","deps","callbackRef","_refElement","document","documentElement","_refElementsMultiple","resizeObserver","ResizeObserver","getBoundingClientRect","left","top","width","height","vLeft","vTop","resizeObserverMultiple","entry","_left","_top","_width","_height","_pageLeft","_pageTop","elementRef","subscribe","isConnected","contains","useFluidValues","update","windowDimensionsRef","innerWidth","innerHeight","clientWidth","clientHeight","loopedValues","concat","fill"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "react-ui-animate",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "description": "React library for gestures and animation",
5
5
  "main": "dist/index.js",
6
6
  "peerDependencies": {
7
7
  "react": ">=16.8.0 || >=17.0.0 || >=18.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@raidipesh78/re-motion": "^4.1.0-alpha.0"
10
+ "@raidipesh78/re-motion": "^4.1.0"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@rollup/plugin-terser": "^0.4.4",
@@ -1,5 +0,0 @@
1
- /**
2
- * @param { number } ms - number of milliseconds to delay code execution
3
- * @returns Promise
4
- */
5
- export declare function delay(ms: number): Promise<unknown>;