mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-22 20:20:37 +03:00
1 line
5.6 KiB
JavaScript
1 line
5.6 KiB
JavaScript
function e(e){return"number"==typeof e}function t(e){return"string"==typeof e}function r(e){return Array.isArray(e)}function n(t){const n=!!t&&t.length;return r(t)||!function(e){return"function"==typeof e}(t)&&e(n)&&n>-1&&n%1==0}function o(e,t){return function(e,t,r,n){if(void 0===n)return r?r[e]:t;r&&(r[e]=n)}("scrollLeft",0,e,t)}const i=/[^\x20\t\r\n\f]+/g,s=(e,r)=>{((e,r,n)=>{let o,s=0,l=!1;if(e&&t(r)){const t=r.match(i)||[];for(l=t.length>0;o=t[s++];)l=n(e.classList,o)&&l}})(e,r,(e,t)=>e.add(t))};function l(e,t){if(n(e))for(let r=0;r<e.length&&!1!==t(e[r],r,e);r++);else e&&l(Object.keys(e),r=>t(e[r],r,e));return e}const a=e=>{if(Array.from)return Array.from(e);const t=[];return l(e,e=>{t.push(e)}),t},c=(e,t)=>{((e,t,r)=>{if(r){let o,i=t;e&&(n(r)?(o=document.createDocumentFragment(),l(r,e=>{e===i&&(i=e.previousSibling),o.appendChild(e)})):o=r,t&&(i?i!==t&&(i=i.nextSibling):i=e.firstChild),e.insertBefore(o,i))}})(e,null,t)},d=e=>{if(n(e))l(a(e),e=>d(e));else if(e){const r=(t=e)?t.parentElement:null;r&&r.removeChild(e)}var t},u=e=>{const t=document.createElement("div");return t.innerHTML=e.trim(),l((r=t)?a(r.childNodes):[],e=>d(e));var r},v={w:0,h:0},f=()=>({w:window.innerWidth,h:window.innerHeight}),h={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},w=(e,t,r)=>null!=t?t.getPropertyValue(r):e.style[r],p=(t,r,n)=>{try{t&&void 0!==t.style[r]&&(t.style[r]=((t,r)=>!h[t.toLowerCase()]&&e(r)?r+"px":r)(r,n))}catch(o){}};function y(e,n){const o=t(n);if(r(n)||o){let t=o?"":{};if(e){const r=window.getComputedStyle(e,null);t=o?w(e,r,n):n.reduce((t,n)=>(t[n]=w(e,r,n),t),t)}return t}var i;l((i=n)?Object.keys(i):[],t=>p(e,t,n[t]))}const b={x:0,y:0},g=e=>{const t=e?(e=>e.getBoundingClientRect())(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:b};var m=function(e,t){var r=t.get(e);if(!r)throw new TypeError("attempted to get private field on non-instance");return r.get?r.get.call(e):r.value};var x=function(e,t,r){var n=t.get(e);if(!n)throw new TypeError("attempted to set private field on non-instance");if(n.set)n.set.call(e,r);else{if(!n.writable)throw new TypeError("attempted to set read only private field");n.value=r}return r};const S=["WebKit","Moz","O","MS","webkit","moz","o","ms"],z={},O=e=>{let t=z[e]||window[e];return r=z,n=e,Object.prototype.hasOwnProperty.call(r,n)||(l(S,r=>{var n;return t=t||window[r+(n=e,n.charAt(0).toUpperCase()+n.slice(1))],!t}),z[e]=t),t;var r,n};O("ResizeObserver");!function(e,t,r){e(r={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&r.path)}},r.exports),r.exports}((function(e){function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},t.apply(this,arguments)}e.exports=t}));const E=["__TPL_","_TYPE__"],{abs:P,round:L}=(["boolean","number","string","array","object","function","null"].reduce((e,t)=>(e[t]=E[0]+t+E[1],e),{}),Math),C=(e,t)=>{c(e,t);const r=(n=t)?{w:n.clientWidth,h:n.clientHeight}:v;var n;const o=(e=>e?{w:e.offsetWidth,h:e.offsetHeight}:v)(t);return{x:o.h-r.h,y:o.w-r.w}},j=()=>{const e=window.screen.deviceXDPI||0,t=window.screen.logicalXDPI||1;return window.devicePixelRatio||e/t};var k=new WeakMap;class A{constructor(){k.set(this,{writable:!0,value:void 0}),x(this,k,new Set);const e=this,{body:t}=document,r=u('<div id="os-dummy-scrollbar-size"><div></div></div>')[0],n=r.firstChild,i=C(t,r),l={x:0===i.x,y:0===i.y};var a,c;if(e.autoUpdateLoop=!1,e.nativeScrollbarSize=i,e.nativeScrollbarIsOverlaid=l,e.nativeScrollbarStyling=(e=>{let t=!1;s(e,"os-viewport-native-scrollbars-invisible");try{t="none"===y(e,"scrollbar-width")||"none"===window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")}catch(r){}return t})(r),e.rtlScrollBehavior=((e,t)=>{y(e,{overflowX:"hidden",overflowY:"hidden"}),o(e,0);const r=g(e),n=g(t);o(e,-999);const i=g(t);return{i:r.x===n.x,n:n.x!==i.x}})(r,n),e.supportPassiveEvents=(()=>{let e=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){e=!0}}))}catch(t){}return e})(),e.supportResizeObserver=!!O("ResizeObserver"),c="style",null==(a=r)||a.removeAttribute(c),d(r),!l.x||!l.y){let n=f(),o=j();const i=m(this,k);window.addEventListener("resize",()=>{if(i.size){const s=f(),l={w:s.w-n.w,h:s.h-n.h};if(0===l.w&&0===l.h)return;const a={w:P(l.w),h:P(l.h)},c={w:P(L(s.w/(n.w/100))),h:P(L(s.h/(n.h/100)))},u=j(),v=a.w>2&&a.h>2,h=!((e,t)=>{const r=P(e),n=P(t);return!(r===n||r+1===n||r-1===n)})(c.w,c.h),w=u!==o&&o>0,p=v&&h&&w,y=e.nativeScrollbarSize;let b;p&&(b=e.nativeScrollbarSize=C(t,r),d(r),y.x===b.x&&y.y===b.y||i.forEach(t=>t&&t(e))),n=s,o=u}})}}addListener(e){m(this,k).add(e)}removeListener(e){m(this,k).delete(e)}}export default()=>[new A,u(' <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>')]; |