@netless/window-manager 1.0.17-beta.0 → 1.0.17-beta.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/dist/app-docs-viewer.js +4 -0
- package/dist/app-docs-viewer.js.map +1 -0
- package/dist/app-media-player.js +31 -0
- package/dist/app-media-player.js.map +1 -0
- package/dist/app-presentation.js +2 -0
- package/dist/app-presentation.js.map +1 -0
- package/dist/app-presentation.mjs +254 -5421
- package/dist/app-presentation.mjs.map +1 -1
- package/dist/index.js +5 -55
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Qt(e){if(e&&e.__esModule)return e;var t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});return e&&Object.keys(e).forEach(function(r){if(r!=="default"){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var er=Object.create,ke=Object.defineProperty,tr=Object.defineProperties,rr=Object.getOwnPropertyDescriptor,ar=Object.getOwnPropertyDescriptors,nt=Object.getOwnPropertyNames,Ge=Object.getOwnPropertySymbols,nr=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty,or=Object.prototype.propertyIsEnumerable,Je=(e,t,r)=>t in e?ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ir=(e,t)=>{for(var r in t||(t={}))ot.call(t,r)&&Je(e,r,t[r]);if(Ge)for(var r of Ge(t))or.call(t,r)&&Je(e,r,t[r]);return e},sr=(e,t)=>tr(e,ar(t)),M=(e,t)=>function(){return t||(0,e[nt(e)[0]])((t={exports:{}}).exports,t),t.exports},lr=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of nt(t))!ot.call(e,n)&&n!==r&&ke(e,n,{get:()=>t[n],enumerable:!(a=rr(t,n))||a.enumerable});return e},Me=(e,t,r)=>(r=e!=null?er(nr(e)):{},lr(!e||!e.__esModule?ke(r,"default",{value:e,enumerable:!0}):r,e)),it=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js"(e,t){function r(a){var n=typeof a;return a!=null&&(n=="object"||n=="function")}t.exports=r}}),cr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js"(e,t){var r=typeof global=="object"&&global&&global.Object===Object&&global;t.exports=r}}),st=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js"(e,t){var r=cr(),a=typeof self=="object"&&self&&self.Object===Object&&self,n=r||a||Function("return this")();t.exports=n}}),dr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js"(e,t){var r=st(),a=function(){return r.Date.now()};t.exports=a}}),pr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js"(e,t){var r=/\s/;function a(n){for(var o=n.length;o--&&r.test(n.charAt(o)););return o}t.exports=a}}),hr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js"(e,t){var r=pr(),a=/^\s+/;function n(o){return o&&o.slice(0,r(o)+1).replace(a,"")}t.exports=n}}),lt=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js"(e,t){var r=st(),a=r.Symbol;t.exports=a}}),ur=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js"(e,t){var r=lt(),a=Object.prototype,n=a.hasOwnProperty,o=a.toString,i=r?r.toStringTag:void 0;function h(d){var g=n.call(d,i),l=d[i];try{d[i]=void 0;var p=!0}catch{}var _=o.call(d);return p&&(g?d[i]=l:delete d[i]),_}t.exports=h}}),gr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js"(e,t){var r=Object.prototype,a=r.toString;function n(o){return a.call(o)}t.exports=n}}),ct=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js"(e,t){var r=lt(),a=ur(),n=gr(),o="[object Null]",i="[object Undefined]",h=r?r.toStringTag:void 0;function d(g){return g==null?g===void 0?i:o:h&&h in Object(g)?a(g):n(g)}t.exports=d}}),dt=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js"(e,t){function r(a){return a!=null&&typeof a=="object"}t.exports=r}}),fr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js"(e,t){var r=ct(),a=dt(),n="[object Symbol]";function o(i){return typeof i=="symbol"||a(i)&&r(i)==n}t.exports=o}}),vr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js"(e,t){var r=hr(),a=it(),n=fr(),o=0/0,i=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,d=/^0o[0-7]+$/i,g=parseInt;function l(p){if(typeof p=="number")return p;if(n(p))return o;if(a(p)){var _=typeof p.valueOf=="function"?p.valueOf():p;p=a(_)?_+"":_}if(typeof p!="string")return p===0?p:+p;p=r(p);var m=h.test(p);return m||d.test(p)?g(p.slice(2),m?2:8):i.test(p)?o:+p}t.exports=l}}),pt=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js"(e,t){var r=it(),a=dr(),n=vr(),o="Expected a function",i=Math.max,h=Math.min;function d(g,l,p){var _,m,P,v,S,x,k=0,W=!1,U=!1,G=!0;if(typeof g!="function")throw new TypeError(o);l=n(l)||0,r(p)&&(W=!!p.leading,U="maxWait"in p,P=U?i(n(p.maxWait)||0,l):P,G="trailing"in p?!!p.trailing:G);function ae(C){var N=_,H=m;return _=m=void 0,k=C,v=g.apply(H,N),v}function J(C){return k=C,S=setTimeout($,l),W?ae(C):v}function ne(C){var N=C-x,H=C-k,T=l-N;return U?h(T,P-H):T}function Z(C){var N=C-x,H=C-k;return x===void 0||N>=l||N<0||U&&H>=P}function $(){var C=a();if(Z(C))return oe(C);S=setTimeout($,ne(C))}function oe(C){return S=void 0,G&&_?ae(C):(_=m=void 0,v)}function I(){S!==void 0&&clearTimeout(S),k=0,_=x=m=S=void 0}function ie(){return S===void 0?v:oe(a())}function K(){var C=a(),N=Z(C);if(_=arguments,m=this,x=C,N){if(S===void 0)return J(x);if(U)return clearTimeout(S),S=setTimeout($,l),ae(x)}return S===void 0&&(S=setTimeout($,l)),v}return K.cancel=I,K.flush=ie,K}t.exports=d}}),mr=M({"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isNumber.js"(e,t){var r=ct(),a=dt(),n="[object Number]";function o(i){return typeof i=="number"||a(i)&&r(i)==n}t.exports=o}}),le=e=>!!(e&&e.constructor&&e.call&&e.apply),br=e=>le(e)||le(e==null?void 0:e.dispose);function ht(e){try{e&&(le(e.dispose)?e.dispose():le(e)&&e())}catch(t){console.error(t)}}var wr=e=>br(e)&&le(e.abortable);function ut(e){function t(){var r,a;t._i||(t._i=1,(r=t._d)==null||r.forEach(ht),(a=t._d)==null||a.clear(),t._i=0)}return t._i=0,t.dispose=t,t.size=Ir,t.has=Sr,t.add=_r,t.make=xr,t.remove=Cr,t.flush=yr,t}function Ze(e){var t,r;(t=this._d)!=null&&t.has(e)||(((r=this._d)!=null?r:this._d=new Set).add(e),wr(e)&&e.abortable(()=>this.remove(e)))}function _r(e){return Array.isArray(e)?e.forEach(Ze,this):Ze.call(this,e),e}function yr(e){e?this.remove(e)&&ht(e):this.dispose()}function Sr(e){var t;return((t=this._d)==null?void 0:t.has(e))||!1}function xr(e){const t=e();return t&&this.add(t)}function Cr(e){var t;return((t=this._d)==null?void 0:t.delete(e))||!1}function Ir(){var e;return((e=this._d)==null?void 0:e.size)||0}function Pr(e,t,r,a){return e.addEventListener(t,r,a),()=>e.removeEventListener(t,r,a)}var j=Pr,R=typeof window!="undefined",gt=R&&!("onscroll"in window)||typeof navigator!="undefined"&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),ft=R&&window.devicePixelRatio>1,Or={elements_selector:".lazy",container:gt||R?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_bg_set:"bg-set",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},vt=e=>Object.assign({},Or,e),Ke=function(e,t){let r;const a="LazyLoad::Initialized",n=new e(t);try{r=new CustomEvent(a,{detail:{instance:n}})}catch{r=document.createEvent("CustomEvent"),r.initCustomEvent(a,!1,!1,{instance:n})}window.dispatchEvent(r)},Er=(e,t)=>{if(!!t)if(!t.length)Ke(e,t);else for(let r=0,a;a=t[r];r+=1)Ke(e,a)},X="src",De="srcset",Le="sizes",mt="poster",de="llOriginalAttrs",bt="data",Te="loading",wt="loaded",_t="applied",kr="entered",Ne="error",yt="native",St="data-",xt="ll-status",L=(e,t)=>e.getAttribute(St+t),Mr=(e,t,r)=>{const a=St+t;if(r===null){e.removeAttribute(a);return}e.setAttribute(a,r)},pe=e=>L(e,xt),F=(e,t)=>Mr(e,xt,t),me=e=>F(e,null),Ae=e=>pe(e)===null,Dr=e=>pe(e)===Te,Lr=e=>pe(e)===Ne,je=e=>pe(e)===yt,Tr=[Te,wt,_t,Ne],Nr=e=>Tr.indexOf(pe(e))>=0,V=(e,t,r,a)=>{if(!(!e||typeof e!="function")){if(a!==void 0){e(t,r,a);return}if(r!==void 0){e(t,r);return}e(t)}},re=(e,t)=>{!R||t!==""&&e.classList.add(t)},z=(e,t)=>{!R||t!==""&&e.classList.remove(t)},Ar=e=>{e.llTempImage=document.createElement("IMG")},jr=e=>{delete e.llTempImage},Ct=e=>e.llTempImage,be=(e,t)=>{if(!t)return;const r=t._observer;!r||r.unobserve(e)},zr=e=>{e.disconnect()},Xr=(e,t,r)=>{t.unobserve_entered&&be(e,r)},ze=(e,t)=>{!e||(e.loadingCount+=t)},$r=e=>{!e||(e.toLoadCount-=1)},It=(e,t)=>{!e||(e.toLoadCount=t)},Yr=e=>e.loadingCount>0,Rr=e=>e.toLoadCount>0,Pt=e=>{let t=[];for(let r=0,a;a=e.children[r];r+=1)a.tagName==="SOURCE"&&t.push(a);return t},Xe=(e,t)=>{const r=e.parentNode;if(!r||r.tagName!=="PICTURE")return;Pt(r).forEach(t)},Ot=(e,t)=>{Pt(e).forEach(t)},we=[X],Et=[X,mt],ce=[X,De,Le],kt=[bt],_e=e=>!!e[de],Mt=e=>e[de],Dt=e=>delete e[de],te=(e,t)=>{if(_e(e))return;const r={};t.forEach(a=>{r[a]=e.getAttribute(a)}),e[de]=r},Vr=e=>{_e(e)||(e[de]={backgroundImage:e.style.backgroundImage})},Wr=(e,t,r)=>{if(!r){e.removeAttribute(t);return}e.setAttribute(t,r)},q=(e,t)=>{if(!_e(e))return;const r=Mt(e);t.forEach(a=>{Wr(e,a,r[a])})},Ur=e=>{if(!_e(e))return;const t=Mt(e);e.style.backgroundImage=t.backgroundImage},Lt=(e,t,r)=>{re(e,t.class_applied),F(e,_t),r&&(t.unobserve_completed&&be(e,t),V(t.callback_applied,e,r))},Tt=(e,t,r)=>{re(e,t.class_loading),F(e,Te),r&&(ze(r,1),V(t.callback_loading,e,r))},Y=(e,t,r)=>{!r||e.setAttribute(t,r)},Qe=(e,t)=>{Y(e,Le,L(e,t.data_sizes)),Y(e,De,L(e,t.data_srcset)),Y(e,X,L(e,t.data_src))},Hr=(e,t)=>{Xe(e,r=>{te(r,ce),Qe(r,t)}),te(e,ce),Qe(e,t)},Br=(e,t)=>{te(e,we),Y(e,X,L(e,t.data_src))},qr=(e,t)=>{Ot(e,r=>{te(r,we),Y(r,X,L(r,t.data_src))}),te(e,Et),Y(e,mt,L(e,t.data_poster)),Y(e,X,L(e,t.data_src)),e.load()},Fr=(e,t)=>{te(e,kt),Y(e,bt,L(e,t.data_src))},Gr=(e,t,r)=>{const a=L(e,t.data_bg),n=L(e,t.data_bg_hidpi),o=ft&&n?n:a;!o||(e.style.backgroundImage=`url("${o}")`,Ct(e).setAttribute(X,o),Tt(e,t,r))},Jr=(e,t,r)=>{const a=L(e,t.data_bg_multi),n=L(e,t.data_bg_multi_hidpi),o=ft&&n?n:a;!o||(e.style.backgroundImage=o,Lt(e,t,r))},Zr=(e,t,r)=>{const a=L(e,t.data_bg_set);if(!a)return;const n=a.split("|");let o=n.map(i=>`image-set(${i})`);e.style.backgroundImage=o.join(),e.style.backgroundImage===""&&(o=n.map(i=>`-webkit-image-set(${i})`),e.style.backgroundImage=o.join()),Lt(e,t,r)},Nt={IMG:Hr,IFRAME:Br,VIDEO:qr,OBJECT:Fr},Kr=(e,t)=>{const r=Nt[e.tagName];!r||r(e,t)},Qr=(e,t,r)=>{const a=Nt[e.tagName];!a||(a(e,t),Tt(e,t,r))},ea=["IMG","IFRAME","VIDEO","OBJECT"],ta=e=>ea.indexOf(e.tagName)>-1,At=(e,t)=>{t&&!Yr(t)&&!Rr(t)&&V(e.callback_finish,t)},et=(e,t,r)=>{e.addEventListener(t,r),e.llEvLisnrs[t]=r},ra=(e,t,r)=>{e.removeEventListener(t,r)},$e=e=>!!e.llEvLisnrs,aa=(e,t,r)=>{$e(e)||(e.llEvLisnrs={});const a=e.tagName==="VIDEO"?"loadeddata":"load";et(e,a,t),et(e,"error",r)},Oe=e=>{if(!$e(e))return;const t=e.llEvLisnrs;for(let r in t){const a=t[r];ra(e,r,a)}delete e.llEvLisnrs},jt=(e,t,r)=>{jr(e),ze(r,-1),$r(r),z(e,t.class_loading),t.unobserve_completed&&be(e,r)},na=(e,t,r,a)=>{const n=je(t);jt(t,r,a),re(t,r.class_loaded),F(t,wt),V(r.callback_loaded,t,a),n||At(r,a)},oa=(e,t,r,a)=>{const n=je(t);jt(t,r,a),re(t,r.class_error),F(t,Ne),V(r.callback_error,t,a),r.restore_on_error&&q(t,ce),n||At(r,a)},Ye=(e,t,r)=>{const a=Ct(e)||e;if($e(a))return;aa(a,i=>{na(i,e,t,r),Oe(a)},i=>{oa(i,e,t,r),Oe(a)})},ia=(e,t,r)=>{Ar(e),Ye(e,t,r),Vr(e),Gr(e,t,r),Jr(e,t,r),Zr(e,t,r)},sa=(e,t,r)=>{Ye(e,t,r),Qr(e,t,r)},Re=(e,t,r)=>{ta(e)?sa(e,t,r):ia(e,t,r)},la=(e,t,r)=>{e.setAttribute("loading","lazy"),Ye(e,t,r),Kr(e,t),F(e,yt)},tt=e=>{e.removeAttribute(X),e.removeAttribute(De),e.removeAttribute(Le)},ca=e=>{Xe(e,t=>{tt(t)}),tt(e)},zt=e=>{Xe(e,t=>{q(t,ce)}),q(e,ce)},da=e=>{Ot(e,t=>{q(t,we)}),q(e,Et),e.load()},pa=e=>{q(e,we)},ha=e=>{q(e,kt)},ua={IMG:zt,IFRAME:pa,VIDEO:da,OBJECT:ha},ga=e=>{const t=ua[e.tagName];if(!t){Ur(e);return}t(e)},fa=(e,t)=>{Ae(e)||je(e)||(z(e,t.class_entered),z(e,t.class_exited),z(e,t.class_applied),z(e,t.class_loading),z(e,t.class_loaded),z(e,t.class_error))},va=(e,t)=>{ga(e),fa(e,t),me(e),Dt(e)},ma=(e,t,r,a)=>{!r.cancel_on_exit||!Dr(e)||e.tagName==="IMG"&&(Oe(e),ca(e),zt(e),z(e,r.class_loading),ze(a,-1),me(e),V(r.callback_cancel,e,t,a))},ba=(e,t,r,a)=>{const n=Nr(e);F(e,kr),re(e,r.class_entered),z(e,r.class_exited),Xr(e,r,a),V(r.callback_enter,e,t,a),!n&&Re(e,r,a)},wa=(e,t,r,a)=>{Ae(e)||(re(e,r.class_exited),ma(e,t,r,a),V(r.callback_exit,e,t,a))},_a=["IMG","IFRAME","VIDEO"],Xt=e=>e.use_native&&"loading"in HTMLImageElement.prototype,ya=(e,t,r)=>{e.forEach(a=>{_a.indexOf(a.tagName)!==-1&&la(a,t,r)}),It(r,0)},Sa=e=>e.isIntersecting||e.intersectionRatio>0,xa=e=>({root:e.container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}),Ca=(e,t,r)=>{e.forEach(a=>Sa(a)?ba(a.target,a,t,r):wa(a.target,a,t,r))},Ia=(e,t)=>{t.forEach(r=>{e.observe(r)})},Pa=(e,t)=>{zr(e),Ia(e,t)},Oa=(e,t)=>{Xt(e)||(t._observer=new IntersectionObserver(r=>{Ca(r,e,t)},xa(e)))},$t=e=>Array.prototype.slice.call(e),ve=e=>e.container.querySelectorAll(e.elements_selector),Ea=e=>$t(e).filter(Ae),ka=e=>Lr(e),Ma=e=>$t(e).filter(ka),rt=(e,t)=>Ea(e||ve(t)),Da=(e,t)=>{Ma(ve(e)).forEach(a=>{z(a,e.class_error),me(a)}),t.update()},La=(e,t)=>{!R||(t._onlineHandler=()=>{Da(e,t)},window.addEventListener("online",t._onlineHandler))},Ta=e=>{!R||window.removeEventListener("online",e._onlineHandler)},he=function(e,t){const r=vt(e);this._settings=r,this.loadingCount=0,Oa(r,this),La(r,this),this.update(t)};he.prototype={update:function(e){const t=this._settings,r=rt(e,t);if(It(this,r.length),gt){this.loadAll(r);return}if(Xt(t)){ya(r,t,this);return}Pa(this._observer,r)},destroy:function(){this._observer&&this._observer.disconnect(),Ta(this),ve(this._settings).forEach(e=>{Dt(e)}),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){const t=this._settings;rt(e,t).forEach(a=>{be(a,this),Re(a,t,this)})},restoreAll:function(){const e=this._settings;ve(e).forEach(t=>{va(t,e)})}};he.load=(e,t)=>{const r=vt(t);Re(e,r)};he.resetStatus=e=>{me(e)};R&&Er(he,window.lazyLoadOptions);function Na(e){const t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");r.setAttribute("class",`${e}-footer-icon-sidebar`),r.setAttribute("viewBox","0 0 64 64");const a=document.createElementNS(t,"path");return a.setAttribute("fill","currentColor"),a.setAttribute("d","M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z"),r.appendChild(a),r}function Aa(e){const t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");r.setAttribute("class",`${e}-footer-icon-arrow-left`),r.setAttribute("viewBox","0 0 500 500");const a=document.createElementNS(t,"path");return a.setAttribute("fill","currentColor"),a.setAttribute("d","M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z"),r.appendChild(a),r}function ja(e){const t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");r.setAttribute("class",`${e}-footer-icon-arrow-right`),r.setAttribute("viewBox","0 0 500 500");const a=document.createElementNS(t,"path");return a.setAttribute("fill","currentColor"),a.setAttribute("d","M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z"),r.appendChild(a),r}var Yt=class Ee{constructor(t){this.pages=t,this.loadingLinks=new Map,this.preloadMap=new Map,this.touchIndex=0,this.preloadSize=0,this.preloadMap=new Map(t.map((r,a)=>[a,{src:r.src,state:0}])),this.preloadSize=this.preloadMap.size,this.touch(0,!0)}touch(t,r=!1){t>=this.preloadSize?this.touchIndex=0:this.touchIndex=t;const a=this.preloadMap.get(this.touchIndex);if(a&&a.state===0&&this.createLink(this.touchIndex,r),this.loadingLinks.size<Ee.maxLinks){const n=[...this.preloadMap.entries()].find(([o,i])=>o>this.touchIndex&&i.state!==1);n&&this.requestAsyncCallBack(()=>{this.touch(n[0],!1)},100)}}createLink(t,r=!1){const a=this.preloadMap.get(t);if(r&&this.destroySomeLink(t),a){if(a.state===1)return 1;const n=this.loadingLinks.get(t);if(n)return n.isForce!==r&&(n.isForce=r,this.loadingLinks.set(t,n)),0;if(this.loadingLinks.size>Ee.maxLinks)return 0;const o=document.createElement("link");return o.rel="preload",o.as="image",o.href=a.src,o.dataset.order=t+"",document.head.appendChild(o),o.onload=()=>{const i=this.preloadMap.get(t);i&&(i.state=1,this.preloadMap.set(t,i),document.head.contains(o)&&document.head.removeChild(o),this.loadingLinks.delete(t),this.touch(this.touchIndex+1,!1))},o.onerror=()=>{const i=this.preloadMap.get(t);i!=null&&i.src&&(o.href=i.src)},this.loadingLinks.set(t,{link:o,isForce:r}),a.state=0,this.preloadMap.set(t,a),0}return 2}destroySomeLink(t){for(const[r,{link:a}]of this.loadingLinks)t!==void 0&&r===t||(document.head.contains(a)&&document.head.removeChild(a),this.loadingLinks.delete(r))}async requestAsyncCallBack(t,r){await new Promise(function(a){window.requestIdleCallback?requestIdleCallback(()=>{a(1)},{timeout:r}):setTimeout(()=>{a(2)},r)}),t()}dispose(){this.destroySomeLink(),this.preloadMap.clear()}};Yt.maxLinks=5;var za=Yt,Rt=class{constructor(e){this.namespace="netless-app-presentation",this.dispose=ut(),this.initialized=!1,this.showPreview=!1,this.pageIndex=0,this.previewLazyload=null,this.timer=null,this.justDocsViewReadonly=!1;var t;this.pages=e.pages,this.preload=new za(this.pages),e.thumbnail&&(this.thumbnail=e.thumbnail),this.dispose.add(this.preload),this.readonly=(t=e.readonly)!=null?t:!1,this.dom=document.createElement("div"),this.dom.className=this.namespace,this.contentDOM=document.createElement("div"),this.contentDOM.className=this.c("content"),this.previewDOM=document.createElement("div"),this.previewDOM.className=this.c("preview"),this.whiteboardDOM=document.createElement("div"),this.whiteboardDOM.className=this.c("wb-view"),this.footerDOM=document.createElement("div"),this.footerDOM.className=this.c("footer"),this.pageNumberInputDOM=document.createElement("input"),this.pageNumberInputDOM.className=this.c("page-number-input"),this.initialize()}setDocsViewReadonly(e){this.justDocsViewReadonly=e}initialize(){var e;if(this.initialized)return;this.initialized=!0,this.dispose.add(()=>{var l;return(l=this.previewLazyload)==null?void 0:l.destroy()}),this.contentDOM.classList.toggle(this.c("readonly"),this.readonly),this.dom.appendChild(this.contentDOM);const t=this.contentDOM.appendChild(document.createElement("div"));t.className=this.c("preview-mask"),this.dispose.add(j(t,"click",l=>{this.readonly||l.target==t&&this.togglePreview(!1)})),this.contentDOM.appendChild(this.previewDOM),this.previewDOM.classList.add("tele-fancy-scrollbar");const r=this.c("preview-page"),a=this.c("preview-page-name");for(let l=0;l<this.pages.length;++l){const p=this.pages[l],_=p.thumbnail||this.thumbnail(p.src),m=document.createElement("a");m.className=`${r} ${this.c(`preview-page-${l}`)}`,m.setAttribute("href","#"),m.dataset.pageIndex=String(l);const P=document.createElement("img");P.width=p.width,P.height=p.height,P.dataset.src=_,P.dataset.pageIndex=String(l);const v=document.createElement("span");v.className=a,v.textContent=String(l+1),v.dataset.pageIndex=String(l),m.appendChild(P),m.appendChild(v),this.previewDOM.appendChild(m)}(e=this.previewLazyload)==null||e.update(),this.dispose.add(j(this.previewDOM,"click",l=>{var p;if(this.readonly)return;const _=(p=l.target.dataset)==null?void 0:p.pageIndex;_&&(l.preventDefault(),l.stopPropagation(),l.stopImmediatePropagation(),this.onNewPageIndex(Number(_),"preview"),this.togglePreview(!1))})),this.updateImage(),this.contentDOM.appendChild(this.whiteboardDOM),this.footerDOM.classList.toggle(this.c("readonly"),this.readonly),this.dom.appendChild(this.footerDOM);const n=document.createElement("button");n.className=`${this.c("footer-btn")} ${this.c("btn-sidebar")}`,n.appendChild(Na(this.namespace)),this.footerDOM.appendChild(n),this.dispose.add(j(n,"click",()=>{this.readonly||this.togglePreview()}));const o=document.createElement("div");o.className=this.c("page-jumps"),this.footerDOM.appendChild(o);const i=document.createElement("button");i.className=`${this.c("footer-btn")} ${this.c("btn-page-back")}`,i.appendChild(Aa(this.namespace)),o.appendChild(i),this.dispose.add(j(i,"click",()=>{this.readonly||this.pageIndex>0&&this.onNewPageIndex(this.pageIndex-1,"navigation")}));const h=document.createElement("button");h.className=`${this.c("footer-btn")} ${this.c("btn-page-next")}`,h.appendChild(ja(this.namespace)),o.appendChild(h),this.dispose.add(j(h,"click",()=>{this.readonly||this.pageIndex<this.pages.length-1&&this.onNewPageIndex(this.pageIndex+1,"navigation")}));const d=document.createElement("div");d.className=this.c("page-number"),this.footerDOM.appendChild(d),d.appendChild(this.pageNumberInputDOM),this.pageNumberInputDOM.value=String(this.pageIndex+1),this.pageNumberInputDOM.disabled=this.readonly,this.dispose.add(j(this.pageNumberInputDOM,"focus",()=>{this.readonly||this.pageNumberInputDOM.select()})),this.dispose.add(j(this.pageNumberInputDOM,"change",()=>{this.readonly||this.pageNumberInputDOM.value&&this.onNewPageIndex(Number(this.pageNumberInputDOM.value)-1,"input")}));const g=document.createElement("span");g.textContent=` / ${this.pages.length}`,d.appendChild(g),this.dispose.add(j(window,"keydown",l=>{this.readonly||this.isEditable(l.target)||this.justDocsViewReadonly||((l.key=="ArrowUp"||l.key=="ArrowLeft")&&this.pageIndex>0?this.onNewPageIndex(this.pageIndex-1,"keydown"):(l.key=="ArrowDown"||l.key=="ArrowRight")&&this.pageIndex<this.pages.length-1&&this.onNewPageIndex(this.pageIndex+1,"keydown"))}))}setDOM(e){this.dom!=e&&(e.appendChild(this.contentDOM),e.appendChild(this.footerDOM),this.dom=e)}setReadonly(e){this.readonly!=e&&(this.contentDOM.classList.toggle(this.c("readonly"),e),this.footerDOM.classList.toggle(this.c("readonly"),e),this.pageNumberInputDOM.disabled=e,this.togglePreview(!1),this.readonly=e)}setPageIndex(e){Number.isSafeInteger(e)&&(this.pageIndex=e,this.pageNumberInputDOM.value=String(e+1),this.updateImage())}togglePreview(e){if(this.showPreview=e!=null?e:!this.showPreview,this.contentDOM.classList.toggle(this.c("preview-active"),this.showPreview),this.showPreview){const t=this.previewDOM.querySelector("."+this.c(`preview-page-${this.pageIndex}`));t&&(this.previewLazyload||(this.previewLazyload=new he({container:this.previewDOM,elements_selector:`.${this.c("preview-page>img")}`})),this.previewDOM.scrollTo({top:t.offsetTop-16}))}}onNewPageIndex(e,t){0<=e&&e<this.pages.length&&this.setPageIndex(e)}page(){return this.pages[this.pageIndex]}updateImage(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.preload.touch(this.pageIndex,!0)},200)}thumbnail(e){try{const t=new URL(e);return t.searchParams.set("x-oss-process","image/resize,l_50"),t.toString()}catch(t){return console.error(t),e}}c(e){return`${this.namespace}-${e}`}isEditable(e){if(!e)return!1;const{tagName:t}=e;return t=="INPUT"||t=="TEXTAREA"||t=="SELECT"}},Xa=".netless-app-presentation{height:100%;display:flex;flex-flow:column nowrap}.netless-app-presentation-content{position:relative;height:100%;overflow:hidden}.netless-app-presentation-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-presentation-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:#ededf0e6;box-shadow:inset -1px 0 #0000001c;transition:transform .4s;overflow:auto;overflow-y:scroll}.netless-app-presentation-preview-active .netless-app-presentation-preview-mask{display:block}.netless-app-presentation-preview-active .netless-app-presentation-preview{transform:translate(0)}.netless-app-presentation-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:#0000;outline:none;border:7px solid rgba(0,0,0,0);border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-presentation-preview-page:hover,.netless-app-presentation-preview-page.netless-app-presentation-preview-page-active{border-color:#444e601a}.netless-app-presentation-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-presentation-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;user-select:none}.netless-app-presentation-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-presentation-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:#f9f9fce6;transition:opacity .4s}.netless-app-presentation-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:#0000;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-footer-btn:hover{background:#ededf0e6}@media (hover: none){.netless-app-presentation-footer-btn:hover{background:#0000!important}}.netless-app-presentation-footer-btn>svg{width:100%;height:100%}.netless-app-presentation-footer-btn>svg:nth-of-type(2){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-presentation-footer-btn~.netless-app-presentation-footer-btn{margin-left:15px}.netless-app-presentation-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-presentation-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-presentation-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:#0000;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-page-number-input:hover,.netless-app-presentation-page-number-input:focus,.netless-app-presentation-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-presentation-readonly.netless-app-presentation-footer{display:none}.netless-app-presentation-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden;transition:opacity .2s}.netless-app-presentation-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-presentation-image>img{max-width:100%;max-height:100%;object-fit:contain}.telebox-color-scheme-dark .netless-app-presentation-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-presentation-page-number-input:active,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:focus,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-presentation-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-presentation-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-presentation-preview{background:#323232e6}.netless-app-presentation-scrollbar-container{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:101}.netless-app-presentation-scrollbar-container-x,.netless-app-presentation-scrollbar-container-y{position:absolute;pointer-events:none;display:flex;justify-content:center;box-sizing:border-box;padding:0}.netless-app-presentation-scrollbar-container-x{bottom:0;left:0;height:6px;width:100%;padding-right:6px}.netless-app-presentation-scrollbar-container-y{top:0;right:0;width:6px;height:100%;flex-direction:column;padding-bottom:6px}.netless-app-presentation-scrollbar-x,.netless-app-presentation-scrollbar-y{border-radius:2px;background-color:#1b1f4d4d;pointer-events:auto;cursor:default}.netless-app-presentation-scrollbar-x{height:6px}.netless-app-presentation-scrollbar-y{width:6px}";function fe(){}function $a(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Ya(e,t=fe){let r;const a=new Set;function n(d){if($a(e,d)&&(e=d,r))for(const g of a)g(e)}function o(d){return a.add(d),a.size===1&&(r=t(n)||fe),d(e),()=>{a.delete(d),a.size===0&&(r&&r(),r=void 0)}}function i(d){return a.add(d),a.size===1&&(r=t(n)||fe),()=>{a.delete(d),a.size===0&&(r&&r(),r=void 0)}}function h(d){d!==void 0&&n(d),a.clear(),r&&r(),r=void 0}return{get value(){return a.size===0&&(r=t(n)||fe,r(),r=void 0),e},subscribe:o,reaction:i,dispose:h}}function at(e,t){let r=null,a=0,n=0;const{onDragEnd:o,onDrag:i,onDragStart:h,direction:d="xy"}=t,g=(v,S)=>{if(v.stopPropagation(),!r)return;let x=0,k=0;d==="x"?x=Math.round(v.pageX-a):(d==="y"||(x=Math.round(v.pageX-a)),k=Math.round(v.pageY-n)),S===3?o==null||o({x,y:k}):i==null||i({x,y:k})};e.addEventListener("pointerdown",l);function l(v){r=v.target,v.stopPropagation(),r===e&&(a=v.pageX,n=v.pageY,e.addEventListener("pointermove",g),document.body.addEventListener("pointerup",_),document.body.addEventListener("pointercancel",_),e.setPointerCapture(v.pointerId),h==null||h())}function p(){r=null,e.removeEventListener("pointermove",g),document.body.removeEventListener("pointerup",_),document.body.removeEventListener("pointercancel",_)}function _(v){!r||(v.stopPropagation(),g(v,3),p())}function m(){P(),e.removeEventListener("pointerdown",l)}function P(){p()}return{destroy:m}}var Ra=Me(pt()),Pe=Me(mr()),Vt=class{constructor(e,t,r){this.namespace="netless-app-presentation",this.scrollContainer=document.createElement("div"),this.option={appId:"",getPageSize:()=>({width:0,height:0}),getWritable:()=>!1,getOriginScale:()=>1,syncView:()=>{}},this.onCameraUpdated=(0,Ra.default)(()=>{var a,n;if(this.readonly)return;const{scale:o,centerX:i,centerY:h}=this.view.camera,d=this.option.getOriginScale(),{width:g,height:l}=this.option.getPageSize(),{width:p,height:_}=this.view.size,m=p/g,P=_/l,v=Math.min(Math.round(m/o*100)/100,1),S=Math.min(Math.round(P/o*100)/100,1),x=Math.round(i*m),k=Math.round(h*P);this.scrollbarX&&(this.scrollbarX.style.width=`${v*100}%`,this.scrollbarX.style.display=v===1?"none":"block",this.scrollbarX.style.transform=`translateX(${x}px)`),this.scrollbarY&&(this.scrollbarY.style.height=`${S*100}%`,this.scrollbarY.style.display=S===1?"none":"block",this.scrollbarY.style.transform=`translateY(${k}px)`),(n=(a=this.option.scrollbarEventCallback)==null?void 0:a.onScrollCameraUpdated)==null||n.call(a,this.appId,d,o)},50),this.onDragStart=()=>{var a,n;const o=this.view.camera;this.cameraCache={centerX:o.centerX,centerY:o.centerY,scale:o.scale},(n=(a=this.option.scrollbarEventCallback)==null?void 0:a.onScrollbarDragStart)==null||n.call(a)},this.onDragX=a=>{var n,o;if(this.cameraCache){const{x:i}=a,{width:h}=this.option.getPageSize(),{width:d}=this.view.size,g=d/h,{minX:l,maxX:p}=this.getScrollXRange(this.cameraCache);let m=Math.round(i/g)+this.cameraCache.centerX;m<l?m=l:m>p&&(m=p),this.view.moveCamera({centerX:m,animationMode:"immediately"}),(o=(n=this.option.scrollbarEventCallback)==null?void 0:n.onScrollbarDragY)==null||o.call(n,m)}},this.onDragY=a=>{var n,o;if(this.cameraCache){const{y:i}=a,{height:h}=this.option.getPageSize(),{height:d}=this.view.size,g=d/h,{minY:l,maxY:p}=this.getScrollYRange(this.cameraCache);let m=Math.round(i/g)+this.cameraCache.centerY;m<l?m=l:m>p&&(m=p),this.view.moveCamera({centerY:m,animationMode:"immediately"}),(o=(n=this.option.scrollbarEventCallback)==null?void 0:n.onScrollbarDragY)==null||o.call(n,m)}},this.onDragEnd=()=>{var a,n;this.cameraCache=void 0,this.option.syncView(),(n=(a=this.option.scrollbarEventCallback)==null?void 0:a.onScrollbarDragEnd)==null||n.call(a)},this.moveCamera=a=>{const{centerX:n,centerY:o,scale:i}=a,h=this.view.camera,d={};if((0,Pe.default)(n)){const{minX:g,maxX:l}=this.getScrollXRange(h);let p=n;n<g?p=g:n>l&&(p=l),d.centerX=p}if((0,Pe.default)(o)){const{minY:g,maxY:l}=this.getScrollYRange(h);let p=o;o<g?p=g:o>l&&(p=l),d.centerY=p}if((0,Pe.default)(i)){let g=i;const l=this.option.getOriginScale();i<l&&(g=l),d.scale=g}this.view.moveCamera(sr(ir({},d),{animationMode:"immediately"})),this.option.syncView()},this.scrollContainer.className=this.c("scrollbar-container"),this.container=e,this.option=t,this.appId=t.appId,this.readonly=t.readonly||!1,this.view=r,this.init()}c(e){return`${this.namespace}-${e}`}setReadonly(e){this.readonly=e,this.destroy(),this.readonly||this.init()}getScrollXRange(e){const{width:t}=this.option.getPageSize(),{width:r}=this.view.size,a=r/t,n=e.scale,o=Math.min(Math.round(a/n*100)/100,1),i=t*(1-o),h=-i/2,d=i/2;return{minX:h,maxX:d}}getScrollYRange(e){const{height:t}=this.option.getPageSize(),{height:r}=this.view.size,a=r/t,n=e.scale,o=Math.min(Math.round(a/n*100)/100,1),i=t*(1-o),h=-i/2,d=i/2;return{minY:h,maxY:d}}init(){this.scrollbarX=document.createElement("div"),this.scrollbarX.classList.add(this.c("scrollbar-x")),this.option.getWritable()&&(this.draggableX=at(this.scrollbarX,{direction:"x",onDrag:this.onDragX,onDragEnd:this.onDragEnd,onDragStart:this.onDragStart})),Object.assign(this.scrollbarX.style,{width:"100%",display:"none"}),this.scrollbarContainerX=document.createElement("div"),this.scrollbarContainerX.classList.add(this.c("scrollbar-container-x")),this.scrollbarContainerX.appendChild(this.scrollbarX),this.scrollbarY=document.createElement("div"),this.scrollbarY.classList.add(this.c("scrollbar-y")),this.option.getWritable()&&(this.draggableY=at(this.scrollbarY,{direction:"y",onDrag:this.onDragY,onDragEnd:this.onDragEnd,onDragStart:this.onDragStart})),Object.assign(this.scrollbarY.style,{height:"100%",display:"none"}),this.scrollbarContainerY=document.createElement("div"),this.scrollbarContainerY.classList.add(this.c("scrollbar-container-y")),this.scrollbarContainerY.appendChild(this.scrollbarY),this.scrollContainer.append(this.scrollbarContainerX,this.scrollbarContainerY),this.container.appendChild(this.scrollContainer),this.view.callbacks.on("onCameraUpdated",this.onCameraUpdated),this.onCameraUpdated()}destroy(){this.view.callbacks.off("onCameraUpdated",this.onCameraUpdated),this.scrollbarX&&this.scrollbarContainerX&&(this.scrollbarContainerX.removeChild(this.scrollbarX),this.scrollbarX.remove(),this.scrollbarContainerX.remove(),this.scrollbarX=void 0),this.scrollbarY&&this.scrollbarContainerY&&(this.scrollbarContainerY.removeChild(this.scrollbarY),this.scrollbarY.remove(),this.scrollbarContainerY.remove(),this.scrollbarY=void 0),this.draggableX&&(this.draggableX.destroy(),this.draggableX=void 0),this.draggableY&&(this.draggableY.destroy(),this.draggableY=void 0)}},Va=Me(pt()),se="$$empty$$",Wa=(e,t)=>e?{width:e.width,height:e.height,src:e.src,thumbnail:e.previewURL,name:t}:null,Ua=e=>e&&e.logger?(...t)=>e.logger.info(...t):(...t)=>console.log(...t),Ha=(e,t)=>!e||!t||e.length!==t.length?!1:e.every((r,a)=>{var n,o,i,h,d,g;const l=t[a];return r.name===l.name&&((n=r.ppt)==null?void 0:n.width)===((o=l.ppt)==null?void 0:o.width)&&((i=r.ppt)==null?void 0:i.height)===((h=l.ppt)==null?void 0:h.height)&&((d=r.ppt)==null?void 0:d.src)===((g=l.ppt)==null?void 0:g.src)}),Ve={kind:"Presentation",setup(e){var t,r,a;const n=e.getView();if(!n)throw new Error("[Presentation]: no whiteboard view, make sure you have added options.scenePath in addApp()");const o=(t=e.getScenes())==null?void 0:t.map(({ppt:s,name:c})=>Wa(s,c)).filter(Boolean);if(!o||o.length===0)throw new Error("[Presentation]: empty scenes, make sure you have added options.scenes in addApp()");if(o[0].src.startsWith("ppt"))throw new Error("[Presentation]: legacy dynamic PPT is unsupported, please use the projector converter and @netless/slide to render it");const i=e.getInitScenePath(),h=e.getAppOptions()||{};let d=(r=h.maxCameraScale)!=null?r:3;Number.isFinite(d)&&d>0||(console.warn(`[Presentation] maxCameraScale should be a positive number, got ${h.maxCameraScale}`),d=3);const g=h.log||Ua(e.getRoom());g(`[Presentation] new ${e.appId}`);const l=ut();l.add(()=>g(`[Presentation] dispose ${e.appId}`));const p=e.createStorage("view",{uid:"",originX:0,originY:0,width:0,height:0}),_=(s,c)=>{const u=e.manager.windowManger;return u.emitter.on(s,c),()=>u==null?void 0:u.emitter.off(s,c)},m=s=>{const c=s.focusScenePath,u=c==null?void 0:c.split("/").pop();let f=o.findIndex((w,y)=>{var b;return((b=w.name)!=null?b:String(y+1))===u});return f===-1&&(f=0),f};let P=m(n);const v=Ya(P,s=>(s(P),_("onAppScenePathChange",c=>{const{appId:u}=c;if(u===e.appId){const f=m(c.view);s(f)}})));if(l.add(()=>{v.dispose()}),e.isAddApp){o.length>100&&console.warn(`[Presentation]: too many pages (${o.length}), may cause performance issues`);let s;const c=e.getRoom();if(c&&c.isWritable){const u=c.entireScenes()[i];if(v.value<0||v.value>=o.length)throw new Error(`[Presentation] Invalid page index: ${v.value}, scenes length: ${o.length}`);new Promise(f=>{const{name:w,ppt:y}=u[v.value];s=f;const b=o.map((O,A)=>{var E;return{name:(E=O.name)!=null?E:String(A+1),ppt:{width:O.width,height:O.height,src:O.src}}});Ha(u,b)||(c.removeScenes(i),c.putScenes(i,b)),w===b[v.value].name&&!y?e.addPage({scene:{name:se}}).then(()=>{g(`[Presentation] setup setScenePath ${i}/${se}`),e.setScenePath(`${i}/${se}`).then(()=>{s&&s(!0)})}):s&&s(!1)}).then(async f=>{await k(v.value,c.logger),f&&(g(`[Presentation] setup removeScenes ${i}/${se}`),c.removeScenes(`${i}/${se}`))})}}const S=((a=e.getRoom())==null?void 0:a.uid)||e.getDisplayer().observerId+"";let x=0;const k=async(s,c)=>{var u;if(!e.getIsWritable())return;const f=e.getDisplayer().entireScenes()[i];if(!f)return;const w=o[s],y=(u=w.name)!=null?u:String(s+1);f.some(b=>b.name===y)||await e.addPage({scene:{name:y,ppt:{width:w.width,height:w.height,src:w.src}}}),c&&c.info(`[Presentation] syncPage ${i}/${y}`),await e.setScenePath(`${i}/${y}`)},W=s=>{var c;if(!e.getIsWritable())return console.warn("[Presentation]: no permission, make sure you have test room.isWritable"),!1;if(!(0<=s&&s<o.length))return console.warn(`[Presentation]: page ${s+1} out of bounds [1, ${o.length}]`),!1;const u=e.getDisplayer().entireScenes()[i];if(!u)return console.warn(`[Presentation]: no scenes found at ${i}, make sure you have added options.scenePath in addApp()`),!1;const f=o[s],w=(c=f.name)!=null?c:String(s+1);return u.some(y=>y.name===w)||e.addPage({scene:{name:w,ppt:{width:f.width,height:f.height,src:f.src}}}),k(s),!0},U=()=>W(v.value-1),G=()=>W(v.value+1),ae=()=>({index:v.value,length:o.length}),J=()=>{const{width:s,height:c}=I.page()||{};if(s&&c){n.moveCameraToContain({originX:-s/2,originY:-c/2,width:s,height:c,animationMode:"immediately"});const u=n.camera.scale*(h.disableCameraTransform?1:d),f=n.camera.scale;n.setCameraBound({damping:1,maxContentMode:()=>u,minContentMode:()=>f,centerX:0,centerY:0,width:s,height:c}),Z(!0)}},ne=()=>{if(e.getIsWritable()){if(h.debounceSync&&(clearTimeout(x),x=0),x>0)return;const{width:s,height:c}=I.page()||{};s&&c&&(x=setTimeout(()=>{x=0;const{camera:u,size:f}=n,w=Math.min(f.width,f.height*s/c),y=Math.min(f.height,f.width*c/s),b=w/u.scale,O=y/u.scale,A=u.centerX-b/2,E=u.centerY-O/2;p.setState({uid:S,originX:A,originY:E,width:b,height:O})},50))}};l.add(()=>{clearTimeout(x),x=0});const Z=(s=!1,c=!1)=>{const{uid:u,originX:f,originY:w,width:y,height:b}=p.state;(s||u!==S)&&y>0&&b>0&&n.moveCameraToContain({originX:f,originY:w,width:y,height:b,animationMode:c?"continuous":"immediately"})};l.add(p.addStateChangedListener(()=>Z(!1,!0)));const $=()=>{const{width:s,height:c}=I.page()||{};return{width:s||0,height:c||0}},oe=e.getBox(),I=l.add(qa(oe,o,W,v,n,h.thumbnail,h.useClipView));I.contentDOM.dataset.appPresentationVersion="0.1.10",I.scaleDocsToFit=J,I.log=g,h.justDocsViewReadonly&&I.setDocsViewReadonly(!0);const ie=e.getRoom(),K=()=>{var s,c,u,f;const w=(f=(u=(c=(s=e.getRoom())==null?void 0:s.state)==null?void 0:c.memberState)==null?void 0:u.currentApplianceName)!=null?f:"";!I.readonly&&w==="clicker"&&G()};if(ie&&h.goToPageByClick&&I.whiteboardDOM&&l.make(()=>(I.whiteboardDOM.addEventListener("click",K),()=>I.whiteboardDOM.removeEventListener("click",K))),e.mountView(I.whiteboardDOM),h.disableCameraTransform&&(n.disableCameraTransform=!0),J(),l.make(()=>(n.callbacks.on("onSizeUpdated",J),()=>n.callbacks.off("onSizeUpdated",J))),h.viewport&&e.isAddApp&&I.page()){const s=I.page(),c=typeof h.viewport=="function"?h.viewport(s):h.viewport,u=(f,w)=>f==0?f:f<=1?f*w:f;p.setState({uid:S,originX:u(c.x,s.width)-s.width/2,originY:u(c.y,s.height)-s.height/2,width:u(c.width,s.width),height:u(c.height,s.height)})}l.make(()=>(n.callbacks.on("onCameraUpdatedByDevice",ne),()=>n.callbacks.off("onCameraUpdatedByDevice",ne))),Z(!0),l.add(e.emitter.on("writableChange",s=>{I.setReadonly(!s)}));const C=()=>{const{size:s}=n,{width:c,height:u}=$();return Math.min(s.height/u,s.width/c)},N=()=>n.camera.scale,H=async(s,c,u)=>{var f,w;(w=(f=ie==null?void 0:ie.calibrationTimestamp)==null?void 0:f.toString())!=null||Date.now().toString();const y=o[v.value];if(!y)throw new Error("[Presentation]: current page not found");const{width:b,height:O,src:A}=y,E=document.createElement("img");E.width=b,E.height=O,E.crossOrigin="Anonymous",await new Promise(ye=>{E.onload=ye,E.src=A}),s.drawImage(E,0,0,b,O,0,0,c||b,u||O);const D=n.focusScenePath;if(!D)throw new Error("[Presentation]: current scene path not found");const B=e.getWindowManager();B._appliancePlugin?await B._appliancePlugin.screenshotToCanvasAsync(s,D,c||b,u||O,{centerX:0,centerY:0,scale:c&&u?Math.min(c/b,u/O):1}):await n.screenshotToCanvasAsync(s,D,c||b,u||O,{centerX:0,centerY:0,scale:c&&u?Math.min(c/b,u/O):1})};let T;h.useScrollbar&&l.make(()=>(T=new Vt(I.contentDOM,{appId:e.appId,getPageSize:$,getOriginScale:C,syncView:ne,getWritable:()=>e.getIsWritable(),scrollbarEventCallback:h.scrollbarEventCallback},n),()=>T==null?void 0:T.destroy()));const Wt=s=>{if(e.getIsWritable()&&T){if(!T)throw new Error("[Presentation]: moveCamera must be called when appOptions: useScrollbar is true");T.moveCamera(s);return}throw new Error("[Presentation]: moveCamera must be called in writable room")};e.emitter.on("destroy",()=>l());const ue=(s,c)=>(window.postMessage({type:"@netless/_result_save_pdf_",appId:e.appId,progress:s,result:c},"*"),c),Ut=async s=>{try{const w=new URL(s);w.searchParams.set("t",Date.now().toString()),s=w.toString()}catch{}const c=await fetch(s);if(!c.ok)throw new Error(`[Presentation]: failed to fetch ${s} - ${await c.text()}`);const u=await c.blob(),f=new FileReader;return new Promise((w,y)=>{f.onload=()=>w(f.result),f.onerror=()=>y(f.error),f.readAsDataURL(u)})},We=async()=>{var s;const u=o[0],{width:f,height:w}=u;let y=Math.floor(f),b=Math.floor(w);y>1920&&(y=1920,b=Math.floor(w*y/f)),b>1920&&(b=1920,y=Math.floor(f*b/w));const O=e.getDisplayer().entireScenes()[i],A=document.createElement("canvas");A.width=y,A.height=b;const E=A.getContext("2d"),D=document.createElement("canvas");D.width=y,D.height=b;const B=D.getContext("2d");if(!B||!E)return ue(100,null);const{jsPDF:ye}=await Promise.resolve().then(function(){return Qt(require("jspdf"))}),Se=new ye({format:[u.width,u.height],orientation:u.width>u.height?"l":"p",compress:!0});for(let Q=0;Q<o.length;++Q){const Ue=o[Q],{width:qt,height:Ft,src:Gt}=Ue,Jt=await Ut(Gt),xe=document.createElement("img");await new Promise(ee=>{xe.onload=ee,xe.src=Jt}),E.drawImage(xe,0,0),B.clearRect(0,0,y,b);const He=(s=Ue.name)!=null?s:String(Q+1);if(O.some(ee=>ee.name==He)){const ee={centerX:0,centerY:0,scale:Math.min(D.width/qt,D.height/Ft)},qe=`${i}/${He}`,Fe=e.getWindowManager();Fe._appliancePlugin?await Fe._appliancePlugin.screenshotToCanvasAsync(B,qe,D.width,D.height,ee):await n.screenshotToCanvasAsync(B,qe,D.width,D.height,ee);try{const Ce=D.toDataURL("image/png"),Ie=document.createElement("img");await new Promise(Kt=>{Ie.onload=Kt,Ie.src=Ce}),E.drawImage(Ie,0,0,y,b)}catch(Ce){console.warn(Ce)}}const Zt=A.toDataURL("image/jpeg",.6);Q>0&&Se.addPage(),Se.addImage(Zt,"JPEG",0,0,y,b,"","FAST"),E.clearRect(0,0,y,b);const Be=Math.ceil((Q+1)/o.length*100);Be<100&&ue(Be,null)}const Ht=Se.output("arraybuffer"),Bt=oe.title;return ue(100,{pdf:Ht,title:Bt})};l.add(j(window,"message",s=>{s.data&&s.data.type=="@netless/_request_save_pdf_"&&s.data.appId==e.appId&&We().catch(c=>{console.warn(c),ue(100,null)})}));const ge={app:I,view:n,context:e,jumpPage:W,prevPage:U,nextPage:G,pageState:ae,toPdf:We,log:g,setDocsViewReadonly:s=>{I.setDocsViewReadonly(s)},setReadonly:s=>{I.setReadonly(s),h.goToPageByClick,T&&T.setReadonly(s)},moveCamera:Wt,getOriginScale:C,getScale:N,getPageSize:$,screenshotCurrentPageAsync:H};return l.add(j(window,"message",s=>{s.data==="@netless/_presentation_"&&(typeof window!="undefined"&&l.make(()=>{const c=window._presentation_||(window._presentation_=new Set);return c.add(ge),()=>c.delete(ge)}),console.log(ge))})),ge}},Ba=class extends Rt{constructor(e){super(e),this.jumpPage=e.jumpPage}updateImage(){super.updateImage()}onNewPageIndex(e,t){t==="keydown"&&this.box&&!this.box.focus||(this.log&&this.log("[Presentation] user navigate to",e+1,`(${t})`),0<=e&&e<this.pages.length?this.jumpPage(e):console.warn(`[Presentation]: page index ${e} out of bounds [0, ${this.pages.length-1}]`))}};function qa(e,t,r,a,n,o,i){e.mountStyles(Xa);const h=new Ba({pages:t,readonly:e.readonly,jumpPage:r,thumbnail:o});if(h.box=e,e.mountContent(h.contentDOM),e.mountFooter(h.footerDOM),h.dispose.add(a.subscribe(d=>{h.setPageIndex(d)})),i&&n){const d=(0,Va.default)(()=>{const{width:l,height:p}=h.page()||{};if(!l||!p)return;const{scale:_}=n.camera,{width:m,height:P}=n.size,v=Math.round((1-l*_/m)/2*100),S=Math.round((1-p*_/P)/2*100);h.whiteboardDOM.style.clipPath=`inset(${S}% ${v}%)`},50);d();const g=()=>(n.callbacks.on("onSizeUpdated",d),n.callbacks.on("onCameraUpdated",d),()=>{n.callbacks.off("onCameraUpdated",d),n.callbacks.off("onSizeUpdated",d)});h.dispose.make(g)}return h}var Fa=(e,t={})=>{let r=Ve;return t.as&&(r=Object.assign({},r,{kind:t.as})),e({kind:r.kind,src:r,appOptions:t.appOptions})},Ga="0.1.10";exports.NetlessAppPresentation=Ve;exports.Presentation=Rt;exports.Scrollbar=Vt;exports.default=Ve;exports.install=Fa;exports.version=Ga;
|
|
2
|
+
//# sourceMappingURL=app-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-presentation.js","sources":["../node_modules/.pnpm/@netless+app-presentation@0.1.10_jspdf@2.5.2/node_modules/@netless/app-presentation/dist/index.mjs"],"sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js\nvar require_isObject = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js\"(exports, module) {\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n }\n module.exports = isObject;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js\nvar require_freeGlobal = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js\"(exports, module) {\n var freeGlobal = typeof global == \"object\" && global && global.Object === Object && global;\n module.exports = freeGlobal;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js\nvar require_root = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js\"(exports, module) {\n var freeGlobal = require_freeGlobal();\n var freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n var root = freeGlobal || freeSelf || Function(\"return this\")();\n module.exports = root;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js\nvar require_now = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js\"(exports, module) {\n var root = require_root();\n var now = function() {\n return root.Date.now();\n };\n module.exports = now;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js\nvar require_trimmedEndIndex = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js\"(exports, module) {\n var reWhitespace = /\\s/;\n function trimmedEndIndex(string) {\n var index = string.length;\n while (index-- && reWhitespace.test(string.charAt(index))) {\n }\n return index;\n }\n module.exports = trimmedEndIndex;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js\nvar require_baseTrim = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js\"(exports, module) {\n var trimmedEndIndex = require_trimmedEndIndex();\n var reTrimStart = /^\\s+/;\n function baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, \"\") : string;\n }\n module.exports = baseTrim;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js\nvar require_Symbol = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js\"(exports, module) {\n var root = require_root();\n var Symbol2 = root.Symbol;\n module.exports = Symbol2;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js\nvar require_getRawTag = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js\"(exports, module) {\n var Symbol2 = require_Symbol();\n var objectProto = Object.prototype;\n var hasOwnProperty = objectProto.hasOwnProperty;\n var nativeObjectToString = objectProto.toString;\n var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n try {\n value[symToStringTag] = void 0;\n var unmasked = true;\n } catch (e) {\n }\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n module.exports = getRawTag;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js\nvar require_objectToString = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js\"(exports, module) {\n var objectProto = Object.prototype;\n var nativeObjectToString = objectProto.toString;\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n module.exports = objectToString;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js\nvar require_baseGetTag = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js\"(exports, module) {\n var Symbol2 = require_Symbol();\n var getRawTag = require_getRawTag();\n var objectToString = require_objectToString();\n var nullTag = \"[object Null]\";\n var undefinedTag = \"[object Undefined]\";\n var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;\n function baseGetTag(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n module.exports = baseGetTag;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js\nvar require_isObjectLike = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js\"(exports, module) {\n function isObjectLike(value) {\n return value != null && typeof value == \"object\";\n }\n module.exports = isObjectLike;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js\nvar require_isSymbol = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js\"(exports, module) {\n var baseGetTag = require_baseGetTag();\n var isObjectLike = require_isObjectLike();\n var symbolTag = \"[object Symbol]\";\n function isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike(value) && baseGetTag(value) == symbolTag;\n }\n module.exports = isSymbol;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js\nvar require_toNumber = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js\"(exports, module) {\n var baseTrim = require_baseTrim();\n var isObject = require_isObject();\n var isSymbol = require_isSymbol();\n var NAN = 0 / 0;\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary = /^0b[01]+$/i;\n var reIsOctal = /^0o[0-7]+$/i;\n var freeParseInt = parseInt;\n function toNumber(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n module.exports = toNumber;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js\nvar require_debounce = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js\"(exports, module) {\n var isObject = require_isObject();\n var now = require_now();\n var toNumber = require_toNumber();\n var FUNC_ERROR_TEXT = \"Expected a function\";\n var nativeMax = Math.max;\n var nativeMin = Math.min;\n function debounce3(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n module.exports = debounce3;\n }\n});\n\n// node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isNumber.js\nvar require_isNumber = __commonJS({\n \"node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isNumber.js\"(exports, module) {\n var baseGetTag = require_baseGetTag();\n var isObjectLike = require_isObjectLike();\n var numberTag = \"[object Number]\";\n function isNumber2(value) {\n return typeof value == \"number\" || isObjectLike(value) && baseGetTag(value) == numberTag;\n }\n module.exports = isNumber2;\n }\n});\n\n// node_modules/.pnpm/@wopjs+disposable@0.1.19/node_modules/@wopjs/disposable/dist/index.mjs\nvar isFn = (value) => !!(value && value.constructor && value.call && value.apply);\nvar isDisposable = (value) => isFn(value) || isFn(value == null ? void 0 : value.dispose);\nfunction dispose(disposable) {\n try {\n if (disposable) {\n if (isFn(disposable.dispose)) {\n disposable.dispose();\n } else if (isFn(disposable)) {\n disposable();\n }\n }\n } catch (e) {\n console.error(e);\n }\n}\nvar isAbortable = (disposable) => isDisposable(disposable) && isFn(disposable.abortable);\nfunction disposableStore(disposables) {\n function disposableStore2() {\n var _a, _b;\n if (disposableStore2._i)\n return;\n disposableStore2._i = 1;\n (_a = disposableStore2._d) == null ? void 0 : _a.forEach(dispose);\n (_b = disposableStore2._d) == null ? void 0 : _b.clear();\n disposableStore2._i = 0;\n }\n disposableStore2._i = 0;\n disposableStore2.dispose = disposableStore2;\n disposableStore2.size = size2;\n disposableStore2.has = has2;\n disposableStore2.add = add;\n disposableStore2.make = make3;\n disposableStore2.remove = remove3;\n disposableStore2.flush = flush2;\n return disposableStore2;\n}\nfunction _addOne(disposable) {\n var _a, _b;\n if (!((_a = this._d) == null ? void 0 : _a.has(disposable))) {\n ((_b = this._d) != null ? _b : this._d = /* @__PURE__ */ new Set()).add(disposable);\n if (isAbortable(disposable)) {\n disposable.abortable(() => this.remove(disposable));\n }\n }\n}\nfunction add(disposables) {\n Array.isArray(disposables) ? disposables.forEach(_addOne, this) : _addOne.call(this, disposables);\n return disposables;\n}\nfunction flush2(disposable) {\n if (disposable) {\n if (this.remove(disposable)) {\n dispose(disposable);\n }\n } else {\n this.dispose();\n }\n}\nfunction has2(disposable) {\n var _a;\n return ((_a = this._d) == null ? void 0 : _a.has(disposable)) || false;\n}\nfunction make3(executor) {\n const disposable = executor();\n return disposable && this.add(disposable);\n}\nfunction remove3(disposable) {\n var _a;\n return ((_a = this._d) == null ? void 0 : _a.delete(disposable)) || false;\n}\nfunction size2() {\n var _a;\n return ((_a = this._d) == null ? void 0 : _a.size) || 0;\n}\n\n// node_modules/.pnpm/@wopjs+dom@0.1.3/node_modules/@wopjs/dom/dist/index.js\nfunction addEventListener(target, type, listener, options) {\n target.addEventListener(type, listener, options);\n return () => target.removeEventListener(type, listener, options);\n}\nvar listen = addEventListener;\n\n// node_modules/.pnpm/vanilla-lazyload@18.0.0/node_modules/vanilla-lazyload/dist/lazyload.esm.js\nvar runningOnBrowser = typeof window !== \"undefined\";\nvar isBot = runningOnBrowser && !(\"onscroll\" in window) || typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\nvar isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\nvar defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false\n};\nvar getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\nvar createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\nvar autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n createInstance(classObj, options);\n } else {\n for (let i = 0, optionsItem; optionsItem = options[i]; i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\nvar SRC = \"src\";\nvar SRCSET = \"srcset\";\nvar SIZES = \"sizes\";\nvar POSTER = \"poster\";\nvar ORIGINALS = \"llOriginalAttrs\";\nvar DATA = \"data\";\nvar statusLoading = \"loading\";\nvar statusLoaded = \"loaded\";\nvar statusApplied = \"applied\";\nvar statusEntered = \"entered\";\nvar statusError = \"error\";\nvar statusNative = \"native\";\nvar dataPrefix = \"data-\";\nvar statusDataName = \"ll-status\";\nvar getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\nvar setData = (element, attribute, value) => {\n const attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\nvar getStatus = (element) => getData(element, statusDataName);\nvar setStatus = (element, status) => setData(element, statusDataName, status);\nvar resetStatus = (element) => setStatus(element, null);\nvar hasEmptyStatus = (element) => getStatus(element) === null;\nvar hasStatusLoading = (element) => getStatus(element) === statusLoading;\nvar hasStatusError = (element) => getStatus(element) === statusError;\nvar hasStatusNative = (element) => getStatus(element) === statusNative;\nvar statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nvar hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\nvar safeCallback = (callback, arg1, arg2, arg3) => {\n if (!callback || typeof callback !== \"function\") {\n return;\n }\n if (arg3 !== void 0) {\n callback(arg1, arg2, arg3);\n return;\n }\n if (arg2 !== void 0) {\n callback(arg1, arg2);\n return;\n }\n callback(arg1);\n};\nvar addClass = (element, className) => {\n if (!runningOnBrowser) {\n return;\n }\n if (className === \"\") {\n return;\n }\n element.classList.add(className);\n};\nvar removeClass = (element, className) => {\n if (!runningOnBrowser) {\n return;\n }\n if (className === \"\") {\n return;\n }\n element.classList.remove(className);\n};\nvar addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\nvar deleteTempImage = (element) => {\n delete element.llTempImage;\n};\nvar getTempImage = (element) => element.llTempImage;\nvar unobserve = (element, instance) => {\n if (!instance)\n return;\n const observer = instance._observer;\n if (!observer)\n return;\n observer.unobserve(element);\n};\nvar resetObserver = (observer) => {\n observer.disconnect();\n};\nvar unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered)\n unobserve(element, instance);\n};\nvar updateLoadingCount = (instance, delta) => {\n if (!instance)\n return;\n instance.loadingCount += delta;\n};\nvar decreaseToLoadCount = (instance) => {\n if (!instance)\n return;\n instance.toLoadCount -= 1;\n};\nvar setToLoadCount = (instance, value) => {\n if (!instance)\n return;\n instance.toLoadCount = value;\n};\nvar isSomethingLoading = (instance) => instance.loadingCount > 0;\nvar haveElementsToLoad = (instance) => instance.toLoadCount > 0;\nvar getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; childTag = parentTag.children[i]; i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\nvar forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\nvar forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\nvar attrsSrc = [SRC];\nvar attrsSrcPoster = [SRC, POSTER];\nvar attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nvar attrsData = [DATA];\nvar hasOriginalAttrs = (element) => !!element[ORIGINALS];\nvar getOriginalAttrs = (element) => element[ORIGINALS];\nvar deleteOriginalAttrs = (element) => delete element[ORIGINALS];\nvar setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\nvar saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\nvar setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\nvar restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\nvar restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\nvar manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n if (!instance)\n return;\n if (settings.unobserve_completed) {\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\nvar manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n if (!instance)\n return;\n updateLoadingCount(instance, 1);\n safeCallback(settings.callback_loading, element, instance);\n};\nvar setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\nvar setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\nvar setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\nvar setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\nvar setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\nvar setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\nvar setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue)\n return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\nvar setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\nvar setImgsetBackground = (element, settings, instance) => {\n const bgImgSetDataValue = getData(element, settings.data_bg_set);\n if (!bgImgSetDataValue) {\n return;\n }\n const imgSetValues = bgImgSetDataValue.split(\"|\");\n let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n if (element.style.backgroundImage === \"\") {\n bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n }\n manageApplied(element, settings, instance);\n};\nvar setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\nvar setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\nvar setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\nvar elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nvar hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\nvar checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\nvar addEventListener2 = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\nvar removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\nvar hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\nvar addEventListeners = (element, loadHandler2, errorHandler2) => {\n if (!hasEventListeners(element))\n element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener2(element, loadEventName, loadHandler2);\n addEventListener2(element, \"error\", errorHandler2);\n};\nvar removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\nvar doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\nvar loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative)\n checkFinish(settings, instance);\n};\nvar errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error)\n restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative)\n checkFinish(settings, instance);\n};\nvar addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\nvar loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n};\nvar loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\nvar load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\nvar loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\nvar removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\nvar resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\nvar restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\nvar restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\nvar restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\nvar restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\nvar restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\nvar restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\nvar resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\nvar restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\nvar cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit)\n return;\n if (!hasStatusLoading(element))\n return;\n if (element.tagName !== \"IMG\")\n return;\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\nvar onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element);\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad)\n return;\n load(element, settings, instance);\n};\nvar onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element))\n return;\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\nvar tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\nvar shouldUseNative = (settings) => settings.use_native && \"loading\" in HTMLImageElement.prototype;\nvar loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\nvar isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\nvar getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\nvar intersectionHandler = (entries, settings, instance) => {\n entries.forEach(\n (entry) => isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance)\n );\n};\nvar observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\nvar updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\nvar setObserver = (settings, instance) => {\n if (shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\nvar toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\nvar queryElements = (settings) => settings.container.querySelectorAll(settings.elements_selector);\nvar excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\nvar hasError = (element) => hasStatusError(element);\nvar filterErrorElements = (elements) => toArray(elements).filter(hasError);\nvar getElementsToLoad = (elements, settings) => excludeManagedElements(elements || queryElements(settings));\nvar retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach((element) => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\nvar setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\nvar resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\nvar LazyLoad = function(customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\nLazyLoad.prototype = {\n update: function(givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n if (isBot) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n updateObserver(this._observer, elementsToLoad);\n },\n destroy: function() {\n if (this._observer) {\n this._observer.disconnect();\n }\n resetOnlineCheck(this);\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n loadAll: function(elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\n// src/icons/sidebar.ts\nfunction sidebarSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-sidebar`);\n $svg.setAttribute(\"viewBox\", \"0 0 64 64\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\"d\", \"M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z\");\n $svg.appendChild($path);\n return $svg;\n}\n\n// src/icons/arrow-left.ts\nfunction arrowLeftSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-left`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\"d\", \"M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z\");\n $svg.appendChild($path);\n return $svg;\n}\n\n// src/icons/arrow-right.ts\nfunction arrowRightSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-right`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\"d\", \"M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z\");\n $svg.appendChild($path);\n return $svg;\n}\n\n// src/preload.ts\nvar _Preload = class _Preload {\n constructor(pages) {\n this.pages = pages;\n // 正在加载的链接\n this.loadingLinks = /* @__PURE__ */ new Map();\n // 需要预加载的链接集合\n this.preloadMap = /* @__PURE__ */ new Map();\n // 当前触摸的索引\n this.touchIndex = 0;\n this.preloadSize = 0;\n this.preloadMap = new Map(pages.map((e, index) => [index, {\n src: e.src,\n state: 0 /* unloaded */\n }]));\n this.preloadSize = this.preloadMap.size;\n this.touch(0, true);\n }\n touch(index, force = false) {\n if (index >= this.preloadSize) {\n this.touchIndex = 0;\n } else {\n this.touchIndex = index;\n }\n const value = this.preloadMap.get(this.touchIndex);\n if (value && value.state === 0 /* unloaded */) {\n this.createLink(this.touchIndex, force);\n }\n if (this.loadingLinks.size < _Preload.maxLinks) {\n const willLoad = [...this.preloadMap.entries()].find(([i, e]) => i > this.touchIndex && e.state !== 1 /* loaded */);\n if (willLoad) {\n this.requestAsyncCallBack(() => {\n this.touch(willLoad[0], false);\n }, 100);\n }\n }\n }\n createLink(index, force = false) {\n const value = this.preloadMap.get(index);\n if (force) {\n this.destroySomeLink(index);\n }\n if (value) {\n if (value.state === 1 /* loaded */) {\n return 1 /* loaded */;\n }\n const curlink = this.loadingLinks.get(index);\n if (curlink) {\n if (curlink.isForce !== force) {\n curlink.isForce = force;\n this.loadingLinks.set(index, curlink);\n }\n return 0 /* unloaded */;\n }\n if (this.loadingLinks.size > _Preload.maxLinks) {\n return 0 /* unloaded */;\n }\n const linkDom = document.createElement(\"link\");\n linkDom.rel = \"preload\";\n linkDom.as = \"image\";\n linkDom.href = value.src;\n linkDom.dataset.order = index + \"\";\n document.head.appendChild(linkDom);\n linkDom.onload = () => {\n const value2 = this.preloadMap.get(index);\n if (value2) {\n value2.state = 1 /* loaded */;\n this.preloadMap.set(index, value2);\n document.head.contains(linkDom) && document.head.removeChild(linkDom);\n this.loadingLinks.delete(index);\n this.touch(this.touchIndex + 1, false);\n }\n };\n linkDom.onerror = () => {\n const value2 = this.preloadMap.get(index);\n if (value2 == null ? void 0 : value2.src) {\n linkDom.href = value2.src;\n }\n };\n this.loadingLinks.set(index, {\n link: linkDom,\n isForce: force\n });\n value.state = 0 /* unloaded */;\n this.preloadMap.set(index, value);\n return 0 /* unloaded */;\n }\n return 2 /* error */;\n }\n destroySomeLink(excludeIndex) {\n for (const [index, { link }] of this.loadingLinks) {\n if (excludeIndex !== void 0 && index === excludeIndex) {\n continue;\n }\n document.head.contains(link) && document.head.removeChild(link);\n this.loadingLinks.delete(index);\n }\n }\n async requestAsyncCallBack(callBack, timeout) {\n await new Promise(function(resolve) {\n if (window.requestIdleCallback) {\n requestIdleCallback(() => {\n resolve(1);\n }, { timeout });\n } else {\n setTimeout(() => {\n resolve(2);\n }, timeout);\n }\n });\n callBack();\n }\n dispose() {\n this.destroySomeLink();\n this.preloadMap.clear();\n }\n};\n_Preload.maxLinks = 5;\nvar Preload = _Preload;\n\n// src/presentation.ts\nvar Presentation = class {\n constructor(config) {\n this.namespace = \"netless-app-presentation\";\n this.dispose = disposableStore();\n this.initialized = false;\n this.showPreview = false;\n this.pageIndex = 0;\n this.previewLazyload = null;\n this.timer = null;\n this.justDocsViewReadonly = false;\n var _a;\n this.pages = config.pages;\n this.preload = new Preload(this.pages);\n if (config.thumbnail)\n this.thumbnail = config.thumbnail;\n this.dispose.add(this.preload);\n this.readonly = (_a = config.readonly) != null ? _a : false;\n this.dom = document.createElement(\"div\");\n this.dom.className = this.namespace;\n this.contentDOM = document.createElement(\"div\");\n this.contentDOM.className = this.c(\"content\");\n this.previewDOM = document.createElement(\"div\");\n this.previewDOM.className = this.c(\"preview\");\n this.whiteboardDOM = document.createElement(\"div\");\n this.whiteboardDOM.className = this.c(\"wb-view\");\n this.footerDOM = document.createElement(\"div\");\n this.footerDOM.className = this.c(\"footer\");\n this.pageNumberInputDOM = document.createElement(\"input\");\n this.pageNumberInputDOM.className = this.c(\"page-number-input\");\n this.initialize();\n }\n setDocsViewReadonly(readonly) {\n this.justDocsViewReadonly = readonly;\n }\n initialize() {\n var _a;\n if (this.initialized)\n return;\n this.initialized = true;\n this.dispose.add(() => {\n var _a2;\n return (_a2 = this.previewLazyload) == null ? void 0 : _a2.destroy();\n });\n this.contentDOM.classList.toggle(this.c(\"readonly\"), this.readonly);\n this.dom.appendChild(this.contentDOM);\n const previewMask = this.contentDOM.appendChild(document.createElement(\"div\"));\n previewMask.className = this.c(\"preview-mask\");\n this.dispose.add(listen(previewMask, \"click\", (ev) => {\n if (this.readonly)\n return;\n if (ev.target == previewMask) {\n this.togglePreview(false);\n }\n }));\n this.contentDOM.appendChild(this.previewDOM);\n this.previewDOM.classList.add(\"tele-fancy-scrollbar\");\n const c_previewPage = this.c(\"preview-page\");\n const c_previewPageName = this.c(\"preview-page-name\");\n for (let index = 0; index < this.pages.length; ++index) {\n const page = this.pages[index];\n const previewSRC = page.thumbnail || this.thumbnail(page.src);\n const previewPage = document.createElement(\"a\");\n previewPage.className = `${c_previewPage} ${this.c(`preview-page-${index}`)}`;\n previewPage.setAttribute(\"href\", \"#\");\n previewPage.dataset.pageIndex = String(index);\n const img = document.createElement(\"img\");\n img.width = page.width;\n img.height = page.height;\n img.dataset.src = previewSRC;\n img.dataset.pageIndex = String(index);\n const name = document.createElement(\"span\");\n name.className = c_previewPageName;\n name.textContent = String(index + 1);\n name.dataset.pageIndex = String(index);\n previewPage.appendChild(img);\n previewPage.appendChild(name);\n this.previewDOM.appendChild(previewPage);\n }\n (_a = this.previewLazyload) == null ? void 0 : _a.update();\n this.dispose.add(listen(this.previewDOM, \"click\", (ev) => {\n var _a2;\n if (this.readonly)\n return;\n const pageIndex = (_a2 = ev.target.dataset) == null ? void 0 : _a2.pageIndex;\n if (pageIndex) {\n ev.preventDefault();\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n this.onNewPageIndex(Number(pageIndex), \"preview\");\n this.togglePreview(false);\n }\n }));\n this.updateImage();\n this.contentDOM.appendChild(this.whiteboardDOM);\n this.footerDOM.classList.toggle(this.c(\"readonly\"), this.readonly);\n this.dom.appendChild(this.footerDOM);\n const btnSidebar = document.createElement(\"button\");\n btnSidebar.className = `${this.c(\"footer-btn\")} ${this.c(\"btn-sidebar\")}`;\n btnSidebar.appendChild(sidebarSVG(this.namespace));\n this.footerDOM.appendChild(btnSidebar);\n this.dispose.add(listen(btnSidebar, \"click\", () => {\n if (this.readonly)\n return;\n this.togglePreview();\n }));\n const pageJumps = document.createElement(\"div\");\n pageJumps.className = this.c(\"page-jumps\");\n this.footerDOM.appendChild(pageJumps);\n const btnPageBack = document.createElement(\"button\");\n btnPageBack.className = `${this.c(\"footer-btn\")} ${this.c(\"btn-page-back\")}`;\n btnPageBack.appendChild(arrowLeftSVG(this.namespace));\n pageJumps.appendChild(btnPageBack);\n this.dispose.add(listen(btnPageBack, \"click\", () => {\n if (this.readonly)\n return;\n if (this.pageIndex > 0)\n this.onNewPageIndex(this.pageIndex - 1, \"navigation\");\n }));\n const btnPageNext = document.createElement(\"button\");\n btnPageNext.className = `${this.c(\"footer-btn\")} ${this.c(\"btn-page-next\")}`;\n btnPageNext.appendChild(arrowRightSVG(this.namespace));\n pageJumps.appendChild(btnPageNext);\n this.dispose.add(listen(btnPageNext, \"click\", () => {\n if (this.readonly)\n return;\n if (this.pageIndex < this.pages.length - 1)\n this.onNewPageIndex(this.pageIndex + 1, \"navigation\");\n }));\n const pageNumber = document.createElement(\"div\");\n pageNumber.className = this.c(\"page-number\");\n this.footerDOM.appendChild(pageNumber);\n pageNumber.appendChild(this.pageNumberInputDOM);\n this.pageNumberInputDOM.value = String(this.pageIndex + 1);\n this.pageNumberInputDOM.disabled = this.readonly;\n this.dispose.add(listen(this.pageNumberInputDOM, \"focus\", () => {\n if (this.readonly)\n return;\n this.pageNumberInputDOM.select();\n }));\n this.dispose.add(listen(this.pageNumberInputDOM, \"change\", () => {\n if (this.readonly)\n return;\n if (this.pageNumberInputDOM.value) {\n this.onNewPageIndex(Number(this.pageNumberInputDOM.value) - 1, \"input\");\n }\n }));\n const totalPage = document.createElement(\"span\");\n totalPage.textContent = ` / ${this.pages.length}`;\n pageNumber.appendChild(totalPage);\n this.dispose.add(listen(window, \"keydown\", (ev) => {\n if (this.readonly || this.isEditable(ev.target) || this.justDocsViewReadonly)\n return;\n if ((ev.key == \"ArrowUp\" || ev.key == \"ArrowLeft\") && this.pageIndex > 0)\n this.onNewPageIndex(this.pageIndex - 1, \"keydown\");\n else if ((ev.key == \"ArrowDown\" || ev.key == \"ArrowRight\") && this.pageIndex < this.pages.length - 1)\n this.onNewPageIndex(this.pageIndex + 1, \"keydown\");\n }));\n }\n setDOM(dom) {\n if (this.dom == dom)\n return;\n dom.appendChild(this.contentDOM);\n dom.appendChild(this.footerDOM);\n this.dom = dom;\n }\n setReadonly(readonly) {\n if (this.readonly == readonly)\n return;\n this.contentDOM.classList.toggle(this.c(\"readonly\"), readonly);\n this.footerDOM.classList.toggle(this.c(\"readonly\"), readonly);\n this.pageNumberInputDOM.disabled = readonly;\n this.togglePreview(false);\n this.readonly = readonly;\n }\n setPageIndex(pageIndex) {\n if (Number.isSafeInteger(pageIndex)) {\n this.pageIndex = pageIndex;\n this.pageNumberInputDOM.value = String(pageIndex + 1);\n this.updateImage();\n }\n }\n togglePreview(showPreview) {\n this.showPreview = showPreview != null ? showPreview : !this.showPreview;\n this.contentDOM.classList.toggle(this.c(\"preview-active\"), this.showPreview);\n if (this.showPreview) {\n const previewPageDOM = this.previewDOM.querySelector(\".\" + this.c(`preview-page-${this.pageIndex}`));\n if (previewPageDOM) {\n this.previewLazyload || (this.previewLazyload = new LazyLoad({\n container: this.previewDOM,\n elements_selector: `.${this.c(\"preview-page>img\")}`\n }));\n this.previewDOM.scrollTo({ top: previewPageDOM.offsetTop - 16 });\n }\n }\n }\n // [origin] means the cause:\n // - navigation: user clicked on the left / right button on footer\n // - input: user filled the bottom-right page number input box\n // - preview: user clicked on the left preview menu's item\n // - keydown: this navigation is caused by user press left or right\n // Fastboard dispatchDocsEvent() triggers the \"navigation\" and \"input\" cause\n onNewPageIndex(index, _origin) {\n if (0 <= index && index < this.pages.length) {\n this.setPageIndex(index);\n }\n }\n page() {\n return this.pages[this.pageIndex];\n }\n updateImage() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.preload.touch(this.pageIndex, true);\n }, 200);\n }\n /** Returns a modified URL that points to the thumbnail image. */\n thumbnail(src) {\n try {\n const url = new URL(src);\n url.searchParams.set(\"x-oss-process\", \"image/resize,l_50\");\n return url.toString();\n } catch (err) {\n console.error(err);\n return src;\n }\n }\n c(className) {\n return `${this.namespace}-${className}`;\n }\n isEditable(el) {\n if (!el)\n return false;\n const { tagName } = el;\n return tagName == \"INPUT\" || tagName == \"TEXTAREA\" || tagName == \"SELECT\";\n }\n};\n\n// src/style.scss?inline\nvar style_default = \".netless-app-presentation{height:100%;display:flex;flex-flow:column nowrap}.netless-app-presentation-content{position:relative;height:100%;overflow:hidden}.netless-app-presentation-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-presentation-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:#ededf0e6;box-shadow:inset -1px 0 #0000001c;transition:transform .4s;overflow:auto;overflow-y:scroll}.netless-app-presentation-preview-active .netless-app-presentation-preview-mask{display:block}.netless-app-presentation-preview-active .netless-app-presentation-preview{transform:translate(0)}.netless-app-presentation-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:#0000;outline:none;border:7px solid rgba(0,0,0,0);border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-presentation-preview-page:hover,.netless-app-presentation-preview-page.netless-app-presentation-preview-page-active{border-color:#444e601a}.netless-app-presentation-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-presentation-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;user-select:none}.netless-app-presentation-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-presentation-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:#f9f9fce6;transition:opacity .4s}.netless-app-presentation-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:#0000;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-footer-btn:hover{background:#ededf0e6}@media (hover: none){.netless-app-presentation-footer-btn:hover{background:#0000!important}}.netless-app-presentation-footer-btn>svg{width:100%;height:100%}.netless-app-presentation-footer-btn>svg:nth-of-type(2){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-presentation-footer-btn~.netless-app-presentation-footer-btn{margin-left:15px}.netless-app-presentation-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-presentation-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-presentation-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:#0000;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-page-number-input:hover,.netless-app-presentation-page-number-input:focus,.netless-app-presentation-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-presentation-readonly.netless-app-presentation-footer{display:none}.netless-app-presentation-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden;transition:opacity .2s}.netless-app-presentation-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-presentation-image>img{max-width:100%;max-height:100%;object-fit:contain}.telebox-color-scheme-dark .netless-app-presentation-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-presentation-page-number-input:active,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:focus,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-presentation-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-presentation-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-presentation-preview{background:#323232e6}.netless-app-presentation-scrollbar-container{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:101}.netless-app-presentation-scrollbar-container-x,.netless-app-presentation-scrollbar-container-y{position:absolute;pointer-events:none;display:flex;justify-content:center;box-sizing:border-box;padding:0}.netless-app-presentation-scrollbar-container-x{bottom:0;left:0;height:6px;width:100%;padding-right:6px}.netless-app-presentation-scrollbar-container-y{top:0;right:0;width:6px;height:100%;flex-direction:column;padding-bottom:6px}.netless-app-presentation-scrollbar-x,.netless-app-presentation-scrollbar-y{border-radius:2px;background-color:#1b1f4d4d;pointer-events:auto;cursor:default}.netless-app-presentation-scrollbar-x{height:6px}.netless-app-presentation-scrollbar-y{width:6px}\";\n\n// src/store.ts\nfunction noop() {\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || a && typeof a === \"object\" || typeof a === \"function\";\n}\nfunction readable(value, start = noop) {\n let stop;\n const subscribers = /* @__PURE__ */ new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) {\n for (const run of subscribers) {\n run(value);\n }\n }\n }\n }\n function subscribe(run) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = void 0;\n }\n };\n }\n function reaction(run) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = void 0;\n }\n };\n }\n function dispose2(new_value) {\n if (new_value !== void 0) {\n set(new_value);\n }\n subscribers.clear();\n stop && stop();\n stop = void 0;\n }\n return {\n get value() {\n if (subscribers.size === 0) {\n stop = start(set) || noop;\n stop();\n stop = void 0;\n }\n return value;\n },\n subscribe,\n reaction,\n dispose: dispose2\n };\n}\n\n// src/scrollbar/Draggable.ts\nfunction makeDraggable(element, options) {\n let currentDragger = null;\n let originalMouseX = 0;\n let originalMouseY = 0;\n const { onDragEnd, onDrag, onDragStart, direction = \"xy\" } = options;\n const drag = (e, state) => {\n e.stopPropagation();\n if (!currentDragger)\n return;\n let transformedDragX = 0;\n let transformedDragY = 0;\n if (direction === \"x\") {\n transformedDragX = Math.round(e.pageX - originalMouseX);\n } else if (direction === \"y\") {\n transformedDragY = Math.round(e.pageY - originalMouseY);\n } else {\n transformedDragX = Math.round(e.pageX - originalMouseX);\n transformedDragY = Math.round(e.pageY - originalMouseY);\n }\n if (state === 3 /* END */) {\n onDragEnd == null ? void 0 : onDragEnd({ x: transformedDragX, y: transformedDragY });\n } else {\n onDrag == null ? void 0 : onDrag({ x: transformedDragX, y: transformedDragY });\n }\n };\n element.addEventListener(\"pointerdown\", bindDrag);\n function bindDrag(e) {\n currentDragger = e.target;\n e.stopPropagation();\n if (currentDragger !== element) {\n return;\n }\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n element.addEventListener(\"pointermove\", drag);\n document.body.addEventListener(\"pointerup\", stopDrag);\n document.body.addEventListener(\"pointercancel\", stopDrag);\n element.setPointerCapture(e.pointerId);\n onDragStart == null ? void 0 : onDragStart();\n }\n function removeEventListener2() {\n currentDragger = null;\n element.removeEventListener(\"pointermove\", drag);\n document.body.removeEventListener(\"pointerup\", stopDrag);\n document.body.removeEventListener(\"pointercancel\", stopDrag);\n }\n function stopDrag(e) {\n if (!currentDragger)\n return;\n e.stopPropagation();\n drag(e, 3 /* END */);\n removeEventListener2();\n }\n function destroy() {\n stop();\n element.removeEventListener(\"pointerdown\", bindDrag);\n }\n function stop() {\n removeEventListener2();\n }\n return { destroy };\n}\n\n// src/scrollbar/index.ts\nvar import_debounce = __toESM(require_debounce());\nvar import_isNumber = __toESM(require_isNumber());\nvar Scrollbar = class {\n constructor(container, option, view) {\n this.namespace = \"netless-app-presentation\";\n this.scrollContainer = document.createElement(\"div\");\n this.option = {\n appId: \"\",\n getPageSize: () => {\n return {\n width: 0,\n height: 0\n };\n },\n getWritable: () => false,\n getOriginScale: () => 1,\n syncView: () => void 0\n };\n this.onCameraUpdated = (0, import_debounce.default)(() => {\n var _a, _b;\n if (this.readonly)\n return;\n const { scale, centerX, centerY } = this.view.camera;\n const originScale = this.option.getOriginScale();\n const { width: pageWidth, height: pageHeight } = this.option.getPageSize();\n const { width: viewWidth, height: viewHeight } = this.view.size;\n const originScaleX = viewWidth / pageWidth;\n const originScaleY = viewHeight / pageHeight;\n const ratioX = Math.min(Math.round(originScaleX / scale * 100) / 100, 1);\n const ratioY = Math.min(Math.round(originScaleY / scale * 100) / 100, 1);\n const scrollX = Math.round(centerX * originScaleX);\n const scrollY = Math.round(centerY * originScaleY);\n if (this.scrollbarX) {\n this.scrollbarX.style.width = `${ratioX * 100}%`;\n this.scrollbarX.style.display = ratioX === 1 ? \"none\" : \"block\";\n this.scrollbarX.style.transform = `translateX(${scrollX}px)`;\n }\n if (this.scrollbarY) {\n this.scrollbarY.style.height = `${ratioY * 100}%`;\n this.scrollbarY.style.display = ratioY === 1 ? \"none\" : \"block\";\n this.scrollbarY.style.transform = `translateY(${scrollY}px)`;\n }\n (_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollCameraUpdated) == null ? void 0 : _b.call(_a, this.appId, originScale, scale);\n }, 50);\n this.onDragStart = () => {\n var _a, _b;\n const camera = this.view.camera;\n this.cameraCache = {\n centerX: camera.centerX,\n centerY: camera.centerY,\n scale: camera.scale\n };\n (_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollbarDragStart) == null ? void 0 : _b.call(_a);\n };\n this.onDragX = (transformedDrag) => {\n var _a, _b;\n if (this.cameraCache) {\n const { x } = transformedDrag;\n const { width: pageWidth } = this.option.getPageSize();\n const { width: viewWidth } = this.view.size;\n const originScaleX = viewWidth / pageWidth;\n const { minX, maxX } = this.getScrollXRange(this.cameraCache);\n const scrollX = Math.round(x / originScaleX);\n let centerX = scrollX + this.cameraCache.centerX;\n if (centerX < minX) {\n centerX = minX;\n } else if (centerX > maxX) {\n centerX = maxX;\n }\n this.view.moveCamera({\n centerX,\n animationMode: \"immediately\"\n });\n (_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollbarDragY) == null ? void 0 : _b.call(_a, centerX);\n }\n };\n this.onDragY = (transformedDrag) => {\n var _a, _b;\n if (this.cameraCache) {\n const { y } = transformedDrag;\n const { height: pageHeight } = this.option.getPageSize();\n const { height: viewHeight } = this.view.size;\n const originScaleY = viewHeight / pageHeight;\n const { minY, maxY } = this.getScrollYRange(this.cameraCache);\n const scrollY = Math.round(y / originScaleY);\n let centerY = scrollY + this.cameraCache.centerY;\n if (centerY < minY) {\n centerY = minY;\n } else if (centerY > maxY) {\n centerY = maxY;\n }\n this.view.moveCamera({\n centerY,\n animationMode: \"immediately\"\n });\n (_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollbarDragY) == null ? void 0 : _b.call(_a, centerY);\n }\n };\n this.onDragEnd = () => {\n var _a, _b;\n this.cameraCache = void 0;\n this.option.syncView();\n (_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollbarDragEnd) == null ? void 0 : _b.call(_a);\n };\n this.moveCamera = (camera) => {\n const { centerX, centerY, scale } = camera;\n const cacheCamera = this.view.camera;\n const _camera = {};\n if ((0, import_isNumber.default)(centerX)) {\n const { minX, maxX } = this.getScrollXRange(cacheCamera);\n let newCenterX = centerX;\n if (centerX < minX) {\n newCenterX = minX;\n } else if (centerX > maxX) {\n newCenterX = maxX;\n }\n _camera.centerX = newCenterX;\n }\n if ((0, import_isNumber.default)(centerY)) {\n const { minY, maxY } = this.getScrollYRange(cacheCamera);\n let newCenterY = centerY;\n if (centerY < minY) {\n newCenterY = minY;\n } else if (centerY > maxY) {\n newCenterY = maxY;\n }\n _camera.centerY = newCenterY;\n }\n if ((0, import_isNumber.default)(scale)) {\n let newScale = scale;\n const originScale = this.option.getOriginScale();\n if (scale < originScale) {\n newScale = originScale;\n }\n _camera.scale = newScale;\n }\n this.view.moveCamera(__spreadProps(__spreadValues({}, _camera), {\n animationMode: \"immediately\"\n }));\n this.option.syncView();\n };\n this.scrollContainer.className = this.c(\"scrollbar-container\");\n this.container = container;\n this.option = option;\n this.appId = option.appId;\n this.readonly = option.readonly || false;\n this.view = view;\n this.init();\n }\n c(className) {\n return `${this.namespace}-${className}`;\n }\n setReadonly(bol) {\n this.readonly = bol;\n this.destroy();\n if (!this.readonly) {\n this.init();\n }\n }\n getScrollXRange(camera) {\n const { width: pageWidth } = this.option.getPageSize();\n const { width: viewWidth } = this.view.size;\n const originScaleX = viewWidth / pageWidth;\n const scale = camera.scale;\n const ratio = Math.min(Math.round(originScaleX / scale * 100) / 100, 1);\n const scrollWidth = pageWidth * (1 - ratio);\n const minX = -scrollWidth / 2;\n const maxX = scrollWidth / 2;\n return { minX, maxX };\n }\n getScrollYRange(camera) {\n const { height: pageHeight } = this.option.getPageSize();\n const { height: viewHeight } = this.view.size;\n const originScaleY = viewHeight / pageHeight;\n const scale = camera.scale;\n const ratio = Math.min(Math.round(originScaleY / scale * 100) / 100, 1);\n const scrollHeight = pageHeight * (1 - ratio);\n const minY = -scrollHeight / 2;\n const maxY = scrollHeight / 2;\n return { minY, maxY };\n }\n init() {\n this.scrollbarX = document.createElement(\"div\");\n this.scrollbarX.classList.add(this.c(\"scrollbar-x\"));\n if (this.option.getWritable()) {\n this.draggableX = makeDraggable(this.scrollbarX, {\n direction: \"x\",\n onDrag: this.onDragX,\n onDragEnd: this.onDragEnd,\n onDragStart: this.onDragStart\n });\n }\n Object.assign(this.scrollbarX.style, {\n width: \"100%\",\n display: \"none\"\n });\n this.scrollbarContainerX = document.createElement(\"div\");\n this.scrollbarContainerX.classList.add(this.c(\"scrollbar-container-x\"));\n this.scrollbarContainerX.appendChild(this.scrollbarX);\n this.scrollbarY = document.createElement(\"div\");\n this.scrollbarY.classList.add(this.c(\"scrollbar-y\"));\n if (this.option.getWritable()) {\n this.draggableY = makeDraggable(this.scrollbarY, {\n direction: \"y\",\n onDrag: this.onDragY,\n onDragEnd: this.onDragEnd,\n onDragStart: this.onDragStart\n });\n }\n Object.assign(this.scrollbarY.style, {\n height: \"100%\",\n display: \"none\"\n });\n this.scrollbarContainerY = document.createElement(\"div\");\n this.scrollbarContainerY.classList.add(this.c(\"scrollbar-container-y\"));\n this.scrollbarContainerY.appendChild(this.scrollbarY);\n this.scrollContainer.append(this.scrollbarContainerX, this.scrollbarContainerY);\n this.container.appendChild(this.scrollContainer);\n this.view.callbacks.on(\"onCameraUpdated\", this.onCameraUpdated);\n this.onCameraUpdated();\n }\n destroy() {\n this.view.callbacks.off(\"onCameraUpdated\", this.onCameraUpdated);\n if (this.scrollbarX && this.scrollbarContainerX) {\n this.scrollbarContainerX.removeChild(this.scrollbarX);\n this.scrollbarX.remove();\n this.scrollbarContainerX.remove();\n this.scrollbarX = void 0;\n }\n if (this.scrollbarY && this.scrollbarContainerY) {\n this.scrollbarContainerY.removeChild(this.scrollbarY);\n this.scrollbarY.remove();\n this.scrollbarContainerY.remove();\n this.scrollbarY = void 0;\n }\n if (this.draggableX) {\n this.draggableX.destroy();\n this.draggableX = void 0;\n }\n if (this.draggableY) {\n this.draggableY.destroy();\n this.draggableY = void 0;\n }\n }\n};\n\n// src/app-presentation.ts\nvar import_debounce2 = __toESM(require_debounce());\nvar emptySceneName = \"$$empty$$\";\nvar ppt2page = (ppt, name) => ppt ? { width: ppt.width, height: ppt.height, src: ppt.src, thumbnail: ppt.previewURL, name } : null;\nvar createLogger = (room) => {\n if (room && room.logger) {\n return (...args) => room.logger.info(...args);\n } else {\n return (...args) => console.log(...args);\n }\n};\nvar scenesEqual = (scenes1, scenes2) => {\n if (!scenes1 || !scenes2) {\n return false;\n }\n if (scenes1.length !== scenes2.length)\n return false;\n return scenes1.every((scene, index) => {\n var _a, _b, _c, _d, _e, _f;\n const scene2 = scenes2[index];\n return scene.name === scene2.name && ((_a = scene.ppt) == null ? void 0 : _a.width) === ((_b = scene2.ppt) == null ? void 0 : _b.width) && ((_c = scene.ppt) == null ? void 0 : _c.height) === ((_d = scene2.ppt) == null ? void 0 : _d.height) && ((_e = scene.ppt) == null ? void 0 : _e.src) === ((_f = scene2.ppt) == null ? void 0 : _f.src);\n });\n};\nvar NetlessAppPresentation = {\n kind: \"Presentation\",\n setup(context) {\n var _a, _b, _c;\n const view = context.getView();\n if (!view)\n throw new Error(\"[Presentation]: no whiteboard view, make sure you have added options.scenePath in addApp()\");\n const pages = (_a = context.getScenes()) == null ? void 0 : _a.map(({ ppt, name }) => ppt2page(ppt, name)).filter(Boolean);\n if (!pages || pages.length === 0)\n throw new Error(\"[Presentation]: empty scenes, make sure you have added options.scenes in addApp()\");\n if (pages[0].src.startsWith(\"ppt\"))\n throw new Error(\"[Presentation]: legacy dynamic PPT is unsupported, please use the projector converter and @netless/slide to render it\");\n const scenePath = context.getInitScenePath();\n const options = context.getAppOptions() || {};\n let maxCameraScale = (_b = options.maxCameraScale) != null ? _b : 3;\n if (!(Number.isFinite(maxCameraScale) && maxCameraScale > 0)) {\n console.warn(`[Presentation] maxCameraScale should be a positive number, got ${options.maxCameraScale}`);\n maxCameraScale = 3;\n }\n const log = options.log || createLogger(context.getRoom());\n log(`[Presentation] new ${context.appId}`);\n const dispose2 = disposableStore();\n dispose2.add(() => log(`[Presentation] dispose ${context.appId}`));\n const view$$ = context.createStorage(\"view\", { uid: \"\", originX: 0, originY: 0, width: 0, height: 0 });\n const _addScenePathListener = (name, listener) => {\n const windowManger = context.manager.windowManger;\n windowManger.emitter.on(name, listener);\n return () => windowManger == null ? void 0 : windowManger.emitter.off(name, listener);\n };\n const getPageIndex = (view2) => {\n const focusScenePath = view2.focusScenePath;\n const name = focusScenePath == null ? void 0 : focusScenePath.split(\"/\").pop();\n let _pageIndex = pages.findIndex((page, index) => {\n var _a2;\n const n = (_a2 = page.name) != null ? _a2 : String(index + 1);\n return n === name;\n });\n if (_pageIndex === -1) {\n _pageIndex = 0;\n }\n return _pageIndex;\n };\n let pageIndex = getPageIndex(view);\n const pageIndex$ = readable(pageIndex, (set) => {\n set(pageIndex);\n return _addScenePathListener(\"onAppScenePathChange\", (payload) => {\n const { appId } = payload;\n if (appId === context.appId) {\n const _pageIndex = getPageIndex(payload.view);\n set(_pageIndex);\n }\n });\n });\n dispose2.add(() => {\n pageIndex$.dispose();\n });\n if (context.isAddApp) {\n if (pages.length > 100)\n console.warn(`[Presentation]: too many pages (${pages.length}), may cause performance issues`);\n let redirectResolve = void 0;\n const room2 = context.getRoom();\n if (room2 && room2.isWritable) {\n const scenes = room2.entireScenes()[scenePath];\n if (pageIndex$.value < 0 || pageIndex$.value >= pages.length) {\n throw new Error(`[Presentation] Invalid page index: ${pageIndex$.value}, scenes length: ${pages.length}`);\n }\n new Promise((resolve) => {\n const { name, ppt } = scenes[pageIndex$.value];\n redirectResolve = resolve;\n const _scenes = pages.map((p, index) => {\n var _a2;\n return {\n name: (_a2 = p.name) != null ? _a2 : String(index + 1),\n ppt: { width: p.width, height: p.height, src: p.src }\n };\n });\n if (!scenesEqual(scenes, _scenes)) {\n room2.removeScenes(scenePath);\n room2.putScenes(scenePath, _scenes);\n }\n if (name === _scenes[pageIndex$.value].name && !ppt) {\n context.addPage({ scene: { name: emptySceneName } }).then(() => {\n log(`[Presentation] setup setScenePath ${scenePath}/${emptySceneName}`);\n context.setScenePath(`${scenePath}/${emptySceneName}`).then(() => {\n redirectResolve && redirectResolve(true);\n });\n });\n } else {\n redirectResolve && redirectResolve(false);\n }\n }).then(async (bol) => {\n await syncPage(pageIndex$.value, room2.logger);\n if (bol) {\n log(`[Presentation] setup removeScenes ${scenePath}/${emptySceneName}`);\n room2.removeScenes(`${scenePath}/${emptySceneName}`);\n }\n });\n }\n }\n const me = ((_c = context.getRoom()) == null ? void 0 : _c.uid) || context.getDisplayer().observerId + \"\";\n let throttleSyncView = 0;\n const syncPage = async (index, logger) => {\n var _a2;\n if (!context.getIsWritable())\n return;\n const scenes = context.getDisplayer().entireScenes()[scenePath];\n if (!scenes)\n return;\n const p = pages[index];\n const name = (_a2 = p.name) != null ? _a2 : String(index + 1);\n if (!scenes.some((scene) => scene.name === name)) {\n await context.addPage({ scene: { name, ppt: { width: p.width, height: p.height, src: p.src } } });\n }\n if (logger) {\n logger.info(`[Presentation] syncPage ${scenePath}/${name}`);\n }\n await context.setScenePath(`${scenePath}/${name}`);\n };\n const jumpPage = (index) => {\n var _a2;\n if (!context.getIsWritable()) {\n console.warn(\"[Presentation]: no permission, make sure you have test room.isWritable\");\n return false;\n }\n if (!(0 <= index && index < pages.length)) {\n console.warn(`[Presentation]: page ${index + 1} out of bounds [1, ${pages.length}]`);\n return false;\n }\n const scenes = context.getDisplayer().entireScenes()[scenePath];\n if (!scenes) {\n console.warn(`[Presentation]: no scenes found at ${scenePath}, make sure you have added options.scenePath in addApp()`);\n return false;\n }\n const p = pages[index];\n const name = (_a2 = p.name) != null ? _a2 : String(index + 1);\n if (!scenes.some((scene) => scene.name === name)) {\n context.addPage({ scene: { name, ppt: { width: p.width, height: p.height, src: p.src } } });\n }\n syncPage(index);\n return true;\n };\n const prevPage = () => jumpPage(pageIndex$.value - 1);\n const nextPage = () => jumpPage(pageIndex$.value + 1);\n const pageState = () => ({ index: pageIndex$.value, length: pages.length });\n const scaleDocsToFit = () => {\n const { width, height } = app.page() || {};\n if (width && height) {\n view.moveCameraToContain({\n originX: -width / 2,\n originY: -height / 2,\n width,\n height,\n animationMode: \"immediately\"\n });\n const maxScale = view.camera.scale * (options.disableCameraTransform ? 1 : maxCameraScale);\n const minScale = view.camera.scale;\n view.setCameraBound({\n damping: 1,\n maxContentMode: () => maxScale,\n minContentMode: () => minScale,\n centerX: 0,\n centerY: 0,\n width,\n height\n });\n syncViewFromRemote(true);\n }\n };\n const syncView = () => {\n if (context.getIsWritable()) {\n if (options.debounceSync) {\n clearTimeout(throttleSyncView);\n throttleSyncView = 0;\n }\n if (throttleSyncView > 0)\n return;\n const { width, height } = app.page() || {};\n if (width && height) {\n throttleSyncView = setTimeout(() => {\n throttleSyncView = 0;\n const { camera, size } = view;\n const fixedW = Math.min(size.width, size.height * width / height);\n const fixedH = Math.min(size.height, size.width * height / width);\n const w = fixedW / camera.scale;\n const h = fixedH / camera.scale;\n const x = camera.centerX - w / 2;\n const y = camera.centerY - h / 2;\n view$$.setState({ uid: me, originX: x, originY: y, width: w, height: h });\n }, 50);\n }\n }\n };\n dispose2.add(() => {\n clearTimeout(throttleSyncView);\n throttleSyncView = 0;\n });\n const syncViewFromRemote = (force = false, animate = false) => {\n const { uid, originX, originY, width, height } = view$$.state;\n if ((force || uid !== me) && width > 0 && height > 0) {\n view.moveCameraToContain({\n originX,\n originY,\n width,\n height,\n animationMode: animate ? \"continuous\" : \"immediately\"\n });\n }\n };\n dispose2.add(view$$.addStateChangedListener(() => syncViewFromRemote(false, true)));\n const getPageSize = () => {\n const { width, height } = app.page() || {};\n return { width: width || 0, height: height || 0 };\n };\n const box = context.getBox();\n const app = dispose2.add(createPresentation(box, pages, jumpPage, pageIndex$, view, options.thumbnail, options.useClipView));\n app.contentDOM.dataset.appPresentationVersion = \"0.1.10\";\n app.scaleDocsToFit = scaleDocsToFit;\n app.log = log;\n if (options.justDocsViewReadonly) {\n app.setDocsViewReadonly(true);\n }\n const room = context.getRoom();\n const goToPageByClick = () => {\n var _a2, _b2, _c2, _d;\n const currentApplianceName = (_d = (_c2 = (_b2 = (_a2 = context.getRoom()) == null ? void 0 : _a2.state) == null ? void 0 : _b2.memberState) == null ? void 0 : _c2.currentApplianceName) != null ? _d : \"\";\n if (!app.readonly && currentApplianceName === \"clicker\") {\n nextPage();\n }\n };\n if (room && options.goToPageByClick && app.whiteboardDOM) {\n dispose2.make(() => {\n app.whiteboardDOM.addEventListener(\"click\", goToPageByClick);\n return () => app.whiteboardDOM.removeEventListener(\"click\", goToPageByClick);\n });\n }\n context.mountView(app.whiteboardDOM);\n if (options.disableCameraTransform) {\n view.disableCameraTransform = true;\n }\n scaleDocsToFit();\n dispose2.make(() => {\n view.callbacks.on(\"onSizeUpdated\", scaleDocsToFit);\n return () => view.callbacks.off(\"onSizeUpdated\", scaleDocsToFit);\n });\n if (options.viewport && context.isAddApp && app.page()) {\n const page = app.page();\n const viewport = typeof options.viewport === \"function\" ? options.viewport(page) : options.viewport;\n const fix = (i, x) => i == 0 ? i : i <= 1 ? i * x : i;\n view$$.setState({\n uid: me,\n originX: fix(viewport.x, page.width) - page.width / 2,\n originY: fix(viewport.y, page.height) - page.height / 2,\n width: fix(viewport.width, page.width),\n height: fix(viewport.height, page.height)\n });\n }\n dispose2.make(() => {\n view.callbacks.on(\"onCameraUpdatedByDevice\", syncView);\n return () => view.callbacks.off(\"onCameraUpdatedByDevice\", syncView);\n });\n syncViewFromRemote(true);\n dispose2.add(context.emitter.on(\"writableChange\", (isWritable) => {\n app.setReadonly(!isWritable);\n }));\n const getOriginScale = () => {\n const { size } = view;\n const { width, height } = getPageSize();\n return Math.min(size.height / height, size.width / width);\n };\n const getScale = () => {\n return view.camera.scale;\n };\n const screenshotCurrentPageAsync = async (_context, _width, _height) => {\n var _a2, _b2;\n (_b2 = (_a2 = room == null ? void 0 : room.calibrationTimestamp) == null ? void 0 : _a2.toString()) != null ? _b2 : Date.now().toString();\n const currentPage = pages[pageIndex$.value];\n if (!currentPage) {\n throw new Error(\"[Presentation]: current page not found\");\n }\n const { width, height, src } = currentPage;\n const img = document.createElement(\"img\");\n img.width = width;\n img.height = height;\n img.crossOrigin = \"Anonymous\";\n await new Promise((resolve) => {\n img.onload = resolve;\n img.src = src;\n });\n _context.drawImage(img, 0, 0, width, height, 0, 0, _width || width, _height || height);\n const currentScenePath = view.focusScenePath;\n if (!currentScenePath) {\n throw new Error(\"[Presentation]: current scene path not found\");\n }\n const windowManger = context.getWindowManager();\n if (windowManger._appliancePlugin) {\n await windowManger._appliancePlugin.screenshotToCanvasAsync(_context, currentScenePath, _width || width, _height || height, {\n centerX: 0,\n centerY: 0,\n scale: _width && _height ? Math.min(_width / width, _height / height) : 1\n });\n } else {\n await view.screenshotToCanvasAsync(_context, currentScenePath, _width || width, _height || height, {\n centerX: 0,\n centerY: 0,\n scale: _width && _height ? Math.min(_width / width, _height / height) : 1\n });\n }\n };\n let scrollbar;\n if (options.useScrollbar) {\n dispose2.make(() => {\n scrollbar = new Scrollbar(app.contentDOM, {\n appId: context.appId,\n getPageSize,\n getOriginScale,\n syncView,\n getWritable: () => context.getIsWritable(),\n scrollbarEventCallback: options.scrollbarEventCallback\n }, view);\n return () => scrollbar == null ? void 0 : scrollbar.destroy();\n });\n }\n const moveCamera = (camera) => {\n if (context.getIsWritable() && scrollbar) {\n if (!scrollbar) {\n throw new Error(\"[Presentation]: moveCamera must be called when appOptions: useScrollbar is true\");\n }\n scrollbar.moveCamera(camera);\n return;\n }\n throw new Error(\"[Presentation]: moveCamera must be called in writable room\");\n };\n context.emitter.on(\"destroy\", () => dispose2());\n const reportProgress = (progress, result) => {\n window.postMessage({ type: \"@netless/_result_save_pdf_\", appId: context.appId, progress, result }, \"*\");\n return result;\n };\n const base64url = async (url) => {\n try {\n const a = new URL(url);\n a.searchParams.set(\"t\", Date.now().toString());\n url = a.toString();\n } catch (e) {\n }\n const data = await fetch(url);\n if (!data.ok)\n throw new Error(`[Presentation]: failed to fetch ${url} - ${await data.text()}`);\n const blob = await data.blob();\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n };\n const toPdf = async () => {\n var _a2;\n const MAX = 1920;\n const firstPage = pages[0];\n const { width, height } = firstPage;\n let pdfWidth = Math.floor(width), pdfHeight = Math.floor(height);\n if (pdfWidth > MAX) {\n pdfWidth = MAX;\n pdfHeight = Math.floor(height * pdfWidth / width);\n }\n if (pdfHeight > MAX) {\n pdfHeight = MAX;\n pdfWidth = Math.floor(width * pdfHeight / height);\n }\n const scenes = context.getDisplayer().entireScenes()[scenePath];\n const stage_canvas = document.createElement(\"canvas\");\n stage_canvas.width = pdfWidth;\n stage_canvas.height = pdfHeight;\n const stage = stage_canvas.getContext(\"2d\");\n const wb_canvas = document.createElement(\"canvas\");\n wb_canvas.width = pdfWidth;\n wb_canvas.height = pdfHeight;\n const wb = wb_canvas.getContext(\"2d\");\n if (!wb || !stage)\n return reportProgress(100, null);\n const { jsPDF } = await import('jspdf');\n const pdf = new jsPDF({\n format: [firstPage.width, firstPage.height],\n orientation: firstPage.width > firstPage.height ? \"l\" : \"p\",\n compress: true\n });\n for (let index = 0; index < pages.length; ++index) {\n const p = pages[index];\n const { width: width2, height: height2, src } = p;\n const url = await base64url(src);\n const img = document.createElement(\"img\");\n await new Promise((resolve) => {\n img.onload = resolve;\n img.src = url;\n });\n stage.drawImage(img, 0, 0);\n wb.clearRect(0, 0, pdfWidth, pdfHeight);\n const name = (_a2 = p.name) != null ? _a2 : String(index + 1);\n if (scenes.some((scene) => scene.name == name)) {\n const camera = { centerX: 0, centerY: 0, scale: Math.min(wb_canvas.width / width2, wb_canvas.height / height2) };\n const sPath = `${scenePath}/${name}`;\n const windowManger = context.getWindowManager();\n if (windowManger._appliancePlugin) {\n await windowManger._appliancePlugin.screenshotToCanvasAsync(wb, sPath, wb_canvas.width, wb_canvas.height, camera);\n } else {\n await view.screenshotToCanvasAsync(\n wb,\n sPath,\n wb_canvas.width,\n wb_canvas.height,\n camera\n );\n }\n try {\n const wb_url = wb_canvas.toDataURL(\"image/png\");\n const wb_img = document.createElement(\"img\");\n await new Promise((resolve) => {\n wb_img.onload = resolve;\n wb_img.src = wb_url;\n });\n stage.drawImage(wb_img, 0, 0, pdfWidth, pdfHeight);\n } catch (err) {\n console.warn(err);\n }\n }\n const output = stage_canvas.toDataURL(\"image/jpeg\", 0.6);\n if (index > 0)\n pdf.addPage();\n pdf.addImage(output, \"JPEG\", 0, 0, pdfWidth, pdfHeight, \"\", \"FAST\");\n stage.clearRect(0, 0, pdfWidth, pdfHeight);\n const progress = Math.ceil((index + 1) / pages.length * 100);\n if (progress < 100)\n reportProgress(progress, null);\n }\n const data = pdf.output(\"arraybuffer\");\n const title = box.title;\n return reportProgress(100, { pdf: data, title });\n };\n dispose2.add(listen(window, \"message\", (ev) => {\n if (ev.data && ev.data.type == \"@netless/_request_save_pdf_\" && ev.data.appId == context.appId) {\n toPdf().catch((err) => {\n console.warn(err);\n reportProgress(100, null);\n });\n }\n }));\n const setDocsViewReadonly = (bol) => {\n app.setDocsViewReadonly(bol);\n };\n const setReadonly = (bol) => {\n app.setReadonly(bol);\n if (options.goToPageByClick) ;\n if (scrollbar) {\n scrollbar.setReadonly(bol);\n }\n };\n const controller = { app, view, context, jumpPage, prevPage, nextPage, pageState, toPdf, log, setDocsViewReadonly, setReadonly, moveCamera, getOriginScale, getScale, getPageSize, screenshotCurrentPageAsync };\n dispose2.add(listen(window, \"message\", (ev) => {\n if (ev.data === \"@netless/_presentation_\") {\n if (typeof window !== \"undefined\")\n dispose2.make(() => {\n const debug = window._presentation_ || (window._presentation_ = /* @__PURE__ */ new Set());\n debug.add(controller);\n return () => debug.delete(controller);\n });\n console.log(controller);\n }\n }));\n return controller;\n }\n};\nvar AppPresentation = class extends Presentation {\n constructor(config) {\n super(config);\n this.jumpPage = config.jumpPage;\n }\n updateImage() {\n super.updateImage();\n }\n onNewPageIndex(index, origin) {\n if (origin === \"keydown\" && this.box && !this.box.focus)\n return;\n if (this.log)\n this.log(\"[Presentation] user navigate to\", index + 1, `(${origin})`);\n if (0 <= index && index < this.pages.length) {\n this.jumpPage(index);\n } else {\n console.warn(`[Presentation]: page index ${index} out of bounds [0, ${this.pages.length - 1}]`);\n }\n }\n};\nfunction createPresentation(box, pages, jumpPage, pageIndex$, view, thumbnail, useClipView) {\n box.mountStyles(style_default);\n const app = new AppPresentation({ pages, readonly: box.readonly, jumpPage, thumbnail });\n app.box = box;\n box.mountContent(app.contentDOM);\n box.mountFooter(app.footerDOM);\n app.dispose.add(pageIndex$.subscribe((pageIndex) => {\n app.setPageIndex(pageIndex);\n }));\n if (useClipView && view) {\n const onCameraUpdatedEffectForMaskView = (0, import_debounce2.default)(() => {\n const { width: pageWidth, height: pageHeight } = app.page() || {};\n if (!pageWidth || !pageHeight) {\n return;\n }\n const { scale } = view.camera;\n const { width, height } = view.size;\n const pageRatioX = Math.round((1 - pageWidth * scale / width) / 2 * 100);\n const pageRatioY = Math.round((1 - pageHeight * scale / height) / 2 * 100);\n app.whiteboardDOM.style.clipPath = `inset(${pageRatioY}% ${pageRatioX}%)`;\n }, 50);\n onCameraUpdatedEffectForMaskView();\n const onCameraUpdatedEffect = () => {\n view.callbacks.on(\"onSizeUpdated\", onCameraUpdatedEffectForMaskView);\n view.callbacks.on(\"onCameraUpdated\", onCameraUpdatedEffectForMaskView);\n return () => {\n view.callbacks.off(\"onCameraUpdated\", onCameraUpdatedEffectForMaskView);\n view.callbacks.off(\"onSizeUpdated\", onCameraUpdatedEffectForMaskView);\n };\n };\n app.dispose.make(onCameraUpdatedEffect);\n }\n return app;\n}\nvar install = (register, options = {}) => {\n let app = NetlessAppPresentation;\n if (options.as) {\n app = Object.assign({}, app, { kind: options.as });\n }\n return register({ kind: app.kind, src: app, appOptions: options.appOptions });\n};\n\n// src/index.ts\nvar version = \"0.1.10\";\n\nexport { NetlessAppPresentation, Presentation, Scrollbar, NetlessAppPresentation as default, install, version };\n//# sourceMappingURL=index.mjs.map\n"],"names":["__create","__defProp","__defProps","__getOwnPropDesc","__getOwnPropDescs","__getOwnPropNames","__getOwnPropSymbols","__getProtoOf","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","__commonJS","cb","mod","__copyProps","to","from","except","desc","__toESM","isNodeMode","target","require_isObject","exports","module","isObject","type","require_freeGlobal","freeGlobal","require_root","freeSelf","root","require_now","now","require_trimmedEndIndex","reWhitespace","trimmedEndIndex","string","index","require_baseTrim","reTrimStart","baseTrim","require_Symbol","Symbol2","require_getRawTag","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","require_objectToString","objectToString","require_baseGetTag","nullTag","undefinedTag","baseGetTag","require_isObjectLike","isObjectLike","require_isSymbol","symbolTag","isSymbol","require_toNumber","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","require_debounce","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce3","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","require_isNumber","numberTag","isNumber2","isFn","isDisposable","dispose","disposable","e","isAbortable","disposableStore","disposables","disposableStore2","_a","_b","size2","has2","add","make3","remove3","flush2","_addOne","executor","addEventListener","listener","listen","runningOnBrowser","isBot","isHiDpi","defaultSettings","getExtendedSettings","customSettings","createInstance","classObj","event","eventString","instance","autoInitialize","i","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","element","attribute","setData","attrName","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","callback","arg1","arg2","arg3","addClass","className","removeClass","addTempImage","deleteTempImage","getTempImage","unobserve","observer","resetObserver","unobserveEntered","settings","updateLoadingCount","delta","decreaseToLoadCount","setToLoadCount","isSomethingLoading","haveElementsToLoad","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","fn","parent","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","saveOriginalBackgroundStyle","setOrResetAttribute","restoreOriginalAttrs","restoreOriginalBgImage","manageApplied","manageLoading","setAttributeIfValue","setImageAttributes","setSourcesImg","imgEl","sourceTag","setSourcesIframe","iframe","setSourcesVideo","videoEl","sourceEl","setSourcesObject","object","setBackground","bg1xValue","bgHiDpiValue","bgDataValue","setMultiBackground","setImgsetBackground","bgImgSetDataValue","imgSetValues","bgImageValues","setSourcesFunctions","setSourcesNative","setSourcesFunction","setSources","elementsWithLoadEvent","hasLoadEvent","checkFinish","addEventListener2","eventName","handler","removeEventListener","hasEventListeners","addEventListeners","loadHandler2","errorHandler2","loadEventName","removeEventListeners","eventListeners","doneHandler","loadHandler","goingNative","errorHandler","addOneShotEventListeners","elementToListenTo","loadBackground","loadRegular","load","loadNative","removeImageAttributes","resetSourcesImg","restoreImg","restoreVideo","restoreIframe","iframeEl","restoreObject","objectEl","restoreFunctions","restoreAttributes","restoreFunction","resetClasses","restore","cancelLoading","entry","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","loadAllNative","elements","isIntersecting","getObserverSettings","intersectionHandler","entries","observeElements","updateObserver","elementsToObserve","setObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","setOnlineCheck","resetOnlineCheck","LazyLoad","givenNodeset","elementsToLoad","sidebarSVG","namespace","NS","$svg","$path","arrowLeftSVG","arrowRightSVG","_Preload","pages","force","willLoad","curlink","linkDom","value2","excludeIndex","link","callBack","timeout","resolve","Preload","Presentation","config","readonly","_a2","previewMask","ev","c_previewPage","c_previewPageName","page","previewSRC","previewPage","img","name","pageIndex","btnSidebar","pageJumps","btnPageBack","btnPageNext","pageNumber","totalPage","dom","showPreview","previewPageDOM","_origin","src","url","err","el","tagName","style_default","noop","safe_not_equal","readable","start","stop","subscribers","set","new_value","run","subscribe","reaction","dispose2","makeDraggable","currentDragger","originalMouseX","originalMouseY","onDragEnd","onDrag","onDragStart","direction","drag","state","transformedDragX","transformedDragY","bindDrag","stopDrag","removeEventListener2","destroy","import_debounce","import_isNumber","Scrollbar","container","option","view","scale","centerX","centerY","originScale","pageWidth","pageHeight","viewWidth","viewHeight","originScaleX","originScaleY","ratioX","ratioY","scrollX","scrollY","camera","transformedDrag","x","minX","maxX","y","minY","maxY","cacheCamera","_camera","newCenterX","newCenterY","newScale","bol","ratio","scrollWidth","scrollHeight","import_debounce2","emptySceneName","ppt2page","ppt","createLogger","room","scenesEqual","scenes1","scenes2","scene","_c","_d","_e","_f","scene2","NetlessAppPresentation","context","scenePath","maxCameraScale","log","view$$","_addScenePathListener","windowManger","getPageIndex","view2","focusScenePath","_pageIndex","pageIndex$","payload","appId","redirectResolve","room2","scenes","_scenes","p","syncPage","me","throttleSyncView","logger","jumpPage","prevPage","nextPage","pageState","scaleDocsToFit","width","height","app","maxScale","minScale","syncViewFromRemote","syncView","size","fixedW","fixedH","w","h","animate","uid","originX","originY","getPageSize","box","createPresentation","goToPageByClick","_b2","_c2","currentApplianceName","viewport","fix","isWritable","getOriginScale","getScale","screenshotCurrentPageAsync","_context","_width","_height","currentPage","currentScenePath","scrollbar","moveCamera","reportProgress","progress","base64url","data","blob","reader","reject","toPdf","firstPage","pdfWidth","pdfHeight","stage_canvas","stage","wb_canvas","wb","jsPDF","_interopNamespace","pdf","width2","height2","sPath","wb_url","wb_img","output","title","controller","debug","AppPresentation","origin","thumbnail","useClipView","onCameraUpdatedEffectForMaskView","pageRatioX","pageRatioY","onCameraUpdatedEffect","install","register","version"],"mappings":"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"}
|