UNPKG

@scrollmeter/core

Version:

Scrollmeter is a lightweight JavaScript library that visually displays scroll progress on web pages.

4 lines (3 loc) 24.5 kB
"use strict";var gt=t=>{throw TypeError(t)};var lt=(t,e,n)=>e.has(t)||gt("Cannot "+n);var l=(t,e,n)=>(lt(t,e,"read from private field"),n?n.call(t):e.get(t)),h=(t,e,n)=>e.has(t)?gt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),u=(t,e,n,i)=>(lt(t,e,"write to private field"),i?i.call(t,n):e.set(t,n),n),pt=(t,e,n)=>(lt(t,e,"access private method"),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Ht(t,e){if(t.match(/^[a-z]+:\/\//i))return t;if(t.match(/^\/\//))return window.location.protocol+t;if(t.match(/^[a-z]+:/i))return t;const n=document.implementation.createHTMLDocument(),i=n.createElement("base"),o=n.createElement("a");return n.head.appendChild(i),n.body.appendChild(o),e&&(i.href=e),o.href=t,o.href}const kt=(()=>{let t=0;const e=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${e()}${t}`)})();function x(t){const e=[];for(let n=0,i=t.length;n<i;n++)e.push(t[n]);return e}function it(t,e){const i=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(e);return i?parseFloat(i.replace("px","")):0}function At(t){const e=it(t,"border-left-width"),n=it(t,"border-right-width");return t.clientWidth+e+n}function Dt(t){const e=it(t,"border-top-width"),n=it(t,"border-bottom-width");return t.clientHeight+e+n}function Pt(t,e={}){const n=e.width||At(t),i=e.height||Dt(t);return{width:n,height:i}}function Ft(){let t,e;try{e=process}catch{}const n=e&&e.env?e.env.devicePixelRatio:null;return n&&(t=parseInt(n,10),Number.isNaN(t)&&(t=1)),t||window.devicePixelRatio||1}const b=16384;function Bt(t){(t.width>b||t.height>b)&&(t.width>b&&t.height>b?t.width>t.height?(t.height*=b/t.width,t.width=b):(t.width*=b/t.height,t.height=b):t.width>b?(t.height*=b/t.width,t.width=b):(t.width*=b/t.height,t.height=b))}function nt(t){return new Promise((e,n)=>{const i=new Image;i.decode=()=>e(i),i.onload=()=>e(i),i.onerror=n,i.crossOrigin="anonymous",i.decoding="async",i.src=t})}async function Mt(t){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(t)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}async function Vt(t,e,n){const i="http://www.w3.org/2000/svg",o=document.createElementNS(i,"svg"),r=document.createElementNS(i,"foreignObject");return o.setAttribute("width",`${e}`),o.setAttribute("height",`${n}`),o.setAttribute("viewBox",`0 0 ${e} ${n}`),r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.setAttribute("x","0"),r.setAttribute("y","0"),r.setAttribute("externalResourcesRequired","true"),o.appendChild(r),r.appendChild(t),Mt(o)}const S=(t,e)=>{if(t instanceof e)return!0;const n=Object.getPrototypeOf(t);return n===null?!1:n.constructor.name===e.name||S(n,e)};function Wt(t){const e=t.getPropertyValue("content");return`${t.cssText} content: '${e.replace(/'|"/g,"")}';`}function Ut(t){return x(t).map(e=>{const n=t.getPropertyValue(e),i=t.getPropertyPriority(e);return`${e}: ${n}${i?" !important":""};`}).join(" ")}function zt(t,e,n){const i=`.${t}:${e}`,o=n.cssText?Wt(n):Ut(n);return document.createTextNode(`${i}{${o}}`)}function yt(t,e,n){const i=window.getComputedStyle(t,n),o=i.getPropertyValue("content");if(o===""||o==="none")return;const r=kt();try{e.className=`${e.className} ${r}`}catch{return}const s=document.createElement("style");s.appendChild(zt(r,n,i)),e.appendChild(s)}function qt(t,e){yt(t,e,":before"),yt(t,e,":after")}const wt="application/font-woff",_t="image/jpeg",jt={woff:wt,woff2:wt,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:_t,jpeg:_t,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function Gt(t){const e=/\.([^./]*?)$/g.exec(t);return e?e[1]:""}function ut(t){const e=Gt(t).toLowerCase();return jt[e]||""}function Xt(t){return t.split(/,/)[1]}function at(t){return t.search(/^(data:)/)!==-1}function Yt(t,e){return`data:${e};base64,${t}`}async function Rt(t,e,n){const i=await fetch(t,e);if(i.status===404)throw new Error(`Resource "${i.url}" not found`);const o=await i.blob();return new Promise((r,s)=>{const c=new FileReader;c.onerror=s,c.onloadend=()=>{try{r(n({res:i,result:c.result}))}catch(a){s(a)}},c.readAsDataURL(o)})}const ct={};function Jt(t,e,n){let i=t.replace(/\?.*/,"");return n&&(i=t),/ttf|otf|eot|woff2?/i.test(i)&&(i=i.replace(/.*\//,"")),e?`[${e}]${i}`:i}async function ht(t,e,n){const i=Jt(t,e,n.includeQueryParams);if(ct[i]!=null)return ct[i];n.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+new Date().getTime());let o;try{const r=await Rt(t,n.fetchRequestInit,({res:s,result:c})=>(e||(e=s.headers.get("Content-Type")||""),Xt(c)));o=Yt(r,e)}catch(r){o=n.imagePlaceholder||"";let s=`Failed to fetch resource: ${t}`;r&&(s=typeof r=="string"?r:r.message),s&&console.warn(s)}return ct[i]=o,o}async function Zt(t){const e=t.toDataURL();return e==="data:,"?t.cloneNode(!1):nt(e)}async function Kt(t,e){if(t.currentSrc){const r=document.createElement("canvas"),s=r.getContext("2d");r.width=t.clientWidth,r.height=t.clientHeight,s==null||s.drawImage(t,0,0,r.width,r.height);const c=r.toDataURL();return nt(c)}const n=t.poster,i=ut(n),o=await ht(n,i,e);return nt(o)}async function Qt(t){var e;try{if(!((e=t==null?void 0:t.contentDocument)===null||e===void 0)&&e.body)return await st(t.contentDocument.body,{},!0)}catch{}return t.cloneNode(!1)}async function Nt(t,e){return S(t,HTMLCanvasElement)?Zt(t):S(t,HTMLVideoElement)?Kt(t,e):S(t,HTMLIFrameElement)?Qt(t):t.cloneNode(!1)}const te=t=>t.tagName!=null&&t.tagName.toUpperCase()==="SLOT";async function ee(t,e,n){var i,o;let r=[];return te(t)&&t.assignedNodes?r=x(t.assignedNodes()):S(t,HTMLIFrameElement)&&(!((i=t.contentDocument)===null||i===void 0)&&i.body)?r=x(t.contentDocument.body.childNodes):r=x(((o=t.shadowRoot)!==null&&o!==void 0?o:t).childNodes),r.length===0||S(t,HTMLVideoElement)||await r.reduce((s,c)=>s.then(()=>st(c,n)).then(a=>{a&&e.appendChild(a)}),Promise.resolve()),e}function re(t,e){const n=e.style;if(!n)return;const i=window.getComputedStyle(t);i.cssText?(n.cssText=i.cssText,n.transformOrigin=i.transformOrigin):x(i).forEach(o=>{let r=i.getPropertyValue(o);o==="font-size"&&r.endsWith("px")&&(r=`${Math.floor(parseFloat(r.substring(0,r.length-2)))-.1}px`),S(t,HTMLIFrameElement)&&o==="display"&&r==="inline"&&(r="block"),o==="d"&&e.getAttribute("d")&&(r=`path(${e.getAttribute("d")})`),n.setProperty(o,r,i.getPropertyPriority(o))})}function ie(t,e){S(t,HTMLTextAreaElement)&&(e.innerHTML=t.value),S(t,HTMLInputElement)&&e.setAttribute("value",t.value)}function ne(t,e){if(S(t,HTMLSelectElement)){const n=e,i=Array.from(n.children).find(o=>t.value===o.getAttribute("value"));i&&i.setAttribute("selected","")}}function oe(t,e){return S(e,Element)&&(re(t,e),qt(t,e),ie(t,e),ne(t,e)),e}async function se(t,e){const n=t.querySelectorAll?t.querySelectorAll("use"):[];if(n.length===0)return t;const i={};for(let r=0;r<n.length;r++){const c=n[r].getAttribute("xlink:href");if(c){const a=t.querySelector(c),m=document.querySelector(c);!a&&m&&!i[c]&&(i[c]=await st(m,e,!0))}}const o=Object.values(i);if(o.length){const r="http://www.w3.org/1999/xhtml",s=document.createElementNS(r,"svg");s.setAttribute("xmlns",r),s.style.position="absolute",s.style.width="0",s.style.height="0",s.style.overflow="hidden",s.style.display="none";const c=document.createElementNS(r,"defs");s.appendChild(c);for(let a=0;a<o.length;a++)c.appendChild(o[a]);t.appendChild(s)}return t}async function st(t,e,n){return!n&&e.filter&&!e.filter(t)?null:Promise.resolve(t).then(i=>Nt(i,e)).then(i=>ee(t,i,e)).then(i=>oe(t,i)).then(i=>se(i,e))}const vt=/url\((['"]?)([^'"]+?)\1\)/g,le=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,ce=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function ae(t){const e=t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${e})(['"]?\\))`,"g")}function ue(t){const e=[];return t.replace(vt,(n,i,o)=>(e.push(o),n)),e.filter(n=>!at(n))}async function he(t,e,n,i,o){try{const r=n?Ht(e,n):e,s=ut(e);let c;return o||(c=await ht(r,s,i)),t.replace(ae(e),`$1${c}$3`)}catch{}return t}function me(t,{preferredFontFormat:e}){return e?t.replace(ce,n=>{for(;;){const[i,,o]=le.exec(n)||[];if(!o)return"";if(o===e)return`src: ${i};`}}):t}function $t(t){return t.search(vt)!==-1}async function It(t,e,n){if(!$t(t))return t;const i=me(t,n);return ue(i).reduce((r,s)=>r.then(c=>he(c,s,e,n)),Promise.resolve(i))}async function rt(t,e,n){var i;const o=(i=e.style)===null||i===void 0?void 0:i.getPropertyValue(t);if(o){const r=await It(o,null,n);return e.style.setProperty(t,r,e.style.getPropertyPriority(t)),!0}return!1}async function fe(t,e){await rt("background",t,e)||await rt("background-image",t,e),await rt("mask",t,e)||await rt("mask-image",t,e)}async function de(t,e){const n=S(t,HTMLImageElement);if(!(n&&!at(t.src))&&!(S(t,SVGImageElement)&&!at(t.href.baseVal)))return;const i=n?t.src:t.href.baseVal,o=await ht(i,ut(i),e);await new Promise((r,s)=>{t.onload=r,t.onerror=s;const c=t;c.decode&&(c.decode=r),c.loading==="lazy"&&(c.loading="eager"),n?(t.srcset="",t.src=o):t.href.baseVal=o})}async function ge(t,e){const i=x(t.childNodes).map(o=>Lt(o,e));await Promise.all(i).then(()=>t)}async function Lt(t,e){S(t,Element)&&(await fe(t,e),await de(t,e),await ge(t,e))}function pe(t,e){const{style:n}=t;e.backgroundColor&&(n.backgroundColor=e.backgroundColor),e.width&&(n.width=`${e.width}px`),e.height&&(n.height=`${e.height}px`);const i=e.style;return i!=null&&Object.keys(i).forEach(o=>{n[o]=i[o]}),t}const St={};async function Ct(t){let e=St[t];if(e!=null)return e;const i=await(await fetch(t)).text();return e={url:t,cssText:i},St[t]=e,e}async function bt(t,e){let n=t.cssText;const i=/url\(["']?([^"')]+)["']?\)/g,r=(n.match(/url\([^)]+\)/g)||[]).map(async s=>{let c=s.replace(i,"$1");return c.startsWith("https://")||(c=new URL(c,t.url).href),Rt(c,e.fetchRequestInit,({result:a})=>(n=n.replace(s,`url(${a})`),[s,a]))});return Promise.all(r).then(()=>n)}function Et(t){if(t==null)return[];const e=[],n=/(\/\*[\s\S]*?\*\/)/gi;let i=t.replace(n,"");const o=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const a=o.exec(i);if(a===null)break;e.push(a[0])}i=i.replace(o,"");const r=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,s="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",c=new RegExp(s,"gi");for(;;){let a=r.exec(i);if(a===null){if(a=c.exec(i),a===null)break;r.lastIndex=c.lastIndex}else c.lastIndex=r.lastIndex;e.push(a[0])}return e}async function ye(t,e){const n=[],i=[];return t.forEach(o=>{if("cssRules"in o)try{x(o.cssRules||[]).forEach((r,s)=>{if(r.type===CSSRule.IMPORT_RULE){let c=s+1;const a=r.href,m=Ct(a).then(g=>bt(g,e)).then(g=>Et(g).forEach(f=>{try{o.insertRule(f,f.startsWith("@import")?c+=1:o.cssRules.length)}catch(C){console.error("Error inserting rule from remote css",{rule:f,error:C})}})).catch(g=>{console.error("Error loading remote css",g.toString())});i.push(m)}})}catch(r){const s=t.find(c=>c.href==null)||document.styleSheets[0];o.href!=null&&i.push(Ct(o.href).then(c=>bt(c,e)).then(c=>Et(c).forEach(a=>{s.insertRule(a,o.cssRules.length)})).catch(c=>{console.error("Error loading remote stylesheet",c)})),console.error("Error inlining remote css file",r)}}),Promise.all(i).then(()=>(t.forEach(o=>{if("cssRules"in o)try{x(o.cssRules||[]).forEach(r=>{n.push(r)})}catch(r){console.error(`Error while reading CSS rules from ${o.href}`,r)}}),n))}function we(t){return t.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>$t(e.style.getPropertyValue("src")))}async function _e(t,e){if(t.ownerDocument==null)throw new Error("Provided element is not within a Document");const n=x(t.ownerDocument.styleSheets),i=await ye(n,e);return we(i)}async function Se(t,e){const n=await _e(t,e);return(await Promise.all(n.map(o=>{const r=o.parentStyleSheet?o.parentStyleSheet.href:null;return It(o.cssText,r,e)}))).join(` `)}async function Ce(t,e){const n=e.fontEmbedCSS!=null?e.fontEmbedCSS:e.skipFonts?null:await Se(t,e);if(n){const i=document.createElement("style"),o=document.createTextNode(n);i.appendChild(o),t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i)}}async function be(t,e={}){const{width:n,height:i}=Pt(t,e),o=await st(t,e,!0);return await Ce(o,e),await Lt(o,e),pe(o,e),await Vt(o,n,i)}async function Ee(t,e={}){const{width:n,height:i}=Pt(t,e),o=await be(t,e),r=await nt(o),s=document.createElement("canvas"),c=s.getContext("2d"),a=e.pixelRatio||Ft(),m=e.canvasWidth||n,g=e.canvasHeight||i;return s.width=m*a,s.height=g*a,e.skipAutoScale||Bt(s),s.style.width=`${m}`,s.style.height=`${g}`,e.backgroundColor&&(c.fillStyle=e.backgroundColor,c.fillRect(0,0,s.width,s.height)),c.drawImage(r,0,0,s.width,s.height),s}const xe="scrollmeter-module__scrollmeter_container___Jfedd",Te="scrollmeter-module__scrollmeter_container___Jfedd",Pe="scrollmeter-module__scrollmeter_bar___p8v2h",Re="scrollmeter-module__scrollmeter_bar___p8v2h",ve="scrollmeter-module__scrollmeter_timeline___he3FL",$e="scrollmeter-module__scrollmeter_timeline___he3FL",Ie="scrollmeter-module__scrollmeter_timeline_tooltip___6ORWv",Le="scrollmeter-module__scrollmeter_timeline_tooltip___6ORWv",Oe="scrollmeter-module__scrollmeter_timeline_tooltip_left___TU1Oc",He="scrollmeter-module__scrollmeter_timeline_tooltip_left___TU1Oc",ke="scrollmeter-module__scrollmeter_timeline_tooltip_right___ogXqk",Ae="scrollmeter-module__scrollmeter_timeline_tooltip_right___ogXqk",De="scrollmeter-module__scrollmeter_timeline_tooltip_center___rVCHc",Fe="scrollmeter-module__scrollmeter_timeline_tooltip_center___rVCHc",Be="scrollmeter-module__scrollmeter_timeline_preview___FqLou",Me="scrollmeter-module__scrollmeter_timeline_preview___FqLou",E={scrollmeter_container:xe,scrollmeterContainer:Te,scrollmeter_bar:Pe,scrollmeterBar:Re,scrollmeter_timeline:ve,scrollmeterTimeline:$e,scrollmeter_timeline_tooltip:Ie,scrollmeterTimelineTooltip:Le,scrollmeter_timeline_tooltip_left:Oe,scrollmeterTimelineTooltipLeft:He,scrollmeter_timeline_tooltip_right:ke,scrollmeterTimelineTooltipRight:Ae,scrollmeter_timeline_tooltip_center:De,scrollmeterTimelineTooltipCenter:Fe,scrollmeter_timeline_preview:Be,scrollmeterTimelinePreview:Me};class mt{}var _,W,U;class xt extends mt{constructor(n){super();h(this,_);h(this,W);h(this,U);u(this,W,(i,o=320)=>{const r=l(this,_).getCaptureCanvas(),s=l(this,_).getCanvasRatio();if(!r)return;const c=r.width,a=c*9/16,m=Math.max(0,i.getBoundingClientRect().top*s+window.scrollY*s-a/2),g=o*9/16,f=document.createElement("canvas");f.width=o,f.height=g;const C=f.getContext("2d");return C?(C.drawImage(r,0,Math.max(0,Math.min(m,r.height-a)),c,a,0,0,o,g),f.toDataURL()):null}),u(this,U,i=>{const o=document.createElement("div");o.classList.add(E.scrollmeter_timeline_preview);const r=new Image;return r.src=i,o.appendChild(r),o}),this.createTimelineTooltip=(i,o,r)=>{if(!o.textContent)return;const s=document.createElement("div"),c=document.createElement("p");if(l(this,_).getDefaultOptions().usePreview){const a=l(this,W).call(this,o);if(a){const m=l(this,U).call(this,a);s.appendChild(m)}}return s.classList.add(E.scrollmeter_timeline_tooltip),s.classList.add(E[`scrollmeter_timeline_tooltip_${r}`]),c.textContent=o.textContent,s.appendChild(c),this.setCSSCustomProperties(),i.appendChild(s),s},u(this,_,n)}setCSSCustomProperties(){var i,o,r,s,c,a;const n=l(this,_).getDefaultOptions();if(n&&n.tooltipOptions){const{background:m,fontColor:g,fontSize:f,paddingBlock:C,paddingInline:tt,width:et}=n.tooltipOptions;m&&((i=l(this,_).getScrollmeterContainer())==null||i.style.setProperty("--scrollmeter-tooltip-background",m)),g&&((o=l(this,_).getScrollmeterContainer())==null||o.style.setProperty("--scrollmeter-tooltip-font-color",g)),f&&((r=l(this,_).getScrollmeterContainer())==null||r.style.setProperty("--scrollmeter-tooltip-font-size",`${f}px`)),C&&((s=l(this,_).getScrollmeterContainer())==null||s.style.setProperty("--scrollmeter-tooltip-padding-block",`${C}px`)),tt&&((c=l(this,_).getScrollmeterContainer())==null||c.style.setProperty("--scrollmeter-tooltip-padding-inline",`${tt}px`)),et&&((a=l(this,_).getScrollmeterContainer())==null||a.style.setProperty("--scrollmeter-tooltip-width",`${et}px`))}}}_=new WeakMap,W=new WeakMap,U=new WeakMap;var w,z,ot,Ot;class Tt extends mt{constructor(n){super();h(this,ot);h(this,w);h(this,z);u(this,z,i=>{const o=[],r=s=>{s.tagName.toLowerCase()==="h1"&&pt(this,ot,Ot).call(this,s)&&o.push(s),Array.from(s.children).forEach(c=>{r(c)})};return r(i),o}),this.createTimeline=i=>{var a;const o=l(this,w).getTargetContainer();if(!o)return null;const r=l(this,z).call(this,o);if(r.length===0)return null;const s=((a=l(this,w).getDefaultOptions().timelineOptions)==null?void 0:a.width)??4;let c=r.length;return r.map(m=>{var dt;const g=l(this,w).getTargetContainer();if(!g)return;const f=document.createElement("div");f.classList.add(E.scrollmeter_timeline);const C=m.getBoundingClientRect().top+window.scrollY,tt=g.getBoundingClientRect().top+window.scrollY,et=C-tt,ft=g.clientHeight-document.documentElement.clientHeight;if(f.style.zIndex=i.toString(),f.addEventListener("pointerdown",()=>{m.scrollIntoView({behavior:"smooth"})}),ft>C){const V=et/ft*100;f.style.left=`${V>100?`calc(100% - ${s}px)`:`${V}%`}`,l(this,w).getDefaultOptions().useTooltip&&new xt(l(this,w)).createTimelineTooltip(f,m,V<=16?"left":V>=83?"right":"center")}else if(f.style.left=`calc(100% - ${s*(c--*4)}px)`,l(this,w).getDefaultOptions().useTooltip){const L=new xt(l(this,w)).createTimelineTooltip(f,m,"right");L.addEventListener("touchstart",function(){L.style.visibility="visible",L.style.opacity="1",setTimeout(()=>{L.style.visibility="hidden",L.style.opacity="0"},1e3)})}(dt=l(this,w).getScrollmeterContainer())==null||dt.appendChild(f)}),this.setCSSCustomProperties(),this},u(this,w,n)}setCSSCustomProperties(){var i,o;const n=l(this,w).getDefaultOptions();if(n&&n.timelineOptions){const{color:r,width:s}=n.timelineOptions;r&&((i=l(this,w).getScrollmeterContainer())==null||i.style.setProperty("--scrollmeter-timeline-color",r)),s&&((o=l(this,w).getScrollmeterContainer())==null||o.style.setProperty("--scrollmeter-timeline-width",`${s}px`))}}}w=new WeakMap,z=new WeakMap,ot=new WeakSet,Ot=function(n){const i=window.getComputedStyle(n);if(i.display==="none"||i.visibility==="hidden"||i.opacity==="0")return!1;let o=n.parentElement;for(;o;){const r=window.getComputedStyle(o);if(r.display==="none"||r.visibility==="hidden"||r.opacity==="0")return!1;o=o.parentElement}return!0};var y,d,p,T,P,R,O,H,k,A,D,v,F,B,$,q,j,G,M,I,X,Y,J,Z,K,Q,N;class Ve extends mt{constructor(n){super();h(this,y);h(this,d);h(this,p);h(this,T);h(this,P);h(this,R);h(this,O);h(this,H);h(this,k);h(this,A);h(this,D);h(this,v);h(this,F);h(this,B);h(this,$);h(this,q);h(this,j);h(this,G);h(this,M);h(this,I);h(this,X);h(this,Y);h(this,J);h(this,Z);h(this,K);h(this,Q);h(this,N);u(this,q,()=>{if(!l(this,d))throw new Error("targetContainer is not found");u(this,P,new ResizeObserver(async r=>{l(this,d)&&(!l(this,p)||l(this,H)===r[0].contentRect.height||(u(this,H,r[0].contentRect.height),this.render(l(this,y))))}))}),u(this,j,()=>{try{if(!l(this,d))throw new Error("targetContainer is not found");const r=document.createElement("div");r.classList.add(E.scrollmeter_container);const s=l(this,M).call(this,l(this,d));u(this,v,s),r.style.zIndex=s.toString();const c=l(this,G).call(this);return r.appendChild(c),u(this,p,r),this.setCSSCustomProperties(),r}catch(r){console.error(r)}}),u(this,G,()=>{const r=document.createElement("div");return r.classList.add(E.scrollmeter_bar),u(this,T,r),r}),u(this,M,r=>{let s=0;const c=window.getComputedStyle(r).zIndex;return c!=="auto"&&(s=Math.max(s,parseInt(c))),Array.from(r.children).forEach(a=>{s=Math.max(s,l(this,M).call(this,a))}),s+1}),u(this,I,()=>{if(!l(this,d)||!l(this,$))return;if(!l(this,J).call(this)){l(this,p).style.opacity="0";return}l(this,p).style.opacity="1";const c=(window.scrollY-l(this,D))/l(this,A)*100;u(this,k,Math.min(100,Math.max(0,c))),l(this,T)&&(l(this,T).style.width=`${l(this,k)}%`)}),u(this,X,(r,s)=>{let c=!1;return()=>{c||(r.apply(this),c=!0,setTimeout(()=>{c=!1},s))}}),u(this,Y,l(this,X).call(this,l(this,I),8)),u(this,J,()=>l(this,d)?l(this,d).getBoundingClientRect().top<=0&&l(this,d).getBoundingClientRect().bottom>0:!1),u(this,Z,(r,s)=>{let c=null;return(...a)=>{c&&clearTimeout(c),c=setTimeout(()=>{r.apply(this,a),c=null},s)}}),u(this,K,l(this,Z).call(this,async()=>{if(l(this,y).usePreview){await l(this,Q).call(this);const r=new Tt(this);u(this,R,r.createTimeline(l(this,v)))}},300)),u(this,Q,async()=>{if(l(this,d))try{const r=Math.max(document.documentElement.scrollWidth,document.documentElement.offsetWidth,document.documentElement.clientWidth),s=Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight);await new Promise(a=>setTimeout(a,100));const c=await Ee(document.documentElement,{width:r,height:s,filter:a=>{var m;return!(a instanceof HTMLElement&&((m=a.classList)!=null&&m.contains(E.scrollmeter_container)))},backgroundColor:getComputedStyle(document.body).backgroundColor||"#ffffff"});return u(this,F,r),u(this,B,c.width),u(this,O,c),c}catch(r){return console.error("미리보기 생성 중 오류 발생:",r),null}}),u(this,N,()=>{try{if(!l(this,d))throw new Error("targetContainer is not found");if(document.querySelectorAll(`.${E.scrollmeter_container}`).length>0)return null;if(!l(this,P))throw new Error("resizeObserver is not found");const s=l(this,j).call(this);if(!s)throw new Error("scrollmetercontainer is not found");l(this,d).appendChild(s),l(this,P).observe(l(this,d)),new IntersectionObserver(a=>{a.forEach(m=>{m.isIntersecting?(u(this,$,!0),l(this,I).call(this)):u(this,$,!1)})}).observe(l(this,d)),window.addEventListener("scroll",l(this,Y))}catch(r){console.error(r)}}),this.setCSSCustomProperties=()=>{if(l(this,p)&&l(this,y).barOptions){const{color:r,background:s,height:c}=l(this,y).barOptions;r&&l(this,p).style.setProperty("--scrollmeter-bar-color",r),s&&l(this,p).style.setProperty("--scrollmeter-bar-background",s),c&&l(this,p).style.setProperty("--scrollmeter-bar-height",`${c}px`)}},this.getTargetContainer=()=>l(this,d),this.getScrollmeterContainer=()=>l(this,p),this.getCaptureCanvas=()=>l(this,O)||null,this.getCanvasRatio=()=>l(this,B)/l(this,F),this.getDefaultOptions=()=>l(this,y),this.render=r=>{u(this,y,{...l(this,y),...r});const s=parseInt(window.getComputedStyle(l(this,d)).marginTop),c=parseInt(window.getComputedStyle(l(this,d)).marginBottom);if(u(this,D,window.scrollY+l(this,d).getBoundingClientRect().top),u(this,A,l(this,d).clientHeight+s+c-document.documentElement.clientHeight),l(this,I).call(this),l(this,y).useTimeline)if(document.querySelectorAll(`.${E.scrollmeter_timeline}`).forEach(a=>{a.remove()}),l(this,y).usePreview)l(this,K).call(this);else{const a=new Tt(this);u(this,R,a.createTimeline(l(this,v)))}},this.updateScrollmeterStyle=r=>{var s;if(u(this,y,{...l(this,y),...r}),this.setCSSCustomProperties(),(s=l(this,R))==null||s.setCSSCustomProperties(),l(this,y)&&l(this,y).tooltipOptions){const{background:c,fontColor:a,fontSize:m,paddingBlock:g,paddingInline:f,width:C}=l(this,y).tooltipOptions;c&&l(this,p).style.setProperty("--scrollmeter-tooltip-background",c),a&&l(this,p).style.setProperty("--scrollmeter-tooltip-font-color",a),m&&l(this,p).style.setProperty("--scrollmeter-tooltip-font-size",`${m}px`),g&&l(this,p).style.setProperty("--scrollmeter-tooltip-padding-block",`${g}px`),f&&l(this,p).style.setProperty("--scrollmeter-tooltip-padding-inline",`${f}px`),C&&l(this,p).style.setProperty("--scrollmeter-tooltip-width",`${C}px`)}};const{targetId:i,target:o}=n;u(this,y,n),u(this,d,i?document.getElementById(i):typeof o=="string"?document.getElementById(o):o??null),u(this,p,null),u(this,T,null),u(this,P,null),u(this,O,null),u(this,R,null),u(this,H,0),u(this,k,0),u(this,A,0),u(this,D,0),u(this,v,0),u(this,F,0),u(this,B,0),u(this,$,!1),l(this,q).call(this),l(this,N).call(this)}}y=new WeakMap,d=new WeakMap,p=new WeakMap,T=new WeakMap,P=new WeakMap,R=new WeakMap,O=new WeakMap,H=new WeakMap,k=new WeakMap,A=new WeakMap,D=new WeakMap,v=new WeakMap,F=new WeakMap,B=new WeakMap,$=new WeakMap,q=new WeakMap,j=new WeakMap,G=new WeakMap,M=new WeakMap,I=new WeakMap,X=new WeakMap,Y=new WeakMap,J=new WeakMap,Z=new WeakMap,K=new WeakMap,Q=new WeakMap,N=new WeakMap;const We=t=>{try{return new Ve(t)}catch(e){return console.error(e),null}};exports.createScrollmeter=We; //# sourceMappingURL=index.cjs.map