mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-21 15:20:35 +03:00
1 line
15 KiB
JavaScript
1 line
15 KiB
JavaScript
const t=Node.ELEMENT_NODE,{toString:e,hasOwnProperty:n}=Object.prototype;function o(t){return void 0===t}function r(t){return null===t}const s=t=>o(t)||r(t)?""+t:e.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase();function i(t){return"number"==typeof t}function c(t){return"string"==typeof t}function l(t){return"function"==typeof t}function a(t){return Array.isArray(t)}function d(t){return"object"==typeof t&&!a(t)&&!r(t)}function u(t){const e=!!t&&t.length,n=i(e)&&e>-1&&e%1==0;return!!(a(t)||!l(t)&&n)&&(!(e>0&&d(t))||e-1 in t)}function v(t){if(!t||!d(t)||"object"!==s(t))return!1;let e;const r=t.constructor,i=r&&r.prototype,c=n.call(t,"constructor"),l=i&&n.call(i,"isPrototypeOf");if(r&&!c&&!l)return!1;for(e in t);return o(e)||n.call(t,e)}function f(e){const n=window.Element;return!!e&&(n?e instanceof n:e.nodeType===t)}function _(t,e,n,r){if(o(r))return n?n[t]:e;n&&(n[t]=r)}function h(t,e,n){if(o(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const p=(t,e)=>{t&&t.removeAttribute(e)};function w(t,e){return _("scrollLeft",0,t,e)}function b(t,e){return _("scrollTop",0,t,e)}function g(t,e){if(u(t))for(let n=0;n<t.length&&!1!==e(t[n],n,t);n++);else t&&g(Object.keys(t),n=>e(t[n],n,t));return t}const m=(t,e,n)=>t.indexOf(e,n),y=(t,e,n)=>(n||c(e)||!u(e)?t.push(e):Array.prototype.push.apply(t,e),t),x=t=>{if(Array.from)return Array.from(t);const e=[];return g(t,t=>{y(e,t)}),e},z=t=>t&&0===t.length,O=(t,e)=>{const n=t=>t&&t(e);t instanceof Set?t.forEach(n):g(t,n)},S=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),C=t=>t?Object.keys(t):[];function j(t,e,n,o,s,i,c){const d=[e,n,o,s,i,c];return"object"==typeof t&&!r(t)||l(t)||(t={}),g(d,e=>{g(C(e),n=>{const o=e[n];if(t===o)return!0;const r=a(o);if(o&&(v(o)||r)){const e=t[n];let s=e;r&&!a(e)?s=[]:r||v(e)||(s={}),t[n]=j(s,o)}else t[n]=o})}),t}function A(t){for(const e in t)return!1;return!0}const M=/[^\x20\t\r\n\f]+/g,$=(t,e,n)=>{let o,r=0,s=!1;if(t&&c(e)){const i=e.match(M)||[];for(s=i.length>0;o=i[r++];)s=!!n(t.classList,o)&&s}return s},E=(t,e)=>{$(t,e,(t,e)=>t.add(e))},T=(t,e)=>{$(t,e,(t,e)=>t.remove(e))},L=Element.prototype,V=(t,e)=>{const n=[],o=e?f(e)?e:null:document;return o?y(n,o.querySelectorAll(t)):n},k=(t,e)=>{if(f(t)){return(L.matches||L.msMatchesSelector).call(t,e)}return!1},q=t=>t?x(t.childNodes):[],N=t=>t?t.parentElement:null,F=(t,e,n)=>{if(n){let o,r=e;t&&(u(n)?(o=document.createDocumentFragment(),g(n,t=>{t===r&&(r=t.previousSibling),o.appendChild(t)})):o=n,e&&(r?r!==e&&(r=r.nextSibling):r=t.firstChild),t.insertBefore(o,r||null))}},P=(t,e)=>{F(t,null,e)},B=(t,e)=>{F(t,t&&t.firstChild,e)},I=(t,e)=>{F(N(t),t&&t.nextSibling,e)},U=t=>{if(u(t))g(x(t),t=>U(t));else if(t){const e=N(t);e&&e.removeChild(t)}},Y=t=>{const e=document.createElement("div");return t&&h(e,"class",t),e},D=t=>{const e=Y();return e.innerHTML=t.trim(),g(q(e),t=>U(t))},G={w:0,h:0},J=()=>({w:window.innerWidth,h:window.innerHeight}),K=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:G;let R;const W=t=>t.split(" "),X=(t,e,n,o)=>{g(W(e),e=>{t.removeEventListener(e,n,o)})},H=(t,e,n,r)=>{const s=(()=>{if(o(R)){R=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){R=!0}}))}catch(t){}}return R})(),i=s&&r&&r.o||!1,c=r&&r.s||!1,l=r&&r.u||!1,a=[],d=s?{passive:i,capture:c}:c;return g(W(e),e=>{const o=l?r=>{t.removeEventListener(e,o,c),n&&n(r)}:n;y(a,X.bind(null,t,e,o,c)),t.addEventListener(e,o,d)}),O.bind(0,a)},Q=t=>t.stopPropagation(),Z=t=>t.preventDefault(),tt=(t,e,n)=>{if(t&&e){let o=!0;return g(n,n=>{t[n]!==e[n]&&(o=!1)}),o}return!1},et=(t,e)=>tt(t,e,["w","h"]),nt=(t,e)=>tt(t,e,["x","y"]),ot=(t,e)=>tt(t,e,["t","r","b","l"]),rt=t=>t.charAt(0).toUpperCase()+t.slice(1),st=["-webkit-","-moz-","-o-","-ms-"],it=["WebKit","Moz","O","MS","webkit","moz","o","ms"],ct={},lt={},at=t=>{let e=lt[t];if(S(lt,t))return e;const n=rt(t),o=Y().style;return g(st,r=>{const s=r.replace(/-/g,""),i=[t,r+t,s+n,rt(s)+n];return e=i.find(t=>void 0!==o[t]),!e}),lt[t]=e,e},dt=t=>{let e=ct[t]||window[t];return S(ct,t)||(g(it,n=>(e=e||window[n+rt(t)],!e)),ct[t]=e),e},ut=dt("MutationObserver"),vt=dt("IntersectionObserver"),ft=dt("ResizeObserver"),_t=dt("cancelAnimationFrame"),ht=dt("requestAnimationFrame"),pt=()=>{},wt=(t,e,n)=>{let o,r;const s=i(e)&&e>0,c=i(n)&&n>0,l=s?window.clearTimeout:_t,a=s?window.setTimeout:ht,d=function(e){r=c?performance.now():0,o&&l(o),t.apply(this,e)};return function(){const t=d.bind(this,arguments),s=!!c&&performance.now()-r>=n;o&&l(o),o=s?t():a(t,e)}},bt={animationiterationcount:1,columncount:1,fillopacity:1,flexgrow:1,flexshrink:1,fontweight:1,lineheight:1,opacity:1,order:1,orphans:1,widows:1,zindex:1,zoom:1},gt=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},mt=(t,e,n)=>null!=e?e.getPropertyValue(n):t.style[n],yt=(t,e,n)=>{try{t&&void 0!==t.style[e]&&(t.style[e]=((t,e)=>!bt[t.toLowerCase()]&&i(e)?e+"px":e)(e,n))}catch(o){}};function xt(t,e){const n=c(e);if(a(e)||n){let o=n?"":{};if(t){const r=window.getComputedStyle(t,null);o=n?mt(t,r,e):e.reduce((e,n)=>(e[n]=mt(t,r,n),e),o)}return o}g(C(e),n=>yt(t,n,e[n]))}const zt={x:0,y:0},Ot=t=>{const e=t?(t=>t.getBoundingClientRect())(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:zt},St=(t,e)=>{const{v:n,_:o,p:r}=e||{};let s,i=o;return(e,o)=>{const c=i,l=t?t(o,i,s):o,a=e||(n?!n(c,l):c!==l);return(a||r)&&(i=l,s=c),{g:i,m:s,O:a}}};var Ct=function(t){var e={exports:{}};return t(e,e.exports),e.exports}((function(t){function e(){return t.exports=e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},e.apply(this,arguments)}t.exports=e}));const{stringify:jt}=JSON,At=["__TPL_","_TYPE__"],Mt=["boolean","number","string","array","object","function","null"].reduce((t,e)=>(t[e]=At[0]+e+At[1],t),{}),$t=(t,e,n,r,i)=>{const l={},d=Ct({},t);return g(C(e).filter(e=>S(t,e)),u=>{const f=o(n[u])?{}:n[u],_=t[u],h=e[u],p=v(h),w=i?i+".":"";if(p&&v(_)){const t=$t(_,h,f,r,w+u);l[u]=t.S,d[u]=t.C,g([d,l],t=>{A(t[u])&&delete t[u]})}else if(!p){let t=!1;const e=[],n=[],i=s(_);if(g(a(h)?h:[h],r=>{let s;g(Mt,(t,e)=>{t===r&&(s=e)});const l=o(s);if(l&&c(_)){const n=r.split(" ");t=!!n.find(t=>t===_),y(e,n)}else t=Mt[i]===r;return y(n,l?Mt.string:s),!t}),t){(a(_)||v(_)?jt(_)!==jt(f):_!==f)&&(l[u]=_)}else r&&console.warn(`The option "${w}${u}" wasn't set, because it doesn't accept the type [ ${i.toUpperCase()} ] with the value of "${_}".\r\nAccepted types are: [ ${n.join(", ").toUpperCase()} ].\r\n${e.length>0?`\r\nValid strings are: [ ${e.join(", ")} ].`:""}`);delete d[u]}}),{C:d,S:l}},Et=(t,e,n,o)=>$t(t,e,n||{},o||!1);let Tt;const{abs:Lt,round:Vt}=Math,kt=(t,e)=>{P(t,e);const n=(o=e)?{w:o.clientWidth,h:o.clientHeight}:G;var o;const r=K(e);return{x:r.h-n.h,y:r.w-n.w}},qt=t=>{let e=!1;E(t,"os-viewport-scrollbar-styled");try{e="none"===xt(t,"scrollbar-width")||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(n){}return e},Nt=(t,e)=>{xt(t,{overflowX:"hidden",overflowY:"hidden",direction:"rtl"}),w(t,0);const n=Ot(t),o=Ot(e);w(t,-999);const r=Ot(e);return{i:n.x===o.x,n:o.x!==r.x}},Ft=(t,e)=>{E(t,"os-environment-flexbox-glue");const n=K(t),o=K(e),r=et(o,n);E(t,"os-environment-flexbox-glue-max");const s=K(t),i=K(e),c=et(i,s);return r&&c},Pt=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},Bt=()=>{const{body:t}=document,e=D('<div class="os-environment"><div></div></div>')[0],n=e.firstChild,o=new Set,r=kt(t,e),s={x:0===r.x,y:0===r.y},i={j:!1,A:r,M:s,$:qt(e),T:Nt(e,n),L:Ft(e,n),V(t){o.add(t)},k(t){o.delete(t)}};if(p(e,"style"),p(e,"class"),U(e),!s.x||!s.y){let n=J(),s=Pt(),i=r;window.addEventListener("resize",()=>{if(o.size){const r=J(),c={w:r.w-n.w,h:r.h-n.h};if(0===c.w&&0===c.h)return;const l={w:Lt(c.w),h:Lt(c.h)},a={w:Lt(Vt(r.w/(n.w/100))),h:Lt(Vt(r.h/(n.h/100)))},d=Pt(),u=l.w>2&&l.h>2,v=!((t,e)=>{const n=Lt(t),o=Lt(e);return!(n===o||n+1===o||n-1===o)})(a.w,a.h),f=d!==s&&s>0;if(u&&v&&f){const n=Tt.A=kt(t,e);U(e),i.x===n.x&&i.y===n.y||O(o),i=n}n=r,s=d}})}return i},It=()=>(Tt||(Tt=Bt()),Tt),Ut=(t,e)=>t&&e.split(".").reduce((t,e)=>t&&S(t,e)?t[e]:void 0,t),Yt=(t,e,n)=>{const{q:o,N:r}=function t(e){const n={q:{},N:{}};return g(C(e),o=>{const r=e[o];if(a(r))n.q[o]=r[1],n.N[o]=r[0];else{const e=t(r);n.q[o]=e.q,n.N[o]=e.N}}),n}(t),s=j({},r,Et(e||{},o,null,!0).S),i=t=>{const{F:e,P:o}=t;n(!!e,t=>({g:Ut(s,t),O:e||void 0!==Ut(o,t)}))};return i({F:!0}),{N(t){if(t){const{S:e}=Et(t,o,s,!0);A(e)||(j(s,e),i({P:e}))}return s},B:t=>{i({F:t})}}},Dt={paddingAbsolute:[!1,Mt.boolean],overflowBehavior:{x:["scroll","visible-hidden visible-scroll scroll hidden"],y:["scroll","visible-hidden visible-scroll scroll hidden"]}},Gt=at("margin-inline-end"),Jt=at("border-inline-end"),Kt=(t,e)=>{const{I:n,U:o,Y:r,D:s}=t,i=[],c=It(),l=c.M,a=c.$,d=(c.L,Gt&&Jt||a||l.y,St(()=>((t,e)=>{const n=e||"",o=n+"-top",r=n+"-right",s=n+"-bottom",i=n+"-left",c=xt(t,[o,r,s,i]);return{t:gt(c[o]),r:gt(c[r]),b:gt(c[s]),l:gt(c[i])}})(n,"padding"),{v:ot})),u=St(t=>({x:Math.max(0,Math.round(100*(t.G.w-t.J.w))/100),y:Math.max(0,Math.round(100*(t.G.h-t.J.h))/100)}),{v:nt}),{N:v,B:f}=Yt(Dt,e,(t,e)=>{const{g:n,O:r}=e("paddingAbsolute"),{g:i,O:c}=d(t);if(r||c){const t={t:0,r:0,b:0,l:0};n||(t.t=-i.t,t.r=-(i.r+i.l),t.b=-(i.b+i.t),t.l=-i.l),xt(o,{top:t.t,left:t.l,"margin-right":t.r,"margin-bottom":t.b,"max-width":`calc(100% + ${-1*t.r}px)`})}const l=K(o),a=K(s),v=(f=s)?{w:f.scrollWidth,h:f.scrollHeight}:G;var f;const _=u(t,{G:v,J:{w:l.w+Math.max(0,a.w-v.w),h:l.h+Math.max(0,a.h-v.h)}}),{g:h,O:p}=_;console.log("overflowAmount",h),console.log("overflowAmountChanged",p)});return{N:v,B:f,K:()=>{f()},R:(t,e)=>{const{O:n,g:o}=e;n&&xt(s,{height:o?"auto":"100%"})},W(){O(i)}}},Rt={direction:["rtl"]},Wt=t=>{let e=!1;return g(xt(t,["direction"]),(t,n)=>{e=e||m(Rt[n],t)>-1}),e},Xt=t=>t&&(t.height||t.width),Ht=(t,e,n)=>{const{X:o=!1,H:r=!1}=n||{},s=It().T,i=D('<div class="os-size-observer"><div class="os-size-observer-listener"></div></div>')[0],c=i.firstChild,l=St(0,{p:!0,v:(t,e)=>!(!t||!Xt(t)&&Xt(e))}),d=t=>{const n=t&&"boolean"==typeof t.g;let r=!1;if(a(t)&&t.length>0){const{m:e,g:n,O:o}=l(0,t.pop().contentRect);r=!e||!Xt(n)}else n&&t.O;if(o){const e=n?t.g:Wt(i);w(i,e?s.n?-3333333:s.i?0:3333333:3333333),b(i,3333333)}r||e(n?t:void 0)},u=[];let v=!!r&&d;if(ft){const t=new ft(d);t.observe(c),y(u,()=>t.disconnect())}else{const t=D('<div class="os-size-observer-listener-item" dir="ltr"><div class="os-size-observer-listener-item"><div class="os-size-observer-listener-item-final"></div></div><div class="os-size-observer-listener-item"><div class="os-size-observer-listener-item-final" style="width: 200%; height: 200%"></div></div></div>');P(c,t),E(c,"os-size-observer-listener-scroll");const e=t[0],n=e.lastChild,o=e.firstChild,s=null==o?void 0:o.firstChild;let i,l=K(c),a=l,f=!1;const _=()=>{w(o,3333333),b(o,3333333),w(n,3333333),b(n,3333333)},h=()=>{i=0,f&&(l=a,d())},p=t=>(a=K(c),f=!t||!et(a,l),t&&f&&!i?(_t(i),i=ht(h)):t||h(),_(),t&&(Z(t),Q(t)),!1);y(u,[H(o,"scroll",p),H(n,"scroll",p)]),xt(s,{width:3333333,height:3333333}),_(),v=r?()=>p():_}if(o){const t=St(()=>Wt(i));y(u,H(i,"scroll",e=>{const n=t(),{g:o,O:r}=n;return r&&(xt(c,o?{left:"auto",right:0}:{left:0,right:"auto"}),d(n)),Z(e),Q(e),!1}))}return v&&(E(i,"os-size-observer-appear"),y(u,H(i,"animationstart",v,{u:!!ft}))),B(t,i),()=>{O(u),U(i)}},Qt=(t,e,n,r)=>{let s;const i=()=>{n.forEach((t,e)=>{X(e,t,r)}),n.clear()},c=e=>{if(s){g(s.reduce((n,o)=>{if(o){const r=o[0],s=o[1],i=s&&r&&(e?e(r):V(r,t));i&&y(n,[i,l(s)?s(i):s],!0)}return n},[]),t=>{const e=t[0],s=t[1];g(e,t=>{((t,e)=>{const s=n.get(t),i=o(s),c=()=>{n.set(t,e),H(t,e,r)};i||e===s?i&&c():(X(t,s,r),c())})(t,s)})})}},a=t=>{s=t,i(),c()};return e&&a(e),{Z:i,tt:c,B:a}},Zt=(t,e,n)=>{let o=!1;const{et:r,nt:s,ot:i,rt:l,st:a,it:d,ct:u}=n||{},{tt:v,Z:f,B:_}=Qt(t,r&&l,new Map,wt(()=>{o&&e([],!1,!0)},80)),p=i||[],w=(s||[]).concat(p),b=o=>{const s=d||pt,i=u||pt,l=[],f=[];let _=!1,w=!1,b=!1;g(o,e=>{const{attributeName:o,target:d,type:u,oldValue:v,addedNodes:g}=e,x="attributes"===u,z="childList"===u,O=t===d,S=x&&c(o)?h(d,o):0,C=0!==S&&v!==S,j=C&&O&&!r&&!s(d,o,v,S),A=m(p,o)>-1&&C;if(j&&y(l,o),r){const r=!x,c=x&&A&&!O,l=c&&a&&k(d,a),u=(l?!s(d,o,v,S):r||c)&&!i(e,!!l,t,n);y(f,g),w=w||u,b=b||z}_=_||j&&A}),b&&!z(f)&&v(t=>f.reduce((e,n)=>(y(e,V(t,n)),k(n,t)?y(e,n):e),[])),(!z(l)||_||w)&&e(l,_,w)},x=new ut(b);return x.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:r,childList:r,characterData:r}),o=!0,{lt:()=>{o&&(f(),x.disconnect(),o=!1)},at:t=>{_(o&&r&&t)},B:()=>{o&&b(x.takeRecords())}}},te=t=>{P(N(t),q(t)),U(t)},ee=e=>{const n=function(e){const n=window.HTMLElement;return!!e&&(n?e instanceof n:e.nodeType===t)}(e),r=n?{}:{I:e.host,dt:e.target,U:e.padding,Y:e.viewport,D:e.content};if(n){const t=Y("os-padding"),n=Y("os-viewport"),o=Y("os-content");P(t,n),P(n,o),r.dt=e,r.U=t,r.Y=n,r.D=o}let{dt:s,U:i,Y:c,D:l}=r;const a=[],d=k(s,"textarea"),u=!d&&k(s,"body"),v=d?r.I||Y():s,f=t=>d?s:q(t);if(d&&v!==r.I&&(I(s,v),y(a,()=>{I(v,s),U(v)})),n)P(l,f(s)),P(v,i),y(a,()=>{P(v,q(l)),U(i),T(v,"os-host")});else{const t=l||c||i||v,e=o(i),n=o(c),s=o(l),d=f(t);i=r.U=e?Y():i,c=r.Y=n?Y():c,l=r.D=s?Y():l,P(v,i),P(i||v,c),P(c,l);P(l||c,d),y(a,()=>{s&&te(l),n&&te(c),e&&te(i),T(v,"os-host"),T(i,"os-padding"),T(c,"os-viewport"),T(l,"os-content")})}E(v,"os-host"),E(i,"os-padding"),E(c,"os-viewport"),E(l,"os-content");const _=s.ownerDocument,h=_.body,p={ut:_.defaultView,vt:_,ft:N(h),_t:h,ht:d,pt:u};return{wt:Ct({},r,{I:v}),bt:p,Z:()=>{O(a)}}},ne=(t,e,n)=>{const o=ee(t),r=[],{I:s,Y:i,D:c}=o.wt;y(r,Kt(o.wt));Ht(s,t=>{g(r,t?e=>{e.gt&&e.gt(t)}:t=>{t.K&&t.K()})},{H:!0,X:!0}),((t,e)=>{const n=D('<div class="os-trinsic-observer"></div>')[0],o=[],r=St(t=>0===t.h||t.isIntersecting||t.intersectionRatio>0,{_:!1});if(vt){const s=new vt(t=>{if(t&&t.length>0){const n=t.pop();if(n){const t=r(0,n);t.O&&e(!1,t)}}},{root:t});s.observe(n),y(o,()=>s.disconnect())}else y(o,Ht(n,()=>{const t=K(n),o=r(0,t);o.O&&e(!1,o)}));B(t,n)})(s,(t,e)=>{g(r,n=>{n.R&&n.R(t,e)})}),Zt(s,()=>null),Zt(c||i,()=>null,{et:!0})};export default()=>[It(),ne(document.body),D(' <div class="os-host"> <div class="os-resize-observer-host"></div> <div class="os-padding"> <div class="os-viewport"> <div class="os-content"> fdfhdfgh </div> </div> </div> <div class="os-scrollbar os-scrollbar-horizontal"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar os-scrollbar-vertical"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar-corner"></div> </div>')]; |