UNPKG

@scrolia/vanilla

Version:

A headless scrollbar component

2 lines 20.1 kB
(function(){var e=class{#current;#listeners=new Set;constructor(e){this.#current=e}get current(){return this.#current}set current(e){this.#current!=e&&(this.#current=e,this.#listeners.forEach(t=>t(e)))}on(e){return this.#listeners.add(e),()=>this.#listeners.delete(e)}};let t=t=>new e(t),n=Symbol.for(`atomico.hooks`);globalThis[n]=globalThis[n]||{};let r=globalThis[n],i=Symbol.for(`Atomico.suspense`),a=Symbol.for(`Atomico.effect`),o=Symbol.for(`Atomico.layoutEffect`),s=Symbol.for(`Atomico.insertionEffect`),c=(e,t,n)=>{let{i,hooks:a}=r.c,o=a[i]=a[i]||{};return o.value=e(o.value),o.effect=t,o.tag=n,r.c.i++,a[i].value},l=e=>c((n=t(e))=>n),u=()=>c((e=t(r.c.host))=>e),d=()=>r.c.update,f=(e,t,n=0)=>{let c={},l=!1,u=()=>l,d=(e,t)=>{for(let n in c){let r=c[n];r.effect&&r.tag===e&&(r.value=r.effect(r.value,t))}},f=a=>{r.c={host:t,hooks:c,update:e,i:0,id:n};let o;try{l=!1,o=a()}catch(e){if(e!==i)throw e;l=!0}finally{r.c=null}return o},p=e=>(d(s,e),()=>(d(o,e),()=>{d(a,e)}));return{load:f,cleanEffects:p,isSuspense:u}},p=Symbol.for;function m(e,t){let n=e.length;if(n!==t.length)return!1;for(let r=0;r<n;r++){let n=e[r],i=t[r];if(n!==i)return!1}return!0}let h=e=>typeof e==`function`,g=e=>typeof e==`object`,{isArray:_}=Array,v=(e,t)=>(t?e instanceof HTMLStyleElement:!0)&&`hydrate`in(e?.dataset||{});function y(e,t){let n,r=e=>{let{length:i}=e;for(let a=0;a<i;a++){let i=e[a];if(i&&Array.isArray(i))r(i);else{let e=typeof i;if(i==null||e===`function`||e===`boolean`)continue;e===`string`||e===`number`?(n??=``,n+=i):(n!=null&&(t(n),n=null),t(i))}}};r(e),n!=null&&t(n)}let b=(e,t,n)=>(e.addEventListener(t,n),()=>e.removeEventListener(t,n));var x=class{constructor(e,t,n){this.message=t,this.target=e,this.value=n}},S=class extends x{},C=class extends x{};let w=`Custom`,ee=null,te={true:1,"":1,1:1};function T(e,t,n,r,i){let{type:a,reflect:o,event:s,value:c,attr:l=D(t)}=n?.name!=w&&g(n)&&n!=ee?n:{type:n},u=a?.name===w&&a.map,d=c==null?null:a==Function||!h(c)?()=>c:c;Object.defineProperty(e,t,{configurable:!0,set(e){let n=this[t];d&&a!=Boolean&&e==null&&(e=d());let{error:r,value:i}=(u?ie:ae)(a,e);if(r&&i!=null)throw new S(this,`The value defined for prop '${t}' must be of type '${a.name}'`,i);n!=i&&(this._props[t]=i??void 0,this.update(),s&&E(this,s),this.updated.then(()=>{o&&(this._ignoreAttr=l,ne(this,a,l,this[t]),this._ignoreAttr=null)}))},get(){return this._props[t]}}),d&&(i[t]=d()),r[l]={prop:t,type:a}}let E=(e,{type:t,base:n=CustomEvent,...r})=>e.dispatchEvent(new n(t,r)),D=e=>e.replace(/([A-Z])/g,`-$1`).toLowerCase(),ne=(e,t,n,r)=>r==null||t==Boolean&&!r?e.removeAttribute(n):e.setAttribute(n,t?.name===w&&t?.serialize?t?.serialize(r):g(r)?JSON.stringify(r):t==Boolean?``:r),re=(e,t)=>e==Boolean?!!te[t]:e==Number?Number(t):e==String?t:e==Array||e==Object?JSON.parse(t):e.name==w?t:new e(t),ie=({map:e},t)=>{try{return{value:e(t),error:!1}}catch{return{value:t,error:!0}}},ae=(e,t)=>e==null||t==null?{value:t,error:!1}:e!=String&&t===``?{value:void 0,error:!1}:e==Object||e==Array||e==Symbol?{value:t,error:{}.toString.call(t)!==`[object ${e.name}]`}:t instanceof e?{value:t,error:e==Number&&Number.isNaN(t.valueOf())}:e==String||e==Number||e==Boolean?{value:t,error:e==Number?typeof t==`number`?Number.isNaN(t):!0:e==String?typeof t!=`string`:typeof t!=`boolean`}:{value:t,error:!0},oe=0,se=e=>{let t=(e?.dataset||{})?.hydrate||``;return t||`c`+ oe++},O=(e,t=HTMLElement)=>{let n={},r={},i=`prototype`in t&&t.prototype instanceof Element,a=i?t:`base`in t?t.base:HTMLElement,{props:o,styles:s}=i?e:t;class c extends a{constructor(){for(let t in super(),this._setup(),this._render=()=>e({...this._props}),r)this[t]=r[t]}static get styles(){return[super.styles,s]}async _setup(){if(this._props)return;this._props={};let e,t;this.mounted=new Promise(n=>this.mount=()=>{n(),e!=this.parentNode&&(t==e?this.update():this.unmounted.then(this.update)),e=this.parentNode}),this.unmounted=new Promise(r=>this.unmount=()=>{r(),(e!=this.parentNode||!this.isConnected)&&(n.cleanEffects(!0)()(),t=this.parentNode,e=null)}),this.symbolId=this.symbolId||Symbol(),this.symbolIdParent=Symbol();let n=f(()=>this.update(),this,se(this)),r,i=!0,a=v(this);this.update=()=>(r||(r=!0,this.updated=(this.updated||this.mounted).then(()=>{try{let e=n.load(this._render),t=n.cleanEffects();return e&&e.render(this,this.symbolId,a),r=!1,i&&!n.isSuspense()&&(i=!1,!a&&ce(this)),t()}finally{r=!1}}).then(e=>{e&&e()})),this.updated),this.update()}connectedCallback(){this.mount(),super.connectedCallback&&super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),this.unmount()}attributeChangedCallback(e,t,r){if(n[e]){if(e===this._ignoreAttr||t===r)return;let{prop:i,type:a}=n[e];try{this[i]=re(a,r)}catch{throw new C(this,`The value defined as attr '${e}' cannot be parsed by type '${a.name}'`,r)}}else super.attributeChangedCallback(e,t,r)}static get props(){return{...super.props,...o}}static get observedAttributes(){let e=super.observedAttributes||[];for(let e in o)T(this.prototype,e,o[e],n,r);return Object.keys(n).concat(e)}}return c};function ce(e){let{styles:t}=e.constructor,{shadowRoot:n}=e;if(n&&t.length){let e=[];y(t,t=>{t&&(t instanceof Element?n.appendChild(t.cloneNode(!0)):e.push(t))}),e.length&&(n.adoptedStyleSheets=e)}}let k=e=>(t,n)=>{c(([e,t]=[])=>((t||!t)&&(t&&m(t,n)?e||=!0:(h(e)&&e(),e=null)),[e,n]),([e,n],r)=>r?(h(e)&&e(),[]):[e||t(),n],e)};k(o);let A=k(a),le=k(s);var ue=class extends Array{constructor(e,t){let n=!0,r=e=>{try{t(e,this,n)}finally{n=!1}};super(void 0,r,t),r(e)}};let j=e=>{let t=d();return c((n=new ue(e,(e,n,r)=>{e=h(e)?e(n[0]):e,e!==n[0]&&(n[0]=e,r||t())}))=>n)},de=(e,t={})=>{let n=u();return n[e]||(n[e]=(r=t.detail)=>E(n.current,{type:e,...t,detail:r})),n[e]},M=p(`atomico/options`);globalThis[M]=globalThis[M]||{sheet:!!document.adoptedStyleSheets};let N=globalThis[M],fe=new Promise(e=>{N.ssr||(document.readyState===`loading`?b(document,`DOMContentLoaded`,e):e())}),pe={checked:1,value:1,selected:1},me={list:1,type:1,size:1,form:1,width:1,height:1,src:1,href:1,slot:1},he={shadowDom:1,staticNode:1,cloneNode:1,children:1,key:1},P={},F=[];var I=class extends Text{};let ge=p(`atomico/id`),L=p(`atomico/type`),R=p(`atomico/ref`),z=p(`atomico/vnode`),_e=()=>{};function ve(e,t,n){return V(this,e,t,n)}let B=(e,t,...n)=>{let r=t||P,{children:i}=r;if(i??=n.length?n:F,e===_e)return i;let a=e?e instanceof Node?1:e.prototype instanceof HTMLElement&&2:0;if(a===!1&&e instanceof Function)return e(i==F?r:{children:i,...r});let o=N.render||ve,s={[L]:z,type:e,props:r,children:i,key:r.key,shadow:r.shadowDom,static:r.staticNode,raw:a,is:r.is,clone:r.cloneNode,render:o};return s};function V(e,t,n=ge,r,i){let a;if(t&&t[n]&&t[n].vnode==e||e[L]!=z)return t;(e||!t)&&(i||=e.type==`svg`,a=e.type!=`host`&&(e.raw==1?(t&&e.clone?t[R]:t)!=e.type:e.raw==2?!(t instanceof e.type):t?t[R]||t.localName!=e.type:!t),a&&e.type!=null&&(e.raw==1&&e.clone?(r=!0,t=e.type.cloneNode(!0),t[R]=e.type):t=e.raw==1?e.type:e.raw==2?new e.type:i?document.createElementNS(`http://www.w3.org/2000/svg`,e.type):document.createElement(e.type,e.is?{is:e.is}:void 0)));let o=t[n]?t[n]:P,{vnode:s=P,cycle:c=0}=o,{fragment:l,handlers:u}=o,{children:d=F,props:f=P}=s;if(u=a?{}:u||{},e.static&&!a)return t;if(e.shadow&&!t.shadowRoot&&t.attachShadow({mode:`open`,...e.shadow}),e.props!=f&&xe(t,f,e.props,u,i),e.children!==d){let a=e.shadow?t.shadowRoot:t;l=be(e.children,l,a,n,!c&&r,i&&e.type==`foreignObject`?!1:i)}return t[n]={vnode:e,handlers:u,fragment:l,cycle:c+1},t}function ye(e,t){let n=new I(``),r=new I(``),i;if(e[t?`prepend`:`append`](n),t){let{lastElementChild:t}=e;for(;t;){let{previousElementSibling:e}=t;if(v(t,!0)&&!v(e,!0)){i=t;break}t=e}}return i?i.before(r):e.append(r),{markStart:n,markEnd:r}}function be(e,t,n,r,i,a){e=e==null?null:_(e)?e:[e];let o=t||ye(n,i),{markStart:s,markEnd:c,keyes:l}=o,u,d=l&&new Set,f=s;if(e&&y(e,e=>{if(typeof e==`object`&&!e[L])return;let t=e[L]&&e.key,o=l&&t!=null&&l.get(t);f!=c&&f===o?d.delete(f):f=f==c?c:f.nextSibling;let s=l?o:f,p=s;if(e[L])p=V(e,s,r,i,a);else{let t=e+``;!(p instanceof Text)||p instanceof I?p=new Text(t):p.data!=t&&(p.data=t)}p!=f&&(l&&d.delete(p),!s||l?(n.insertBefore(p,f),l&&f!=c&&d.add(f)):s==c?n.insertBefore(p,c):(n.replaceChild(p,s),f=p)),t!=null&&(u||=new Map,u.set(t,p))}),f=f==c?c:f.nextSibling,t&&f!=c)for(;f!=c;){let e=f;f=f.nextSibling,e.remove()}return d&&d.forEach(e=>e.remove()),o.keyes=u,o}function xe(e,t,n,r,i){for(let a in t)!(a in n)&&H(e,a,t[a],null,i,r);for(let a in n)H(e,a,t[a],n[a],i,r)}function H(e,t,n,r,i,a){if(t=t==`class`&&!i?`className`:t,n??=null,r??=null,t in e&&pe[t]&&(n=e[t]),!(r===n||he[t]||t[0]==`_`))if(e.localName===`slot`&&t===`assignNode`&&`assign`in e)e.assign(r);else if(t[0]==`o`&&t[1]==`n`&&(h(r)||h(n)))Se(e,t.slice(2),r,a);else if(t==`ref`)r&&(h(r)?r(e):r.current=e);else if(t==`style`){let{style:t}=e;n||=``,r||=``;let i=g(n),a=g(r);if(i)for(let e in n)if(a)!(e in r)&&U(t,e,null);else break;if(a)for(let e in r){let a=r[e];if(i&&n[e]===a)continue;U(t,e,a)}else t.cssText=r}else{let a=t[0]==`$`?t.slice(1):t;a===t&&(!i&&!me[t]&&t in e||h(r)||h(n))?e[t]=r??``:r==null?e.removeAttribute(a):e.setAttribute(a,g(r)?JSON.stringify(r):r)}}function Se(e,t,n,r){if(r.handleEvent||=t=>r[t.type].call(e,t),n){if(!r[t]){let i=n.capture||n.once||n.passive?Object.assign({},n):null;e.addEventListener(t,r,i)}r[t]=n}else r[t]&&(e.removeEventListener(t,r),delete r[t])}function U(e,t,n){let r=`setProperty`;n??(r=`removeProperty`,n=null),~t.indexOf(`-`)?e[r](t,n):e[t]=n}let Ce=B(`host`,{style:`display: contents`}),W=`value`,we=(e,t)=>{let n=u(),r=l();le(()=>b(n.current,`ConnectContext`,t=>{let n=t.composedPath().at(0);n!==t.currentTarget&&e===t.detail.id&&(t.stopPropagation(),t.detail.connect(r))}),[e]),r.current=t},Te=e=>{let t=de(`ConnectContext`,{bubbles:!0,composed:!0}),[n,r]=j(()=>{if(N.ssr)return;let n;return t({id:e,connect(e){n=e}}),n}),i=d();return A(()=>{fe.then(()=>t({id:e,connect:r}))},[e]),A(()=>{if(n)return n.on(i)},[n]),n?.current||e[W]},G=e=>{let t=O(({value:e})=>(we(t,e),Ce),{props:{value:{type:Object,value:()=>e}}});return t[W]=e,t};G({dispatch(e,t){}});let K=G(null),q=()=>{let e=Te(K);if(e===null)throw Error(`useScrollCore must be used within a provider`);return e},Ee=(e,t)=>(e.message=`${t} ${e.message}`,e),J=(e,t,...n)=>{try{return t(...n)}catch(t){let n=`[${e.name??`plugin`}]`;throw t instanceof Error?Ee(t,n):Error(`${n} ${String(t)}`)}},Y=({axis:e,disabled:t,page:n,plugins:r,contentRef:i,hvTrack:a,hvThumb:o,total:s,view:c,viewOffset:l,scrollbarLength:u,setScrollbarLength:d})=>{let f=0,p=0;if(n?e===`x`?(f=document.body.scrollWidth,p=window.innerWidth):(f=document.body.scrollHeight,p=window.innerHeight):i.current&&(e===`x`?(f=i.current.scrollWidth,p=i.current.clientWidth):(f=i.current.scrollHeight,p=i.current.clientHeight)),s.current===f&&c.current===p)return;s.current=f,c.current=p;let m=p/f*p,h;for(let i of r){if(!i.onSetLength)continue;h=J(i,i.onSetLength,{axis:e,isDisabled:t,isPage:n,isDefined:a&&o,total:f,view:p,viewOffset:l.current,scrollbarLengthPrev:u,scrollbarLengthNext:h?.scrollbarLength??m})??h}let g;g=h?.scrollbarLength?h.scrollbarLength:m,d(p>=f?0:g)},De=()=>{let{options:{disabled:e,page:t,plugins:n},contentRef:r,x:i,y:a}=q();A(()=>{let a=()=>{i.hvTrack&&i.hvThumb&&Y({axis:`x`,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:i.hvTrack,hvThumb:i.hvThumb,total:i.total,view:i.view,viewOffset:i.viewOffset,scrollbarLength:i.scrollbarLength,setScrollbarLength:i.setScrollbarLength})};return a(),t?(window.addEventListener(`resize`,a),window.addEventListener(`scroll`,a)):r.current&&(r.current.addEventListener(`resize`,a),r.current.addEventListener(`scroll`,a)),()=>{t?(window.removeEventListener(`resize`,a),window.removeEventListener(`scroll`,a)):r.current&&(r.current.removeEventListener(`resize`,a),r.current.removeEventListener(`scroll`,a))}},[e,t,n,r,i.hvTrack,i.hvThumb,i.total,i.view,i.viewOffset,i.scrollbarLength,i.setScrollbarLength]),A(()=>{let i=()=>{a.hvTrack&&a.hvThumb&&Y({axis:`y`,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:a.hvTrack,hvThumb:a.hvThumb,total:a.total,view:a.view,viewOffset:a.viewOffset,scrollbarLength:a.scrollbarLength,setScrollbarLength:a.setScrollbarLength})};return i(),t?(window.addEventListener(`resize`,i),window.addEventListener(`scroll`,i)):r.current&&(r.current.addEventListener(`resize`,i),r.current.addEventListener(`scroll`,i)),()=>{t?(window.removeEventListener(`resize`,i),window.removeEventListener(`scroll`,i)):r.current&&(r.current.removeEventListener(`resize`,i),r.current.removeEventListener(`scroll`,i))}},[e,t,n,r,a.hvTrack,a.hvThumb,a.total,a.view,a.viewOffset,a.scrollbarLength,a.setScrollbarLength])},X=e=>{let t={};for(let n of e)t[n.name]=n.value;return t},Oe=(...e)=>{let t=e.flatMap(e=>e.split(/\s+/).filter(Boolean)),n=new Set(t);return Array.from(n).join(` `)},ke=e=>{let{name:t,props:n,plugins:r}=e,i={...n,className:n.class??n.className};for(let e of r){if(!e.props?.[t])continue;let n=J(e,e.props[t],i);i={...i,...n,...n.id?{id:Oe(n.id)}:{},...n.className?{className:Oe(n.className)}:{}}}return i};function Ae(e,t){for(let[n,r]of Object.entries(t)){if(r==null)continue;if(n===`style`&&typeof r==`object`){for(let[t,n]of Object.entries(r))e.style.setProperty(t,String(n));continue}if(typeof r==`boolean`){r?e.setAttribute(n,``):e.removeAttribute(n);continue}if(n in e){e[n]=r;continue}e.setAttribute(n,String(r))}return e}let Z=e=>{let t=u(),{options:{plugins:n}}=q(),r=X(t.current.attributes),i=ke({name:e,props:r,plugins:n});Ae(t.current,i)},je=({axis:e,disabled:t,page:n,plugins:r,contentRef:i,hvTrack:a,hvThumb:o,total:s,view:c,viewOffset:l,scrollbarOffset:u,setScrollbarOffset:d})=>{n?e===`x`?l.current=window.scrollX:l.current=window.scrollY:i.current&&(e===`x`?l.current=i.current.scrollLeft:l.current=i.current.scrollTop);let f=l.current/s.current*c.current,p;for(let i of r){if(!i.onScroll)continue;p=J(i,i.onScroll,{axis:e,isDisabled:t,isPage:n,isDefined:a&&o,total:s.current,view:c.current,viewOffset:l.current,scrollbarOffsetPrev:u,scrollbarOffsetNext:p?.scrollbarOffset??f})??p}let m;m=p?.scrollbarOffset?p.scrollbarOffset:f,d(m)},Me=()=>{let{options:{disabled:e,page:t,plugins:n},contentRef:r,x:i,y:a}=q();A(()=>{let a=()=>{i.hvTrack&&i.hvThumb&&je({axis:`x`,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:i.hvTrack,hvThumb:i.hvThumb,total:i.total,view:i.view,viewOffset:i.viewOffset,scrollbarOffset:i.scrollbarOffset,setScrollbarOffset:i.setScrollbarOffset})};return t?window.addEventListener(`scroll`,a):r.current&&r.current.addEventListener(`scroll`,a),()=>{t?window.removeEventListener(`scroll`,a):r.current&&r.current.removeEventListener(`scroll`,a)}},[e,t,n,r,i.hvTrack,i.hvThumb,i.total,i.view,i.viewOffset,i.scrollbarOffset,i.setScrollbarOffset]),A(()=>{let i=()=>{a.hvTrack&&a.hvThumb&&je({axis:`y`,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:a.hvTrack,hvThumb:a.hvThumb,total:a.total,view:a.view,viewOffset:a.viewOffset,scrollbarOffset:a.scrollbarOffset,setScrollbarOffset:a.setScrollbarOffset})};return t?window.addEventListener(`scroll`,i):r.current&&r.current.addEventListener(`scroll`,i),()=>{t?window.removeEventListener(`scroll`,i):r.current&&r.current.removeEventListener(`scroll`,i)}},[e,t,n,r,a.hvTrack,a.hvThumb,a.total,a.view,a.viewOffset,a.scrollbarOffset,a.setScrollbarOffset])},Q=(e,t,n)=>(t==null?t={key:n}:t.key=n,B(e,t)),Ne=()=>(De(),Me(),Z(`container`),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})),Pe=O(Ne),Fe=()=>{let{contentRef:e}=q();return Z(`content`),Q(`host`,{shadowDom:!0,ref:e,children:Q(`slot`,{})})},Ie=O(Fe);function Le(e){let t=u(),[n]=j(e.disabled??!1),[r]=j(e.page??!1),[i]=j(e.plugins??[]),a=l(),[o,s]=j(!1),[c,d]=j(!1),[f,p]=j(!1),[m,h]=j(!1),g=l(0),_=l(0),v=l(0),y=l(0),b=l(0),x=l(0),[S,C]=j(0),[w,ee]=j(0),[te,T]=j(0),[E,D]=j(0);return we(K,{options:{disabled:n,page:r,plugins:i},contentRef:a,x:{hvTrack:o,setHvTrack:s,hvThumb:c,setHvThumb:d,total:g,view:v,viewOffset:b,scrollbarLength:S,setScrollbarLength:C,scrollbarOffset:te,setScrollbarOffset:T},y:{hvTrack:f,setHvTrack:p,hvThumb:m,setHvThumb:h,total:_,view:y,viewOffset:x,scrollbarLength:w,setScrollbarLength:ee,scrollbarOffset:E,setScrollbarOffset:D}}),A(()=>{let e=X(t.current.attributes),n=ke({name:`provider`,props:e,plugins:i??[]});Ae(t.current,n)},[i]),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})}Le.props={disabled:{type:Boolean,reflect:!0,attr:`disabled`},page:{type:Boolean,reflect:!0,attr:`page`},plugins:{type:Array,reflect:!0,attr:`plugins`}};let Re=O(Le),ze=({axis:e,event:t,disabled:n,page:r,plugins:i,contentRef:a,hvTrack:o,hvThumb:s,total:c,view:l,viewOffset:u})=>{t.preventDefault();let d=e===`x`?t.clientX:t.clientY,f={viewOffset:u.current,pointerOffset:d};for(let t of i){if(!t.onDragStart)continue;J(t,t.onDragStart,{axis:e,isDisabled:n,isPage:r,isDefined:o&&s,total:c.current,view:l.current,viewOffset:u.current,pointerOffset:d})}let p=t=>{let d=e===`x`?t.clientX:t.clientY,p=c.current,m=l.current,h=d-f.pointerOffset,g=m/p,_=f.viewOffset+h/g,v;for(let t of i){if(!t.onDragMove)continue;v=J(t,t.onDragMove,{axis:e,isDisabled:n,isPage:r,isDefined:o&&s,total:p,view:m,viewOffset:u.current,pointerOffset:d,viewOffsetInit:f.viewOffset,pointerOffsetInit:f.pointerOffset,delta:h,ratio:g,scrollTo:v?.scrollTo??_})??v}let y;y=v?.scrollTo?v.scrollTo:_,r?window.scrollTo({...e===`x`?{left:y}:{top:y},behavior:`instant`}):a.current&&a.current.scrollTo({...e===`x`?{left:y}:{top:y},behavior:`instant`})},m=t=>{for(let a of i){if(!a.onDragEnd)continue;J(a,a.onDragEnd,{axis:e,isDisabled:n,isPage:r,isDefined:o&&s,total:c.current,view:l.current,viewOffset:u.current,pointerOffset:e===`x`?t.clientX:t.clientY,viewOffsetInit:f.viewOffset,pointerOffsetInit:f.pointerOffset})}window.removeEventListener(`pointermove`,p),window.removeEventListener(`pointerup`,m)};window.addEventListener(`pointermove`,p),window.addEventListener(`pointerup`,m)},Be=()=>{let{options:{disabled:e,page:t,plugins:n},contentRef:r,x:{hvTrack:i,hvThumb:a,total:o,view:s,viewOffset:c}}=q(),l=l=>{ze({axis:`x`,event:l,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:i,hvThumb:a,total:o,view:s,viewOffset:c})};return{onPointerDown:l}},Ve=()=>{let{options:{disabled:e,page:t,plugins:n},contentRef:r,y:{hvTrack:i,hvThumb:a,total:o,view:s,viewOffset:c}}=q(),l=l=>{ze({axis:`y`,event:l,disabled:e,page:t,plugins:n,contentRef:r,hvTrack:i,hvThumb:a,total:o,view:s,viewOffset:c})};return{onPointerDown:l}},He=()=>{let e=u(),{options:{disabled:t},x:{setHvThumb:n,scrollbarLength:r,scrollbarOffset:i}}=q();A(()=>{n(!0)});let{onPointerDown:a}=Be();return A(()=>(e.current.addEventListener(`pointerdown`,a),()=>{e.current.removeEventListener(`pointerdown`,a)}),[a]),Z(`thumbX`),A(()=>{if(t)return;let n=Number.isNaN(r)?0:r,a=Number.isNaN(i)?0:i;e.current.style.width=`${n}px`,e.current.style.left=`${a}px`},[t,r,i]),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})},Ue=O(He),We=()=>{let e=u(),{options:{disabled:t},y:{setHvThumb:n,scrollbarLength:r,scrollbarOffset:i}}=q();A(()=>{n(!0)});let{onPointerDown:a}=Ve();return A(()=>(e.current.addEventListener(`pointerdown`,a),()=>{e.current.removeEventListener(`pointerdown`,a)}),[a]),Z(`thumbY`),A(()=>{if(t)return;let n=Number.isNaN(r)?0:r,a=Number.isNaN(i)?0:i;e.current.style.height=`${n}px`,e.current.style.top=`${a}px`},[t,r,i]),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})},Ge=O(We),Ke=()=>{let{x:{setHvTrack:e}}=q();return A(()=>{e(!0)}),Z(`trackX`),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})},qe=O(Ke),Je=()=>{let{y:{setHvTrack:e}}=q();return A(()=>{e(!0)}),Z(`trackY`),Q(`host`,{shadowDom:!0,children:Q(`slot`,{})})},Ye=O(Je),$={Container:Pe,Content:Ie,Provider:Re,ThumbX:Ue,ThumbY:Ge,TrackX:qe,TrackY:Ye};customElements.define(`scrollbar-provider`,$.Provider),customElements.define(`scrollbar-container`,$.Container),customElements.define(`scrollbar-content`,$.Content),customElements.define(`scrollbar-track-x`,$.TrackX),customElements.define(`scrollbar-track-y`,$.TrackY),customElements.define(`scrollbar-thumb-x`,$.ThumbX),customElements.define(`scrollbar-thumb-y`,$.ThumbY)})(); //# sourceMappingURL=scrolia.js.map