mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-20 02:30:37 +03:00
1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).OverlayScrollbars=r()}(this,(function(){"use strict";var n=Node.ELEMENT_NODE,r=Object.prototype,t=r.toString,i=r.hasOwnProperty,e=function(n){return null==n?""+n:t.call(n).replace(/^\[object (.+)\]$/,"$1").toLowerCase()};function o(n){return"number"==typeof n}function u(n){return"string"==typeof n}function c(n){return"function"==typeof n}function a(n){return void 0===n}function f(n){return null===n}function s(n){return Array.isArray(n)}function l(n){return"object"==typeof n&&!s(n)&&!f(n)}function v(n){var r=!!n&&n.length,t=o(r)&&r>-1&&r%1==0;return!!(s(n)||!c(n)&&t)&&(!(r>0&&l(n))||r-1 in n)}function d(n){if(!n||!l(n)||"object"!==e(n))return!1;var r,t=n.constructor,o=t&&t.prototype,u=i.call(n,"constructor"),c=o&&i.call(o,"isPrototypeOf");if(t&&!u&&!c)return!1;for(r in n);return a(r)||i.call(n,r)}function h(n,r,t,i){if(a(i))return t?t[n]:r;t&&(t[n]=i)}var b=function(n,r){n&&n.removeAttribute(r)};function w(n,r){return h("scrollLeft",0,n,r)}function p(n,r){return h("scrollTop",0,n,r)}var m=/[^\x20\t\r\n\f]+/g,g=function(n,r){!function(n,r,t){var i,e=0,o=!1;if(n&&u(r)){var c=r.match(m)||[];for(o=c.length>0;i=c[e++];)o=!!t(n.classList,i)&&o}}(n,r,(function(n,r){return n.add(r)}))};function _(n,r){if(v(n))for(var t=0;t<n.length&&!1!==r(n[t],t,n);t++);else n&&_(Object.keys(n),(function(t){return r(n[t],t,n)}));return n}var y,x=function(n,r,t){return t||u(r)||!v(r)?n.push(r):Array.prototype.push.apply(n,r),n},z=function(n){if(Array.from)return Array.from(n);var r=[];return _(n,(function(n){x(r,n)})),r},O=function(n,r){var t=function(n){return n&&n(r)};n instanceof Set?n.forEach(t):_(n,t)},S=Element.prototype,j=function(r,t){var i,e;return i=r,e=window.Element,!(!i||!(e?i instanceof e:i.nodeType===n))&&(S.matches||S.msMatchesSelector).call(r,t)},A=function(n){return n?z(n.childNodes):[]},M=function(n,r,t){if(t){var i,e=r;n&&(v(t)?(i=document.createDocumentFragment(),_(t,(function(n){n===e&&(e=n.previousSibling),i.appendChild(n)}))):i=t,r&&(e?e!==r&&(e=e.nextSibling):e=n.firstChild),n.insertBefore(i,e))}},T=function(n,r){M(n,null,r)},k=function(n,r){M(n,n&&n.firstChild,r)},L=function n(r){if(v(r))_(z(r),(function(r){return n(r)}));else if(r){var t=(i=r)?i.parentElement:null;t&&t.removeChild(r)}var i},q=function(n){var r=document.createElement("div");return n&&function(n,r,t){if(a(t))return n?n.getAttribute(r):null;n&&n.setAttribute(r,t)}(r,"class",n),r},C=function(n){var r=q();return r.innerHTML=n.trim(),_(A(r),(function(n){return L(n)}))},F={w:0,h:0},I=function(){return{w:window.innerWidth,h:window.innerHeight}},N=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:F},P=function(n){return n.split(" ")},B=function(n,r,t,i){_(P(r),(function(r){n.removeEventListener(r,t,i)}))},E=function(n,r,t,i){var e=function(){if(void 0===y){y=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){y=!0}}))}catch(n){}}return y}(),o=e&&i&&i.o||!1,u=i&&i.u||!1,c=i&&i.s||!1,a=[],f=e?{passive:o,capture:u}:u;return _(P(r),(function(r){var i=c?function(e){n.removeEventListener(r,i,u),t&&t(e)}:t;x(a,B.bind(null,n,r,i,u)),n.addEventListener(r,i,f)})),O.bind(0,a)},V=function(n){return n.stopPropagation()},Y=function(n){return n.preventDefault()},$=function(n,r,t){if(n&&r){var i=!0;return _(t,(function(t){n[t]!==r[t]&&(i=!1)})),i}return!1},G=function(n,r){return $(n,r,["w","h"])},J=function(n,r){return $(n,r,["x","y"])},K=function(n,r){return $(n,r,["t","r","b","l"])},R=function(n,r){return Object.prototype.hasOwnProperty.call(n,r)},U=function(n){return n?Object.keys(n):[]};function W(n,r,t,i,e,o,u){var a=[r,t,i,e,o,u];return"object"==typeof n&&!f(n)||c(n)||(n={}),_(a,(function(r){_(U(r),(function(t){var i=r[t];if(n===i)return!0;var e=s(i);if(i&&(d(i)||e)){var o=n[t],u=o;e&&!s(o)?u=[]:e||d(o)||(u={}),n[t]=W(u,i)}else n[t]=i}))})),n}function X(n){for(var r in n)return!1;return!0}var D={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},H=function(n,r){var t=r?parseFloat(n):parseInt(n,10);return Number.isNaN(t)?0:t},Q=function(n,r,t){return null!=r?r.getPropertyValue(t):n.style[t]},Z=function(n,r,t){try{n&&void 0!==n.style[r]&&(n.style[r]=function(n,r){return!D[n.toLowerCase()]&&o(r)?r+"px":r}(r,t))}catch(i){}};function nn(n,r){var t=u(r);if(s(r)||t){var i=t?"":{};if(n){var e=window.getComputedStyle(n,null);i=t?Q(n,e,r):r.reduce((function(r,t){return r[t]=Q(n,e,t),r}),i)}return i}_(U(r),(function(t){return Z(n,t,r[t])}))}var rn={x:0,y:0},tn=function(n){var r=n?function(n){return n.getBoundingClientRect()}(n):0;return r?{x:r.left+window.pageYOffset,y:r.top+window.pageXOffset}:rn},en=function(n,r){var t,i=r||{},e=i.v,o=i.p;return function(r,i){var u=o,c=n(i,o,t),a=r||(e?!e(u,c):u!==c);return a&&(o=c,t=u),{m:o,g:t,_:a}}},on=function(n){return n.charAt(0).toUpperCase()+n.slice(1)},un=["-webkit-","-moz-","-o-","-ms-"],cn=["WebKit","Moz","O","MS","webkit","moz","o","ms"],an={},fn={},sn=function(n){var r=fn[n];if(R(fn,n))return r;var t=on(n),i=q().style;return _(un,(function(e){var o=e.replace(/-/g,""),u=[n,e+n,o+t,on(o)+t];return!(r=u.find((function(n){return void 0!==i[n]})))})),fn[n]=r,r},ln=function(n){var r=an[n]||window[n];return R(an,n)||(_(cn,(function(t){return!(r=r||window[t+on(n)])})),an[n]=r),r},vn=(ln("MutationObserver"),ln("IntersectionObserver")),dn=ln("ResizeObserver"),hn=ln("cancelAnimationFrame"),bn=ln("requestAnimationFrame");var wn=function(n){var r={exports:{}};return n(r,r.exports),r.exports}((function(n){function r(){return n.exports=r=Object.assign||function(n){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i])}return n},r.apply(this,arguments)}n.exports=r})),pn=JSON.stringify,mn=["__TPL_","_TYPE__"],gn=["boolean","number","string","array","object","function","null"].reduce((function(n,r){return n[r]=mn[0]+r+mn[1],n}),{}),_n=function(n,r,t,i){return function n(r,t,i,o,c){var f={},l=wn({},r);return _(U(t).filter((function(n){return R(r,n)})),(function(v){var h=a(i[v])?{}:i[v],b=r[v],w=t[v],p=d(w),m=c?c+".":"";if(p&&d(b)){var g=n(b,w,h,o,m+v);f[v]=g.O,l[v]=g.S,_([l,f],(function(n){X(n[v])&&delete n[v]}))}else if(!p){var y=!1,z=[],O=[],S=e(b);if(_(s(w)?w:[w],(function(n){var r;_(gn,(function(t,i){t===n&&(r=i)}));var t=void 0===r;if(t&&u(b)){var i=n.split(" ");y=!!i.find((function(n){return n===b})),x(z,i)}else y=gn[S]===n;return x(O,t?gn.string:r),!y})),y)(s(b)||d(b)?pn(b)!==pn(h):b!==h)&&(f[v]=b);else o&&console.warn('The option "'+m+v+"\" wasn't set, because it doesn't accept the type [ "+S.toUpperCase()+' ] with the value of "'+b+'".\r\nAccepted types are: [ '+O.join(", ").toUpperCase()+" ].\r\n"+(z.length>0?"\r\nValid strings are: [ "+z.join(", ")+" ].":""));delete l[v]}})),{S:l,O:f}}(n,r,t||{},i||!1)};var yn,xn=Math.abs,zn=Math.round,On=function(n,r){T(n,r);var t,i=(t=r)?{w:t.clientWidth,h:t.clientHeight}:F,e=N(r);return{x:e.h-i.h,y:e.w-i.w}},Sn=function(n){var r=!1;g(n,"os-viewport-scrollbar-styled");try{r="none"===nn(n,"scrollbar-width")||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(t){}return r},jn=function(n,r){nn(n,{overflowX:"hidden",overflowY:"hidden",direction:"rtl"}),w(n,0);var t=tn(n),i=tn(r);w(n,-999);var e=tn(r);return{i:t.x===i.x,n:i.x!==e.x}},An=function(n,r){g(n,"os-environment-flexbox-glue");var t=N(n),i=N(r),e=G(i,t);g(n,"os-environment-flexbox-glue-max");var o=N(n),u=N(r),c=G(u,o);return e&&c},Mn=function(){var n=window.screen.deviceXDPI||0,r=window.screen.logicalXDPI||1;return window.devicePixelRatio||n/r},Tn=function(){var n=document.body,r=C('<div class="os-environment"><div></div></div>')[0],t=r.firstChild,i=new Set,e=On(n,r),o={x:0===e.x,y:0===e.y},u={j:!1,A:e,M:o,T:Sn(r),k:jn(r,t),L:An(r,t),q:function(n){i.add(n)},C:function(n){i.delete(n)}};if(b(r,"style"),b(r,"class"),L(r),!o.x||!o.y){var c=I(),a=Mn(),f=e;window.addEventListener("resize",(function(){if(i.size){var t=I(),e={w:t.w-c.w,h:t.h-c.h};if(0===e.w&&0===e.h)return;var o={w:xn(e.w),h:xn(e.h)},u={w:xn(zn(t.w/(c.w/100))),h:xn(zn(t.h/(c.h/100)))},s=Mn(),l=o.w>2&&o.h>2,v=(h=u.h,b=xn(u.w),w=xn(h),!(b!==w&&b+1!==w&&b-1!==w));if(l&&v&&(s!==a&&a>0)){var d=yn.A=On(n,r);L(r),f.x===d.x&&f.y===d.y||O(i),f=d}c=t,a=s}var h,b,w}))}return u},kn=function(){return yn||(yn=Tn()),yn},Ln=function(n,r){return n&&r.split(".").reduce((function(n,r){return n&&R(n,r)?n[r]:void 0}),n)},qn=function(n,r,t){var i=function n(r){var t={F:{},I:{}};return _(U(r),(function(i){var e=r[i];if(s(e))t.F[i]=e[1],t.I[i]=e[0];else{var o=n(e);t.F[i]=o.F,t.I[i]=o.I}})),t}(n),e=i.F,o=W({},i.I,_n(r||{},e,null,!0).O),u=function(n){var r=n.N,i=n.P;t(!!r,(function(n){return{m:Ln(o,n),_:r||void 0!==Ln(i,n)}}))};return u({N:!0}),{I:function(n){if(n){var r=_n(n,e,o,!0).O;X(r)||(W(o,r),u({P:r}))}return o},B:function(n){u({N:n})}}},Cn={paddingAbsolute:[!1,gn.boolean],overflowBehavior:{x:["scroll","visible-hidden visible-scroll scroll hidden"],y:["scroll","visible-hidden visible-scroll scroll hidden"]}},Fn=sn("margin-inline-end"),In=sn("border-inline-end"),Nn=function(n,r){var t=n.host,i=n.padding,e=(n.viewport,n.content),o=[],u=kn(),c=u.M,a=u.T,f=(u.L,Fn&&In||a||c.y,en((function(){return u=nn(t,[r=(n="padding"||"")+"-top",i=n+"-right",e=n+"-bottom",o=n+"-left"]),{t:H(u[r]),r:H(u[i]),b:H(u[e]),l:H(u[o])};var n,r,i,e,o,u}),{v:K})),s=en((function(n){return{x:Math.max(0,Math.round(100*(n.V.w-n.Y.w))/100),y:Math.max(0,Math.round(100*(n.V.h-n.Y.h))/100)}}),{v:J}),l=qn(Cn,r,(function(n,r){var t=r("paddingAbsolute"),o=t.m,u=t._,c=f(n),a=c.m,l=c._;if(u||l){var v={t:0,r:0,b:0,l:0};o||(v.t=-a.t,v.r=-(a.r+a.l),v.b=-(a.b+a.t),v.l=-a.l),nn(i,{top:v.t,left:v.l,"margin-right":v.r,"margin-bottom":v.b,"max-width":"calc(100% + "+-1*v.r+"px)"})}var d,h=N(i),b=N(e),w=(d=e)?{w:d.scrollWidth,h:d.scrollHeight}:F,p=s(n,{V:w,Y:{w:h.w+Math.max(0,b.w-w.w),h:h.h+Math.max(0,b.h-w.h)}}),m=p.m,g=p._;console.log("overflowAmount",m),console.log("overflowAmountChanged",g)})),v=l.I,d=l.B;return{I:v,B:d,$:function(){d()},G:function(n,r){var t=r._,i=r.m;t&&nn(e,{height:i?"auto":"100%"})},J:function(){O(o)}}},Pn=function(n){return nn(n,"direction")},Bn=function(n,r,t){var i=t||{},e=i.K,o=void 0!==e&&e,c=i.R,a=void 0!==c&&c,f=kn().k,s=C('<div class="os-size-observer"><div class="os-size-observer-listener"></div></div>')[0],l=s.firstChild,v=function(n){if(o){var t="rtl"===Pn(s);w(s,t?f.n?-3333333:f.i?0:3333333:3333333),p(s,3333333)}r(u((n||{}).m)?n:void 0)},d=[],h=a?v:null;if(dn){var b=new dn(v);b.observe(l),x(d,(function(){return b.disconnect()}))}else{var m=C('<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>');T(l,m),g(l,"os-size-observer-listener-scroll");var _,y=m[0],z=y.lastChild,S=y.firstChild,j=null==S?void 0:S.firstChild,A=N(l),M=A,q=!1,F=function(){w(S,3333333),p(S,3333333),w(z,3333333),p(z,3333333)},I=function(){_=0,q&&(A=M,v())},P=function(n){return M=N(l),q=!n||!G(M,A),n&&q&&!_?(hn(_),_=bn(I)):n||I(),F(),n&&(Y(n),V(n)),!1};x(d,[E(S,"scroll",P),E(z,"scroll",P)]),nn(j,{width:3333333,height:3333333}),F(),h=a?function(){return P()}:F}if(o){var B=en((function(){return Pn(s)}));x(d,E(s,"scroll",(function(n){var r=B(),t=r.m;return r._&&(nn(l,"rtl"===t?{left:"auto",right:0}:{left:0,right:"auto"}),v(r)),Y(n),V(n),!1})))}return h&&(g(s,"os-size-observer-appear"),x(d,E(s,"animationstart",h))),k(n,s),function(){O(d),L(s)}},En=function(r){if(u=r,c=window.HTMLElement,u&&(c?u instanceof c:u.nodeType===n)){var t=j(r,"textarea")?q():r,i=q("os-padding"),e=q("os-viewport"),o=q("os-content");return T(i,e),T(e,o),T(o,A(r)),T(r,i),g(t,"os-host"),{target:r,host:t,padding:i,viewport:e,content:o}}var u,c,a=r.host,f=r.padding,s=r.viewport,l=r.content;return g(a,"os-host"),g(f,"os-padding"),g(s,"os-viewport"),g(l,"os-content"),r},Vn=function(n,r,t){var i=En(n),e=[],o=i.host;x(e,Nn(i));Bn(o,(function(n){_(e,n?function(r){r.U&&r.U(n)}:function(n){n.$&&n.$()})}),{R:!0,K:!0}),function(n,r){var t=C('<div class="os-trinsic-observer"></div>')[0],i=[],e=en((function(n){return 0===n.h||n.isIntersecting||n.intersectionRatio>0}),{p:!1});if(vn){var o=new vn((function(n){if(n&&n.length>0){var t=n.pop();if(t){var i=e(0,t);i._&&r(!1,i)}}}),{root:n});o.observe(t),x(i,(function(){return o.disconnect()}))}else x(i,Bn(t,(function(){var n=N(t),i=e(0,n);i._&&r(!1,i)})));k(n,t)}(o,(function(n,r){_(e,(function(t){t.G&&t.G(n,r)}))}))};return function(){return[kn(),Vn(document.body),C(' <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>')]}})); |