morphing-scroll 2.6.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");const t=(e,t=!1,r)=>{let n=[];if(n=Array.isArray(e)?2===e.length?[e[1],e[0],e[1],e[0]]:[...e]:[e,e,e,e],t&&(n=[n[1],n[0],n[3],n[2]]),r){const e=[];for(let t=0;r>t;t++)e.push(n[t%4]);n=e}return n},r=({className:r,children:n,style:o,root:l,threshold:s,rootMargin:i,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=e.useMemo((()=>{if(!i)return"";const e=t(i);return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px`}),[i]),p=e.useCallback((([e])=>{d(e.isIntersecting),a&&a({time:e.time,rootBounds:e.rootBounds,boundingClientRect:e.boundingClientRect,intersectionRect:e.intersectionRect,isIntersecting:e.isIntersecting,intersectionRatio:e.intersectionRatio,target:e.target})}),[a]);return e.useEffect((()=>{const e=new IntersectionObserver(p,{root:l,threshold:s,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[p,l,s,f]),e.createElement("div",{"intersection-tracker":"",className:r,ref:m,style:o},c||u?n:null)};r.displayName="IntersectionTracker";const n=({className:t,children:r,style:n,measure:o="inner",onResize:l})=>{const s=e.useRef(null);e.useEffect((()=>{const e=s.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)l&&l(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,l]);const i={width:"max-content",height:"max-content"},c={inner:Object.assign({},i),outer:Object.assign({},{width:"100%",height:"100%"}),all:Object.assign({minWidth:"100%",minHeight:"100%"},i)};return e.createElement("div",{"resize-tracker":"",className:t,ref:s,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};n.displayName="ResizeTracker";let o=1;const l=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:l,scrollBarOnHover:s,scrollBarEvent:i,thumbSize:c,thumbSpace:a,objLengthPerSize:u,sliderCheckLocal:d,duration:m})=>{const f=e.useRef(null),p=e.useRef(null);e.useEffect((()=>{if(matchMedia("(pointer: coarse)").matches||!(null==l?void 0:l.wheel))return;const e=f.current;if(!e)return;const t="y"===e.getAttribute("data-direction")?"y":"x";let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>{e.preventDefault(),null==r||r.scrollBy(Object.assign(Object.assign({},"y"===t?{top:e.deltaY}:{left:e.deltaY}),{behavior:"auto"}))};return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[]),e.useEffect((()=>{const e=p.current;if(!e||"sliderMenu"===t)return;const r=window.matchMedia("(pointer: coarse)").matches?"touchstart":"mousedown",n=e=>{e.preventDefault(),e.stopPropagation(),i(e)};return e.addEventListener(r,n,{passive:!1}),()=>{e.removeEventListener(r,n)}}),[i]);const h=e.useMemo((()=>{if("scroll"===t||!r)return;const n=["hybrid","y"].includes(r)?"y":"x",s="x"===n?o[0]:o[1];return Array.from({length:u},((r,o)=>e.createElement("div",{key:o,className:"ms-slider-element",style:Object.assign({},"sliderMenu"===t&&{cursor:"pointer"}),onClick:"sliderMenu"===t?()=>{i(s*o,n,m,d)}:void 0},Array.isArray(null==l?void 0:l.progressElement)?l.progressElement[o]:null==l?void 0:l.progressElement)))}),[u,r,o,t,i,null==l?void 0:l.progressElement,m,d]);return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar",ref:f,"data-direction":["hybrid","y"].includes(r)?"y":"x",style:Object.assign(Object.assign(Object.assign({position:"absolute",width:"fit-content"},"x"===r?Object.assign({transformOrigin:"left top",height:o[0]+"px",left:"50%"},n?{top:0,transform:"rotate(-90deg) translate(-100%, -50%)"}:{transform:"rotate(-90deg) translateY(-50%)"}):Object.assign({top:"50%",transform:"translateY(-50%)",height:o[1]+"px"},n?{left:0}:{right:0})),0!=!(null==l?void 0:l.progressElement)&&{pointerEvents:"none"}),s&&{opacity:0,transition:"opacity 0.1s ease-in-out"})},e.createElement("div",{className:"ms-thumb",ref:p,style:Object.assign(Object.assign({height:c+"px",willChange:"transform, height",transform:`translateY(${a}px)`},(null==l?void 0:l.progressElement)&&{cursor:"grab"}),{transition:"height 0.05s ease-in-out"})},null==l?void 0:l.progressElement)):u>1&&(null==l?void 0:l.progressElement)&&e.createElement("div",{className:"ms-slider",ref:p,style:Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex"},"slider"===t&&{cursor:"grab"}),s&&{opacity:0,transition:"opacity 0.1s ease-in-out"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%",transform:"translateX(-50%)"},n?{top:0}:{bottom:0}):Object.assign({flexDirection:"column",top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},h))};l.displayName="ScrollBar";var s=e.memo(l);const i=({edgeGradient:t,visibility:r,edgeType:n})=>{if(!t)return null;const o=Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",pointerEvents:"none",transition:"opacity 0.1s ease-in-out"},t.color&&{background:t.color&&`linear-gradient(${"right"===n||"left"===n?"270deg, ":""}${t.color}, transparent)`}),"right"===n||"left"===n?{height:"100%",width:t.size+"px",top:0}:{width:"100%",height:t.size+"px",left:0}),n?{[n]:0}:{}),"left"===n?{transform:"scaleX(-1)"}:"bottom"===n?{transform:"scaleY(-1)"}:{});return e.createElement("div",{className:"ms-edge"+(n?" "+n:""),style:Object.assign(Object.assign({},o),{opacity:r?1:0})})};i.displayName="Edge";var c=e.memo(i);const a=({activity:t,arrows:r,arrowType:n,handleArrow:o,size:l})=>{const s=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex",justifyContent:"center",alignItems:"center",cursor:"pointer",width:r.size+"px"},n?{[n]:0}:{}),"top"===n&&{transform:"rotate(-90deg) translateX(-100%)",transformOrigin:"left top"}),"bottom"===n&&{transform:"rotate(90deg) translateX(-100%)",transformOrigin:"left bottom"}),"left"===n&&{transform:"scaleX(-1)"}),["top","bottom"].includes(n)?{height:l+"px"}:{height:"100%",top:0});return e.createElement("div",{className:`ms-arrow-box ${n}${t?" active":""}`,style:Object.assign({},s),onClick:()=>o(n)},r.element)};a.displayName="Arrow";var u=e.memo(a);function d(e,t,r,n){return new(r||(r=Promise))((function(o,l){function s(e){try{c(n.next(e))}catch(e){l(e)}}function i(e){try{c(n.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,i)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let m=0;const f={tasks:[],timer:null,running:new Set},p=new Map,h={scheduleNext(){if(null!==f.timer&&(clearTimeout(f.timer),f.timer=null),0===f.tasks.length)return;const e=f.tasks[0],t=Math.max(0,e.runAt-performance.now());f.timer=window.setTimeout((()=>{f.timer=null;const e=performance.now(),t=[];for(;f.tasks.length&&f.tasks[0].runAt<=e&&!f.running.has(f.tasks[0].id);)t.push(f.tasks.shift());t.forEach((e=>{f.running.add(e.id);try{e.callback()}finally{f.running.delete(e.id)}})),h.scheduleNext()}),t)},clearAll(){null!==f.timer&&(clearTimeout(f.timer),f.timer=null),f.tasks=[],f.running.clear()}},g=(e,t,r,n)=>{const o=r||"task_"+m++;if(0===t)return e(),o;const l=n||"default",s=performance.now()+t;if("exclusive"===l){if(f.running.has(o)||f.tasks.some((e=>e.id===o)))return o;f.running.add(o);try{e()}finally{const e=window.setTimeout((()=>{f.running.delete(o),p.delete(o)}),t);p.set(o,e)}return o}r&&(f.tasks=f.tasks.filter((e=>e.id!==o)));const i={id:o,runAt:s,callback:()=>{f.running.add(o);try{e()}finally{f.running.delete(o)}}};return function(e,t){let r=0,n=e.length;for(;n>r;){const o=r+n>>1;e[o].runAt<t.runAt?r=o+1:n=o}e.splice(r,0,t)}(f.tasks,i),h.scheduleNext(),o},y=e=>{if(!e)return h.clearAll(),p.forEach((e=>clearTimeout(e))),void p.clear();(Array.isArray(e)?e:[e]).forEach((e=>{f.running.delete(e);const t=p.get(e);void 0!==t&&(clearTimeout(t),p.delete(e)),f.tasks=f.tasks.filter((t=>t.id!==e)),0===f.tasks.length?h.clearAll():h.scheduleNext()}))};function b(e,t){return e>t?Math.floor(e/t):1}function v(e,t=0,r=1/0){return Math.max(t,Math.min(Math.round(e),r))}const x=(e,t,r)=>{if(!t)return;const n=t.querySelectorAll("."+("scroll"===e?"ms-thumb":"ms-slider"));n.length>0&&(r.current=n)},E=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function w(e,t,r=0,n=0){return o=>{var l,s,i,c;let a=!1;const u={width:(null!==(l=o.width)&&void 0!==l?l:0)-r,height:(null!==(s=o.height)&&void 0!==s?s:0)-n},d=0===u.width&&0===u.height;d&&!a&&(a=!0),(null===(i=e.current)||void 0===i?void 0:i.width)===u.width&&(null===(c=e.current)||void 0===c?void 0:c.height)===u.height||d&&a||(e.current=u,t())}}function j(t){const r=[],n=t=>{if(null===t||"number"==typeof t||"boolean"==typeof t||"bigint"==typeof t)r.push(t+"");else if("string"==typeof t)r.push(t);else if("function"==typeof t)r.push("<function>");else if(e.isValidElement(t))r.push("<react-node>");else if(Array.isArray(t))t.forEach(n);else if("object"==typeof t){const e=Object.entries(t).sort((([e],[t])=>e.localeCompare(t)));for(const[,t]of e)n(t)}else void 0===t&&r.push("<undefined>")};return n(t),r.join("/")}const S=(e,t)=>{if(e)if("grab"===e.style.cursor){if("mousedown"===t){const e=document.createElement("style");e.id="ms-cursor-lock",e.innerHTML="* {\n cursor: grabbing !important;\n }",document.head.appendChild(e)}e.style.cursor="grabbing",e.classList.add("active")}else if("grabbing"===e.style.cursor){if("mousedown"===t){const e=document.getElementById("ms-cursor-lock");e&&e.remove()}e.style.cursor="grab",e.classList.remove("active")}},R=(e,t,r,n)=>{const o=e;["thumb","slider"].includes(t)?S("slider"===t?null==r?void 0:r.closest(".ms-slider"):r,o):"wrapp"===t&&S(n,o)},M=(e,t,r)=>{var n,o,l,s,i;const c=r.scrollElementRef;if(!c)return;const a={x:"touches"in r.mouseEvent?r.mouseEvent.touches[0].clientX:r.mouseEvent.clientX,y:"touches"in r.mouseEvent?r.mouseEvent.touches[0].clientY:r.mouseEvent.clientY,leftover:null!==(o=null===(n=r.prevCoordsRef.current)||void 0===n?void 0:n.leftover)&&void 0!==o?o:0},u=null!==(l=r.prevCoordsRef.current)&&void 0!==l?l:a,d={x:a.x-u.x,y:a.y-u.y};r.prevCoordsRef.current=a;const m="wrapp"===r.clicked?-d[e]:d[e],f="y"===e?"scrollTop":"scrollLeft";if("thumb"===r.clicked)return void((e,t,r,n,o)=>{if(!t.scrollElementRef||!t.objectsWrapperRef)return;const l=t.scrollElementRef,s="x"===e?0:1;if(!Number.isFinite(o[s]))return;const i=t.objectsWrapperWH[s]+t["x"===e?"fullMarginX":"fullMarginY"],c=(t.scrollElementWH[s]-t.scrollBarEdge[s]-t.thumbSize)*o[s],a=i-t.scrollElementWH[s];if(0>=c||0>=a)return;const u=r*(a/c)+n.leftover,d=Math.trunc(u);if(t.prevCoordsRef.current&&(t.prevCoordsRef.current.leftover=u-d),"x"===e){const e="number"==typeof t.scrollStateRef.targetScrollX?t.scrollStateRef.targetScrollX:l.scrollLeft,r=l.scrollWidth-l.clientWidth;t.scrollStateRef.targetScrollX=v(e+d,0,r)}else{const e="number"==typeof t.scrollStateRef.targetScrollY?t.scrollStateRef.targetScrollY:l.scrollTop,r=l.scrollHeight-l.clientHeight;t.scrollStateRef.targetScrollY=v(e+d,0,r)}l.scrollLeft!==t.scrollStateRef.targetScrollX&&(l.scrollLeft=t.scrollStateRef.targetScrollX),l.scrollTop!==t.scrollStateRef.targetScrollY&&(l.scrollTop=t.scrollStateRef.targetScrollY)})(e,r,m,u,t);"slider"===r.type&&(r.numForSliderRef.current+=m);const p="x"===e?0:1;if("wrapp"===r.clicked){if(!Number.isFinite(t[p]))return;return void(c[f]+=m/t[p])}const h=c[f],g=Math.round((null===(i=null===(s=c.closest(".ms-content"))||void 0===s?void 0:s.querySelector(".ms-slider-element.active"))||void 0===i?void 0:i.getBoundingClientRect()["x"===e?"width":"height"])||1);if(Math.abs(r.numForSliderRef.current)>=g){const t=m>0&&h+r.sizeLocal[p]<r.wrapElWH[p]?h+r.sizeLocal[p]:0>m&&h>0?h-r.sizeLocal[p]:null;r.numForSliderRef.current=0,r.smoothScroll(t,e,10)}};function k(e){e.rafID.current&&(cancelAnimationFrame(e.rafID.current),e.rafID.current=NaN,y("smoothScrollBlock"));const t=e.scrollElementRef;t&&(e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop);let r=0,n=0,o=[],l=[],s=[],i=[];if("thumb"===e.clicked){const t=getComputedStyle(e.objectsWrapperRef),s=e=>{const r=e=>parseFloat(e);return"x"===e?r(t.marginLeft)+r(t.marginRight):r(t.marginTop)+r(t.marginBottom)};r=s("x"),n=s("y"),o=[e.scrollElementRef.clientWidth,e.scrollElementRef.clientHeight],l=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]}"slider"===e.type&&(s=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]),["scroll","slider"].includes(e.type)&&(i=function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(e.scrollElementRef));const c=new AbortController,{signal:a}=c;e.clickedObject.current=e.clicked,e.triggerUpdate();R(e.eventType,e.clicked,e.scrollBar,e.objectsWrapperRef),document.addEventListener("pointermove",(t=>{return"touches"in(c=t)&&c.preventDefault(),void function(e){const t=e.direction||"y";"hybrid"===t?("wrapp"===e.clicked?["x","y"]:[e.axisFromAtr]).forEach((t=>t&&M(t,e.visualDiff,e))):M(t,e.visualDiff,e)}(Object.assign(Object.assign({},e),{mouseEvent:c,fullMarginX:r,fullMarginY:n,scrollElementWH:o,objectsWrapperWH:l,wrapElWH:s,visualDiff:i}));var c}),{passive:!1,signal:a}),document.addEventListener("pointerup",(t=>function(e){if(e.controller.abort(),R(e.eventType,e.clicked,e.scrollBar,e.objectsWrapperRef),e.clickedObject.current="none",e.scrollBarOnHover){let t=e.mouseEvent.target,r=!1;for(;t&&t!==document.body;){if(t===e.scrollContentRef){r=!0;break}t=t.parentNode}r||e.mouseOnRefHandle(e.mouseEvent)}if("slider"===e.type){const t=e.scrollElementRef;if(!t)return;const r=e.numForSliderRef.current,n="y"===e.direction?"scrollTop":"scrollLeft",o="y"===e.direction?t.clientHeight:t.clientWidth,l=e=>o*Math[e](t[n]/o);if(Math.abs(r)>20){const t=l(r>0?"ceil":"floor");e.smoothScroll(t,"y"===e.direction?"y":"x",e.duration)}else{const t=l(r>0?"floor":"ceil");e.smoothScroll(t,"y"===e.direction?"y":"x",e.duration)}e.numForSliderRef.current=0}e.prevCoordsRef.current=null,e.triggerUpdate()}(Object.assign(Object.assign({},e),{mouseEvent:t,controller:c}))),{signal:a})}const O="wrap-id";function A(e,t,r){return t?v(Math.round(e/t*e),r,e):0}function L(e,t,r,n){return t?v(e/t*(r-n),0,r-n):0}const z=({className:r,children:l,type:i="scroll",direction:a="y",scrollPosition:m,onScrollValue:f,isScrolling:p,size:h,objectsSize:S,crossCount:R,gap:M,wrapperMargin:z,wrapperMinSize:T,wrapperAlign:C,elementsAlign:N,elementsDirection:W="row",edgeGradient:F,progressTrigger:H={wheel:!0},progressReverse:I=!1,scrollBarOnHover:B=!1,scrollBarEdge:Y,thumbMinSize:X,render:$,emptyElements:D,suspending:P=!1,fallback:q})=>{var K,V,_,U,G;const J=function(){const t=e.useRef(null);return null===t.current&&(t.current=""+o++),t.current}();if(!h)throw Error(`Prop "size" is not provided\nMorphScroll〈♦${J}〉`);Object.keys(H).length;const[,Q]=e.useState({}),Z=()=>Q({}),ee=e.useRef(null),te=e.useRef(null),re=e.useRef(null),ne=e.useRef(null),oe=e.useRef([]),le=e.useRef(null),se=e.useRef(!0),ie=e.useRef("none"),ce=e.useRef({loaded:[],empty:[]}),ae=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),ue=e.useRef(!1),de=e.useRef(0),me=e.useRef(null),fe=e.useRef(!1),pe=e.useRef(NaN);function he(){return e.useRef({width:0,height:0})}const ge=he(),ye=he(),be=he(),[ve,xe,Ee,we,je,Se,Re,Me,ke,Oe,Ae]=function(...e){return e.map(j)}(m,$,h,S,D,T,C,M,H,ce.current.empty,Y),Le=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=m)if("number"==typeof m||"end"===m)r=[m,m];else if(Array.isArray(m))r=m;else if("object"==typeof m){const l=m.value;"number"==typeof l||"end"===l?r=[l,l]:Array.isArray(l)&&(r=l),n=null!==(e=m.duration)&&void 0!==e?e:200,o=null!==(t=m.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[ve]),ze={color:null,size:40},Te=e.useMemo((()=>"object"==typeof F?Object.assign(Object.assign({},ze),F):"string"==typeof F?{color:F,size:40}:ze),[F]),Ce=e.useMemo((()=>{const t=H.arrows,r={size:40,contentReduce:!0,loop:!1};return e.isValidElement(t)?Object.assign(Object.assign({},r),{element:t}):"object"==typeof t&&null!==t?Object.assign(Object.assign({},r),t):r}),[ke]),Ne=e.useCallback((t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap(Ne):[r]}return[t]}),[]),We=e.useMemo((()=>e.Children.toArray(l).flatMap(Ne).map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return"clear"!==(null==D?void 0:D.mode)||!(null===(t=ce.current.empty)||void 0===t?void 0:t.includes(e))}))),[l,Ne,je,Oe]),[Fe,He,Ie,Be]=z?t(z):[0,0,0,0],Ye=Fe+Ie,Xe=Be+He,[$e,De]=e.useMemo((()=>{var e,t;return"number"==typeof M?[M,M]:Array.isArray(M)?[null!==(e=M[1])&&void 0!==e?e:0,null!==(t=M[0])&&void 0!==t?t:0]:[0,0]}),[M]),Pe=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1};if("string"==typeof $)return Object.assign(Object.assign({},e),{type:$});if("object"==typeof $&&null!==$){const{type:e,rootMargin:t=0,stopLoadOnScroll:r=!1}=$;return{type:e,rootMargin:t,stopLoadOnScroll:r}}return e}),[xe]),qe=e.useMemo((()=>t(Pe.rootMargin,"x"===a)),[Pe.rootMargin,a]),[Ke,Ve]=qe?[qe[2],qe[0]]:[0,0],_e=e.useMemo((()=>{const[e,t]=Array.isArray(h)?h:"number"==typeof h?[h,h]:[ge.current.width,ge.current.height];if(!H.arrows||!Ce.size||!Ce.contentReduce)return[e,t,e,t];const r=2*Ce.size;let n=e,o=t;return"x"===a?n=e-r:"y"===a?o=t-r:"hybrid"===a&&(n=e-r,o=t-r),[n,o,e,t]}),[Ee,ke,a,Ce,ge.current.height,ge.current.width]),Ue="x"===a?_e[0]:_e[1],Ge=e.useMemo((()=>{if(!Y)return[0,0];if("number"==typeof Y){const e=2*Y;return[e,e]}if(Array.isArray(Y)){const[e=0,t]=Y;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[Ae]),Je="x"===a?Ge[0]:Ge[1],Qe=e.useMemo((()=>[_e[0]-Ge[0],_e[1]-Ge[1]]),[Ge.join(),_e[0],_e[1]]),Ze="x"===a?Qe[0]:Qe[1],et=e.useMemo((()=>S?Array.isArray(S)?S:t(S,!0,2):[null,null]),[we]),tt=e.useMemo((()=>{const e=(e,t)=>"number"==typeof e?e:"firstChild"===e?t:0;return[e(et[0]&&"none"!==et[0]&&"size"!==et[0]?et[0]:"y"===a&&"none"!==et[0]||"size"===et[0]?_e[0]:0,be.current.width),e(et[1]&&"none"!==et[1]&&"size"!==et[1]?et[1]:"x"===a&&"none"!==et[1]||"size"===et[1]?_e[1]:0,be.current.height)]}),[et.join(),a,be.current.width,be.current.height,_e.join()]),rt=e.useMemo((()=>{const e="x"===a,t="row"===W,r="column"===W,n=e?_e[1]:_e[0],o=e?tt[1]+De:tt[0]+$e,l="hybrid"===a?o*(We.length+1)-o:n,s=Math.floor(l/o)||1,i=R&&s>=R?"hybrid"===a?Math.ceil(s/R):R:s,c=i>1&&i<We.length?Math.ceil(We.length/i):i>We.length?1:We.length,u=R&&R<We.length,d=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===a){const e=u?t?R:i:t?We.length:1,n=u?r?R:i:r?We.length:1;return[d(e),d(n)]}return[d(i),d(c)]}),[W,De,$e,tt.join(),We.length,a,_e.join(),R]),nt=e.useMemo((()=>{const e=rt[0]?rt[0]*De-De:0,t="x"===a?rt[1]:rt[0];return tt[0]?(tt[0]+De)*t-De:Pe.type?be.current.width+e:ye.current.width}),[a,tt[0],rt.join(),De,ye.current.width,be.current.width,Pe.type]),ot=e.useMemo((()=>{const e=1>rt[1]?1:rt[0]*$e-$e;return tt[1]?"x"===a?(tt[1]+$e)*rt[0]-$e:(tt[1]+$e)*rt[1]-$e:Pe.type?be.current.height+e:ye.current.height}),[a,tt[1],rt.join(),$e,ye.current.height,be.current.height,Pe.type]),lt=e.useMemo((()=>ot+Ye),[ot,Ye]),st=e.useMemo((()=>nt+Xe),[nt,Xe]),it="x"===a?st:lt,ct="x"===a?(null===(K=re.current)||void 0===K?void 0:K.scrollLeft)||0:(null===(V=re.current)||void 0===V?void 0:V.scrollTop)||0,at=ct>1&&!0,ut=it>Math.round(ct+Ue);let dt=!1,mt=!1;"hybrid"===a&&(dt=((null===(_=re.current)||void 0===_?void 0:_.scrollLeft)||0)>1&&!0,mt=Math.round(((null===(U=re.current)||void 0===U?void 0:U.scrollLeft)||0)+_e[0])<st);const ft=e.useMemo((()=>null!=X?X:30),[X]),pt=e.useCallback((({withLimit:e=!0,xSize:t})=>H.progressElement&&it?t?A(e?Qe[0]:_e[0],e?st-Ge[0]:st,ft):A(e?Ze:Ue,e?it-Je:it,ft):0),[ke,it,Ze,Je,Ge[0],Ue,_e[0],Qe[0],st,ft]),ht=e.useMemo((()=>Ue?it-Ue:it),[it,Ue]),gt=e.useMemo((()=>_e[0]?st-_e[0]:st),[st,_e[0]]),yt=e.useCallback((()=>{if(!Pe.type||1>=rt[0])return[];const e=Array.from({length:We.length},((e,t)=>t)),t=Array.from({length:rt[0]},(()=>[])),r="x"===a&&"column"===W||"x"!==a&&"row"===W;return e.forEach((e=>{const n=r?e%rt[0]:Math.floor(e/rt[1]);t[n]&&t[n].push(e)})),t}),[We.length,rt.join(),Pe.type,W,a]),bt=e.useMemo((()=>{if(!Pe.type)return[{elementTop:0,elementBottom:0,left:0,right:0}];let e=[],t=0;if(N){const r=Array.from({length:We.length},((e,t)=>t)),n=Math.abs(Math.floor(We.length/rt[0])*rt[0]-We.length);e=n?r.slice(-n):[],"center"===N?t=(tt[0]+De)*(rt[0]-n)/2:"end"===N&&(t=(tt[0]+De)*(rt[0]-n))}return We.map(((r,n)=>{const o=function(e,t){for(let r=0;r<t.length;r++){const n=t[r].indexOf(e);if(-1!==n)return["x"===a?n:r,["hybrid","y"].includes(a)?n:r]}return[0,0]}(n,yt()),l=e.length>0&&e.includes(n)?t:0,s=function(e){const t="x"===a?l:0;return e>0?t+(tt[1]+$e)*e:t}(rt[0]>1||["hybrid","x"].includes(a)?o[1]:n),i=tt[1]?s+tt[1]:s,c=function(e){const t="x"===a?0:l;return e>0?t+(tt[0]+De)*e:t}(1===rt[0]&&"x"===a?n:o[0]);return{elementTop:s,elementBottom:i,left:c,right:c+tt[0]}}))}),[a,rt[0],tt.join(),$e,De,Pe.type,W,N,yt,We.join()]),vt=e.useMemo((()=>(null==_e?void 0:_e.length)&&C?function(e,t,r,n){const[o,l="start"]="string"==typeof e?[e,e]:e,s={display:"flex"};return t[0]>r&&(s.justifyContent=E(o)),t[1]>n&&(s.alignItems=E(l)),s}(C,_e,st,lt):{}),[C,_e.join(),lt,st]),xt=e.useMemo((()=>[b(st,_e[0]),b(lt,_e[1])]),[st,lt,_e.join()]),Et=e.useMemo((()=>"x"===a?xt[0]:xt[1]),[a,xt[0],xt[1]]),wt=e.useCallback(w(ge,Z),[]),jt=e.useCallback(w(ye,Z,Xe,Ye),[Xe,Ye]),St=e.useCallback(w(be,Z),[]),Rt=e.useCallback(((e,t,r)=>{const n=re.current;return n&&null!==e?function(e,t,r,n,o){return d(this,void 0,void 0,(function*(){if(!t||null==n)return null;const l="y"===e?"scrollTop":"scrollLeft",s=t[l];return s!==n?null===r?(yield function(e){return d(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(t),void(t[l]=n)):void g((()=>{const e=performance.now(),i=()=>{const c=performance.now(),a=r?Math.min((c-e)/r,1):1;t[l]=s+(n-s)*a,1>a&&(o.current=requestAnimationFrame(i))};i()}),r,"smoothScrollBlock","exclusive"):void 0}))}(t,n,se.current?null:r,e,pe):null}),[se.current]),Mt=e.useCallback(((e,t)=>{if(le.current){if(le.current!==We[0])return void(le.current=We[0])}else le.current=We[0];Rt(t,e,Le.duration)}),[We[0],Le.duration,Rt]),kt=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign(Object.assign({margin:z?`${Fe}px ${He}px ${Ie}px ${Be}px`:"",height:et[1]&&"none"!==et[1]?ot+"px":"fit-content",width:et[0]&&"none"!==et[0]?nt+"px":"fit-content"},H.content&&{cursor:"grab"}),M&&!Pe.type&&{gap:`${$e}px ${De}px`}),T&&function(e,t,r,n,o){const l=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=l(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let s,i;return Array.isArray(e)?[s,i]=e:s=i=e,{minWidth:l(s,"x")+"px",minHeight:l(i,"y")+"px"}}(T,a,_e,Xe,Ye)),C&&{flexShrink:0});if(Pe.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=et[1]?"wrap":void 0,r=1===rt[0]?"y"===a?"column":"row":W;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:r,flexWrap:t,justifyContent:E(N)})}),[z,Re,Se,[Fe,He,Ie,Be,Xe,Ye,$e,De].join(),_e.join(),Me,et[1],ot,nt,H.content,Me,Pe.type,a,rt[0],W,N]),Ot=e.useCallback((e=>{if(!B)return;const t=()=>((e,t,r)=>{e&&e.querySelectorAll(".ms-bar").forEach(((e,t)=>{const n=e;["mouseleave","mouseup","touchend"].includes(r.type)?(n.style.opacity="0",n.classList.remove("hover"),n.classList.add("leave"),g((()=>n.classList.remove("leave")),200)):(n.style.opacity="1",n.classList.add("hover"))}))})(te.current,0,e);"mouseleave"===e.type?!["thumb","slider","wrapp"].includes(ie.current)&&t():t()}),[B]),At=e.useCallback(((e,t="mousedown",r)=>{var n;const o=e||("scroll"===i?"thumb":"slider");if("wrapp"===e&&!H.content||["thumb","slider"].includes(o)&&!H.progressElement)return;x(i,ee.current,oe);let l=null;r&&(l=null===(n=r.closest(".ms-bar"))||void 0===n?void 0:n.getAttribute("data-direction")),k({eventType:t,scrollElementRef:re.current,objectsWrapperRef:ne.current,scrollBar:r||null,clickedObject:ie,scrollContentRef:te.current,scrollStateRef:ae.current,type:i,scrollBarOnHover:B,mouseOnRefHandle:Ot,triggerUpdate:Z,direction:a,smoothScroll:Rt,sizeLocal:[_e[0],_e[1]],clicked:o,numForSliderRef:de,prevCoordsRef:me,thumbSize:pt("x"===l?{xSize:!0}:{}),axisFromAtr:l,duration:Le.duration,scrollBarEdge:Ge,rafID:pe})}),[a,i,H.content,H.progressElement,_e.join(),pt({}),pt({xSize:!0}),Le.duration,Rt,Ot,B,Ge.join()]),Lt=e.useCallback((e=>{At(null,e.type,e.target)}),[At]),zt=e.useCallback((e=>{re.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:l,loop:s})=>{const i=r[0],c=r[1],a=["top","bottom"].includes(e)?c:i,u=t.scrollTop,d=t.scrollLeft,m=t=>{o(t,["top","bottom"].includes(e)?"y":"x",l)};switch(e){case"top":u>0?m(u-n[1]):s&&m(a);break;case"left":d>0?m(d-n[0]):s&&m(a);break;case"right":d+n[0]<i?m(d+n[0]):s&&m(0);break;case"bottom":u+n[1]<c?m(u+n[1]):s&&m(0)}})({arrowType:e,scrollElement:re.current,wrapSize:[st,lt],scrollSize:_e,smoothScroll:Rt,duration:Le.duration,loop:Ce.loop})}),[_e.join(),st,lt,Le.duration,Rt,Ce.loop]),Tt=e.useCallback((()=>{if(!_e[0]||!_e[1])return;x(i,ee.current,oe);const e=re.current;te.current&&e&&0!==oe.current.length&&g((()=>((e,t,r,n)=>{var o,l,s,i;const c=null!==(l=null===(o=t[0])||void 0===o?void 0:o.querySelectorAll(".ms-slider-element"))&&void 0!==l?l:[],a=null!==(i=null===(s=t[1])||void 0===s?void 0:s.querySelectorAll(".ms-slider-element"))&&void 0!==i?i:[];function u(e,t,r,n){const o="x"===n?r.scrollLeft:r.scrollTop;e.forEach(((e,r)=>{const l="x"===n?t[0]:t[1];o>=l*r&&l*(r+1)>o?e.classList.add("active"):e.classList.remove("active")}))}c.length>0&&u(c,r,e,n),a.length>0&&u(a,r,e,"x")})(e,oe.current,_e,a)),33)}),[_e.join(),a,re,te,i]),Ct=e.useCallback((()=>{ee.current&&((e,t,r,n)=>{var o,l;const{allIds:s,emptyKeysRaw:i}=(()=>{const t=[],r=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(O)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let o=n.nextNode();for(;o;){const e=o,l=e.getAttribute(O);l&&(t.push(l),0===e.children.length&&r.push(l)),o=n.nextNode()}return{allIds:t,emptyKeysRaw:r}})(),c=new Set(null===(o=t.current)||void 0===o?void 0:o.loaded);s.forEach((e=>c.add(e)));let a=null;if(null===(l=t.current)||void 0===l?void 0:l.empty){const e=new Set(t.current.empty);i.forEach((t=>e.add(t))),a=Array.from(e)}t.current={loaded:"lazy"===n?Array.from(c):s.map((e=>e)),empty:a},r()})(ee.current,ce,Z,Pe.type)}),[xe]),Nt=e.useCallback((e=>{(null==D?void 0:D.clickTrigger)&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,l=e.target;if(!l.closest(n))return;const s=l.closest(`[${O}]`);s&&s.classList.add("remove"),g((()=>{s&&s.classList.remove("remove"),r()}),o)})(e,D.clickTrigger,Ct)}),[je,Ct]),Wt=e.useCallback((()=>{g((()=>{const e=ee.current,t=re.current;e&&t&&(null==f||f(t.scrollLeft,t.scrollTop),ue.current=!0,null==p||p(!0),g((()=>{ue.current=!1,null==p||p(!1),Ct()}),200),"scroll"!==i&&Tt(),requestAnimationFrame(Z))}),6)}),[f,p,i,Tt,Ct]),Ft=L(ct,ht,Ze,pt({})),Ht=L((null===(G=re.current)||void 0===G?void 0:G.scrollLeft)||0,gt,Qe[0],pt({xSize:!0})),It=e.useCallback((e=>{const t="object"==typeof H.wheel&&"string"==typeof H.wheel.changeDirectionKey?H.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==a||fe.current||(e.stopPropagation(),fe.current=!0,Z())}),[a,JSON.stringify(H.wheel)]),Bt=e.useCallback((e=>{fe.current&&(e.stopPropagation(),fe.current=!1,Z())}),[]);e.useEffect((()=>{(D||Pe.type)&&(D||null===ce.current.empty||(ce.current.empty=null),Ct())}),[je,Pe.type,Ct]),e.useEffect((()=>{if(matchMedia("(pointer: coarse)").matches)return;const e=re.current;if(!e)return;const t="hybrid"===a&&"object"==typeof H.wheel&&H.wheel.changeDirection?"x":a,r="hybrid"===a&&ot+Ye<=_e[1]||fe.current?["hybrid","y"].includes(t)?"x":"y":t,n=e=>{e.preventDefault(),function(e,t,r){const n=e.target.closest(".ms-element");n.matches(":focus")||n.focus(),t.animating||(t.targetScrollX=n.scrollLeft,t.targetScrollY=n.scrollTop),"x"===r?t.targetScrollX=v(t.targetScrollX+e.deltaY,0,n.scrollWidth-n.clientWidth+2):t.targetScrollY=v(t.targetScrollY+e.deltaY,0,n.scrollHeight-n.clientHeight+2),t.animating||(t.animating=!0,t.animationFrameId=requestAnimationFrame((function e(){let o=0;"x"===r?(n.scrollLeft+=.4*(t.targetScrollX-n.scrollLeft),o=Math.abs(n.scrollLeft-t.targetScrollX)):(n.scrollTop+=.4*(t.targetScrollY-n.scrollTop),o=Math.abs(n.scrollTop-t.targetScrollY)),o>2.5?t.animationFrameId=requestAnimationFrame(e):(t.animating=!1,null!==t.animationFrameId&&(cancelAnimationFrame(t.animationFrameId),t.animationFrameId=null))})))}(e,ae.current,r)};return H.wheel&&e.addEventListener("wheel",n,{passive:!1}),()=>{e.removeEventListener("wheel",n)}}),[a,ke,ot,_e[1],Ye,fe.current]),e.useEffect((()=>{Le.value&&("hybrid"===a?["x","y"]:[a]).forEach((e=>{const t="x"===e?0:1;"end"===Le.value[t]&&Mt(e,"x"===e?gt:ht)}))}),[a,Le.value.join(),ve,ht,gt,st,lt]),e.useEffect((()=>{Le.value&&("hybrid"===a?["x","y"]:[a]).forEach((e=>{const t="x"===e?0:1,r=Le.value[t];"number"==typeof r&&Mt(e,r)}))}),[ve,Le.updater,a,Mt,Le.value.join()]),e.useEffect((()=>{const e=ae.current.animationFrameId;return(Pe.type||p)&&p&&(p(!1),Z()),requestAnimationFrame((()=>se.current=!1)),()=>{e&&cancelAnimationFrame(e),y()}}),[]),e.useEffect((()=>{const e=re.current;if(!e)return;const t=window.matchMedia("(pointer: coarse)").matches?"touchstart":"mousedown";if("touchstart"===t&&"slider"!==i)return;const r=t=>{"touchstart"===t.type?e.style.touchAction="none":e.style.touchAction&&e.style.removeProperty("touch-action"),t.preventDefault(),At("wrapp",t.type)};return e.addEventListener(t,r,{passive:!1}),()=>{e.removeEventListener(t,r),e.style.removeProperty("touch-action")}}),[i]),e.useEffect((()=>{"scroll"!==i&&Tt()}),[_e.join()]);const Yt=e.useCallback(((t,r,n,o)=>{const l=Object.assign({width:tt[0]?tt[0]+"px":void 0,height:tt[1]?tt[1]+"px":void 0},Pe.type&&Object.assign({position:"absolute",top:r+"px",left:n+"px"},!tt[0]&&1===rt[0]&&{transform:"translateX(-50%)"})),s=P?e.createElement(e.Suspense,{fallback:q},o):o;return e.createElement("div",Object.assign({key:t},Pe.type||D?{[O]:""+t}:{},{className:"ms-object-box",style:l,onClick:Nt}),s)}),[P,!!q,tt.join(),xe,je,rt[0],Nt,Pe.type]),Xt=e.useMemo((()=>[{positionType:"x"===a?"left":"top",visibility:at},{positionType:"x"===a?"right":"bottom",visibility:ut},..."hybrid"===a?[{positionType:"left",visibility:dt},{positionType:"right",visibility:mt}]:[]]),[at,ut,a,dt,mt]),$t=e.useMemo((()=>({width:_e[2]+"px",height:_e[3]+"px"})),[_e]),Dt=e.useMemo((()=>[{shouldRender:pt({withLimit:!1})<Ue,direction:a,thumbSize:pt({}),thumbSpace:Ft,objLengthPerSize:Et,progressReverseIndex:0},{shouldRender:"hybrid"===a&&pt({withLimit:!1,xSize:!0})<Qe[0],direction:"x",thumbSize:pt({xSize:!0}),thumbSpace:Ht,objLengthPerSize:xt[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))),[pt,Ze,a,Qe[0],Ft,Ht,Et,xt]),Pt=e.useMemo((()=>{const e={position:"relative",width:_e[0]+"px",height:_e[1]+"px"};return H.arrows&&Ce.contentReduce&&Ce.size&&("x"===a?e.left=Ce.size+"px":"y"===a?e.top=Ce.size+"px":(e.top=Ce.size+"px",e.left=Ce.size+"px")),e}),[_e,ke,Ce,a]),qt=e.useMemo((()=>{var e;return null!==(e={x:st>_e[0]?"scroll hidden":"hidden",y:lt>_e[1]?"hidden scroll":"hidden",hybrid:`${st>_e[0]?"scroll":"hidden"} ${lt>_e[1]?"scroll":"hidden"}`,hide:"hidden"}[H.wheel||H.content?a:"hide"])&&void 0!==e?e:"hidden"}),[st,lt,_e,ke,a]),Kt=e.useMemo((()=>F?Xt.map((({positionType:t,visibility:r})=>e.createElement(c,{key:"edge-"+t,edgeGradient:Te,visibility:r,edgeType:t}))):null),[F,Xt,Te]),Vt=e.useMemo((()=>H.arrows?Xt.map((({positionType:t,visibility:r})=>e.createElement(u,{key:"arrow-"+t,activity:r,arrows:Ce,arrowType:t,handleArrow:zt,size:"hybrid"===a?_e[0]+2*Ce.size:_e[0]}))):null),[H.arrows,Xt,Ce,zt,_e[0],a,ue.current]),_t=e.useMemo((()=>H.progressElement&&!0!==H.progressElement?Dt.map((t=>{const r="boolean"==typeof I?I:I[t.progressReverseIndex];return e.createElement(s,{key:t.direction+"",type:i,direction:t.direction,progressReverse:r,size:Qe,progressTrigger:H,scrollBarOnHover:B,scrollBarEvent:"sliderMenu"===i?Rt:Lt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Tt,duration:Le.duration})})):null),[H.progressElement,Dt,i,I,Qe,H,B,Rt,Lt,Tt,Le.duration]),Ut=e.createElement("div",{className:"ms-objects-wrapper",ref:ne,style:kt},We.map(((t,r)=>{var o,s,i;const c=e.Children.toArray(l).find((r=>e.isValidElement(r)&&r.key===t)),u=Pe.stopLoadOnScroll&&ue.current&&!ce.current.loaded.includes(""+t)?q:(null===(o=ce.current.empty)||void 0===o?void 0:o.includes(t))?"object"==typeof(null==D?void 0:D.mode)?D.mode.fallback:q:c,d="number"==typeof et[0]&&"number"==typeof et[1]||"firstChild"!==et[0]&&"firstChild"!==et[1]||0!==r?u:e.createElement(n,{onResize:St},u);if(!Pe.type)return Yt(t,0,0,d);{const{elementTop:e,elementBottom:n,left:o,right:l}=bt[r],c="x"===a?Ke:Ve,u=Ue+c>("x"===a?o:e)-ct&&("x"===a?l:n)-ct>0-c,m="hybrid"!==a||_e[0]+Ke>o-((null===(s=re.current)||void 0===s?void 0:s.scrollLeft)||0)&&l-((null===(i=re.current)||void 0===i?void 0:i.scrollLeft)||0)>0-Ke;if(u&&m)return Yt(t,e,o,d)}}))),Gt=e.createElement("div",{"morph-scroll":`〈♦${J}〉`,className:r,ref:ee,style:$t},e.createElement("div",{className:"ms-content",ref:te,onMouseEnter:Ot,onMouseLeave:Ot,onTouchStart:Ot,onTouchEnd:Ot,style:Pt},e.createElement("div",{className:"ms-element",ref:re,onScroll:Wt,onKeyDown:It,onKeyUp:Bt,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},vt),{overflow:qt}),"scroll"!==i||"boolean"!=typeof H.progressElement||!1===H.progressElement?{scrollbarWidth:"none"}:{})},tt[0]&&tt[1]?Ut:e.createElement(n,{onResize:jt,style:vt},Ut)),Kt,_t),Vt);return"auto"===h?e.createElement(n,{measure:"outer",onResize:wt},Gt):Gt};z.displayName="MorphScroll";const T={MorphScroll:z,ResizeTracker:n,IntersectionTracker:r};exports.IntersectionTracker=r,exports.MorphScroll=z,exports.ResizeTracker=n,exports.default=T;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");const t=(e,t=!1,r)=>{let n=[];if(n=Array.isArray(e)?2===e.length?[e[1],e[0],e[1],e[0]]:[...e]:[e,e,e,e],t&&(n=[n[1],n[0],n[3],n[2]]),r){const e=[];for(let t=0;r>t;t++)e.push(n[t%4]);n=e}return n},r=({className:r,children:n,style:o,root:l,threshold:i,rootMargin:s,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),f=e.useRef(null),m=e.useMemo((()=>{if(!s)return"";const e=t(s);return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px`}),[s]),h=e.useCallback((([e])=>{d(e.isIntersecting),a&&a({time:e.time,rootBounds:e.rootBounds,boundingClientRect:e.boundingClientRect,intersectionRect:e.intersectionRect,isIntersecting:e.isIntersecting,intersectionRatio:e.intersectionRatio,target:e.target})}),[a]);return e.useEffect((()=>{const e=new IntersectionObserver(h,{root:l,threshold:i,rootMargin:m});return f.current&&e.observe(f.current),()=>{e.disconnect()}}),[h,l,i,m]),e.createElement("div",{"intersection-tracker":"",className:r,ref:f,style:o},c||u?n:null)};r.displayName="IntersectionTracker";const n=({className:t,children:r,style:n,measure:o="inner",onResize:l})=>{const i=e.useRef(null);e.useEffect((()=>{const e=i.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)l&&l(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,l]);const s={width:"max-content",height:"max-content"},c={inner:Object.assign({},s),outer:Object.assign({},{width:"100%",height:"100%"}),all:Object.assign({minWidth:"100%",minHeight:"100%"},s)};return e.createElement("div",{"resize-tracker":"",className:t,ref:i,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};n.displayName="ResizeTracker";let o=1;function l(e,t=0,r=1/0){return Math.max(t,Math.min(Math.round(e),r))}const i="wrap-id";function s(e,t,r,n){t.matches(":focus")||t.focus(),r.animating||(r.targetScrollX=t.scrollLeft,r.targetScrollY=t.scrollTop),"x"===n?r.targetScrollX=l(r.targetScrollX+e.deltaY,0,t.scrollWidth-t.clientWidth+2):r.targetScrollY=l(r.targetScrollY+e.deltaY,0,t.scrollHeight-t.clientHeight+2),r.animating||(r.animating=!0,r.animationFrameId=requestAnimationFrame((function e(){let o=0;"x"===n?(t.scrollLeft+=.4*(r.targetScrollX-t.scrollLeft),o=Math.abs(t.scrollLeft-r.targetScrollX)):(t.scrollTop+=.4*(r.targetScrollY-t.scrollTop),o=Math.abs(t.scrollTop-r.targetScrollY)),o>2.5?r.animationFrameId=requestAnimationFrame(e):("x"===n?t.scrollLeft=r.targetScrollX:t.scrollTop=r.targetScrollY,r.animating=!1,null!==r.animationFrameId&&(cancelAnimationFrame(r.animationFrameId),r.animationFrameId=null))})))}const c=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:l,scrollBarOnHover:i,scrollBarEvent:c,thumbSize:a,thumbSpace:u,objLengthPerSize:d,sliderCheckLocal:f,duration:m,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v})=>{const x=e.useRef(null),w=e.useRef(null),j=["hybrid","y"].includes(r)?"y":"x",E=Math.abs(v.current[j])*(a/200),S=a-E,M=0>v.current[j]?u+E:u,R=e.useMemo((()=>{if("scroll"===t)return;const r="x"===j?o[0]:o[1];return Array.from({length:d},((n,o)=>e.createElement("div",{key:o,className:"ms-slider-element",style:Object.assign({},"sliderMenu"===t&&{cursor:"pointer"}),onClick:"sliderMenu"===t?()=>{c(r*o,j,m,f)}:void 0},Array.isArray(null==l?void 0:l.progressElement)?l.progressElement[o]:null==l?void 0:l.progressElement)))}),[d,o,t,c,null==l?void 0:l.progressElement,m,f]),k=e.useMemo((()=>["hybrid","y"].includes(r)?"y":"x"),[r]);e.useEffect((()=>{if(h||!(null==l?void 0:l.wheel))return;const e=x.current;if(!e)return;let t=e.previousElementSibling;for(;t&&!t.classList.contains("ms-element");)t=t.previousElementSibling;const r=e=>{s(e,g.current,p.current,k)};return e.addEventListener("wheel",r),()=>e.removeEventListener("wheel",r)}),[k]),e.useEffect((()=>{const e=x.current;if(!e||"sliderMenu"===t)return;const r=e=>{c(e)};return e.addEventListener("pointerdown",r),()=>{e.removeEventListener("pointerdown",r)}}),[c]),e.useEffect((()=>{const e=x.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[a]);const O=Object.assign({position:"absolute"},i&&{opacity:0,transition:"opacity 0.2s ease-in-out"}),A="x"===k?o[0]:o[1],L="scroll"!==t?"":a+2*u>A?"flex-end":"flex-start";return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+k,ref:x,"data-direction":k,style:Object.assign(Object.assign(Object.assign({},O),{width:"fit-content",height:A+"px"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%"},n?{top:0,transform:"rotate(-90deg) translate(-100%, -50%)"}:{transform:"rotate(-90deg) translateY(-50%)"}):Object.assign({top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},e.createElement("div",{className:"ms-thumb",ref:w,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${M}px)`},(null==l?void 0:l.progressElement)&&{cursor:"grab"}),{display:"flex",alignItems:L})},null==l?void 0:l.progressElement)):d>1&&(null==l?void 0:l.progressElement)&&e.createElement("div",{className:"ms-slider ms-"+k,ref:x,"data-direction":k,style:Object.assign(Object.assign(Object.assign(Object.assign({},O),{display:"flex"}),"slider"===t&&{cursor:"grab"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%",transform:"translateX(-50%)"},n?{top:0}:{bottom:0}):Object.assign({flexDirection:"column",top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},R))};c.displayName="ScrollBar";const a=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const l=Object.assign(Object.assign(Object.assign({position:"absolute",[n]:0,pointerEvents:"none",transition:"opacity 0.2s ease-in-out","--edge-visibility":r?1:0,opacity:"var(--edge-visibility)"},t.color&&{background:t.color&&`linear-gradient(${["left","right"].includes(n)?"270deg, ":""}${t.color}, transparent)`}),["left","right"].includes(n)?{height:"100%",width:t.size+"px",top:0}:{width:"100%",height:t.size+"px",left:0}),"left"===n?{transform:"scaleX(-1)"}:"bottom"===n?{transform:"scaleY(-1)"}:{}),i=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:i,style:l})};a.displayName="Edge";var u=e.memo(a);const d=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:l})=>{const i=e.useRef(null),s=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex",justifyContent:"center",alignItems:"center",cursor:"pointer",width:r.size+"px"},n?{[n]:0}:{}),"top"===n&&{transform:"rotate(-90deg) translateX(-100%)",transformOrigin:"left top"}),"bottom"===n&&{transform:"rotate(90deg) translateX(-100%)",transformOrigin:"left bottom"}),"left"===n&&{transform:"scaleX(-1)"}),["top","bottom"].includes(n)?{height:l+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=i.current;if(!e)return;const t=()=>o(n);return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}),[o,n]),e.createElement("div",{className:`ms-arrow-box ${n}${t?" active":""}`,ref:i,style:s},r.element)};d.displayName="Arrow";var f=e.memo(d);let m=0;const h={tasks:[],timer:null,running:new Set},p=new Map,g={scheduleNext(){if(null!==h.timer&&(clearTimeout(h.timer),h.timer=null),0===h.tasks.length)return;const e=h.tasks[0],t=Math.max(0,e.runAt-performance.now());h.timer=window.setTimeout((()=>{h.timer=null;const e=performance.now(),t=[];for(;h.tasks.length&&h.tasks[0].runAt<=e&&!h.running.has(h.tasks[0].id);)t.push(h.tasks.shift());t.forEach((e=>{h.running.add(e.id);try{e.callback()}finally{h.running.delete(e.id)}})),g.scheduleNext()}),t)},clearAll(){null!==h.timer&&(clearTimeout(h.timer),h.timer=null),h.tasks=[],h.running.clear()}},y=(e,t,r,n)=>{const o=r||"task_"+m++;if(0===t)return e(),o;const l=n||"default",i=performance.now()+t;if("exclusive"===l){if(h.running.has(o)||h.tasks.some((e=>e.id===o)))return o;h.running.add(o);try{e()}finally{const e=window.setTimeout((()=>{h.running.delete(o),p.delete(o)}),t);p.set(o,e)}return o}r&&(h.tasks=h.tasks.filter((e=>e.id!==o)));const s={id:o,runAt:i,callback:()=>{h.running.add(o);try{e()}finally{h.running.delete(o)}}};return function(e,t){let r=0,n=e.length;for(;n>r;){const o=r+n>>1;e[o].runAt<t.runAt?r=o+1:n=o}e.splice(r,0,t)}(h.tasks,s),g.scheduleNext(),o},b=e=>{if(!e)return g.clearAll(),p.forEach((e=>clearTimeout(e))),void p.clear();(Array.isArray(e)?e:[e]).forEach((e=>{h.running.delete(e);const t=p.get(e);void 0!==t&&(clearTimeout(t),p.delete(e)),h.tasks=h.tasks.filter((t=>t.id!==e)),0===h.tasks.length?g.clearAll():g.scheduleNext()}))},v=(e,t)=>{if(!e)return;const r=window.matchMedia("(pointer: coarse)").matches;if("start"===t){if(!r){let e=document.getElementById("ms-cursor-lock");e||(e=document.createElement("style"),e.id="ms-cursor-lock",e.textContent="\n * {\n cursor: grabbing !important;\n }\n ",document.head.appendChild(e))}e.style.cursor="grabbing",e.classList.add("active")}else{if(!r){const e=document.getElementById("ms-cursor-lock");e&&e.remove()}e.style.cursor="grab",e.classList.remove("active")}},x=e=>{if(e.hasAttribute("data-mouse-hover"))return;const t=e.getAttribute("data-direction");e.style.opacity="0",e.classList.remove("hover"),e.classList.add("leave"),b("remove"+t),y((()=>e.classList.remove("leave")),200,"remove"+t)},w=e=>{e.style.opacity="1",e.classList.add("hover")},j=function(){let e=null,t=0;const r=new Map,n=()=>{r.forEach(((e,t)=>{e()||r.delete(t)})),e=0!==r.size?requestAnimationFrame(n):null};return{start:(o,l)=>{const i=null!=l?l:++t;return r.delete(i),r.set(i,o),null===e&&(e=requestAnimationFrame(n)),i},stop:t=>{void 0!==t?(r.delete(t),0===r.size&&null!==e&&(cancelAnimationFrame(e),e=null)):(r.clear(),null!==e&&(cancelAnimationFrame(e),e=null))},isRunning:e=>void 0===e?r.size>0:r.has(e)}}(),E=(e,t,r)=>{const n=e.current[t],o=performance.now();j.start((()=>{const l=performance.now(),i=Math.min((l-o)/140,1);return 1>i?(e.current[t]=n*(1-i),r(),!0):(e.current[t]=0,r(),!1)}))};let S,M={x:0,y:0},R={x:0,y:0},k={x:0,y:0,t:0,distX:0,distY:0},O=null;const A=(e,t,r,n="start")=>{e&&(["thumb","slider"].includes(e)?v("slider"===e?null==t?void 0:t.closest(".ms-slider"):t,n):"wrapp"===e&&v(r,n))},L=(e,t,r,n)=>{var o,i;const s=n.scrollElementRef;if(!s)return;const c={x:n.event.clientX,y:n.event.clientY};if(!c)return;const a=(e,t,r)=>{if(0===e)return 0;const o="x"===t?n.sizeLocal[0]:n.sizeLocal[1],i=.14*Math.max(600,o),s=Math.abs(e);return l(e*i/(i+(r?-s:s)),-150,150)};if(!O)return void(O={x:{value:c.x,leftover:0,raw:a(n.overscrollRef.current.x,"x",!0)},y:{value:c.y,leftover:0,raw:a(n.overscrollRef.current.y,"y",!0)}});const u=O,d={x:c.x-u.x.value,y:c.y-u.y.value},f=Math.abs(M[e]);if(f>2?n.isDraggingRef.current=!0:3>f&&(M[e]+=d[e]),n.isTouched){const e=performance.now();if(k.t){const t=Math.max(e-k.t,8);k={x:.8*k.x+d.x/t*.2,y:.8*k.y+d.y/t*.2,t:e,distX:(null!==(o=k.distX)&&void 0!==o?o:0)+Math.abs(d.x),distY:(null!==(i=k.distY)&&void 0!==i?i:0)+Math.abs(d.y)}}else k.t=e}const m="wrapp"===n.clickedObject.current?-d[e]:d[e],h="y"===e?"scrollTop":"scrollLeft",p="x"===e?0:1;if("thumb"===n.clickedObject.current&&"slider"!==n.type)return void((e,t,r,n,o)=>{if(!t.scrollElementRef||!t.objectsWrapperRef)return;const i=t.scrollElementRef,s=r*o+n,c=Math.trunc(s);if(O&&(O[e].leftover=s-c),"x"===e){const e="number"==typeof t.scrollStateRef.targetScrollX?t.scrollStateRef.targetScrollX:i.scrollLeft,r=i.scrollWidth-i.clientWidth;t.scrollStateRef.targetScrollX=l(e+c,0,r)}else{const e="number"==typeof t.scrollStateRef.targetScrollY?t.scrollStateRef.targetScrollY:i.scrollTop,r=i.scrollHeight-i.clientHeight;t.scrollStateRef.targetScrollY=l(e+c,0,r)}i.scrollLeft!==t.scrollStateRef.targetScrollX&&(i.scrollLeft=t.scrollStateRef.targetScrollX),i.scrollTop!==t.scrollStateRef.targetScrollY&&(i.scrollTop=t.scrollStateRef.targetScrollY)})(e,n,m,u[e].leftover,t);if("slider"===n.type&&(R[e]+=m),"wrapp"===n.clickedObject.current){const t=r[p];if(!Number.isFinite(t)||0===t)return void(O=null);const o=O[e];if(0!==o.raw){o.raw+=.6*d[e],n.overscrollRef.current[e]=a(o.raw,e),n.triggerUpdate();const t=o.raw-.6*d[e];return Math.sign(o.raw)!==Math.sign(t)?(o.raw=0,n.overscrollRef.current[e]=0,void n.triggerUpdate()):void 0}s[h]+=m/t;const l="x"===e?n.maxTopOrLeft[0]:n.maxTopOrLeft[1];return 0>=s[h]&&d[e]>0||s[h]>=l&&0>d[e]?(o.raw+=d[e],n.overscrollRef.current[e]=a(o.raw,e),void n.triggerUpdate()):void 0}const g=s[h];if(n.sliderElSize&&Math.abs(R[e])<n.sliderElSize["x"===e?0:1])return;const y=t=>{const r=s["x"===e?"clientWidth":"clientHeight"]+n.gap[p];return r*(Math.floor(Math.max(0,g)/r)+t)},b=m>0&&g+n.sizeLocal[p]<n.wrapElWH[p]?y(1):0>m&&g>0?y(-1):null;R[e]=0,n.smoothScroll(b,e,10)};function z(e){j.stop(),["x","y"].forEach((t=>{e.rafScrollAnim.cancel(),b("smoothScrollBlock"+t)}));const t=e.scrollElementRef;if(!t)return;e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop,k={x:0,y:0,t:0,distX:0,distY:0};let r=[],n=[],o=[],i=[],s=[];if("thumb"===e.clickedObject.current){const l=getComputedStyle(e.objectsWrapperRef),i=e=>{const t=e=>parseFloat(e);return"x"===e?t(l.marginLeft)+t(l.marginRight):t(l.marginTop)+t(l.marginBottom)};r=[i("x"),i("y")],n=[t.clientWidth,t.clientHeight],o=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]}"slider"===e.type&&(i=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]),["scroll","slider"].includes(e.type)&&(s=function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(t));let c=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,l=(n[t]-e.scrollBarEdge[t]-e.thumbSize)*s[t],i=o[t]+r[t]-n[t];c=i/l,Number.isFinite(c)&&c>0||(c=1)}A(e.clickedObject.current,e.target,t),null==S||S.abort();const a=new AbortController;S=a;const{signal:u}=a;document.addEventListener("pointermove",(t=>{(t=>{var l;let a;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(l=e.target)||void 0===l?void 0:l.closest(".ms-slider");if(!t)return;const r=r=>{const n=t.getBoundingClientRect();return Math.round(("x"===r?n.width:n.height)/e.objLengthPerSize["x"===r?0:1])};a=[r("x"),r("y")]}const u=[e.objectsWrapperSize[0]-e.sizeLocal[0],e.objectsWrapperSize[1]-e.sizeLocal[1]];!function(e){const t=e.direction||"y";"hybrid"===t?["wrapp","slider"].includes(e.clickedObject.current)?["x","y"].forEach((t=>L(t,e.thumbRatio,e.visualDiff,e))):e.axisFromAtr&&L(e.axisFromAtr,e.thumbRatio,e.visualDiff,e):L(e.axisFromAtr?e.axisFromAtr:t,e.thumbRatio,e.visualDiff,e);const r={x:e.event.clientX,y:e.event.clientY};O&&(O.x.value=r.x,O.y.value=r.y)}(Object.assign(Object.assign({},e),{event:t,fullMargin:r,scrollElementWH:n,objectsWrapperWH:o,wrapElWH:i,visualDiff:s,thumbRatio:c,maxTopOrLeft:u,sliderElSize:a}))})(t)}),{signal:u});const d=t=>{e.isDraggingRef.current=!1,function(e){null==S||S.abort();const t=e.scrollElementRef;if(t){if(A(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=R,n=(r,n)=>{const o="x"===r,l=t[o?"scrollLeft":"scrollTop"],i=o?e.gap[0]:e.gap[1],s=t[o?"clientWidth":"clientHeight"]+i,c=Math[n?n>0?"floor":"ceil":"round"](l/s)+(null!=n?n:0);e.smoothScroll(s*c,r,e.duration)},o=(e,t)=>{Math.abs(t)>20?n(e,t>0?1:-1):n(e)};0===r.x&&0===r.y?"hybrid"===e.direction?["x","y"].forEach((e=>o(e,r[e]))):o(e.direction,r[e.direction]):Object.entries(r).forEach((([e,t])=>{0!==t&&o(e,t)}))}if(e.isTouched&&"scroll"===e.type&&"slider"!==e.clickedObject.current){const r=r=>{const n=k[r]*e.thumbRatio,o="x"===r?k.distX:k.distY;80>performance.now()-k.t&&Math.abs(n)>.05&&o>12&&function({el:e,axis:t,velocity:r,rafSchedule:n}){const o=Math.sign(r);let i=Math.abs(r);i=Math.pow(i,.92),.2>i&&(i=.2),r=i*o;const s="y"===t?"scrollTop":"scrollLeft",c="y"===t?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth;let a=performance.now();const u=()=>{const t=performance.now(),o=t-a;if(a=t,.02>Math.abs(r*=Math.exp(-.0025*o)))return;let i=e[s]+r*o;(0>i||i>c)&&(r*=.4,i=l(i,0,c)),e[s]=i,n(u)};n(u)}({el:t,axis:r,velocity:"thumb"===e.clickedObject.current?n:-n,rafSchedule:e.rafScrollAnim.schedule})};"hybrid"===e.direction?"wrapp"===e.clickedObject.current?["x","y"].forEach((e=>r(e))):r(e.axisFromAtr):r(e.axisFromAtr?e.axisFromAtr:e.direction)}O=null,0!==e.overscrollRef.current.x&&E(e.overscrollRef,"x",e.triggerUpdate),0!==e.overscrollRef.current.y&&E(e.overscrollRef,"y",e.triggerUpdate),e.clickedObject.current=null,k={x:0,y:0,t:0,distX:0,distY:0},M={x:0,y:0},R={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:c}))};document.addEventListener("pointerup",d,{signal:u}),document.addEventListener("pointercancel",d,{signal:u})}function T(e,t,r,n){return new(r||(r=Promise))((function(o,l){function i(e){try{c(n.next(e))}catch(e){l(e)}}function s(e){try{c(n.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}c((n=n.apply(e,t||[])).next())}))}function C(e,t){return e>t?Math.floor(e/t):1}"function"==typeof SuppressedError&&SuppressedError;const F=new WeakMap,W=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function N(e,t,r=0,n=0){return o=>{var l,i,s,c;let a=!1;const u={width:(null!==(l=o.width)&&void 0!==l?l:0)-r,height:(null!==(i=o.height)&&void 0!==i?i:0)-n},d=0===u.width&&0===u.height;d&&!a&&(a=!0),(null===(s=e.current)||void 0===s?void 0:s.width)===u.width&&(null===(c=e.current)||void 0===c?void 0:c.height)===u.height||d&&a||(e.current=u,t())}}const I=()=>{var e,t;return"undefined"!=typeof window&&null!==(t=null===(e=window.matchMedia)||void 0===e?void 0:e.call(window,"(pointer: coarse)").matches)&&void 0!==t&&t};function H(e,t,r){return t?l(Math.round(e/t*e),r,e):0}function Y(e,t,r,n){return t?l(e/t*(r-n),0,r-n):0}function X(){let e=null;const t=new Set;return{schedule:r=>{t.add(r),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t);t.clear(),r.forEach((e=>e()))})))},cancel:()=>{null!==e&&(cancelAnimationFrame(e),e=null,t.clear())}}}const $=t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap($):[r]}return[t]},B=({className:r,children:l,type:a="scroll",direction:d="y",scrollPosition:m,onScrollValue:h,isScrolling:p,size:g,objectsSize:v,crossCount:j,gap:E,wrapperMargin:S,wrapperMinSize:M,wrapperAlign:R,elementsAlign:k,elementsDirection:O="row",edgeGradient:A,progressTrigger:L={wheel:!0},progressReverse:B=!1,scrollBarOnHover:P=!1,scrollBarEdge:D,thumbMinSize:V,render:q,emptyElements:U,suspending:_=!1,fallback:K})=>{var G,Z,J,Q,ee,te;const re=function(){const[,t]=e.useState({});return e.useCallback((()=>{t({})}),[])}(),ne=function(){const t=e.useRef(null);return null===t.current&&(t.current=""+o++),t.current}(),oe=X(),le=()=>oe.schedule(re),ie=X();if(!g)throw Error('prop "size" is not provided\n morph-scroll '+ne);Object.keys(L).length;const se=e.useRef(null),ce=e.useRef(null),ae=e.useRef(null),ue=e.useRef(null),de=e.useRef(new Set),fe=e.useRef(I()),me=e.useRef(!0),he=e.useRef(null),pe=e.useRef({loaded:new Set,empty:new Set}),ge=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),ye=e.useRef(!1),be=e.useRef(!1),ve=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(l,i){const s=l-t,c=i-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=l),Math.abs(c)>e&&(o=c>0?"down":"up",r=i)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),xe=e.useRef({x:null,y:null}),we=e.useRef({x:0,y:0}),je=e.useRef(!1);function Ee(){return e.useRef({width:0,height:0})}const Se=Ee(),Me=Ee(),Re=Ee(),[ke,Oe,Ae,Le,ze,Te,Ce,Fe,We,Ne,Ie]=function(...t){const r=new WeakMap,n=t=>{if(null===t)return 1;if("boolean"==typeof t)return t?2:3;if("number"==typeof t||"bigint"==typeof t)return 0|+t;if("string"==typeof t){let e=0;for(let r=0;r<t.length;r++)e=31*e+t.charCodeAt(r)>>>0;return e}if(void 0===t)return 4;if("function"==typeof t)return 5;if(e.isValidElement(t))return 6;if(Array.isArray(t)){let e=0;for(let r=0;r<t.length;r++)e=31*e+n(t[r])>>>0;return e}if(t instanceof Set)return Array.from(t).map(n).sort(((e,t)=>e-t)).reduce(((e,t)=>31*e+t>>>0),0);if(t instanceof Map)return Array.from(t.entries()).map((([e,t])=>31*n(e)+n(t)>>>0)).sort(((e,t)=>e-t)).reduce(((e,t)=>31*e+t>>>0),0);if("object"==typeof t&&null!==t){if(r.has(t))return r.get(t);const e=Object.entries(t).sort((([e],[t])=>e.localeCompare(t))).map((([,e])=>n(e))).reduce(((e,t)=>31*e+t>>>0),0);return r.set(t,e),e}return 7};return t.map(n)}(m,q,g,v,U,M,R,E,L,pe.current.empty,D),He=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=m)if("number"==typeof m||"end"===m)r=[m,m];else if(Array.isArray(m))r=m;else if("object"==typeof m){const l=m.value;"number"==typeof l||"end"===l?r=[l,l]:Array.isArray(l)&&(r=l),n=null!==(e=m.duration)&&void 0!==e?e:200,o=null!==(t=m.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[ke]),Ye={color:null,size:40},Xe=e.useMemo((()=>"object"==typeof A?Object.assign(Object.assign({},Ye),A):"string"==typeof A?{color:A,size:40}:Ye),[A]),$e=e.useMemo((()=>{const t=L.arrows,r={size:40,contentReduce:!0,loop:!1};return e.isValidElement(t)?Object.assign(Object.assign({},r),{element:t}):"object"==typeof t&&null!==t?Object.assign(Object.assign({},r),t):r}),[We]),Be=e.useMemo((()=>e.Children.toArray(l).flatMap($)),[l]),Pe=e.useMemo((()=>Be.map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return!("clear"===U||U&&"object"==typeof U&&"mode"in U&&"clear"===U.mode)||!(null===(t=pe.current.empty)||void 0===t?void 0:t.has(e))}))),[l,ze,Ne]),[De,Ve,qe,Ue]=S?t(S):[0,0,0,0],_e=De+qe,Ke=Ue+Ve,Ge=e.useMemo((()=>{var e,t;return"number"==typeof E?[E,E]:Array.isArray(E)?[null!==(e=E[1])&&void 0!==e?e:0,null!==(t=E[0])&&void 0!==t?t:0]:[0,0]}),[E]),Ze=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1,trackVisibility:!1};if("string"==typeof q)return Object.assign(Object.assign({},e),{type:q});if("object"==typeof q&&null!==q){const{type:t,rootMargin:r=e.rootMargin,stopLoadOnScroll:n=e.stopLoadOnScroll,trackVisibility:o=e.trackVisibility}=q;return{type:t,rootMargin:r,stopLoadOnScroll:n,trackVisibility:o}}return e}),[Oe]),Je=e.useMemo((()=>t(Ze.rootMargin)),[Ze.rootMargin,d]),Qe=e.useMemo((()=>{const[e,t]=Array.isArray(g)?g:"number"==typeof g?[g,g]:[Se.current.width,Se.current.height];if(!L.arrows||!$e.size||!$e.contentReduce)return[e,t,e,t];const r=2*$e.size;let n=e,o=t;return"x"===d?n=e-r:"y"===d?o=t-r:"hybrid"===d&&(n=e-r,o=t-r),[n,o,e,t]}),[Ae,We,d,$e,Se.current.height,Se.current.width]),et="x"===d?Qe[0]:Qe[1],tt=e.useMemo((()=>{if(!D)return[0,0];if("number"==typeof D){const e=2*D;return[e,e]}if(Array.isArray(D)){const[e=0,t]=D;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[Ie]),rt=e.useMemo((()=>[Qe[0]-tt[0],Qe[1]-tt[1]]),[tt.join(),Qe[0],Qe[1]]),nt=e.useMemo((()=>v?Array.isArray(v)?v:t(v,!0,2):[null,null]),[Le]),ot=e.useMemo((()=>{const e=(e,t)=>"number"==typeof e?e:"firstChild"===e?t:0;return[e(nt[0]&&"number"==typeof nt[0]?nt[0]:"y"===d&&"none"!==nt[0]||"size"===nt[0]?Qe[0]:0,Re.current.width),e(nt[1]&&"number"==typeof nt[1]?nt[1]:"x"===d&&"none"!==nt[1]||"size"===nt[1]?Qe[1]:0,Re.current.height)]}),[nt.join(),d,Re.current.width,Re.current.height,Qe.join()]),lt=e.useMemo((()=>{const e="x"===d?1:0,t="row"===O,r=Qe[e],n=ot[e]+Ge[e],o="hybrid"===d?n*Pe.length:r,l=Math.floor(o/n)||1,i=j&&l>=j?"hybrid"===d?Math.ceil(l/j):j:l,s=i>1&&i<Pe.length?Math.ceil(Pe.length/i):i<Pe.length?Pe.length:1,c=j&&j<Pe.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===d){const e=c?t?j:i:t?Pe.length:1,r=c?t?i:j:t?1:Pe.length;return[a(e),a(r)]}return[a(i),a(s)]}),[O,Ge[0],Ge[1],ot.join(),Pe.length,d,Qe.join(),j]),it=e.useMemo((()=>{const e=lt[0]?lt[0]*Ge[1]-Ge[1]:0,t=lt["x"===d?1:0],r=Pe.length<t?Pe.length:t;return ot[0]?(ot[0]+Ge[1])*r-Ge[1]:Ze.type?Re.current.width+e:Me.current.width}),[d,ot[0],lt.join(),Ge[1],Me.current.width,Re.current.width,Ze.type,Pe.length]),st=e.useMemo((()=>{const e=1>lt[1]?1:lt[0]*Ge[0]-Ge[0];return ot[1]?"x"===d?(ot[1]+Ge[0])*lt[0]-Ge[0]:(ot[1]+Ge[0])*lt[1]-Ge[0]:Ze.type?Re.current.height+e:Me.current.height}),[d,ot[1],lt.join(),Ge[0],Me.current.height,Re.current.height,Ze.type]),ct=e.useMemo((()=>st+_e),[st,_e]),at=e.useMemo((()=>it+Ke),[it,Ke]),ut="x"===d?at:ct,dt="x"===d?(null===(G=ae.current)||void 0===G?void 0:G.scrollLeft)||0:(null===(Z=ae.current)||void 0===Z?void 0:Z.scrollTop)||0,ft=dt>1&&!0,mt=ut>Math.round(dt+et);let ht=!1,pt=!1;"hybrid"===d&&(ht=((null===(J=ae.current)||void 0===J?void 0:J.scrollLeft)||0)>1&&!0,pt=Math.round(((null===(Q=ae.current)||void 0===Q?void 0:Q.scrollLeft)||0)+Qe[0])<at);const gt=e.useMemo((()=>null!=V?V:30),[V]),yt=e.useCallback((e=>L.progressElement&&ut?"x"===e?H(Qe[0],at,gt):H(Qe[1],ct,gt):0),[We,ut,Qe[0],Qe[1],at,gt]),bt=e.useMemo((()=>({x:"y"!==d?yt("x"):0,y:"x"!==d?yt("y"):0})),[yt,d]),vt=e.useMemo((()=>({w:Qe[0]?at-Qe[0]:at,h:Qe[1]?ct-Qe[1]:ct})),[at,ct,Qe[0],Qe[1]]),xt={x:"y"!==d?Y((null===(ee=ae.current)||void 0===ee?void 0:ee.scrollLeft)||0,vt.w,rt[0],bt.x):0,y:"x"!==d?Y((null===(te=ae.current)||void 0===te?void 0:te.scrollTop)||0,vt.h,rt[1],bt.y):0},wt=e.useCallback((()=>{if(!Ze.type||1>=lt[0])return[];const e=Array.from({length:lt[0]},(()=>[])),t="x"===d&&"column"===O||"x"!==d&&"row"===O;return Array.from({length:Pe.length},((e,t)=>t)).forEach((r=>{const n=t?r%lt[0]:Math.floor(r/lt[1]);e[n]&&e[n].push(r)})),e}),[Pe.length,lt.join(),Ze.type,O,d]),jt=e.useMemo((()=>{if(!Ze.type)return[{top:0,bottom:0,left:0,right:0}];let e=[],t=0;if(k){const r=Array.from({length:Pe.length},((e,t)=>t)),n="x"===d?Pe.length%lt[0]:Pe.length%Math.ceil(Pe.length/lt[0]);e=n?r.slice(-n):[],"center"===k?t=(ot[0]+Ge[1])*(lt[0]-n)/2:"end"===k&&(t=(ot[0]+Ge[1])*(lt[0]-n))}const r=wt();return Pe.map(((n,o)=>{const l=function(e,t){for(let r=0;r<t.length;r++){const n=t[r].indexOf(e);if(-1!==n)return["x"===d?n:r,["hybrid","y"].includes(d)?n:r]}return[0,0]}(o,r),i=e.length>0&&e.includes(o)?t:0,s=function(e){const t="x"===d?i:0;return e>0?t+(ot[1]+Ge[0])*e:t}(lt[0]>1||["hybrid","x"].includes(d)?l[1]:o),c=ot[1]?s+ot[1]:s,a=function(e){const t="x"===d?0:i;return e>0?t+(ot[0]+Ge[1])*e:t}(1===lt[0]&&"x"===d?o:l[0]);return{top:s,bottom:c,left:a,right:a+ot[0]}}))}),[d,lt[0],ot.join(),Ge[0],Ge[1],Ze.type,O,k,Pe.join()]),Et=e.useMemo((()=>(null==Qe?void 0:Qe.length)&&R?function(e,t,r,n){const[o,l="start"]="string"==typeof e?[e,e]:e,i={display:"flex"};return t[0]>r&&(i.justifyContent=W(o)),t[1]>n&&(i.alignItems=W(l)),i}(R,Qe,at,ct):{}),[R,Qe.join(),ct,at]),St=e.useMemo((()=>[C(at,Qe[0]),C(ct,Qe[1])]),[at,ct,Qe.join()]),Mt=e.useMemo((()=>"x"===d?St[0]:St[1]),[d,St[0],St[1]]),Rt=e.useCallback(N(Se,le),[]),kt=e.useCallback(N(Me,le,Ke,_e),[Ke,_e]),Ot=e.useCallback(N(Re,le),[]),At=e.useCallback(((e,t,r)=>{const n=ae.current;return n&&null!==e?function(e,t,r,n,o){return T(this,void 0,void 0,(function*(){if(!t||null==n)return null;const l="y"===e?"scrollTop":"scrollLeft",i=t[l];return i!==n?null===r?(yield function(e){return T(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(t),void(t[l]=n)):void y((()=>{const e=performance.now(),s=()=>{const c=performance.now(),a=Math.min((c-e)/r,1);t[l]=i+(n-i)*a,1>a&&o(s)};o(s)}),r,"smoothScrollBlock"+e,"exclusive"):void 0}))}(t,n,me.current?null:r,e,ie.schedule):null}),[]),Lt=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:S?`${De}px ${Ve}px ${qe}px ${Ue}px`:"",height:nt[1]&&"none"!==nt[1]?st+"px":"fit-content",width:nt[0]&&"none"!==nt[0]?it+"px":"fit-content"},E&&!Ze.type&&{gap:`${Ge[0]}px ${Ge[1]}px`}),M&&function(e,t,r,n,o){const l=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=l(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let i,s;return Array.isArray(e)?[i,s]=e:i=s=e,{minWidth:l(i,"x")+"px",minHeight:l(s,"y")+"px"}}(M,d,Qe,Ke,_e)),("hybrid"===d||"x"===d)&&{flexShrink:0});if(Ze.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===lt[0]?"y"===d?"column":"row":O;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:"wrap",justifyContent:W(k)})}),[S,Ce,Te,[De,Ve,qe,Ue,Ke,_e,Ge[0],Ge[1]].join(),Qe.join(),Fe,nt[1],st,it,Fe,Ze.type,d,lt[0],O,k]),zt=e.useCallback(((e,t,r)=>{var n;fe.current=I();const o=t.target;if(o.closest('\n [data-ms-no-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let l=null;r&&(l=null===(n=o.closest("scroll"===a?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),he.current=e,z({scrollElementRef:ae.current,objectsWrapperRef:ue.current,target:o,clickedObject:he,scrollContentRef:ce.current,scrollStateRef:ge.current,type:a,triggerUpdate:le,direction:d,smoothScroll:At,sizeLocal:[Qe[0],Qe[1]],thumbSize:"x"===l?bt.x:bt.y,axisFromAtr:l,duration:He.duration,scrollBarEdge:tt,rafScrollAnim:ie,isTouched:fe.current,gap:Ge,objectsWrapperSize:[at,ct],overscrollRef:we,objLengthPerSize:St,isDraggingRef:je})}),[d,a,Qe.join(),He.duration,At,tt.join(),bt.x,bt.y,Ge.join(),at,ct,St]),Tt=e.useCallback((e=>{zt("thumb",e,!0)}),[zt]),Ct=e.useCallback((e=>{ae.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:l,loop:i,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,f=(e,r,n)=>{const i=n?((e,t)=>"x"===e?t>0?0:c:t>0?0:a)(e,r):((e,r)=>{const n="x"===e,o=n?d:u,l=n?s[0]:s[1],i=t[n?"clientWidth":"clientHeight"]+l;return i*(Math.floor(Math.max(0,o)/i)+r)})(e,r);o(i,e,l)};switch(e){case"top":u>0?f("y",-1):i&&f("y",-1,!0);break;case"left":d>0?f("x",-1):i&&f("x",-1,!0);break;case"right":d+n[0]<c?f("x",1):i&&f("x",1,!0);break;case"bottom":u+n[1]<a?f("y",1):i&&f("y",1,!0)}})({arrowType:e,scrollElement:ae.current,wrapSize:[at,ct],scrollSize:Qe,smoothScroll:At,duration:He.duration,loop:$e.loop,gap:Ge})}),[Qe.join(),at,ct,He.duration,At,$e.loop,Ge.join()]),Ft=e.useCallback((()=>{"scroll"!==a&&Qe[0]&&Qe[1]&&ce.current&&ae.current&&de.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var l,i;let s=F.get(t);const c=0===o?r:"x",a="x"===c?0:1;if(s&&s.elements.length===n[a]||(s={elements:Array.from(t.querySelectorAll(".ms-slider-element")),lastIndex:-1},F.set(t,s)),!s.elements.length)return;const u="x"===c?e.scrollLeft:e.scrollTop,d="x"===c?e.clientWidth:e.clientHeight;let f=Math.floor((u+d/2)/d);f!==s.lastIndex&&(-1!==s.lastIndex&&(null===(l=s.elements[s.lastIndex])||void 0===l||l.classList.remove("active")),null===(i=s.elements[f])||void 0===i||i.classList.add("active"),s.lastIndex=f)}))})(ae.current,de.current,d,St)}),[Qe.join(),d,a,St.join()]),Wt=e.useCallback((()=>{ue.current&&((e,t,r,n)=>{const o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(i)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let l=o.nextNode();for(;l;){const e=l,r=e.getAttribute(i);if(r){const o=0===e.children.length;o&&(t.current.empty||(t.current.empty=new Set),t.current.empty.add(r)),"virtual"===n&&o||t.current.loaded.add(r)}l=o.nextNode()}r()})(ue.current,pe,le,Ze.type)}),[Oe]),Nt=e.useCallback((e=>{"object"==typeof U&&"clickTrigger"in U&&void 0!==U.clickTrigger&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,l=e.target;if(!l.closest(n))return;const s=l.closest(`[${i}]`);null==s||s.classList.add("remove"),y((()=>{null==s||s.classList.remove("remove"),r()}),o)})(e,U.clickTrigger,Wt)}),[ze,Wt]),It=e.useCallback((e=>{b("removeHover");const t=ce.current,r=se.current,n=ae.current;if(!t||!r||!n)return;if(He.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;ve.current.update(t,r)}null==h||h(n.scrollLeft,n.scrollTop);const o=t.querySelectorAll("scroll"===a?".ms-bar":".ms-slider");P&&o.length>0&&!ye.current&&o.forEach((e=>{e.classList.contains("hover")||w(e)})),ye.current=!0,null==p||p(!0),y((()=>{ve.current.reset(),ye.current=!1,null==p||p(!1),Ze.type&&Wt(),P&&o.length>0&&!he.current&&y((()=>{o.forEach((e=>{x(e)}))}),1e3,"removeHover")}),200,"isScrolling"),oe.schedule((()=>{"scroll"!==a&&Ft(),re()}))}),[h,p,a,Ft,Wt,P,Ze.type]),Ht=e.useCallback((e=>{if(be.current)return;const t="object"==typeof L.wheel&&"string"==typeof L.wheel.changeDirectionKey?L.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==d||be.current||(e.stopPropagation(),be.current=!0,le())}),[d,We]),Yt=e.useCallback((e=>{be.current&&(e.stopPropagation(),be.current=!1,le())}),[]);e.useEffect((()=>{if(fe.current||"hybrid"!==d)return;const e=ue.current,t=ae.current;return e&&t?(e.clientWidth+Ke>t.clientWidth&&e.clientHeight+_e>t.clientHeight&&(t.addEventListener("keydown",Ht),t.addEventListener("keyup",Yt)),()=>{t.removeEventListener("keydown",Ht),t.removeEventListener("keyup",Yt)}):void 0}),[d,We,Ae,Le,Pe.join(),Ke,_e]),e.useEffect((()=>{(U||Ze.type)&&Wt()}),[ze,Ze.type,Wt,Pe.length]),e.useEffect((()=>{if(fe.current)return;const e=ae.current;if(!e)return;const t="hybrid"===d&&"object"==typeof L.wheel&&L.wheel.changeDirection?"x":d,r="hybrid"===d&&st+_e<=Qe[1]||be.current?["hybrid","y"].includes(t)?"x":"y":t,n=t=>{t.preventDefault(),s(t,e,ge.current,r)};return L.wheel&&e.addEventListener("wheel",n,{passive:!1}),()=>{e.removeEventListener("wheel",n)}}),[d,We,st,Qe[1],_e,be.current]),e.useEffect((()=>{oe.schedule((()=>{("hybrid"===d?["x","y"]:[d]).forEach((e=>{const t=He.value["x"===e?0:1];if("end"===t){if(ve.current.get()[e]===("x"===e?"left":"up"))return;At("x"===e?vt.w:vt.h,e,He.duration)}else"number"==typeof t&&xe.current[e]!==t&&(xe.current[e]=t,At(t,e,He.duration))}))}))}),[d,ke,vt.w,vt.h,He.value.join()]),e.useEffect((()=>{const e=ge.current.animationFrameId;return(Ze.type||p)&&p&&p(!1),requestAnimationFrame((()=>me.current=!1)),()=>{e&&cancelAnimationFrame(e),ge.current.animationFrameId&&cancelAnimationFrame(ge.current.animationFrameId),ie.cancel()}}),[]),e.useEffect((()=>{const e=ae.current;if(!e)return;const t=e=>{zt("wrapp",e)};if(L.content||!L.content&&fe.current&&L.wheel){if(!0===L.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[We,zt]),e.useEffect((()=>{const e=ce.current;if(!e||!P)return;if(!de.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&he.current?document.addEventListener("mouseup",t):Array.from(de.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if("mouseleave"===t.type&&e.removeAttribute("data-mouse-hover"),null==r?void 0:r.current)return;x(e)}else"mouseenter"===t.type&&e.setAttribute("data-mouse-hover",""),w(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:ye})}))},r=(t,r)=>{fe.current?(Array.from(de.current).forEach((e=>e[t]("pointerdown",r))),document[t]("pointerup",r),document[t]("pointercancel",r)):(e[t]("mouseenter",r),e[t]("mouseleave",r))};return r("addEventListener",t),()=>{r("removeEventListener",t)}}),[P,a,d,de.current.size]),e.useEffect((()=>{"scroll"!==a&&oe.schedule(Ft)}),[a,Ft,Qe.join()]);const Xt=e.useCallback(((t,r,n,o,l)=>{const s=Object.assign(Object.assign({width:ot[0]?ot[0]+"px":void 0,height:ot[1]?ot[1]+"px":void 0},Ze.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof l&&{"--content-visibility":l}),c=_?e.createElement(e.Suspense,{fallback:K},o):o;return e.createElement("div",Object.assign({key:t},Ze.type||U?{[i]:""+t}:{},{className:"ms-object-box",style:s,onClick:U?Nt:void 0}),c)}),[_,!!K,ot.join(),Oe,ze,lt[0],Nt,Ze.type]),$t=e.useMemo((()=>{const t=new Map;return Be.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[Be]),Bt=e.useMemo((()=>[{positionType:"x"===d?"left":"top",visibility:ft},{positionType:"x"===d?"right":"bottom",visibility:mt},..."hybrid"===d?[{positionType:"left",visibility:ht},{positionType:"right",visibility:pt}]:[]]),[ft,mt,d,ht,pt]),Pt=e.useMemo((()=>({width:Qe[2]+"px",height:Qe[3]+"px"})),[Qe]),Dt=e.useMemo((()=>{var e;return null!==(e={x:at>Qe[0]?"scroll hidden":"hidden",y:ct>Qe[1]?"hidden scroll":"hidden",hybrid:`${at>Qe[0]?"scroll":"hidden"} ${ct>Qe[1]?"scroll":"hidden"}`,hide:"hidden"}[L.wheel||L.content&&"scroll"===a?d:"hide"])&&void 0!==e?e:"hidden"}),[at,ct,Qe,We,d]),Vt=e.useMemo((()=>A?Bt.map((({positionType:t,visibility:r})=>e.createElement(u,{key:"edge-"+t,edgeGradient:Xe,visibility:r,edgeType:t,size:Qe}))):null),[A,Bt,Xe,Ae]),qt=e.useMemo((()=>L.arrows?Bt.map((({positionType:t,visibility:r})=>e.createElement(f,{key:"arrow-"+t,visibility:r,arrows:$e,arrowType:t,handleArrow:Ct,size:Qe[0]}))):null),[We,Bt,$e,Ct,Qe[0]]),Ut=()=>{var t,r;const o=(null===(t=ae.current)||void 0===t?void 0:t.scrollLeft)||0,l=(null===(r=ae.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:ue,style:Object.assign(Object.assign(Object.assign({},Lt),(we.current.x||we.current.y)&&{transform:`translate(${we.current.x}px, ${we.current.y}px)`}),je.current&&{pointerEvents:"none"})},Pe.map(((t,r)=>((t,r,o,l)=>{var i;const s=$t.get(t),c=Ze.stopLoadOnScroll&&ye.current&&!pe.current.loaded.has(t)?K:(null===(i=pe.current.empty)||void 0===i?void 0:i.has(t))?U&&"object"==typeof U&&e.isValidElement(U)?U:U&&"object"==typeof U&&"mode"in U&&"object"==typeof U.mode&&"fallback"in U.mode?U.mode.fallback:K:s,a="firstChild"!==nt[0]&&"firstChild"!==nt[1]||0!==r?c:e.createElement(n,{onResize:Ot},c);if(!Ze.type)return Xt(t,0,0,a);const{top:u,bottom:f,left:m,right:h}=jt[r],p=(e=!0)=>{const t=e?Je:[0,0,0,0],r=e=>{const r="x"===e?o:l,n=r+("x"===e?Qe[0]:Qe[1]),i="x"===e?m-t[3]:u-t[2],s="x"===e?h+t[1]:f+t[0],c=s-i;if(0>=c)return 0;const a=Math.min(s,n)-Math.max(i,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===d){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===d?"x":"y")},g=p(),y=Ze.trackVisibility?p(!1):null;if("lazy"===Ze.type){const e=pe.current.loaded.has(t);return g&&!e&&pe.current.loaded.add(t),e?Xt(t,u,m,a,y):null}return g?Xt(t,u,m,a,y):null})(t,r,o,l))))},_t=e.useMemo((()=>{const e={position:"relative",width:Qe[0]+"px",height:Qe[1]+"px"};return L.arrows&&$e.contentReduce&&$e.size&&("x"===d?e.left=$e.size+"px":"y"===d?e.top=$e.size+"px":(e.top=$e.size+"px",e.left=$e.size+"px")),e}),[Qe,We,$e,d]),Kt=e.createElement("div",{"morph-scroll":""+ne,className:r,ref:se,style:Pt},e.createElement("div",{className:"ms-content",ref:ce,style:Object.assign(Object.assign(Object.assign({},_t),{transform:"translateZ(0)"}),fe.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:ae,onScroll:It,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},Et),"boolean"!=typeof L.progressElement||!1===L.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:Dt}),L.content&&{cursor:"grab"})},ot[0]&&ot[1]?Ut():e.createElement(n,{onResize:kt,style:Et},Ut())),Vt,L.progressElement&&!0!==L.progressElement?[{shouldRender:("x"!==d?bt.y-tt[1]:bt.x-tt[0])<et,direction:d,thumbSize:"x"!==d?bt.y:bt.x,thumbSpace:"x"!==d?xt.y:xt.x,objLengthPerSize:Mt,progressReverseIndex:0},{shouldRender:"hybrid"===d&&bt.x-tt[0]<rt[0],direction:"x",thumbSize:bt.x,thumbSpace:xt.x,objLengthPerSize:St[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e)).map((t=>{const r="boolean"==typeof B?B:B[t.progressReverseIndex];return e.createElement(c,{key:t.direction,type:a,direction:t.direction,progressReverse:r,size:rt,progressTrigger:L,scrollBarOnHover:P,scrollBarEvent:"sliderMenu"===a?At:Tt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Ft,duration:He.duration,isTouched:fe.current,scrollStateRef:ge,scrollEl:ae,scrollBarsRef:de,triggerUpdate:le,overscroll:we})})):null),qt);return"auto"===g?e.createElement(n,{measure:"outer",onResize:Rt},Kt):Kt};B.displayName="MorphScroll";const P={MorphScroll:B,ResizeTracker:n,IntersectionTracker:r};exports.IntersectionTracker=r,exports.MorphScroll=B,exports.ResizeTracker=n,exports.default=P;
package/esm/index.js CHANGED
@@ -1 +1 @@
1
- import e,{useRef as t}from"react";const r=(e,t=!1,r)=>{let n=[];if(n=Array.isArray(e)?2===e.length?[e[1],e[0],e[1],e[0]]:[...e]:[e,e,e,e],t&&(n=[n[1],n[0],n[3],n[2]]),r){const e=[];for(let t=0;r>t;t++)e.push(n[t%4]);n=e}return n},n=({className:t,children:n,style:o,root:l,threshold:s,rootMargin:i,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=e.useMemo((()=>{if(!i)return"";const e=r(i);return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px`}),[i]),p=e.useCallback((([e])=>{d(e.isIntersecting),a&&a({time:e.time,rootBounds:e.rootBounds,boundingClientRect:e.boundingClientRect,intersectionRect:e.intersectionRect,isIntersecting:e.isIntersecting,intersectionRatio:e.intersectionRatio,target:e.target})}),[a]);return e.useEffect((()=>{const e=new IntersectionObserver(p,{root:l,threshold:s,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[p,l,s,f]),e.createElement("div",{"intersection-tracker":"",className:t,ref:m,style:o},c||u?n:null)};n.displayName="IntersectionTracker";const o=({className:t,children:r,style:n,measure:o="inner",onResize:l})=>{const s=e.useRef(null);e.useEffect((()=>{const e=s.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)l&&l(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,l]);const i={width:"max-content",height:"max-content"},c={inner:Object.assign({},i),outer:Object.assign({},{width:"100%",height:"100%"}),all:Object.assign({minWidth:"100%",minHeight:"100%"},i)};return e.createElement("div",{"resize-tracker":"",className:t,ref:s,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};o.displayName="ResizeTracker";let l=1;const s=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:l,scrollBarOnHover:s,scrollBarEvent:i,thumbSize:c,thumbSpace:a,objLengthPerSize:u,sliderCheckLocal:d,duration:m})=>{const f=e.useRef(null),p=e.useRef(null);e.useEffect((()=>{if(matchMedia("(pointer: coarse)").matches||!(null==l?void 0:l.wheel))return;const e=f.current;if(!e)return;const t="y"===e.getAttribute("data-direction")?"y":"x";let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>{e.preventDefault(),null==r||r.scrollBy(Object.assign(Object.assign({},"y"===t?{top:e.deltaY}:{left:e.deltaY}),{behavior:"auto"}))};return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[]),e.useEffect((()=>{const e=p.current;if(!e||"sliderMenu"===t)return;const r=window.matchMedia("(pointer: coarse)").matches?"touchstart":"mousedown",n=e=>{e.preventDefault(),e.stopPropagation(),i(e)};return e.addEventListener(r,n,{passive:!1}),()=>{e.removeEventListener(r,n)}}),[i]);const h=e.useMemo((()=>{if("scroll"===t||!r)return;const n=["hybrid","y"].includes(r)?"y":"x",s="x"===n?o[0]:o[1];return Array.from({length:u},((r,o)=>e.createElement("div",{key:o,className:"ms-slider-element",style:Object.assign({},"sliderMenu"===t&&{cursor:"pointer"}),onClick:"sliderMenu"===t?()=>{i(s*o,n,m,d)}:void 0},Array.isArray(null==l?void 0:l.progressElement)?l.progressElement[o]:null==l?void 0:l.progressElement)))}),[u,r,o,t,i,null==l?void 0:l.progressElement,m,d]);return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar",ref:f,"data-direction":["hybrid","y"].includes(r)?"y":"x",style:Object.assign(Object.assign(Object.assign({position:"absolute",width:"fit-content"},"x"===r?Object.assign({transformOrigin:"left top",height:o[0]+"px",left:"50%"},n?{top:0,transform:"rotate(-90deg) translate(-100%, -50%)"}:{transform:"rotate(-90deg) translateY(-50%)"}):Object.assign({top:"50%",transform:"translateY(-50%)",height:o[1]+"px"},n?{left:0}:{right:0})),0!=!(null==l?void 0:l.progressElement)&&{pointerEvents:"none"}),s&&{opacity:0,transition:"opacity 0.1s ease-in-out"})},e.createElement("div",{className:"ms-thumb",ref:p,style:Object.assign(Object.assign({height:c+"px",willChange:"transform, height",transform:`translateY(${a}px)`},(null==l?void 0:l.progressElement)&&{cursor:"grab"}),{transition:"height 0.05s ease-in-out"})},null==l?void 0:l.progressElement)):u>1&&(null==l?void 0:l.progressElement)&&e.createElement("div",{className:"ms-slider",ref:p,style:Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex"},"slider"===t&&{cursor:"grab"}),s&&{opacity:0,transition:"opacity 0.1s ease-in-out"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%",transform:"translateX(-50%)"},n?{top:0}:{bottom:0}):Object.assign({flexDirection:"column",top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},h))};s.displayName="ScrollBar";var i=e.memo(s);const c=({edgeGradient:t,visibility:r,edgeType:n})=>{if(!t)return null;const o=Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",pointerEvents:"none",transition:"opacity 0.1s ease-in-out"},t.color&&{background:t.color&&`linear-gradient(${"right"===n||"left"===n?"270deg, ":""}${t.color}, transparent)`}),"right"===n||"left"===n?{height:"100%",width:t.size+"px",top:0}:{width:"100%",height:t.size+"px",left:0}),n?{[n]:0}:{}),"left"===n?{transform:"scaleX(-1)"}:"bottom"===n?{transform:"scaleY(-1)"}:{});return e.createElement("div",{className:"ms-edge"+(n?" "+n:""),style:Object.assign(Object.assign({},o),{opacity:r?1:0})})};c.displayName="Edge";var a=e.memo(c);const u=({activity:t,arrows:r,arrowType:n,handleArrow:o,size:l})=>{const s=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex",justifyContent:"center",alignItems:"center",cursor:"pointer",width:r.size+"px"},n?{[n]:0}:{}),"top"===n&&{transform:"rotate(-90deg) translateX(-100%)",transformOrigin:"left top"}),"bottom"===n&&{transform:"rotate(90deg) translateX(-100%)",transformOrigin:"left bottom"}),"left"===n&&{transform:"scaleX(-1)"}),["top","bottom"].includes(n)?{height:l+"px"}:{height:"100%",top:0});return e.createElement("div",{className:`ms-arrow-box ${n}${t?" active":""}`,style:Object.assign({},s),onClick:()=>o(n)},r.element)};u.displayName="Arrow";var d=e.memo(u);function m(e,t,r,n){return new(r||(r=Promise))((function(o,l){function s(e){try{c(n.next(e))}catch(e){l(e)}}function i(e){try{c(n.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,i)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let f=0;const p={tasks:[],timer:null,running:new Set},h=new Map,g={scheduleNext(){if(null!==p.timer&&(clearTimeout(p.timer),p.timer=null),0===p.tasks.length)return;const e=p.tasks[0],t=Math.max(0,e.runAt-performance.now());p.timer=window.setTimeout((()=>{p.timer=null;const e=performance.now(),t=[];for(;p.tasks.length&&p.tasks[0].runAt<=e&&!p.running.has(p.tasks[0].id);)t.push(p.tasks.shift());t.forEach((e=>{p.running.add(e.id);try{e.callback()}finally{p.running.delete(e.id)}})),g.scheduleNext()}),t)},clearAll(){null!==p.timer&&(clearTimeout(p.timer),p.timer=null),p.tasks=[],p.running.clear()}},y=(e,t,r,n)=>{const o=r||"task_"+f++;if(0===t)return e(),o;const l=n||"default",s=performance.now()+t;if("exclusive"===l){if(p.running.has(o)||p.tasks.some((e=>e.id===o)))return o;p.running.add(o);try{e()}finally{const e=window.setTimeout((()=>{p.running.delete(o),h.delete(o)}),t);h.set(o,e)}return o}r&&(p.tasks=p.tasks.filter((e=>e.id!==o)));const i={id:o,runAt:s,callback:()=>{p.running.add(o);try{e()}finally{p.running.delete(o)}}};return function(e,t){let r=0,n=e.length;for(;n>r;){const o=r+n>>1;e[o].runAt<t.runAt?r=o+1:n=o}e.splice(r,0,t)}(p.tasks,i),g.scheduleNext(),o},b=e=>{if(!e)return g.clearAll(),h.forEach((e=>clearTimeout(e))),void h.clear();(Array.isArray(e)?e:[e]).forEach((e=>{p.running.delete(e);const t=h.get(e);void 0!==t&&(clearTimeout(t),h.delete(e)),p.tasks=p.tasks.filter((t=>t.id!==e)),0===p.tasks.length?g.clearAll():g.scheduleNext()}))};function v(e,t){return e>t?Math.floor(e/t):1}function x(e,t=0,r=1/0){return Math.max(t,Math.min(Math.round(e),r))}const E=(e,t,r)=>{if(!t)return;const n=t.querySelectorAll("."+("scroll"===e?"ms-thumb":"ms-slider"));n.length>0&&(r.current=n)},w=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function j(e,t,r=0,n=0){return o=>{var l,s,i,c;let a=!1;const u={width:(null!==(l=o.width)&&void 0!==l?l:0)-r,height:(null!==(s=o.height)&&void 0!==s?s:0)-n},d=0===u.width&&0===u.height;d&&!a&&(a=!0),(null===(i=e.current)||void 0===i?void 0:i.width)===u.width&&(null===(c=e.current)||void 0===c?void 0:c.height)===u.height||d&&a||(e.current=u,t())}}function S(t){const r=[],n=t=>{if(null===t||"number"==typeof t||"boolean"==typeof t||"bigint"==typeof t)r.push(t+"");else if("string"==typeof t)r.push(t);else if("function"==typeof t)r.push("<function>");else if(e.isValidElement(t))r.push("<react-node>");else if(Array.isArray(t))t.forEach(n);else if("object"==typeof t){const e=Object.entries(t).sort((([e],[t])=>e.localeCompare(t)));for(const[,t]of e)n(t)}else void 0===t&&r.push("<undefined>")};return n(t),r.join("/")}const R=(e,t)=>{if(e)if("grab"===e.style.cursor){if("mousedown"===t){const e=document.createElement("style");e.id="ms-cursor-lock",e.innerHTML="* {\n cursor: grabbing !important;\n }",document.head.appendChild(e)}e.style.cursor="grabbing",e.classList.add("active")}else if("grabbing"===e.style.cursor){if("mousedown"===t){const e=document.getElementById("ms-cursor-lock");e&&e.remove()}e.style.cursor="grab",e.classList.remove("active")}},M=(e,t,r,n)=>{const o=e;["thumb","slider"].includes(t)?R("slider"===t?null==r?void 0:r.closest(".ms-slider"):r,o):"wrapp"===t&&R(n,o)},k=(e,t,r)=>{var n,o,l,s,i;const c=r.scrollElementRef;if(!c)return;const a={x:"touches"in r.mouseEvent?r.mouseEvent.touches[0].clientX:r.mouseEvent.clientX,y:"touches"in r.mouseEvent?r.mouseEvent.touches[0].clientY:r.mouseEvent.clientY,leftover:null!==(o=null===(n=r.prevCoordsRef.current)||void 0===n?void 0:n.leftover)&&void 0!==o?o:0},u=null!==(l=r.prevCoordsRef.current)&&void 0!==l?l:a,d={x:a.x-u.x,y:a.y-u.y};r.prevCoordsRef.current=a;const m="wrapp"===r.clicked?-d[e]:d[e],f="y"===e?"scrollTop":"scrollLeft";if("thumb"===r.clicked)return void((e,t,r,n,o)=>{if(!t.scrollElementRef||!t.objectsWrapperRef)return;const l=t.scrollElementRef,s="x"===e?0:1;if(!Number.isFinite(o[s]))return;const i=t.objectsWrapperWH[s]+t["x"===e?"fullMarginX":"fullMarginY"],c=(t.scrollElementWH[s]-t.scrollBarEdge[s]-t.thumbSize)*o[s],a=i-t.scrollElementWH[s];if(0>=c||0>=a)return;const u=r*(a/c)+n.leftover,d=Math.trunc(u);if(t.prevCoordsRef.current&&(t.prevCoordsRef.current.leftover=u-d),"x"===e){const e="number"==typeof t.scrollStateRef.targetScrollX?t.scrollStateRef.targetScrollX:l.scrollLeft,r=l.scrollWidth-l.clientWidth;t.scrollStateRef.targetScrollX=x(e+d,0,r)}else{const e="number"==typeof t.scrollStateRef.targetScrollY?t.scrollStateRef.targetScrollY:l.scrollTop,r=l.scrollHeight-l.clientHeight;t.scrollStateRef.targetScrollY=x(e+d,0,r)}l.scrollLeft!==t.scrollStateRef.targetScrollX&&(l.scrollLeft=t.scrollStateRef.targetScrollX),l.scrollTop!==t.scrollStateRef.targetScrollY&&(l.scrollTop=t.scrollStateRef.targetScrollY)})(e,r,m,u,t);"slider"===r.type&&(r.numForSliderRef.current+=m);const p="x"===e?0:1;if("wrapp"===r.clicked){if(!Number.isFinite(t[p]))return;return void(c[f]+=m/t[p])}const h=c[f],g=Math.round((null===(i=null===(s=c.closest(".ms-content"))||void 0===s?void 0:s.querySelector(".ms-slider-element.active"))||void 0===i?void 0:i.getBoundingClientRect()["x"===e?"width":"height"])||1);if(Math.abs(r.numForSliderRef.current)>=g){const t=m>0&&h+r.sizeLocal[p]<r.wrapElWH[p]?h+r.sizeLocal[p]:0>m&&h>0?h-r.sizeLocal[p]:null;r.numForSliderRef.current=0,r.smoothScroll(t,e,10)}};function O(e){e.rafID.current&&(cancelAnimationFrame(e.rafID.current),e.rafID.current=NaN,b("smoothScrollBlock"));const t=e.scrollElementRef;t&&(e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop);let r=0,n=0,o=[],l=[],s=[],i=[];if("thumb"===e.clicked){const t=getComputedStyle(e.objectsWrapperRef),s=e=>{const r=e=>parseFloat(e);return"x"===e?r(t.marginLeft)+r(t.marginRight):r(t.marginTop)+r(t.marginBottom)};r=s("x"),n=s("y"),o=[e.scrollElementRef.clientWidth,e.scrollElementRef.clientHeight],l=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]}"slider"===e.type&&(s=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]),["scroll","slider"].includes(e.type)&&(i=function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(e.scrollElementRef));const c=new AbortController,{signal:a}=c;e.clickedObject.current=e.clicked,e.triggerUpdate();M(e.eventType,e.clicked,e.scrollBar,e.objectsWrapperRef),document.addEventListener("pointermove",(t=>{return"touches"in(c=t)&&c.preventDefault(),void function(e){const t=e.direction||"y";"hybrid"===t?("wrapp"===e.clicked?["x","y"]:[e.axisFromAtr]).forEach((t=>t&&k(t,e.visualDiff,e))):k(t,e.visualDiff,e)}(Object.assign(Object.assign({},e),{mouseEvent:c,fullMarginX:r,fullMarginY:n,scrollElementWH:o,objectsWrapperWH:l,wrapElWH:s,visualDiff:i}));var c}),{passive:!1,signal:a}),document.addEventListener("pointerup",(t=>function(e){if(e.controller.abort(),M(e.eventType,e.clicked,e.scrollBar,e.objectsWrapperRef),e.clickedObject.current="none",e.scrollBarOnHover){let t=e.mouseEvent.target,r=!1;for(;t&&t!==document.body;){if(t===e.scrollContentRef){r=!0;break}t=t.parentNode}r||e.mouseOnRefHandle(e.mouseEvent)}if("slider"===e.type){const t=e.scrollElementRef;if(!t)return;const r=e.numForSliderRef.current,n="y"===e.direction?"scrollTop":"scrollLeft",o="y"===e.direction?t.clientHeight:t.clientWidth,l=e=>o*Math[e](t[n]/o);if(Math.abs(r)>20){const t=l(r>0?"ceil":"floor");e.smoothScroll(t,"y"===e.direction?"y":"x",e.duration)}else{const t=l(r>0?"floor":"ceil");e.smoothScroll(t,"y"===e.direction?"y":"x",e.duration)}e.numForSliderRef.current=0}e.prevCoordsRef.current=null,e.triggerUpdate()}(Object.assign(Object.assign({},e),{mouseEvent:t,controller:c}))),{signal:a})}const A="wrap-id";function L(e,t,r){return t?x(Math.round(e/t*e),r,e):0}function z(e,t,r,n){return t?x(e/t*(r-n),0,r-n):0}const C=({className:n,children:s,type:c="scroll",direction:u="y",scrollPosition:f,onScrollValue:p,isScrolling:h,size:g,objectsSize:R,crossCount:M,gap:k,wrapperMargin:C,wrapperMinSize:T,wrapperAlign:N,elementsAlign:W,elementsDirection:F="row",edgeGradient:H,progressTrigger:I={wheel:!0},progressReverse:B=!1,scrollBarOnHover:Y=!1,scrollBarEdge:X,thumbMinSize:$,render:D,emptyElements:P,suspending:q=!1,fallback:K})=>{var V,U,_,G,J;const Q=function(){const e=t(null);return null===e.current&&(e.current=""+l++),e.current}();if(!g)throw Error(`Prop "size" is not provided\nMorphScroll〈♦${Q}〉`);Object.keys(I).length;const[,Z]=e.useState({}),ee=()=>Z({}),te=e.useRef(null),re=e.useRef(null),ne=e.useRef(null),oe=e.useRef(null),le=e.useRef([]),se=e.useRef(null),ie=e.useRef(!0),ce=e.useRef("none"),ae=e.useRef({loaded:[],empty:[]}),ue=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),de=e.useRef(!1),me=e.useRef(0),fe=e.useRef(null),pe=e.useRef(!1),he=e.useRef(NaN);function ge(){return e.useRef({width:0,height:0})}const ye=ge(),be=ge(),ve=ge(),[xe,Ee,we,je,Se,Re,Me,ke,Oe,Ae,Le]=function(...e){return e.map(S)}(f,D,g,R,P,T,N,k,I,ae.current.empty,X),ze=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=f)if("number"==typeof f||"end"===f)r=[f,f];else if(Array.isArray(f))r=f;else if("object"==typeof f){const l=f.value;"number"==typeof l||"end"===l?r=[l,l]:Array.isArray(l)&&(r=l),n=null!==(e=f.duration)&&void 0!==e?e:200,o=null!==(t=f.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[xe]),Ce={color:null,size:40},Te=e.useMemo((()=>"object"==typeof H?Object.assign(Object.assign({},Ce),H):"string"==typeof H?{color:H,size:40}:Ce),[H]),Ne=e.useMemo((()=>{const t=I.arrows,r={size:40,contentReduce:!0,loop:!1};return e.isValidElement(t)?Object.assign(Object.assign({},r),{element:t}):"object"==typeof t&&null!==t?Object.assign(Object.assign({},r),t):r}),[Oe]),We=e.useCallback((t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap(We):[r]}return[t]}),[]),Fe=e.useMemo((()=>e.Children.toArray(s).flatMap(We).map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return"clear"!==(null==P?void 0:P.mode)||!(null===(t=ae.current.empty)||void 0===t?void 0:t.includes(e))}))),[s,We,Se,Ae]),[He,Ie,Be,Ye]=C?r(C):[0,0,0,0],Xe=He+Be,$e=Ye+Ie,[De,Pe]=e.useMemo((()=>{var e,t;return"number"==typeof k?[k,k]:Array.isArray(k)?[null!==(e=k[1])&&void 0!==e?e:0,null!==(t=k[0])&&void 0!==t?t:0]:[0,0]}),[k]),qe=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1};if("string"==typeof D)return Object.assign(Object.assign({},e),{type:D});if("object"==typeof D&&null!==D){const{type:e,rootMargin:t=0,stopLoadOnScroll:r=!1}=D;return{type:e,rootMargin:t,stopLoadOnScroll:r}}return e}),[Ee]),Ke=e.useMemo((()=>r(qe.rootMargin,"x"===u)),[qe.rootMargin,u]),[Ve,Ue]=Ke?[Ke[2],Ke[0]]:[0,0],_e=e.useMemo((()=>{const[e,t]=Array.isArray(g)?g:"number"==typeof g?[g,g]:[ye.current.width,ye.current.height];if(!I.arrows||!Ne.size||!Ne.contentReduce)return[e,t,e,t];const r=2*Ne.size;let n=e,o=t;return"x"===u?n=e-r:"y"===u?o=t-r:"hybrid"===u&&(n=e-r,o=t-r),[n,o,e,t]}),[we,Oe,u,Ne,ye.current.height,ye.current.width]),Ge="x"===u?_e[0]:_e[1],Je=e.useMemo((()=>{if(!X)return[0,0];if("number"==typeof X){const e=2*X;return[e,e]}if(Array.isArray(X)){const[e=0,t]=X;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[Le]),Qe="x"===u?Je[0]:Je[1],Ze=e.useMemo((()=>[_e[0]-Je[0],_e[1]-Je[1]]),[Je.join(),_e[0],_e[1]]),et="x"===u?Ze[0]:Ze[1],tt=e.useMemo((()=>R?Array.isArray(R)?R:r(R,!0,2):[null,null]),[je]),rt=e.useMemo((()=>{const e=(e,t)=>"number"==typeof e?e:"firstChild"===e?t:0;return[e(tt[0]&&"none"!==tt[0]&&"size"!==tt[0]?tt[0]:"y"===u&&"none"!==tt[0]||"size"===tt[0]?_e[0]:0,ve.current.width),e(tt[1]&&"none"!==tt[1]&&"size"!==tt[1]?tt[1]:"x"===u&&"none"!==tt[1]||"size"===tt[1]?_e[1]:0,ve.current.height)]}),[tt.join(),u,ve.current.width,ve.current.height,_e.join()]),nt=e.useMemo((()=>{const e="x"===u,t="row"===F,r="column"===F,n=e?_e[1]:_e[0],o=e?rt[1]+Pe:rt[0]+De,l="hybrid"===u?o*(Fe.length+1)-o:n,s=Math.floor(l/o)||1,i=M&&s>=M?"hybrid"===u?Math.ceil(s/M):M:s,c=i>1&&i<Fe.length?Math.ceil(Fe.length/i):i>Fe.length?1:Fe.length,a=M&&M<Fe.length,d=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===u){const e=a?t?M:i:t?Fe.length:1,n=a?r?M:i:r?Fe.length:1;return[d(e),d(n)]}return[d(i),d(c)]}),[F,Pe,De,rt.join(),Fe.length,u,_e.join(),M]),ot=e.useMemo((()=>{const e=nt[0]?nt[0]*Pe-Pe:0,t="x"===u?nt[1]:nt[0];return rt[0]?(rt[0]+Pe)*t-Pe:qe.type?ve.current.width+e:be.current.width}),[u,rt[0],nt.join(),Pe,be.current.width,ve.current.width,qe.type]),lt=e.useMemo((()=>{const e=1>nt[1]?1:nt[0]*De-De;return rt[1]?"x"===u?(rt[1]+De)*nt[0]-De:(rt[1]+De)*nt[1]-De:qe.type?ve.current.height+e:be.current.height}),[u,rt[1],nt.join(),De,be.current.height,ve.current.height,qe.type]),st=e.useMemo((()=>lt+Xe),[lt,Xe]),it=e.useMemo((()=>ot+$e),[ot,$e]),ct="x"===u?it:st,at="x"===u?(null===(V=ne.current)||void 0===V?void 0:V.scrollLeft)||0:(null===(U=ne.current)||void 0===U?void 0:U.scrollTop)||0,ut=at>1&&!0,dt=ct>Math.round(at+Ge);let mt=!1,ft=!1;"hybrid"===u&&(mt=((null===(_=ne.current)||void 0===_?void 0:_.scrollLeft)||0)>1&&!0,ft=Math.round(((null===(G=ne.current)||void 0===G?void 0:G.scrollLeft)||0)+_e[0])<it);const pt=e.useMemo((()=>null!=$?$:30),[$]),ht=e.useCallback((({withLimit:e=!0,xSize:t})=>I.progressElement&&ct?t?L(e?Ze[0]:_e[0],e?it-Je[0]:it,pt):L(e?et:Ge,e?ct-Qe:ct,pt):0),[Oe,ct,et,Qe,Je[0],Ge,_e[0],Ze[0],it,pt]),gt=e.useMemo((()=>Ge?ct-Ge:ct),[ct,Ge]),yt=e.useMemo((()=>_e[0]?it-_e[0]:it),[it,_e[0]]),bt=e.useCallback((()=>{if(!qe.type||1>=nt[0])return[];const e=Array.from({length:Fe.length},((e,t)=>t)),t=Array.from({length:nt[0]},(()=>[])),r="x"===u&&"column"===F||"x"!==u&&"row"===F;return e.forEach((e=>{const n=r?e%nt[0]:Math.floor(e/nt[1]);t[n]&&t[n].push(e)})),t}),[Fe.length,nt.join(),qe.type,F,u]),vt=e.useMemo((()=>{if(!qe.type)return[{elementTop:0,elementBottom:0,left:0,right:0}];let e=[],t=0;if(W){const r=Array.from({length:Fe.length},((e,t)=>t)),n=Math.abs(Math.floor(Fe.length/nt[0])*nt[0]-Fe.length);e=n?r.slice(-n):[],"center"===W?t=(rt[0]+Pe)*(nt[0]-n)/2:"end"===W&&(t=(rt[0]+Pe)*(nt[0]-n))}return Fe.map(((r,n)=>{const o=function(e,t){for(let r=0;r<t.length;r++){const n=t[r].indexOf(e);if(-1!==n)return["x"===u?n:r,["hybrid","y"].includes(u)?n:r]}return[0,0]}(n,bt()),l=e.length>0&&e.includes(n)?t:0,s=function(e){const t="x"===u?l:0;return e>0?t+(rt[1]+De)*e:t}(nt[0]>1||["hybrid","x"].includes(u)?o[1]:n),i=rt[1]?s+rt[1]:s,c=function(e){const t="x"===u?0:l;return e>0?t+(rt[0]+Pe)*e:t}(1===nt[0]&&"x"===u?n:o[0]);return{elementTop:s,elementBottom:i,left:c,right:c+rt[0]}}))}),[u,nt[0],rt.join(),De,Pe,qe.type,F,W,bt,Fe.join()]),xt=e.useMemo((()=>(null==_e?void 0:_e.length)&&N?function(e,t,r,n){const[o,l="start"]="string"==typeof e?[e,e]:e,s={display:"flex"};return t[0]>r&&(s.justifyContent=w(o)),t[1]>n&&(s.alignItems=w(l)),s}(N,_e,it,st):{}),[N,_e.join(),st,it]),Et=e.useMemo((()=>[v(it,_e[0]),v(st,_e[1])]),[it,st,_e.join()]),wt=e.useMemo((()=>"x"===u?Et[0]:Et[1]),[u,Et[0],Et[1]]),jt=e.useCallback(j(ye,ee),[]),St=e.useCallback(j(be,ee,$e,Xe),[$e,Xe]),Rt=e.useCallback(j(ve,ee),[]),Mt=e.useCallback(((e,t,r)=>{const n=ne.current;return n&&null!==e?function(e,t,r,n,o){return m(this,void 0,void 0,(function*(){if(!t||null==n)return null;const l="y"===e?"scrollTop":"scrollLeft",s=t[l];return s!==n?null===r?(yield function(e){return m(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(t),void(t[l]=n)):void y((()=>{const e=performance.now(),i=()=>{const c=performance.now(),a=r?Math.min((c-e)/r,1):1;t[l]=s+(n-s)*a,1>a&&(o.current=requestAnimationFrame(i))};i()}),r,"smoothScrollBlock","exclusive"):void 0}))}(t,n,ie.current?null:r,e,he):null}),[ie.current]),kt=e.useCallback(((e,t)=>{if(se.current){if(se.current!==Fe[0])return void(se.current=Fe[0])}else se.current=Fe[0];Mt(t,e,ze.duration)}),[Fe[0],ze.duration,Mt]),Ot=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign(Object.assign({margin:C?`${He}px ${Ie}px ${Be}px ${Ye}px`:"",height:tt[1]&&"none"!==tt[1]?lt+"px":"fit-content",width:tt[0]&&"none"!==tt[0]?ot+"px":"fit-content"},I.content&&{cursor:"grab"}),k&&!qe.type&&{gap:`${De}px ${Pe}px`}),T&&function(e,t,r,n,o){const l=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=l(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let s,i;return Array.isArray(e)?[s,i]=e:s=i=e,{minWidth:l(s,"x")+"px",minHeight:l(i,"y")+"px"}}(T,u,_e,$e,Xe)),N&&{flexShrink:0});if(qe.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=tt[1]?"wrap":void 0,r=1===nt[0]?"y"===u?"column":"row":F;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:r,flexWrap:t,justifyContent:w(W)})}),[C,Me,Re,[He,Ie,Be,Ye,$e,Xe,De,Pe].join(),_e.join(),ke,tt[1],lt,ot,I.content,ke,qe.type,u,nt[0],F,W]),At=e.useCallback((e=>{if(!Y)return;const t=()=>((e,t,r)=>{e&&e.querySelectorAll(".ms-bar").forEach(((e,t)=>{const n=e;["mouseleave","mouseup","touchend"].includes(r.type)?(n.style.opacity="0",n.classList.remove("hover"),n.classList.add("leave"),y((()=>n.classList.remove("leave")),200)):(n.style.opacity="1",n.classList.add("hover"))}))})(re.current,0,e);"mouseleave"===e.type?!["thumb","slider","wrapp"].includes(ce.current)&&t():t()}),[Y]),Lt=e.useCallback(((e,t="mousedown",r)=>{var n;const o=e||("scroll"===c?"thumb":"slider");if("wrapp"===e&&!I.content||["thumb","slider"].includes(o)&&!I.progressElement)return;E(c,te.current,le);let l=null;r&&(l=null===(n=r.closest(".ms-bar"))||void 0===n?void 0:n.getAttribute("data-direction")),O({eventType:t,scrollElementRef:ne.current,objectsWrapperRef:oe.current,scrollBar:r||null,clickedObject:ce,scrollContentRef:re.current,scrollStateRef:ue.current,type:c,scrollBarOnHover:Y,mouseOnRefHandle:At,triggerUpdate:ee,direction:u,smoothScroll:Mt,sizeLocal:[_e[0],_e[1]],clicked:o,numForSliderRef:me,prevCoordsRef:fe,thumbSize:ht("x"===l?{xSize:!0}:{}),axisFromAtr:l,duration:ze.duration,scrollBarEdge:Je,rafID:he})}),[u,c,I.content,I.progressElement,_e.join(),ht({}),ht({xSize:!0}),ze.duration,Mt,At,Y,Je.join()]),zt=e.useCallback((e=>{Lt(null,e.type,e.target)}),[Lt]),Ct=e.useCallback((e=>{ne.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:l,loop:s})=>{const i=r[0],c=r[1],a=["top","bottom"].includes(e)?c:i,u=t.scrollTop,d=t.scrollLeft,m=t=>{o(t,["top","bottom"].includes(e)?"y":"x",l)};switch(e){case"top":u>0?m(u-n[1]):s&&m(a);break;case"left":d>0?m(d-n[0]):s&&m(a);break;case"right":d+n[0]<i?m(d+n[0]):s&&m(0);break;case"bottom":u+n[1]<c?m(u+n[1]):s&&m(0)}})({arrowType:e,scrollElement:ne.current,wrapSize:[it,st],scrollSize:_e,smoothScroll:Mt,duration:ze.duration,loop:Ne.loop})}),[_e.join(),it,st,ze.duration,Mt,Ne.loop]),Tt=e.useCallback((()=>{if(!_e[0]||!_e[1])return;E(c,te.current,le);const e=ne.current;re.current&&e&&0!==le.current.length&&y((()=>((e,t,r,n)=>{var o,l,s,i;const c=null!==(l=null===(o=t[0])||void 0===o?void 0:o.querySelectorAll(".ms-slider-element"))&&void 0!==l?l:[],a=null!==(i=null===(s=t[1])||void 0===s?void 0:s.querySelectorAll(".ms-slider-element"))&&void 0!==i?i:[];function u(e,t,r,n){const o="x"===n?r.scrollLeft:r.scrollTop;e.forEach(((e,r)=>{const l="x"===n?t[0]:t[1];o>=l*r&&l*(r+1)>o?e.classList.add("active"):e.classList.remove("active")}))}c.length>0&&u(c,r,e,n),a.length>0&&u(a,r,e,"x")})(e,le.current,_e,u)),33)}),[_e.join(),u,ne,re,c]),Nt=e.useCallback((()=>{te.current&&((e,t,r,n)=>{var o,l;const{allIds:s,emptyKeysRaw:i}=(()=>{const t=[],r=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(A)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let o=n.nextNode();for(;o;){const e=o,l=e.getAttribute(A);l&&(t.push(l),0===e.children.length&&r.push(l)),o=n.nextNode()}return{allIds:t,emptyKeysRaw:r}})(),c=new Set(null===(o=t.current)||void 0===o?void 0:o.loaded);s.forEach((e=>c.add(e)));let a=null;if(null===(l=t.current)||void 0===l?void 0:l.empty){const e=new Set(t.current.empty);i.forEach((t=>e.add(t))),a=Array.from(e)}t.current={loaded:"lazy"===n?Array.from(c):s.map((e=>e)),empty:a},r()})(te.current,ae,ee,qe.type)}),[Ee]),Wt=e.useCallback((e=>{(null==P?void 0:P.clickTrigger)&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,l=e.target;if(!l.closest(n))return;const s=l.closest(`[${A}]`);s&&s.classList.add("remove"),y((()=>{s&&s.classList.remove("remove"),r()}),o)})(e,P.clickTrigger,Nt)}),[Se,Nt]),Ft=e.useCallback((()=>{y((()=>{const e=te.current,t=ne.current;e&&t&&(null==p||p(t.scrollLeft,t.scrollTop),de.current=!0,null==h||h(!0),y((()=>{de.current=!1,null==h||h(!1),Nt()}),200),"scroll"!==c&&Tt(),requestAnimationFrame(ee))}),6)}),[p,h,c,Tt,Nt]),Ht=z(at,gt,et,ht({})),It=z((null===(J=ne.current)||void 0===J?void 0:J.scrollLeft)||0,yt,Ze[0],ht({xSize:!0})),Bt=e.useCallback((e=>{const t="object"==typeof I.wheel&&"string"==typeof I.wheel.changeDirectionKey?I.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==u||pe.current||(e.stopPropagation(),pe.current=!0,ee())}),[u,JSON.stringify(I.wheel)]),Yt=e.useCallback((e=>{pe.current&&(e.stopPropagation(),pe.current=!1,ee())}),[]);e.useEffect((()=>{(P||qe.type)&&(P||null===ae.current.empty||(ae.current.empty=null),Nt())}),[Se,qe.type,Nt]),e.useEffect((()=>{if(matchMedia("(pointer: coarse)").matches)return;const e=ne.current;if(!e)return;const t="hybrid"===u&&"object"==typeof I.wheel&&I.wheel.changeDirection?"x":u,r="hybrid"===u&&lt+Xe<=_e[1]||pe.current?["hybrid","y"].includes(t)?"x":"y":t,n=e=>{e.preventDefault(),function(e,t,r){const n=e.target.closest(".ms-element");n.matches(":focus")||n.focus(),t.animating||(t.targetScrollX=n.scrollLeft,t.targetScrollY=n.scrollTop),"x"===r?t.targetScrollX=x(t.targetScrollX+e.deltaY,0,n.scrollWidth-n.clientWidth+2):t.targetScrollY=x(t.targetScrollY+e.deltaY,0,n.scrollHeight-n.clientHeight+2),t.animating||(t.animating=!0,t.animationFrameId=requestAnimationFrame((function e(){let o=0;"x"===r?(n.scrollLeft+=.4*(t.targetScrollX-n.scrollLeft),o=Math.abs(n.scrollLeft-t.targetScrollX)):(n.scrollTop+=.4*(t.targetScrollY-n.scrollTop),o=Math.abs(n.scrollTop-t.targetScrollY)),o>2.5?t.animationFrameId=requestAnimationFrame(e):(t.animating=!1,null!==t.animationFrameId&&(cancelAnimationFrame(t.animationFrameId),t.animationFrameId=null))})))}(e,ue.current,r)};return I.wheel&&e.addEventListener("wheel",n,{passive:!1}),()=>{e.removeEventListener("wheel",n)}}),[u,Oe,lt,_e[1],Xe,pe.current]),e.useEffect((()=>{ze.value&&("hybrid"===u?["x","y"]:[u]).forEach((e=>{const t="x"===e?0:1;"end"===ze.value[t]&&kt(e,"x"===e?yt:gt)}))}),[u,ze.value.join(),xe,gt,yt,it,st]),e.useEffect((()=>{ze.value&&("hybrid"===u?["x","y"]:[u]).forEach((e=>{const t="x"===e?0:1,r=ze.value[t];"number"==typeof r&&kt(e,r)}))}),[xe,ze.updater,u,kt,ze.value.join()]),e.useEffect((()=>{const e=ue.current.animationFrameId;return(qe.type||h)&&h&&(h(!1),ee()),requestAnimationFrame((()=>ie.current=!1)),()=>{e&&cancelAnimationFrame(e),b()}}),[]),e.useEffect((()=>{const e=ne.current;if(!e)return;const t=window.matchMedia("(pointer: coarse)").matches?"touchstart":"mousedown";if("touchstart"===t&&"slider"!==c)return;const r=t=>{"touchstart"===t.type?e.style.touchAction="none":e.style.touchAction&&e.style.removeProperty("touch-action"),t.preventDefault(),Lt("wrapp",t.type)};return e.addEventListener(t,r,{passive:!1}),()=>{e.removeEventListener(t,r),e.style.removeProperty("touch-action")}}),[c]),e.useEffect((()=>{"scroll"!==c&&Tt()}),[_e.join()]);const Xt=e.useCallback(((t,r,n,o)=>{const l=Object.assign({width:rt[0]?rt[0]+"px":void 0,height:rt[1]?rt[1]+"px":void 0},qe.type&&Object.assign({position:"absolute",top:r+"px",left:n+"px"},!rt[0]&&1===nt[0]&&{transform:"translateX(-50%)"})),s=q?e.createElement(e.Suspense,{fallback:K},o):o;return e.createElement("div",Object.assign({key:t},qe.type||P?{[A]:""+t}:{},{className:"ms-object-box",style:l,onClick:Wt}),s)}),[q,!!K,rt.join(),Ee,Se,nt[0],Wt,qe.type]),$t=e.useMemo((()=>[{positionType:"x"===u?"left":"top",visibility:ut},{positionType:"x"===u?"right":"bottom",visibility:dt},..."hybrid"===u?[{positionType:"left",visibility:mt},{positionType:"right",visibility:ft}]:[]]),[ut,dt,u,mt,ft]),Dt=e.useMemo((()=>({width:_e[2]+"px",height:_e[3]+"px"})),[_e]),Pt=e.useMemo((()=>[{shouldRender:ht({withLimit:!1})<Ge,direction:u,thumbSize:ht({}),thumbSpace:Ht,objLengthPerSize:wt,progressReverseIndex:0},{shouldRender:"hybrid"===u&&ht({withLimit:!1,xSize:!0})<Ze[0],direction:"x",thumbSize:ht({xSize:!0}),thumbSpace:It,objLengthPerSize:Et[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))),[ht,et,u,Ze[0],Ht,It,wt,Et]),qt=e.useMemo((()=>{const e={position:"relative",width:_e[0]+"px",height:_e[1]+"px"};return I.arrows&&Ne.contentReduce&&Ne.size&&("x"===u?e.left=Ne.size+"px":"y"===u?e.top=Ne.size+"px":(e.top=Ne.size+"px",e.left=Ne.size+"px")),e}),[_e,Oe,Ne,u]),Kt=e.useMemo((()=>{var e;return null!==(e={x:it>_e[0]?"scroll hidden":"hidden",y:st>_e[1]?"hidden scroll":"hidden",hybrid:`${it>_e[0]?"scroll":"hidden"} ${st>_e[1]?"scroll":"hidden"}`,hide:"hidden"}[I.wheel||I.content?u:"hide"])&&void 0!==e?e:"hidden"}),[it,st,_e,Oe,u]),Vt=e.useMemo((()=>H?$t.map((({positionType:t,visibility:r})=>e.createElement(a,{key:"edge-"+t,edgeGradient:Te,visibility:r,edgeType:t}))):null),[H,$t,Te]),Ut=e.useMemo((()=>I.arrows?$t.map((({positionType:t,visibility:r})=>e.createElement(d,{key:"arrow-"+t,activity:r,arrows:Ne,arrowType:t,handleArrow:Ct,size:"hybrid"===u?_e[0]+2*Ne.size:_e[0]}))):null),[I.arrows,$t,Ne,Ct,_e[0],u,de.current]),_t=e.useMemo((()=>I.progressElement&&!0!==I.progressElement?Pt.map((t=>{const r="boolean"==typeof B?B:B[t.progressReverseIndex];return e.createElement(i,{key:t.direction+"",type:c,direction:t.direction,progressReverse:r,size:Ze,progressTrigger:I,scrollBarOnHover:Y,scrollBarEvent:"sliderMenu"===c?Mt:zt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Tt,duration:ze.duration})})):null),[I.progressElement,Pt,c,B,Ze,I,Y,Mt,zt,Tt,ze.duration]),Gt=e.createElement("div",{className:"ms-objects-wrapper",ref:oe,style:Ot},Fe.map(((t,r)=>{var n,l,i;const c=e.Children.toArray(s).find((r=>e.isValidElement(r)&&r.key===t)),a=qe.stopLoadOnScroll&&de.current&&!ae.current.loaded.includes(""+t)?K:(null===(n=ae.current.empty)||void 0===n?void 0:n.includes(t))?"object"==typeof(null==P?void 0:P.mode)?P.mode.fallback:K:c,d="number"==typeof tt[0]&&"number"==typeof tt[1]||"firstChild"!==tt[0]&&"firstChild"!==tt[1]||0!==r?a:e.createElement(o,{onResize:Rt},a);if(!qe.type)return Xt(t,0,0,d);{const{elementTop:e,elementBottom:n,left:o,right:s}=vt[r],c="x"===u?Ve:Ue,a=Ge+c>("x"===u?o:e)-at&&("x"===u?s:n)-at>0-c,m="hybrid"!==u||_e[0]+Ve>o-((null===(l=ne.current)||void 0===l?void 0:l.scrollLeft)||0)&&s-((null===(i=ne.current)||void 0===i?void 0:i.scrollLeft)||0)>0-Ve;if(a&&m)return Xt(t,e,o,d)}}))),Jt=e.createElement("div",{"morph-scroll":`〈♦${Q}〉`,className:n,ref:te,style:Dt},e.createElement("div",{className:"ms-content",ref:re,onMouseEnter:At,onMouseLeave:At,onTouchStart:At,onTouchEnd:At,style:qt},e.createElement("div",{className:"ms-element",ref:ne,onScroll:Ft,onKeyDown:Bt,onKeyUp:Yt,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},xt),{overflow:Kt}),"scroll"!==c||"boolean"!=typeof I.progressElement||!1===I.progressElement?{scrollbarWidth:"none"}:{})},rt[0]&&rt[1]?Gt:e.createElement(o,{onResize:St,style:xt},Gt)),Vt,_t),Ut);return"auto"===g?e.createElement(o,{measure:"outer",onResize:jt},Jt):Jt};C.displayName="MorphScroll";const T={MorphScroll:C,ResizeTracker:o,IntersectionTracker:n};export{n as IntersectionTracker,C as MorphScroll,o as ResizeTracker,T as default};
1
+ import e,{useRef as t,useState as r,useCallback as n}from"react";const o=(e,t=!1,r)=>{let n=[];if(n=Array.isArray(e)?2===e.length?[e[1],e[0],e[1],e[0]]:[...e]:[e,e,e,e],t&&(n=[n[1],n[0],n[3],n[2]]),r){const e=[];for(let t=0;r>t;t++)e.push(n[t%4]);n=e}return n},l=({className:t,children:r,style:n,root:l,threshold:i,rootMargin:s,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),f=e.useRef(null),m=e.useMemo((()=>{if(!s)return"";const e=o(s);return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px`}),[s]),h=e.useCallback((([e])=>{d(e.isIntersecting),a&&a({time:e.time,rootBounds:e.rootBounds,boundingClientRect:e.boundingClientRect,intersectionRect:e.intersectionRect,isIntersecting:e.isIntersecting,intersectionRatio:e.intersectionRatio,target:e.target})}),[a]);return e.useEffect((()=>{const e=new IntersectionObserver(h,{root:l,threshold:i,rootMargin:m});return f.current&&e.observe(f.current),()=>{e.disconnect()}}),[h,l,i,m]),e.createElement("div",{"intersection-tracker":"",className:t,ref:f,style:n},c||u?r:null)};l.displayName="IntersectionTracker";const i=({className:t,children:r,style:n,measure:o="inner",onResize:l})=>{const i=e.useRef(null);e.useEffect((()=>{const e=i.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)l&&l(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,l]);const s={width:"max-content",height:"max-content"},c={inner:Object.assign({},s),outer:Object.assign({},{width:"100%",height:"100%"}),all:Object.assign({minWidth:"100%",minHeight:"100%"},s)};return e.createElement("div",{"resize-tracker":"",className:t,ref:i,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};i.displayName="ResizeTracker";let s=1;function c(e,t=0,r=1/0){return Math.max(t,Math.min(Math.round(e),r))}const a="wrap-id";function u(e,t,r,n){t.matches(":focus")||t.focus(),r.animating||(r.targetScrollX=t.scrollLeft,r.targetScrollY=t.scrollTop),"x"===n?r.targetScrollX=c(r.targetScrollX+e.deltaY,0,t.scrollWidth-t.clientWidth+2):r.targetScrollY=c(r.targetScrollY+e.deltaY,0,t.scrollHeight-t.clientHeight+2),r.animating||(r.animating=!0,r.animationFrameId=requestAnimationFrame((function e(){let o=0;"x"===n?(t.scrollLeft+=.4*(r.targetScrollX-t.scrollLeft),o=Math.abs(t.scrollLeft-r.targetScrollX)):(t.scrollTop+=.4*(r.targetScrollY-t.scrollTop),o=Math.abs(t.scrollTop-r.targetScrollY)),o>2.5?r.animationFrameId=requestAnimationFrame(e):("x"===n?t.scrollLeft=r.targetScrollX:t.scrollTop=r.targetScrollY,r.animating=!1,null!==r.animationFrameId&&(cancelAnimationFrame(r.animationFrameId),r.animationFrameId=null))})))}const d=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:l,scrollBarOnHover:i,scrollBarEvent:s,thumbSize:c,thumbSpace:a,objLengthPerSize:d,sliderCheckLocal:f,duration:m,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v})=>{const x=e.useRef(null),w=e.useRef(null),j=["hybrid","y"].includes(r)?"y":"x",E=Math.abs(v.current[j])*(c/200),S=c-E,M=0>v.current[j]?a+E:a,R=e.useMemo((()=>{if("scroll"===t)return;const r="x"===j?o[0]:o[1];return Array.from({length:d},((n,o)=>e.createElement("div",{key:o,className:"ms-slider-element",style:Object.assign({},"sliderMenu"===t&&{cursor:"pointer"}),onClick:"sliderMenu"===t?()=>{s(r*o,j,m,f)}:void 0},Array.isArray(null==l?void 0:l.progressElement)?l.progressElement[o]:null==l?void 0:l.progressElement)))}),[d,o,t,s,null==l?void 0:l.progressElement,m,f]),k=e.useMemo((()=>["hybrid","y"].includes(r)?"y":"x"),[r]);e.useEffect((()=>{if(h||!(null==l?void 0:l.wheel))return;const e=x.current;if(!e)return;let t=e.previousElementSibling;for(;t&&!t.classList.contains("ms-element");)t=t.previousElementSibling;const r=e=>{u(e,g.current,p.current,k)};return e.addEventListener("wheel",r),()=>e.removeEventListener("wheel",r)}),[k]),e.useEffect((()=>{const e=x.current;if(!e||"sliderMenu"===t)return;const r=e=>{s(e)};return e.addEventListener("pointerdown",r),()=>{e.removeEventListener("pointerdown",r)}}),[s]),e.useEffect((()=>{const e=x.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[c]);const O=Object.assign({position:"absolute"},i&&{opacity:0,transition:"opacity 0.2s ease-in-out"}),A="x"===k?o[0]:o[1],L="scroll"!==t?"":c+2*a>A?"flex-end":"flex-start";return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+k,ref:x,"data-direction":k,style:Object.assign(Object.assign(Object.assign({},O),{width:"fit-content",height:A+"px"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%"},n?{top:0,transform:"rotate(-90deg) translate(-100%, -50%)"}:{transform:"rotate(-90deg) translateY(-50%)"}):Object.assign({top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},e.createElement("div",{className:"ms-thumb",ref:w,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${M}px)`},(null==l?void 0:l.progressElement)&&{cursor:"grab"}),{display:"flex",alignItems:L})},null==l?void 0:l.progressElement)):d>1&&(null==l?void 0:l.progressElement)&&e.createElement("div",{className:"ms-slider ms-"+k,ref:x,"data-direction":k,style:Object.assign(Object.assign(Object.assign(Object.assign({},O),{display:"flex"}),"slider"===t&&{cursor:"grab"}),"x"===r?Object.assign({transformOrigin:"left top",left:"50%",transform:"translateX(-50%)"},n?{top:0}:{bottom:0}):Object.assign({flexDirection:"column",top:"50%",transform:"translateY(-50%)"},n?{left:0}:{right:0}))},R))};d.displayName="ScrollBar";const f=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const l=Object.assign(Object.assign(Object.assign({position:"absolute",[n]:0,pointerEvents:"none",transition:"opacity 0.2s ease-in-out","--edge-visibility":r?1:0,opacity:"var(--edge-visibility)"},t.color&&{background:t.color&&`linear-gradient(${["left","right"].includes(n)?"270deg, ":""}${t.color}, transparent)`}),["left","right"].includes(n)?{height:"100%",width:t.size+"px",top:0}:{width:"100%",height:t.size+"px",left:0}),"left"===n?{transform:"scaleX(-1)"}:"bottom"===n?{transform:"scaleY(-1)"}:{}),i=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:i,style:l})};f.displayName="Edge";var m=e.memo(f);const h=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:l})=>{const i=e.useRef(null),s=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"absolute",display:"flex",justifyContent:"center",alignItems:"center",cursor:"pointer",width:r.size+"px"},n?{[n]:0}:{}),"top"===n&&{transform:"rotate(-90deg) translateX(-100%)",transformOrigin:"left top"}),"bottom"===n&&{transform:"rotate(90deg) translateX(-100%)",transformOrigin:"left bottom"}),"left"===n&&{transform:"scaleX(-1)"}),["top","bottom"].includes(n)?{height:l+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=i.current;if(!e)return;const t=()=>o(n);return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}),[o,n]),e.createElement("div",{className:`ms-arrow-box ${n}${t?" active":""}`,ref:i,style:s},r.element)};h.displayName="Arrow";var p=e.memo(h);let g=0;const y={tasks:[],timer:null,running:new Set},b=new Map,v={scheduleNext(){if(null!==y.timer&&(clearTimeout(y.timer),y.timer=null),0===y.tasks.length)return;const e=y.tasks[0],t=Math.max(0,e.runAt-performance.now());y.timer=window.setTimeout((()=>{y.timer=null;const e=performance.now(),t=[];for(;y.tasks.length&&y.tasks[0].runAt<=e&&!y.running.has(y.tasks[0].id);)t.push(y.tasks.shift());t.forEach((e=>{y.running.add(e.id);try{e.callback()}finally{y.running.delete(e.id)}})),v.scheduleNext()}),t)},clearAll(){null!==y.timer&&(clearTimeout(y.timer),y.timer=null),y.tasks=[],y.running.clear()}},x=(e,t,r,n)=>{const o=r||"task_"+g++;if(0===t)return e(),o;const l=n||"default",i=performance.now()+t;if("exclusive"===l){if(y.running.has(o)||y.tasks.some((e=>e.id===o)))return o;y.running.add(o);try{e()}finally{const e=window.setTimeout((()=>{y.running.delete(o),b.delete(o)}),t);b.set(o,e)}return o}r&&(y.tasks=y.tasks.filter((e=>e.id!==o)));const s={id:o,runAt:i,callback:()=>{y.running.add(o);try{e()}finally{y.running.delete(o)}}};return function(e,t){let r=0,n=e.length;for(;n>r;){const o=r+n>>1;e[o].runAt<t.runAt?r=o+1:n=o}e.splice(r,0,t)}(y.tasks,s),v.scheduleNext(),o},w=e=>{if(!e)return v.clearAll(),b.forEach((e=>clearTimeout(e))),void b.clear();(Array.isArray(e)?e:[e]).forEach((e=>{y.running.delete(e);const t=b.get(e);void 0!==t&&(clearTimeout(t),b.delete(e)),y.tasks=y.tasks.filter((t=>t.id!==e)),0===y.tasks.length?v.clearAll():v.scheduleNext()}))},j=(e,t)=>{if(!e)return;const r=window.matchMedia("(pointer: coarse)").matches;if("start"===t){if(!r){let e=document.getElementById("ms-cursor-lock");e||(e=document.createElement("style"),e.id="ms-cursor-lock",e.textContent="\n * {\n cursor: grabbing !important;\n }\n ",document.head.appendChild(e))}e.style.cursor="grabbing",e.classList.add("active")}else{if(!r){const e=document.getElementById("ms-cursor-lock");e&&e.remove()}e.style.cursor="grab",e.classList.remove("active")}},E=e=>{if(e.hasAttribute("data-mouse-hover"))return;const t=e.getAttribute("data-direction");e.style.opacity="0",e.classList.remove("hover"),e.classList.add("leave"),w("remove"+t),x((()=>e.classList.remove("leave")),200,"remove"+t)},S=e=>{e.style.opacity="1",e.classList.add("hover")},M=function(){let e=null,t=0;const r=new Map,n=()=>{r.forEach(((e,t)=>{e()||r.delete(t)})),e=0!==r.size?requestAnimationFrame(n):null};return{start:(o,l)=>{const i=null!=l?l:++t;return r.delete(i),r.set(i,o),null===e&&(e=requestAnimationFrame(n)),i},stop:t=>{void 0!==t?(r.delete(t),0===r.size&&null!==e&&(cancelAnimationFrame(e),e=null)):(r.clear(),null!==e&&(cancelAnimationFrame(e),e=null))},isRunning:e=>void 0===e?r.size>0:r.has(e)}}(),R=(e,t,r)=>{const n=e.current[t],o=performance.now();M.start((()=>{const l=performance.now(),i=Math.min((l-o)/140,1);return 1>i?(e.current[t]=n*(1-i),r(),!0):(e.current[t]=0,r(),!1)}))};let k,O={x:0,y:0},A={x:0,y:0},L={x:0,y:0,t:0,distX:0,distY:0},z=null;const T=(e,t,r,n="start")=>{e&&(["thumb","slider"].includes(e)?j("slider"===e?null==t?void 0:t.closest(".ms-slider"):t,n):"wrapp"===e&&j(r,n))},C=(e,t,r,n)=>{var o,l;const i=n.scrollElementRef;if(!i)return;const s={x:n.event.clientX,y:n.event.clientY};if(!s)return;const a=(e,t,r)=>{if(0===e)return 0;const o="x"===t?n.sizeLocal[0]:n.sizeLocal[1],l=.14*Math.max(600,o),i=Math.abs(e);return c(e*l/(l+(r?-i:i)),-150,150)};if(!z)return void(z={x:{value:s.x,leftover:0,raw:a(n.overscrollRef.current.x,"x",!0)},y:{value:s.y,leftover:0,raw:a(n.overscrollRef.current.y,"y",!0)}});const u=z,d={x:s.x-u.x.value,y:s.y-u.y.value},f=Math.abs(O[e]);if(f>2?n.isDraggingRef.current=!0:3>f&&(O[e]+=d[e]),n.isTouched){const e=performance.now();if(L.t){const t=Math.max(e-L.t,8);L={x:.8*L.x+d.x/t*.2,y:.8*L.y+d.y/t*.2,t:e,distX:(null!==(o=L.distX)&&void 0!==o?o:0)+Math.abs(d.x),distY:(null!==(l=L.distY)&&void 0!==l?l:0)+Math.abs(d.y)}}else L.t=e}const m="wrapp"===n.clickedObject.current?-d[e]:d[e],h="y"===e?"scrollTop":"scrollLeft",p="x"===e?0:1;if("thumb"===n.clickedObject.current&&"slider"!==n.type)return void((e,t,r,n,o)=>{if(!t.scrollElementRef||!t.objectsWrapperRef)return;const l=t.scrollElementRef,i=r*o+n,s=Math.trunc(i);if(z&&(z[e].leftover=i-s),"x"===e){const e="number"==typeof t.scrollStateRef.targetScrollX?t.scrollStateRef.targetScrollX:l.scrollLeft,r=l.scrollWidth-l.clientWidth;t.scrollStateRef.targetScrollX=c(e+s,0,r)}else{const e="number"==typeof t.scrollStateRef.targetScrollY?t.scrollStateRef.targetScrollY:l.scrollTop,r=l.scrollHeight-l.clientHeight;t.scrollStateRef.targetScrollY=c(e+s,0,r)}l.scrollLeft!==t.scrollStateRef.targetScrollX&&(l.scrollLeft=t.scrollStateRef.targetScrollX),l.scrollTop!==t.scrollStateRef.targetScrollY&&(l.scrollTop=t.scrollStateRef.targetScrollY)})(e,n,m,u[e].leftover,t);if("slider"===n.type&&(A[e]+=m),"wrapp"===n.clickedObject.current){const t=r[p];if(!Number.isFinite(t)||0===t)return void(z=null);const o=z[e];if(0!==o.raw){o.raw+=.6*d[e],n.overscrollRef.current[e]=a(o.raw,e),n.triggerUpdate();const t=o.raw-.6*d[e];return Math.sign(o.raw)!==Math.sign(t)?(o.raw=0,n.overscrollRef.current[e]=0,void n.triggerUpdate()):void 0}i[h]+=m/t;const l="x"===e?n.maxTopOrLeft[0]:n.maxTopOrLeft[1];return 0>=i[h]&&d[e]>0||i[h]>=l&&0>d[e]?(o.raw+=d[e],n.overscrollRef.current[e]=a(o.raw,e),void n.triggerUpdate()):void 0}const g=i[h];if(n.sliderElSize&&Math.abs(A[e])<n.sliderElSize["x"===e?0:1])return;const y=t=>{const r=i["x"===e?"clientWidth":"clientHeight"]+n.gap[p];return r*(Math.floor(Math.max(0,g)/r)+t)},b=m>0&&g+n.sizeLocal[p]<n.wrapElWH[p]?y(1):0>m&&g>0?y(-1):null;A[e]=0,n.smoothScroll(b,e,10)};function F(e){M.stop(),["x","y"].forEach((t=>{e.rafScrollAnim.cancel(),w("smoothScrollBlock"+t)}));const t=e.scrollElementRef;if(!t)return;e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop,L={x:0,y:0,t:0,distX:0,distY:0};let r=[],n=[],o=[],l=[],i=[];if("thumb"===e.clickedObject.current){const l=getComputedStyle(e.objectsWrapperRef),i=e=>{const t=e=>parseFloat(e);return"x"===e?t(l.marginLeft)+t(l.marginRight):t(l.marginTop)+t(l.marginBottom)};r=[i("x"),i("y")],n=[t.clientWidth,t.clientHeight],o=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]}"slider"===e.type&&(l=[e.objectsWrapperRef.clientWidth,e.objectsWrapperRef.clientHeight]),["scroll","slider"].includes(e.type)&&(i=function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(t));let s=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,l=(n[t]-e.scrollBarEdge[t]-e.thumbSize)*i[t],c=o[t]+r[t]-n[t];s=c/l,Number.isFinite(s)&&s>0||(s=1)}T(e.clickedObject.current,e.target,t),null==k||k.abort();const a=new AbortController;k=a;const{signal:u}=a;document.addEventListener("pointermove",(t=>{(t=>{var c;let a;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(c=e.target)||void 0===c?void 0:c.closest(".ms-slider");if(!t)return;const r=r=>{const n=t.getBoundingClientRect();return Math.round(("x"===r?n.width:n.height)/e.objLengthPerSize["x"===r?0:1])};a=[r("x"),r("y")]}const u=[e.objectsWrapperSize[0]-e.sizeLocal[0],e.objectsWrapperSize[1]-e.sizeLocal[1]];!function(e){const t=e.direction||"y";"hybrid"===t?["wrapp","slider"].includes(e.clickedObject.current)?["x","y"].forEach((t=>C(t,e.thumbRatio,e.visualDiff,e))):e.axisFromAtr&&C(e.axisFromAtr,e.thumbRatio,e.visualDiff,e):C(e.axisFromAtr?e.axisFromAtr:t,e.thumbRatio,e.visualDiff,e);const r={x:e.event.clientX,y:e.event.clientY};z&&(z.x.value=r.x,z.y.value=r.y)}(Object.assign(Object.assign({},e),{event:t,fullMargin:r,scrollElementWH:n,objectsWrapperWH:o,wrapElWH:l,visualDiff:i,thumbRatio:s,maxTopOrLeft:u,sliderElSize:a}))})(t)}),{signal:u});const d=t=>{e.isDraggingRef.current=!1,function(e){null==k||k.abort();const t=e.scrollElementRef;if(t){if(T(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=A,n=(r,n)=>{const o="x"===r,l=t[o?"scrollLeft":"scrollTop"],i=o?e.gap[0]:e.gap[1],s=t[o?"clientWidth":"clientHeight"]+i,c=Math[n?n>0?"floor":"ceil":"round"](l/s)+(null!=n?n:0);e.smoothScroll(s*c,r,e.duration)},o=(e,t)=>{Math.abs(t)>20?n(e,t>0?1:-1):n(e)};0===r.x&&0===r.y?"hybrid"===e.direction?["x","y"].forEach((e=>o(e,r[e]))):o(e.direction,r[e.direction]):Object.entries(r).forEach((([e,t])=>{0!==t&&o(e,t)}))}if(e.isTouched&&"scroll"===e.type&&"slider"!==e.clickedObject.current){const r=r=>{const n=L[r]*e.thumbRatio,o="x"===r?L.distX:L.distY;80>performance.now()-L.t&&Math.abs(n)>.05&&o>12&&function({el:e,axis:t,velocity:r,rafSchedule:n}){const o=Math.sign(r);let l=Math.abs(r);l=Math.pow(l,.92),.2>l&&(l=.2),r=l*o;const i="y"===t?"scrollTop":"scrollLeft",s="y"===t?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth;let a=performance.now();const u=()=>{const t=performance.now(),o=t-a;if(a=t,.02>Math.abs(r*=Math.exp(-.0025*o)))return;let l=e[i]+r*o;(0>l||l>s)&&(r*=.4,l=c(l,0,s)),e[i]=l,n(u)};n(u)}({el:t,axis:r,velocity:"thumb"===e.clickedObject.current?n:-n,rafSchedule:e.rafScrollAnim.schedule})};"hybrid"===e.direction?"wrapp"===e.clickedObject.current?["x","y"].forEach((e=>r(e))):r(e.axisFromAtr):r(e.axisFromAtr?e.axisFromAtr:e.direction)}z=null,0!==e.overscrollRef.current.x&&R(e.overscrollRef,"x",e.triggerUpdate),0!==e.overscrollRef.current.y&&R(e.overscrollRef,"y",e.triggerUpdate),e.clickedObject.current=null,L={x:0,y:0,t:0,distX:0,distY:0},O={x:0,y:0},A={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:s}))};document.addEventListener("pointerup",d,{signal:u}),document.addEventListener("pointercancel",d,{signal:u})}function W(e,t,r,n){return new(r||(r=Promise))((function(o,l){function i(e){try{c(n.next(e))}catch(e){l(e)}}function s(e){try{c(n.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}c((n=n.apply(e,t||[])).next())}))}function N(e,t){return e>t?Math.floor(e/t):1}"function"==typeof SuppressedError&&SuppressedError;const I=new WeakMap,H=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function Y(e,t,r=0,n=0){return o=>{var l,i,s,c;let a=!1;const u={width:(null!==(l=o.width)&&void 0!==l?l:0)-r,height:(null!==(i=o.height)&&void 0!==i?i:0)-n},d=0===u.width&&0===u.height;d&&!a&&(a=!0),(null===(s=e.current)||void 0===s?void 0:s.width)===u.width&&(null===(c=e.current)||void 0===c?void 0:c.height)===u.height||d&&a||(e.current=u,t())}}const X=()=>{var e,t;return"undefined"!=typeof window&&null!==(t=null===(e=window.matchMedia)||void 0===e?void 0:e.call(window,"(pointer: coarse)").matches)&&void 0!==t&&t};function $(e,t,r){return t?c(Math.round(e/t*e),r,e):0}function B(e,t,r,n){return t?c(e/t*(r-n),0,r-n):0}function D(){let e=null;const t=new Set;return{schedule:r=>{t.add(r),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t);t.clear(),r.forEach((e=>e()))})))},cancel:()=>{null!==e&&(cancelAnimationFrame(e),e=null,t.clear())}}}const P=t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap(P):[r]}return[t]},V=({className:l,children:c,type:f="scroll",direction:h="y",scrollPosition:g,onScrollValue:y,isScrolling:b,size:v,objectsSize:j,crossCount:M,gap:R,wrapperMargin:k,wrapperMinSize:O,wrapperAlign:A,elementsAlign:L,elementsDirection:z="row",edgeGradient:T,progressTrigger:C={wheel:!0},progressReverse:V=!1,scrollBarOnHover:q=!1,scrollBarEdge:U,thumbMinSize:K,render:_,emptyElements:G,suspending:Z=!1,fallback:J})=>{var Q,ee,te,re,ne,oe;const le=function(){const[,e]=r({});return n((()=>{e({})}),[])}(),ie=function(){const e=t(null);return null===e.current&&(e.current=""+s++),e.current}(),se=D(),ce=()=>se.schedule(le),ae=D();if(!v)throw Error('prop "size" is not provided\n morph-scroll '+ie);Object.keys(C).length;const ue=e.useRef(null),de=e.useRef(null),fe=e.useRef(null),me=e.useRef(null),he=e.useRef(new Set),pe=e.useRef(X()),ge=e.useRef(!0),ye=e.useRef(null),be=e.useRef({loaded:new Set,empty:new Set}),ve=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),xe=e.useRef(!1),we=e.useRef(!1),je=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(l,i){const s=l-t,c=i-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=l),Math.abs(c)>e&&(o=c>0?"down":"up",r=i)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),Ee=e.useRef({x:null,y:null}),Se=e.useRef({x:0,y:0}),Me=e.useRef(!1);function Re(){return e.useRef({width:0,height:0})}const ke=Re(),Oe=Re(),Ae=Re(),[Le,ze,Te,Ce,Fe,We,Ne,Ie,He,Ye,Xe]=function(...t){const r=new WeakMap,n=t=>{if(null===t)return 1;if("boolean"==typeof t)return t?2:3;if("number"==typeof t||"bigint"==typeof t)return 0|+t;if("string"==typeof t){let e=0;for(let r=0;r<t.length;r++)e=31*e+t.charCodeAt(r)>>>0;return e}if(void 0===t)return 4;if("function"==typeof t)return 5;if(e.isValidElement(t))return 6;if(Array.isArray(t)){let e=0;for(let r=0;r<t.length;r++)e=31*e+n(t[r])>>>0;return e}if(t instanceof Set)return Array.from(t).map(n).sort(((e,t)=>e-t)).reduce(((e,t)=>31*e+t>>>0),0);if(t instanceof Map)return Array.from(t.entries()).map((([e,t])=>31*n(e)+n(t)>>>0)).sort(((e,t)=>e-t)).reduce(((e,t)=>31*e+t>>>0),0);if("object"==typeof t&&null!==t){if(r.has(t))return r.get(t);const e=Object.entries(t).sort((([e],[t])=>e.localeCompare(t))).map((([,e])=>n(e))).reduce(((e,t)=>31*e+t>>>0),0);return r.set(t,e),e}return 7};return t.map(n)}(g,_,v,j,G,O,A,R,C,be.current.empty,U),$e=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=g)if("number"==typeof g||"end"===g)r=[g,g];else if(Array.isArray(g))r=g;else if("object"==typeof g){const l=g.value;"number"==typeof l||"end"===l?r=[l,l]:Array.isArray(l)&&(r=l),n=null!==(e=g.duration)&&void 0!==e?e:200,o=null!==(t=g.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[Le]),Be={color:null,size:40},De=e.useMemo((()=>"object"==typeof T?Object.assign(Object.assign({},Be),T):"string"==typeof T?{color:T,size:40}:Be),[T]),Pe=e.useMemo((()=>{const t=C.arrows,r={size:40,contentReduce:!0,loop:!1};return e.isValidElement(t)?Object.assign(Object.assign({},r),{element:t}):"object"==typeof t&&null!==t?Object.assign(Object.assign({},r),t):r}),[He]),Ve=e.useMemo((()=>e.Children.toArray(c).flatMap(P)),[c]),qe=e.useMemo((()=>Ve.map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return!("clear"===G||G&&"object"==typeof G&&"mode"in G&&"clear"===G.mode)||!(null===(t=be.current.empty)||void 0===t?void 0:t.has(e))}))),[c,Fe,Ye]),[Ue,Ke,_e,Ge]=k?o(k):[0,0,0,0],Ze=Ue+_e,Je=Ge+Ke,Qe=e.useMemo((()=>{var e,t;return"number"==typeof R?[R,R]:Array.isArray(R)?[null!==(e=R[1])&&void 0!==e?e:0,null!==(t=R[0])&&void 0!==t?t:0]:[0,0]}),[R]),et=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1,trackVisibility:!1};if("string"==typeof _)return Object.assign(Object.assign({},e),{type:_});if("object"==typeof _&&null!==_){const{type:t,rootMargin:r=e.rootMargin,stopLoadOnScroll:n=e.stopLoadOnScroll,trackVisibility:o=e.trackVisibility}=_;return{type:t,rootMargin:r,stopLoadOnScroll:n,trackVisibility:o}}return e}),[ze]),tt=e.useMemo((()=>o(et.rootMargin)),[et.rootMargin,h]),rt=e.useMemo((()=>{const[e,t]=Array.isArray(v)?v:"number"==typeof v?[v,v]:[ke.current.width,ke.current.height];if(!C.arrows||!Pe.size||!Pe.contentReduce)return[e,t,e,t];const r=2*Pe.size;let n=e,o=t;return"x"===h?n=e-r:"y"===h?o=t-r:"hybrid"===h&&(n=e-r,o=t-r),[n,o,e,t]}),[Te,He,h,Pe,ke.current.height,ke.current.width]),nt="x"===h?rt[0]:rt[1],ot=e.useMemo((()=>{if(!U)return[0,0];if("number"==typeof U){const e=2*U;return[e,e]}if(Array.isArray(U)){const[e=0,t]=U;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[Xe]),lt=e.useMemo((()=>[rt[0]-ot[0],rt[1]-ot[1]]),[ot.join(),rt[0],rt[1]]),it=e.useMemo((()=>j?Array.isArray(j)?j:o(j,!0,2):[null,null]),[Ce]),st=e.useMemo((()=>{const e=(e,t)=>"number"==typeof e?e:"firstChild"===e?t:0;return[e(it[0]&&"number"==typeof it[0]?it[0]:"y"===h&&"none"!==it[0]||"size"===it[0]?rt[0]:0,Ae.current.width),e(it[1]&&"number"==typeof it[1]?it[1]:"x"===h&&"none"!==it[1]||"size"===it[1]?rt[1]:0,Ae.current.height)]}),[it.join(),h,Ae.current.width,Ae.current.height,rt.join()]),ct=e.useMemo((()=>{const e="x"===h?1:0,t="row"===z,r=rt[e],n=st[e]+Qe[e],o="hybrid"===h?n*qe.length:r,l=Math.floor(o/n)||1,i=M&&l>=M?"hybrid"===h?Math.ceil(l/M):M:l,s=i>1&&i<qe.length?Math.ceil(qe.length/i):i<qe.length?qe.length:1,c=M&&M<qe.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===h){const e=c?t?M:i:t?qe.length:1,r=c?t?i:M:t?1:qe.length;return[a(e),a(r)]}return[a(i),a(s)]}),[z,Qe[0],Qe[1],st.join(),qe.length,h,rt.join(),M]),at=e.useMemo((()=>{const e=ct[0]?ct[0]*Qe[1]-Qe[1]:0,t=ct["x"===h?1:0],r=qe.length<t?qe.length:t;return st[0]?(st[0]+Qe[1])*r-Qe[1]:et.type?Ae.current.width+e:Oe.current.width}),[h,st[0],ct.join(),Qe[1],Oe.current.width,Ae.current.width,et.type,qe.length]),ut=e.useMemo((()=>{const e=1>ct[1]?1:ct[0]*Qe[0]-Qe[0];return st[1]?"x"===h?(st[1]+Qe[0])*ct[0]-Qe[0]:(st[1]+Qe[0])*ct[1]-Qe[0]:et.type?Ae.current.height+e:Oe.current.height}),[h,st[1],ct.join(),Qe[0],Oe.current.height,Ae.current.height,et.type]),dt=e.useMemo((()=>ut+Ze),[ut,Ze]),ft=e.useMemo((()=>at+Je),[at,Je]),mt="x"===h?ft:dt,ht="x"===h?(null===(Q=fe.current)||void 0===Q?void 0:Q.scrollLeft)||0:(null===(ee=fe.current)||void 0===ee?void 0:ee.scrollTop)||0,pt=ht>1&&!0,gt=mt>Math.round(ht+nt);let yt=!1,bt=!1;"hybrid"===h&&(yt=((null===(te=fe.current)||void 0===te?void 0:te.scrollLeft)||0)>1&&!0,bt=Math.round(((null===(re=fe.current)||void 0===re?void 0:re.scrollLeft)||0)+rt[0])<ft);const vt=e.useMemo((()=>null!=K?K:30),[K]),xt=e.useCallback((e=>C.progressElement&&mt?"x"===e?$(rt[0],ft,vt):$(rt[1],dt,vt):0),[He,mt,rt[0],rt[1],ft,vt]),wt=e.useMemo((()=>({x:"y"!==h?xt("x"):0,y:"x"!==h?xt("y"):0})),[xt,h]),jt=e.useMemo((()=>({w:rt[0]?ft-rt[0]:ft,h:rt[1]?dt-rt[1]:dt})),[ft,dt,rt[0],rt[1]]),Et={x:"y"!==h?B((null===(ne=fe.current)||void 0===ne?void 0:ne.scrollLeft)||0,jt.w,lt[0],wt.x):0,y:"x"!==h?B((null===(oe=fe.current)||void 0===oe?void 0:oe.scrollTop)||0,jt.h,lt[1],wt.y):0},St=e.useCallback((()=>{if(!et.type||1>=ct[0])return[];const e=Array.from({length:ct[0]},(()=>[])),t="x"===h&&"column"===z||"x"!==h&&"row"===z;return Array.from({length:qe.length},((e,t)=>t)).forEach((r=>{const n=t?r%ct[0]:Math.floor(r/ct[1]);e[n]&&e[n].push(r)})),e}),[qe.length,ct.join(),et.type,z,h]),Mt=e.useMemo((()=>{if(!et.type)return[{top:0,bottom:0,left:0,right:0}];let e=[],t=0;if(L){const r=Array.from({length:qe.length},((e,t)=>t)),n="x"===h?qe.length%ct[0]:qe.length%Math.ceil(qe.length/ct[0]);e=n?r.slice(-n):[],"center"===L?t=(st[0]+Qe[1])*(ct[0]-n)/2:"end"===L&&(t=(st[0]+Qe[1])*(ct[0]-n))}const r=St();return qe.map(((n,o)=>{const l=function(e,t){for(let r=0;r<t.length;r++){const n=t[r].indexOf(e);if(-1!==n)return["x"===h?n:r,["hybrid","y"].includes(h)?n:r]}return[0,0]}(o,r),i=e.length>0&&e.includes(o)?t:0,s=function(e){const t="x"===h?i:0;return e>0?t+(st[1]+Qe[0])*e:t}(ct[0]>1||["hybrid","x"].includes(h)?l[1]:o),c=st[1]?s+st[1]:s,a=function(e){const t="x"===h?0:i;return e>0?t+(st[0]+Qe[1])*e:t}(1===ct[0]&&"x"===h?o:l[0]);return{top:s,bottom:c,left:a,right:a+st[0]}}))}),[h,ct[0],st.join(),Qe[0],Qe[1],et.type,z,L,qe.join()]),Rt=e.useMemo((()=>(null==rt?void 0:rt.length)&&A?function(e,t,r,n){const[o,l="start"]="string"==typeof e?[e,e]:e,i={display:"flex"};return t[0]>r&&(i.justifyContent=H(o)),t[1]>n&&(i.alignItems=H(l)),i}(A,rt,ft,dt):{}),[A,rt.join(),dt,ft]),kt=e.useMemo((()=>[N(ft,rt[0]),N(dt,rt[1])]),[ft,dt,rt.join()]),Ot=e.useMemo((()=>"x"===h?kt[0]:kt[1]),[h,kt[0],kt[1]]),At=e.useCallback(Y(ke,ce),[]),Lt=e.useCallback(Y(Oe,ce,Je,Ze),[Je,Ze]),zt=e.useCallback(Y(Ae,ce),[]),Tt=e.useCallback(((e,t,r)=>{const n=fe.current;return n&&null!==e?function(e,t,r,n,o){return W(this,void 0,void 0,(function*(){if(!t||null==n)return null;const l="y"===e?"scrollTop":"scrollLeft",i=t[l];return i!==n?null===r?(yield function(e){return W(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(t),void(t[l]=n)):void x((()=>{const e=performance.now(),s=()=>{const c=performance.now(),a=Math.min((c-e)/r,1);t[l]=i+(n-i)*a,1>a&&o(s)};o(s)}),r,"smoothScrollBlock"+e,"exclusive"):void 0}))}(t,n,ge.current?null:r,e,ae.schedule):null}),[]),Ct=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:k?`${Ue}px ${Ke}px ${_e}px ${Ge}px`:"",height:it[1]&&"none"!==it[1]?ut+"px":"fit-content",width:it[0]&&"none"!==it[0]?at+"px":"fit-content"},R&&!et.type&&{gap:`${Qe[0]}px ${Qe[1]}px`}),O&&function(e,t,r,n,o){const l=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=l(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let i,s;return Array.isArray(e)?[i,s]=e:i=s=e,{minWidth:l(i,"x")+"px",minHeight:l(s,"y")+"px"}}(O,h,rt,Je,Ze)),("hybrid"===h||"x"===h)&&{flexShrink:0});if(et.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===ct[0]?"y"===h?"column":"row":z;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:"wrap",justifyContent:H(L)})}),[k,Ne,We,[Ue,Ke,_e,Ge,Je,Ze,Qe[0],Qe[1]].join(),rt.join(),Ie,it[1],ut,at,Ie,et.type,h,ct[0],z,L]),Ft=e.useCallback(((e,t,r)=>{var n;pe.current=X();const o=t.target;if(o.closest('\n [data-ms-no-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let l=null;r&&(l=null===(n=o.closest("scroll"===f?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),ye.current=e,F({scrollElementRef:fe.current,objectsWrapperRef:me.current,target:o,clickedObject:ye,scrollContentRef:de.current,scrollStateRef:ve.current,type:f,triggerUpdate:ce,direction:h,smoothScroll:Tt,sizeLocal:[rt[0],rt[1]],thumbSize:"x"===l?wt.x:wt.y,axisFromAtr:l,duration:$e.duration,scrollBarEdge:ot,rafScrollAnim:ae,isTouched:pe.current,gap:Qe,objectsWrapperSize:[ft,dt],overscrollRef:Se,objLengthPerSize:kt,isDraggingRef:Me})}),[h,f,rt.join(),$e.duration,Tt,ot.join(),wt.x,wt.y,Qe.join(),ft,dt,kt]),Wt=e.useCallback((e=>{Ft("thumb",e,!0)}),[Ft]),Nt=e.useCallback((e=>{fe.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:l,loop:i,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,f=(e,r,n)=>{const i=n?((e,t)=>"x"===e?t>0?0:c:t>0?0:a)(e,r):((e,r)=>{const n="x"===e,o=n?d:u,l=n?s[0]:s[1],i=t[n?"clientWidth":"clientHeight"]+l;return i*(Math.floor(Math.max(0,o)/i)+r)})(e,r);o(i,e,l)};switch(e){case"top":u>0?f("y",-1):i&&f("y",-1,!0);break;case"left":d>0?f("x",-1):i&&f("x",-1,!0);break;case"right":d+n[0]<c?f("x",1):i&&f("x",1,!0);break;case"bottom":u+n[1]<a?f("y",1):i&&f("y",1,!0)}})({arrowType:e,scrollElement:fe.current,wrapSize:[ft,dt],scrollSize:rt,smoothScroll:Tt,duration:$e.duration,loop:Pe.loop,gap:Qe})}),[rt.join(),ft,dt,$e.duration,Tt,Pe.loop,Qe.join()]),It=e.useCallback((()=>{"scroll"!==f&&rt[0]&&rt[1]&&de.current&&fe.current&&he.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var l,i;let s=I.get(t);const c=0===o?r:"x",a="x"===c?0:1;if(s&&s.elements.length===n[a]||(s={elements:Array.from(t.querySelectorAll(".ms-slider-element")),lastIndex:-1},I.set(t,s)),!s.elements.length)return;const u="x"===c?e.scrollLeft:e.scrollTop,d="x"===c?e.clientWidth:e.clientHeight;let f=Math.floor((u+d/2)/d);f!==s.lastIndex&&(-1!==s.lastIndex&&(null===(l=s.elements[s.lastIndex])||void 0===l||l.classList.remove("active")),null===(i=s.elements[f])||void 0===i||i.classList.add("active"),s.lastIndex=f)}))})(fe.current,he.current,h,kt)}),[rt.join(),h,f,kt.join()]),Ht=e.useCallback((()=>{me.current&&((e,t,r,n)=>{const o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let l=o.nextNode();for(;l;){const e=l,r=e.getAttribute(a);if(r){const o=0===e.children.length;o&&(t.current.empty||(t.current.empty=new Set),t.current.empty.add(r)),"virtual"===n&&o||t.current.loaded.add(r)}l=o.nextNode()}r()})(me.current,be,ce,et.type)}),[ze]),Yt=e.useCallback((e=>{"object"==typeof G&&"clickTrigger"in G&&void 0!==G.clickTrigger&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,l=e.target;if(!l.closest(n))return;const i=l.closest(`[${a}]`);null==i||i.classList.add("remove"),x((()=>{null==i||i.classList.remove("remove"),r()}),o)})(e,G.clickTrigger,Ht)}),[Fe,Ht]),Xt=e.useCallback((e=>{w("removeHover");const t=de.current,r=ue.current,n=fe.current;if(!t||!r||!n)return;if($e.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;je.current.update(t,r)}null==y||y(n.scrollLeft,n.scrollTop);const o=t.querySelectorAll("scroll"===f?".ms-bar":".ms-slider");q&&o.length>0&&!xe.current&&o.forEach((e=>{e.classList.contains("hover")||S(e)})),xe.current=!0,null==b||b(!0),x((()=>{je.current.reset(),xe.current=!1,null==b||b(!1),et.type&&Ht(),q&&o.length>0&&!ye.current&&x((()=>{o.forEach((e=>{E(e)}))}),1e3,"removeHover")}),200,"isScrolling"),se.schedule((()=>{"scroll"!==f&&It(),le()}))}),[y,b,f,It,Ht,q,et.type]),$t=e.useCallback((e=>{if(we.current)return;const t="object"==typeof C.wheel&&"string"==typeof C.wheel.changeDirectionKey?C.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==h||we.current||(e.stopPropagation(),we.current=!0,ce())}),[h,He]),Bt=e.useCallback((e=>{we.current&&(e.stopPropagation(),we.current=!1,ce())}),[]);e.useEffect((()=>{if(pe.current||"hybrid"!==h)return;const e=me.current,t=fe.current;return e&&t?(e.clientWidth+Je>t.clientWidth&&e.clientHeight+Ze>t.clientHeight&&(t.addEventListener("keydown",$t),t.addEventListener("keyup",Bt)),()=>{t.removeEventListener("keydown",$t),t.removeEventListener("keyup",Bt)}):void 0}),[h,He,Te,Ce,qe.join(),Je,Ze]),e.useEffect((()=>{(G||et.type)&&Ht()}),[Fe,et.type,Ht,qe.length]),e.useEffect((()=>{if(pe.current)return;const e=fe.current;if(!e)return;const t="hybrid"===h&&"object"==typeof C.wheel&&C.wheel.changeDirection?"x":h,r="hybrid"===h&&ut+Ze<=rt[1]||we.current?["hybrid","y"].includes(t)?"x":"y":t,n=t=>{t.preventDefault(),u(t,e,ve.current,r)};return C.wheel&&e.addEventListener("wheel",n,{passive:!1}),()=>{e.removeEventListener("wheel",n)}}),[h,He,ut,rt[1],Ze,we.current]),e.useEffect((()=>{se.schedule((()=>{("hybrid"===h?["x","y"]:[h]).forEach((e=>{const t=$e.value["x"===e?0:1];if("end"===t){if(je.current.get()[e]===("x"===e?"left":"up"))return;Tt("x"===e?jt.w:jt.h,e,$e.duration)}else"number"==typeof t&&Ee.current[e]!==t&&(Ee.current[e]=t,Tt(t,e,$e.duration))}))}))}),[h,Le,jt.w,jt.h,$e.value.join()]),e.useEffect((()=>{const e=ve.current.animationFrameId;return(et.type||b)&&b&&b(!1),requestAnimationFrame((()=>ge.current=!1)),()=>{e&&cancelAnimationFrame(e),ve.current.animationFrameId&&cancelAnimationFrame(ve.current.animationFrameId),ae.cancel()}}),[]),e.useEffect((()=>{const e=fe.current;if(!e)return;const t=e=>{Ft("wrapp",e)};if(C.content||!C.content&&pe.current&&C.wheel){if(!0===C.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[He,Ft]),e.useEffect((()=>{const e=de.current;if(!e||!q)return;if(!he.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&ye.current?document.addEventListener("mouseup",t):Array.from(he.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if("mouseleave"===t.type&&e.removeAttribute("data-mouse-hover"),null==r?void 0:r.current)return;E(e)}else"mouseenter"===t.type&&e.setAttribute("data-mouse-hover",""),S(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:xe})}))},r=(t,r)=>{pe.current?(Array.from(he.current).forEach((e=>e[t]("pointerdown",r))),document[t]("pointerup",r),document[t]("pointercancel",r)):(e[t]("mouseenter",r),e[t]("mouseleave",r))};return r("addEventListener",t),()=>{r("removeEventListener",t)}}),[q,f,h,he.current.size]),e.useEffect((()=>{"scroll"!==f&&se.schedule(It)}),[f,It,rt.join()]);const Dt=e.useCallback(((t,r,n,o,l)=>{const i=Object.assign(Object.assign({width:st[0]?st[0]+"px":void 0,height:st[1]?st[1]+"px":void 0},et.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof l&&{"--content-visibility":l}),s=Z?e.createElement(e.Suspense,{fallback:J},o):o;return e.createElement("div",Object.assign({key:t},et.type||G?{[a]:""+t}:{},{className:"ms-object-box",style:i,onClick:G?Yt:void 0}),s)}),[Z,!!J,st.join(),ze,Fe,ct[0],Yt,et.type]),Pt=e.useMemo((()=>{const t=new Map;return Ve.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[Ve]),Vt=e.useMemo((()=>[{positionType:"x"===h?"left":"top",visibility:pt},{positionType:"x"===h?"right":"bottom",visibility:gt},..."hybrid"===h?[{positionType:"left",visibility:yt},{positionType:"right",visibility:bt}]:[]]),[pt,gt,h,yt,bt]),qt=e.useMemo((()=>({width:rt[2]+"px",height:rt[3]+"px"})),[rt]),Ut=e.useMemo((()=>{var e;return null!==(e={x:ft>rt[0]?"scroll hidden":"hidden",y:dt>rt[1]?"hidden scroll":"hidden",hybrid:`${ft>rt[0]?"scroll":"hidden"} ${dt>rt[1]?"scroll":"hidden"}`,hide:"hidden"}[C.wheel||C.content&&"scroll"===f?h:"hide"])&&void 0!==e?e:"hidden"}),[ft,dt,rt,He,h]),Kt=e.useMemo((()=>T?Vt.map((({positionType:t,visibility:r})=>e.createElement(m,{key:"edge-"+t,edgeGradient:De,visibility:r,edgeType:t,size:rt}))):null),[T,Vt,De,Te]),_t=e.useMemo((()=>C.arrows?Vt.map((({positionType:t,visibility:r})=>e.createElement(p,{key:"arrow-"+t,visibility:r,arrows:Pe,arrowType:t,handleArrow:Nt,size:rt[0]}))):null),[He,Vt,Pe,Nt,rt[0]]),Gt=()=>{var t,r;const n=(null===(t=fe.current)||void 0===t?void 0:t.scrollLeft)||0,o=(null===(r=fe.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:me,style:Object.assign(Object.assign(Object.assign({},Ct),(Se.current.x||Se.current.y)&&{transform:`translate(${Se.current.x}px, ${Se.current.y}px)`}),Me.current&&{pointerEvents:"none"})},qe.map(((t,r)=>((t,r,n,o)=>{var l;const s=Pt.get(t),c=et.stopLoadOnScroll&&xe.current&&!be.current.loaded.has(t)?J:(null===(l=be.current.empty)||void 0===l?void 0:l.has(t))?G&&"object"==typeof G&&e.isValidElement(G)?G:G&&"object"==typeof G&&"mode"in G&&"object"==typeof G.mode&&"fallback"in G.mode?G.mode.fallback:J:s,a="firstChild"!==it[0]&&"firstChild"!==it[1]||0!==r?c:e.createElement(i,{onResize:zt},c);if(!et.type)return Dt(t,0,0,a);const{top:u,bottom:d,left:f,right:m}=Mt[r],p=(e=!0)=>{const t=e?tt:[0,0,0,0],r=e=>{const r="x"===e?n:o,l=r+("x"===e?rt[0]:rt[1]),i="x"===e?f-t[3]:u-t[2],s="x"===e?m+t[1]:d+t[0],c=s-i;if(0>=c)return 0;const a=Math.min(s,l)-Math.max(i,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===h){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===h?"x":"y")},g=p(),y=et.trackVisibility?p(!1):null;if("lazy"===et.type){const e=be.current.loaded.has(t);return g&&!e&&be.current.loaded.add(t),e?Dt(t,u,f,a,y):null}return g?Dt(t,u,f,a,y):null})(t,r,n,o))))},Zt=e.useMemo((()=>{const e={position:"relative",width:rt[0]+"px",height:rt[1]+"px"};return C.arrows&&Pe.contentReduce&&Pe.size&&("x"===h?e.left=Pe.size+"px":"y"===h?e.top=Pe.size+"px":(e.top=Pe.size+"px",e.left=Pe.size+"px")),e}),[rt,He,Pe,h]),Jt=e.createElement("div",{"morph-scroll":""+ie,className:l,ref:ue,style:qt},e.createElement("div",{className:"ms-content",ref:de,style:Object.assign(Object.assign(Object.assign({},Zt),{transform:"translateZ(0)"}),pe.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:fe,onScroll:Xt,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},Rt),"boolean"!=typeof C.progressElement||!1===C.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:Ut}),C.content&&{cursor:"grab"})},st[0]&&st[1]?Gt():e.createElement(i,{onResize:Lt,style:Rt},Gt())),Kt,C.progressElement&&!0!==C.progressElement?[{shouldRender:("x"!==h?wt.y-ot[1]:wt.x-ot[0])<nt,direction:h,thumbSize:"x"!==h?wt.y:wt.x,thumbSpace:"x"!==h?Et.y:Et.x,objLengthPerSize:Ot,progressReverseIndex:0},{shouldRender:"hybrid"===h&&wt.x-ot[0]<lt[0],direction:"x",thumbSize:wt.x,thumbSpace:Et.x,objLengthPerSize:kt[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e)).map((t=>{const r="boolean"==typeof V?V:V[t.progressReverseIndex];return e.createElement(d,{key:t.direction,type:f,direction:t.direction,progressReverse:r,size:lt,progressTrigger:C,scrollBarOnHover:q,scrollBarEvent:"sliderMenu"===f?Tt:Wt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:It,duration:$e.duration,isTouched:pe.current,scrollStateRef:ve,scrollEl:fe,scrollBarsRef:he,triggerUpdate:ce,overscroll:Se})})):null),_t);return"auto"===v?e.createElement(i,{measure:"outer",onResize:At},Jt):Jt};V.displayName="MorphScroll";const q={MorphScroll:V,ResizeTracker:i,IntersectionTracker:l};export{l as IntersectionTracker,V as MorphScroll,i as ResizeTracker,q as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "morphing-scroll",
3
- "version": "2.6.0",
3
+ "version": "2.7.1",
4
4
  "description": "React library for custom object scrolling and scrollbar styling",
5
5
  "author": "Georg Schilin",
6
6
  "license": "MIT",
package/types/index.d.ts CHANGED
@@ -17,7 +17,7 @@ import MorphScrollT from "./morphScroll";
17
17
  * ### Links:
18
18
  * [ResizeTracker Documentation](https://www.npmjs.com/package/morphing-scroll)
19
19
  *
20
- * [MDN Reference for Resize Observer API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)
20
+ * [MDN Resize Observer API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)
21
21
  */
22
22
  declare const ResizeTracker: React.FC<ResizeTrackerT>;
23
23
 
@@ -37,7 +37,7 @@ declare const ResizeTracker: React.FC<ResizeTrackerT>;
37
37
  * ### Links:
38
38
  * [IntersectionTracker Documentation](https://www.npmjs.com/package/morphing-scroll)
39
39
  *
40
- * [MDN Reference for Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)
40
+ * [MDN Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)
41
41
  */
42
42
  declare const IntersectionTracker: React.FC<IntersectionTrackerT>;
43
43
 
@@ -150,7 +150,7 @@ declare const Morph: {
150
150
  * ### Links:
151
151
  * [ResizeTracker Documentation](https://www.npmjs.com/package/morphing-scroll)
152
152
  *
153
- * [MDN Reference for Resize Observer API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)
153
+ * [MDN Resize Observer API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)
154
154
  */
155
155
  ResizeTracker: React.FC<ResizeTrackerT>;
156
156
  /** ---
@@ -169,7 +169,7 @@ declare const Morph: {
169
169
  * ### Links:
170
170
  * [IntersectionTracker Documentation](https://www.npmjs.com/package/morphing-scroll)
171
171
  *
172
- * [MDN Reference for Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)
172
+ * [MDN Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)
173
173
  */
174
174
  IntersectionTracker: React.FC<IntersectionTrackerT>;
175
175
  };
@@ -78,11 +78,12 @@ type MorphScrollT = {
78
78
  * ```
79
79
  */
80
80
  scrollPosition?:
81
+ | null
81
82
  | number
82
83
  | "end"
83
- | (number | "end")[]
84
+ | (null | number | "end")[]
84
85
  | {
85
- value: number | "end" | (number | "end")[];
86
+ value: null | number | "end" | (null | number | "end")[];
86
87
  duration?: number;
87
88
  updater?: boolean;
88
89
  };
@@ -299,7 +300,8 @@ type MorphScrollT = {
299
300
  * - `arrows`: *add custom arrows*
300
301
  * @note
301
302
  * - *`progressElement` can be thumb or slider, use props `type`*
302
- * - *If `progressElement` is true and `type` is "scroll", the default browser scroll element will be used*
303
+ * - *if `progressElement` is `true` and `type` is `"scroll"`, the default browser scroll element will be used*
304
+ * - *by using `content` drag scrolling will not work with interactive elements like button ([more...](https://www.npmjs.com/package/morphing-scroll))*
303
305
  * @example
304
306
  * ```tsx
305
307
  * <MorphScroll {...props}
@@ -314,7 +316,7 @@ type MorphScrollT = {
314
316
  | boolean
315
317
  | { changeDirection?: boolean; changeDirectionKey?: string };
316
318
  content?: boolean;
317
- progressElement?: boolean | React.ReactNode;
319
+ progressElement?: boolean | React.ReactNode | React.ReactNode[];
318
320
  arrows?:
319
321
  | boolean
320
322
  | React.ReactNode
@@ -396,17 +398,19 @@ type MorphScrollT = {
396
398
  * ## ![logo](https://github.com/voodoofugu/morphing-scroll/raw/main/src/assets/morphing-scroll-logo.png)
397
399
  * ### ***render***:
398
400
  * rendering strategy for performance optimization.
399
- * @description
400
- * - `"lazy"`: *does not deleted content when it leaves the viewport*
401
- * - `"virtual"`: *deletes content when it leaves the viewport*
401
+ * @descriptions
402
+ * - `type` determines the render strategy:
403
+ * - `"lazy"`: *render once when visible*
404
+ * - `"virtual"`: *render only when visible*
402
405
  * - `rootMargin`: *distance for loading from the root element*
403
406
  * - `stopLoadOnScroll`: *stops loading content when scrolling*
407
+ * - `trackVisibility`: *sets the `--content-visibility` variable*
404
408
  * @note
405
409
  * *`render` is not compatible with `objectsSize: "none"`*
406
410
  * @example
407
411
  * ```tsx
408
412
  * <MorphScroll {...props}
409
- * render="virtual"
413
+ * render="lazy"
410
414
  * >
411
415
  * {children}
412
416
  * </MorphScroll>
@@ -419,6 +423,7 @@ type MorphScrollT = {
419
423
  type: "lazy" | "virtual";
420
424
  rootMargin?: number | number[];
421
425
  stopLoadOnScroll?: boolean;
426
+ trackVisibility?: boolean;
422
427
  };
423
428
  /**---
424
429
  * ## ![logo](https://github.com/voodoofugu/morphing-scroll/raw/main/src/assets/morphing-scroll-logo.png)
@@ -431,19 +436,20 @@ type MorphScrollT = {
431
436
  * @example
432
437
  * ```tsx
433
438
  * <MorphScroll {...props}
434
- * emptyElements={{
435
- * mode: "clear",
436
- * clickTrigger: ".close-button"
437
- * }}
439
+ * emptyElements="clear"
438
440
  * >
439
441
  * {children}
440
442
  * </MorphScroll>
441
443
  * ```
442
444
  */
443
- emptyElements?: {
444
- mode: "clear" | "fallback" | { fallback: React.ReactNode };
445
- clickTrigger?: string | { selector: string; delay?: number };
446
- };
445
+ emptyElements?:
446
+ | "clear"
447
+ | "fallback"
448
+ | React.ReactNode
449
+ | {
450
+ mode: "clear" | "fallback" | { fallback: React.ReactNode };
451
+ clickTrigger?: string | { selector: string; delay?: number };
452
+ };
447
453
  /**---
448
454
  * ## ![logo](https://github.com/voodoofugu/morphing-scroll/raw/main/src/assets/morphing-scroll-logo.png)
449
455
  * ### ***suspending***: