UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

2 lines (1 loc) 2.3 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),B=require("../types.cjs"),D=(v,o,l)=>{const r=i.inject("scrollBarContext"),m=i.ref({});let p=!1;const e=i.computed(()=>B.BAR_MAP[v.vertical?"vertical":"horizontal"]),P=({move:t,size:n,bar:a})=>({[a.size]:n,transform:`translate${a.axis}(${t}%)`}),E=i.computed(()=>P({size:v.size,move:v.move,bar:e.value})),g=i.computed(()=>o.value?o.value[e.value.offset]**2/r.scrollWrapEl[e.value.scrollSize]/v.ratio/l.value[e.value.offset]:0);let u=null,s=0;const S=t=>{s||(s=requestAnimationFrame(()=>{t(),s=0}))},f=t=>{if(!o.value||!l.value||!p||u!==null&&t.pointerId!==u)return;const n=m.value[e.value.axis];n!==void 0&&S(()=>{let a=0,d=0;o.value&&(a=(o.value.getBoundingClientRect()[e.value.direction]-t[e.value.client])*-1),l.value&&(d=l.value[e.value.offset]-n);const z=(a-d)*100*g.value/o.value[e.value.offset];r&&(r.scrollWrapEl[e.value.scroll]=z*r.scrollWrapEl[e.value.scrollSize]/100)})},c=()=>{p=!1,m.value[e.value.axis]=0,l.value&&u!==null&&l.value.releasePointerCapture?.(u),u=null,document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",c),document.removeEventListener("pointercancel",c)},b=t=>{t.stopImmediatePropagation(),t.preventDefault&&t.preventDefault(),p=!0,u=t.pointerId,document.addEventListener("pointermove",f,{passive:!1}),document.addEventListener("pointerup",c),document.addEventListener("pointercancel",c),t.currentTarget.setPointerCapture?.(t.pointerId),document.onselectstart=()=>!1},C=t=>{if(t.stopPropagation(),t.ctrlKey||[1,2].includes(t.button))return;window.getSelection()?.removeAllRanges(),b(t);const n=t.currentTarget;n&&(m.value[e.value.axis]=n[e.value.offset]-(t[e.value.client]-n.getBoundingClientRect()[e.value.direction]))},L=t=>{if(!l.value||!o.value||!r?.scrollWrapEl)return;const n=Math.abs(t.target.getBoundingClientRect()[e.value.direction]-t[e.value.client]),a=l.value[e.value.offset]/2,d=(n-a)*100*g.value/o.value[e.value.offset];r.scrollWrapEl[e.value.scroll]=d*r?.scrollWrapEl[e.value.scrollSize]/100};return i.onBeforeUnmount(()=>{document.removeEventListener("pointerup",c),document.removeEventListener("pointermove",f),s&&cancelAnimationFrame(s)}),{bar:e,thumbStyle:E,onMousedown:L,onThumbPointerDown:C}};exports.useThumb=D;