morphing-scroll 2.8.9 → 2.9.0

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:i,threshold:l,rootMargin:s,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=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:i,threshold:l,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[h,i,l,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:i})=>{const l=e.useRef(null);e.useEffect((()=>{const e=l.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)i&&i(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,i]);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:l,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};n.displayName="ResizeTracker";let o=1;function i(e,t=0,r=1/0,n=!0){return Math.max(t,Math.min(n?Math.round(e):e,r))}const l="wrap-id";function s(e,t,r,n,o){t.matches(":focus")||t.focus(),n.animating||(n.targetScrollX=i(t.scrollLeft,0,r[0]),n.targetScrollY=i(t.scrollTop,0,r[1])),"x"===o?n.targetScrollX=i(n.targetScrollX+e.deltaY,0,r[0]):n.targetScrollY=i(n.targetScrollY+e.deltaY,0,r[1]),n.animating||(n.animating=!0,n.animationFrameId=requestAnimationFrame((function e(){let l;if("x"===o){const e=i(t.scrollLeft+.4*(n.targetScrollX-t.scrollLeft),0,r[0]);t.scrollLeft=e,l=Math.abs(e-n.targetScrollX)}else{const e=i(t.scrollTop+.4*(n.targetScrollY-t.scrollTop),0,r[1]);t.scrollTop=e,l=Math.abs(e-n.targetScrollY)}l>2.5?n.animationFrameId=requestAnimationFrame(e):("x"===o?t.scrollLeft=i(n.targetScrollX,0,r[0]):t.scrollTop=i(n.targetScrollY,0,r[1]),n.animating=!1,n.animationFrameId=null)})))}const c=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:i,scrollBarOnHover:l,scrollBarEvent:c,thumbSize:a,thumbSpace:u,objLengthPerSize:d,sliderCheckLocal:m,duration:f,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v,maxScrollSize:x})=>{const w=e.useRef(null),E=e.useRef(null),M=["hybrid","y"].includes(r)?"y":"x",j=Math.abs(v.current[M])*(a/200),S=a-j,k=0>v.current[M]?u+j:u,A=e.useMemo((()=>{if("scroll"===t)return;const r=o["x"===M?0: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,M,f,m)}:void 0},Array.isArray(i[0].progressElement)?i[0].progressElement[o]:i[0].progressElement)))}),[d,t,i[1],f,m,o[0],o[1],c]),O=e.useMemo((()=>"x"!==r?"y":"x"),[r]),L=o["x"===O?0:1],R="scroll"!==t?"":a+2*u>L?"flex-end":"flex-start";e.useEffect((()=>{if(h||!i[0].wheel)return;const e=w.current,t=g.current;if(!e||!t)return;let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>s(e,t,x,p.current,O);return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[O]),e.useEffect((()=>{const e="slider"===t?w.current:E.current;if(!e||"sliderMenu"===t)return;const r=e=>c(e);return e.addEventListener("pointerdown",r),()=>e.removeEventListener("pointerdown",r)}),[c,t]),e.useEffect((()=>{const e=w.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[a]);const z=Object.assign({position:"absolute"},l&&{opacity:0,transition:"opacity 0.2s ease-in-out"});return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+O,ref:w,"data-direction":O,style:Object.assign(Object.assign(Object.assign({},z),{width:"fit-content",height:L+"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:E,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${k}px)`},i[0].progressElement&&{cursor:"grab"}),{display:"flex",alignItems:R})},i[0].progressElement)):d>1&&i[0].progressElement&&e.createElement("div",{className:"ms-slider ms-"+O,ref:w,"data-direction":O,style:Object.assign(Object.assign(Object.assign(Object.assign({},z),{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}))},A))};c.displayName="ScrollBar";const a=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const i=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)"}:{}),l=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:l,style:i})};a.displayName="Edge";var u=e.memo(a);const d=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:i})=>{const l=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:i+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=l.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:l,style:s},r.element)};d.displayName="Arrow";var m=e.memo(d);let f=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_"+f++;if(0===t)return e(),o;const i=n||"default",l=performance.now()+t;if("exclusive"===i){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:l,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=>{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)},x=e=>{const t=e.getAttribute("data-direction");b("remove"+t),e.style.opacity="1",e.classList.remove("leave"),e.classList.add("hover")},w=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,i)=>{const l=null!=i?i:++t;return r.delete(l),r.set(l,o),null===e&&(e=requestAnimationFrame(n)),l},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();w.start((()=>{const i=performance.now(),l=Math.min((i-o)/140,1);return 1>l?(e.current[t]=n*(1-l),r(),!0):(e.current[t]=0,r(),!1)}))};let M,j={x:0,y:0},S={x:0,y:0},k={x:0,y:0,t:0,distX:0,distY:0},A=null;const O=(e,t,r,n)=>{if(!e)return;let o=null;["thumb","slider"].includes(e)?o="slider"===e?null==t?void 0:t.closest(".ms-slider"):t:"wrapp"===e&&(o=r),((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 user-select: none;\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")}})(o,n)},L=(e,t,r,n)=>{"x"===e?(r.scrollStateRef.targetScrollX=n,t.scrollLeft!==n&&(t.scrollLeft=n)):(r.scrollStateRef.targetScrollY=n,t.scrollTop!==n&&(t.scrollTop=n))},R=(e,t,r,n)=>{var o,l;const s=n.scrollElement;if(!s)return;const c="x"===e,a={x:n.event.clientX,y:n.event.clientY};if(!a)return;const u=(e,t,r)=>{if(0===e)return 0;const o="x"===t?n.sizeLocal[0]:n.sizeLocal[1],l=.14*Math.max(600,o),s=Math.abs(e);return i(e*l/(l+(r?-s:s)),-150,150)};if(!A)return void(A={x:{value:a.x,rest:0,raw:u(n.overscrollRef.current.x,"x",!0)},y:{value:a.y,rest:0,raw:u(n.overscrollRef.current.y,"y",!0)}});const d=A,m={x:a.x-d.x.value,y:a.y-d.y.value},f=Math.abs(j[e]);if(f>2?n.isDraggingRef.current=!0:3>f&&(j[e]+=m[e]),n.isTouched){const e=performance.now();if(k.t){const t=Math.max(e-k.t,8);k={x:.8*k.x+m.x/t*.2,y:.8*k.y+m.y/t*.2,t:e,distX:(null!==(o=k.distX)&&void 0!==o?o:0)+Math.abs(m.x),distY:(null!==(l=k.distY)&&void 0!==l?l:0)+Math.abs(m.y)}}else k.t=e}const h="wrapp"===n.clickedObject.current?-m[e]:m[e],p=c?"scrollLeft":"scrollTop",g=c?0:1,y=(t,r,o)=>{const l=A[e],a=c?n.maxScrollSize[0]:n.maxScrollSize[1];if(!Number.isFinite(t)||!Number.isFinite(r))return void(A=null);if(0!==l.raw){const t=l.raw;return l.raw+=.6*r,o&&(n.overscrollRef.current[e]=u(l.raw,e),n.triggerUpdate()),Math.sign(l.raw)!==Math.sign(t)?(l.raw=0,void(o&&(n.overscrollRef.current[e]=0,n.triggerUpdate()))):void 0}if(0>=a)return void L(e,s,n,0);const d=s[p];if(0>=d&&0>t||d>=a&&t>0)return l.raw+=r,void(o&&(n.overscrollRef.current[e]=u(l.raw,e),n.triggerUpdate()));const m=i(s[p]+t,0,a);L(e,s,n,m)};if("thumb"===n.clickedObject.current&&"slider"!==n.type){const r=h*t+d[e].rest,n=Math.trunc(r);return d[e].rest=r-n,void y(n,h,!1)}if("slider"===n.type&&(S[e]+=h),"wrapp"===n.clickedObject.current)return void y(h/r[g],m[e],!0);const b=s[p];if(n.sliderElSize&&Math.abs(S[e])<n.sliderElSize[c?0:1])return;const v=e=>{const t=s[c?"clientWidth":"clientHeight"]+n.gap[g];return t*(Math.floor(Math.max(0,b)/t)+e)},x=h>0&&b+n.sizeLocal[g]<n.wrapElWH[g]?v(1):0>h&&b>0?v(-1):null;S[e]=0,n.smoothScroll(x,e,10)};function z(e){w.stop(),["x","y"].forEach((t=>{e.rafScrollAnim.cancel(),b("smoothScrollBlock"+t)}));const t=e.scrollElement;if(!t)return;e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop,k={x:0,y:0,t:0,distX:0,distY:0};const r=[t.scrollWidth,t.scrollHeight],n=["scroll","slider"].includes(e.type)?function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(t):[];let o=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,r=(e.sizeLocal[t]-e.scrollBarEdge[t]-e.thumbSize)*n[t];o=e.maxScrollSize[t]/r,Number.isFinite(o)&&o>0||(o=1)}O(e.clickedObject.current,e.target,t,"start"),null==M||M.abort();const l=new AbortController;M=l;const{signal:s}=l;document.addEventListener("pointermove",(t=>{(t=>{var i;let l;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(i=e.target)||void 0===i?void 0:i.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])};l=[r("x"),r("y")]}!function(e){const t=e.direction||"y";"hybrid"===t?["wrapp","slider"].includes(e.clickedObject.current)?["x","y"].forEach((t=>R(t,e.thumbRatio,e.visualDiff,e))):e.axisFromAtr&&R(e.axisFromAtr,e.thumbRatio,e.visualDiff,e):R(e.axisFromAtr?e.axisFromAtr:t,e.thumbRatio,e.visualDiff,e);const r={x:e.event.clientX,y:e.event.clientY};A&&(A.x.value=r.x,A.y.value=r.y)}(Object.assign(Object.assign({},e),{event:t,wrapElWH:r,visualDiff:n,thumbRatio:o,sliderElSize:l}))})(t)}),{signal:s});const c=t=>{e.isDraggingRef.current=!1,function(e){null==M||M.abort();const t=e.scrollElement;if(t){if(O(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=S,n=(r,n)=>{const o="x"===r,i=o?e.maxScrollSize[0]:e.maxScrollSize[1],l=t[o?"scrollLeft":"scrollTop"],s=o?e.gap[0]:e.gap[1],c=t[o?"clientWidth":"clientHeight"]+s,a=(Math[n?n>0?"floor":"ceil":"round"](l/c)+(null!=n?n:0))*c;a>i||0>a||e.smoothScroll(a,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 l=Math.abs(r);l=Math.pow(l,.92),.2>l&&(l=.2),r=l*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 l=e[s]+r*o;(0>l||l>c)&&(r*=.4,l=i(l,0,c)),e[s]=l,n("step",u)};n("step",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)}A=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},j={x:0,y:0},S={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:o}))};document.addEventListener("pointerup",c,{signal:s}),document.addEventListener("pointercancel",c,{signal:s})}function T(e,t,r,n){return new(r||(r=Promise))((function(o,i){function l(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(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(l,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,N=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function I(e,t,r=0,n=0){return o=>{var i,l,s,c;let a=!1;const u={width:(null!==(i=o.width)&&void 0!==i?i:0)-r,height:(null!==(l=o.height)&&void 0!==l?l: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 Y=()=>{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 X(e,t,r){return t?i(Math.round(e/t*e),r,e):0}function H(e,t,r,n){return t?i(e/t*(r-n),0,r-n):0}function W(){let e=null;const t=new Map;return{schedule:(r,n)=>{t.set(r,n),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t.values());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=40,P="ms-under-drag";let D,V=null,q=!1;const U={x:0,y:0},_={x:0,y:0};let K=!1,G=null,Z="",J=null,Q=null,ee=null;const te=W(),re=()=>{Q&&Q.removeAttribute(P),G=null,Q=null,J=null,Z="",ee=null};function ne(e,t,r,n,o,i){const l=e-t,s=r-e;return B>l&&n>0?{dir:-1,distance:l}:B>s&&i>n+o?{dir:1,distance:s}:null}function oe(e){const t=i((B-Math.abs(e))/B,0,1,!1);return t*t*20|0}function ie(){if(!G)return;const{parent:e,element:t,direction:r}=G,n=t.getBoundingClientRect(),o=_.x,i=_.y;if(o<n.left-B||o>n.right+B||i<n.top-B||i>n.bottom+B)return void re();let l=null,s=null,c=0,a=0;const u="x"!==r?ne(i,n.top,n.bottom,t.scrollTop,t.clientHeight,t.scrollHeight):null;u&&(l=-1===u.dir?"top":"bottom",a=oe(u.distance)*u.dir);const d="y"!==r?ne(o,n.left,n.right,t.scrollLeft,t.clientWidth,t.scrollWidth):null;d&&(s=-1===d.dir?"left":"right",c=oe(d.distance)*d.dir),Z=[l,s].filter(Boolean).join(" "),Z!==ee&&(e.setAttribute(P,Z),ee=Z),(c||a)&&t.scrollBy(c,a),te.schedule("autoScrollLoop",ie)}function le(e){e instanceof DragEvent&&0===e.buttons?se():_.x===e.clientX&&_.y===e.clientY||(_.x=e.clientX,_.y=e.clientY,te.schedule("onMove",(()=>{if(!K){const e=_.x-U.x,t=_.y-U.y;if(10>Math.hypot(e,t))return;K=!0}const e=document.elementFromPoint(_.x,_.y);if(!e)return;const t=e.closest("[morph-scroll]");if(!t&&!G)return void re();const r=t?ae.get(t):G;r&&(G=r,J!==r.element&&(Q&&Q!==r.parent&&Q.removeAttribute(P),J=r.element,Q=r.parent,Q.setAttribute(P,Z),ee=Z,ie()))})))}function se(){null==V||V.abort(),V=null,K=!1,te.cancel(),re()}function ce(e){const t=e instanceof PointerEvent;if(t&&!e.target.closest("[ms-custom-drag]"))return;U.x=e.clientX,U.y=e.clientY,null==V||V.abort();const r=new AbortController;V=r;const{signal:n}=r;t?(document.addEventListener("pointermove",le,{signal:n}),document.addEventListener("pointerup",se,{signal:n})):(document.addEventListener("dragover",le,{signal:n}),document.addEventListener("dragend",se,{signal:n}),document.addEventListener("drop",se,{signal:n}),document.addEventListener("pointerdown",se,{signal:n}),window.addEventListener("blur",se,{signal:n}))}const ae=new Map;const ue=({className:r,children:a,type:d="scroll",direction:f="y",scrollPosition:h,onScrollValue:p,isScrolling:g,size:w,objectsSize:E,crossCount:M,gap:j,wrapperMargin:S,wrapperMinSize:k,wrapperAlign:A,elementsAlign:O,elementsDirection:L="row",edgeGradient:R,progressTrigger:B={wheel:!0},progressReverse:P=!1,scrollBarOnHover:U=!1,scrollBarEdge:_,thumbMinSize:K,render:G,emptyElements:Z,suspending:J=!1,fallback:Q,dragScroll:ee})=>{var te,re,ne,oe,ie,le;const se=function(){const[,t]=e.useState({});return e.useCallback((()=>{t({})}),[])}(),ue=function(){const t=e.useRef(null);return null===t.current&&(t.current=""+o++),t.current}(),de=W(),me=()=>de.schedule("triggerUpdate",se),fe=W();if(!w)throw Error('prop "size" is not provided'+("\n morph-scroll "+ue));Object.keys(B).length,"none"===E||Array.isArray(E)&&("none"===E[0]||E[1]);const he=e.useRef(null),pe=e.useRef(null),ge=e.useRef(null),ye=e.useRef(null),be=e.useRef(new Set),ve=e.useRef(Y()),xe=e.useRef(!0),we=e.useRef(null),Ee=e.useRef({loaded:new Set,empty:new Set}),Me=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),je=e.useRef(!1),Se=e.useRef(!1),ke=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(i,l){const s=i-t,c=l-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=i),Math.abs(c)>e&&(o=c>0?"down":"up",r=l)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),Ae=e.useRef({x:null,y:null}),Oe=e.useRef({x:0,y:0}),Le=e.useRef(!1);function Re(){return e.useRef({width:0,height:0})}const ze=Re(),Te=Re(),Ce=Re(),[Fe,Ne,Ie,Ye,Xe,He,We,$e,Be,Pe,De]=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)}(h,G,w,E,Z,k,A,j,B,Ee.current.empty,_),Ve=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=h)if("number"==typeof h||"end"===h)r=[h,h];else if(Array.isArray(h))r=h;else if("object"==typeof h){const i=h.value;"number"==typeof i||"end"===i?r=[i,i]:Array.isArray(i)&&(r=i),n=null!==(e=h.duration)&&void 0!==e?e:200,o=null!==(t=h.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[Fe]),qe={color:null,size:40},Ue=e.useMemo((()=>"object"==typeof R?Object.assign(Object.assign({},qe),R):"string"==typeof R?{color:R,size:40}:qe),[R]),_e=e.useMemo((()=>{const t=B.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}),[Be]),Ke=e.useMemo((()=>e.Children.toArray(a).flatMap($)),[a]),Ge=e.useMemo((()=>Ke.map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return!("clear"===Z||Z&&"object"==typeof Z&&"mode"in Z&&"clear"===Z.mode)||!(null===(t=Ee.current.empty)||void 0===t?void 0:t.has(e))}))),[a,Xe,Pe]),[Ze,Je,Qe,et]=S?t(S):[0,0,0,0],tt=Ze+Qe,rt=et+Je,nt=e.useMemo((()=>{var e,t;return"number"==typeof j?[j,j]:Array.isArray(j)?[null!==(e=j[1])&&void 0!==e?e:0,null!==(t=j[0])&&void 0!==t?t:0]:[0,0]}),[j]),ot=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1,trackVisibility:!1};if("string"==typeof G)return Object.assign(Object.assign({},e),{type:G});if("object"==typeof G&&null!==G){const{type:t,rootMargin:r=e.rootMargin,stopLoadOnScroll:n=e.stopLoadOnScroll,trackVisibility:o=e.trackVisibility}=G;return{type:t,rootMargin:r,stopLoadOnScroll:n,trackVisibility:o}}return e}),[Ne]),it=e.useMemo((()=>t(ot.rootMargin)),[ot.rootMargin,f]),lt=e.useMemo((()=>{const[e,t]=Array.isArray(w)?w:"number"==typeof w?[w,w]:[ze.current.width,ze.current.height];if(!B.arrows||!_e.size||!_e.contentReduce)return[e,t,e,t];const r=2*_e.size;let n=e,o=t;return"x"===f?n=e-r:"y"===f?o=t-r:"hybrid"===f&&(n=e-r,o=t-r),[n,o,e,t]}),[Ie,Be,f,_e,ze.current.height,ze.current.width]),st="x"===f?lt[0]:lt[1],ct=e.useMemo((()=>{if(!_)return[0,0];if("number"==typeof _){const e=2*_;return[e,e]}if(Array.isArray(_)){const[e=0,t]=_;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[De]),at=e.useMemo((()=>[lt[0]-ct[0],lt[1]-ct[1]]),[ct.join(),lt[0],lt[1]]),ut=e.useMemo((()=>E?Array.isArray(E)?E:t(E,!0,2):[null,null]),[Ye]),dt=e.useMemo((()=>{const{height:e,width:t}=Ce.current,r=(e,t,r)=>t||("number"==typeof e?e:"size"===e?r:0);return[r(ut[0],t,lt[0]),r(ut[1],e,lt[1])]}),[ut.join(),f,Ce.current.width,Ce.current.height,lt.join()]),mt=e.useMemo((()=>G&&Z&&!Q?e.createElement("div",{className:"ms-empty-element"}):Q),[!!Q,Ne,Xe]),ft=e.useMemo((()=>{if("none"===ut[0]||"none"===ut[1])return[1,Ge.length];const e="x"===f?1:0,t="row"===L,r=lt[e],n=dt[e]?dt[e]+nt[e]:0,o="hybrid"===f&&r?n*Ge.length:r,i=n?Math.floor(o/n):1;let l=M&&i>=M?"hybrid"===f?Math.ceil(i/M):M:i;const s=l>1&&l<Ge.length?Math.ceil(Ge.length/l):l<Ge.length?Ge.length:1;t||(l=Math.ceil(Ge.length/s));const c=M&&M<Ge.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===f){const e=c?t?M:l:t?Ge.length:1,r=c?t?l:M:t?1:Ge.length;return[a(e),a(r)]}return[a(l),a(s)]}),[L,nt[0],nt[1],dt[0],dt[1],Ge.length,f,lt.join(),M]),ht=e.useMemo((()=>{const e=1>ft[0]?1:ft[0]*nt[1]-nt[1],t=ft["x"===f?1:0],r=Ge.length<t?Ge.length:t;return dt[0]?(dt[0]+nt[1])*r-nt[1]:ot.type?Ce.current.width+e:Te.current.width}),[f,dt[0],ft[0],ft[1],nt[1],Te.current.width,Ce.current.width,ot.type,Ge.length]),pt=e.useMemo((()=>{const e=1>ft[1]?1:ft[0]*nt[0]-nt[0];return dt[1]?"x"===f?(dt[1]+nt[0])*ft[0]-nt[0]:(dt[1]+nt[0])*ft[1]-nt[0]:ot.type?Ce.current.height+e:Te.current.height}),[f,dt[1],ft[0],ft[1],nt[0],Te.current.height,Ce.current.height,ot.type]),gt=e.useMemo((()=>pt+tt),[pt,tt]),yt=e.useMemo((()=>ht+rt),[ht,rt]),bt="x"===f?yt:gt,vt=e.useMemo((()=>[Math.max(0,yt-lt[0]),Math.max(0,gt-lt[1])]),[lt.join(),gt,yt]),xt="x"===f?(null===(te=ge.current)||void 0===te?void 0:te.scrollLeft)||0:(null===(re=ge.current)||void 0===re?void 0:re.scrollTop)||0,wt=xt>1&&!0,Et=bt>Math.round(xt+st);let Mt=!1,jt=!1;"hybrid"===f&&(Mt=((null===(ne=ge.current)||void 0===ne?void 0:ne.scrollLeft)||0)>1&&!0,jt=Math.round(((null===(oe=ge.current)||void 0===oe?void 0:oe.scrollLeft)||0)+lt[0])<yt);const St=e.useMemo((()=>null!=K?K:30),[K]),kt=e.useCallback((e=>B.progressElement&&bt?"x"===e?X(lt[0]-ct[0],yt,St):X(lt[1]-ct[1],gt,St):0),[Be,bt,lt[0],lt[1],yt,St,ct.join()]),At=e.useMemo((()=>({x:"y"!==f?kt("x"):0,y:"x"!==f?kt("y"):0})),[kt,f]),Ot=e.useMemo((()=>({w:lt[0]?yt-lt[0]:yt,h:lt[1]?gt-lt[1]:gt})),[yt,gt,lt[0],lt[1]]),Lt={x:"y"!==f?H((null===(ie=ge.current)||void 0===ie?void 0:ie.scrollLeft)||0,Ot.w,at[0],At.x):0,y:"x"!==f?H((null===(le=ge.current)||void 0===le?void 0:le.scrollTop)||0,Ot.h,at[1],At.y):0},Rt=e.useMemo((()=>{if(!ot.type)return[{top:0,bottom:0,left:0,right:0}];let e=0;const t="x"===f,r="row"===L,n=t&&!r||!t&&r,o=dt[0]+nt[1],i=dt[1]+nt[0],l=new Set,s=n?ft[0]:ft[1],c=dt[r?0:1],a=nt[r?1:0];for(let e=Math.floor((Ge.length-1)/s)*s;e<Ge.length;e++)l.add(e);const u=s-l.size,d=u>0?(c+a)*u:0;return"center"===O?e=Math.round(d/2):"end"===O&&(e=d),Ge.map(((t,s)=>{const c=n?s%ft[0]:Math.floor(s/ft[1]),a=n?Math.floor(s/ft[0]):s%ft[1];let u,d;"x"===f?(u=a,d=c):(u=c,d=a);const m=l.size>0&&l.has(s),h=(m&&!r?e:0)+i*d,p=(m&&r?e:0)+o*u;return{top:h,left:p,bottom:h+dt[1],right:p+dt[0]}}))}),[dt[0],dt[1],nt[0],nt[1],O,Ge.length,ft[0],ft[1],ot.type,L,f]),zt=e.useMemo((()=>(null==lt?void 0:lt.length)&&A?function(e,t,r,n){const[o,i="start"]="string"==typeof e?[e,e]:e,l={display:"flex"};return t[0]>r&&(l.justifyContent=N(o)),t[1]>n&&(l.alignItems=N(i)),l}(A,lt,yt,gt):{}),[A,lt.join(),gt,yt]),Tt=e.useMemo((()=>[C(yt,lt[0]),C(gt,lt[1])]),[yt,gt,lt.join()]),Ct=e.useMemo((()=>"x"===f?Tt[0]:Tt[1]),[f,Tt[0],Tt[1]]),Ft=e.useCallback(I(ze,me),[]),Nt=e.useCallback(I(Te,me,rt,tt),[rt,tt]),It=e.useCallback(I(Ce,me),[]),Yt=e.useCallback(((e,t,r)=>{const n=ge.current;return n&&null!==e?function(e,t,r,n,o,l){return T(this,void 0,void 0,(function*(){const s="y"===e,c=s?"scrollTop":"scrollLeft",a=s?l[1]:l[0],u=i(n,0,a),d=i(t[c],0,a);if(d!==u)return 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[c]=n)):void y((()=>{const e=performance.now(),n=()=>{const l=performance.now(),s=Math.min((l-e)/r,1),m=i(d+(u-d)*s,0,a);t[c]=m,1>s&&m!==u&&o("smoothScroll",n)};o("smoothScroll",n)}),r,"smoothScrollBlock"+e,"exclusive")}))}(t,n,xe.current?null:r,e,fe.schedule,vt):null}),[vt.join()]),Xt=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:S?`${Ze}px ${Je}px ${Qe}px ${et}px`:"",height:ut[1]&&"none"!==ut[1]?pt+"px":"fit-content",width:ut[0]&&"none"!==ut[0]?ht+"px":"fit-content"},j&&!ot.type&&{gap:`${nt[0]}px ${nt[1]}px`}),k&&function(e,t,r,n,o){const i=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=i(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let l,s;return Array.isArray(e)?[l,s]=e:l=s=e,{minWidth:i(l,"x")+"px",minHeight:i(s,"y")+"px"}}(k,f,lt,rt,tt)),("hybrid"===f||"x"===f)&&{flexShrink:0});if(ot.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===ft[0]?"y"===f?"column":"row":L,r=ut[0]&&"none"!==ut[0]&&ut[1]&&"none"!==ut[1]?"wrap":void 0;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:r,justifyContent:N(O)})}),[S,We,He,[Ze,Je,Qe,et,rt,tt,nt[0],nt[1]].join(),lt.join(),$e,ut[1],pt,ht,$e,ot.type,f,ft[0],L,O]),Ht=e.useCallback(((e,t,r)=>{var n;ve.current=Y();const o=t.target;if(o.closest('\n [ms-custom-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let i=null;r&&(i=null===(n=o.closest("scroll"===d?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),we.current=e,z({scrollElement:ge.current,target:o,clickedObject:we,scrollStateRef:Me.current,type:d,triggerUpdate:me,direction:f,smoothScroll:Yt,sizeLocal:[lt[0],lt[1]],thumbSize:"x"===i?At.x:At.y,axisFromAtr:i,duration:Ve.duration,scrollBarEdge:ct,rafScrollAnim:fe,isTouched:ve.current,gap:nt,overscrollRef:Oe,objLengthPerSize:Tt,isDraggingRef:Le,maxScrollSize:vt})}),[f,d,lt.join(),Ve.duration,Yt,ct.join(),At.x,At.y,nt.join(),Tt,vt.join()]),Wt=e.useCallback((e=>{Ht("thumb",e,!0)}),[Ht]),$t=e.useCallback((e=>{ge.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:i,loop:l,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,m=(e,r,n)=>{const l=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,i=n?s[0]:s[1],l=t[n?"clientWidth":"clientHeight"]+i;return l*(Math.floor(Math.max(0,o)/l)+r)})(e,r);o(l,e,i)};switch(e){case"top":u>0?m("y",-1):l&&m("y",-1,!0);break;case"left":d>0?m("x",-1):l&&m("x",-1,!0);break;case"right":d+n[0]<c?m("x",1):l&&m("x",1,!0);break;case"bottom":u+n[1]<a?m("y",1):l&&m("y",1,!0)}})({arrowType:e,scrollElement:ge.current,wrapSize:[yt,gt],scrollSize:lt,smoothScroll:Yt,duration:Ve.duration,loop:_e.loop,gap:nt})}),[lt.join(),yt,gt,Ve.duration,Yt,_e.loop,nt[0],nt[1]]),Bt=e.useCallback((()=>{"scroll"!==d&&lt[0]&&lt[1]&&pe.current&&ge.current&&be.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var i,l;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 m=Math.floor((u+d/2)/d);m!==s.lastIndex&&(-1!==s.lastIndex&&(null===(i=s.elements[s.lastIndex])||void 0===i||i.classList.remove("active")),null===(l=s.elements[m])||void 0===l||l.classList.add("active"),s.lastIndex=m)}))})(ge.current,be.current,f,Tt)}),[lt.join(),f,d,Tt.join()]),Pt=e.useCallback((()=>{ye.current&&((e,t,r,n)=>{const o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(l)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let i=o.nextNode();for(;i;){const e=i,r=e.getAttribute(l);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)}i=o.nextNode()}r()})(ye.current,Ee,me,ot.type)}),[Ne]),Dt=e.useCallback((e=>{"object"==typeof Z&&"clickTrigger"in Z&&void 0!==Z.clickTrigger&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,i=e.target;if(!i.closest(n))return;const s=i.closest(`[${l}]`);null==s||s.classList.add("remove"),y((()=>{null==s||s.classList.remove("remove"),r()}),o)})(e,Z.clickTrigger,Pt)}),[Xe,Pt]),Vt=e.useCallback((e=>{b("removeHover");const t=pe.current,r=he.current,n=ge.current;if(!t||!r||!n)return;if(Ve.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;ke.current.update(t,r)}null==p||p(n.scrollLeft,n.scrollTop);const o=t.querySelectorAll("scroll"===d?".ms-bar":".ms-slider");U&&o.length>0&&!je.current&&o.forEach((e=>{e.classList.contains("hover")||x(e)})),je.current=!0,null==g||g(!0),y((()=>{ke.current.reset(),je.current=!1,null==g||g(!1),ot.type&&Pt(),U&&o.length>0&&!we.current&&o.forEach((e=>{y((()=>{e.hasAttribute("ms-manual-hover")||v(e)}),1e3,"removeHover")}))}),200,"isScrolling"),de.schedule("sliderCheckLocal",(()=>{"scroll"!==d&&Bt(),se()}))}),[p,g,d,Bt,Pt,U,ot.type]),qt=e.useCallback((e=>{if(Se.current)return;const t="object"==typeof B.wheel&&"string"==typeof B.wheel.changeDirectionKey?B.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==f||Se.current||(e.stopPropagation(),Se.current=!0,me())}),[f,Be]),Ut=e.useCallback((e=>{Se.current&&(e.stopPropagation(),Se.current=!1,me())}),[]);e.useEffect((()=>{if(ve.current||"hybrid"!==f)return;const e=ye.current,t=ge.current;return e&&t?(e.clientWidth+rt>t.clientWidth&&e.clientHeight+tt>t.clientHeight&&(t.addEventListener("keydown",qt),t.addEventListener("keyup",Ut)),()=>{t.removeEventListener("keydown",qt),t.removeEventListener("keyup",Ut)}):void 0}),[f,Be,Ie,Ye,Ge.join(),rt,tt]),e.useEffect((()=>{Z&&ot.type&&Pt()}),[Xe,ot.type,Pt,Ge.length]),e.useEffect((()=>{if(ve.current)return;const e=ge.current,t=ye.current;if(!e||!t)return;const r="hybrid"===f&&"object"==typeof B.wheel&&B.wheel.changeDirection?"x":f,n="hybrid"===f&&pt+tt<=lt[1]||Se.current?["hybrid","y"].includes(r)?"x":"y":r,o=t=>{t.preventDefault(),s(t,e,vt,Me.current,n)};return B.wheel&&e.addEventListener("wheel",o,{passive:!1}),()=>{e.removeEventListener("wheel",o)}}),[f,Be,pt,lt[1],tt,Se.current,vt.join()]),e.useEffect((()=>{de.schedule("smoothScrollLocal",(()=>{("hybrid"===f?["x","y"]:[f]).forEach((e=>{const t=Ve.value["x"===e?0:1];if("end"===t){if(ke.current.get()[e]===("x"===e?"left":"up"))return;Yt("x"===e?Ot.w:Ot.h,e,Ve.duration)}else"number"==typeof t&&Ae.current[e]!==t&&(Ae.current[e]=t,Yt(t,e,Ve.duration))}))}))}),[f,Fe,Ot.w,Ot.h,Ve.value.join()]),e.useEffect((()=>{const e=Me.current.animationFrameId;return(ot.type||g)&&g&&g(!1),requestAnimationFrame((()=>xe.current=!1)),()=>{e&&cancelAnimationFrame(e),Me.current.animationFrameId&&cancelAnimationFrame(Me.current.animationFrameId),fe.cancel()}}),[]),e.useEffect((()=>{if(!ee)return;const e=he.current,t=ge.current;if(!e||!t)return;const r={parent:e,element:t,direction:f};return function(e){ae.set(e.parent,e),1===ae.size&&function(){if(q)return;D=new AbortController;const{signal:e}=D;document.addEventListener("pointerdown",ce,{signal:e}),document.addEventListener("dragstart",ce,{signal:e}),q=!0}()}(r),()=>{!function(e){ae.delete(e.parent),0===ae.size&&q&&(null==D||D.abort(),null==V||V.abort(),q=!1)}(r)}}),[ee,f]),e.useEffect((()=>{const e=ge.current;if(!e)return;const t=e=>{Ht("wrapp",e)};if(B.content||!B.content&&ve.current&&B.wheel){if(!0===B.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[Be,Ht]),e.useEffect((()=>{const e=pe.current;if(!e||!U)return;if(!be.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&we.current?document.addEventListener("mouseup",t):Array.from(be.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if(e.removeAttribute("ms-manual-hover"),null==r?void 0:r.current)return;v(e)}else e.setAttribute("ms-manual-hover",""),x(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:je})}))},r=(t,r)=>{ve.current?(Array.from(be.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)}}),[U,d,f,be.current.size]),e.useEffect((()=>{"scroll"!==d&&de.schedule("sliderCheckLocal",Bt)}),[d,Bt,lt.join()]);const _t=e.useCallback(((t,r,n,o,i)=>{const s=Object.assign(Object.assign({width:dt[0]?dt[0]+"px":void 0,height:dt[1]?dt[1]+"px":void 0},ot.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof i&&{"--content-visibility":i}),c=J?e.createElement(e.Suspense,{fallback:mt},o):o;return e.createElement("div",Object.assign({key:t},ot.type||Z?{[l]:""+t}:{},{className:"ms-object-box",style:s,onClick:Z?Dt:void 0}),c)}),[J,!!mt,dt[0],dt[1],Ne,Xe,ft[0],Dt,ot.type]),Kt=e.useMemo((()=>{const t=new Map;return Ke.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[Ke]),Gt=e.useMemo((()=>[{positionType:"x"===f?"left":"top",visibility:wt},{positionType:"x"===f?"right":"bottom",visibility:Et},..."hybrid"===f?[{positionType:"left",visibility:Mt},{positionType:"right",visibility:jt}]:[]]),[wt,Et,f,Mt,jt]),Zt=e.useMemo((()=>({width:lt[2]+"px",height:lt[3]+"px"})),[lt]),Jt=e.useMemo((()=>{var e;return null!==(e={x:yt>lt[0]?"scroll hidden":"hidden",y:gt>lt[1]?"hidden scroll":"hidden",hybrid:`${yt>lt[0]?"scroll":"hidden"} ${gt>lt[1]?"scroll":"hidden"}`,hide:"hidden"}[B.wheel||B.content&&"scroll"===d?f:"hide"])&&void 0!==e?e:"hidden"}),[yt,gt,lt,Be,f]),Qt=e.useMemo((()=>R?Gt.map((({positionType:t,visibility:r})=>e.createElement(u,{key:"edge-"+t,edgeGradient:Ue,visibility:r,edgeType:t,size:lt}))):null),[R,Gt,Ue,Ie]),er=e.useMemo((()=>B.arrows?Gt.map((({positionType:t,visibility:r})=>e.createElement(m,{key:"arrow-"+t,visibility:r,arrows:_e,arrowType:t,handleArrow:$t,size:lt[0]}))):null),[Be,Gt,_e,$t,lt[0]]),tr=()=>{var t,r;const o=(null===(t=ge.current)||void 0===t?void 0:t.scrollLeft)||0,i=(null===(r=ge.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:ye,style:Object.assign(Object.assign(Object.assign({},Xt),(Oe.current.x||Oe.current.y)&&{transform:`translate(${Oe.current.x}px, ${Oe.current.y}px)`}),Le.current&&{pointerEvents:"none"})},Ge.map(((t,r)=>((t,r,o,i)=>{var l;const s=Kt.get(t),c=ot.stopLoadOnScroll&&je.current&&!Ee.current.loaded.has(t)?mt:(null===(l=Ee.current.empty)||void 0===l?void 0:l.has(t))?Z&&"object"==typeof Z&&e.isValidElement(Z)?Z:Z&&"object"==typeof Z&&"mode"in Z&&"object"==typeof Z.mode&&"fallback"in Z.mode?Z.mode.fallback:mt:s,a="firstChild"!==ut[0]&&"firstChild"!==ut[1]||0!==r?c:e.createElement(n,{onResize:It},c);if(!ot.type)return _t(t,0,0,a);const{top:u,bottom:d,left:m,right:h}=Rt[r],p=(e=!0)=>{const t=e?it:[0,0,0,0],r=e=>{const r="x"===e?o:i,n=r+("x"===e?lt[0]:lt[1]),l="x"===e?m-t[3]:u-t[2],s="x"===e?h+t[1]:d+t[0],c=s-l;if(0>=c)return 0;const a=Math.min(s,n)-Math.max(l,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===f){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===f?"x":"y")},g=p(),y=ot.trackVisibility?p(!1):null;if("lazy"===ot.type){const e=Ee.current.loaded.has(t);if(g&&!e){if(je.current&&ot.stopLoadOnScroll)return;Ee.current.loaded.add(t)}return e?_t(t,u,m,a,y):null}return g?_t(t,u,m,a,y):(Ee.current.loaded.delete(t),null)})(t,r,o,i))))},rr=e.useMemo((()=>{const e={position:"relative",width:lt[0]+"px",height:lt[1]+"px"};return B.arrows&&_e.contentReduce&&_e.size&&("x"===f?e.left=_e.size+"px":"y"===f?e.top=_e.size+"px":(e.top=_e.size+"px",e.left=_e.size+"px")),e}),[lt,Be,_e,f]),nr=e.createElement("div",{"morph-scroll":""+ue,className:r,ref:he,style:Zt},e.createElement("div",{className:"ms-content",ref:pe,style:Object.assign(Object.assign(Object.assign({},rr),{transform:"translateZ(0)"}),ve.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:ge,onScroll:Vt,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},zt),"boolean"!=typeof B.progressElement||!1===B.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:Jt}),B.content&&{cursor:"grab"})},dt[0]&&dt[1]?tr():e.createElement(n,{onResize:Nt,style:zt},tr())),Qt,B.progressElement&&!0!==B.progressElement?(()=>{const e="x"!==f;return[{shouldRender:bt>lt[e?1:0],direction:f,thumbSize:e?At.y:At.x,thumbSpace:e?Lt.y:Lt.x,objLengthPerSize:Ct,progressReverseIndex:0},{shouldRender:"hybrid"===f&&yt>lt[0],direction:"x",thumbSize:At.x,thumbSpace:Lt.x,objLengthPerSize:Tt[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))})().map((t=>{const r="boolean"==typeof P?P:P[t.progressReverseIndex];return e.createElement(c,{key:t.direction,type:d,direction:t.direction,progressReverse:r,size:at,progressTrigger:[B,Be],scrollBarOnHover:U,scrollBarEvent:"sliderMenu"===d?Yt:Wt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Bt,duration:Ve.duration,isTouched:ve.current,scrollStateRef:Me,scrollEl:ge,scrollBarsRef:be,triggerUpdate:me,overscroll:Oe,maxScrollSize:vt})})):null),er);return"auto"===w?e.createElement(n,{measure:"outer",onResize:Ft},nr):nr};ue.displayName="MorphScroll";const de={MorphScroll:ue,ResizeTracker:n,IntersectionTracker:r};exports.IntersectionTracker=r,exports.MorphScroll=ue,exports.ResizeTracker=n,exports.default=de;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("keytask-core");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:i,threshold:l,rootMargin:s,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=e.useMemo((()=>{if(!s)return"";const e=r(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:i,threshold:l,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[h,i,l,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:i})=>{const l=e.useRef(null);e.useEffect((()=>{const e=l.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)i&&i(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,i]);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:l,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};o.displayName="ResizeTracker";let i=1;function l(e,t=0,r=1/0,n=!0){return Math.max(t,Math.min(n?Math.round(e):e,r))}const s="wrap-id";function c(e,t,r,n,o){t.matches(":focus")||t.focus(),n.animating||(n.targetScrollX=l(t.scrollLeft,0,r[0]),n.targetScrollY=l(t.scrollTop,0,r[1])),"x"===o?n.targetScrollX=l(n.targetScrollX+e.deltaY,0,r[0]):n.targetScrollY=l(n.targetScrollY+e.deltaY,0,r[1]),n.animating||(n.animating=!0,n.animationFrameId=requestAnimationFrame((function e(){let i;if("x"===o){const e=l(t.scrollLeft+.4*(n.targetScrollX-t.scrollLeft),0,r[0]);t.scrollLeft=e,i=Math.abs(e-n.targetScrollX)}else{const e=l(t.scrollTop+.4*(n.targetScrollY-t.scrollTop),0,r[1]);t.scrollTop=e,i=Math.abs(e-n.targetScrollY)}i>2.5?n.animationFrameId=requestAnimationFrame(e):("x"===o?t.scrollLeft=l(n.targetScrollX,0,r[0]):t.scrollTop=l(n.targetScrollY,0,r[1]),n.animating=!1,n.animationFrameId=null)})))}const a=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:i,scrollBarOnHover:l,scrollBarEvent:s,thumbSize:a,thumbSpace:u,objLengthPerSize:d,sliderCheckLocal:m,duration:f,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v,maxScrollSize:x})=>{const w=e.useRef(null),E=e.useRef(null),j=["hybrid","y"].includes(r)?"y":"x",M=Math.abs(v.current[j])*(a/200),S=a-M,k=0>v.current[j]?u+M:u,L=e.useMemo((()=>{if("scroll"===t)return;const r=o["x"===j?0: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,f,m)}:void 0},Array.isArray(i[0].progressElement)?i[0].progressElement[o]:i[0].progressElement)))}),[d,t,i[1],f,m,o[0],o[1],s]),O=e.useMemo((()=>"x"!==r?"y":"x"),[r]),A=o["x"===O?0:1],R="scroll"!==t?"":a+2*u>A?"flex-end":"flex-start";e.useEffect((()=>{if(h||!i[0].wheel)return;const e=w.current,t=g.current;if(!e||!t)return;let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>c(e,t,x,p.current,O);return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[O]),e.useEffect((()=>{const e="slider"===t?w.current:E.current;if(!e||"sliderMenu"===t)return;const r=e=>s(e);return e.addEventListener("pointerdown",r),()=>e.removeEventListener("pointerdown",r)}),[s,t]),e.useEffect((()=>{const e=w.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[a]);const z=Object.assign({position:"absolute"},l&&{opacity:0,transition:"opacity 0.2s ease-in-out"});return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+O,ref:w,"data-direction":O,style:Object.assign(Object.assign(Object.assign({},z),{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:E,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${k}px)`},i[0].progressElement&&{cursor:"grab"}),{display:"flex",alignItems:R})},i[0].progressElement)):d>1&&i[0].progressElement&&e.createElement("div",{className:"ms-slider ms-"+O,ref:w,"data-direction":O,style:Object.assign(Object.assign(Object.assign(Object.assign({},z),{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}))},L))};a.displayName="ScrollBar";const u=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const i=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)"}:{}),l=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:l,style:i})};u.displayName="Edge";var d=e.memo(u);const m=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:i})=>{const l=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:i+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=l.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:l,style:s},r.element)};m.displayName="Arrow";var f=e.memo(m);const h=e=>{const r=e.getAttribute("data-direction");e.style.opacity="0",e.classList.remove("hover"),e.classList.add("leave"),t.cancelTask("remove"+r),t.setTask((()=>e.classList.remove("leave")),200,"remove"+r)},p=e=>{const r=e.getAttribute("data-direction");t.cancelTask("remove"+r),e.style.opacity="1",e.classList.remove("leave"),e.classList.add("hover")},g=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,i)=>{const l=null!=i?i:++t;return r.delete(l),r.set(l,o),null===e&&(e=requestAnimationFrame(n)),l},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)}}(),y=(e,t,r)=>{const n=e.current[t],o=performance.now();g.start((()=>{const i=performance.now(),l=Math.min((i-o)/140,1);return 1>l?(e.current[t]=n*(1-l),r(),!0):(e.current[t]=0,r(),!1)}))};let b,v={x:0,y:0},x={x:0,y:0},w={x:0,y:0,t:0,distX:0,distY:0},E=null;const j=(e,t,r,n)=>{if(!e)return;let o=null;["thumb","slider"].includes(e)?o="slider"===e?null==t?void 0:t.closest(".ms-slider"):t:"wrapp"===e&&(o=r),((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 user-select: none;\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")}})(o,n)},M=(e,t,r,n)=>{"x"===e?(r.scrollStateRef.targetScrollX=n,t.scrollLeft!==n&&(t.scrollLeft=n)):(r.scrollStateRef.targetScrollY=n,t.scrollTop!==n&&(t.scrollTop=n))},S=(e,t,r,n)=>{var o,i;const s=n.scrollElement;if(!s)return;const c="x"===e,a={x:n.event.clientX,y:n.event.clientY};if(!a)return;const u=(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(!E)return void(E={x:{value:a.x,rest:0,raw:u(n.overscrollRef.current.x,"x",!0)},y:{value:a.y,rest:0,raw:u(n.overscrollRef.current.y,"y",!0)}});const d=E,m={x:a.x-d.x.value,y:a.y-d.y.value},f=Math.abs(v[e]);if(f>2?n.isDraggingRef.current=!0:3>f&&(v[e]+=m[e]),n.isTouched){const e=performance.now();if(w.t){const t=Math.max(e-w.t,8);w={x:.8*w.x+m.x/t*.2,y:.8*w.y+m.y/t*.2,t:e,distX:(null!==(o=w.distX)&&void 0!==o?o:0)+Math.abs(m.x),distY:(null!==(i=w.distY)&&void 0!==i?i:0)+Math.abs(m.y)}}else w.t=e}const h="wrapp"===n.clickedObject.current?-m[e]:m[e],p=c?"scrollLeft":"scrollTop",g=c?0:1,y=(t,r,o)=>{const i=E[e],a=c?n.maxScrollSize[0]:n.maxScrollSize[1];if(!Number.isFinite(t)||!Number.isFinite(r))return void(E=null);if(0!==i.raw){const t=i.raw;return i.raw+=.6*r,o&&(n.overscrollRef.current[e]=u(i.raw,e),n.triggerUpdate()),Math.sign(i.raw)!==Math.sign(t)?(i.raw=0,void(o&&(n.overscrollRef.current[e]=0,n.triggerUpdate()))):void 0}if(0>=a)return void M(e,s,n,0);const d=s[p];if(0>=d&&0>t||d>=a&&t>0)return i.raw+=r,void(o&&(n.overscrollRef.current[e]=u(i.raw,e),n.triggerUpdate()));const m=l(s[p]+t,0,a);M(e,s,n,m)};if("thumb"===n.clickedObject.current&&"slider"!==n.type){const r=h*t+d[e].rest,n=Math.trunc(r);return d[e].rest=r-n,void y(n,h,!1)}if("slider"===n.type&&(x[e]+=h),"wrapp"===n.clickedObject.current)return void y(h/r[g],m[e],!0);const b=s[p];if(n.sliderElSize&&Math.abs(x[e])<n.sliderElSize[c?0:1])return;const j=e=>{const t=s[c?"clientWidth":"clientHeight"]+n.gap[g];return t*(Math.floor(Math.max(0,b)/t)+e)},S=h>0&&b+n.sizeLocal[g]<n.wrapElWH[g]?j(1):0>h&&b>0?j(-1):null;x[e]=0,n.smoothScroll(S,e,10)};function k(e){g.stop(),["x","y"].forEach((r=>{e.rafScrollAnim.cancel(),t.cancelTask("smoothScrollBlock"+r)}));const r=e.scrollElement;if(!r)return;e.scrollStateRef.targetScrollX=r.scrollLeft,e.scrollStateRef.targetScrollY=r.scrollTop,w={x:0,y:0,t:0,distX:0,distY:0};const n=[r.scrollWidth,r.scrollHeight],o=["scroll","slider"].includes(e.type)?function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(r):[];let i=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,r=(e.sizeLocal[t]-e.scrollBarEdge[t]-e.thumbSize)*o[t];i=e.maxScrollSize[t]/r,Number.isFinite(i)&&i>0||(i=1)}j(e.clickedObject.current,e.target,r,"start"),null==b||b.abort();const s=new AbortController;b=s;const{signal:c}=s;document.addEventListener("pointermove",(t=>{(t=>{var r;let l;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(r=e.target)||void 0===r?void 0:r.closest(".ms-slider");if(!t)return;const n=r=>{const n=t.getBoundingClientRect();return Math.round(("x"===r?n.width:n.height)/e.objLengthPerSize["x"===r?0:1])};l=[n("x"),n("y")]}!function(e){const t=e.direction||"y";"hybrid"===t?["wrapp","slider"].includes(e.clickedObject.current)?["x","y"].forEach((t=>S(t,e.thumbRatio,e.visualDiff,e))):e.axisFromAtr&&S(e.axisFromAtr,e.thumbRatio,e.visualDiff,e):S(e.axisFromAtr?e.axisFromAtr:t,e.thumbRatio,e.visualDiff,e);const r={x:e.event.clientX,y:e.event.clientY};E&&(E.x.value=r.x,E.y.value=r.y)}(Object.assign(Object.assign({},e),{event:t,wrapElWH:n,visualDiff:o,thumbRatio:i,sliderElSize:l}))})(t)}),{signal:c});const a=t=>{e.isDraggingRef.current=!1,function(e){null==b||b.abort();const t=e.scrollElement;if(t){if(j(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=x,n=(r,n)=>{const o="x"===r,i=o?e.maxScrollSize[0]:e.maxScrollSize[1],l=t[o?"scrollLeft":"scrollTop"],s=o?e.gap[0]:e.gap[1],c=t[o?"clientWidth":"clientHeight"]+s,a=(Math[n?n>0?"floor":"ceil":"round"](l/c)+(null!=n?n:0))*c;a>i||0>a||e.smoothScroll(a,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=w[r]*e.thumbRatio,o="x"===r?w.distX:w.distY;80>performance.now()-w.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("step",u)};n("step",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)}E=null,0!==e.overscrollRef.current.x&&y(e.overscrollRef,"x",e.triggerUpdate),0!==e.overscrollRef.current.y&&y(e.overscrollRef,"y",e.triggerUpdate),e.clickedObject.current=null,w={x:0,y:0,t:0,distX:0,distY:0},v={x:0,y:0},x={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:i}))};document.addEventListener("pointerup",a,{signal:c}),document.addEventListener("pointercancel",a,{signal:c})}function L(e,t,r,n){return new(r||(r=Promise))((function(o,i){function l(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(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(l,s)}c((n=n.apply(e,t||[])).next())}))}function O(e,t){return e>t?Math.floor(e/t):1}"function"==typeof SuppressedError&&SuppressedError;const A=new WeakMap,R=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function z(e,t,r=0,n=0){return o=>{var i,l,s,c;let a=!1;const u={width:(null!==(i=o.width)&&void 0!==i?i:0)-r,height:(null!==(l=o.height)&&void 0!==l?l: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 T=()=>{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 C(e,t,r){return t?l(Math.round(e/t*e),r,e):0}function F(e,t,r,n){return t?l(e/t*(r-n),0,r-n):0}function N(){let e=null;const t=new Map;return{schedule:(r,n)=>{t.set(r,n),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t.values());t.clear(),r.forEach((e=>e()))})))},cancel:()=>{null!==e&&(cancelAnimationFrame(e),e=null,t.clear())}}}const I=t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap(I):[r]}return[t]},Y=40,X="ms-under-drag";let H,W=null,$=!1;const B={x:0,y:0},P={x:0,y:0};let D=!1,V=null,q="",U=null,_=null,K=null;const G=N(),Z=()=>{_&&_.removeAttribute(X),V=null,_=null,U=null,q="",K=null};function J(e,t,r,n,o,i){const l=e-t,s=r-e;return Y>l&&n>0?{dir:-1,distance:l}:Y>s&&i>n+o?{dir:1,distance:s}:null}function Q(e){const t=l((Y-Math.abs(e))/Y,0,1,!1);return t*t*20|0}function ee(){if(!V)return;const{parent:e,element:t,direction:r}=V,n=t.getBoundingClientRect(),o=P.x,i=P.y;if(o<n.left-Y||o>n.right+Y||i<n.top-Y||i>n.bottom+Y)return void Z();let l=null,s=null,c=0,a=0;const u="x"!==r?J(i,n.top,n.bottom,t.scrollTop,t.clientHeight,t.scrollHeight):null;u&&(l=-1===u.dir?"top":"bottom",a=Q(u.distance)*u.dir);const d="y"!==r?J(o,n.left,n.right,t.scrollLeft,t.clientWidth,t.scrollWidth):null;d&&(s=-1===d.dir?"left":"right",c=Q(d.distance)*d.dir),q=[l,s].filter(Boolean).join(" "),q!==K&&(e.setAttribute(X,q),K=q),(c||a)&&t.scrollBy(c,a),G.schedule("autoScrollLoop",ee)}function te(e){e instanceof DragEvent&&0===e.buttons?re():P.x===e.clientX&&P.y===e.clientY||(P.x=e.clientX,P.y=e.clientY,G.schedule("onMove",(()=>{if(!D){const e=P.x-B.x,t=P.y-B.y;if(10>Math.hypot(e,t))return;D=!0}const e=document.elementFromPoint(P.x,P.y);if(!e)return;const t=e.closest("[morph-scroll]");if(!t&&!V)return void Z();const r=t?oe.get(t):V;r&&(V=r,U!==r.element&&(_&&_!==r.parent&&_.removeAttribute(X),U=r.element,_=r.parent,_.setAttribute(X,q),K=q,ee()))})))}function re(){null==W||W.abort(),W=null,D=!1,G.cancel(),Z()}function ne(e){const t=e instanceof PointerEvent;if(t&&!e.target.closest("[ms-custom-drag]"))return;B.x=e.clientX,B.y=e.clientY,null==W||W.abort();const r=new AbortController;W=r;const{signal:n}=r;t?(document.addEventListener("pointermove",te,{signal:n}),document.addEventListener("pointerup",re,{signal:n})):(document.addEventListener("dragover",te,{signal:n}),document.addEventListener("dragend",re,{signal:n}),document.addEventListener("drop",re,{signal:n}),document.addEventListener("pointerdown",re,{signal:n}),window.addEventListener("blur",re,{signal:n}))}const oe=new Map;const ie=({className:n,children:u,type:m="scroll",direction:g="y",scrollPosition:y,onScrollValue:b,isScrolling:v,size:x,objectsSize:w,crossCount:E,gap:j,wrapperMargin:M,wrapperMinSize:S,wrapperAlign:Y,elementsAlign:X,elementsDirection:B="row",edgeGradient:P,progressTrigger:D={wheel:!0},progressReverse:V=!1,scrollBarOnHover:q=!1,scrollBarEdge:U,thumbMinSize:_,render:K,emptyElements:G,suspending:Z=!1,fallback:J,dragScroll:Q})=>{var ee,te,re,ie,le,se;const ce=function(){const[,t]=e.useState({});return e.useCallback((()=>{t({})}),[])}(),ae=function(){const t=e.useRef(null);return null===t.current&&(t.current=""+i++),t.current}(),ue=N(),de=()=>ue.schedule("triggerUpdate",ce),me=N();if(!x)throw Error('prop "size" is not provided'+("\n morph-scroll "+ae));Object.keys(D).length,"none"===w||Array.isArray(w)&&("none"===w[0]||w[1]);const fe=e.useRef(null),he=e.useRef(null),pe=e.useRef(null),ge=e.useRef(null),ye=e.useRef(new Set),be=e.useRef(T()),ve=e.useRef(!0),xe=e.useRef(null),we=e.useRef({loaded:new Set,empty:new Set}),Ee=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),je=e.useRef(!1),Me=e.useRef(!1),Se=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(i,l){const s=i-t,c=l-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=i),Math.abs(c)>e&&(o=c>0?"down":"up",r=l)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),ke=e.useRef({x:null,y:null}),Le=e.useRef({x:0,y:0}),Oe=e.useRef(!1);function Ae(){return e.useRef({width:0,height:0})}const Re=Ae(),ze=Ae(),Te=Ae(),[Ce,Fe,Ne,Ie,Ye,Xe,He,We,$e,Be,Pe]=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)}(y,K,x,w,G,S,Y,j,D,we.current.empty,U),De=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=y)if("number"==typeof y||"end"===y)r=[y,y];else if(Array.isArray(y))r=y;else if("object"==typeof y){const i=y.value;"number"==typeof i||"end"===i?r=[i,i]:Array.isArray(i)&&(r=i),n=null!==(e=y.duration)&&void 0!==e?e:200,o=null!==(t=y.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[Ce]),Ve={color:null,size:40},qe=e.useMemo((()=>"object"==typeof P?Object.assign(Object.assign({},Ve),P):"string"==typeof P?{color:P,size:40}:Ve),[P]),Ue=e.useMemo((()=>{const t=D.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}),[$e]),_e=e.useMemo((()=>e.Children.toArray(u).flatMap(I)),[u]),Ke=e.useMemo((()=>_e.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=we.current.empty)||void 0===t?void 0:t.has(e))}))),[u,Ye,Be]),[Ge,Ze,Je,Qe]=M?r(M):[0,0,0,0],et=Ge+Je,tt=Qe+Ze,rt=e.useMemo((()=>{var e,t;return"number"==typeof j?[j,j]:Array.isArray(j)?[null!==(e=j[1])&&void 0!==e?e:0,null!==(t=j[0])&&void 0!==t?t:0]:[0,0]}),[j]),nt=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1,trackVisibility:!1};if("string"==typeof K)return Object.assign(Object.assign({},e),{type:K});if("object"==typeof K&&null!==K){const{type:t,rootMargin:r=e.rootMargin,stopLoadOnScroll:n=e.stopLoadOnScroll,trackVisibility:o=e.trackVisibility}=K;return{type:t,rootMargin:r,stopLoadOnScroll:n,trackVisibility:o}}return e}),[Fe]),ot=e.useMemo((()=>r(nt.rootMargin)),[nt.rootMargin,g]),it=e.useMemo((()=>{const[e,t]=Array.isArray(x)?x:"number"==typeof x?[x,x]:[Re.current.width,Re.current.height];if(!D.arrows||!Ue.size||!Ue.contentReduce)return[e,t,e,t];const r=2*Ue.size;let n=e,o=t;return"x"===g?n=e-r:"y"===g?o=t-r:"hybrid"===g&&(n=e-r,o=t-r),[n,o,e,t]}),[Ne,$e,g,Ue,Re.current.height,Re.current.width]),lt="x"===g?it[0]:it[1],st=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]}),[Pe]),ct=e.useMemo((()=>[it[0]-st[0],it[1]-st[1]]),[st.join(),it[0],it[1]]),at=e.useMemo((()=>w?Array.isArray(w)?w:r(w,!0,2):[null,null]),[Ie]),ut=e.useMemo((()=>{const{height:e,width:t}=Te.current,r=(e,t,r)=>t||("number"==typeof e?e:"size"===e?r:0);return[r(at[0],t,it[0]),r(at[1],e,it[1])]}),[at.join(),g,Te.current.width,Te.current.height,it.join()]),dt=e.useMemo((()=>K&&G&&!J?e.createElement("div",{className:"ms-empty-element"}):J),[!!J,Fe,Ye]),mt=e.useMemo((()=>{if("none"===at[0]||"none"===at[1])return[1,Ke.length];const e="x"===g?1:0,t="row"===B,r=it[e],n=ut[e]?ut[e]+rt[e]:0,o="hybrid"===g&&r?n*Ke.length:r,i=n?Math.floor(o/n):1;let l=E&&i>=E?"hybrid"===g?Math.ceil(i/E):E:i;const s=l>1&&l<Ke.length?Math.ceil(Ke.length/l):l<Ke.length?Ke.length:1;t||(l=Math.ceil(Ke.length/s));const c=E&&E<Ke.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===g){const e=c?t?E:l:t?Ke.length:1,r=c?t?l:E:t?1:Ke.length;return[a(e),a(r)]}return[a(l),a(s)]}),[B,rt[0],rt[1],ut[0],ut[1],Ke.length,g,it.join(),E]),ft=e.useMemo((()=>{const e=1>mt[0]?1:mt[0]*rt[1]-rt[1],t=mt["x"===g?1:0],r=Ke.length<t?Ke.length:t;return ut[0]?(ut[0]+rt[1])*r-rt[1]:nt.type?Te.current.width+e:ze.current.width}),[g,ut[0],mt[0],mt[1],rt[1],ze.current.width,Te.current.width,nt.type,Ke.length]),ht=e.useMemo((()=>{const e=1>mt[1]?1:mt[0]*rt[0]-rt[0];return ut[1]?"x"===g?(ut[1]+rt[0])*mt[0]-rt[0]:(ut[1]+rt[0])*mt[1]-rt[0]:nt.type?Te.current.height+e:ze.current.height}),[g,ut[1],mt[0],mt[1],rt[0],ze.current.height,Te.current.height,nt.type]),pt=e.useMemo((()=>ht+et),[ht,et]),gt=e.useMemo((()=>ft+tt),[ft,tt]),yt="x"===g?gt:pt,bt=e.useMemo((()=>[Math.max(0,gt-it[0]),Math.max(0,pt-it[1])]),[it.join(),pt,gt]),vt="x"===g?(null===(ee=pe.current)||void 0===ee?void 0:ee.scrollLeft)||0:(null===(te=pe.current)||void 0===te?void 0:te.scrollTop)||0,xt=vt>1&&!0,wt=yt>Math.round(vt+lt);let Et=!1,jt=!1;"hybrid"===g&&(Et=((null===(re=pe.current)||void 0===re?void 0:re.scrollLeft)||0)>1&&!0,jt=Math.round(((null===(ie=pe.current)||void 0===ie?void 0:ie.scrollLeft)||0)+it[0])<gt);const Mt=e.useMemo((()=>null!=_?_:30),[_]),St=e.useCallback((e=>D.progressElement&&yt?"x"===e?C(it[0]-st[0],gt,Mt):C(it[1]-st[1],pt,Mt):0),[$e,yt,it[0],it[1],gt,Mt,st.join()]),kt=e.useMemo((()=>({x:"y"!==g?St("x"):0,y:"x"!==g?St("y"):0})),[St,g]),Lt=e.useMemo((()=>({w:it[0]?gt-it[0]:gt,h:it[1]?pt-it[1]:pt})),[gt,pt,it[0],it[1]]),Ot={x:"y"!==g?F((null===(le=pe.current)||void 0===le?void 0:le.scrollLeft)||0,Lt.w,ct[0],kt.x):0,y:"x"!==g?F((null===(se=pe.current)||void 0===se?void 0:se.scrollTop)||0,Lt.h,ct[1],kt.y):0},At=e.useMemo((()=>{if(!nt.type)return[{top:0,bottom:0,left:0,right:0}];let e=0;const t="x"===g,r="row"===B,n=t&&!r||!t&&r,o=ut[0]+rt[1],i=ut[1]+rt[0],l=new Set,s=n?mt[0]:mt[1],c=ut[r?0:1],a=rt[r?1:0];for(let e=Math.floor((Ke.length-1)/s)*s;e<Ke.length;e++)l.add(e);const u=s-l.size,d=u>0?(c+a)*u:0;return"center"===X?e=Math.round(d/2):"end"===X&&(e=d),Ke.map(((t,s)=>{const c=n?s%mt[0]:Math.floor(s/mt[1]),a=n?Math.floor(s/mt[0]):s%mt[1];let u,d;"x"===g?(u=a,d=c):(u=c,d=a);const m=l.size>0&&l.has(s),f=(m&&!r?e:0)+i*d,h=(m&&r?e:0)+o*u;return{top:f,left:h,bottom:f+ut[1],right:h+ut[0]}}))}),[ut[0],ut[1],rt[0],rt[1],X,Ke.length,mt[0],mt[1],nt.type,B,g]),Rt=e.useMemo((()=>(null==it?void 0:it.length)&&Y?function(e,t,r,n){const[o,i="start"]="string"==typeof e?[e,e]:e,l={display:"flex"};return t[0]>r&&(l.justifyContent=R(o)),t[1]>n&&(l.alignItems=R(i)),l}(Y,it,gt,pt):{}),[Y,it.join(),pt,gt]),zt=e.useMemo((()=>[O(gt,it[0]),O(pt,it[1])]),[gt,pt,it.join()]),Tt=e.useMemo((()=>"x"===g?zt[0]:zt[1]),[g,zt[0],zt[1]]),Ct=e.useCallback(z(Re,de),[]),Ft=e.useCallback(z(ze,de,tt,et),[tt,et]),Nt=e.useCallback(z(Te,de),[]),It=e.useCallback(((e,r,n)=>{const o=pe.current;return o&&null!==e?function(e,r,n,o,i,s){return L(this,void 0,void 0,(function*(){const c="y"===e,a=c?"scrollTop":"scrollLeft",u=c?s[1]:s[0],d=l(o,0,u),m=l(r[a],0,u);if(m!==d)return null===n?(yield function(e){return L(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(r),void(r[a]=o)):void t.setLockTask((()=>{const e=performance.now(),t=()=>{const o=performance.now(),s=Math.min((o-e)/n,1),c=l(m+(d-m)*s,0,u);r[a]=c,1>s&&c!==d&&i("smoothScroll",t)};i("smoothScroll",t)}),n,"smoothScrollBlock"+e)}))}(r,o,ve.current?null:n,e,me.schedule,bt):null}),[bt.join()]),Yt=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:M?`${Ge}px ${Ze}px ${Je}px ${Qe}px`:"",height:at[1]&&"none"!==at[1]?ht+"px":"fit-content",width:at[0]&&"none"!==at[0]?ft+"px":"fit-content"},j&&!nt.type&&{gap:`${rt[0]}px ${rt[1]}px`}),S&&function(e,t,r,n,o){const i=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=i(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let l,s;return Array.isArray(e)?[l,s]=e:l=s=e,{minWidth:i(l,"x")+"px",minHeight:i(s,"y")+"px"}}(S,g,it,tt,et)),("hybrid"===g||"x"===g)&&{flexShrink:0});if(nt.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===mt[0]?"y"===g?"column":"row":B,r=at[0]&&"none"!==at[0]&&at[1]&&"none"!==at[1]?"wrap":void 0;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:r,justifyContent:R(X)})}),[M,He,Xe,[Ge,Ze,Je,Qe,tt,et,rt[0],rt[1]].join(),it.join(),We,at[1],ht,ft,We,nt.type,g,mt[0],B,X]),Xt=e.useCallback(((e,t,r)=>{var n;be.current=T();const o=t.target;if(o.closest('\n [ms-custom-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let i=null;r&&(i=null===(n=o.closest("scroll"===m?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),xe.current=e,k({scrollElement:pe.current,target:o,clickedObject:xe,scrollStateRef:Ee.current,type:m,triggerUpdate:de,direction:g,smoothScroll:It,sizeLocal:[it[0],it[1]],thumbSize:"x"===i?kt.x:kt.y,axisFromAtr:i,duration:De.duration,scrollBarEdge:st,rafScrollAnim:me,isTouched:be.current,gap:rt,overscrollRef:Le,objLengthPerSize:zt,isDraggingRef:Oe,maxScrollSize:bt})}),[g,m,it.join(),De.duration,It,st.join(),kt.x,kt.y,rt.join(),zt,bt.join()]),Ht=e.useCallback((e=>{Xt("thumb",e,!0)}),[Xt]),Wt=e.useCallback((e=>{pe.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:i,loop:l,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,m=(e,r,n)=>{const l=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,i=n?s[0]:s[1],l=t[n?"clientWidth":"clientHeight"]+i;return l*(Math.floor(Math.max(0,o)/l)+r)})(e,r);o(l,e,i)};switch(e){case"top":u>0?m("y",-1):l&&m("y",-1,!0);break;case"left":d>0?m("x",-1):l&&m("x",-1,!0);break;case"right":d+n[0]<c?m("x",1):l&&m("x",1,!0);break;case"bottom":u+n[1]<a?m("y",1):l&&m("y",1,!0)}})({arrowType:e,scrollElement:pe.current,wrapSize:[gt,pt],scrollSize:it,smoothScroll:It,duration:De.duration,loop:Ue.loop,gap:rt})}),[it.join(),gt,pt,De.duration,It,Ue.loop,rt[0],rt[1]]),$t=e.useCallback((()=>{"scroll"!==m&&it[0]&&it[1]&&he.current&&pe.current&&ye.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var i,l;let s=A.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},A.set(t,s)),!s.elements.length)return;const u="x"===c?e.scrollLeft:e.scrollTop,d="x"===c?e.clientWidth:e.clientHeight,m=Math.floor((u+d/2)/d);m!==s.lastIndex&&(-1!==s.lastIndex&&(null===(i=s.elements[s.lastIndex])||void 0===i||i.classList.remove("active")),null===(l=s.elements[m])||void 0===l||l.classList.add("active"),s.lastIndex=m)}))})(pe.current,ye.current,g,zt)}),[it.join(),g,m,zt.join()]),Bt=e.useCallback((()=>{ge.current&&((e,t,r,n)=>{const o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(s)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let i=o.nextNode();for(;i;){const e=i,r=e.getAttribute(s);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)}i=o.nextNode()}r()})(ge.current,we,de,nt.type)}),[Fe]),Pt=e.useCallback((e=>{"object"==typeof G&&"clickTrigger"in G&&void 0!==G.clickTrigger&&((e,r,n)=>{const{selector:o,delay:i=0}="string"==typeof r?{selector:r}:r,l=e.target;if(!l.closest(o))return;const c=l.closest(`[${s}]`);null==c||c.classList.add("remove"),t.setTask((()=>{null==c||c.classList.remove("remove"),n()}),i)})(e,G.clickTrigger,Bt)}),[Ye,Bt]),Dt=e.useCallback((e=>{t.cancelTask("removeHover");const r=he.current,n=fe.current,o=pe.current;if(!r||!n||!o)return;if(De.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;Se.current.update(t,r)}null==b||b(o.scrollLeft,o.scrollTop);const i=r.querySelectorAll("scroll"===m?".ms-bar":".ms-slider");q&&i.length>0&&!je.current&&i.forEach((e=>{e.classList.contains("hover")||p(e)})),je.current=!0,null==v||v(!0),t.setTask((()=>{Se.current.reset(),je.current=!1,null==v||v(!1),nt.type&&Bt(),q&&i.length>0&&!xe.current&&i.forEach((e=>{t.setTask((()=>{e.hasAttribute("ms-manual-hover")||h(e)}),1e3,"removeHover")}))}),200,"isScrolling"),ue.schedule("sliderCheckLocal",(()=>{"scroll"!==m&&$t(),ce()}))}),[b,v,m,$t,Bt,q,nt.type]),Vt=e.useCallback((e=>{if(Me.current)return;const t="object"==typeof D.wheel&&"string"==typeof D.wheel.changeDirectionKey?D.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==g||Me.current||(e.stopPropagation(),Me.current=!0,de())}),[g,$e]),qt=e.useCallback((e=>{Me.current&&(e.stopPropagation(),Me.current=!1,de())}),[]);e.useEffect((()=>{if(be.current||"hybrid"!==g)return;const e=ge.current,t=pe.current;return e&&t?(e.clientWidth+tt>t.clientWidth&&e.clientHeight+et>t.clientHeight&&(t.addEventListener("keydown",Vt),t.addEventListener("keyup",qt)),()=>{t.removeEventListener("keydown",Vt),t.removeEventListener("keyup",qt)}):void 0}),[g,$e,Ne,Ie,Ke.join(),tt,et]),e.useEffect((()=>{G&&nt.type&&Bt()}),[Ye,nt.type,Bt,Ke.length]),e.useEffect((()=>{if(be.current)return;const e=pe.current,t=ge.current;if(!e||!t)return;const r="hybrid"===g&&"object"==typeof D.wheel&&D.wheel.changeDirection?"x":g,n="hybrid"===g&&ht+et<=it[1]||Me.current?["hybrid","y"].includes(r)?"x":"y":r,o=t=>{t.preventDefault(),c(t,e,bt,Ee.current,n)};return D.wheel&&e.addEventListener("wheel",o,{passive:!1}),()=>{e.removeEventListener("wheel",o)}}),[g,$e,ht,it[1],et,Me.current,bt.join()]),e.useEffect((()=>{ue.schedule("smoothScrollLocal",(()=>{("hybrid"===g?["x","y"]:[g]).forEach((e=>{const t=De.value["x"===e?0:1];if("end"===t){if(Se.current.get()[e]===("x"===e?"left":"up"))return;It("x"===e?Lt.w:Lt.h,e,De.duration)}else"number"==typeof t&&ke.current[e]!==t&&(ke.current[e]=t,It(t,e,De.duration))}))}))}),[g,Ce,Lt.w,Lt.h,De.value.join()]),e.useEffect((()=>{const e=Ee.current.animationFrameId;return(nt.type||v)&&v&&v(!1),requestAnimationFrame((()=>ve.current=!1)),()=>{e&&cancelAnimationFrame(e),Ee.current.animationFrameId&&cancelAnimationFrame(Ee.current.animationFrameId),me.cancel()}}),[]),e.useEffect((()=>{if(!Q)return;const e=fe.current,t=pe.current;if(!e||!t)return;const r={parent:e,element:t,direction:g};return function(e){oe.set(e.parent,e),1===oe.size&&function(){if($)return;H=new AbortController;const{signal:e}=H;document.addEventListener("pointerdown",ne,{signal:e}),document.addEventListener("dragstart",ne,{signal:e}),$=!0}()}(r),()=>{!function(e){oe.delete(e.parent),0===oe.size&&$&&(null==H||H.abort(),null==W||W.abort(),$=!1)}(r)}}),[Q,g]),e.useEffect((()=>{const e=pe.current;if(!e)return;const t=e=>{Xt("wrapp",e)};if(D.content||!D.content&&be.current&&D.wheel){if(!0===D.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[$e,Xt]),e.useEffect((()=>{const e=he.current;if(!e||!q)return;if(!ye.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&xe.current?document.addEventListener("mouseup",t):Array.from(ye.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if(e.removeAttribute("ms-manual-hover"),null==r?void 0:r.current)return;h(e)}else e.setAttribute("ms-manual-hover",""),p(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:je})}))},r=(t,r)=>{be.current?(Array.from(ye.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,m,g,ye.current.size]),e.useEffect((()=>{"scroll"!==m&&ue.schedule("sliderCheckLocal",$t)}),[m,$t,it.join()]);const Ut=e.useCallback(((t,r,n,o,i)=>{const l=Object.assign(Object.assign({width:ut[0]?ut[0]+"px":void 0,height:ut[1]?ut[1]+"px":void 0},nt.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof i&&{"--content-visibility":i}),c=Z?e.createElement(e.Suspense,{fallback:dt},o):o;return e.createElement("div",Object.assign({key:t},nt.type||G?{[s]:""+t}:{},{className:"ms-object-box",style:l,onClick:G?Pt:void 0}),c)}),[Z,!!dt,ut[0],ut[1],Fe,Ye,mt[0],Pt,nt.type]),_t=e.useMemo((()=>{const t=new Map;return _e.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[_e]),Kt=e.useMemo((()=>[{positionType:"x"===g?"left":"top",visibility:xt},{positionType:"x"===g?"right":"bottom",visibility:wt},..."hybrid"===g?[{positionType:"left",visibility:Et},{positionType:"right",visibility:jt}]:[]]),[xt,wt,g,Et,jt]),Gt=e.useMemo((()=>({width:it[2]+"px",height:it[3]+"px"})),[it]),Zt=e.useMemo((()=>{var e;return null!==(e={x:gt>it[0]?"scroll hidden":"hidden",y:pt>it[1]?"hidden scroll":"hidden",hybrid:`${gt>it[0]?"scroll":"hidden"} ${pt>it[1]?"scroll":"hidden"}`,hide:"hidden"}[D.wheel||D.content&&"scroll"===m?g:"hide"])&&void 0!==e?e:"hidden"}),[gt,pt,it,$e,g]),Jt=e.useMemo((()=>P?Kt.map((({positionType:t,visibility:r})=>e.createElement(d,{key:"edge-"+t,edgeGradient:qe,visibility:r,edgeType:t,size:it}))):null),[P,Kt,qe,Ne]),Qt=e.useMemo((()=>D.arrows?Kt.map((({positionType:t,visibility:r})=>e.createElement(f,{key:"arrow-"+t,visibility:r,arrows:Ue,arrowType:t,handleArrow:Wt,size:it[0]}))):null),[$e,Kt,Ue,Wt,it[0]]),er=()=>{var t,r;const n=(null===(t=pe.current)||void 0===t?void 0:t.scrollLeft)||0,i=(null===(r=pe.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:ge,style:Object.assign(Object.assign(Object.assign({},Yt),(Le.current.x||Le.current.y)&&{transform:`translate(${Le.current.x}px, ${Le.current.y}px)`}),Oe.current&&{pointerEvents:"none"})},Ke.map(((t,r)=>((t,r,n,i)=>{var l;const s=_t.get(t),c=nt.stopLoadOnScroll&&je.current&&!we.current.loaded.has(t)?dt:(null===(l=we.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:dt:s,a="firstChild"!==at[0]&&"firstChild"!==at[1]||0!==r?c:e.createElement(o,{onResize:Nt},c);if(!nt.type)return Ut(t,0,0,a);const{top:u,bottom:d,left:m,right:f}=At[r],h=(e=!0)=>{const t=e?ot:[0,0,0,0],r=e=>{const r="x"===e?n:i,o=r+("x"===e?it[0]:it[1]),l="x"===e?m-t[3]:u-t[2],s="x"===e?f+t[1]:d+t[0],c=s-l;if(0>=c)return 0;const a=Math.min(s,o)-Math.max(l,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===g){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===g?"x":"y")},p=h(),y=nt.trackVisibility?h(!1):null;if("lazy"===nt.type){const e=we.current.loaded.has(t);if(p&&!e){if(je.current&&nt.stopLoadOnScroll)return;we.current.loaded.add(t)}return e?Ut(t,u,m,a,y):null}return p?Ut(t,u,m,a,y):(we.current.loaded.delete(t),null)})(t,r,n,i))))},tr=e.useMemo((()=>{const e={position:"relative",width:it[0]+"px",height:it[1]+"px"};return D.arrows&&Ue.contentReduce&&Ue.size&&("x"===g?e.left=Ue.size+"px":"y"===g?e.top=Ue.size+"px":(e.top=Ue.size+"px",e.left=Ue.size+"px")),e}),[it,$e,Ue,g]),rr=e.createElement("div",{"morph-scroll":""+ae,className:n,ref:fe,style:Gt},e.createElement("div",{className:"ms-content",ref:he,style:Object.assign(Object.assign(Object.assign({},tr),{transform:"translateZ(0)"}),be.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:pe,onScroll:Dt,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},Rt),"boolean"!=typeof D.progressElement||!1===D.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:Zt}),D.content&&{cursor:"grab"})},ut[0]&&ut[1]?er():e.createElement(o,{onResize:Ft,style:Rt},er())),Jt,D.progressElement&&!0!==D.progressElement?(()=>{const e="x"!==g;return[{shouldRender:yt>it[e?1:0],direction:g,thumbSize:e?kt.y:kt.x,thumbSpace:e?Ot.y:Ot.x,objLengthPerSize:Tt,progressReverseIndex:0},{shouldRender:"hybrid"===g&&gt>it[0],direction:"x",thumbSize:kt.x,thumbSpace:Ot.x,objLengthPerSize:zt[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))})().map((t=>{const r="boolean"==typeof V?V:V[t.progressReverseIndex];return e.createElement(a,{key:t.direction,type:m,direction:t.direction,progressReverse:r,size:ct,progressTrigger:[D,$e],scrollBarOnHover:q,scrollBarEvent:"sliderMenu"===m?It:Ht,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:$t,duration:De.duration,isTouched:be.current,scrollStateRef:Ee,scrollEl:pe,scrollBarsRef:ye,triggerUpdate:de,overscroll:Le,maxScrollSize:bt})})):null),Qt);return"auto"===x?e.createElement(o,{measure:"outer",onResize:Ct},rr):rr};ie.displayName="MorphScroll";const le={MorphScroll:ie,ResizeTracker:o,IntersectionTracker:n};exports.IntersectionTracker=n,exports.MorphScroll=ie,exports.ResizeTracker=o,exports.default=le;
package/esm/index.js CHANGED
@@ -1 +1 @@
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},i=({className:t,children:r,style:n,root:i,threshold:l,rootMargin:s,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=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:i,threshold:l,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[h,i,l,f]),e.createElement("div",{"intersection-tracker":"",className:t,ref:m,style:n},c||u?r:null)};i.displayName="IntersectionTracker";const l=({className:t,children:r,style:n,measure:o="inner",onResize:i})=>{const l=e.useRef(null);e.useEffect((()=>{const e=l.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)i&&i(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,i]);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:l,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};l.displayName="ResizeTracker";let s=1;function c(e,t=0,r=1/0,n=!0){return Math.max(t,Math.min(n?Math.round(e):e,r))}const a="wrap-id";function u(e,t,r,n,o){t.matches(":focus")||t.focus(),n.animating||(n.targetScrollX=c(t.scrollLeft,0,r[0]),n.targetScrollY=c(t.scrollTop,0,r[1])),"x"===o?n.targetScrollX=c(n.targetScrollX+e.deltaY,0,r[0]):n.targetScrollY=c(n.targetScrollY+e.deltaY,0,r[1]),n.animating||(n.animating=!0,n.animationFrameId=requestAnimationFrame((function e(){let i;if("x"===o){const e=c(t.scrollLeft+.4*(n.targetScrollX-t.scrollLeft),0,r[0]);t.scrollLeft=e,i=Math.abs(e-n.targetScrollX)}else{const e=c(t.scrollTop+.4*(n.targetScrollY-t.scrollTop),0,r[1]);t.scrollTop=e,i=Math.abs(e-n.targetScrollY)}i>2.5?n.animationFrameId=requestAnimationFrame(e):("x"===o?t.scrollLeft=c(n.targetScrollX,0,r[0]):t.scrollTop=c(n.targetScrollY,0,r[1]),n.animating=!1,n.animationFrameId=null)})))}const d=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:i,scrollBarOnHover:l,scrollBarEvent:s,thumbSize:c,thumbSpace:a,objLengthPerSize:d,sliderCheckLocal:m,duration:f,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v,maxScrollSize:x})=>{const w=e.useRef(null),E=e.useRef(null),M=["hybrid","y"].includes(r)?"y":"x",j=Math.abs(v.current[M])*(c/200),S=c-j,k=0>v.current[M]?a+j:a,A=e.useMemo((()=>{if("scroll"===t)return;const r=o["x"===M?0: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,M,f,m)}:void 0},Array.isArray(i[0].progressElement)?i[0].progressElement[o]:i[0].progressElement)))}),[d,t,i[1],f,m,o[0],o[1],s]),L=e.useMemo((()=>"x"!==r?"y":"x"),[r]),O=o["x"===L?0:1],R="scroll"!==t?"":c+2*a>O?"flex-end":"flex-start";e.useEffect((()=>{if(h||!i[0].wheel)return;const e=w.current,t=g.current;if(!e||!t)return;let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>u(e,t,x,p.current,L);return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[L]),e.useEffect((()=>{const e="slider"===t?w.current:E.current;if(!e||"sliderMenu"===t)return;const r=e=>s(e);return e.addEventListener("pointerdown",r),()=>e.removeEventListener("pointerdown",r)}),[s,t]),e.useEffect((()=>{const e=w.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[c]);const z=Object.assign({position:"absolute"},l&&{opacity:0,transition:"opacity 0.2s ease-in-out"});return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+L,ref:w,"data-direction":L,style:Object.assign(Object.assign(Object.assign({},z),{width:"fit-content",height:O+"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:E,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${k}px)`},i[0].progressElement&&{cursor:"grab"}),{display:"flex",alignItems:R})},i[0].progressElement)):d>1&&i[0].progressElement&&e.createElement("div",{className:"ms-slider ms-"+L,ref:w,"data-direction":L,style:Object.assign(Object.assign(Object.assign(Object.assign({},z),{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}))},A))};d.displayName="ScrollBar";const m=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const i=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)"}:{}),l=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:l,style:i})};m.displayName="Edge";var f=e.memo(m);const h=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:i})=>{const l=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:i+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=l.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:l,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 i=n||"default",l=performance.now()+t;if("exclusive"===i){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:l,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()}))},E=e=>{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)},M=e=>{const t=e.getAttribute("data-direction");w("remove"+t),e.style.opacity="1",e.classList.remove("leave"),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,i)=>{const l=null!=i?i:++t;return r.delete(l),r.set(l,o),null===e&&(e=requestAnimationFrame(n)),l},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)}}(),S=(e,t,r)=>{const n=e.current[t],o=performance.now();j.start((()=>{const i=performance.now(),l=Math.min((i-o)/140,1);return 1>l?(e.current[t]=n*(1-l),r(),!0):(e.current[t]=0,r(),!1)}))};let k,A={x:0,y:0},L={x:0,y:0},O={x:0,y:0,t:0,distX:0,distY:0},R=null;const z=(e,t,r,n)=>{if(!e)return;let o=null;["thumb","slider"].includes(e)?o="slider"===e?null==t?void 0:t.closest(".ms-slider"):t:"wrapp"===e&&(o=r),((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 user-select: none;\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")}})(o,n)},T=(e,t,r,n)=>{"x"===e?(r.scrollStateRef.targetScrollX=n,t.scrollLeft!==n&&(t.scrollLeft=n)):(r.scrollStateRef.targetScrollY=n,t.scrollTop!==n&&(t.scrollTop=n))},C=(e,t,r,n)=>{var o,i;const l=n.scrollElement;if(!l)return;const s="x"===e,a={x:n.event.clientX,y:n.event.clientY};if(!a)return;const u=(e,t,r)=>{if(0===e)return 0;const o="x"===t?n.sizeLocal[0]:n.sizeLocal[1],i=.14*Math.max(600,o),l=Math.abs(e);return c(e*i/(i+(r?-l:l)),-150,150)};if(!R)return void(R={x:{value:a.x,rest:0,raw:u(n.overscrollRef.current.x,"x",!0)},y:{value:a.y,rest:0,raw:u(n.overscrollRef.current.y,"y",!0)}});const d=R,m={x:a.x-d.x.value,y:a.y-d.y.value},f=Math.abs(A[e]);if(f>2?n.isDraggingRef.current=!0:3>f&&(A[e]+=m[e]),n.isTouched){const e=performance.now();if(O.t){const t=Math.max(e-O.t,8);O={x:.8*O.x+m.x/t*.2,y:.8*O.y+m.y/t*.2,t:e,distX:(null!==(o=O.distX)&&void 0!==o?o:0)+Math.abs(m.x),distY:(null!==(i=O.distY)&&void 0!==i?i:0)+Math.abs(m.y)}}else O.t=e}const h="wrapp"===n.clickedObject.current?-m[e]:m[e],p=s?"scrollLeft":"scrollTop",g=s?0:1,y=(t,r,o)=>{const i=R[e],a=s?n.maxScrollSize[0]:n.maxScrollSize[1];if(!Number.isFinite(t)||!Number.isFinite(r))return void(R=null);if(0!==i.raw){const t=i.raw;return i.raw+=.6*r,o&&(n.overscrollRef.current[e]=u(i.raw,e),n.triggerUpdate()),Math.sign(i.raw)!==Math.sign(t)?(i.raw=0,void(o&&(n.overscrollRef.current[e]=0,n.triggerUpdate()))):void 0}if(0>=a)return void T(e,l,n,0);const d=l[p];if(0>=d&&0>t||d>=a&&t>0)return i.raw+=r,void(o&&(n.overscrollRef.current[e]=u(i.raw,e),n.triggerUpdate()));const m=c(l[p]+t,0,a);T(e,l,n,m)};if("thumb"===n.clickedObject.current&&"slider"!==n.type){const r=h*t+d[e].rest,n=Math.trunc(r);return d[e].rest=r-n,void y(n,h,!1)}if("slider"===n.type&&(L[e]+=h),"wrapp"===n.clickedObject.current)return void y(h/r[g],m[e],!0);const b=l[p];if(n.sliderElSize&&Math.abs(L[e])<n.sliderElSize[s?0:1])return;const v=e=>{const t=l[s?"clientWidth":"clientHeight"]+n.gap[g];return t*(Math.floor(Math.max(0,b)/t)+e)},x=h>0&&b+n.sizeLocal[g]<n.wrapElWH[g]?v(1):0>h&&b>0?v(-1):null;L[e]=0,n.smoothScroll(x,e,10)};function F(e){j.stop(),["x","y"].forEach((t=>{e.rafScrollAnim.cancel(),w("smoothScrollBlock"+t)}));const t=e.scrollElement;if(!t)return;e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop,O={x:0,y:0,t:0,distX:0,distY:0};const r=[t.scrollWidth,t.scrollHeight],n=["scroll","slider"].includes(e.type)?function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(t):[];let o=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,r=(e.sizeLocal[t]-e.scrollBarEdge[t]-e.thumbSize)*n[t];o=e.maxScrollSize[t]/r,Number.isFinite(o)&&o>0||(o=1)}z(e.clickedObject.current,e.target,t,"start"),null==k||k.abort();const i=new AbortController;k=i;const{signal:l}=i;document.addEventListener("pointermove",(t=>{(t=>{var i;let l;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(i=e.target)||void 0===i?void 0:i.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])};l=[r("x"),r("y")]}!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};R&&(R.x.value=r.x,R.y.value=r.y)}(Object.assign(Object.assign({},e),{event:t,wrapElWH:r,visualDiff:n,thumbRatio:o,sliderElSize:l}))})(t)}),{signal:l});const s=t=>{e.isDraggingRef.current=!1,function(e){null==k||k.abort();const t=e.scrollElement;if(t){if(z(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=L,n=(r,n)=>{const o="x"===r,i=o?e.maxScrollSize[0]:e.maxScrollSize[1],l=t[o?"scrollLeft":"scrollTop"],s=o?e.gap[0]:e.gap[1],c=t[o?"clientWidth":"clientHeight"]+s,a=(Math[n?n>0?"floor":"ceil":"round"](l/c)+(null!=n?n:0))*c;a>i||0>a||e.smoothScroll(a,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=O[r]*e.thumbRatio,o="x"===r?O.distX:O.distY;80>performance.now()-O.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 l="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 i=e[l]+r*o;(0>i||i>s)&&(r*=.4,i=c(i,0,s)),e[l]=i,n("step",u)};n("step",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)}R=null,0!==e.overscrollRef.current.x&&S(e.overscrollRef,"x",e.triggerUpdate),0!==e.overscrollRef.current.y&&S(e.overscrollRef,"y",e.triggerUpdate),e.clickedObject.current=null,O={x:0,y:0,t:0,distX:0,distY:0},A={x:0,y:0},L={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:o}))};document.addEventListener("pointerup",s,{signal:l}),document.addEventListener("pointercancel",s,{signal:l})}function N(e,t,r,n){return new(r||(r=Promise))((function(o,i){function l(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(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(l,s)}c((n=n.apply(e,t||[])).next())}))}function I(e,t){return e>t?Math.floor(e/t):1}"function"==typeof SuppressedError&&SuppressedError;const Y=new WeakMap,X=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function H(e,t,r=0,n=0){return o=>{var i,l,s,c;let a=!1;const u={width:(null!==(i=o.width)&&void 0!==i?i:0)-r,height:(null!==(l=o.height)&&void 0!==l?l: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 W=()=>{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 P(){let e=null;const t=new Map;return{schedule:(r,n)=>{t.set(r,n),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t.values());t.clear(),r.forEach((e=>e()))})))},cancel:()=>{null!==e&&(cancelAnimationFrame(e),e=null,t.clear())}}}const D=t=>{if(null==t)return[];if(e.isValidElement(t)){const r=t;return r.type===e.Fragment?e.Children.toArray(r.props.children).flatMap(D):[r]}return[t]},V=40,U="ms-under-drag";let q,K=null,_=!1;const G={x:0,y:0},Z={x:0,y:0};let J=!1,Q=null,ee="",te=null,re=null,ne=null;const oe=P(),ie=()=>{re&&re.removeAttribute(U),Q=null,re=null,te=null,ee="",ne=null};function le(e,t,r,n,o,i){const l=e-t,s=r-e;return V>l&&n>0?{dir:-1,distance:l}:V>s&&i>n+o?{dir:1,distance:s}:null}function se(e){const t=c((V-Math.abs(e))/V,0,1,!1);return t*t*20|0}function ce(){if(!Q)return;const{parent:e,element:t,direction:r}=Q,n=t.getBoundingClientRect(),o=Z.x,i=Z.y;if(o<n.left-V||o>n.right+V||i<n.top-V||i>n.bottom+V)return void ie();let l=null,s=null,c=0,a=0;const u="x"!==r?le(i,n.top,n.bottom,t.scrollTop,t.clientHeight,t.scrollHeight):null;u&&(l=-1===u.dir?"top":"bottom",a=se(u.distance)*u.dir);const d="y"!==r?le(o,n.left,n.right,t.scrollLeft,t.clientWidth,t.scrollWidth):null;d&&(s=-1===d.dir?"left":"right",c=se(d.distance)*d.dir),ee=[l,s].filter(Boolean).join(" "),ee!==ne&&(e.setAttribute(U,ee),ne=ee),(c||a)&&t.scrollBy(c,a),oe.schedule("autoScrollLoop",ce)}function ae(e){e instanceof DragEvent&&0===e.buttons?ue():Z.x===e.clientX&&Z.y===e.clientY||(Z.x=e.clientX,Z.y=e.clientY,oe.schedule("onMove",(()=>{if(!J){const e=Z.x-G.x,t=Z.y-G.y;if(10>Math.hypot(e,t))return;J=!0}const e=document.elementFromPoint(Z.x,Z.y);if(!e)return;const t=e.closest("[morph-scroll]");if(!t&&!Q)return void ie();const r=t?me.get(t):Q;r&&(Q=r,te!==r.element&&(re&&re!==r.parent&&re.removeAttribute(U),te=r.element,re=r.parent,re.setAttribute(U,ee),ne=ee,ce()))})))}function ue(){null==K||K.abort(),K=null,J=!1,oe.cancel(),ie()}function de(e){const t=e instanceof PointerEvent;if(t&&!e.target.closest("[ms-custom-drag]"))return;G.x=e.clientX,G.y=e.clientY,null==K||K.abort();const r=new AbortController;K=r;const{signal:n}=r;t?(document.addEventListener("pointermove",ae,{signal:n}),document.addEventListener("pointerup",ue,{signal:n})):(document.addEventListener("dragover",ae,{signal:n}),document.addEventListener("dragend",ue,{signal:n}),document.addEventListener("drop",ue,{signal:n}),document.addEventListener("pointerdown",ue,{signal:n}),window.addEventListener("blur",ue,{signal:n}))}const me=new Map;const fe=({className:i,children:m,type:h="scroll",direction:g="y",scrollPosition:y,onScrollValue:b,isScrolling:v,size:j,objectsSize:S,crossCount:k,gap:A,wrapperMargin:L,wrapperMinSize:O,wrapperAlign:R,elementsAlign:z,elementsDirection:T="row",edgeGradient:C,progressTrigger:V={wheel:!0},progressReverse:U=!1,scrollBarOnHover:G=!1,scrollBarEdge:Z,thumbMinSize:J,render:Q,emptyElements:ee,suspending:te=!1,fallback:re,dragScroll:ne})=>{var oe,ie,le,se,ce,ae;const ue=function(){const[,e]=r({});return n((()=>{e({})}),[])}(),fe=function(){const e=t(null);return null===e.current&&(e.current=""+s++),e.current}(),he=P(),pe=()=>he.schedule("triggerUpdate",ue),ge=P();if(!j)throw Error('prop "size" is not provided'+("\n morph-scroll "+fe));Object.keys(V).length,"none"===S||Array.isArray(S)&&("none"===S[0]||S[1]);const ye=e.useRef(null),be=e.useRef(null),ve=e.useRef(null),xe=e.useRef(null),we=e.useRef(new Set),Ee=e.useRef(W()),Me=e.useRef(!0),je=e.useRef(null),Se=e.useRef({loaded:new Set,empty:new Set}),ke=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),Ae=e.useRef(!1),Le=e.useRef(!1),Oe=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(i,l){const s=i-t,c=l-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=i),Math.abs(c)>e&&(o=c>0?"down":"up",r=l)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),Re=e.useRef({x:null,y:null}),ze=e.useRef({x:0,y:0}),Te=e.useRef(!1);function Ce(){return e.useRef({width:0,height:0})}const Fe=Ce(),Ne=Ce(),Ie=Ce(),[Ye,Xe,He,We,$e,Be,Pe,De,Ve,Ue,qe]=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)}(y,Q,j,S,ee,O,R,A,V,Se.current.empty,Z),Ke=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=y)if("number"==typeof y||"end"===y)r=[y,y];else if(Array.isArray(y))r=y;else if("object"==typeof y){const i=y.value;"number"==typeof i||"end"===i?r=[i,i]:Array.isArray(i)&&(r=i),n=null!==(e=y.duration)&&void 0!==e?e:200,o=null!==(t=y.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[Ye]),_e={color:null,size:40},Ge=e.useMemo((()=>"object"==typeof C?Object.assign(Object.assign({},_e),C):"string"==typeof C?{color:C,size:40}:_e),[C]),Ze=e.useMemo((()=>{const t=V.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}),[Ve]),Je=e.useMemo((()=>e.Children.toArray(m).flatMap(D)),[m]),Qe=e.useMemo((()=>Je.map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return!("clear"===ee||ee&&"object"==typeof ee&&"mode"in ee&&"clear"===ee.mode)||!(null===(t=Se.current.empty)||void 0===t?void 0:t.has(e))}))),[m,$e,Ue]),[et,tt,rt,nt]=L?o(L):[0,0,0,0],ot=et+rt,it=nt+tt,lt=e.useMemo((()=>{var e,t;return"number"==typeof A?[A,A]:Array.isArray(A)?[null!==(e=A[1])&&void 0!==e?e:0,null!==(t=A[0])&&void 0!==t?t:0]:[0,0]}),[A]),st=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}),[Xe]),ct=e.useMemo((()=>o(st.rootMargin)),[st.rootMargin,g]),at=e.useMemo((()=>{const[e,t]=Array.isArray(j)?j:"number"==typeof j?[j,j]:[Fe.current.width,Fe.current.height];if(!V.arrows||!Ze.size||!Ze.contentReduce)return[e,t,e,t];const r=2*Ze.size;let n=e,o=t;return"x"===g?n=e-r:"y"===g?o=t-r:"hybrid"===g&&(n=e-r,o=t-r),[n,o,e,t]}),[He,Ve,g,Ze,Fe.current.height,Fe.current.width]),ut="x"===g?at[0]:at[1],dt=e.useMemo((()=>{if(!Z)return[0,0];if("number"==typeof Z){const e=2*Z;return[e,e]}if(Array.isArray(Z)){const[e=0,t]=Z;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[qe]),mt=e.useMemo((()=>[at[0]-dt[0],at[1]-dt[1]]),[dt.join(),at[0],at[1]]),ft=e.useMemo((()=>S?Array.isArray(S)?S:o(S,!0,2):[null,null]),[We]),ht=e.useMemo((()=>{const{height:e,width:t}=Ie.current,r=(e,t,r)=>t||("number"==typeof e?e:"size"===e?r:0);return[r(ft[0],t,at[0]),r(ft[1],e,at[1])]}),[ft.join(),g,Ie.current.width,Ie.current.height,at.join()]),pt=e.useMemo((()=>Q&&ee&&!re?e.createElement("div",{className:"ms-empty-element"}):re),[!!re,Xe,$e]),gt=e.useMemo((()=>{if("none"===ft[0]||"none"===ft[1])return[1,Qe.length];const e="x"===g?1:0,t="row"===T,r=at[e],n=ht[e]?ht[e]+lt[e]:0,o="hybrid"===g&&r?n*Qe.length:r,i=n?Math.floor(o/n):1;let l=k&&i>=k?"hybrid"===g?Math.ceil(i/k):k:i;const s=l>1&&l<Qe.length?Math.ceil(Qe.length/l):l<Qe.length?Qe.length:1;t||(l=Math.ceil(Qe.length/s));const c=k&&k<Qe.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===g){const e=c?t?k:l:t?Qe.length:1,r=c?t?l:k:t?1:Qe.length;return[a(e),a(r)]}return[a(l),a(s)]}),[T,lt[0],lt[1],ht[0],ht[1],Qe.length,g,at.join(),k]),yt=e.useMemo((()=>{const e=1>gt[0]?1:gt[0]*lt[1]-lt[1],t=gt["x"===g?1:0],r=Qe.length<t?Qe.length:t;return ht[0]?(ht[0]+lt[1])*r-lt[1]:st.type?Ie.current.width+e:Ne.current.width}),[g,ht[0],gt[0],gt[1],lt[1],Ne.current.width,Ie.current.width,st.type,Qe.length]),bt=e.useMemo((()=>{const e=1>gt[1]?1:gt[0]*lt[0]-lt[0];return ht[1]?"x"===g?(ht[1]+lt[0])*gt[0]-lt[0]:(ht[1]+lt[0])*gt[1]-lt[0]:st.type?Ie.current.height+e:Ne.current.height}),[g,ht[1],gt[0],gt[1],lt[0],Ne.current.height,Ie.current.height,st.type]),vt=e.useMemo((()=>bt+ot),[bt,ot]),xt=e.useMemo((()=>yt+it),[yt,it]),wt="x"===g?xt:vt,Et=e.useMemo((()=>[Math.max(0,xt-at[0]),Math.max(0,vt-at[1])]),[at.join(),vt,xt]),Mt="x"===g?(null===(oe=ve.current)||void 0===oe?void 0:oe.scrollLeft)||0:(null===(ie=ve.current)||void 0===ie?void 0:ie.scrollTop)||0,jt=Mt>1&&!0,St=wt>Math.round(Mt+ut);let kt=!1,At=!1;"hybrid"===g&&(kt=((null===(le=ve.current)||void 0===le?void 0:le.scrollLeft)||0)>1&&!0,At=Math.round(((null===(se=ve.current)||void 0===se?void 0:se.scrollLeft)||0)+at[0])<xt);const Lt=e.useMemo((()=>null!=J?J:30),[J]),Ot=e.useCallback((e=>V.progressElement&&wt?"x"===e?$(at[0]-dt[0],xt,Lt):$(at[1]-dt[1],vt,Lt):0),[Ve,wt,at[0],at[1],xt,Lt,dt.join()]),Rt=e.useMemo((()=>({x:"y"!==g?Ot("x"):0,y:"x"!==g?Ot("y"):0})),[Ot,g]),zt=e.useMemo((()=>({w:at[0]?xt-at[0]:xt,h:at[1]?vt-at[1]:vt})),[xt,vt,at[0],at[1]]),Tt={x:"y"!==g?B((null===(ce=ve.current)||void 0===ce?void 0:ce.scrollLeft)||0,zt.w,mt[0],Rt.x):0,y:"x"!==g?B((null===(ae=ve.current)||void 0===ae?void 0:ae.scrollTop)||0,zt.h,mt[1],Rt.y):0},Ct=e.useMemo((()=>{if(!st.type)return[{top:0,bottom:0,left:0,right:0}];let e=0;const t="x"===g,r="row"===T,n=t&&!r||!t&&r,o=ht[0]+lt[1],i=ht[1]+lt[0],l=new Set,s=n?gt[0]:gt[1],c=ht[r?0:1],a=lt[r?1:0];for(let e=Math.floor((Qe.length-1)/s)*s;e<Qe.length;e++)l.add(e);const u=s-l.size,d=u>0?(c+a)*u:0;return"center"===z?e=Math.round(d/2):"end"===z&&(e=d),Qe.map(((t,s)=>{const c=n?s%gt[0]:Math.floor(s/gt[1]),a=n?Math.floor(s/gt[0]):s%gt[1];let u,d;"x"===g?(u=a,d=c):(u=c,d=a);const m=l.size>0&&l.has(s),f=(m&&!r?e:0)+i*d,h=(m&&r?e:0)+o*u;return{top:f,left:h,bottom:f+ht[1],right:h+ht[0]}}))}),[ht[0],ht[1],lt[0],lt[1],z,Qe.length,gt[0],gt[1],st.type,T,g]),Ft=e.useMemo((()=>(null==at?void 0:at.length)&&R?function(e,t,r,n){const[o,i="start"]="string"==typeof e?[e,e]:e,l={display:"flex"};return t[0]>r&&(l.justifyContent=X(o)),t[1]>n&&(l.alignItems=X(i)),l}(R,at,xt,vt):{}),[R,at.join(),vt,xt]),Nt=e.useMemo((()=>[I(xt,at[0]),I(vt,at[1])]),[xt,vt,at.join()]),It=e.useMemo((()=>"x"===g?Nt[0]:Nt[1]),[g,Nt[0],Nt[1]]),Yt=e.useCallback(H(Fe,pe),[]),Xt=e.useCallback(H(Ne,pe,it,ot),[it,ot]),Ht=e.useCallback(H(Ie,pe),[]),Wt=e.useCallback(((e,t,r)=>{const n=ve.current;return n&&null!==e?function(e,t,r,n,o,i){return N(this,void 0,void 0,(function*(){const l="y"===e,s=l?"scrollTop":"scrollLeft",a=l?i[1]:i[0],u=c(n,0,a),d=c(t[s],0,a);if(d!==u)return null===r?(yield function(e){return N(this,void 0,void 0,(function*(){for(;e.scrollHeight<=e.clientHeight&&e.scrollWidth<=e.clientWidth;)yield new Promise((e=>requestAnimationFrame(e)))}))}(t),void(t[s]=n)):void x((()=>{const e=performance.now(),n=()=>{const i=performance.now(),l=Math.min((i-e)/r,1),m=c(d+(u-d)*l,0,a);t[s]=m,1>l&&m!==u&&o("smoothScroll",n)};o("smoothScroll",n)}),r,"smoothScrollBlock"+e,"exclusive")}))}(t,n,Me.current?null:r,e,ge.schedule,Et):null}),[Et.join()]),$t=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:L?`${et}px ${tt}px ${rt}px ${nt}px`:"",height:ft[1]&&"none"!==ft[1]?bt+"px":"fit-content",width:ft[0]&&"none"!==ft[0]?yt+"px":"fit-content"},A&&!st.type&&{gap:`${lt[0]}px ${lt[1]}px`}),O&&function(e,t,r,n,o){const i=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=i(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let l,s;return Array.isArray(e)?[l,s]=e:l=s=e,{minWidth:i(l,"x")+"px",minHeight:i(s,"y")+"px"}}(O,g,at,it,ot)),("hybrid"===g||"x"===g)&&{flexShrink:0});if(st.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===gt[0]?"y"===g?"column":"row":T,r=ft[0]&&"none"!==ft[0]&&ft[1]&&"none"!==ft[1]?"wrap":void 0;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:r,justifyContent:X(z)})}),[L,Pe,Be,[et,tt,rt,nt,it,ot,lt[0],lt[1]].join(),at.join(),De,ft[1],bt,yt,De,st.type,g,gt[0],T,z]),Bt=e.useCallback(((e,t,r)=>{var n;Ee.current=W();const o=t.target;if(o.closest('\n [ms-custom-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let i=null;r&&(i=null===(n=o.closest("scroll"===h?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),je.current=e,F({scrollElement:ve.current,target:o,clickedObject:je,scrollStateRef:ke.current,type:h,triggerUpdate:pe,direction:g,smoothScroll:Wt,sizeLocal:[at[0],at[1]],thumbSize:"x"===i?Rt.x:Rt.y,axisFromAtr:i,duration:Ke.duration,scrollBarEdge:dt,rafScrollAnim:ge,isTouched:Ee.current,gap:lt,overscrollRef:ze,objLengthPerSize:Nt,isDraggingRef:Te,maxScrollSize:Et})}),[g,h,at.join(),Ke.duration,Wt,dt.join(),Rt.x,Rt.y,lt.join(),Nt,Et.join()]),Pt=e.useCallback((e=>{Bt("thumb",e,!0)}),[Bt]),Dt=e.useCallback((e=>{ve.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:i,loop:l,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,m=(e,r,n)=>{const l=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,i=n?s[0]:s[1],l=t[n?"clientWidth":"clientHeight"]+i;return l*(Math.floor(Math.max(0,o)/l)+r)})(e,r);o(l,e,i)};switch(e){case"top":u>0?m("y",-1):l&&m("y",-1,!0);break;case"left":d>0?m("x",-1):l&&m("x",-1,!0);break;case"right":d+n[0]<c?m("x",1):l&&m("x",1,!0);break;case"bottom":u+n[1]<a?m("y",1):l&&m("y",1,!0)}})({arrowType:e,scrollElement:ve.current,wrapSize:[xt,vt],scrollSize:at,smoothScroll:Wt,duration:Ke.duration,loop:Ze.loop,gap:lt})}),[at.join(),xt,vt,Ke.duration,Wt,Ze.loop,lt[0],lt[1]]),Vt=e.useCallback((()=>{"scroll"!==h&&at[0]&&at[1]&&be.current&&ve.current&&we.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var i,l;let s=Y.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},Y.set(t,s)),!s.elements.length)return;const u="x"===c?e.scrollLeft:e.scrollTop,d="x"===c?e.clientWidth:e.clientHeight;let m=Math.floor((u+d/2)/d);m!==s.lastIndex&&(-1!==s.lastIndex&&(null===(i=s.elements[s.lastIndex])||void 0===i||i.classList.remove("active")),null===(l=s.elements[m])||void 0===l||l.classList.add("active"),s.lastIndex=m)}))})(ve.current,we.current,g,Nt)}),[at.join(),g,h,Nt.join()]),Ut=e.useCallback((()=>{xe.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 i=o.nextNode();for(;i;){const e=i,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)}i=o.nextNode()}r()})(xe.current,Se,pe,st.type)}),[Xe]),qt=e.useCallback((e=>{"object"==typeof ee&&"clickTrigger"in ee&&void 0!==ee.clickTrigger&&((e,t,r)=>{const{selector:n,delay:o=0}="string"==typeof t?{selector:t}:t,i=e.target;if(!i.closest(n))return;const l=i.closest(`[${a}]`);null==l||l.classList.add("remove"),x((()=>{null==l||l.classList.remove("remove"),r()}),o)})(e,ee.clickTrigger,Ut)}),[$e,Ut]),Kt=e.useCallback((e=>{w("removeHover");const t=be.current,r=ye.current,n=ve.current;if(!t||!r||!n)return;if(Ke.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;Oe.current.update(t,r)}null==b||b(n.scrollLeft,n.scrollTop);const o=t.querySelectorAll("scroll"===h?".ms-bar":".ms-slider");G&&o.length>0&&!Ae.current&&o.forEach((e=>{e.classList.contains("hover")||M(e)})),Ae.current=!0,null==v||v(!0),x((()=>{Oe.current.reset(),Ae.current=!1,null==v||v(!1),st.type&&Ut(),G&&o.length>0&&!je.current&&o.forEach((e=>{x((()=>{e.hasAttribute("ms-manual-hover")||E(e)}),1e3,"removeHover")}))}),200,"isScrolling"),he.schedule("sliderCheckLocal",(()=>{"scroll"!==h&&Vt(),ue()}))}),[b,v,h,Vt,Ut,G,st.type]),_t=e.useCallback((e=>{if(Le.current)return;const t="object"==typeof V.wheel&&"string"==typeof V.wheel.changeDirectionKey?V.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==g||Le.current||(e.stopPropagation(),Le.current=!0,pe())}),[g,Ve]),Gt=e.useCallback((e=>{Le.current&&(e.stopPropagation(),Le.current=!1,pe())}),[]);e.useEffect((()=>{if(Ee.current||"hybrid"!==g)return;const e=xe.current,t=ve.current;return e&&t?(e.clientWidth+it>t.clientWidth&&e.clientHeight+ot>t.clientHeight&&(t.addEventListener("keydown",_t),t.addEventListener("keyup",Gt)),()=>{t.removeEventListener("keydown",_t),t.removeEventListener("keyup",Gt)}):void 0}),[g,Ve,He,We,Qe.join(),it,ot]),e.useEffect((()=>{ee&&st.type&&Ut()}),[$e,st.type,Ut,Qe.length]),e.useEffect((()=>{if(Ee.current)return;const e=ve.current,t=xe.current;if(!e||!t)return;const r="hybrid"===g&&"object"==typeof V.wheel&&V.wheel.changeDirection?"x":g,n="hybrid"===g&&bt+ot<=at[1]||Le.current?["hybrid","y"].includes(r)?"x":"y":r,o=t=>{t.preventDefault(),u(t,e,Et,ke.current,n)};return V.wheel&&e.addEventListener("wheel",o,{passive:!1}),()=>{e.removeEventListener("wheel",o)}}),[g,Ve,bt,at[1],ot,Le.current,Et.join()]),e.useEffect((()=>{he.schedule("smoothScrollLocal",(()=>{("hybrid"===g?["x","y"]:[g]).forEach((e=>{const t=Ke.value["x"===e?0:1];if("end"===t){if(Oe.current.get()[e]===("x"===e?"left":"up"))return;Wt("x"===e?zt.w:zt.h,e,Ke.duration)}else"number"==typeof t&&Re.current[e]!==t&&(Re.current[e]=t,Wt(t,e,Ke.duration))}))}))}),[g,Ye,zt.w,zt.h,Ke.value.join()]),e.useEffect((()=>{const e=ke.current.animationFrameId;return(st.type||v)&&v&&v(!1),requestAnimationFrame((()=>Me.current=!1)),()=>{e&&cancelAnimationFrame(e),ke.current.animationFrameId&&cancelAnimationFrame(ke.current.animationFrameId),ge.cancel()}}),[]),e.useEffect((()=>{if(!ne)return;const e=ye.current,t=ve.current;if(!e||!t)return;const r={parent:e,element:t,direction:g};return function(e){me.set(e.parent,e),1===me.size&&function(){if(_)return;q=new AbortController;const{signal:e}=q;document.addEventListener("pointerdown",de,{signal:e}),document.addEventListener("dragstart",de,{signal:e}),_=!0}()}(r),()=>{!function(e){me.delete(e.parent),0===me.size&&_&&(null==q||q.abort(),null==K||K.abort(),_=!1)}(r)}}),[ne,g]),e.useEffect((()=>{const e=ve.current;if(!e)return;const t=e=>{Bt("wrapp",e)};if(V.content||!V.content&&Ee.current&&V.wheel){if(!0===V.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[Ve,Bt]),e.useEffect((()=>{const e=be.current;if(!e||!G)return;if(!we.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&je.current?document.addEventListener("mouseup",t):Array.from(we.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if(e.removeAttribute("ms-manual-hover"),null==r?void 0:r.current)return;E(e)}else e.setAttribute("ms-manual-hover",""),M(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:Ae})}))},r=(t,r)=>{Ee.current?(Array.from(we.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)}}),[G,h,g,we.current.size]),e.useEffect((()=>{"scroll"!==h&&he.schedule("sliderCheckLocal",Vt)}),[h,Vt,at.join()]);const Zt=e.useCallback(((t,r,n,o,i)=>{const l=Object.assign(Object.assign({width:ht[0]?ht[0]+"px":void 0,height:ht[1]?ht[1]+"px":void 0},st.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof i&&{"--content-visibility":i}),s=te?e.createElement(e.Suspense,{fallback:pt},o):o;return e.createElement("div",Object.assign({key:t},st.type||ee?{[a]:""+t}:{},{className:"ms-object-box",style:l,onClick:ee?qt:void 0}),s)}),[te,!!pt,ht[0],ht[1],Xe,$e,gt[0],qt,st.type]),Jt=e.useMemo((()=>{const t=new Map;return Je.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[Je]),Qt=e.useMemo((()=>[{positionType:"x"===g?"left":"top",visibility:jt},{positionType:"x"===g?"right":"bottom",visibility:St},..."hybrid"===g?[{positionType:"left",visibility:kt},{positionType:"right",visibility:At}]:[]]),[jt,St,g,kt,At]),er=e.useMemo((()=>({width:at[2]+"px",height:at[3]+"px"})),[at]),tr=e.useMemo((()=>{var e;return null!==(e={x:xt>at[0]?"scroll hidden":"hidden",y:vt>at[1]?"hidden scroll":"hidden",hybrid:`${xt>at[0]?"scroll":"hidden"} ${vt>at[1]?"scroll":"hidden"}`,hide:"hidden"}[V.wheel||V.content&&"scroll"===h?g:"hide"])&&void 0!==e?e:"hidden"}),[xt,vt,at,Ve,g]),rr=e.useMemo((()=>C?Qt.map((({positionType:t,visibility:r})=>e.createElement(f,{key:"edge-"+t,edgeGradient:Ge,visibility:r,edgeType:t,size:at}))):null),[C,Qt,Ge,He]),nr=e.useMemo((()=>V.arrows?Qt.map((({positionType:t,visibility:r})=>e.createElement(p,{key:"arrow-"+t,visibility:r,arrows:Ze,arrowType:t,handleArrow:Dt,size:at[0]}))):null),[Ve,Qt,Ze,Dt,at[0]]),or=()=>{var t,r;const n=(null===(t=ve.current)||void 0===t?void 0:t.scrollLeft)||0,o=(null===(r=ve.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:xe,style:Object.assign(Object.assign(Object.assign({},$t),(ze.current.x||ze.current.y)&&{transform:`translate(${ze.current.x}px, ${ze.current.y}px)`}),Te.current&&{pointerEvents:"none"})},Qe.map(((t,r)=>((t,r,n,o)=>{var i;const s=Jt.get(t),c=st.stopLoadOnScroll&&Ae.current&&!Se.current.loaded.has(t)?pt:(null===(i=Se.current.empty)||void 0===i?void 0:i.has(t))?ee&&"object"==typeof ee&&e.isValidElement(ee)?ee:ee&&"object"==typeof ee&&"mode"in ee&&"object"==typeof ee.mode&&"fallback"in ee.mode?ee.mode.fallback:pt:s,a="firstChild"!==ft[0]&&"firstChild"!==ft[1]||0!==r?c:e.createElement(l,{onResize:Ht},c);if(!st.type)return Zt(t,0,0,a);const{top:u,bottom:d,left:m,right:f}=Ct[r],h=(e=!0)=>{const t=e?ct:[0,0,0,0],r=e=>{const r="x"===e?n:o,i=r+("x"===e?at[0]:at[1]),l="x"===e?m-t[3]:u-t[2],s="x"===e?f+t[1]:d+t[0],c=s-l;if(0>=c)return 0;const a=Math.min(s,i)-Math.max(l,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===g){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===g?"x":"y")},p=h(),y=st.trackVisibility?h(!1):null;if("lazy"===st.type){const e=Se.current.loaded.has(t);if(p&&!e){if(Ae.current&&st.stopLoadOnScroll)return;Se.current.loaded.add(t)}return e?Zt(t,u,m,a,y):null}return p?Zt(t,u,m,a,y):(Se.current.loaded.delete(t),null)})(t,r,n,o))))},ir=e.useMemo((()=>{const e={position:"relative",width:at[0]+"px",height:at[1]+"px"};return V.arrows&&Ze.contentReduce&&Ze.size&&("x"===g?e.left=Ze.size+"px":"y"===g?e.top=Ze.size+"px":(e.top=Ze.size+"px",e.left=Ze.size+"px")),e}),[at,Ve,Ze,g]),lr=e.createElement("div",{"morph-scroll":""+fe,className:i,ref:ye,style:er},e.createElement("div",{className:"ms-content",ref:be,style:Object.assign(Object.assign(Object.assign({},ir),{transform:"translateZ(0)"}),Ee.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:ve,onScroll:Kt,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},Ft),"boolean"!=typeof V.progressElement||!1===V.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:tr}),V.content&&{cursor:"grab"})},ht[0]&&ht[1]?or():e.createElement(l,{onResize:Xt,style:Ft},or())),rr,V.progressElement&&!0!==V.progressElement?(()=>{const e="x"!==g;return[{shouldRender:wt>at[e?1:0],direction:g,thumbSize:e?Rt.y:Rt.x,thumbSpace:e?Tt.y:Tt.x,objLengthPerSize:It,progressReverseIndex:0},{shouldRender:"hybrid"===g&&xt>at[0],direction:"x",thumbSize:Rt.x,thumbSpace:Tt.x,objLengthPerSize:Nt[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))})().map((t=>{const r="boolean"==typeof U?U:U[t.progressReverseIndex];return e.createElement(d,{key:t.direction,type:h,direction:t.direction,progressReverse:r,size:mt,progressTrigger:[V,Ve],scrollBarOnHover:G,scrollBarEvent:"sliderMenu"===h?Wt:Pt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Vt,duration:Ke.duration,isTouched:Ee.current,scrollStateRef:ke,scrollEl:ve,scrollBarsRef:we,triggerUpdate:pe,overscroll:ze,maxScrollSize:Et})})):null),nr);return"auto"===j?e.createElement(l,{measure:"outer",onResize:Yt},lr):lr};fe.displayName="MorphScroll";const he={MorphScroll:fe,ResizeTracker:l,IntersectionTracker:i};export{i as IntersectionTracker,fe as MorphScroll,l as ResizeTracker,he as default};
1
+ import e,{useRef as t,useState as r,useCallback as n}from"react";import{cancelTask as o,setTask as i,setLockTask as l}from"keytask-core";const s=(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},c=({className:t,children:r,style:n,root:o,threshold:i,rootMargin:l,visibleContent:c=!1,onIntersection:a})=>{const[u,d]=e.useState(!1),m=e.useRef(null),f=e.useMemo((()=>{if(!l)return"";const e=s(l);return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px`}),[l]),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:o,threshold:i,rootMargin:f});return m.current&&e.observe(m.current),()=>{e.disconnect()}}),[h,o,i,f]),e.createElement("div",{"intersection-tracker":"",className:t,ref:m,style:n},c||u?r:null)};c.displayName="IntersectionTracker";const a=({className:t,children:r,style:n,measure:o="inner",onResize:i})=>{const l=e.useRef(null);e.useEffect((()=>{const e=l.current;if(!e)return;const t=new ResizeObserver((e=>{for(const t of e)i&&i(t.contentRect)}));return t.observe(e),()=>{t.unobserve(e),t.disconnect()}}),[o,i]);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:l,style:Object.assign(Object.assign({willChange:"width, height"},c[o]),n)},r)};a.displayName="ResizeTracker";let u=1;function d(e,t=0,r=1/0,n=!0){return Math.max(t,Math.min(n?Math.round(e):e,r))}const m="wrap-id";function f(e,t,r,n,o){t.matches(":focus")||t.focus(),n.animating||(n.targetScrollX=d(t.scrollLeft,0,r[0]),n.targetScrollY=d(t.scrollTop,0,r[1])),"x"===o?n.targetScrollX=d(n.targetScrollX+e.deltaY,0,r[0]):n.targetScrollY=d(n.targetScrollY+e.deltaY,0,r[1]),n.animating||(n.animating=!0,n.animationFrameId=requestAnimationFrame((function e(){let i;if("x"===o){const e=d(t.scrollLeft+.4*(n.targetScrollX-t.scrollLeft),0,r[0]);t.scrollLeft=e,i=Math.abs(e-n.targetScrollX)}else{const e=d(t.scrollTop+.4*(n.targetScrollY-t.scrollTop),0,r[1]);t.scrollTop=e,i=Math.abs(e-n.targetScrollY)}i>2.5?n.animationFrameId=requestAnimationFrame(e):("x"===o?t.scrollLeft=d(n.targetScrollX,0,r[0]):t.scrollTop=d(n.targetScrollY,0,r[1]),n.animating=!1,n.animationFrameId=null)})))}const h=({type:t,direction:r,progressReverse:n,size:o,progressTrigger:i,scrollBarOnHover:l,scrollBarEvent:s,thumbSize:c,thumbSpace:a,objLengthPerSize:u,sliderCheckLocal:d,duration:m,isTouched:h,scrollStateRef:p,scrollEl:g,scrollBarsRef:y,triggerUpdate:b,overscroll:v,maxScrollSize:x})=>{const w=e.useRef(null),E=e.useRef(null),j=["hybrid","y"].includes(r)?"y":"x",M=Math.abs(v.current[j])*(c/200),S=c-M,L=0>v.current[j]?a+M:a,O=e.useMemo((()=>{if("scroll"===t)return;const r=o["x"===j?0:1];return Array.from({length:u},((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,d)}:void 0},Array.isArray(i[0].progressElement)?i[0].progressElement[o]:i[0].progressElement)))}),[u,t,i[1],m,d,o[0],o[1],s]),k=e.useMemo((()=>"x"!==r?"y":"x"),[r]),A=o["x"===k?0:1],R="scroll"!==t?"":c+2*a>A?"flex-end":"flex-start";e.useEffect((()=>{if(h||!i[0].wheel)return;const e=w.current,t=g.current;if(!e||!t)return;let r=e.previousElementSibling;for(;r&&!r.classList.contains("ms-element");)r=r.previousElementSibling;const n=e=>f(e,t,x,p.current,k);return e.addEventListener("wheel",n,{passive:!1}),()=>e.removeEventListener("wheel",n)}),[k]),e.useEffect((()=>{const e="slider"===t?w.current:E.current;if(!e||"sliderMenu"===t)return;const r=e=>s(e);return e.addEventListener("pointerdown",r),()=>e.removeEventListener("pointerdown",r)}),[s,t]),e.useEffect((()=>{const e=w.current;if(e)return y.current.add(e),b(),()=>{y.current.delete(e)}}),[c]);const z=Object.assign({position:"absolute"},l&&{opacity:0,transition:"opacity 0.2s ease-in-out"});return e.createElement(e.Fragment,null,"scroll"===t?e.createElement("div",{className:"ms-bar ms-"+k,ref:w,"data-direction":k,style:Object.assign(Object.assign(Object.assign({},z),{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:E,style:Object.assign(Object.assign({height:S+"px",transform:`translateY(${L}px)`},i[0].progressElement&&{cursor:"grab"}),{display:"flex",alignItems:R})},i[0].progressElement)):u>1&&i[0].progressElement&&e.createElement("div",{className:"ms-slider ms-"+k,ref:w,"data-direction":k,style:Object.assign(Object.assign(Object.assign(Object.assign({},z),{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}))},O))};h.displayName="ScrollBar";const p=({edgeGradient:t,visibility:r,edgeType:n,size:o})=>{const i=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)"}:{}),l=`ms-edge ${n}${r?"":" ms-disabled"}`;return e.createElement("div",{className:l,style:i})};p.displayName="Edge";var g=e.memo(p);const y=({visibility:t,arrows:r,arrowType:n,handleArrow:o,size:i})=>{const l=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:i+"px"}:{height:"100%",top:0});return e.useEffect((()=>{const e=l.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:l,style:s},r.element)};y.displayName="Arrow";var b=e.memo(y);const v=e=>{const t=e.getAttribute("data-direction");e.style.opacity="0",e.classList.remove("hover"),e.classList.add("leave"),o("remove"+t),i((()=>e.classList.remove("leave")),200,"remove"+t)},x=e=>{const t=e.getAttribute("data-direction");o("remove"+t),e.style.opacity="1",e.classList.remove("leave"),e.classList.add("hover")},w=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,i)=>{const l=null!=i?i:++t;return r.delete(l),r.set(l,o),null===e&&(e=requestAnimationFrame(n)),l},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();w.start((()=>{const i=performance.now(),l=Math.min((i-o)/140,1);return 1>l?(e.current[t]=n*(1-l),r(),!0):(e.current[t]=0,r(),!1)}))};let j,M={x:0,y:0},S={x:0,y:0},L={x:0,y:0,t:0,distX:0,distY:0},O=null;const k=(e,t,r,n)=>{if(!e)return;let o=null;["thumb","slider"].includes(e)?o="slider"===e?null==t?void 0:t.closest(".ms-slider"):t:"wrapp"===e&&(o=r),((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 user-select: none;\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")}})(o,n)},A=(e,t,r,n)=>{"x"===e?(r.scrollStateRef.targetScrollX=n,t.scrollLeft!==n&&(t.scrollLeft=n)):(r.scrollStateRef.targetScrollY=n,t.scrollTop!==n&&(t.scrollTop=n))},R=(e,t,r,n)=>{var o,i;const l=n.scrollElement;if(!l)return;const s="x"===e,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),l=Math.abs(e);return d(e*i/(i+(r?-l:l)),-150,150)};if(!O)return void(O={x:{value:c.x,rest:0,raw:a(n.overscrollRef.current.x,"x",!0)},y:{value:c.y,rest:0,raw:a(n.overscrollRef.current.y,"y",!0)}});const u=O,m={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]+=m[e]),n.isTouched){const e=performance.now();if(L.t){const t=Math.max(e-L.t,8);L={x:.8*L.x+m.x/t*.2,y:.8*L.y+m.y/t*.2,t:e,distX:(null!==(o=L.distX)&&void 0!==o?o:0)+Math.abs(m.x),distY:(null!==(i=L.distY)&&void 0!==i?i:0)+Math.abs(m.y)}}else L.t=e}const h="wrapp"===n.clickedObject.current?-m[e]:m[e],p=s?"scrollLeft":"scrollTop",g=s?0:1,y=(t,r,o)=>{const i=O[e],c=s?n.maxScrollSize[0]:n.maxScrollSize[1];if(!Number.isFinite(t)||!Number.isFinite(r))return void(O=null);if(0!==i.raw){const t=i.raw;return i.raw+=.6*r,o&&(n.overscrollRef.current[e]=a(i.raw,e),n.triggerUpdate()),Math.sign(i.raw)!==Math.sign(t)?(i.raw=0,void(o&&(n.overscrollRef.current[e]=0,n.triggerUpdate()))):void 0}if(0>=c)return void A(e,l,n,0);const u=l[p];if(0>=u&&0>t||u>=c&&t>0)return i.raw+=r,void(o&&(n.overscrollRef.current[e]=a(i.raw,e),n.triggerUpdate()));const m=d(l[p]+t,0,c);A(e,l,n,m)};if("thumb"===n.clickedObject.current&&"slider"!==n.type){const r=h*t+u[e].rest,n=Math.trunc(r);return u[e].rest=r-n,void y(n,h,!1)}if("slider"===n.type&&(S[e]+=h),"wrapp"===n.clickedObject.current)return void y(h/r[g],m[e],!0);const b=l[p];if(n.sliderElSize&&Math.abs(S[e])<n.sliderElSize[s?0:1])return;const v=e=>{const t=l[s?"clientWidth":"clientHeight"]+n.gap[g];return t*(Math.floor(Math.max(0,b)/t)+e)},x=h>0&&b+n.sizeLocal[g]<n.wrapElWH[g]?v(1):0>h&&b>0?v(-1):null;S[e]=0,n.smoothScroll(x,e,10)};function z(e){w.stop(),["x","y"].forEach((t=>{e.rafScrollAnim.cancel(),o("smoothScrollBlock"+t)}));const t=e.scrollElement;if(!t)return;e.scrollStateRef.targetScrollX=t.scrollLeft,e.scrollStateRef.targetScrollY=t.scrollTop,L={x:0,y:0,t:0,distX:0,distY:0};const r=[t.scrollWidth,t.scrollHeight],n=["scroll","slider"].includes(e.type)?function(e){const t=e.getBoundingClientRect();return[t.width/e.clientWidth,t.height/e.clientHeight]}(t):[];let i=1;if("thumb"===e.clickedObject.current&&e.axisFromAtr){const t="x"===e.axisFromAtr?0:1,r=(e.sizeLocal[t]-e.scrollBarEdge[t]-e.thumbSize)*n[t];i=e.maxScrollSize[t]/r,Number.isFinite(i)&&i>0||(i=1)}k(e.clickedObject.current,e.target,t,"start"),null==j||j.abort();const l=new AbortController;j=l;const{signal:s}=l;document.addEventListener("pointermove",(t=>{(t=>{var o;let l;if("thumb"===e.clickedObject.current&&"slider"===e.type){const t=null===(o=e.target)||void 0===o?void 0:o.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])};l=[r("x"),r("y")]}!function(e){const t=e.direction||"y";"hybrid"===t?["wrapp","slider"].includes(e.clickedObject.current)?["x","y"].forEach((t=>R(t,e.thumbRatio,e.visualDiff,e))):e.axisFromAtr&&R(e.axisFromAtr,e.thumbRatio,e.visualDiff,e):R(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,wrapElWH:r,visualDiff:n,thumbRatio:i,sliderElSize:l}))})(t)}),{signal:s});const c=t=>{e.isDraggingRef.current=!1,function(e){null==j||j.abort();const t=e.scrollElement;if(t){if(k(e.clickedObject.current,e.target,t,"end"),"slider"===e.type&&"thumb"!==e.clickedObject.current){const r=S,n=(r,n)=>{const o="x"===r,i=o?e.maxScrollSize[0]:e.maxScrollSize[1],l=t[o?"scrollLeft":"scrollTop"],s=o?e.gap[0]:e.gap[1],c=t[o?"clientWidth":"clientHeight"]+s,a=(Math[n?n>0?"floor":"ceil":"round"](l/c)+(null!=n?n:0))*c;a>i||0>a||e.smoothScroll(a,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 i=Math.abs(r);i=Math.pow(i,.92),.2>i&&(i=.2),r=i*o;const l="y"===t?"scrollTop":"scrollLeft",s="y"===t?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth;let c=performance.now();const a=()=>{const t=performance.now(),o=t-c;if(c=t,.02>Math.abs(r*=Math.exp(-.0025*o)))return;let i=e[l]+r*o;(0>i||i>s)&&(r*=.4,i=d(i,0,s)),e[l]=i,n("step",a)};n("step",a)}({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,L={x:0,y:0,t:0,distX:0,distY:0},M={x:0,y:0},S={x:0,y:0},e.triggerUpdate()}}(Object.assign(Object.assign({},e),{event:t,thumbRatio:i}))};document.addEventListener("pointerup",c,{signal:s}),document.addEventListener("pointercancel",c,{signal:s})}function T(e,t,r,n){return new(r||(r=Promise))((function(o,i){function l(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(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(l,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,N=e=>e?"start"===e?"flex-start":"center"===e?"center":"flex-end":void 0;function I(e,t,r=0,n=0){return o=>{var i,l,s,c;let a=!1;const u={width:(null!==(i=o.width)&&void 0!==i?i:0)-r,height:(null!==(l=o.height)&&void 0!==l?l: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 Y=()=>{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 X(e,t,r){return t?d(Math.round(e/t*e),r,e):0}function H(e,t,r,n){return t?d(e/t*(r-n),0,r-n):0}function W(){let e=null;const t=new Map;return{schedule:(r,n)=>{t.set(r,n),null===e&&(e=requestAnimationFrame((()=>{e=null;const r=Array.from(t.values());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=40,P="ms-under-drag";let D,V=null,U=!1;const q={x:0,y:0},K={x:0,y:0};let G=!1,_=null,Z="",J=null,Q=null,ee=null;const te=W(),re=()=>{Q&&Q.removeAttribute(P),_=null,Q=null,J=null,Z="",ee=null};function ne(e,t,r,n,o,i){const l=e-t,s=r-e;return B>l&&n>0?{dir:-1,distance:l}:B>s&&i>n+o?{dir:1,distance:s}:null}function oe(e){const t=d((B-Math.abs(e))/B,0,1,!1);return t*t*20|0}function ie(){if(!_)return;const{parent:e,element:t,direction:r}=_,n=t.getBoundingClientRect(),o=K.x,i=K.y;if(o<n.left-B||o>n.right+B||i<n.top-B||i>n.bottom+B)return void re();let l=null,s=null,c=0,a=0;const u="x"!==r?ne(i,n.top,n.bottom,t.scrollTop,t.clientHeight,t.scrollHeight):null;u&&(l=-1===u.dir?"top":"bottom",a=oe(u.distance)*u.dir);const d="y"!==r?ne(o,n.left,n.right,t.scrollLeft,t.clientWidth,t.scrollWidth):null;d&&(s=-1===d.dir?"left":"right",c=oe(d.distance)*d.dir),Z=[l,s].filter(Boolean).join(" "),Z!==ee&&(e.setAttribute(P,Z),ee=Z),(c||a)&&t.scrollBy(c,a),te.schedule("autoScrollLoop",ie)}function le(e){e instanceof DragEvent&&0===e.buttons?se():K.x===e.clientX&&K.y===e.clientY||(K.x=e.clientX,K.y=e.clientY,te.schedule("onMove",(()=>{if(!G){const e=K.x-q.x,t=K.y-q.y;if(10>Math.hypot(e,t))return;G=!0}const e=document.elementFromPoint(K.x,K.y);if(!e)return;const t=e.closest("[morph-scroll]");if(!t&&!_)return void re();const r=t?ae.get(t):_;r&&(_=r,J!==r.element&&(Q&&Q!==r.parent&&Q.removeAttribute(P),J=r.element,Q=r.parent,Q.setAttribute(P,Z),ee=Z,ie()))})))}function se(){null==V||V.abort(),V=null,G=!1,te.cancel(),re()}function ce(e){const t=e instanceof PointerEvent;if(t&&!e.target.closest("[ms-custom-drag]"))return;q.x=e.clientX,q.y=e.clientY,null==V||V.abort();const r=new AbortController;V=r;const{signal:n}=r;t?(document.addEventListener("pointermove",le,{signal:n}),document.addEventListener("pointerup",se,{signal:n})):(document.addEventListener("dragover",le,{signal:n}),document.addEventListener("dragend",se,{signal:n}),document.addEventListener("drop",se,{signal:n}),document.addEventListener("pointerdown",se,{signal:n}),window.addEventListener("blur",se,{signal:n}))}const ae=new Map;const ue=({className:c,children:p,type:y="scroll",direction:w="y",scrollPosition:E,onScrollValue:j,isScrolling:M,size:S,objectsSize:L,crossCount:O,gap:k,wrapperMargin:A,wrapperMinSize:R,wrapperAlign:B,elementsAlign:P,elementsDirection:q="row",edgeGradient:K,progressTrigger:G={wheel:!0},progressReverse:_=!1,scrollBarOnHover:Z=!1,scrollBarEdge:J,thumbMinSize:Q,render:ee,emptyElements:te,suspending:re=!1,fallback:ne,dragScroll:oe})=>{var ie,le,se,ue,de,me;const fe=function(){const[,e]=r({});return n((()=>{e({})}),[])}(),he=function(){const e=t(null);return null===e.current&&(e.current=""+u++),e.current}(),pe=W(),ge=()=>pe.schedule("triggerUpdate",fe),ye=W();if(!S)throw Error('prop "size" is not provided'+("\n morph-scroll "+he));Object.keys(G).length,"none"===L||Array.isArray(L)&&("none"===L[0]||L[1]);const be=e.useRef(null),ve=e.useRef(null),xe=e.useRef(null),we=e.useRef(null),Ee=e.useRef(new Set),je=e.useRef(Y()),Me=e.useRef(!0),Se=e.useRef(null),Le=e.useRef({loaded:new Set,empty:new Set}),Oe=e.useRef({targetScrollY:0,targetScrollX:0,animating:!1,animationFrameId:0}),ke=e.useRef(!1),Ae=e.useRef(!1),Re=e.useRef(function(e=2){let t=0,r=0,n=null,o=null;return{update(i,l){const s=i-t,c=l-r;Math.abs(s)>e&&(n=s>0?"right":"left",t=i),Math.abs(c)>e&&(o=c>0?"down":"up",r=l)},reset(){n=null,o=null},get:()=>({x:n,y:o})}}()),ze=e.useRef({x:null,y:null}),Te=e.useRef({x:0,y:0}),Ce=e.useRef(!1);function Fe(){return e.useRef({width:0,height:0})}const Ne=Fe(),Ie=Fe(),Ye=Fe(),[Xe,He,We,$e,Be,Pe,De,Ve,Ue,qe,Ke]=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)}(E,ee,S,L,te,R,B,k,G,Le.current.empty,J),Ge=e.useMemo((()=>{var e,t;let r=[null],n=200,o=null;if(null!=E)if("number"==typeof E||"end"===E)r=[E,E];else if(Array.isArray(E))r=E;else if("object"==typeof E){const i=E.value;"number"==typeof i||"end"===i?r=[i,i]:Array.isArray(i)&&(r=i),n=null!==(e=E.duration)&&void 0!==e?e:200,o=null!==(t=E.updater)&&void 0!==t?t:null}return{value:r,duration:n,updater:o}}),[Xe]),_e={color:null,size:40},Ze=e.useMemo((()=>"object"==typeof K?Object.assign(Object.assign({},_e),K):"string"==typeof K?{color:K,size:40}:_e),[K]),Je=e.useMemo((()=>{const t=G.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}),[Ue]),Qe=e.useMemo((()=>e.Children.toArray(p).flatMap($)),[p]),et=e.useMemo((()=>Qe.map((t=>e.isValidElement(t)&&t.key?t.key+"":null)).filter((e=>null!==e)).filter((e=>{var t;return!("clear"===te||te&&"object"==typeof te&&"mode"in te&&"clear"===te.mode)||!(null===(t=Le.current.empty)||void 0===t?void 0:t.has(e))}))),[p,Be,qe]),[tt,rt,nt,ot]=A?s(A):[0,0,0,0],it=tt+nt,lt=ot+rt,st=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]),ct=e.useMemo((()=>{const e={type:void 0,rootMargin:0,stopLoadOnScroll:!1,trackVisibility:!1};if("string"==typeof ee)return Object.assign(Object.assign({},e),{type:ee});if("object"==typeof ee&&null!==ee){const{type:t,rootMargin:r=e.rootMargin,stopLoadOnScroll:n=e.stopLoadOnScroll,trackVisibility:o=e.trackVisibility}=ee;return{type:t,rootMargin:r,stopLoadOnScroll:n,trackVisibility:o}}return e}),[He]),at=e.useMemo((()=>s(ct.rootMargin)),[ct.rootMargin,w]),ut=e.useMemo((()=>{const[e,t]=Array.isArray(S)?S:"number"==typeof S?[S,S]:[Ne.current.width,Ne.current.height];if(!G.arrows||!Je.size||!Je.contentReduce)return[e,t,e,t];const r=2*Je.size;let n=e,o=t;return"x"===w?n=e-r:"y"===w?o=t-r:"hybrid"===w&&(n=e-r,o=t-r),[n,o,e,t]}),[We,Ue,w,Je,Ne.current.height,Ne.current.width]),dt="x"===w?ut[0]:ut[1],mt=e.useMemo((()=>{if(!J)return[0,0];if("number"==typeof J){const e=2*J;return[e,e]}if(Array.isArray(J)){const[e=0,t]=J;return[2*e,2*(null!=t?t:e)]}return[0,0]}),[Ke]),ft=e.useMemo((()=>[ut[0]-mt[0],ut[1]-mt[1]]),[mt.join(),ut[0],ut[1]]),ht=e.useMemo((()=>L?Array.isArray(L)?L:s(L,!0,2):[null,null]),[$e]),pt=e.useMemo((()=>{const{height:e,width:t}=Ye.current,r=(e,t,r)=>t||("number"==typeof e?e:"size"===e?r:0);return[r(ht[0],t,ut[0]),r(ht[1],e,ut[1])]}),[ht.join(),w,Ye.current.width,Ye.current.height,ut.join()]),gt=e.useMemo((()=>ee&&te&&!ne?e.createElement("div",{className:"ms-empty-element"}):ne),[!!ne,He,Be]),yt=e.useMemo((()=>{if("none"===ht[0]||"none"===ht[1])return[1,et.length];const e="x"===w?1:0,t="row"===q,r=ut[e],n=pt[e]?pt[e]+st[e]:0,o="hybrid"===w&&r?n*et.length:r,i=n?Math.floor(o/n):1;let l=O&&i>=O?"hybrid"===w?Math.ceil(i/O):O:i;const s=l>1&&l<et.length?Math.ceil(et.length/l):l<et.length?et.length:1;t||(l=Math.ceil(et.length/s));const c=O&&O<et.length,a=e=>Number.isFinite(e)&&e>0?e:1;if("hybrid"===w){const e=c?t?O:l:t?et.length:1,r=c?t?l:O:t?1:et.length;return[a(e),a(r)]}return[a(l),a(s)]}),[q,st[0],st[1],pt[0],pt[1],et.length,w,ut.join(),O]),bt=e.useMemo((()=>{const e=1>yt[0]?1:yt[0]*st[1]-st[1],t=yt["x"===w?1:0],r=et.length<t?et.length:t;return pt[0]?(pt[0]+st[1])*r-st[1]:ct.type?Ye.current.width+e:Ie.current.width}),[w,pt[0],yt[0],yt[1],st[1],Ie.current.width,Ye.current.width,ct.type,et.length]),vt=e.useMemo((()=>{const e=1>yt[1]?1:yt[0]*st[0]-st[0];return pt[1]?"x"===w?(pt[1]+st[0])*yt[0]-st[0]:(pt[1]+st[0])*yt[1]-st[0]:ct.type?Ye.current.height+e:Ie.current.height}),[w,pt[1],yt[0],yt[1],st[0],Ie.current.height,Ye.current.height,ct.type]),xt=e.useMemo((()=>vt+it),[vt,it]),wt=e.useMemo((()=>bt+lt),[bt,lt]),Et="x"===w?wt:xt,jt=e.useMemo((()=>[Math.max(0,wt-ut[0]),Math.max(0,xt-ut[1])]),[ut.join(),xt,wt]),Mt="x"===w?(null===(ie=xe.current)||void 0===ie?void 0:ie.scrollLeft)||0:(null===(le=xe.current)||void 0===le?void 0:le.scrollTop)||0,St=Mt>1&&!0,Lt=Et>Math.round(Mt+dt);let Ot=!1,kt=!1;"hybrid"===w&&(Ot=((null===(se=xe.current)||void 0===se?void 0:se.scrollLeft)||0)>1&&!0,kt=Math.round(((null===(ue=xe.current)||void 0===ue?void 0:ue.scrollLeft)||0)+ut[0])<wt);const At=e.useMemo((()=>null!=Q?Q:30),[Q]),Rt=e.useCallback((e=>G.progressElement&&Et?"x"===e?X(ut[0]-mt[0],wt,At):X(ut[1]-mt[1],xt,At):0),[Ue,Et,ut[0],ut[1],wt,At,mt.join()]),zt=e.useMemo((()=>({x:"y"!==w?Rt("x"):0,y:"x"!==w?Rt("y"):0})),[Rt,w]),Tt=e.useMemo((()=>({w:ut[0]?wt-ut[0]:wt,h:ut[1]?xt-ut[1]:xt})),[wt,xt,ut[0],ut[1]]),Ct={x:"y"!==w?H((null===(de=xe.current)||void 0===de?void 0:de.scrollLeft)||0,Tt.w,ft[0],zt.x):0,y:"x"!==w?H((null===(me=xe.current)||void 0===me?void 0:me.scrollTop)||0,Tt.h,ft[1],zt.y):0},Ft=e.useMemo((()=>{if(!ct.type)return[{top:0,bottom:0,left:0,right:0}];let e=0;const t="x"===w,r="row"===q,n=t&&!r||!t&&r,o=pt[0]+st[1],i=pt[1]+st[0],l=new Set,s=n?yt[0]:yt[1],c=pt[r?0:1],a=st[r?1:0];for(let e=Math.floor((et.length-1)/s)*s;e<et.length;e++)l.add(e);const u=s-l.size,d=u>0?(c+a)*u:0;return"center"===P?e=Math.round(d/2):"end"===P&&(e=d),et.map(((t,s)=>{const c=n?s%yt[0]:Math.floor(s/yt[1]),a=n?Math.floor(s/yt[0]):s%yt[1];let u,d;"x"===w?(u=a,d=c):(u=c,d=a);const m=l.size>0&&l.has(s),f=(m&&!r?e:0)+i*d,h=(m&&r?e:0)+o*u;return{top:f,left:h,bottom:f+pt[1],right:h+pt[0]}}))}),[pt[0],pt[1],st[0],st[1],P,et.length,yt[0],yt[1],ct.type,q,w]),Nt=e.useMemo((()=>(null==ut?void 0:ut.length)&&B?function(e,t,r,n){const[o,i="start"]="string"==typeof e?[e,e]:e,l={display:"flex"};return t[0]>r&&(l.justifyContent=N(o)),t[1]>n&&(l.alignItems=N(i)),l}(B,ut,wt,xt):{}),[B,ut.join(),xt,wt]),It=e.useMemo((()=>[C(wt,ut[0]),C(xt,ut[1])]),[wt,xt,ut.join()]),Yt=e.useMemo((()=>"x"===w?It[0]:It[1]),[w,It[0],It[1]]),Xt=e.useCallback(I(Ne,ge),[]),Ht=e.useCallback(I(Ie,ge,lt,it),[lt,it]),Wt=e.useCallback(I(Ye,ge),[]),$t=e.useCallback(((e,t,r)=>{const n=xe.current;return n&&null!==e?function(e,t,r,n,o,i){return T(this,void 0,void 0,(function*(){const s="y"===e,c=s?"scrollTop":"scrollLeft",a=s?i[1]:i[0],u=d(n,0,a),m=d(t[c],0,a);if(m!==u)return 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[c]=n)):void l((()=>{const e=performance.now(),n=()=>{const i=performance.now(),l=Math.min((i-e)/r,1),s=d(m+(u-m)*l,0,a);t[c]=s,1>l&&s!==u&&o("smoothScroll",n)};o("smoothScroll",n)}),r,"smoothScrollBlock"+e)}))}(t,n,Me.current?null:r,e,ye.schedule,jt):null}),[jt.join()]),Bt=e.useMemo((()=>{const e=Object.assign(Object.assign(Object.assign({margin:A?`${tt}px ${rt}px ${nt}px ${ot}px`:"",height:ht[1]&&"none"!==ht[1]?vt+"px":"fit-content",width:ht[0]&&"none"!==ht[0]?bt+"px":"fit-content"},k&&!ct.type&&{gap:`${st[0]}px ${st[1]}px`}),R&&function(e,t,r,n,o){const i=(e,t)=>"full"===e?("x"===t?r[0]:r[1])-("x"===t?n:o):e;if("hybrid"!==t&&!Array.isArray(e)){const r=i(e,t)+"px";return"x"===t?{minWidth:r}:{minHeight:r}}let l,s;return Array.isArray(e)?[l,s]=e:l=s=e,{minWidth:i(l,"x")+"px",minHeight:i(s,"y")+"px"}}(R,w,ut,lt,it)),("hybrid"===w||"x"===w)&&{flexShrink:0});if(ct.type)return Object.assign(Object.assign({},e),{position:"relative"});const t=1===yt[0]?"y"===w?"column":"row":q,r=ht[0]&&"none"!==ht[0]&&ht[1]&&"none"!==ht[1]?"wrap":void 0;return Object.assign(Object.assign({},e),{display:"flex",flexDirection:t,flexWrap:r,justifyContent:N(P)})}),[A,De,Pe,[tt,rt,nt,ot,lt,it,st[0],st[1]].join(),ut.join(),Ve,ht[1],vt,bt,Ve,ct.type,w,yt[0],q,P]),Pt=e.useCallback(((e,t,r)=>{var n;je.current=Y();const o=t.target;if(o.closest('\n [ms-custom-drag], [draggable="true"], [contenteditable],\n input, textarea, select, button, a\n '))return;let i=null;r&&(i=null===(n=o.closest("scroll"===y?".ms-bar":".ms-slider"))||void 0===n?void 0:n.getAttribute("data-direction")),Se.current=e,z({scrollElement:xe.current,target:o,clickedObject:Se,scrollStateRef:Oe.current,type:y,triggerUpdate:ge,direction:w,smoothScroll:$t,sizeLocal:[ut[0],ut[1]],thumbSize:"x"===i?zt.x:zt.y,axisFromAtr:i,duration:Ge.duration,scrollBarEdge:mt,rafScrollAnim:ye,isTouched:je.current,gap:st,overscrollRef:Te,objLengthPerSize:It,isDraggingRef:Ce,maxScrollSize:jt})}),[w,y,ut.join(),Ge.duration,$t,mt.join(),zt.x,zt.y,st.join(),It,jt.join()]),Dt=e.useCallback((e=>{Pt("thumb",e,!0)}),[Pt]),Vt=e.useCallback((e=>{xe.current&&(({arrowType:e,scrollElement:t,wrapSize:r,scrollSize:n,smoothScroll:o,duration:i,loop:l,gap:s})=>{const c=r[0],a=r[1],u=t.scrollTop,d=t.scrollLeft,m=(e,r,n)=>{const l=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,i=n?s[0]:s[1],l=t[n?"clientWidth":"clientHeight"]+i;return l*(Math.floor(Math.max(0,o)/l)+r)})(e,r);o(l,e,i)};switch(e){case"top":u>0?m("y",-1):l&&m("y",-1,!0);break;case"left":d>0?m("x",-1):l&&m("x",-1,!0);break;case"right":d+n[0]<c?m("x",1):l&&m("x",1,!0);break;case"bottom":u+n[1]<a?m("y",1):l&&m("y",1,!0)}})({arrowType:e,scrollElement:xe.current,wrapSize:[wt,xt],scrollSize:ut,smoothScroll:$t,duration:Ge.duration,loop:Je.loop,gap:st})}),[ut.join(),wt,xt,Ge.duration,$t,Je.loop,st[0],st[1]]),Ut=e.useCallback((()=>{"scroll"!==y&&ut[0]&&ut[1]&&ve.current&&xe.current&&Ee.current.size&&((e,t,r,n)=>{[...t].forEach(((t,o)=>{var i,l;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,m=Math.floor((u+d/2)/d);m!==s.lastIndex&&(-1!==s.lastIndex&&(null===(i=s.elements[s.lastIndex])||void 0===i||i.classList.remove("active")),null===(l=s.elements[m])||void 0===l||l.classList.add("active"),s.lastIndex=m)}))})(xe.current,Ee.current,w,It)}),[ut.join(),w,y,It.join()]),qt=e.useCallback((()=>{we.current&&((e,t,r,n)=>{const o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e instanceof Element&&e.hasAttribute(m)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});let i=o.nextNode();for(;i;){const e=i,r=e.getAttribute(m);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)}i=o.nextNode()}r()})(we.current,Le,ge,ct.type)}),[He]),Kt=e.useCallback((e=>{"object"==typeof te&&"clickTrigger"in te&&void 0!==te.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(`[${m}]`);null==s||s.classList.add("remove"),i((()=>{null==s||s.classList.remove("remove"),r()}),o)})(e,te.clickTrigger,qt)}),[Be,qt]),Gt=e.useCallback((e=>{o("removeHover");const t=ve.current,r=be.current,n=xe.current;if(!t||!r||!n)return;if(Ge.value.includes("end")){const{scrollLeft:t,scrollTop:r}=e.currentTarget;Re.current.update(t,r)}null==j||j(n.scrollLeft,n.scrollTop);const l=t.querySelectorAll("scroll"===y?".ms-bar":".ms-slider");Z&&l.length>0&&!ke.current&&l.forEach((e=>{e.classList.contains("hover")||x(e)})),ke.current=!0,null==M||M(!0),i((()=>{Re.current.reset(),ke.current=!1,null==M||M(!1),ct.type&&qt(),Z&&l.length>0&&!Se.current&&l.forEach((e=>{i((()=>{e.hasAttribute("ms-manual-hover")||v(e)}),1e3,"removeHover")}))}),200,"isScrolling"),pe.schedule("sliderCheckLocal",(()=>{"scroll"!==y&&Ut(),fe()}))}),[j,M,y,Ut,qt,Z,ct.type]),_t=e.useCallback((e=>{if(Ae.current)return;const t="object"==typeof G.wheel&&"string"==typeof G.wheel.changeDirectionKey?G.wheel.changeDirectionKey:"KeyX";e.code!==t||"hybrid"!==w||Ae.current||(e.stopPropagation(),Ae.current=!0,ge())}),[w,Ue]),Zt=e.useCallback((e=>{Ae.current&&(e.stopPropagation(),Ae.current=!1,ge())}),[]);e.useEffect((()=>{if(je.current||"hybrid"!==w)return;const e=we.current,t=xe.current;return e&&t?(e.clientWidth+lt>t.clientWidth&&e.clientHeight+it>t.clientHeight&&(t.addEventListener("keydown",_t),t.addEventListener("keyup",Zt)),()=>{t.removeEventListener("keydown",_t),t.removeEventListener("keyup",Zt)}):void 0}),[w,Ue,We,$e,et.join(),lt,it]),e.useEffect((()=>{te&&ct.type&&qt()}),[Be,ct.type,qt,et.length]),e.useEffect((()=>{if(je.current)return;const e=xe.current,t=we.current;if(!e||!t)return;const r="hybrid"===w&&"object"==typeof G.wheel&&G.wheel.changeDirection?"x":w,n="hybrid"===w&&vt+it<=ut[1]||Ae.current?["hybrid","y"].includes(r)?"x":"y":r,o=t=>{t.preventDefault(),f(t,e,jt,Oe.current,n)};return G.wheel&&e.addEventListener("wheel",o,{passive:!1}),()=>{e.removeEventListener("wheel",o)}}),[w,Ue,vt,ut[1],it,Ae.current,jt.join()]),e.useEffect((()=>{pe.schedule("smoothScrollLocal",(()=>{("hybrid"===w?["x","y"]:[w]).forEach((e=>{const t=Ge.value["x"===e?0:1];if("end"===t){if(Re.current.get()[e]===("x"===e?"left":"up"))return;$t("x"===e?Tt.w:Tt.h,e,Ge.duration)}else"number"==typeof t&&ze.current[e]!==t&&(ze.current[e]=t,$t(t,e,Ge.duration))}))}))}),[w,Xe,Tt.w,Tt.h,Ge.value.join()]),e.useEffect((()=>{const e=Oe.current.animationFrameId;return(ct.type||M)&&M&&M(!1),requestAnimationFrame((()=>Me.current=!1)),()=>{e&&cancelAnimationFrame(e),Oe.current.animationFrameId&&cancelAnimationFrame(Oe.current.animationFrameId),ye.cancel()}}),[]),e.useEffect((()=>{if(!oe)return;const e=be.current,t=xe.current;if(!e||!t)return;const r={parent:e,element:t,direction:w};return function(e){ae.set(e.parent,e),1===ae.size&&function(){if(U)return;D=new AbortController;const{signal:e}=D;document.addEventListener("pointerdown",ce,{signal:e}),document.addEventListener("dragstart",ce,{signal:e}),U=!0}()}(r),()=>{!function(e){ae.delete(e.parent),0===ae.size&&U&&(null==D||D.abort(),null==V||V.abort(),U=!1)}(r)}}),[oe,w]),e.useEffect((()=>{const e=xe.current;if(!e)return;const t=e=>{Pt("wrapp",e)};if(G.content||!G.content&&je.current&&G.wheel){if(!0===G.progressElement)return;e.addEventListener("pointerdown",t)}return()=>{e.removeEventListener("pointerdown",t)}}),[Ue,Pt]),e.useEffect((()=>{const e=ve.current;if(!e||!Z)return;if(!Ee.current.size)return;const t=e=>{"mouseenter"===e.type&&document.removeEventListener("mouseup",t),"mouseleave"===e.type&&Se.current?document.addEventListener("mouseup",t):Array.from(Ee.current).forEach((t=>{(({el:e,event:t,isScrolling:r})=>{const n=e=>{if(["mouseleave","mouseup","pointerup","pointercancel"].includes(t.type)){if(e.removeAttribute("ms-manual-hover"),null==r?void 0:r.current)return;v(e)}else e.setAttribute("ms-manual-hover",""),x(e)};Array.isArray(e)?e.map((e=>n(e))):n(e)})({el:t,event:e,isScrolling:ke})}))},r=(t,r)=>{je.current?(Array.from(Ee.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)}}),[Z,y,w,Ee.current.size]),e.useEffect((()=>{"scroll"!==y&&pe.schedule("sliderCheckLocal",Ut)}),[y,Ut,ut.join()]);const Jt=e.useCallback(((t,r,n,o,i)=>{const l=Object.assign(Object.assign({width:pt[0]?pt[0]+"px":void 0,height:pt[1]?pt[1]+"px":void 0},ct.type&&{position:"absolute",transform:`translate(${n}px, ${r}px)`}),"number"==typeof i&&{"--content-visibility":i}),s=re?e.createElement(e.Suspense,{fallback:gt},o):o;return e.createElement("div",Object.assign({key:t},ct.type||te?{[m]:""+t}:{},{className:"ms-object-box",style:l,onClick:te?Kt:void 0}),s)}),[re,!!gt,pt[0],pt[1],He,Be,yt[0],Kt,ct.type]),Qt=e.useMemo((()=>{const t=new Map;return Qe.forEach((r=>{e.isValidElement(r)&&null!=r.key&&t.set(r.key+"",r)})),t}),[Qe]),er=e.useMemo((()=>[{positionType:"x"===w?"left":"top",visibility:St},{positionType:"x"===w?"right":"bottom",visibility:Lt},..."hybrid"===w?[{positionType:"left",visibility:Ot},{positionType:"right",visibility:kt}]:[]]),[St,Lt,w,Ot,kt]),tr=e.useMemo((()=>({width:ut[2]+"px",height:ut[3]+"px"})),[ut]),rr=e.useMemo((()=>{var e;return null!==(e={x:wt>ut[0]?"scroll hidden":"hidden",y:xt>ut[1]?"hidden scroll":"hidden",hybrid:`${wt>ut[0]?"scroll":"hidden"} ${xt>ut[1]?"scroll":"hidden"}`,hide:"hidden"}[G.wheel||G.content&&"scroll"===y?w:"hide"])&&void 0!==e?e:"hidden"}),[wt,xt,ut,Ue,w]),nr=e.useMemo((()=>K?er.map((({positionType:t,visibility:r})=>e.createElement(g,{key:"edge-"+t,edgeGradient:Ze,visibility:r,edgeType:t,size:ut}))):null),[K,er,Ze,We]),or=e.useMemo((()=>G.arrows?er.map((({positionType:t,visibility:r})=>e.createElement(b,{key:"arrow-"+t,visibility:r,arrows:Je,arrowType:t,handleArrow:Vt,size:ut[0]}))):null),[Ue,er,Je,Vt,ut[0]]),ir=()=>{var t,r;const n=(null===(t=xe.current)||void 0===t?void 0:t.scrollLeft)||0,o=(null===(r=xe.current)||void 0===r?void 0:r.scrollTop)||0;return e.createElement("div",{className:"ms-objects-wrapper",ref:we,style:Object.assign(Object.assign(Object.assign({},Bt),(Te.current.x||Te.current.y)&&{transform:`translate(${Te.current.x}px, ${Te.current.y}px)`}),Ce.current&&{pointerEvents:"none"})},et.map(((t,r)=>((t,r,n,o)=>{var i;const l=Qt.get(t),s=ct.stopLoadOnScroll&&ke.current&&!Le.current.loaded.has(t)?gt:(null===(i=Le.current.empty)||void 0===i?void 0:i.has(t))?te&&"object"==typeof te&&e.isValidElement(te)?te:te&&"object"==typeof te&&"mode"in te&&"object"==typeof te.mode&&"fallback"in te.mode?te.mode.fallback:gt:l,c="firstChild"!==ht[0]&&"firstChild"!==ht[1]||0!==r?s:e.createElement(a,{onResize:Wt},s);if(!ct.type)return Jt(t,0,0,c);const{top:u,bottom:d,left:m,right:f}=Ft[r],h=(e=!0)=>{const t=e?at:[0,0,0,0],r=e=>{const r="x"===e?n:o,i=r+("x"===e?ut[0]:ut[1]),l="x"===e?m-t[3]:u-t[2],s="x"===e?f+t[1]:d+t[0],c=s-l;if(0>=c)return 0;const a=Math.min(s,i)-Math.max(l,r);return a>0?Math.round(10*Math.min(1,a/c))/10:0};if("hybrid"===w){const e=r("x"),t=r("y");return Math.min(e,t)}return r("x"===w?"x":"y")},p=h(),g=ct.trackVisibility?h(!1):null;if("lazy"===ct.type){const e=Le.current.loaded.has(t);if(p&&!e){if(ke.current&&ct.stopLoadOnScroll)return;Le.current.loaded.add(t)}return e?Jt(t,u,m,c,g):null}return p?Jt(t,u,m,c,g):(Le.current.loaded.delete(t),null)})(t,r,n,o))))},lr=e.useMemo((()=>{const e={position:"relative",width:ut[0]+"px",height:ut[1]+"px"};return G.arrows&&Je.contentReduce&&Je.size&&("x"===w?e.left=Je.size+"px":"y"===w?e.top=Je.size+"px":(e.top=Je.size+"px",e.left=Je.size+"px")),e}),[ut,Ue,Je,w]),sr=e.createElement("div",{"morph-scroll":""+he,className:c,ref:be,style:tr},e.createElement("div",{className:"ms-content",ref:ve,style:Object.assign(Object.assign(Object.assign({},lr),{transform:"translateZ(0)"}),je.current&&{touchAction:"pinch-zoom"})},e.createElement("div",{className:"ms-element",ref:xe,onScroll:Gt,tabIndex:0,style:Object.assign(Object.assign(Object.assign({width:"100%",height:"100%",outline:"none"},Nt),"boolean"!=typeof G.progressElement||!1===G.progressElement?{scrollbarWidth:"none",overflow:"hidden"}:{overflow:rr}),G.content&&{cursor:"grab"})},pt[0]&&pt[1]?ir():e.createElement(a,{onResize:Ht,style:Nt},ir())),nr,G.progressElement&&!0!==G.progressElement?(()=>{const e="x"!==w;return[{shouldRender:Et>ut[e?1:0],direction:w,thumbSize:e?zt.y:zt.x,thumbSpace:e?Ct.y:Ct.x,objLengthPerSize:Yt,progressReverseIndex:0},{shouldRender:"hybrid"===w&&wt>ut[0],direction:"x",thumbSize:zt.x,thumbSpace:Ct.x,objLengthPerSize:It[0],progressReverseIndex:1}].filter((({shouldRender:e})=>e))})().map((t=>{const r="boolean"==typeof _?_:_[t.progressReverseIndex];return e.createElement(h,{key:t.direction,type:y,direction:t.direction,progressReverse:r,size:ft,progressTrigger:[G,Ue],scrollBarOnHover:Z,scrollBarEvent:"sliderMenu"===y?$t:Dt,thumbSize:t.thumbSize,thumbSpace:t.thumbSpace,objLengthPerSize:t.objLengthPerSize,sliderCheckLocal:Ut,duration:Ge.duration,isTouched:je.current,scrollStateRef:Oe,scrollEl:xe,scrollBarsRef:Ee,triggerUpdate:ge,overscroll:Te,maxScrollSize:jt})})):null),or);return"auto"===S?e.createElement(a,{measure:"outer",onResize:Xt},sr):sr};ue.displayName="MorphScroll";const de={MorphScroll:ue,ResizeTracker:a,IntersectionTracker:c};export{c as IntersectionTracker,ue as MorphScroll,a as ResizeTracker,de as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "morphing-scroll",
3
- "version": "2.8.9",
3
+ "version": "2.9.0",
4
4
  "description": "React library for custom object scrolling and scrollbar styling",
5
5
  "author": "Georg Schilin",
6
6
  "license": "MIT",
@@ -21,6 +21,9 @@
21
21
  "peerDependencies": {
22
22
  "react": ">=16.8 <20"
23
23
  },
24
+ "dependencies": {
25
+ "keytask-core": "^1.0.0"
26
+ },
24
27
  "repository": {
25
28
  "type": "git",
26
29
  "url": "git+https://github.com/voodoofugu/morphing-scroll.git"