morphing-scroll 2.8.7 → 2.8.8

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