@ehfuse/overlay-scrollbar 1.6.0 → 1.6.2
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/README.md +1 -0
- package/dist/OverlayScrollbar.d.ts +86 -0
- package/dist/OverlayScrollbar.d.ts.map +1 -0
- package/dist/components/ScrollbarArrows.d.ts +29 -0
- package/dist/components/ScrollbarArrows.d.ts.map +1 -0
- package/dist/components/ScrollbarThumb.d.ts +35 -0
- package/dist/components/ScrollbarThumb.d.ts.map +1 -0
- package/dist/components/ScrollbarTrack.d.ts +32 -0
- package/dist/components/ScrollbarTrack.d.ts.map +1 -0
- package/dist/hooks/useArrowNavigation.d.ts +27 -0
- package/dist/hooks/useArrowNavigation.d.ts.map +1 -0
- package/dist/hooks/useAutoHide.d.ts +19 -0
- package/dist/hooks/useAutoHide.d.ts.map +1 -0
- package/dist/hooks/useDragScroll.d.ts +23 -0
- package/dist/hooks/useDragScroll.d.ts.map +1 -0
- package/dist/hooks/useKeyboardNavigation.d.ts +18 -0
- package/dist/hooks/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/hooks/useScrollEvents.d.ts +20 -0
- package/dist/hooks/useScrollEvents.d.ts.map +1 -0
- package/dist/hooks/useScrollbarConfig.d.ts +53 -0
- package/dist/hooks/useScrollbarConfig.d.ts.map +1 -0
- package/dist/hooks/useScrollbarInitialization.d.ts +21 -0
- package/dist/hooks/useScrollbarInitialization.d.ts.map +1 -0
- package/dist/hooks/useScrollbarUpdate.d.ts +27 -0
- package/dist/hooks/useScrollbarUpdate.d.ts.map +1 -0
- package/dist/hooks/useThumbDrag.d.ts +25 -0
- package/dist/hooks/useThumbDrag.d.ts.map +1 -0
- package/dist/hooks/useTrackClick.d.ts +20 -0
- package/dist/hooks/useTrackClick.d.ts.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +43 -21
- package/dist/index.esm.js.map +4 -4
- package/dist/index.js +43 -21
- package/dist/index.js.map +4 -4
- package/dist/src/OverlayScrollbar.d.ts +61 -2
- package/dist/src/OverlayScrollbar.d.ts.map +1 -1
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/dragScrollUtils.d.ts +40 -0
- package/dist/utils/dragScrollUtils.d.ts.map +1 -0
- package/package.json +4 -11
package/dist/index.esm.js
CHANGED
|
@@ -1,22 +1,44 @@
|
|
|
1
|
-
import{useRef as U,useState as tt,useCallback as _,forwardRef as rt,useImperativeHandle as ot}from"react";var ne={},le={},ie={},ae={},ce={};import{useMemo as z}from"react";var se=({thumb:t,track:r,arrows:n,dragScroll:e,autoHide:o})=>{let a=z(()=>{let s=t.color??"#606060";return{width:t.width??8,minHeight:t.minHeight??50,radius:t.radius??(t.width??8)/2,color:s,opacity:t.opacity??.6,hoverColor:t.hoverColor??s,hoverOpacity:t.hoverOpacity??1}},[t]),c=z(()=>({width:r.width??16,color:r.color??"rgba(128, 128, 128, 0.1)",visible:r.visible??!0,alignment:r.alignment??"center",radius:r.radius??a.radius??4,margin:r.margin??4}),[r,a.radius]),b=z(()=>{let s=n.color??"#808080";return{visible:n.visible??!1,step:n.step??50,color:s,opacity:n.opacity??.6,hoverColor:n.hoverColor??s,hoverOpacity:n.hoverOpacity??1}},[n]),d=z(()=>({enabled:e.enabled??!0,excludeClasses:e.excludeClasses??[],excludeSelectors:e.excludeSelectors??[]}),[e]),l=z(()=>({enabled:o.enabled??!0,delay:o.delay??1500,delayOnWheel:o.delayOnWheel??700}),[o]);return{finalThumbConfig:a,finalTrackConfig:c,finalArrowsConfig:b,finalDragScrollConfig:d,finalAutoHideConfig:l}};import{useState as X,useCallback as $e,useEffect as ue}from"react";var de=({wrapperRef:t,scrollbarRef:r,contentRef:n,findScrollableElement:e,clearHideTimer:o,setScrollbarVisible:a,thumb:c,track:b,arrows:d,autoHide:l})=>{let[s,g]=X(0),[f,T]=X(0),[E,i]=X(!1),m=c.minHeight??50,h=c.width??8,p=d.visible??!1,u=b.margin??4,v=l.enabled??!0,y=$e(()=>{let C=e();if(!C){a(!1),i(!1),o();return}if(i(!0),!r.current)return;v||(a(!0),o());let w=C.clientHeight,x=C.scrollHeight,L=C.scrollTop,N=0;if(t.current){let H=window.getComputedStyle(t.current),W=parseFloat(H.paddingTop)||0,k=parseFloat(H.paddingBottom)||0;N=W+k}let M=p?h*2+u*4:u*2,A=w-M+N,G=w/x,B=Math.max(A*G,m),P=x-w,$=A-B,K=P>0?L/P*$:0;g(B),T(K)},[e,o,a,t,r,m,h,p,u,v]);return ue(()=>{y()},[y]),ue(()=>{let C=e();if(!C)return;let w=new ResizeObserver(()=>{y()});return w.observe(C),n.current&&w.observe(n.current),()=>w.disconnect()},[e,n,y]),{thumbHeight:s,thumbTop:f,hasScrollableContent:E,updateScrollbar:y}};import{useState as Z,useCallback as J,useEffect as We}from"react";var me=({findScrollableElement:t,thumbHeight:r,clearHideTimer:n,setScrollbarVisible:e,updateScrollbar:o,setHideTimer:a,hideDelay:c,isScrollable:b,maintainFocus:d})=>{let[l,s]=Z(!1),[g,f]=Z(!1),[T,E]=Z({y:0,scrollTop:0}),i=J(p=>{p.preventDefault(),p.stopPropagation();let u=t();u&&(s(!0),E({y:p.clientY,scrollTop:u.scrollTop}),n(),e(!0),d())},[t,n,e,d]),m=J(p=>{if(!l)return;let u=t();if(!u)return;let v=u.clientHeight,C=u.scrollHeight-v,w=p.clientY-T.y,x=v-r,L=w/x*C,N=Math.max(0,Math.min(C,T.scrollTop+L));u.scrollTop=N,o()},[l,T,r,t,o]),h=J(()=>{s(!1),b()&&a(c)},[b,a,c]);return We(()=>{if(l)return document.addEventListener("mousemove",m),document.addEventListener("mouseup",h),()=>{document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",h)}},[l,m,h]),{isDragging:l,isThumbHovered:g,setIsThumbHovered:f,handleThumbMouseDown:i}};import{useCallback as ze}from"react";var pe=({scrollbarRef:t,findScrollableElement:r,updateScrollbar:n,setScrollbarVisible:e,setHideTimer:o,hideDelay:a,maintainFocus:c})=>({handleTrackClick:ze(d=>{if(!t.current)return;let s=t.current.getBoundingClientRect(),g=d.clientY-s.top,f=r();if(!f)return;let T=f.clientHeight,E=f.scrollHeight,m=g/T*(E-T);f.scrollTop=Math.max(0,Math.min(E-T,m)),n(),e(!0),o(a),c()},[t,n,o,a,r,c,e])});import{useState as be,useCallback as fe}from"react";var ge=({arrows:t,containerRef:r,contentRef:n,updateScrollbar:e,setScrollbarVisible:o,setHideTimer:a,hideDelay:c,maintainFocus:b})=>{let[d,l]=be(null),[s,g]=be(null),f=t.step??50,T=fe(i=>{if(i.preventDefault(),i.stopPropagation(),!r.current)return;let m=Math.max(0,r.current.scrollTop-f);r.current.scrollTop=m,e(),o(!0),a(c),b()},[r,e,a,f,c,b,o]),E=fe(i=>{if(i.preventDefault(),i.stopPropagation(),!r.current||!n.current)return;let m=r.current,p=n.current.scrollHeight-m.clientHeight,u=Math.min(p,m.scrollTop+f);m.scrollTop=u,e(),o(!0),a(c),b()},[r,n,e,a,f,c,b,o]);return{activeArrow:d,setActiveArrow:l,hoveredArrow:s,setHoveredArrow:g,handleUpArrowClick:T,handleDownArrowClick:E}};import{useState as V,useCallback as Q,useEffect as qe}from"react";var je=["editor","textarea","input","select","textfield","form-control","contenteditable","MuiInputBase-input","MuiSelect-select","MuiOutlinedInput-input","MuiFilledInput-input","MuiInput-input","MuiFormControl-root","MuiTextField-root","MuiSelect-root","MuiOutlinedInput-root","MuiFilledInput-root","MuiInput-root","MuiAutocomplete-input","MuiDatePicker-input","MuiSlider-thumb","MuiSlider-rail","MuiSlider-track","MuiSlider-mark","MuiSlider-markLabel","MuiSlider-root","MuiSlider-colorPrimary","MuiSlider-sizeMedium","MuiIconButton-root","MuiButton-root","MuiButtonBase-root","MuiTouchRipple-root","MuiCheckbox-root","MuiRadio-root","MuiSwitch-root","PrivateSwitchBase-root","ant-input","ant-input-affix-wrapper","ant-input-group-addon","ant-input-number","ant-input-number-handler","ant-select","ant-select-selector","ant-select-selection-search","ant-select-dropdown","ant-cascader","ant-cascader-input","ant-picker","ant-picker-input","ant-time-picker","ant-calendar-picker","ant-slider","ant-slider-track","ant-slider-handle","ant-switch","ant-checkbox","ant-checkbox-wrapper","ant-radio","ant-radio-wrapper","ant-rate","ant-upload","ant-upload-drag","ant-form-item","ant-form-item-control","ant-btn","ant-dropdown","ant-dropdown-trigger","ant-menu","ant-menu-item","ant-tooltip","ant-popover","ant-modal","ant-drawer","ant-tree-select","ant-auto-complete","ant-mentions","ant-transfer","ui-input","ui-textarea","ui-select","ui-select-trigger","ui-select-content","ui-select-item","ui-button","ui-checkbox","ui-radio-group","ui-switch","ui-slider","ui-range-slider","ui-calendar","ui-date-picker","ui-combobox","ui-command","ui-command-input","ui-popover","ui-dialog","ui-sheet","ui-dropdown-menu","ui-context-menu","ui-menubar","ui-navigation-menu","ui-form","ui-form-control","ui-form-item","ui-form-field","ui-label","radix-ui","radix-select","radix-dropdown","radix-dialog","radix-popover","radix-accordion","radix-tabs","radix-slider","radix-switch","radix-checkbox","radix-radio","ql-editor","ql-container","ql-toolbar","ql-picker","ql-picker-label","ql-picker-options","ql-formats","ql-snow","ql-bubble","quill","quilleditor","monaco-editor","monaco-editor-background","view-lines","decorationsOverviewRuler","monaco-scrollable-element","CodeMirror","CodeMirror-code","CodeMirror-lines","CodeMirror-scroll","CodeMirror-sizer","cm-editor","cm-focused","cm-content","tox-editor-container","tox-editor-header","tox-edit-area","tox-tinymce","mce-content-body","ck-editor","ck-content","ck-toolbar","ck-editor__editable","ck-widget","slate-editor","slate-content","DraftEditor-root","DraftEditor-editorContainer","public-DraftEditor-content","ehfuse-editor","ehfuse-editor-wrapper","ehfuse-editor-content","ehfuse-toolbar","ehfuse-toolbar-group","ehfuse-cursor","text-editor","rich-text-editor","wysiwyg","ace_editor","ace_content"],he=(t,r)=>{let n=t.tagName.toLowerCase(),e=["text","password","email","number","search","tel","url","checkbox","radio"];if(n==="input"){let o=t.type;return e.includes(o)}if(["textarea","select","button"].includes(n)||["svg","path","circle","rect","line","polygon","polyline"].includes(n)||t.getAttribute("contenteditable")==="true")return!0;if(r?.excludeSelectors){for(let o of r.excludeSelectors)if(t.matches(o))return!0}return Be(t,r)},Be=(t,r)=>{let n=[...je,...r?.excludeClasses||[]],e=t,o=0,a=5;for(;e&&o<=a;){if(n.some(c=>e.classList.contains(c)))return!0;if(e.classList.contains("MuiDialogContent-root"))break;e=e.parentElement,o++}return!1};var ve=({dragScroll:t,findScrollableElement:r,clearHideTimer:n,setScrollbarVisible:e,updateScrollbar:o,setHideTimer:a,hideDelay:c,isScrollable:b})=>{let[d,l]=V(!1),[s,g]=V(!1),[f,T]=V({x:0,y:0,scrollTop:0,scrollLeft:0}),E=t.enabled??!0,i=5,m=Q(u=>{if(!E)return;let v=u.target;if(he(v,t)||u.button!==0)return;let y=r();y&&(y.scrollHeight<=y.clientHeight||(u.preventDefault(),l(!0),g(!1),T({x:u.clientX,y:u.clientY,scrollTop:y.scrollTop,scrollLeft:y.scrollLeft||0})))},[E,t,r,n,e]),h=Q(u=>{if(!d)return;let v=r();if(!v)return;let y=f.x-u.clientX,C=f.y-u.clientY;if(!s)if(Math.sqrt(y*y+C*C)>=i)g(!0),n(),e(!0);else return;let w=Math.max(0,Math.min(v.scrollHeight-v.clientHeight,f.scrollTop+C));v.scrollTop=w,o()},[d,s,f,i,r,o,n,e]),p=Q(()=>{l(!1),g(!1),b()&&a(c)},[b,a,c]);return qe(()=>{if(d)return document.addEventListener("mousemove",h),document.addEventListener("mouseup",p),()=>{document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)}},[d,h,p]),{isDragScrolling:d,handleDragScrollStart:m}};import{useRef as Te,useEffect as Ge}from"react";var ye=({containerRef:t,findScrollableElement:r,updateScrollbar:n,clearHideTimer:e,setScrollbarVisible:o,setHideTimer:a,autoHide:c,onScroll:b})=>{let d=Te(null),l=Te(!1),s=c.delay??1500,g=c.delayOnWheel??700;Ge(()=>{let f=h=>{let p=h.target,u=r();if(!u||p!==u)return;n(),e(),o(!0);let v=l.current?g:s;a(v),b&&b(h)},T=h=>{let p=h.target,u=t.current;if(!u||!u.contains(p)||p.classList.contains("overlay-scrollbar-container")&&p!==u)return;let v=p.parentElement;for(;v&&v!==u;){if(v.classList.contains("overlay-scrollbar-container"))return;v=v.parentElement}l.current=!0,d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{l.current=!1},300),e(),o(!0)},E=[],i=r();i&&E.push(i);let m=t.current;return m&&!i&&(E.push(m),m.querySelectorAll('[data-virtuoso-scroller], [style*="overflow"], .virtuoso-scroller, [style*="overflow: auto"], [style*="overflow:auto"]').forEach(p=>{let u=p;if(u!==m&&u.classList.contains("overlay-scrollbar-container"))return;let v=u.parentElement;for(;v&&v!==m;){if(v.classList.contains("overlay-scrollbar-container")&&v!==m)return;v=v.parentElement}E.push(u)})),E.forEach(h=>{h.addEventListener("scroll",f,{passive:!0}),h.addEventListener("wheel",T,{passive:!0})}),()=>{E.forEach(h=>{h.removeEventListener("scroll",f),h.removeEventListener("wheel",T)}),d.current&&clearTimeout(d.current)}},[t,r,n,b,e,a,s,g,o])};import{useEffect as Ke}from"react";var Ee=({containerRef:t,findScrollableElement:r,updateScrollbar:n,clearHideTimer:e,setScrollbarVisible:o,setHideTimer:a,hideDelay:c})=>{Ke(()=>{let b=l=>{let s=l.target;if(s.tagName==="INPUT"||s.tagName==="TEXTAREA"||s.tagName==="SELECT"||s.isContentEditable||s.getAttribute("role")==="textbox"||s.classList.contains("MuiInputBase-input")||s.closest(".MuiTextField-root")||s.closest('[contenteditable="true"]'))return;let g=r();if(!g)return;let{key:f}=l,{scrollTop:T,scrollHeight:E,clientHeight:i}=g,m=E-i,h=50,p=null;switch(f){case"ArrowUp":l.preventDefault(),p=Math.max(0,T-h);break;case"ArrowDown":l.preventDefault(),p=Math.min(m,T+h);break;case"PageUp":l.preventDefault(),p=Math.max(0,T-i);break;case"PageDown":l.preventDefault(),p=Math.min(m,T+i);break;case"Home":l.preventDefault(),p=0;break;case"End":l.preventDefault(),p=m;break;default:return}p!==null&&(g.scrollTop=p,n(),e(),o(!0),a(c))},d=t.current;if(d)return d.addEventListener("keydown",b),()=>{d.removeEventListener("keydown",b)}},[t,r,n,e,o,a,c])};import{useEffect as q,useLayoutEffect as Ye,useState as Xe}from"react";var Ce=({containerRef:t,contentRef:r,cachedScrollContainerRef:n,updateScrollbar:e,setScrollbarVisible:o,isScrollable:a,autoHide:c})=>{let[b,d]=Xe(!1);return q(()=>{e();let l=setTimeout(()=>{e()},100);return()=>clearTimeout(l)},[e]),Ye(()=>{d(!0),e(),!c.enabled&&a()&&o(!0)},[a,e,c.enabled,o]),q(()=>{let l=new ResizeObserver(()=>{e()}),s=[];return t.current&&s.push(t.current),r.current&&s.push(r.current),n.current&&document.contains(n.current)&&s.push(n.current),s.forEach(g=>{l.observe(g)}),()=>l.disconnect()},[e,t,r,n]),q(()=>{if(!t.current)return;let l=new MutationObserver(()=>{n.current=null,e()});return l.observe(t.current,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]}),()=>l.disconnect()},[e,t,n]),q(()=>{let l="overlay-scrollbar-webkit-hide",s=document.getElementById(l);s&&s.remove();let g=document.createElement("style");return g.id=l,g.textContent=`
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import{useRef as S,useEffect as E,useState as h,useCallback as m,useMemo as re,forwardRef as gt,useImperativeHandle as vt,useLayoutEffect as yt}from"react";var ft=["editor","textarea","input","select","textfield","form-control","contenteditable","MuiInputBase-input","MuiSelect-select","MuiOutlinedInput-input","MuiFilledInput-input","MuiInput-input","MuiFormControl-root","MuiTextField-root","MuiSelect-root","MuiOutlinedInput-root","MuiFilledInput-root","MuiInput-root","MuiAutocomplete-input","MuiDatePicker-input","MuiSlider-thumb","MuiSlider-rail","MuiSlider-track","MuiSlider-mark","MuiSlider-markLabel","MuiSlider-root","MuiSlider-colorPrimary","MuiSlider-sizeMedium","MuiIconButton-root","MuiButton-root","MuiButtonBase-root","MuiTouchRipple-root","MuiCheckbox-root","MuiRadio-root","MuiSwitch-root","PrivateSwitchBase-root","ant-input","ant-input-affix-wrapper","ant-input-group-addon","ant-input-number","ant-input-number-handler","ant-select","ant-select-selector","ant-select-selection-search","ant-select-dropdown","ant-cascader","ant-cascader-input","ant-picker","ant-picker-input","ant-time-picker","ant-calendar-picker","ant-slider","ant-slider-track","ant-slider-handle","ant-switch","ant-checkbox","ant-checkbox-wrapper","ant-radio","ant-radio-wrapper","ant-rate","ant-upload","ant-upload-drag","ant-form-item","ant-form-item-control","ant-btn","ant-dropdown","ant-dropdown-trigger","ant-menu","ant-menu-item","ant-tooltip","ant-popover","ant-modal","ant-drawer","ant-tree-select","ant-auto-complete","ant-mentions","ant-transfer","ui-input","ui-textarea","ui-select","ui-select-trigger","ui-select-content","ui-select-item","ui-button","ui-checkbox","ui-radio-group","ui-switch","ui-slider","ui-range-slider","ui-calendar","ui-date-picker","ui-combobox","ui-command","ui-command-input","ui-popover","ui-dialog","ui-sheet","ui-dropdown-menu","ui-context-menu","ui-menubar","ui-navigation-menu","ui-form","ui-form-control","ui-form-item","ui-form-field","ui-label","radix-ui","radix-select","radix-dropdown","radix-dialog","radix-popover","radix-accordion","radix-tabs","radix-slider","radix-switch","radix-checkbox","radix-radio","ql-editor","ql-container","ql-toolbar","ql-picker","ql-picker-label","ql-picker-options","ql-formats","ql-snow","ql-bubble","quill","quilleditor","monaco-editor","monaco-editor-background","view-lines","decorationsOverviewRuler","monaco-scrollable-element","CodeMirror","CodeMirror-code","CodeMirror-lines","CodeMirror-scroll","CodeMirror-sizer","cm-editor","cm-focused","cm-content","tox-editor-container","tox-editor-header","tox-edit-area","tox-tinymce","mce-content-body","ck-editor","ck-content","ck-toolbar","ck-editor__editable","ck-widget","slate-editor","slate-content","DraftEditor-root","DraftEditor-editorContainer","public-DraftEditor-content","ehfuse-editor","ehfuse-editor-wrapper","ehfuse-editor-content","ehfuse-toolbar","ehfuse-toolbar-group","ehfuse-cursor","text-editor","rich-text-editor","wysiwyg","ace_editor","ace_content"],He=(H,z)=>{let N=H.tagName.toLowerCase(),D=["text","password","email","number","search","tel","url","checkbox","radio"];if(N==="input"){let k=H.type;return D.includes(k)}if(["textarea","select","button"].includes(N)||["svg","path","circle","rect","line","polygon","polyline"].includes(N)||H.getAttribute("contenteditable")==="true")return!0;if(z?.excludeSelectors){for(let k of z.excludeSelectors)if(H.matches(k))return!0}return bt(H,z)},bt=(H,z)=>{let N=[...ft,...z?.excludeClasses||[]],D=H,k=0,I=5;for(;D&&k<=I;){if(N.some(T=>D.classList.contains(T)))return!0;if(D.classList.contains("MuiDialogContent-root"))break;D=D.parentElement,k++}return!1};import{jsx as $,jsxs as De}from"react/jsx-runtime";var xt={},Tt={},wt={},Mt={},St={},Et=gt(({className:H="",style:z={},containerStyle:N={},contentStyle:D={},children:k,onScroll:I,thumb:T=xt,track:A=Tt,arrows:O=wt,dragScroll:J=Mt,autoHide:P=St,showScrollbar:K=!0,detectInnerScroll:Xe=!1},Ye)=>{let Ge=S({});E(()=>{Ge.current={children:k,onScroll:I,showScrollbar:K,thumb:T,track:A,arrows:O,dragScroll:J,autoHide:P}});let pe=S(null),i=S(null),F=S(null),X=S(null),Je=S(null),L=S(null),[ne,x]=h(!1),[_,ke]=h(!1),[Le,Re]=h(!1),[me,Ke]=h({y:0,scrollTop:0}),[Z,Ze]=h(0),[je,Ie]=h(0),[he,Ae]=h(!1),[Oe,We]=h(!1),[U,$e]=h(!1),[fe,Ve]=h({x:0,scrollLeft:0}),[be,Qe]=h(0),[et,tt]=h(0),[ot,ge]=h(!1),[j,ze]=h(!1),[V,rt]=h({x:0,y:0,scrollTop:0,scrollLeft:0}),[Ct,Ht]=h(null),[le,ie]=h(null),[Dt,nt]=h(!1),Q=S(null),[Ne,Pe]=h(!1),ee=S(null),q=S(null),B=S(null),f=re(()=>{let e=T.color??"#606060";return{width:T.width??8,minHeight:T.minHeight??50,radius:T.radius??(T.width??8)/2,color:e,opacity:T.opacity??.6,hoverColor:T.hoverColor??e,hoverOpacity:T.hoverOpacity??1}},[T]),c=re(()=>({width:A.width??16,color:A.color??"rgba(128, 128, 128, 0.1)",visible:A.visible??!0,alignment:A.alignment??"center",radius:A.radius??f.radius??4,margin:A.margin??4}),[A,f.radius]),C=re(()=>{let e=O.color??"#808080";return{visible:O.visible??!1,step:O.step??50,color:e,opacity:O.opacity??.6,hoverColor:O.hoverColor??e,hoverOpacity:O.hoverOpacity??1}},[O]),ve=re(()=>({enabled:J.enabled??!0,excludeClasses:J.excludeClasses??[],excludeSelectors:J.excludeSelectors??[]}),[J]),n=re(()=>({enabled:P.enabled??!0,delay:P.delay??1500,delayOnWheel:P.delayOnWheel??700,initialDelay:P.initialDelay??200}),[P]),[Y,lt]=h(()=>(P.initialDelay??200)>0),b=f.width,it=c.width,ye=f.minHeight,R=C.visible,ae=C.step,w=m(()=>{if(!i.current)return;let e=document.activeElement;e&&i.current.contains(e)&&e!==i.current||i.current.focus()},[]);vt(Ye,()=>({getScrollContainer:()=>i.current,scrollTo:e=>{i.current&&i.current.scrollTo(e)},get scrollTop(){return i.current?.scrollTop||0},get scrollHeight(){return i.current?.scrollHeight||0},get clientHeight(){return i.current?.clientHeight||0}}),[]);let u=m(()=>{if(L.current){let t=L.current;if(document.contains(t)&&t.scrollHeight>t.clientHeight+2)return t;L.current=null}if(!i.current)return null;if(F.current&&F.current.scrollHeight>i.current.clientHeight+2)return L.current=i.current,i.current;if(!Xe)return null;let e=i.current.querySelectorAll('[data-virtuoso-scroller], [style*="overflow"], .virtuoso-scroller, [style*="overflow: auto"], [style*="overflow:auto"]');for(let t of e){let o=t;if(o!==i.current&&o.classList.contains("overlay-scrollbar-container"))continue;let a=o.parentElement,r=!1;for(;a&&a!==i.current;){if(a.classList.contains("overlay-scrollbar-container")&&a!==i.current){r=!0;break}a=a.parentElement}if(!r&&o.scrollHeight>o.clientHeight+2)return L.current=o,o}return null},[]),W=m(()=>u()!==null,[u]),v=m(()=>{ee.current&&(clearTimeout(ee.current),ee.current=null)},[]),Fe=m(()=>{q.current&&(clearTimeout(q.current),q.current=null)},[]),_e=m(()=>{B.current&&(clearTimeout(B.current),B.current=null)},[]),d=m(e=>{n.enabled&&(v(),ee.current=setTimeout(()=>{x(!1),ee.current=null},e))},[v,n.enabled]),s=m(()=>{let e=u();if(!e){x(!1),Ae(!1),ge(!1),v();return}if(Ae(!0),!X.current)return;!n.enabled&&!Y&&(x(!0),v());let t=e.clientHeight,o=e.scrollHeight,a=e.scrollTop,r=e.clientWidth,l=e.scrollWidth,y=e.scrollLeft,g=0;if(pe.current){let ue=window.getComputedStyle(pe.current),de=parseFloat(ue.paddingTop)||0,Ce=parseFloat(ue.paddingBottom)||0;g=de+Ce}let p=R?b*2+c.margin*4:c.margin*2,te=t-p+g,M=t/o,ce=Math.max(te*M,ye),se=o-t,Ue=te-ce,qe=se>0?a/se*Ue:0;Ze(ce),Ie(qe);let oe=l-r;if(oe>0){ge(!0);let ue=r/l,de=Math.max(r*ue,50),Ce=r-de,ht=oe>0?y/oe*Ce:0;Qe(de),tt(ht)}else ge(!1)},[u,v,R,b,ye,n.enabled,Y]),at=m(e=>{e.preventDefault(),e.stopPropagation();let t=u();t&&(ke(!0),Ke({y:e.clientY,scrollTop:t.scrollTop}),v(),x(!0),w())},[u,v,w]),xe=m(e=>{if(!_)return;let t=u();if(!t)return;let o=t.clientHeight,r=t.scrollHeight-o,l=e.clientY-me.y,y=o-Z,g=l/y*r,p=Math.max(0,Math.min(r,me.scrollTop+g));t.scrollTop=p,s()},[_,me,Z,s,u]),Te=m(()=>{ke(!1),W()&&d(n.delay)},[W,d,n.delay]),ct=m(e=>{if(!X.current)return;let o=X.current.getBoundingClientRect(),a=e.clientY-o.top,r=u();if(!r)return;let l=r.clientHeight,y=r.scrollHeight,p=a/l*(y-l);r.scrollTop=Math.max(0,Math.min(y-l,p)),s(),x(!0),d(n.delay),w()},[s,d,n.delay,u,w]),st=m(e=>{if(e.preventDefault(),e.stopPropagation(),!i.current)return;let t=Math.max(0,i.current.scrollTop-ae);i.current.scrollTop=t,s(),x(!0),d(n.delay),w()},[s,d,ae,n.delay,w]),ut=m(e=>{if(e.preventDefault(),e.stopPropagation(),!i.current||!F.current)return;let t=i.current,a=F.current.scrollHeight-t.clientHeight,r=Math.min(a,t.scrollTop+ae);t.scrollTop=r,s(),x(!0),d(n.delay),w()},[s,d,ae,n.delay,w]),dt=m(e=>{e.preventDefault(),e.stopPropagation();let t=u();t&&($e(!0),Ve({x:e.clientX,scrollLeft:t.scrollLeft}),v(),x(!0),w())},[u,v,w]),we=m(e=>{if(!U)return;let t=u();if(!t)return;let o=t.clientWidth,r=t.scrollWidth-o,l=e.clientX-fe.x,y=o-be,g=l/y*r,p=Math.max(0,Math.min(r,fe.scrollLeft+g));t.scrollLeft=p,s()},[U,fe,be,s,u]),Me=m(()=>{$e(!1),W()&&d(n.delay)},[W,d,n.delay]),pt=m(e=>{if(!X.current)return;let o=X.current.getBoundingClientRect(),a=e.clientX-o.left,r=u();if(!r)return;let l=r.clientWidth,y=r.scrollWidth,p=a/l*(y-l);r.scrollLeft=Math.max(0,Math.min(y-l,p)),s(),x(!0),d(n.delay),w()},[s,d,n.delay,u,w]),mt=m(e=>{if(!ve.enabled)return;let t=e.target;if(He(t,ve)||e.button!==0)return;let o=u();o&&(o.scrollHeight<=o.clientHeight&&o.scrollWidth<=o.clientWidth||(e.preventDefault(),ze(!0),rt({x:e.clientX,y:e.clientY,scrollTop:o.scrollTop,scrollLeft:o.scrollLeft||0}),v()))},[ve,He,u,v]),Se=m(e=>{if(!j)return;let t=u();if(!t)return;let o=V.x-e.clientX,a=V.y-e.clientY;if(Math.abs(a)<3&&Math.abs(o)<3)return;x(!0);let r=Math.max(0,Math.min(t.scrollHeight-t.clientHeight,V.scrollTop+a)),l=Math.max(0,Math.min(t.scrollWidth-t.clientWidth,V.scrollLeft+o));t.scrollTop=r,t.scrollLeft=l,s()},[j,V,u,s]),Ee=m(()=>{ze(!1),W()&&d(n.delay)},[W,d,n.delay]);E(()=>{let e=l=>{if(s(),Y){I&&I(l);return}v(),x(!0),_e();let y=Ne?n.delayOnWheel:n.delay;d(y),I&&I(l)},t=()=>{Pe(!0),Q.current&&clearTimeout(Q.current),Q.current=setTimeout(()=>{Pe(!1)},300),_e(),B.current=setTimeout(()=>{x(!0),B.current=null,d(n.delayOnWheel)},50)},o=[],a=u();a&&o.push(a);let r=i.current;return r&&!a&&(o.push(r),r.querySelectorAll('[data-virtuoso-scroller], [style*="overflow"], .virtuoso-scroller, [style*="overflow: auto"], [style*="overflow:auto"]').forEach(y=>{let g=y;if(g!==r&&g.classList.contains("overlay-scrollbar-container"))return;let p=g.parentElement;for(;p&&p!==r;){if(p.classList.contains("overlay-scrollbar-container")&&p!==r)return;p=p.parentElement}o.push(g)})),o.forEach(l=>{l.addEventListener("scroll",e,{passive:!0}),l.addEventListener("wheel",t,{passive:!0})}),()=>{o.forEach(l=>{l.removeEventListener("scroll",e),l.removeEventListener("wheel",t)}),Q.current&&clearTimeout(Q.current),B.current&&clearTimeout(B.current)}},[u,s,I,v,d,n,Ne,Y]),E(()=>{let e=o=>{let a=u();if(!a)return;let{key:r}=o,{scrollTop:l,scrollHeight:y,clientHeight:g}=a,p=y-g,te=50,M=null;switch(r){case"ArrowUp":o.preventDefault(),M=Math.max(0,l-te);break;case"ArrowDown":o.preventDefault(),M=Math.min(p,l+te);break;case"PageUp":o.preventDefault(),M=Math.max(0,l-g);break;case"PageDown":o.preventDefault(),M=Math.min(p,l+g);break;case"Home":o.preventDefault(),M=0;break;case"End":o.preventDefault(),M=p;break;default:return}if(M!==null){let ce=M/p,se=R?b*2+c.margin*4:c.margin*2,oe=(g-se-Z)*ce;Ie(oe),a.scrollTop=M,v(),x(!0),d(n.delay)}},t=i.current;if(t)return t.addEventListener("keydown",e),()=>{t.removeEventListener("keydown",e)}},[u,R,b,c.margin,Z,v,d,n.delay]),E(()=>{if(j)return document.addEventListener("mousemove",Se),document.addEventListener("mouseup",Ee),()=>{document.removeEventListener("mousemove",Se),document.removeEventListener("mouseup",Ee)}},[j,Se,Ee]),E(()=>{if(_)return document.addEventListener("mousemove",xe),document.addEventListener("mouseup",Te),()=>{document.removeEventListener("mousemove",xe),document.removeEventListener("mouseup",Te)}},[_,xe,Te]),E(()=>{if(U)return document.addEventListener("mousemove",we),document.addEventListener("mouseup",Me),()=>{document.removeEventListener("mousemove",we),document.removeEventListener("mouseup",Me)}},[U,we,Me]),E(()=>{s();let e=setTimeout(()=>{s()},100);return()=>clearTimeout(e)},[s]),yt(()=>{nt(!0),s(),!n.enabled&&!Y&&W()&&x(!0)},[W,s,n.enabled,Y]),E(()=>{if(n.initialDelay>0){let e=setTimeout(()=>{lt(!1)},n.initialDelay);return()=>clearTimeout(e)}},[n.initialDelay]),E(()=>{let e=new ResizeObserver(()=>{s()}),t=[];return i.current&&t.push(i.current),F.current&&t.push(F.current),L.current&&document.contains(L.current)&&t.push(L.current),t.forEach(o=>{e.observe(o)}),()=>e.disconnect()},[s]),E(()=>{if(!i.current)return;let e=new MutationObserver(()=>{L.current=null,s()});return e.observe(i.current,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]}),()=>e.disconnect()},[s]);let G=Math.max(it,b);return E(()=>{let e="overlay-scrollbar-webkit-hide",t=document.getElementById(e);t&&t.remove();let o=document.createElement("style");return o.id=e,o.textContent=`
|
|
2
|
+
.overlay-scrollbar-container::-webkit-scrollbar {
|
|
3
|
+
display: none !important;
|
|
4
|
+
width: 0 !important;
|
|
5
|
+
height: 0 !important;
|
|
6
|
+
}
|
|
7
|
+
.overlay-scrollbar-container::-webkit-scrollbar-track {
|
|
8
|
+
display: none !important;
|
|
9
|
+
}
|
|
10
|
+
.overlay-scrollbar-container::-webkit-scrollbar-thumb {
|
|
11
|
+
display: none !important;
|
|
12
|
+
}
|
|
13
|
+
/* ehfuse-editor-content\uB294 \uC2A4\uD06C\uB864\uBC14 \uC720\uC9C0 */
|
|
14
|
+
.overlay-scrollbar-container .ehfuse-editor-content {
|
|
15
|
+
scrollbar-width: thin !important;
|
|
16
|
+
-ms-overflow-style: auto !important;
|
|
17
|
+
}
|
|
18
|
+
.overlay-scrollbar-container .ehfuse-editor-content::-webkit-scrollbar {
|
|
19
|
+
display: block !important;
|
|
20
|
+
width: 8px !important;
|
|
21
|
+
height: 8px !important;
|
|
22
|
+
}
|
|
23
|
+
.overlay-scrollbar-container .ehfuse-editor-content::-webkit-scrollbar-track {
|
|
24
|
+
display: block !important;
|
|
25
|
+
background: #f1f1f1 !important;
|
|
26
|
+
}
|
|
27
|
+
.overlay-scrollbar-container .ehfuse-editor-content::-webkit-scrollbar-thumb {
|
|
28
|
+
display: block !important;
|
|
29
|
+
background: #c1c1c1 !important;
|
|
30
|
+
border-radius: 4px !important;
|
|
31
|
+
}
|
|
32
|
+
.overlay-scrollbar-container .ehfuse-editor-content::-webkit-scrollbar-thumb:hover {
|
|
33
|
+
background: #a1a1a1 !important;
|
|
34
|
+
}
|
|
35
|
+
.overlay-scrollbar-container:focus {
|
|
36
|
+
outline: 2px solid rgba(0, 123, 255, 0.3);
|
|
37
|
+
outline-offset: -2px;
|
|
38
|
+
}
|
|
39
|
+
.overlay-scrollbar-container:focus-visible {
|
|
40
|
+
outline: 2px solid rgba(0, 123, 255, 0.5);
|
|
41
|
+
outline-offset: -2px;
|
|
42
|
+
}
|
|
43
|
+
`,document.head.appendChild(o),()=>{let a=document.getElementById(e);a&&a.remove()}},[]),De("div",{ref:pe,className:`overlay-scrollbar-wrapper ${H}`,style:{display:"flex",flexDirection:"column",position:"relative",minHeight:0,height:"100%",flex:"1 1 0%",...z},children:[$("div",{ref:i,className:"overlay-scrollbar-container",tabIndex:-1,onMouseDown:mt,style:{display:"flex",width:"100%",flex:"1 1 auto",minHeight:0,overflow:"auto",scrollbarWidth:"none",msOverflowStyle:"none",outline:"none",userSelect:j?"none":"auto",...N},children:$("div",{ref:F,className:"overlay-scrollbar-content",style:{flex:"1 1 0%",minHeight:0,display:"flex",flexDirection:"column",...D},children:k})}),K&&he&&De("div",{ref:X,className:"overlay-scrollbar-track",onMouseEnter:()=>{v(),q.current=setTimeout(()=>{x(!0),q.current=null},100)},onMouseLeave:()=>{Fe(),_||d(n.delay)},style:{position:"absolute",top:0,right:0,width:`${G}px`,height:"100%",opacity:ne?1:0,transition:"opacity 0.2s ease-in-out",cursor:"pointer",zIndex:1e3,pointerEvents:"auto"},children:[c.visible&&$("div",{className:"overlay-scrollbar-track-background",onClick:e=>{e.preventDefault(),e.stopPropagation(),ct(e)},style:{position:"absolute",top:R?`${f.width+c.margin*2}px`:`${c.margin}px`,right:c.alignment==="outside"?"0px":`${(G-f.width)/2}px`,width:`${f.width}px`,height:R?`calc(100% - ${f.width*2+c.margin*4}px)`:`calc(100% - ${c.margin*2}px)`,backgroundColor:c.color,borderRadius:`${c.radius}px`,cursor:"pointer"}}),$("div",{ref:Je,className:"overlay-scrollbar-thumb",onMouseDown:at,onMouseEnter:()=>Re(!0),onMouseLeave:()=>Re(!1),style:{position:"absolute",top:`${(R?b+c.margin*2:c.margin)+je}px`,right:c.alignment==="outside"?"0px":`${(G-b)/2}px`,width:`${b}px`,height:`${Math.max(Z,ye)}px`,backgroundColor:Le||_?f.hoverColor:f.color,opacity:Le||_?f.hoverOpacity:f.opacity,borderRadius:`${f.radius}px`,cursor:"pointer",transition:"background-color 0.2s ease-in-out, opacity 0.2s ease-in-out"}})]}),K&&he&&R&&$("div",{className:"overlay-scrollbar-up-arrow",onClick:st,onMouseEnter:()=>ie("up"),onMouseLeave:()=>ie(null),style:{position:"absolute",top:`${c.margin}px`,right:c.alignment==="outside"?"0px":`${(G-b)/2}px`,width:`${b}px`,height:`${b}px`,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${Math.max(b*.75,8)}px`,color:le==="up"?C.hoverColor:C.color,userSelect:"none",zIndex:1001,opacity:ne?le==="up"?C.hoverOpacity:C.opacity:0,transition:"opacity 0.2s ease-in-out, color 0.15s ease-in-out"},children:"\u25B2"}),K&&he&&R&&$("div",{className:"overlay-scrollbar-down-arrow",onClick:ut,onMouseEnter:()=>ie("down"),onMouseLeave:()=>ie(null),style:{position:"absolute",bottom:`${c.margin}px`,right:c.alignment==="outside"?"0px":`${(G-b)/2}px`,width:`${b}px`,height:`${b}px`,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:`${Math.max(b*.75,8)}px`,color:le==="down"?C.hoverColor:C.color,userSelect:"none",zIndex:1001,opacity:ne?le==="down"?C.hoverOpacity:C.opacity:0,transition:"opacity 0.2s ease-in-out, color 0.15s ease-in-out"},children:"\u25BC"}),K&&ot&&De("div",{className:"overlay-scrollbar-horizontal-track",onMouseEnter:()=>{v(),q.current=setTimeout(()=>{x(!0),q.current=null},100)},onMouseLeave:()=>{Fe(),U||d(n.delay)},style:{position:"absolute",bottom:0,left:0,width:"100%",height:`${G}px`,opacity:ne?1:0,transition:"opacity 0.2s ease-in-out",cursor:"pointer",zIndex:1e3,pointerEvents:"auto"},children:[c.visible&&$("div",{className:"overlay-scrollbar-horizontal-track-background",onClick:e=>{e.preventDefault(),e.stopPropagation(),pt(e)},style:{position:"absolute",bottom:`${c.margin}px`,left:`${c.margin}px`,width:`calc(100% - ${c.margin*2}px)`,height:`${b}px`,backgroundColor:c.color,borderRadius:`${c.radius}px`,cursor:"pointer"}}),$("div",{className:"overlay-scrollbar-horizontal-thumb",onMouseDown:dt,onMouseEnter:()=>We(!0),onMouseLeave:()=>We(!1),style:{position:"absolute",bottom:`${c.margin}px`,left:`${c.margin+et}px`,width:`${Math.max(be,50)}px`,height:`${b}px`,backgroundColor:Oe||U?f.hoverColor:f.color,opacity:Oe||U?f.hoverOpacity:f.opacity,borderRadius:`${f.radius}px`,cursor:"pointer",transition:"background-color 0.2s ease-in-out, opacity 0.2s ease-in-out"}})]})]})}),Be=Et;export{Be as OverlayScrollbar,Be as default};
|
|
22
44
|
//# sourceMappingURL=index.esm.js.map
|