@netless/window-manager 1.0.13 → 1.0.15
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-docs-viewer.mjs +2892 -0
- package/dist/app-docs-viewer.mjs.map +1 -0
- package/dist/app-media-player.js +31 -0
- package/dist/app-media-player.js.map +1 -0
- package/dist/app-media-player.mjs +7056 -0
- package/dist/app-media-player.mjs.map +1 -0
- package/dist/app-presentation.js +21 -0
- package/dist/app-presentation.js.map +1 -0
- package/dist/app-presentation.mjs +7538 -0
- package/dist/app-presentation.mjs.map +1 -0
- package/dist/index.d.ts +18 -1
- package/dist/index.js +5 -36
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +941 -10665
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
- package/src/App/AppProxy.ts +8 -3
- package/src/AppManager.ts +16 -11
- package/src/BuiltinApps.ts +32 -10
- package/src/ContainerResizeObserver.ts +14 -5
- package/src/Utils/RoomHacker.ts +3 -1
- package/src/Utils/attributesLogStringify.ts +13 -8
- package/src/Utils/log.ts +13 -9
- package/src/View/MainView.ts +50 -24
- package/src/css.d.ts +1 -0
- package/src/index.ts +255 -18
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Nt(t){if(t&&t.__esModule)return t;var e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});return t&&Object.keys(t).forEach(function(s){if(s!=="default"){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}}),e.default=t,Object.freeze(e)}var $t=`.netless-app-docs-viewer-content{position:relative;height:100%;overflow:hidden}.netless-app-docs-viewer-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-docs-viewer-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:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview-mask{display:block}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview{transform:translate(0)}.netless-app-docs-viewer-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-docs-viewer-preview-page:hover,.netless-app-docs-viewer-preview-page.netless-app-docs-viewer-preview-page-active{border-color:#444e601a}.netless-app-docs-viewer-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-docs-viewer-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-docs-viewer-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-docs-viewer-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-docs-viewer-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:transparent;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-docs-viewer-footer-btn:hover{background:transparent!important}}.netless-app-docs-viewer-footer-btn>svg{width:100%;height:100%}.netless-app-docs-viewer-footer-btn>svg:nth-of-type(2){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-docs-viewer-footer-btn~.netless-app-docs-viewer-footer-btn{margin-left:15px}.netless-app-docs-viewer-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-docs-viewer-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-docs-viewer-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:transparent;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn:hover{background:transparent}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:active{background:transparent;box-shadow:none}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:disabled{color:inherit}.netless-app-docs-viewer-readonly.netless-app-docs-viewer-float-footer{display:none}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:active,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:focus,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-docs-viewer-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-docs-viewer-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-docs-viewer-preview{background:rgba(50,50,50,.9)}.netless-app-docs-viewer-static-scrollbar{position:absolute;top:0;right:0;z-index:2147483647;width:8px;min-height:30px;margin:0;padding:0;border:none;outline:none;border-radius:4px;background:rgba(68,78,96,.4);box-shadow:1px 1px 8px #ffffffb3;opacity:0;transition:background .4s,opacity .4s 3s,transform .2s;user-select:none}.netless-app-docs-viewer-static-scrollbar.netless-app-docs-viewer-static-scrollbar-dragging{background:rgba(68,78,96,.6);opacity:1;transition:background .4s,opacity .4s 3s!important}.netless-app-docs-viewer-static-scrollbar:hover,.netless-app-docs-viewer-static-scrollbar:focus{background:rgba(68,78,96,.5)}.netless-app-docs-viewer-static-scrollbar:active{background:rgba(68,78,96,.6)}.netless-app-docs-viewer-content:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-static-scrollbar{display:none}.netless-app-docs-viewer-static-pages:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.page-renderer-pages-container{position:relative;overflow:hidden}.page-renderer-page{position:absolute;top:0;left:0;background-position:center;background-size:cover;background-repeat:no-repeat}.page-renderer-pages-container.is-hwa .page-renderer-page{will-change:transform}.page-renderer-page-img{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-pages{overflow:hidden;position:relative;height:100%;user-select:none}.netless-app-docs-viewer-static-page{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-wb-view,.netless-app-docs-viewer-dynamic-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden}.netless-app-docs-viewer-dynamic-wb-view .cursor-clicker .ppt-event-source{cursor:pointer}
|
|
2
|
+
`;const Pt=(t,e,s,i)=>{if(s==="length"||s==="prototype"||s==="arguments"||s==="caller")return;const r=Object.getOwnPropertyDescriptor(t,s),a=Object.getOwnPropertyDescriptor(e,s);!Rt(r,a)&&i||Object.defineProperty(t,s,a)},Rt=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},kt=(t,e)=>{const s=Object.getPrototypeOf(e);s!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,s)},Ot=(t,e)=>`/* Wrapped ${t}*/
|
|
3
|
+
${e}`,Lt=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),At=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),zt=(t,e,s)=>{const i=s===""?"":`with ${s.trim()}() `,r=Ot.bind(null,i,e.toString());Object.defineProperty(r,"name",At),Object.defineProperty(t,"toString",{...Lt,value:r})};function Vt(t,e,{ignoreNonConfigurable:s=!1}={}){const{name:i}=t;for(const r of Reflect.ownKeys(e))Pt(t,e,r,s);return kt(t,e),zt(t,e,i),t}const Ht=(t,e={})=>{if(typeof t!="function")throw new TypeError(`Expected the first argument to be a function, got \`${typeof t}\``);const{wait:s=0,maxWait:i=Number.POSITIVE_INFINITY,before:r=!1,after:a=!0}=e;if(!r&&!a)throw new Error("Both `before` and `after` are false, function wouldn't be called.");let o,n,c;const l=function(...d){const h=this,P=()=>{o=void 0,n&&(clearTimeout(n),n=void 0),a&&(c=t.apply(h,d))},R=()=>{n=void 0,o&&(clearTimeout(o),o=void 0),a&&(c=t.apply(h,d))},u=r&&!o;return clearTimeout(o),o=setTimeout(P,s),i>0&&i!==Number.POSITIVE_INFINITY&&!n&&(n=setTimeout(R,i)),u&&(c=t.apply(h,d)),c};return Vt(l,t),l.cancel=()=>{o&&(clearTimeout(o),o=void 0),n&&(clearTimeout(n),n=void 0)},l};var Dt="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",Mt=87,Bt=20,_e=[],Wt=()=>{for(let t=0;t<Bt;t++)_e[t]=Dt.charAt(Math.random()*Mt);return _e.join("")};function Be(t){try{return t()}catch(e){console.error(e)}}var Q=class{constructor(){this.push=this.addDisposer,this.disposers=new Map}addDisposer(t,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(t)?Ut(t):t),e}add(t,e=this.genUID()){const s=t();return s?this.addDisposer(s,e):e}addEventListener(t,e,s,i,r=this.genUID()){return t.addEventListener(e,s,i),this.addDisposer(()=>t.removeEventListener(e,s,i),r),r}setTimeout(t,e,s=this.genUID()){const i=window.setTimeout(()=>{this.remove(s),t()},e);return this.addDisposer(()=>window.clearTimeout(i),s)}setInterval(t,e,s=this.genUID()){const i=window.setInterval(t,e);return this.addDisposer(()=>window.clearInterval(i),s)}remove(t){const e=this.disposers.get(t);return this.disposers.delete(t),e}flush(t){const e=this.remove(t);e&&e()}flushAll(){this.disposers.forEach(Be),this.disposers.clear()}genUID(){let t;do t=Wt();while(this.disposers.has(t));return t}};function Ut(t){return()=>t.forEach(Be)}var I=[],Ft=function(){return I.some(function(t){return t.activeTargets.length>0})},Yt=function(){return I.some(function(t){return t.skippedTargets.length>0})},Ie="ResizeObserver loop completed with undelivered notifications.",jt=function(){var t;typeof ErrorEvent=="function"?t=new ErrorEvent("error",{message:Ie}):(t=document.createEvent("Event"),t.initEvent("error",!1,!1),t.message=Ie),window.dispatchEvent(t)},W;(function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(W||(W={}));var C=function(t){return Object.freeze(t)},Gt=function(){function t(e,s){this.inlineSize=e,this.blockSize=s,C(this)}return t}(),We=function(){function t(e,s,i,r){return this.x=e,this.y=s,this.width=i,this.height=r,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,C(this)}return t.prototype.toJSON=function(){var e=this,s=e.x,i=e.y,r=e.top,a=e.right,o=e.bottom,n=e.left,c=e.width,l=e.height;return{x:s,y:i,top:r,right:a,bottom:o,left:n,width:c,height:l}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}(),de=function(t){return t instanceof SVGElement&&"getBBox"in t},Ue=function(t){if(de(t)){var e=t.getBBox(),s=e.width,i=e.height;return!s&&!i}var r=t,a=r.offsetWidth,o=r.offsetHeight;return!(a||o||t.getClientRects().length)},Ce=function(t){var e;if(t instanceof Element)return!0;var s=(e=t==null?void 0:t.ownerDocument)===null||e===void 0?void 0:e.defaultView;return!!(s&&t instanceof s.Element)},Xt=function(t){switch(t.tagName){case"INPUT":if(t.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},B=typeof window!="undefined"?window:{},X=new WeakMap,Ne=/auto|scroll/,qt=/^tb|vertical/,Jt=/msie|trident/i.test(B.navigator&&B.navigator.userAgent),v=function(t){return parseFloat(t||"0")},L=function(t,e,s){return t===void 0&&(t=0),e===void 0&&(e=0),s===void 0&&(s=!1),new Gt((s?e:t)||0,(s?t:e)||0)},$e=C({devicePixelContentBoxSize:L(),borderBoxSize:L(),contentBoxSize:L(),contentRect:new We(0,0,0,0)}),Fe=function(t,e){if(e===void 0&&(e=!1),X.has(t)&&!e)return X.get(t);if(Ue(t))return X.set(t,$e),$e;var s=getComputedStyle(t),i=de(t)&&t.ownerSVGElement&&t.getBBox(),r=!Jt&&s.boxSizing==="border-box",a=qt.test(s.writingMode||""),o=!i&&Ne.test(s.overflowY||""),n=!i&&Ne.test(s.overflowX||""),c=i?0:v(s.paddingTop),l=i?0:v(s.paddingRight),d=i?0:v(s.paddingBottom),h=i?0:v(s.paddingLeft),P=i?0:v(s.borderTopWidth),R=i?0:v(s.borderRightWidth),u=i?0:v(s.borderBottomWidth),m=i?0:v(s.borderLeftWidth),H=h+l,T=c+d,D=m+R,S=P+u,G=n?t.offsetHeight-S-t.clientHeight:0,_=o?t.offsetWidth-D-t.clientWidth:0,re=r?H+D:0,f=r?T+S:0,p=i?i.width:v(s.width)-re-_,k=i?i.height:v(s.height)-f-G,ae=p+H+_+D,oe=k+T+G+S,O=C({devicePixelContentBoxSize:L(Math.round(p*devicePixelRatio),Math.round(k*devicePixelRatio),a),borderBoxSize:L(ae,oe,a),contentBoxSize:L(p,k,a),contentRect:new We(h,c,p,k)});return X.set(t,O),O},Ye=function(t,e,s){var i=Fe(t,s),r=i.borderBoxSize,a=i.contentBoxSize,o=i.devicePixelContentBoxSize;switch(e){case W.DEVICE_PIXEL_CONTENT_BOX:return o;case W.BORDER_BOX:return r;default:return a}},Kt=function(){function t(e){var s=Fe(e);this.target=e,this.contentRect=s.contentRect,this.borderBoxSize=C([s.borderBoxSize]),this.contentBoxSize=C([s.contentBoxSize]),this.devicePixelContentBoxSize=C([s.devicePixelContentBoxSize])}return t}(),je=function(t){if(Ue(t))return 1/0;for(var e=0,s=t.parentNode;s;)e+=1,s=s.parentNode;return e},Zt=function(){var t=1/0,e=[];I.forEach(function(o){if(o.activeTargets.length!==0){var n=[];o.activeTargets.forEach(function(l){var d=new Kt(l.target),h=je(l.target);n.push(d),l.lastReportedSize=Ye(l.target,l.observedBox),h<t&&(t=h)}),e.push(function(){o.callback.call(o.observer,n,o.observer)}),o.activeTargets.splice(0,o.activeTargets.length)}});for(var s=0,i=e;s<i.length;s++){var r=i[s];r()}return t},Pe=function(t){I.forEach(function(s){s.activeTargets.splice(0,s.activeTargets.length),s.skippedTargets.splice(0,s.skippedTargets.length),s.observationTargets.forEach(function(r){r.isActive()&&(je(r.target)>t?s.activeTargets.push(r):s.skippedTargets.push(r))})})},Qt=function(){var t=0;for(Pe(t);Ft();)t=Zt(),Pe(t);return Yt()&&jt(),t>0},ne,Ge=[],es=function(){return Ge.splice(0).forEach(function(t){return t()})},ts=function(t){if(!ne){var e=0,s=document.createTextNode(""),i={characterData:!0};new MutationObserver(function(){return es()}).observe(s,i),ne=function(){s.textContent="".concat(e?e--:e++)}}Ge.push(t),ne()},ss=function(t){ts(function(){requestAnimationFrame(t)})},K=0,is=function(){return!!K},rs=250,as={attributes:!0,characterData:!0,childList:!0,subtree:!0},Re=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],ke=function(t){return t===void 0&&(t=0),Date.now()+t},ce=!1,os=function(){function t(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return t.prototype.run=function(e){var s=this;if(e===void 0&&(e=rs),!ce){ce=!0;var i=ke(e);ss(function(){var r=!1;try{r=Qt()}finally{if(ce=!1,e=i-ke(),!is())return;r?s.run(1e3):e>0?s.run(e):s.start()}})}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var e=this,s=function(){return e.observer&&e.observer.observe(document.body,as)};document.body?s():B.addEventListener("DOMContentLoaded",s)},t.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Re.forEach(function(s){return B.addEventListener(s,e.listener,!0)}))},t.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),Re.forEach(function(s){return B.removeEventListener(s,e.listener,!0)}),this.stopped=!0)},t}(),le=new os,Oe=function(t){!K&&t>0&&le.start(),K+=t,!K&&le.stop()},ns=function(t){return!de(t)&&!Xt(t)&&getComputedStyle(t).display==="inline"},cs=function(){function t(e,s){this.target=e,this.observedBox=s||W.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var e=Ye(this.target,this.observedBox,!0);return ns(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}(),ls=function(){function t(e,s){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=s}return t}(),q=new WeakMap,Le=function(t,e){for(var s=0;s<t.length;s+=1)if(t[s].target===e)return s;return-1},J=function(){function t(){}return t.connect=function(e,s){var i=new ls(e,s);q.set(e,i)},t.observe=function(e,s,i){var r=q.get(e),a=r.observationTargets.length===0;Le(r.observationTargets,s)<0&&(a&&I.push(r),r.observationTargets.push(new cs(s,i&&i.box)),Oe(1),le.schedule())},t.unobserve=function(e,s){var i=q.get(e),r=Le(i.observationTargets,s),a=i.observationTargets.length===1;r>=0&&(a&&I.splice(I.indexOf(i),1),i.observationTargets.splice(r,1),Oe(-1))},t.disconnect=function(e){var s=this,i=q.get(e);i.observationTargets.slice().forEach(function(r){return s.unobserve(e,r.target)}),i.activeTargets.splice(0,i.activeTargets.length)},t}(),hs=function(){function t(e){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof e!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");J.connect(this,e)}return t.prototype.observe=function(e,s){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ce(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");J.observe(this,e,s)},t.prototype.unobserve=function(e){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ce(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");J.unobserve(this,e)},t.prototype.disconnect=function(){J.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}();function ds(t){const e="http://www.w3.org/2000/svg",s=document.createElementNS(e,"svg");s.setAttribute("class",`${t}-footer-icon-sidebar`),s.setAttribute("viewBox","0 0 64 64");const i=document.createElementNS(e,"path");return i.setAttribute("fill","currentColor"),i.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"),s.appendChild(i),s}function ps(t){const e="http://www.w3.org/2000/svg",s=document.createElementNS(e,"svg");s.setAttribute("class",`${t}-footer-icon-arrow-left`),s.setAttribute("viewBox","0 0 500 500");const i=document.createElementNS(e,"path");return i.setAttribute("fill","currentColor"),i.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"),s.appendChild(i),s}function us(t){const e="http://www.w3.org/2000/svg",s=document.createElementNS(e,"svg");s.setAttribute("class",`${t}-footer-icon-arrow-right`),s.setAttribute("viewBox","0 0 500 500");const i=document.createElementNS(e,"path");return i.setAttribute("fill","currentColor"),i.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"),s.appendChild(i),s}function gs(t){const e="http://www.w3.org/2000/svg",s=document.createElementNS(e,"svg");s.setAttribute("class",`${t}-footer-icon-play`),s.setAttribute("viewBox","0 0 500 500");const i=document.createElementNS(e,"path");return i.setAttribute("fill","currentColor"),i.setAttribute("d","M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z"),s.appendChild(i),s}function fs(t){const e="http://www.w3.org/2000/svg",s=document.createElementNS(e,"svg");s.setAttribute("class",`${t}-footer-icon-pause`),s.setAttribute("viewBox","0 0 500 500");const i=document.createElementNS(e,"path");return i.setAttribute("fill","currentColor"),i.setAttribute("d","M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z"),s.appendChild(i),s}const E=typeof window!="undefined",Xe=E&&!("onscroll"in window)||typeof navigator!="undefined"&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),qe=E&&"IntersectionObserver"in window,Je=E&&"classList"in document.createElement("p"),Ke=E&&window.devicePixelRatio>1,vs={elements_selector:".lazy",container:Xe||E?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},Ze=t=>Object.assign({},vs,t),Ae=function(t,e){let s;const i="LazyLoad::Initialized",r=new t(e);try{s=new CustomEvent(i,{detail:{instance:r}})}catch{s=document.createEvent("CustomEvent"),s.initCustomEvent(i,!1,!1,{instance:r})}window.dispatchEvent(s)},ws=(t,e)=>{if(!!e)if(!e.length)Ae(t,e);else for(let s=0,i;i=e[s];s+=1)Ae(t,i)},b="src",pe="srcset",ue="sizes",Qe="poster",F="llOriginalAttrs",et="data",ge="loading",tt="loaded",st="applied",bs="entered",fe="error",it="native",rt="data-",at="ll-status",g=(t,e)=>t.getAttribute(rt+e),ms=(t,e,s)=>{const i=rt+e;if(s===null){t.removeAttribute(i);return}t.setAttribute(i,s)},Y=t=>g(t,at),$=(t,e)=>ms(t,at,e),ee=t=>$(t,null),ve=t=>Y(t)===null,Ss=t=>Y(t)===ge,ys=t=>Y(t)===fe,we=t=>Y(t)===it,Es=[ge,tt,st,fe],xs=t=>Es.indexOf(Y(t))>=0,x=(t,e,s,i)=>{if(!(!t||typeof t!="function")){if(i!==void 0){t(e,s,i);return}if(s!==void 0){t(e,s);return}t(e)}},V=(t,e)=>{if(e!==""){if(Je){t.classList.add(e);return}t.className+=(t.className?" ":"")+e}},w=(t,e)=>{if(e!==""){if(Je){t.classList.remove(e);return}t.className=t.className.replace(new RegExp("(^|\\s+)"+e+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}},Ts=t=>{t.llTempImage=document.createElement("IMG")},_s=t=>{delete t.llTempImage},ot=t=>t.llTempImage,te=(t,e)=>{if(!e)return;const s=e._observer;!s||s.unobserve(t)},Is=t=>{t.disconnect()},Cs=(t,e,s)=>{e.unobserve_entered&&te(t,s)},be=(t,e)=>{!t||(t.loadingCount+=e)},Ns=t=>{!t||(t.toLoadCount-=1)},nt=(t,e)=>{!t||(t.toLoadCount=e)},$s=t=>t.loadingCount>0,Ps=t=>t.toLoadCount>0,ct=t=>{let e=[];for(let s=0,i;i=t.children[s];s+=1)i.tagName==="SOURCE"&&e.push(i);return e},me=(t,e)=>{const s=t.parentNode;if(!s||s.tagName!=="PICTURE")return;ct(s).forEach(e)},lt=(t,e)=>{ct(t).forEach(e)},se=[b],ht=[b,Qe],U=[b,pe,ue],dt=[et],ie=t=>!!t[F],pt=t=>t[F],ut=t=>delete t[F],A=(t,e)=>{if(ie(t))return;const s={};e.forEach(i=>{s[i]=t.getAttribute(i)}),t[F]=s},Rs=t=>{ie(t)||(t[F]={backgroundImage:t.style.backgroundImage})},ks=(t,e,s)=>{if(!s){t.removeAttribute(e);return}t.setAttribute(e,s)},N=(t,e)=>{if(!ie(t))return;const s=pt(t);e.forEach(i=>{ks(t,i,s[i])})},Os=t=>{if(!ie(t))return;const e=pt(t);t.style.backgroundImage=e.backgroundImage},gt=(t,e,s)=>{V(t,e.class_applied),$(t,st),s&&(e.unobserve_completed&&te(t,e),x(e.callback_applied,t,s))},ft=(t,e,s)=>{V(t,e.class_loading),$(t,ge),s&&(be(s,1),x(e.callback_loading,t,s))},y=(t,e,s)=>{!s||t.setAttribute(e,s)},ze=(t,e)=>{y(t,ue,g(t,e.data_sizes)),y(t,pe,g(t,e.data_srcset)),y(t,b,g(t,e.data_src))},Ls=(t,e)=>{me(t,s=>{A(s,U),ze(s,e)}),A(t,U),ze(t,e)},As=(t,e)=>{A(t,se),y(t,b,g(t,e.data_src))},zs=(t,e)=>{lt(t,s=>{A(s,se),y(s,b,g(s,e.data_src))}),A(t,ht),y(t,Qe,g(t,e.data_poster)),y(t,b,g(t,e.data_src)),t.load()},Vs=(t,e)=>{A(t,dt),y(t,et,g(t,e.data_src))},Hs=(t,e,s)=>{const i=g(t,e.data_bg),r=g(t,e.data_bg_hidpi),a=Ke&&r?r:i;!a||(t.style.backgroundImage=`url("${a}")`,ot(t).setAttribute(b,a),ft(t,e,s))},Ds=(t,e,s)=>{const i=g(t,e.data_bg_multi),r=g(t,e.data_bg_multi_hidpi),a=Ke&&r?r:i;!a||(t.style.backgroundImage=a,gt(t,e,s))},Ms=(t,e,s)=>{const i=g(t,e.data_bg_set);if(!i)return;const r=i.split("|");let a=r.map(o=>`image-set(${o})`);t.style.backgroundImage=a.join(),t.style.backgroundImage===""&&(a=r.map(o=>`-webkit-image-set(${o})`),t.style.backgroundImage=a.join()),gt(t,e,s)},vt={IMG:Ls,IFRAME:As,VIDEO:zs,OBJECT:Vs},Bs=(t,e)=>{const s=vt[t.tagName];!s||s(t,e)},Ws=(t,e,s)=>{const i=vt[t.tagName];!i||(i(t,e),ft(t,e,s))},Us=["IMG","IFRAME","VIDEO","OBJECT"],Fs=t=>Us.indexOf(t.tagName)>-1,wt=(t,e)=>{e&&!$s(e)&&!Ps(e)&&x(t.callback_finish,e)},Ve=(t,e,s)=>{t.addEventListener(e,s),t.llEvLisnrs[e]=s},Ys=(t,e,s)=>{t.removeEventListener(e,s)},Se=t=>!!t.llEvLisnrs,js=(t,e,s)=>{Se(t)||(t.llEvLisnrs={});const i=t.tagName==="VIDEO"?"loadeddata":"load";Ve(t,i,e),Ve(t,"error",s)},he=t=>{if(!Se(t))return;const e=t.llEvLisnrs;for(let s in e){const i=e[s];Ys(t,s,i)}delete t.llEvLisnrs},bt=(t,e,s)=>{_s(t),be(s,-1),Ns(s),w(t,e.class_loading),e.unobserve_completed&&te(t,s)},Gs=(t,e,s,i)=>{const r=we(e);bt(e,s,i),V(e,s.class_loaded),$(e,tt),x(s.callback_loaded,e,i),r||wt(s,i)},Xs=(t,e,s,i)=>{const r=we(e);bt(e,s,i),V(e,s.class_error),$(e,fe),x(s.callback_error,e,i),s.restore_on_error&&N(e,U),r||wt(s,i)},ye=(t,e,s)=>{const i=ot(t)||t;if(Se(i))return;js(i,o=>{Gs(o,t,e,s),he(i)},o=>{Xs(o,t,e,s),he(i)})},qs=(t,e,s)=>{Ts(t),ye(t,e,s),Rs(t),Hs(t,e,s),Ds(t,e,s),Ms(t,e,s)},Js=(t,e,s)=>{ye(t,e,s),Ws(t,e,s)},Ee=(t,e,s)=>{Fs(t)?Js(t,e,s):qs(t,e,s)},Ks=(t,e,s)=>{t.setAttribute("loading","lazy"),ye(t,e,s),Bs(t,e),$(t,it)},He=t=>{t.removeAttribute(b),t.removeAttribute(pe),t.removeAttribute(ue)},Zs=t=>{me(t,e=>{He(e)}),He(t)},mt=t=>{me(t,e=>{N(e,U)}),N(t,U)},Qs=t=>{lt(t,e=>{N(e,se)}),N(t,ht),t.load()},ei=t=>{N(t,se)},ti=t=>{N(t,dt)},si={IMG:mt,IFRAME:ei,VIDEO:Qs,OBJECT:ti},ii=t=>{const e=si[t.tagName];if(!e){Os(t);return}e(t)},ri=(t,e)=>{ve(t)||we(t)||(w(t,e.class_entered),w(t,e.class_exited),w(t,e.class_applied),w(t,e.class_loading),w(t,e.class_loaded),w(t,e.class_error))},ai=(t,e)=>{ii(t),ri(t,e),ee(t),ut(t)},oi=(t,e,s,i)=>{!s.cancel_on_exit||!Ss(t)||t.tagName==="IMG"&&(he(t),Zs(t),mt(t),w(t,s.class_loading),be(i,-1),ee(t),x(s.callback_cancel,t,e,i))},ni=(t,e,s,i)=>{const r=xs(t);$(t,bs),V(t,s.class_entered),w(t,s.class_exited),Cs(t,s,i),x(s.callback_enter,t,e,i),!r&&Ee(t,s,i)},ci=(t,e,s,i)=>{ve(t)||(V(t,s.class_exited),oi(t,e,s,i),x(s.callback_exit,t,e,i))},li=["IMG","IFRAME","VIDEO"],St=t=>t.use_native&&"loading"in HTMLImageElement.prototype,hi=(t,e,s)=>{t.forEach(i=>{li.indexOf(i.tagName)!==-1&&Ks(i,e,s)}),nt(s,0)},di=t=>t.isIntersecting||t.intersectionRatio>0,pi=t=>({root:t.container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}),ui=(t,e,s)=>{t.forEach(i=>di(i)?ni(i.target,i,e,s):ci(i.target,i,e,s))},gi=(t,e)=>{e.forEach(s=>{t.observe(s)})},fi=(t,e)=>{Is(t),gi(t,e)},vi=(t,e)=>{!qe||St(t)||(e._observer=new IntersectionObserver(s=>{ui(s,t,e)},pi(t)))},yt=t=>Array.prototype.slice.call(t),Z=t=>t.container.querySelectorAll(t.elements_selector),wi=t=>yt(t).filter(ve),bi=t=>ys(t),mi=t=>yt(t).filter(bi),De=(t,e)=>wi(t||Z(e)),Si=(t,e)=>{mi(Z(t)).forEach(i=>{w(i,t.class_error),ee(i)}),e.update()},yi=(t,e)=>{!E||(e._onlineHandler=()=>{Si(t,e)},window.addEventListener("online",e._onlineHandler))},Ei=t=>{!E||window.removeEventListener("online",t._onlineHandler)},j=function(t,e){const s=Ze(t);this._settings=s,this.loadingCount=0,vi(s,this),yi(s,this),this.update(e)};j.prototype={update:function(t){const e=this._settings,s=De(t,e);if(nt(this,s.length),Xe||!qe){this.loadAll(s);return}if(St(e)){hi(s,e,this);return}fi(this._observer,s)},destroy:function(){this._observer&&this._observer.disconnect(),Ei(this),Z(this._settings).forEach(t=>{ut(t)}),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){const e=this._settings;De(t,e).forEach(i=>{te(i,this),Ee(i,e,this)})},restoreAll:function(){const t=this._settings;Z(t).forEach(e=>{ai(e,t)})}};j.load=(t,e)=>{const s=Ze(e);Ee(t,s)};j.resetStatus=t=>{ee(t)};E&&ws(j,window.lazyLoadOptions);class Et{constructor({readonly:e,box:s,pages:i,onNewPageIndex:r,onPlay:a}){if(this.pageIndex=0,this.namespace="netless-app-docs-viewer",this.isShowPreview=!1,this.isSmallBox=!1,this.sideEffect=new Q,i.length<=0)throw new Error("[DocsViewer] Empty pages.");this.readonly=e,this.box=s,this.pages=i,this.onNewPageIndex=r,this.onPlay=a,this.onPageIndexChanged=()=>{},this.render()}mount(){this.box.mountContent(this.$content),this.box.mountFooter(this.$footer),this.sideEffect.add(()=>{const e=new j({container:this.$preview,elements_selector:`.${this.wrapClassName("preview-page>img")}`});return()=>e.destroy()},"preview-lazyload")}unmount(){this.$content.remove(),this.$footer.remove()}setReadonly(e){this.readonly!==e&&(this.readonly=e,this.$content.classList.toggle(this.wrapClassName("readonly"),e),this.$footer.classList.toggle(this.wrapClassName("readonly"),e),this.$pageNumberInput.disabled=e)}destroy(){this.sideEffect.flushAll(),this.unmount()}setPageIndex(e){Number.isNaN(e)||(this.pageIndex=e,this.$pageNumberInput.value=String(e+1),this.onPageIndexChanged(e))}setSmallBox(e){this.isSmallBox!==e&&(this.isSmallBox=e,this.$footer.classList.toggle(this.wrapClassName("float-footer"),e))}render(){return this.renderContent(),this.renderFooter(),this.$content}renderContent(){if(!this.$content){const e=document.createElement("div");e.className=this.wrapClassName("content"),this.$content=e,this.readonly&&e.classList.add(this.wrapClassName("readonly")),e.appendChild(this.renderPreviewMask()),e.appendChild(this.renderPreview())}return this.$content}renderPreview(){if(!this.$preview){const e=document.createElement("div");e.className=this.wrapClassName("preview")+" tele-fancy-scrollbar",this.$preview=e;const s=this.wrapClassName("preview-page"),i=this.wrapClassName("preview-page-name");this.pages.forEach((r,a)=>{var o;const n=(o=r.thumbnail)!=null?o:r.src.startsWith("ppt")?void 0:r.src;if(!n)return;const c=String(a),l=document.createElement("a");l.className=s+" "+this.wrapClassName(`preview-page-${a}`),l.setAttribute("href","#"),l.dataset.pageIndex=c;const d=document.createElement("span");d.className=i,d.textContent=String(a+1),d.dataset.pageIndex=c;const h=document.createElement("img");h.width=r.width,h.height=r.height,h.dataset.src=n,h.dataset.pageIndex=c,l.appendChild(h),l.appendChild(d),e.appendChild(l)}),this.sideEffect.addEventListener(e,"click",r=>{var a;if(this.readonly)return;const o=(a=r.target.dataset)==null?void 0:a.pageIndex;o&&(r.preventDefault(),r.stopPropagation(),r.stopImmediatePropagation(),this.onNewPageIndex(Number(o)),this.togglePreview(!1))})}return this.$preview}renderPreviewMask(){return this.$previewMask||(this.$previewMask=document.createElement("div"),this.$previewMask.className=this.wrapClassName("preview-mask"),this.sideEffect.addEventListener(this.$previewMask,"click",e=>{this.readonly||e.target===this.$previewMask&&this.togglePreview(!1)})),this.$previewMask}renderFooter(){if(!this.$footer){const e=document.createElement("div");if(e.className=this.wrapClassName("footer"),this.$footer=e,this.readonly&&e.classList.add(this.wrapClassName("readonly")),this.isSmallBox&&e.classList.add(this.wrapClassName("float-footer")),this.pages.some(c=>c.thumbnail||!c.src.startsWith("ppt"))){const c=this.renderFooterBtn("btn-sidebar",ds(this.namespace));this.sideEffect.addEventListener(c,"click",()=>{this.readonly||this.togglePreview()}),this.$footer.appendChild(c)}const s=document.createElement("div");s.className=this.wrapClassName("page-jumps");const i=this.renderFooterBtn("btn-page-back",ps(this.namespace));if(this.sideEffect.addEventListener(i,"click",()=>{this.readonly||this.onNewPageIndex(this.pageIndex-1)}),s.appendChild(i),this.onPlay){const c=this.renderFooterBtn("btn-page-play",gs(this.namespace),fs(this.namespace)),l=()=>{this.sideEffect.setTimeout(()=>{c.classList.toggle(this.wrapClassName("footer-btn-playing"),!1)},500,"returnPlay")};this.sideEffect.addEventListener(c,"click",()=>{this.readonly||(c.classList.toggle(this.wrapClassName("footer-btn-playing"),!0),this.onPlay&&this.onPlay(),l())}),s.appendChild(c)}const r=this.renderFooterBtn("btn-page-next",us(this.namespace));this.sideEffect.addEventListener(r,"click",()=>{this.readonly||this.onNewPageIndex(this.pageIndex+1)}),s.appendChild(r);const a=document.createElement("div");a.className=this.wrapClassName("page-number");const o=document.createElement("input");o.className=this.wrapClassName("page-number-input"),o.value=String(this.pageIndex+1),this.readonly&&(o.disabled=!0),this.$pageNumberInput=o,this.sideEffect.addEventListener(o,"focus",()=>{o.select()}),this.sideEffect.addEventListener(o,"change",()=>{this.readonly||o.value&&this.onNewPageIndex(Number(o.value)-1)});const n=document.createElement("span");n.textContent=" / "+this.pages.length,a.appendChild(o),a.appendChild(n),this.$footer.appendChild(s),this.$footer.appendChild(a)}return this.$footer}renderFooterBtn(e,s,i){const r=document.createElement("button");return r.className=this.wrapClassName("footer-btn")+" "+this.wrapClassName(e),r.appendChild(s),i&&r.appendChild(i),r}togglePreview(e){if(this.isShowPreview=e!=null?e:!this.isShowPreview,this.$content.classList.toggle(this.wrapClassName("preview-active"),this.isShowPreview),this.isShowPreview){const s=this.$preview.querySelector("."+this.wrapClassName(`preview-page-${this.pageIndex}`));s&&this.$preview.scrollTo({top:s.offsetTop-16})}}wrapClassName(e){return`${this.namespace}-${e}`}}function z(t,e,s){return Math.min(Math.max(t,e),s)}function Me(t){return t.touches?t.touches[0]:t}function xt(t){t.stopPropagation(),t.cancelable&&t.preventDefault()}function Tt(t){if(!t)return!1;const e=t.tagName;return e==="INPUT"||e==="TEXTAREA"||e==="SELECT"}class xi{constructor(e){var s,i,r;this.velocity=0,this.paused=!0,this._animationFrameID=null,this._loopTimestamp=0,this.looper=a=>{if(this.paused)return;let o=Math.floor((a-this._loopTimestamp)/1e3*60)+1;for(this._loopTimestamp=a;o-- >0;)this.stepper();this.onStep(this.current,this),!this.paused&&this.current!==this.target&&window.requestAnimationFrame(this.looper)},this.current=(s=e.start)!=null?s:0,this.target=this.current,this.stiffness=(i=e.stiffness)!=null?i:170,this.damping=(r=e.damping)!=null?r:26,this.onStep=e.onStep}stepTo(e,s){this.paused&&s!=null&&(this.current=s),this.paused=!1,this.target=e,this.onStep(this.current,this),this._loopTimestamp=Date.now(),window.requestAnimationFrame(this.looper)}pause(){this.paused=!0}destroy(){this.pause()}stepper(){const e=-this.stiffness*(this.current-this.target),s=-this.damping*this.velocity,i=this.velocity+(e+s)/60,r=this.current+i/60;Math.abs(i-0)<.01&&Math.abs(r-this.target)<.01?(this.current=this.target,this.velocity=0):(this.current=r,this.velocity=i)}}class Ti{constructor(e,s,i,r){this.scale=1,this.lastVisit=Date.now(),this.pageOffsetY=0,this.pageOffsetX=0,this.visible=!0,this.index=e,this.page=s,this.scale=i,this.pageOffsetX=(r-s.width)/2;const a=document.createElement("div");a.className="page-renderer-page",a.dataset.index=`${e}`,a.style.width=`${s.width*i}px`,a.style.height=`${s.height*i}px`,s.thumbnail&&(a.style.backgroundImage=`url("${s.thumbnail}")`);const o=document.createElement("img");o.className="page-renderer-page-img",o.width=s.width,o.height=s.height,o.src=s.src,a.appendChild(o),this.$page=a}translateY(e){Math.abs(e-this.pageOffsetY)>=.001&&(this.pageOffsetY=e,this.$page.style.transform=`translate(${this.pageOffsetX*this.scale}px, ${this.pageOffsetY*this.scale}px)`)}setScale(e){Math.abs(e-this.scale)>=.001&&(this.scale=e,this.$page.style.width=`${this.page.width*this.scale}px`,this.$page.style.height=`${this.page.height*this.scale}px`,this.$page.style.transform=`translate(${this.pageOffsetX*this.scale}px, ${this.pageOffsetY*this.scale}px)`)}setVisible(e){e!==this.visible&&(this.visible=e,this.$page.style.opacity=e?"1":"0")}}const _i=window.requestIdleCallback||(t=>window.setTimeout(t,5e3)),Ii=window.cancelIdleCallback||window.clearTimeout;class Ci{constructor(e,s,i){this.pages=e,this.pagesIntrinsicWidth=s,this.scale=i,this.els=new Map,this.maxElCount=200,this.gcTimer=null,this.gc=()=>{if(this.gcTimer=null,this.els.size>this.maxElCount){const r=[...this.els.values()].sort((a,o)=>o.lastVisit-a.lastVisit);for(let a=Math.floor(this.maxElCount/4);a<r.length;a++)this.els.delete(r[a].index)}}}getEl(e){let s=this.els.get(e);return s||(s=new Ti(e,this.pages[e],this.scale,this.pagesIntrinsicWidth),this.els.set(e,s)),s.lastVisit=Date.now(),this.els.size>this.maxElCount&&this.gcTimer===null&&(this.gcTimer=_i(this.gc)),s}setScale(e){e!==this.scale&&(this.scale=e,this.els.forEach(s=>s.setScale(e)))}destroy(){this.els.clear(),this.gcTimer!==null&&(Ii(this.gcTimer),this.gcTimer=null)}}class Ni{constructor(e){this._hwaTimeout=NaN,this._turnOffHWA=()=>{window.clearTimeout(this._hwaTimeout),this._hwaTimeout=NaN,this.$pages.classList.toggle("is-hwa",!1)},this.pagesScrollTop=e.pagesScrollTop||0,this.containerWidth=e.containerWidth||1,this.containerHeight=e.containerHeight||1,this.pages=e.pages.map(a=>{if(a.thumbnail)return a;try{const o=new URL(a.src);return o.searchParams.set("x-oss-process","image/resize,l_50"),{...a,thumbnail:o.toString()}}catch(o){return console.error(o),a}});const s=Array(this.pages.length);let i=1/0,r=0;this.pagesIntrinsicHeight=this.pages.reduce((a,o,n)=>(s[n]=a,o.width>r&&(r=o.width),o.height<=i&&(i=o.height),a+o.height),0),this.pagesIntrinsicWidth=r,this.pagesMinHeight=i,this.pagesIntrinsicYs=s,this.scale=this._calcScale(),this.threshold=this._calcThreshold(),this.onPageIndexChanged=e.onPageIndexChanged,this.pageScrollIndex=0,this.pagesScrollTop!==0&&(this.pageScrollIndex=this.findScrollPageIndex(),this.onPageIndexChanged&&this.pageScrollIndex>0&&this.onPageIndexChanged(this.pageScrollIndex)),this.pageElManager=new Ci(this.pages,r,this.scale),this.$pages=this.renderPages()}setContainerSize(e,s){e>0&&s>0&&(e!==this.containerWidth||s!==this.containerHeight)&&(this.containerWidth=e,this.containerHeight=s,this.$pages.style.width=`${this.containerWidth}px`,this.$pages.style.height=`${this.containerHeight}px`,this.scale=this._calcScale(),this.threshold=this._calcThreshold(),this.pageElManager.setScale(this.scale),this.$pages.parentElement&&this.pagesScrollTo(this.pagesScrollTop,!0))}renderPages(){const e=document.createElement("div");return e.className="page-renderer-pages-container",e.style.width=`${this.containerWidth}px`,e.style.height=`${this.containerHeight}px`,e}pagesScrollTo(e,s){if(e=z(e,0,this.pagesIntrinsicHeight-this.containerHeight/this.scale),s||Math.abs(e-this.pagesScrollTop)>=.001){this._turnOnHWA(),this.pagesScrollTop=e;const i=this.findScrollPageIndex(),r=Math.max(i-this.threshold,0),a=Math.min(i+this.threshold,this.pages.length-1);for(let o=0;o<this.$pages.children.length;o++){const n=this.$pages.children[o],c=Number(n.dataset.index);c>=r&&c<=a||(n.remove(),o--)}for(let o=r;o<=a;o++){const n=this.pageElManager.getEl(o);n.$page.parentElement!==this.$pages&&this.$pages.appendChild(n.$page),n.translateY(this.pagesIntrinsicYs[o]-this.pagesScrollTop)}i!==this.pageScrollIndex&&(this.pageScrollIndex=i,this.onPageIndexChanged&&this.onPageIndexChanged(i))}}findScrollPageIndex(){for(let e=0;e<this.pagesIntrinsicYs.length;e++)if(this.pagesIntrinsicYs[e]+this.pages[e].height-this.pagesScrollTop>=.001)return e;return this.pagesIntrinsicYs.length-1}mount(e){e.appendChild(this.$pages),this.pagesScrollTo(this.pagesScrollTop,!0)}unmount(){this.$pages.remove()}destroy(){this.unmount(),this.onPageIndexChanged=void 0,this.pageElManager.destroy(),this._hwaTimeout&&(window.clearTimeout(this._hwaTimeout),this._hwaTimeout=NaN)}_calcScale(){return this.containerWidth/this.pagesIntrinsicWidth||1}_calcThreshold(){return z(Math.ceil(this.containerHeight/this.scale/this.pagesMinHeight/2),1,this.pages.length)}_turnOnHWA(){this._hwaTimeout?window.clearTimeout(this._hwaTimeout):this.$pages.classList.toggle("is-hwa",!0),this._hwaTimeout=window.setTimeout(this._turnOffHWA,1e3)}}const $i=30;class Pi{constructor(e){this.sideEffect=new Q,this.pagesScrollTop=e.pagesScrollTop||0,this.containerWidth=e.containerWidth||1,this.containerHeight=e.containerHeight||1,this.pagesWidth=e.pagesWidth||1,this.pagesHeight=e.pagesHeight||1,this.scale=this._calcScale(),this.scrollbarMinHeight=e.scrollbarMinHeight||$i,this.scrollbarHeight=this._calcScrollbarHeight(),this.readonly=e.readonly,this.wrapClassName=e.wrapClassName,this.onDragScroll=e.onDragScroll,this.$scrollbar=this.renderScrollbar()}mount(e){e.appendChild(this.$scrollbar),this.pagesScrollTo(this.pagesScrollTop,!0)}unmount(){this.$scrollbar.remove()}setReadonly(e){this.readonly=e}setContainerSize(e,s){e>0&&s>0&&(e!==this.containerWidth||s!==this.containerHeight)&&(this.containerWidth=e,this.containerHeight=s,this.scale=this._calcScale(),this._updateScrollbarHeight(),this.$scrollbar.parentElement&&this.pagesScrollTo(this.pagesScrollTop,!0))}pagesScrollTo(e,s){if(e=z(e,0,this.pagesHeight-this.containerHeight/this.scale),s||Math.abs(e-this.pagesScrollTop)>=.001){this.pagesScrollTop=e;const i=this.pagesScrollTop*this.scale,r=this.pagesHeight*this.scale,a=i/(r-this.containerHeight)*(this.containerHeight-this.scrollbarHeight);window.requestAnimationFrame?window.requestAnimationFrame(()=>{this.$scrollbar.style.transform=`translateY(${a}px)`}):this.$scrollbar.style.transform=`translateY(${a}px)`}}destroy(){this.unmount(),this.onDragScroll=void 0,this.sideEffect.flushAll()}renderScrollbar(){const e=document.createElement("button");e.className=this.wrapClassName("scrollbar"),e.style.minHeight=`${this.scrollbarMinHeight}px`,e.style.height=`${this.scrollbarHeight}px`;const s=i=>{if(this.readonly||i.button!=null&&i.button!==0)return;xt(i);const r=this.wrapClassName("scrollbar-dragging");e.classList.toggle(r,!0);const a=this.pagesScrollTop,{clientY:o}=Me(i),n=l=>{if(this.readonly)return;const{clientY:d}=Me(l),h=(d-o)/this.scale;Math.abs(h)>0&&this.onDragScroll&&this.onDragScroll(a+h*(this.pagesHeight*this.scale/this.containerHeight))},c=()=>{e.classList.toggle(r,!1),window.removeEventListener("mousemove",n,!0),window.removeEventListener("touchmove",n,!0),window.removeEventListener("mouseup",c,!0),window.removeEventListener("touchend",c,!0),window.removeEventListener("touchcancel",c,!0)};window.addEventListener("mousemove",n,!0),window.addEventListener("touchmove",n,!0),window.addEventListener("mouseup",c,!0),window.addEventListener("touchend",c,!0),window.addEventListener("touchcancel",c,!0)};return this.sideEffect.addEventListener(e,"mousedown",s),this.sideEffect.addEventListener(e,"touchstart",s),e}_calcScale(){return this.containerWidth/this.pagesWidth||1}_calcScrollbarHeight(){return z(this.containerHeight/(this.pagesHeight*this.scale)*this.containerHeight,this.scrollbarMinHeight,this.containerHeight)}_updateScrollbarHeight(){const e=this._calcScrollbarHeight();Math.abs(e-this.scrollbarHeight)>.001&&(this.scrollbarHeight=e,this.$scrollbar.style.height=`${e}px`)}}const Ri=window.ResizeObserver||hs,M=640;class ki{constructor({context:e,whiteboardView:s,readonly:i,box:r,pages:a,pageScrollTop:o=0,mountWhiteboard:n,onUserScroll:c,baseScenePath:l,appId:d}){this.sideEffect=new Q,this.userScrolling=!1,this.docsViewReadonly=!1,this.onNewPageIndex=u=>{this.scrollToPage(u)},this.toPdf=async()=>{const u=document.createElement("canvas"),m=u.getContext("2d");if(!m||!this.baseScenePath){this.reportProgress(100,null);return}const H=this.whiteboardView.focusScenePath||`${this.baseScenePath}/1`,T=this.pages[0],{jsPDF:D}=await Promise.resolve().then(function(){return Nt(require("jspdf"))}),S=new D({format:[T.width,T.height],orientation:T.width>T.height?"l":"p",compress:!0});for(const[_,re]of this.pages.entries()){const{width:f,height:p,src:k}=re;u.width=f,u.height=p;const ae=f>p?"l":"p";_>0&&S.addPage([f,p],ae);const oe=await this.getBase64FromUrl(k),O=document.createElement("img");O.src=oe,await new Promise(Ct=>O.onload=Ct),m.drawImage(O,0,0);const _t=u.toDataURL("image/png");m.clearRect(0,0,f,p);const xe={centerX:f/2,centerY:p/2+_*p,scale:1},Te=this.context.manager.windowManger;Te._appliancePlugin?await Te._appliancePlugin.screenshotToCanvasAsync(m,H,f,p,xe):this.whiteboardView.screenshotToCanvas(m,H,f,p,xe);const It=u.toDataURL("image/png");S.addImage(_t,"PNG",0,0,f,p,"","FAST"),S.addImage(It,"PNG",0,0,f,p,"","FAST"),m.clearRect(0,0,f,p),Math.ceil((_+1)/this.pages.length*100)<100&&this.reportProgress(Math.ceil((_+1)/this.pages.length*100),null)}const G=S.output("arraybuffer");this.reportProgress(100,{pdf:G,title:this.box.title})},this.context=e,this.whiteboardView=s,this.readonly=i,this.box=r,this.pages=a,this.baseScenePath=l,this.appId=d,this.mountWhiteboard=n,this._onUserScroll=c;const h=this.debounce(()=>{this.userScrolling=!1,this._onUserScroll&&this._onUserScroll(this.pageRenderer.pagesScrollTop)},{wait:80},"debounce-updateUserScroll");this.updateUserScroll=()=>{this.userScrolling=!0,h()},this.viewer=new Et({readonly:i,box:r,pages:a,onNewPageIndex:this.onNewPageIndex});const{width:P,height:R}=this.whiteboardView.size;this.pageRenderer=new Ni({pagesScrollTop:o,pages:this.pages,containerWidth:P,containerHeight:R,onPageIndexChanged:this.viewer.setPageIndex.bind(this.viewer)}),this.scrollbar=new Pi({pagesScrollTop:this.pageRenderer.pagesScrollTop,containerWidth:P,containerHeight:R,pagesWidth:this.pageRenderer.pagesIntrinsicWidth,pagesHeight:this.pageRenderer.pagesIntrinsicHeight,readonly:this.readonly,wrapClassName:this.wrapClassName.bind(this),onDragScroll:u=>{this.pageScrollTo(u),this.updateUserScroll()}}),this.pageScrollStepper=new xi({start:this.pageRenderer.pagesScrollTop,onStep:u=>{this.pageScrollTo(u)}}),this.render()}setDocsViewReadonly(e){this.docsViewReadonly=e}mount(){this.viewer.mount(),this.setupScrollListener();const e=this.debounce(this.renderRatioHeight.bind(this),{wait:80});return this.sideEffect.add(()=>{const s=new Ri(e);return s.observe(this.viewer.$content),()=>s.disconnect()}),this.sideEffect.setTimeout(()=>{this.userScrolling||this.pageScrollTo(this.pageRenderer.pagesScrollTop)},100),this.sideEffect.add(()=>{const s=i=>{i.data.type==="@netless/_request_save_pdf_"&&i.data.appId===this.appId&&this.toPdf().catch(()=>this.reportProgress(100,null))};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s)}}),this}unmount(){return this.viewer.unmount(),this}setReadonly(e){this.readonly!==e&&(this.readonly=e,this.viewer.setReadonly(e),this.scrollbar.setReadonly(e))}destroy(){this.sideEffect.flushAll(),this.pageScrollStepper.destroy(),this._onUserScroll=void 0,this.unmount(),this.viewer.destroy(),this.pageRenderer.destroy(),this.scrollbar.destroy()}syncPageScrollTop(e){!this.userScrolling&&e>=0&&Math.abs(this.pageRenderer.pagesScrollTop-e)>.01&&this.pageScrollStepper.stepTo(e,this.pageRenderer.pagesScrollTop)}render(){this.pageRenderer.mount(this.viewer.$content),this.viewer.$content.appendChild(this.renderWhiteboardView()),this.scrollbar.mount(this.viewer.$content),this.renderRatioHeight()}renderRatioHeight(){const e=this.box.absoluteHeight,s=e<=M;if(this.viewer.setSmallBox(s),s){const i=26/M,r=26/e,a=26/M,o=0,n=Math.max((i+a-(r+o))/2,0);if(this.box.$titleBar){const c=r+n;this.box.$titleBar.style.height=`${c*100}%`}if(this.box.$footer){const c=o+n;this.box.$footer.style.height=`${c*100}%`}}else{if(this.box.$titleBar){const i=Math.max(26/M,26/e);this.box.$titleBar.style.height=`${i*100}%`}if(this.box.$footer){const i=Math.max(26/M,26/e);this.box.$footer.style.height=`${i*100}%`}}}renderWhiteboardView(){return this.$whiteboardView||(this.$whiteboardView=document.createElement("div"),this.$whiteboardView.className=this.wrapClassName("wb-view"),this.mountWhiteboard(this.$whiteboardView),this.sideEffect.addEventListener(this.$whiteboardView,"wheel",e=>{xt(e),this.readonly||(this.pageScrollTo(this.pageRenderer.pagesScrollTop+e.deltaY),this.updateUserScroll())},{passive:!1,capture:!0}),this.sideEffect.addEventListener(this.$whiteboardView,"touchmove",e=>{this.readonly||e.touches.length<=1||this.updateUserScroll()},{passive:!0,capture:!0})),this.$whiteboardView}scrollTopPageToEl(e){return e*this.pageRenderer.scale}scrollTopElToPage(e){return e/this.pageRenderer.scale}elScrollTo(e){this.pageScrollTo(this.scrollTopElToPage(e))}pageScrollTo(e){const s=this.scrollTopElToPage(this.whiteboardView.size.height/2);this.whiteboardView.moveCamera({centerY:z(e+s,s,this.pageRenderer.pagesIntrinsicHeight-s),animationMode:"immediately"})}scrollToPage(e){if(!this.readonly&&!Number.isNaN(e)){const s=this.pageRenderer.pagesIntrinsicYs[e];s>=0&&(this.pageScrollTo(s+5/this.pageRenderer.scale),this.updateUserScroll())}}setupScrollListener(){this.sideEffect.add(()=>{const e=s=>{const{width:i,height:r}=this.whiteboardView.size;if(i<=0||r<=0)return;const a=s.centerY-this.pageRenderer.containerHeight/this.pageRenderer.scale/2;this.pageRenderer.pagesScrollTo(a),this.scrollbar.pagesScrollTo(a)};return this.whiteboardView.callbacks.on("onCameraUpdated",e),()=>this.whiteboardView.callbacks.off("onCameraUpdated",e)}),this.sideEffect.add(()=>{const{updateUserScroll:e}=this;return this.whiteboardView.callbacks.on("onCameraUpdatedByDevice",e),()=>this.whiteboardView.callbacks.off("onCameraUpdatedByDevice",e)}),this.sideEffect.add(()=>{const e=({width:s,height:i})=>{if(s<=0||i<=0)return;this.pageRenderer.setContainerSize(s,i),this.scrollbar.setContainerSize(s,i);const{pagesIntrinsicWidth:r,pagesIntrinsicHeight:a}=this.pageRenderer;this.whiteboardView.moveCameraToContain({originX:0,originY:this.pageRenderer.pagesScrollTop,width:r,height:i/this.pageRenderer.scale,animationMode:"immediately"}),this.whiteboardView.setCameraBound({damping:1,maxContentMode:()=>this.pageRenderer.scale,minContentMode:()=>this.pageRenderer.scale,centerX:r/2,centerY:a/2,width:r,height:a})};return this.whiteboardView.callbacks.on("onSizeUpdated",e),()=>{this.whiteboardView.callbacks.off("onSizeUpdated",e)}},"whiteboard-size-update"),this.sideEffect.addEventListener(window,"keyup",e=>{if(this.readonly||!this.box.focus||this.box.minimized||Tt(e.target)||this.docsViewReadonly)return;let s=null;switch(e.key){case"PageDown":{s=this.pageRenderer.pagesScrollTop+this.pageRenderer.containerHeight/this.pageRenderer.scale;break}case"PageUp":{s=this.pageRenderer.pagesScrollTop-this.pageRenderer.containerHeight/this.pageRenderer.scale;break}case"ArrowDown":{s=this.pageRenderer.pagesScrollTop+this.pageRenderer.containerHeight/4/this.pageRenderer.scale;break}case"ArrowUp":{s=this.pageRenderer.pagesScrollTop-this.pageRenderer.containerHeight/4/this.pageRenderer.scale;break}}s!==null&&(this._onUserScroll?this._onUserScroll(s):(this.pageScrollTo(s),this.updateUserScroll()))},{capture:!0})}debounce(e,s,i){const r=Ht(e,s);return this.sideEffect.addDisposer(()=>r.cancel(),i),r}wrapClassName(e){return"netless-app-docs-viewer-static-"+e}async getBase64FromUrl(e){const i=await(await fetch(this._invalidate(e))).blob();return new Promise(r=>{const a=new FileReader;a.readAsDataURL(i),a.onloadend=()=>{const o=a.result;r(o)}})}_invalidate(e){try{const s=new URL(e);return s.searchParams.set("t",Date.now().toString()),s.toString()}catch{return e}}reportProgress(e,s){window.postMessage({type:"@netless/_result_save_pdf_",appId:this.appId,progress:e,result:s})}}class Oi{constructor({context:e,whiteboardView:s,box:i,pages:r}){this.sideEffect=new Q,this.docsViewReadonly=!1,this.onPlayPPT=()=>{const a=this.context.getRoom();a&&a.pptNextStep()},this._scaleDocsToFitImpl=()=>{const a=this.pages[this.getPageIndex()];a&&(this.whiteboardView.moveCameraToContain({originX:-a.width/2,originY:-a.height/2,width:a.width,height:a.height,animationMode:"immediately"}),this.whiteboardView.setCameraBound({damping:1,maxContentMode:()=>this.whiteboardView.camera.scale,minContentMode:()=>this.whiteboardView.camera.scale,centerX:0,centerY:0,width:a.width,height:a.height}))},this._scaleDocsToFitDebounced=()=>{this.sideEffect.setTimeout(this._scaleDocsToFitImpl,1e3,"_scaleDocsToFitDebounced")},this.scaleDocsToFit=()=>{this._scaleDocsToFitImpl(),this._scaleDocsToFitDebounced()},this.onNewPageIndex=a=>{this.jumpToPage(a,!0)},this.context=e,this.whiteboardView=s,this.box=i,this.pages=r,this.displayer=e.getDisplayer(),this.viewer=new Et({readonly:!e.getIsWritable(),box:i,pages:r,onNewPageIndex:this.onNewPageIndex,onPlay:this.onPlayPPT}),this.render(),this.sideEffect.add(()=>{const a=o=>{this.viewer.setReadonly(!o)};return this.context.emitter.on("writableChange",a),()=>this.context.emitter.off("writableChange",a)}),this.sideEffect.add(()=>{const a=o=>{this.jumpToPage(o.index)};return this.context.emitter.on("sceneStateChange",a),()=>this.context.emitter.off("sceneStateChange",a)})}setDocsViewReadonly(e){this.docsViewReadonly=e}mount(){this.viewer.mount();const e=this.getPageIndex();return e!==0&&this.jumpToPage(e),this.scaleDocsToFit(),this.sideEffect.add(()=>(this.whiteboardView.callbacks.on("onSizeUpdated",this.scaleDocsToFit),()=>{this.whiteboardView.callbacks.off("onSizeUpdated",this.scaleDocsToFit)})),this}unmount(){return this.viewer.unmount(),this}destroy(){this.sideEffect.flushAll(),this.unmount(),this.viewer.destroy()}getPageIndex(){return this.displayer.state.sceneState.index}jumpToPage(e,s){var i,r;if(e=z(e,0,this.pages.length-1),e!==this.getPageIndex()&&this.context.getIsWritable()){const a=this.context.getInitScenePath(),o=(r=(i=this.context.getScenes())==null?void 0:i[e])==null?void 0:r.name;a&&o&&this.context.setScenePath(`${a}/${o}`),this.scaleDocsToFit()}if(e!==this.viewer.pageIndex&&this.viewer.setPageIndex(e),s){const a=this.context.getRoom();if(a){const o=a.state.globalState.__pptState;a.setGlobalState({__pptState:o&&{uuid:o.uuid,pageIndex:e,disableAutoPlay:o.disableAutoPlay}})}}}render(){this.viewer.$content.appendChild(this.renderMask()),this.viewer.$content.appendChild(this.renderWhiteboardView()),this.sideEffect.addEventListener(window,"keydown",e=>{var s;if(!this.docsViewReadonly&&this.box.focus&&!Tt(e.target))switch(e.key){case"ArrowUp":case"ArrowLeft":{this.jumpToPage(this.getPageIndex()-1,!0);break}case"ArrowRight":case"ArrowDown":{(s=this.context.getRoom())==null||s.pptNextStep();break}}})}renderMask(){if(!this.$mask){const e=document.createElement("div");e.className=this.wrapClassName("mask"),this.$mask=e;const s=document.createElement("button");s.className=this.wrapClassName("back");const i=document.createElement("button");i.className=this.wrapClassName("next")}return this.$mask}renderWhiteboardView(){return this.$whiteboardView||(this.$whiteboardView=document.createElement("div"),this.$whiteboardView.className=this.wrapClassName("wb-view"),this.sideEffect.addEventListener(this.$whiteboardView,"click",e=>{var s;const i=this.context.getRoom();if(i&&i.state.memberState.currentApplianceName==="clicker"){for(let r=e.target;r;r=r.parentElement)if((s=r.classList)!=null&&s.contains("ppt-event-source"))return;i.pptNextStep()}}),this.context.mountView(this.$whiteboardView)),this.$whiteboardView}wrapClassName(e){return"netless-app-docs-viewer-dynamic-"+e}}const Li="DocsViewer",Ai={kind:Li,setup(t){const e=t.getBox(),s=t.getScenes();if(!s)throw new Error("[Docs Viewer]: scenes not found.");const i=t.getView();if(!i)throw new Error("[Docs Viewer]: no whiteboard view.");const r=s.map(({ppt:n})=>n?{width:n.width,height:n.height,src:n.src,thumbnail:n.previewURL}:null).filter(n=>Boolean(n));if(r.length<=0)throw new Error("[Docs Viewer]: empty scenes.");e.mountStyles($t);let a=null;return r[0].src.startsWith("ppt")?a=Vi(t,i,e,r):a=zi(t,i,e,r),(t.getAppOptions()||{}).justDocsViewReadonly&&a.setDocsViewReadonly(!0),{setDocsViewReadonly:n=>{a==null||a.setDocsViewReadonly(n)}}}};function zi(t,e,s,i){var r;e.disableCameraTransform=!t.getIsWritable();const a=new ki({context:t,whiteboardView:e,readonly:!t.getIsWritable(),box:s,pages:i,pageScrollTop:(r=t.getAttributes())==null?void 0:r.pageScrollTop,mountWhiteboard:t.mountView.bind(t),onUserScroll:o=>{var n;((n=t.getAttributes())==null?void 0:n.pageScrollTop)!==o&&!s.readonly&&t.updateAttributes(["pageScrollTop"],o)},baseScenePath:t.getInitScenePath(),appId:t.appId}).mount();return a.viewer.onPageIndexChanged=o=>{t.dispatchAppEvent("pageStateChange",{index:o,length:i.length})},t.dispatchAppEvent("pageStateChange",{index:a.viewer.pageIndex,length:i.length}),t.emitter.on("attributesUpdate",o=>{o&&o.pageScrollTop!=null&&a.syncPageScrollTop(o.pageScrollTop)}),t.emitter.on("writableChange",o=>{a.setReadonly(!o),e.disableCameraTransform=!o}),a}function Vi(t,e,s,i){e.disableCameraTransform=!0;const r=new Oi({context:t,whiteboardView:e,box:s,pages:i}).mount();return r.viewer.onPageIndexChanged=a=>{t.dispatchAppEvent("pageStateChange",{index:a,length:i.length})},t.dispatchAppEvent("pageStateChange",{index:r.getPageIndex(),length:i.length}),t.mountView(r.$whiteboardView),t.isAddApp&&e.callbacks.once("onSizeUpdated",({width:a,height:o})=>{if(i.length>0&&s.state!=="maximized"){const{width:n,height:c}=i[0],d=c/n*a-o;d!==0&&t.getIsWritable()&&t.emitter.emit("setBoxSize",{width:s.width,height:s.height+d/s.containerRect.height})}}),r}exports.default=Ai;
|
|
4
|
+
//# sourceMappingURL=app-docs-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-docs-viewer.js","sources":["../node_modules/.pnpm/@netless+app-docs-viewer@0.2.20_jspdf@2.5.2/node_modules/@netless/app-docs-viewer/dist/main.es.js"],"sourcesContent":["var styles = \".netless-app-docs-viewer-content{position:relative;height:100%;overflow:hidden}.netless-app-docs-viewer-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-docs-viewer-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:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview-mask{display:block}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview{transform:translate(0)}.netless-app-docs-viewer-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-docs-viewer-preview-page:hover,.netless-app-docs-viewer-preview-page.netless-app-docs-viewer-preview-page-active{border-color:#444e601a}.netless-app-docs-viewer-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-docs-viewer-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-docs-viewer-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-docs-viewer-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-docs-viewer-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:transparent;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-docs-viewer-footer-btn:hover{background:transparent!important}}.netless-app-docs-viewer-footer-btn>svg{width:100%;height:100%}.netless-app-docs-viewer-footer-btn>svg:nth-of-type(2){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-docs-viewer-footer-btn~.netless-app-docs-viewer-footer-btn{margin-left:15px}.netless-app-docs-viewer-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-docs-viewer-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-docs-viewer-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:transparent;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn:hover{background:transparent}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:active{background:transparent;box-shadow:none}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:disabled{color:inherit}.netless-app-docs-viewer-readonly.netless-app-docs-viewer-float-footer{display:none}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:active,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:focus,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-docs-viewer-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-docs-viewer-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-docs-viewer-preview{background:rgba(50,50,50,.9)}.netless-app-docs-viewer-static-scrollbar{position:absolute;top:0;right:0;z-index:2147483647;width:8px;min-height:30px;margin:0;padding:0;border:none;outline:none;border-radius:4px;background:rgba(68,78,96,.4);box-shadow:1px 1px 8px #ffffffb3;opacity:0;transition:background .4s,opacity .4s 3s,transform .2s;user-select:none}.netless-app-docs-viewer-static-scrollbar.netless-app-docs-viewer-static-scrollbar-dragging{background:rgba(68,78,96,.6);opacity:1;transition:background .4s,opacity .4s 3s!important}.netless-app-docs-viewer-static-scrollbar:hover,.netless-app-docs-viewer-static-scrollbar:focus{background:rgba(68,78,96,.5)}.netless-app-docs-viewer-static-scrollbar:active{background:rgba(68,78,96,.6)}.netless-app-docs-viewer-content:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-static-scrollbar{display:none}.netless-app-docs-viewer-static-pages:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.page-renderer-pages-container{position:relative;overflow:hidden}.page-renderer-page{position:absolute;top:0;left:0;background-position:center;background-size:cover;background-repeat:no-repeat}.page-renderer-pages-container.is-hwa .page-renderer-page{will-change:transform}.page-renderer-page-img{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-pages{overflow:hidden;position:relative;height:100%;user-select:none}.netless-app-docs-viewer-static-page{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-wb-view,.netless-app-docs-viewer-dynamic-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden}.netless-app-docs-viewer-dynamic-wb-view .cursor-clicker .ppt-event-source{cursor:pointer}\\n\";\nconst copyProperty = (to, from, property, ignoreNonConfigurable) => {\n if (property === \"length\" || property === \"prototype\") {\n return;\n }\n if (property === \"arguments\" || property === \"caller\") {\n return;\n }\n const toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n return;\n }\n Object.defineProperty(to, property, fromDescriptor);\n};\nconst canCopyProperty = function(toDescriptor, fromDescriptor) {\n return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);\n};\nconst changePrototype = (to, from) => {\n const fromPrototype = Object.getPrototypeOf(from);\n if (fromPrototype === Object.getPrototypeOf(to)) {\n return;\n }\n Object.setPrototypeOf(to, fromPrototype);\n};\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, \"toString\");\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, \"name\");\nconst changeToString = (to, from, name) => {\n const withName = name === \"\" ? \"\" : `with ${name.trim()}() `;\n const newToString = wrappedToString.bind(null, withName, from.toString());\n Object.defineProperty(newToString, \"name\", toStringName);\n Object.defineProperty(to, \"toString\", { ...toStringDescriptor, value: newToString });\n};\nfunction mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {\n const { name } = to;\n for (const property of Reflect.ownKeys(from)) {\n copyProperty(to, from, property, ignoreNonConfigurable);\n }\n changePrototype(to, from);\n changeToString(to, from, name);\n return to;\n}\nconst debounceFn = (inputFunction, options = {}) => {\n if (typeof inputFunction !== \"function\") {\n throw new TypeError(`Expected the first argument to be a function, got \\`${typeof inputFunction}\\``);\n }\n const {\n wait = 0,\n maxWait = Number.POSITIVE_INFINITY,\n before = false,\n after = true\n } = options;\n if (!before && !after) {\n throw new Error(\"Both `before` and `after` are false, function wouldn't be called.\");\n }\n let timeout;\n let maxTimeout;\n let result;\n const debouncedFunction = function(...arguments_) {\n const context = this;\n const later = () => {\n timeout = void 0;\n if (maxTimeout) {\n clearTimeout(maxTimeout);\n maxTimeout = void 0;\n }\n if (after) {\n result = inputFunction.apply(context, arguments_);\n }\n };\n const maxLater = () => {\n maxTimeout = void 0;\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n if (after) {\n result = inputFunction.apply(context, arguments_);\n }\n };\n const shouldCallNow = before && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {\n maxTimeout = setTimeout(maxLater, maxWait);\n }\n if (shouldCallNow) {\n result = inputFunction.apply(context, arguments_);\n }\n return result;\n };\n mimicFunction(debouncedFunction, inputFunction);\n debouncedFunction.cancel = () => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n if (maxTimeout) {\n clearTimeout(maxTimeout);\n maxTimeout = void 0;\n }\n };\n return debouncedFunction;\n};\nvar SOUP = \"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nvar SOUP_LEN = 87;\nvar ID_LEN = 20;\nvar reusedIdCarrier = [];\nvar genUID = () => {\n for (let i = 0; i < ID_LEN; i++) {\n reusedIdCarrier[i] = SOUP.charAt(Math.random() * SOUP_LEN);\n }\n return reusedIdCarrier.join(\"\");\n};\nfunction invoke(fn) {\n try {\n return fn();\n } catch (e) {\n console.error(e);\n }\n}\nvar SideEffectManager = class {\n constructor() {\n this.push = this.addDisposer;\n this.disposers = /* @__PURE__ */ new Map();\n }\n addDisposer(disposer, disposerID = this.genUID()) {\n this.flush(disposerID);\n this.disposers.set(\n disposerID,\n Array.isArray(disposer) ? joinDisposers(disposer) : disposer\n );\n return disposerID;\n }\n add(executor, disposerID = this.genUID()) {\n const disposers = executor();\n return disposers ? this.addDisposer(disposers, disposerID) : disposerID;\n }\n addEventListener(el, type, listener, options, disposerID = this.genUID()) {\n el.addEventListener(type, listener, options);\n this.addDisposer(\n () => el.removeEventListener(type, listener, options),\n disposerID\n );\n return disposerID;\n }\n setTimeout(handler, timeout, disposerID = this.genUID()) {\n const ticket = window.setTimeout(() => {\n this.remove(disposerID);\n handler();\n }, timeout);\n return this.addDisposer(() => window.clearTimeout(ticket), disposerID);\n }\n setInterval(handler, timeout, disposerID = this.genUID()) {\n const ticket = window.setInterval(handler, timeout);\n return this.addDisposer(() => window.clearInterval(ticket), disposerID);\n }\n remove(disposerID) {\n const disposer = this.disposers.get(disposerID);\n this.disposers.delete(disposerID);\n return disposer;\n }\n flush(disposerID) {\n const disposer = this.remove(disposerID);\n if (disposer) {\n disposer();\n }\n }\n flushAll() {\n this.disposers.forEach(invoke);\n this.disposers.clear();\n }\n genUID() {\n let uid;\n do {\n uid = genUID();\n } while (this.disposers.has(uid));\n return uid;\n }\n};\nfunction joinDisposers(disposers) {\n return () => disposers.forEach(invoke);\n}\nvar resizeObservers = [];\nvar hasActiveObservations = function() {\n return resizeObservers.some(function(ro) {\n return ro.activeTargets.length > 0;\n });\n};\nvar hasSkippedObservations = function() {\n return resizeObservers.some(function(ro) {\n return ro.skippedTargets.length > 0;\n });\n};\nvar msg = \"ResizeObserver loop completed with undelivered notifications.\";\nvar deliverResizeLoopError = function() {\n var event;\n if (typeof ErrorEvent === \"function\") {\n event = new ErrorEvent(\"error\", {\n message: msg\n });\n } else {\n event = document.createEvent(\"Event\");\n event.initEvent(\"error\", false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nvar ResizeObserverBoxOptions;\n(function(ResizeObserverBoxOptions2) {\n ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nvar freeze = function(obj) {\n return Object.freeze(obj);\n};\nvar ResizeObserverSize = function() {\n function ResizeObserverSize2(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize2;\n}();\nvar DOMRectReadOnly = function() {\n function DOMRectReadOnly2(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly2.prototype.toJSON = function() {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x, y, top, right, bottom, left, width, height };\n };\n DOMRectReadOnly2.fromRect = function(rectangle) {\n return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly2;\n}();\nvar isSVG = function(target) {\n return target instanceof SVGElement && \"getBBox\" in target;\n};\nvar isHidden = function(target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function(obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function(target) {\n switch (target.tagName) {\n case \"INPUT\":\n if (target.type !== \"image\") {\n break;\n }\n case \"VIDEO\":\n case \"AUDIO\":\n case \"EMBED\":\n case \"OBJECT\":\n case \"CANVAS\":\n case \"IFRAME\":\n case \"IMG\":\n return true;\n }\n return false;\n};\nvar global = typeof window !== \"undefined\" ? window : {};\nvar cache = /* @__PURE__ */ new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function(pixel) {\n return parseFloat(pixel || \"0\");\n};\nvar size = function(inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) {\n inlineSize = 0;\n }\n if (blockSize === void 0) {\n blockSize = 0;\n }\n if (switchSizes === void 0) {\n switchSizes = false;\n }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function(target, forceRecalculation) {\n if (forceRecalculation === void 0) {\n forceRecalculation = false;\n }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === \"border-box\";\n var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function(target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nvar ResizeObserverEntry = function() {\n function ResizeObserverEntry2(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry2;\n}();\nvar calculateDepthForNode = function(node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nvar broadcastActiveObservations = function() {\n var shallowestDepth = Infinity;\n var callbacks2 = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks2.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nvar gatherActiveObservationsAtDepth = function(depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n } else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nvar process = function() {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nvar trigger;\nvar callbacks = [];\nvar notify = function() {\n return callbacks.splice(0).forEach(function(cb) {\n return cb();\n });\n};\nvar queueMicroTask = function(callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode(\"\");\n var config = { characterData: true };\n new MutationObserver(function() {\n return notify();\n }).observe(el_1, config);\n trigger = function() {\n el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++);\n };\n }\n callbacks.push(callback);\n trigger();\n};\nvar queueResizeObserver = function(cb) {\n queueMicroTask(function ResizeObserver2() {\n requestAnimationFrame(cb);\n });\n};\nvar watching = 0;\nvar isWatching = function() {\n return !!watching;\n};\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n \"resize\",\n \"load\",\n \"transitionend\",\n \"animationend\",\n \"animationstart\",\n \"animationiteration\",\n \"keyup\",\n \"keydown\",\n \"mouseup\",\n \"mousedown\",\n \"mouseover\",\n \"mouseout\",\n \"blur\",\n \"focus\"\n];\nvar time = function(timeout) {\n if (timeout === void 0) {\n timeout = 0;\n }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = function() {\n function Scheduler2() {\n var _this = this;\n this.stopped = true;\n this.listener = function() {\n return _this.schedule();\n };\n }\n Scheduler2.prototype.run = function(timeout) {\n var _this = this;\n if (timeout === void 0) {\n timeout = CATCH_PERIOD;\n }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function() {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n } finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1e3);\n } else if (timeout > 0) {\n _this.run(timeout);\n } else {\n _this.start();\n }\n }\n });\n };\n Scheduler2.prototype.schedule = function() {\n this.stop();\n this.run();\n };\n Scheduler2.prototype.observe = function() {\n var _this = this;\n var cb = function() {\n return _this.observer && _this.observer.observe(document.body, observerConfig);\n };\n document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n };\n Scheduler2.prototype.start = function() {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function(name) {\n return global.addEventListener(name, _this.listener, true);\n });\n }\n };\n Scheduler2.prototype.stop = function() {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function(name) {\n return global.removeEventListener(name, _this.listener, true);\n });\n this.stopped = true;\n }\n };\n return Scheduler2;\n}();\nvar scheduler = new Scheduler();\nvar updateCount = function(n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nvar skipNotifyOnElement = function(target) {\n return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n};\nvar ResizeObservation = function() {\n function ResizeObservation2(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation2.prototype.isActive = function() {\n var size2 = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size2;\n }\n if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation2;\n}();\nvar ResizeObserverDetail = function() {\n function ResizeObserverDetail2(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail2;\n}();\nvar observerMap = /* @__PURE__ */ new WeakMap();\nvar getObservationIndex = function(observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = function() {\n function ResizeObserverController2() {\n }\n ResizeObserverController2.connect = function(resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController2.observe = function(resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController2.unobserve = function(resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController2.disconnect = function(resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function(ot) {\n return _this.unobserve(resizeObserver, ot.target);\n });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController2;\n}();\nvar ResizeObserver$1 = function() {\n function ResizeObserver2(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver2.prototype.observe = function(target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver2.prototype.unobserve = function(target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver2.prototype.disconnect = function() {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver2.toString = function() {\n return \"function ResizeObserver () { [polyfill code] }\";\n };\n return ResizeObserver2;\n}();\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(\n \"d\",\n \"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 );\n $svg.appendChild($path);\n return $svg;\n}\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(\n \"d\",\n \"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 );\n $svg.appendChild($path);\n return $svg;\n}\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(\n \"d\",\n \"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 );\n $svg.appendChild($path);\n return $svg;\n}\nfunction playSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-play`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nfunction pauseSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-pause`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nconst runningOnBrowser = typeof window !== \"undefined\";\nconst isBot = runningOnBrowser && !(\"onscroll\" in window) || typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\nconst 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};\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\nconst 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};\nconst 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};\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\nconst 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};\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\nconst 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};\nconst addClass = (element, className) => {\n if (className === \"\") {\n return;\n }\n if (supportsClassList) {\n element.classList.add(className);\n return;\n }\n element.className += (element.className ? \" \" : \"\") + className;\n};\nconst removeClass = (element, className) => {\n if (className === \"\") {\n return;\n }\n if (supportsClassList) {\n element.classList.remove(className);\n return;\n }\n element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n};\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\nconst getTempImage = (element) => element.llTempImage;\nconst unobserve = (element, instance) => {\n if (!instance)\n return;\n const observer = instance._observer;\n if (!observer)\n return;\n observer.unobserve(element);\n};\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered)\n unobserve(element, instance);\n};\nconst updateLoadingCount = (instance, delta) => {\n if (!instance)\n return;\n instance.loadingCount += delta;\n};\nconst decreaseToLoadCount = (instance) => {\n if (!instance)\n return;\n instance.toLoadCount -= 1;\n};\nconst setToLoadCount = (instance, value) => {\n if (!instance)\n return;\n instance.toLoadCount = value;\n};\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\nconst 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};\nconst 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};\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\nconst 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};\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\nconst 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};\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\nconst 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};\nconst 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};\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\nconst 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};\nconst 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};\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\nconst 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};\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\nconst 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};\nconst 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};\nconst 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};\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\nconst 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};\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\nconst addEventListeners = (element, loadHandler2, errorHandler2) => {\n if (!hasEventListeners(element))\n element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler2);\n addEventListener(element, \"error\", errorHandler2);\n};\nconst 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};\nconst 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};\nconst 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};\nconst 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};\nconst 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};\nconst 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};\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\nconst 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};\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\nconst 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};\nconst 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};\nconst 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};\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\nconst shouldUseNative = (settings) => settings.use_native && \"loading\" in HTMLImageElement.prototype;\nconst 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};\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\nconst 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};\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\nconst queryElements = (settings) => settings.container.querySelectorAll(settings.elements_selector);\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\nconst getElementsToLoad = (elements, settings) => excludeManagedElements(elements || queryElements(settings));\nconst 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};\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\nconst resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\nconst 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 || !supportsIntersectionObserver) {\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}\nclass DocsViewer {\n constructor({ readonly, box, pages, onNewPageIndex, onPlay }) {\n this.pageIndex = 0;\n this.namespace = \"netless-app-docs-viewer\";\n this.isShowPreview = false;\n this.isSmallBox = false;\n this.sideEffect = new SideEffectManager();\n if (pages.length <= 0) {\n throw new Error(\"[DocsViewer] Empty pages.\");\n }\n this.readonly = readonly;\n this.box = box;\n this.pages = pages;\n this.onNewPageIndex = onNewPageIndex;\n this.onPlay = onPlay;\n this.onPageIndexChanged = () => void 0;\n this.render();\n }\n mount() {\n this.box.mountContent(this.$content);\n this.box.mountFooter(this.$footer);\n this.sideEffect.add(() => {\n const previewLazyLoad = new LazyLoad({\n container: this.$preview,\n elements_selector: `.${this.wrapClassName(\"preview-page>img\")}`\n });\n return () => previewLazyLoad.destroy();\n }, \"preview-lazyload\");\n }\n unmount() {\n this.$content.remove();\n this.$footer.remove();\n }\n setReadonly(readonly) {\n if (this.readonly !== readonly) {\n this.readonly = readonly;\n this.$content.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n this.$footer.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n this.$pageNumberInput.disabled = readonly;\n }\n }\n destroy() {\n this.sideEffect.flushAll();\n this.unmount();\n }\n setPageIndex(pageIndex) {\n if (!Number.isNaN(pageIndex)) {\n this.pageIndex = pageIndex;\n this.$pageNumberInput.value = String(pageIndex + 1);\n this.onPageIndexChanged(pageIndex);\n }\n }\n setSmallBox(isSmallBox) {\n if (this.isSmallBox !== isSmallBox) {\n this.isSmallBox = isSmallBox;\n this.$footer.classList.toggle(this.wrapClassName(\"float-footer\"), isSmallBox);\n }\n }\n render() {\n this.renderContent();\n this.renderFooter();\n return this.$content;\n }\n renderContent() {\n if (!this.$content) {\n const $content = document.createElement(\"div\");\n $content.className = this.wrapClassName(\"content\");\n this.$content = $content;\n if (this.readonly) {\n $content.classList.add(this.wrapClassName(\"readonly\"));\n }\n $content.appendChild(this.renderPreviewMask());\n $content.appendChild(this.renderPreview());\n }\n return this.$content;\n }\n renderPreview() {\n if (!this.$preview) {\n const $preview = document.createElement(\"div\");\n $preview.className = this.wrapClassName(\"preview\") + \" tele-fancy-scrollbar\";\n this.$preview = $preview;\n const pageClassName = this.wrapClassName(\"preview-page\");\n const pageNameClassName = this.wrapClassName(\"preview-page-name\");\n this.pages.forEach((page, i) => {\n var _a;\n const previewSRC = (_a = page.thumbnail) != null ? _a : page.src.startsWith(\"ppt\") ? void 0 : page.src;\n if (!previewSRC) {\n return;\n }\n const pageIndex = String(i);\n const $page = document.createElement(\"a\");\n $page.className = pageClassName + \" \" + this.wrapClassName(`preview-page-${i}`);\n $page.setAttribute(\"href\", \"#\");\n $page.dataset.pageIndex = pageIndex;\n const $name = document.createElement(\"span\");\n $name.className = pageNameClassName;\n $name.textContent = String(i + 1);\n $name.dataset.pageIndex = pageIndex;\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 = pageIndex;\n $page.appendChild($img);\n $page.appendChild($name);\n $preview.appendChild($page);\n });\n this.sideEffect.addEventListener($preview, \"click\", (ev) => {\n var _a;\n if (this.readonly) {\n return;\n }\n const pageIndex = (_a = ev.target.dataset) == null ? void 0 : _a.pageIndex;\n if (pageIndex) {\n ev.preventDefault();\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n this.onNewPageIndex(Number(pageIndex));\n this.togglePreview(false);\n }\n });\n }\n return this.$preview;\n }\n renderPreviewMask() {\n if (!this.$previewMask) {\n this.$previewMask = document.createElement(\"div\");\n this.$previewMask.className = this.wrapClassName(\"preview-mask\");\n this.sideEffect.addEventListener(this.$previewMask, \"click\", (ev) => {\n if (this.readonly) {\n return;\n }\n if (ev.target === this.$previewMask) {\n this.togglePreview(false);\n }\n });\n }\n return this.$previewMask;\n }\n renderFooter() {\n if (!this.$footer) {\n const $footer = document.createElement(\"div\");\n $footer.className = this.wrapClassName(\"footer\");\n this.$footer = $footer;\n if (this.readonly) {\n $footer.classList.add(this.wrapClassName(\"readonly\"));\n }\n if (this.isSmallBox) {\n $footer.classList.add(this.wrapClassName(\"float-footer\"));\n }\n if (this.pages.some((page) => page.thumbnail || !page.src.startsWith(\"ppt\"))) {\n const $btnSidebar = this.renderFooterBtn(\"btn-sidebar\", sidebarSVG(this.namespace));\n this.sideEffect.addEventListener($btnSidebar, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.togglePreview();\n });\n this.$footer.appendChild($btnSidebar);\n }\n const $pageJumps = document.createElement(\"div\");\n $pageJumps.className = this.wrapClassName(\"page-jumps\");\n const $btnPageBack = this.renderFooterBtn(\"btn-page-back\", arrowLeftSVG(this.namespace));\n this.sideEffect.addEventListener($btnPageBack, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.onNewPageIndex(this.pageIndex - 1);\n });\n $pageJumps.appendChild($btnPageBack);\n if (this.onPlay) {\n const $btnPlay = this.renderFooterBtn(\n \"btn-page-play\",\n playSVG(this.namespace),\n pauseSVG(this.namespace)\n );\n const returnPlay = () => {\n this.sideEffect.setTimeout(\n () => {\n $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), false);\n },\n 500,\n \"returnPlay\"\n );\n };\n this.sideEffect.addEventListener($btnPlay, \"click\", () => {\n if (this.readonly) {\n return;\n }\n $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), true);\n if (this.onPlay) {\n this.onPlay();\n }\n returnPlay();\n });\n $pageJumps.appendChild($btnPlay);\n }\n const $btnPageNext = this.renderFooterBtn(\"btn-page-next\", arrowRightSVG(this.namespace));\n this.sideEffect.addEventListener($btnPageNext, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.onNewPageIndex(this.pageIndex + 1);\n });\n $pageJumps.appendChild($btnPageNext);\n const $pageNumber = document.createElement(\"div\");\n $pageNumber.className = this.wrapClassName(\"page-number\");\n const $pageNumberInput = document.createElement(\"input\");\n $pageNumberInput.className = this.wrapClassName(\"page-number-input\");\n $pageNumberInput.value = String(this.pageIndex + 1);\n if (this.readonly) {\n $pageNumberInput.disabled = true;\n }\n this.$pageNumberInput = $pageNumberInput;\n this.sideEffect.addEventListener($pageNumberInput, \"focus\", () => {\n $pageNumberInput.select();\n });\n this.sideEffect.addEventListener($pageNumberInput, \"change\", () => {\n if (this.readonly) {\n return;\n }\n if ($pageNumberInput.value) {\n this.onNewPageIndex(Number($pageNumberInput.value) - 1);\n }\n });\n const $totalPage = document.createElement(\"span\");\n $totalPage.textContent = \" / \" + this.pages.length;\n $pageNumber.appendChild($pageNumberInput);\n $pageNumber.appendChild($totalPage);\n this.$footer.appendChild($pageJumps);\n this.$footer.appendChild($pageNumber);\n }\n return this.$footer;\n }\n renderFooterBtn(className, $icon, $iconActive) {\n const $btn = document.createElement(\"button\");\n $btn.className = this.wrapClassName(\"footer-btn\") + \" \" + this.wrapClassName(className);\n $btn.appendChild($icon);\n if ($iconActive) {\n $btn.appendChild($iconActive);\n }\n return $btn;\n }\n togglePreview(isShowPreview) {\n this.isShowPreview = isShowPreview != null ? isShowPreview : !this.isShowPreview;\n this.$content.classList.toggle(this.wrapClassName(\"preview-active\"), this.isShowPreview);\n if (this.isShowPreview) {\n const $previewPage = this.$preview.querySelector(\n \".\" + this.wrapClassName(`preview-page-${this.pageIndex}`)\n );\n if ($previewPage) {\n this.$preview.scrollTo({\n top: $previewPage.offsetTop - 16\n });\n }\n }\n }\n wrapClassName(className) {\n return `${this.namespace}-${className}`;\n }\n}\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction flattenEvent(ev) {\n return ev.touches ? ev.touches[0] : ev;\n}\nfunction preventEvent(ev) {\n ev.stopPropagation();\n if (ev.cancelable) {\n ev.preventDefault();\n }\n}\nfunction isEditable(el) {\n if (!el)\n return false;\n const tagName = el.tagName;\n return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || tagName === \"SELECT\";\n}\nclass Stepper {\n constructor(config) {\n var _a, _b, _c;\n this.velocity = 0;\n this.paused = true;\n this._animationFrameID = null;\n this._loopTimestamp = 0;\n this.looper = (timestamp) => {\n if (this.paused) {\n return;\n }\n let frames = Math.floor((timestamp - this._loopTimestamp) / 1e3 * 60) + 1;\n this._loopTimestamp = timestamp;\n while (frames-- > 0) {\n this.stepper();\n }\n this.onStep(this.current, this);\n if (!this.paused && this.current !== this.target) {\n window.requestAnimationFrame(this.looper);\n }\n };\n this.current = (_a = config.start) != null ? _a : 0;\n this.target = this.current;\n this.stiffness = (_b = config.stiffness) != null ? _b : 170;\n this.damping = (_c = config.damping) != null ? _c : 26;\n this.onStep = config.onStep;\n }\n stepTo(target, start) {\n if (this.paused && start != null) {\n this.current = start;\n }\n this.paused = false;\n this.target = target;\n this.onStep(this.current, this);\n this._loopTimestamp = Date.now();\n window.requestAnimationFrame(this.looper);\n }\n pause() {\n this.paused = true;\n }\n destroy() {\n this.pause();\n }\n stepper() {\n const fSpring = -this.stiffness * (this.current - this.target);\n const fDamper = -this.damping * this.velocity;\n const newVelocity = this.velocity + (fSpring + fDamper) / 60;\n const newCurrent = this.current + newVelocity / 60;\n if (Math.abs(newVelocity - 0) < 0.01 && Math.abs(newCurrent - this.target) < 0.01) {\n this.current = this.target;\n this.velocity = 0;\n } else {\n this.current = newCurrent;\n this.velocity = newVelocity;\n }\n }\n}\nclass PageEl {\n constructor(index, page, scale, pagesIntrinsicWidth) {\n this.scale = 1;\n this.lastVisit = Date.now();\n this.pageOffsetY = 0;\n this.pageOffsetX = 0;\n this.visible = true;\n this.index = index;\n this.page = page;\n this.scale = scale;\n this.pageOffsetX = (pagesIntrinsicWidth - page.width) / 2;\n const $page = document.createElement(\"div\");\n $page.className = \"page-renderer-page\";\n $page.dataset.index = `${index}`;\n $page.style.width = `${page.width * scale}px`;\n $page.style.height = `${page.height * scale}px`;\n if (page.thumbnail) {\n $page.style.backgroundImage = `url(\"${page.thumbnail}\")`;\n }\n const $img = document.createElement(\"img\");\n $img.className = \"page-renderer-page-img\";\n $img.width = page.width;\n $img.height = page.height;\n $img.src = page.src;\n $page.appendChild($img);\n this.$page = $page;\n }\n translateY(pageOffsetY) {\n if (Math.abs(pageOffsetY - this.pageOffsetY) >= 1e-3) {\n this.pageOffsetY = pageOffsetY;\n this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n }\n }\n setScale(scale) {\n if (Math.abs(scale - this.scale) >= 1e-3) {\n this.scale = scale;\n this.$page.style.width = `${this.page.width * this.scale}px`;\n this.$page.style.height = `${this.page.height * this.scale}px`;\n this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n }\n }\n setVisible(visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n this.$page.style.opacity = visible ? \"1\" : \"0\";\n }\n }\n}\nconst schedule = window.requestIdleCallback || ((handler) => window.setTimeout(handler, 5e3));\nconst cancelSchedule = window.cancelIdleCallback || window.clearTimeout;\nclass PageElManager {\n constructor(pages, pagesIntrinsicWidth, scale) {\n this.pages = pages;\n this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n this.scale = scale;\n this.els = /* @__PURE__ */ new Map();\n this.maxElCount = 200;\n this.gcTimer = null;\n this.gc = () => {\n this.gcTimer = null;\n if (this.els.size > this.maxElCount) {\n const sortedEls = [...this.els.values()].sort((x, y) => y.lastVisit - x.lastVisit);\n for (let i = Math.floor(this.maxElCount / 4); i < sortedEls.length; i++) {\n this.els.delete(sortedEls[i].index);\n }\n }\n };\n }\n getEl(index) {\n let el = this.els.get(index);\n if (!el) {\n el = new PageEl(index, this.pages[index], this.scale, this.pagesIntrinsicWidth);\n this.els.set(index, el);\n }\n el.lastVisit = Date.now();\n if (this.els.size > this.maxElCount && this.gcTimer === null) {\n this.gcTimer = schedule(this.gc);\n }\n return el;\n }\n setScale(scale) {\n if (scale !== this.scale) {\n this.scale = scale;\n this.els.forEach((pageEl) => pageEl.setScale(scale));\n }\n }\n destroy() {\n this.els.clear();\n if (this.gcTimer !== null) {\n cancelSchedule(this.gcTimer);\n this.gcTimer = null;\n }\n }\n}\nclass PageRenderer {\n constructor(config) {\n this._hwaTimeout = NaN;\n this._turnOffHWA = () => {\n window.clearTimeout(this._hwaTimeout);\n this._hwaTimeout = NaN;\n this.$pages.classList.toggle(\"is-hwa\", false);\n };\n this.pagesScrollTop = config.pagesScrollTop || 0;\n this.containerWidth = config.containerWidth || 1;\n this.containerHeight = config.containerHeight || 1;\n this.pages = config.pages.map((page) => {\n if (page.thumbnail) {\n return page;\n }\n try {\n const url = new URL(page.src);\n url.searchParams.set(\"x-oss-process\", \"image/resize,l_50\");\n return { ...page, thumbnail: url.toString() };\n } catch (e) {\n console.error(e);\n return page;\n }\n });\n const pagesIntrinsicYs = Array(this.pages.length);\n let pagesMinHeight = Infinity;\n let pagesIntrinsicWidth = 0;\n this.pagesIntrinsicHeight = this.pages.reduce((pageY, page, i) => {\n pagesIntrinsicYs[i] = pageY;\n if (page.width > pagesIntrinsicWidth) {\n pagesIntrinsicWidth = page.width;\n }\n if (page.height <= pagesMinHeight) {\n pagesMinHeight = page.height;\n }\n return pageY + page.height;\n }, 0);\n this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n this.pagesMinHeight = pagesMinHeight;\n this.pagesIntrinsicYs = pagesIntrinsicYs;\n this.scale = this._calcScale();\n this.threshold = this._calcThreshold();\n this.onPageIndexChanged = config.onPageIndexChanged;\n this.pageScrollIndex = 0;\n if (this.pagesScrollTop !== 0) {\n this.pageScrollIndex = this.findScrollPageIndex();\n if (this.onPageIndexChanged && this.pageScrollIndex > 0) {\n this.onPageIndexChanged(this.pageScrollIndex);\n }\n }\n this.pageElManager = new PageElManager(this.pages, pagesIntrinsicWidth, this.scale);\n this.$pages = this.renderPages();\n }\n setContainerSize(width, height) {\n if (width > 0 && height > 0) {\n if (width !== this.containerWidth || height !== this.containerHeight) {\n this.containerWidth = width;\n this.containerHeight = height;\n this.$pages.style.width = `${this.containerWidth}px`;\n this.$pages.style.height = `${this.containerHeight}px`;\n this.scale = this._calcScale();\n this.threshold = this._calcThreshold();\n this.pageElManager.setScale(this.scale);\n if (this.$pages.parentElement) {\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n }\n }\n }\n renderPages() {\n const $pages = document.createElement(\"div\");\n $pages.className = \"page-renderer-pages-container\";\n $pages.style.width = `${this.containerWidth}px`;\n $pages.style.height = `${this.containerHeight}px`;\n return $pages;\n }\n pagesScrollTo(pagesScrollTop, force) {\n pagesScrollTop = clamp(\n pagesScrollTop,\n 0,\n this.pagesIntrinsicHeight - this.containerHeight / this.scale\n );\n if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n this._turnOnHWA();\n this.pagesScrollTop = pagesScrollTop;\n const pageScrollIndex = this.findScrollPageIndex();\n const startIndex = Math.max(pageScrollIndex - this.threshold, 0);\n const endIndex = Math.min(pageScrollIndex + this.threshold, this.pages.length - 1);\n for (let i = 0; i < this.$pages.children.length; i++) {\n const $page = this.$pages.children[i];\n const index = Number($page.dataset.index);\n if (!(index >= startIndex && index <= endIndex)) {\n $page.remove();\n i--;\n }\n }\n for (let i = startIndex; i <= endIndex; i++) {\n const pageEl = this.pageElManager.getEl(i);\n if (pageEl.$page.parentElement !== this.$pages) {\n this.$pages.appendChild(pageEl.$page);\n }\n pageEl.translateY(this.pagesIntrinsicYs[i] - this.pagesScrollTop);\n }\n if (pageScrollIndex !== this.pageScrollIndex) {\n this.pageScrollIndex = pageScrollIndex;\n if (this.onPageIndexChanged) {\n this.onPageIndexChanged(pageScrollIndex);\n }\n }\n }\n }\n findScrollPageIndex() {\n for (let i = 0; i < this.pagesIntrinsicYs.length; i++) {\n if (this.pagesIntrinsicYs[i] + this.pages[i].height - this.pagesScrollTop >= 1e-3) {\n return i;\n }\n }\n return this.pagesIntrinsicYs.length - 1;\n }\n mount($parent) {\n $parent.appendChild(this.$pages);\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n unmount() {\n this.$pages.remove();\n }\n destroy() {\n this.unmount();\n this.onPageIndexChanged = void 0;\n this.pageElManager.destroy();\n if (this._hwaTimeout) {\n window.clearTimeout(this._hwaTimeout);\n this._hwaTimeout = NaN;\n }\n }\n _calcScale() {\n return this.containerWidth / this.pagesIntrinsicWidth || 1;\n }\n _calcThreshold() {\n return clamp(\n Math.ceil(this.containerHeight / this.scale / this.pagesMinHeight / 2),\n 1,\n this.pages.length\n );\n }\n _turnOnHWA() {\n if (this._hwaTimeout) {\n window.clearTimeout(this._hwaTimeout);\n } else {\n this.$pages.classList.toggle(\"is-hwa\", true);\n }\n this._hwaTimeout = window.setTimeout(this._turnOffHWA, 1e3);\n }\n}\nconst SCROLLBAR_DEFAULT_MIN_HEIGHT = 30;\nclass ScrollBar {\n constructor(config) {\n this.sideEffect = new SideEffectManager();\n this.pagesScrollTop = config.pagesScrollTop || 0;\n this.containerWidth = config.containerWidth || 1;\n this.containerHeight = config.containerHeight || 1;\n this.pagesWidth = config.pagesWidth || 1;\n this.pagesHeight = config.pagesHeight || 1;\n this.scale = this._calcScale();\n this.scrollbarMinHeight = config.scrollbarMinHeight || SCROLLBAR_DEFAULT_MIN_HEIGHT;\n this.scrollbarHeight = this._calcScrollbarHeight();\n this.readonly = config.readonly;\n this.wrapClassName = config.wrapClassName;\n this.onDragScroll = config.onDragScroll;\n this.$scrollbar = this.renderScrollbar();\n }\n mount($parent) {\n $parent.appendChild(this.$scrollbar);\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n unmount() {\n this.$scrollbar.remove();\n }\n setReadonly(readonly) {\n this.readonly = readonly;\n }\n setContainerSize(width, height) {\n if (width > 0 && height > 0) {\n if (width !== this.containerWidth || height !== this.containerHeight) {\n this.containerWidth = width;\n this.containerHeight = height;\n this.scale = this._calcScale();\n this._updateScrollbarHeight();\n if (this.$scrollbar.parentElement) {\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n }\n }\n }\n pagesScrollTo(pagesScrollTop, force) {\n pagesScrollTop = clamp(pagesScrollTop, 0, this.pagesHeight - this.containerHeight / this.scale);\n if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n this.pagesScrollTop = pagesScrollTop;\n const elScrollTop = this.pagesScrollTop * this.scale;\n const elPagesHeight = this.pagesHeight * this.scale;\n const translateY = elScrollTop / (elPagesHeight - this.containerHeight) * (this.containerHeight - this.scrollbarHeight);\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n });\n } else {\n this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n }\n }\n }\n destroy() {\n this.unmount();\n this.onDragScroll = void 0;\n this.sideEffect.flushAll();\n }\n renderScrollbar() {\n const $scrollbar = document.createElement(\"button\");\n $scrollbar.className = this.wrapClassName(\"scrollbar\");\n $scrollbar.style.minHeight = `${this.scrollbarMinHeight}px`;\n $scrollbar.style.height = `${this.scrollbarHeight}px`;\n const trackStart = (ev) => {\n if (this.readonly) {\n return;\n }\n if (ev.button != null && ev.button !== 0) {\n return;\n }\n preventEvent(ev);\n const draggingClassName = this.wrapClassName(\"scrollbar-dragging\");\n $scrollbar.classList.toggle(draggingClassName, true);\n const startTop = this.pagesScrollTop;\n const { clientY: startY } = flattenEvent(ev);\n const tracking = (ev2) => {\n if (this.readonly) {\n return;\n }\n const { clientY } = flattenEvent(ev2);\n const offsetY = (clientY - startY) / this.scale;\n if (Math.abs(offsetY) > 0 && this.onDragScroll) {\n this.onDragScroll(\n startTop + offsetY * (this.pagesHeight * this.scale / this.containerHeight)\n );\n }\n };\n const trackEnd = () => {\n $scrollbar.classList.toggle(draggingClassName, false);\n window.removeEventListener(\"mousemove\", tracking, true);\n window.removeEventListener(\"touchmove\", tracking, true);\n window.removeEventListener(\"mouseup\", trackEnd, true);\n window.removeEventListener(\"touchend\", trackEnd, true);\n window.removeEventListener(\"touchcancel\", trackEnd, true);\n };\n window.addEventListener(\"mousemove\", tracking, true);\n window.addEventListener(\"touchmove\", tracking, true);\n window.addEventListener(\"mouseup\", trackEnd, true);\n window.addEventListener(\"touchend\", trackEnd, true);\n window.addEventListener(\"touchcancel\", trackEnd, true);\n };\n this.sideEffect.addEventListener($scrollbar, \"mousedown\", trackStart);\n this.sideEffect.addEventListener($scrollbar, \"touchstart\", trackStart);\n return $scrollbar;\n }\n _calcScale() {\n return this.containerWidth / this.pagesWidth || 1;\n }\n _calcScrollbarHeight() {\n return clamp(\n this.containerHeight / (this.pagesHeight * this.scale) * this.containerHeight,\n this.scrollbarMinHeight,\n this.containerHeight\n );\n }\n _updateScrollbarHeight() {\n const newHeight = this._calcScrollbarHeight();\n if (Math.abs(newHeight - this.scrollbarHeight) > 1e-3) {\n this.scrollbarHeight = newHeight;\n this.$scrollbar.style.height = `${newHeight}px`;\n }\n }\n}\nconst ResizeObserver = window.ResizeObserver || ResizeObserver$1;\nconst RATIO_BASE_CONTAINER_HEIGHT = 640;\nclass StaticDocsViewer {\n constructor({\n context,\n whiteboardView,\n readonly,\n box,\n pages,\n pageScrollTop = 0,\n mountWhiteboard,\n onUserScroll,\n baseScenePath,\n appId\n }) {\n this.sideEffect = new SideEffectManager();\n this.userScrolling = false;\n this.docsViewReadonly = false;\n this.onNewPageIndex = (index) => {\n this.scrollToPage(index);\n };\n this.toPdf = async () => {\n const whiteSnapshotCanvas = document.createElement(\"canvas\");\n const whiteCtx = whiteSnapshotCanvas.getContext(\"2d\");\n if (!whiteCtx || !this.baseScenePath) {\n this.reportProgress(100, null);\n return;\n }\n const scenePath = this.whiteboardView.focusScenePath || `${this.baseScenePath}/1`;\n const firstPage = this.pages[0];\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 (const [index, page] of this.pages.entries()) {\n const { width, height, src } = page;\n whiteSnapshotCanvas.width = width;\n whiteSnapshotCanvas.height = height;\n const orientation = width > height ? \"l\" : \"p\";\n if (index > 0) {\n pdf.addPage([width, height], orientation);\n }\n const pdfPageSrc = await this.getBase64FromUrl(src);\n const img = document.createElement(\"img\");\n img.src = pdfPageSrc;\n await new Promise((resolve) => img.onload = resolve);\n whiteCtx.drawImage(img, 0, 0);\n const pdfPageBase64 = whiteSnapshotCanvas.toDataURL(\"image/png\");\n whiteCtx.clearRect(0, 0, width, height);\n const camera = {\n centerX: width / 2,\n centerY: height / 2 + index * height,\n scale: 1\n };\n const windowManger = this.context.manager.windowManger;\n if (windowManger._appliancePlugin) {\n await windowManger._appliancePlugin.screenshotToCanvasAsync(\n whiteCtx,\n scenePath,\n width,\n height,\n camera\n );\n } else {\n this.whiteboardView.screenshotToCanvas(whiteCtx, scenePath, width, height, camera);\n }\n const snapshot = whiteSnapshotCanvas.toDataURL(\"image/png\");\n pdf.addImage(pdfPageBase64, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n pdf.addImage(snapshot, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n whiteCtx.clearRect(0, 0, width, height);\n const progress = Math.ceil((index + 1) / this.pages.length * 100);\n if (progress < 100) {\n this.reportProgress(Math.ceil((index + 1) / this.pages.length * 100), null);\n }\n }\n const dataUrl = pdf.output(\"arraybuffer\");\n this.reportProgress(100, { pdf: dataUrl, title: this.box.title });\n };\n this.context = context;\n this.whiteboardView = whiteboardView;\n this.readonly = readonly;\n this.box = box;\n this.pages = pages;\n this.baseScenePath = baseScenePath;\n this.appId = appId;\n this.mountWhiteboard = mountWhiteboard;\n this._onUserScroll = onUserScroll;\n const debouncedOnUserScroll = this.debounce(\n () => {\n this.userScrolling = false;\n if (this._onUserScroll) {\n this._onUserScroll(this.pageRenderer.pagesScrollTop);\n }\n },\n { wait: 80 },\n \"debounce-updateUserScroll\"\n );\n this.updateUserScroll = () => {\n this.userScrolling = true;\n debouncedOnUserScroll();\n };\n this.viewer = new DocsViewer({\n readonly,\n box,\n pages,\n onNewPageIndex: this.onNewPageIndex\n });\n const { width: containerWidth, height: containerHeight } = this.whiteboardView.size;\n this.pageRenderer = new PageRenderer({\n pagesScrollTop: pageScrollTop,\n pages: this.pages,\n containerWidth,\n containerHeight,\n onPageIndexChanged: this.viewer.setPageIndex.bind(this.viewer)\n });\n this.scrollbar = new ScrollBar({\n pagesScrollTop: this.pageRenderer.pagesScrollTop,\n containerWidth,\n containerHeight,\n pagesWidth: this.pageRenderer.pagesIntrinsicWidth,\n pagesHeight: this.pageRenderer.pagesIntrinsicHeight,\n readonly: this.readonly,\n wrapClassName: this.wrapClassName.bind(this),\n onDragScroll: (pageScrollTop2) => {\n this.pageScrollTo(pageScrollTop2);\n this.updateUserScroll();\n }\n });\n this.pageScrollStepper = new Stepper({\n start: this.pageRenderer.pagesScrollTop,\n onStep: (pageScrollTop2) => {\n this.pageScrollTo(pageScrollTop2);\n }\n });\n this.render();\n }\n setDocsViewReadonly(isReadonly) {\n this.docsViewReadonly = isReadonly;\n }\n mount() {\n this.viewer.mount();\n this.setupScrollListener();\n const debouncedRenderRatioHeight = this.debounce(this.renderRatioHeight.bind(this), {\n wait: 80\n });\n this.sideEffect.add(() => {\n const observer = new ResizeObserver(debouncedRenderRatioHeight);\n observer.observe(this.viewer.$content);\n return () => observer.disconnect();\n });\n this.sideEffect.setTimeout(() => {\n if (!this.userScrolling) {\n this.pageScrollTo(this.pageRenderer.pagesScrollTop);\n }\n }, 100);\n this.sideEffect.add(() => {\n const handleDownloadPdf = (evt) => {\n if (evt.data.type === \"@netless/_request_save_pdf_\" && evt.data.appId === this.appId) {\n this.toPdf().catch(() => this.reportProgress(100, null));\n }\n };\n window.addEventListener(\"message\", handleDownloadPdf);\n return () => {\n window.removeEventListener(\"message\", handleDownloadPdf);\n };\n });\n return this;\n }\n unmount() {\n this.viewer.unmount();\n return this;\n }\n setReadonly(readonly) {\n if (this.readonly !== readonly) {\n this.readonly = readonly;\n this.viewer.setReadonly(readonly);\n this.scrollbar.setReadonly(readonly);\n }\n }\n destroy() {\n this.sideEffect.flushAll();\n this.pageScrollStepper.destroy();\n this._onUserScroll = void 0;\n this.unmount();\n this.viewer.destroy();\n this.pageRenderer.destroy();\n this.scrollbar.destroy();\n }\n syncPageScrollTop(pageScrollTop) {\n if (!this.userScrolling && pageScrollTop >= 0 && Math.abs(this.pageRenderer.pagesScrollTop - pageScrollTop) > 0.01) {\n this.pageScrollStepper.stepTo(pageScrollTop, this.pageRenderer.pagesScrollTop);\n }\n }\n render() {\n this.pageRenderer.mount(this.viewer.$content);\n this.viewer.$content.appendChild(this.renderWhiteboardView());\n this.scrollbar.mount(this.viewer.$content);\n this.renderRatioHeight();\n }\n renderRatioHeight() {\n const boxHeight = this.box.absoluteHeight;\n const isSmallBox = boxHeight <= RATIO_BASE_CONTAINER_HEIGHT;\n this.viewer.setSmallBox(isSmallBox);\n if (isSmallBox) {\n const titleBarSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n const titleBarActualHeight = 26 / boxHeight;\n const footerSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n const footerActualHeight = 0;\n const emptySpace = Math.max(\n (titleBarSupposedHeight + footerSupposedHeight - (titleBarActualHeight + footerActualHeight)) / 2,\n 0\n );\n if (this.box.$titleBar) {\n const titleBarHeight = titleBarActualHeight + emptySpace;\n this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n }\n if (this.box.$footer) {\n const footerHeight = footerActualHeight + emptySpace;\n this.box.$footer.style.height = `${footerHeight * 100}%`;\n }\n } else {\n if (this.box.$titleBar) {\n const titleBarHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n }\n if (this.box.$footer) {\n const footerHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n this.box.$footer.style.height = `${footerHeight * 100}%`;\n }\n }\n }\n renderWhiteboardView() {\n if (!this.$whiteboardView) {\n this.$whiteboardView = document.createElement(\"div\");\n this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n this.mountWhiteboard(this.$whiteboardView);\n this.sideEffect.addEventListener(\n this.$whiteboardView,\n \"wheel\",\n (ev) => {\n preventEvent(ev);\n if (!this.readonly) {\n this.pageScrollTo(this.pageRenderer.pagesScrollTop + ev.deltaY);\n this.updateUserScroll();\n }\n },\n { passive: false, capture: true }\n );\n this.sideEffect.addEventListener(\n this.$whiteboardView,\n \"touchmove\",\n (ev) => {\n if (this.readonly || ev.touches.length <= 1) {\n return;\n }\n this.updateUserScroll();\n },\n { passive: true, capture: true }\n );\n }\n return this.$whiteboardView;\n }\n scrollTopPageToEl(pageScrollTop) {\n return pageScrollTop * this.pageRenderer.scale;\n }\n scrollTopElToPage(elScrollTop) {\n return elScrollTop / this.pageRenderer.scale;\n }\n elScrollTo(elScrollTop) {\n this.pageScrollTo(this.scrollTopElToPage(elScrollTop));\n }\n pageScrollTo(pageScrollTop) {\n const halfWbHeight = this.scrollTopElToPage(this.whiteboardView.size.height / 2);\n this.whiteboardView.moveCamera({\n centerY: clamp(\n pageScrollTop + halfWbHeight,\n halfWbHeight,\n this.pageRenderer.pagesIntrinsicHeight - halfWbHeight\n ),\n animationMode: \"immediately\"\n });\n }\n scrollToPage(index) {\n if (!this.readonly && !Number.isNaN(index)) {\n const offsetY = this.pageRenderer.pagesIntrinsicYs[index];\n if (offsetY >= 0) {\n this.pageScrollTo(offsetY + 5 / this.pageRenderer.scale);\n this.updateUserScroll();\n }\n }\n }\n setupScrollListener() {\n this.sideEffect.add(() => {\n const handleCameraUpdate = (camera) => {\n const { width: wbWidth, height: wbHeight } = this.whiteboardView.size;\n if (wbWidth <= 0 || wbHeight <= 0) {\n return;\n }\n const pagesScrollTop = camera.centerY - this.pageRenderer.containerHeight / this.pageRenderer.scale / 2;\n this.pageRenderer.pagesScrollTo(pagesScrollTop);\n this.scrollbar.pagesScrollTo(pagesScrollTop);\n };\n this.whiteboardView.callbacks.on(\"onCameraUpdated\", handleCameraUpdate);\n return () => this.whiteboardView.callbacks.off(\"onCameraUpdated\", handleCameraUpdate);\n });\n this.sideEffect.add(() => {\n const { updateUserScroll } = this;\n this.whiteboardView.callbacks.on(\"onCameraUpdatedByDevice\", updateUserScroll);\n return () => this.whiteboardView.callbacks.off(\"onCameraUpdatedByDevice\", updateUserScroll);\n });\n this.sideEffect.add(() => {\n const handleSizeUpdate = ({ width: wbWidth, height: wbHeight }) => {\n if (wbWidth <= 0 || wbHeight <= 0) {\n return;\n }\n this.pageRenderer.setContainerSize(wbWidth, wbHeight);\n this.scrollbar.setContainerSize(wbWidth, wbHeight);\n const { pagesIntrinsicWidth, pagesIntrinsicHeight } = this.pageRenderer;\n this.whiteboardView.moveCameraToContain({\n originX: 0,\n originY: this.pageRenderer.pagesScrollTop,\n width: pagesIntrinsicWidth,\n height: wbHeight / this.pageRenderer.scale,\n animationMode: \"immediately\"\n });\n this.whiteboardView.setCameraBound({\n damping: 1,\n maxContentMode: () => this.pageRenderer.scale,\n minContentMode: () => this.pageRenderer.scale,\n centerX: pagesIntrinsicWidth / 2,\n centerY: pagesIntrinsicHeight / 2,\n width: pagesIntrinsicWidth,\n height: pagesIntrinsicHeight\n });\n };\n this.whiteboardView.callbacks.on(\"onSizeUpdated\", handleSizeUpdate);\n return () => {\n this.whiteboardView.callbacks.off(\"onSizeUpdated\", handleSizeUpdate);\n };\n }, \"whiteboard-size-update\");\n this.sideEffect.addEventListener(\n window,\n \"keyup\",\n (ev) => {\n if (this.readonly || !this.box.focus || this.box.minimized || isEditable(ev.target)) {\n return;\n }\n if (this.docsViewReadonly) {\n return;\n }\n let newPageScrollTop = null;\n switch (ev.key) {\n case \"PageDown\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / this.pageRenderer.scale;\n break;\n }\n case \"PageUp\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / this.pageRenderer.scale;\n break;\n }\n case \"ArrowDown\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n break;\n }\n case \"ArrowUp\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n break;\n }\n }\n if (newPageScrollTop !== null) {\n if (this._onUserScroll) {\n this._onUserScroll(newPageScrollTop);\n } else {\n this.pageScrollTo(newPageScrollTop);\n this.updateUserScroll();\n }\n }\n },\n { capture: true }\n );\n }\n debounce(fn, options, disposerID) {\n const dFn = debounceFn(fn, options);\n this.sideEffect.addDisposer(() => dFn.cancel(), disposerID);\n return dFn;\n }\n wrapClassName(className) {\n return \"netless-app-docs-viewer-static-\" + className;\n }\n async getBase64FromUrl(url) {\n const data = await fetch(this._invalidate(url));\n const blob = await data.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n const base64data = reader.result;\n resolve(base64data);\n };\n });\n }\n _invalidate(url) {\n try {\n const a = new URL(url);\n a.searchParams.set(\"t\", Date.now().toString());\n return a.toString();\n } catch {\n return url;\n }\n }\n reportProgress(progress, result) {\n window.postMessage({\n type: \"@netless/_result_save_pdf_\",\n appId: this.appId,\n progress,\n result\n });\n }\n}\nclass DynamicDocsViewer {\n constructor({ context, whiteboardView, box, pages }) {\n this.sideEffect = new SideEffectManager();\n this.docsViewReadonly = false;\n this.onPlayPPT = () => {\n const room = this.context.getRoom();\n if (room) {\n room.pptNextStep();\n }\n };\n this._scaleDocsToFitImpl = () => {\n const page = this.pages[this.getPageIndex()];\n if (page) {\n this.whiteboardView.moveCameraToContain({\n originX: -page.width / 2,\n originY: -page.height / 2,\n width: page.width,\n height: page.height,\n animationMode: \"immediately\"\n });\n this.whiteboardView.setCameraBound({\n damping: 1,\n maxContentMode: () => this.whiteboardView.camera.scale,\n minContentMode: () => this.whiteboardView.camera.scale,\n centerX: 0,\n centerY: 0,\n width: page.width,\n height: page.height\n });\n }\n };\n this._scaleDocsToFitDebounced = () => {\n this.sideEffect.setTimeout(this._scaleDocsToFitImpl, 1e3, \"_scaleDocsToFitDebounced\");\n };\n this.scaleDocsToFit = () => {\n this._scaleDocsToFitImpl();\n this._scaleDocsToFitDebounced();\n };\n this.onNewPageIndex = (index) => {\n this.jumpToPage(index, true);\n };\n this.context = context;\n this.whiteboardView = whiteboardView;\n this.box = box;\n this.pages = pages;\n this.displayer = context.getDisplayer();\n this.viewer = new DocsViewer({\n readonly: !context.getIsWritable(),\n box,\n pages,\n onNewPageIndex: this.onNewPageIndex,\n onPlay: this.onPlayPPT\n });\n this.render();\n this.sideEffect.add(() => {\n const handler = (isWritable) => {\n this.viewer.setReadonly(!isWritable);\n };\n this.context.emitter.on(\"writableChange\", handler);\n return () => this.context.emitter.off(\"writableChange\", handler);\n });\n this.sideEffect.add(() => {\n const handler = (sceneState) => {\n this.jumpToPage(sceneState.index);\n };\n this.context.emitter.on(\"sceneStateChange\", handler);\n return () => this.context.emitter.off(\"sceneStateChange\", handler);\n });\n }\n setDocsViewReadonly(isReadonly) {\n this.docsViewReadonly = isReadonly;\n }\n mount() {\n this.viewer.mount();\n const pageIndex = this.getPageIndex();\n if (pageIndex !== 0) {\n this.jumpToPage(pageIndex);\n }\n this.scaleDocsToFit();\n this.sideEffect.add(() => {\n this.whiteboardView.callbacks.on(\"onSizeUpdated\", this.scaleDocsToFit);\n return () => {\n this.whiteboardView.callbacks.off(\"onSizeUpdated\", this.scaleDocsToFit);\n };\n });\n return this;\n }\n unmount() {\n this.viewer.unmount();\n return this;\n }\n destroy() {\n this.sideEffect.flushAll();\n this.unmount();\n this.viewer.destroy();\n }\n getPageIndex() {\n return this.displayer.state.sceneState.index;\n }\n jumpToPage(index, reset) {\n var _a, _b;\n index = clamp(index, 0, this.pages.length - 1);\n if (index !== this.getPageIndex()) {\n if (this.context.getIsWritable()) {\n const initScenePath = this.context.getInitScenePath();\n const scene = (_b = (_a = this.context.getScenes()) == null ? void 0 : _a[index]) == null ? void 0 : _b.name;\n if (initScenePath && scene) {\n this.context.setScenePath(`${initScenePath}/${scene}`);\n }\n this.scaleDocsToFit();\n }\n }\n if (index !== this.viewer.pageIndex) {\n this.viewer.setPageIndex(index);\n }\n if (reset) {\n const room = this.context.getRoom();\n if (room) {\n const pptState = room.state.globalState.__pptState;\n room.setGlobalState({\n __pptState: pptState && {\n uuid: pptState.uuid,\n pageIndex: index,\n disableAutoPlay: pptState.disableAutoPlay\n }\n });\n }\n }\n }\n render() {\n this.viewer.$content.appendChild(this.renderMask());\n this.viewer.$content.appendChild(this.renderWhiteboardView());\n this.sideEffect.addEventListener(window, \"keydown\", (ev) => {\n var _a;\n if (this.docsViewReadonly) {\n return;\n }\n if (this.box.focus && !isEditable(ev.target)) {\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n this.jumpToPage(this.getPageIndex() - 1, true);\n break;\n }\n case \"ArrowRight\":\n case \"ArrowDown\": {\n (_a = this.context.getRoom()) == null ? void 0 : _a.pptNextStep();\n break;\n }\n }\n }\n });\n }\n renderMask() {\n if (!this.$mask) {\n const $mask = document.createElement(\"div\");\n $mask.className = this.wrapClassName(\"mask\");\n this.$mask = $mask;\n const $back = document.createElement(\"button\");\n $back.className = this.wrapClassName(\"back\");\n const $next = document.createElement(\"button\");\n $next.className = this.wrapClassName(\"next\");\n }\n return this.$mask;\n }\n renderWhiteboardView() {\n if (!this.$whiteboardView) {\n this.$whiteboardView = document.createElement(\"div\");\n this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n this.sideEffect.addEventListener(this.$whiteboardView, \"click\", (ev) => {\n var _a;\n const room = this.context.getRoom();\n if (room && room.state.memberState.currentApplianceName === \"clicker\") {\n for (let el = ev.target; el; el = el.parentElement) {\n if ((_a = el.classList) == null ? void 0 : _a.contains(\"ppt-event-source\")) {\n return;\n }\n }\n room.pptNextStep();\n }\n });\n this.context.mountView(this.$whiteboardView);\n }\n return this.$whiteboardView;\n }\n wrapClassName(className) {\n return \"netless-app-docs-viewer-dynamic-\" + className;\n }\n}\nconst kind = \"DocsViewer\";\nconst NetlessAppDocsViewer = {\n kind,\n setup(context) {\n const box = context.getBox();\n const scenes = context.getScenes();\n if (!scenes) {\n throw new Error(\"[Docs Viewer]: scenes not found.\");\n }\n const whiteboardView = context.getView();\n if (!whiteboardView) {\n throw new Error(\"[Docs Viewer]: no whiteboard view.\");\n }\n const pages = scenes.map(\n ({ ppt }) => ppt ? {\n width: ppt.width,\n height: ppt.height,\n src: ppt.src,\n thumbnail: ppt.previewURL\n } : null\n ).filter((page) => Boolean(page));\n if (pages.length <= 0) {\n throw new Error(\"[Docs Viewer]: empty scenes.\");\n }\n box.mountStyles(styles);\n let docsViewer = null;\n if (pages[0].src.startsWith(\"ppt\")) {\n docsViewer = setupDynamicDocsViewer(\n context,\n whiteboardView,\n box,\n pages\n );\n } else {\n docsViewer = setupStaticDocsViewer(\n context,\n whiteboardView,\n box,\n pages\n );\n }\n const appOptions = context.getAppOptions() || {};\n if (appOptions.justDocsViewReadonly) {\n docsViewer.setDocsViewReadonly(true);\n }\n return {\n setDocsViewReadonly: (bol) => {\n docsViewer == null ? void 0 : docsViewer.setDocsViewReadonly(bol);\n }\n };\n }\n};\nfunction setupStaticDocsViewer(context, whiteboardView, box, pages) {\n var _a;\n whiteboardView.disableCameraTransform = !context.getIsWritable();\n const docsViewer = new StaticDocsViewer({\n context,\n whiteboardView,\n readonly: !context.getIsWritable(),\n box,\n pages,\n pageScrollTop: (_a = context.getAttributes()) == null ? void 0 : _a.pageScrollTop,\n mountWhiteboard: context.mountView.bind(context),\n onUserScroll: (pageScrollTop) => {\n var _a2;\n if (((_a2 = context.getAttributes()) == null ? void 0 : _a2.pageScrollTop) !== pageScrollTop && !box.readonly) {\n context.updateAttributes([\"pageScrollTop\"], pageScrollTop);\n }\n },\n baseScenePath: context.getInitScenePath(),\n appId: context.appId\n }).mount();\n docsViewer.viewer.onPageIndexChanged = (index) => {\n context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n };\n context.dispatchAppEvent(\"pageStateChange\", {\n index: docsViewer.viewer.pageIndex,\n length: pages.length\n });\n context.emitter.on(\"attributesUpdate\", (attributes) => {\n if (attributes) {\n if (attributes.pageScrollTop != null) {\n docsViewer.syncPageScrollTop(attributes.pageScrollTop);\n }\n }\n });\n context.emitter.on(\"writableChange\", (isWritable) => {\n docsViewer.setReadonly(!isWritable);\n whiteboardView.disableCameraTransform = !isWritable;\n });\n return docsViewer;\n}\nfunction setupDynamicDocsViewer(context, whiteboardView, box, pages) {\n whiteboardView.disableCameraTransform = true;\n const docsViewer = new DynamicDocsViewer({\n context,\n whiteboardView,\n box,\n pages\n }).mount();\n docsViewer.viewer.onPageIndexChanged = (index) => {\n context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n };\n context.dispatchAppEvent(\"pageStateChange\", {\n index: docsViewer.getPageIndex(),\n length: pages.length\n });\n context.mountView(docsViewer.$whiteboardView);\n if (context.isAddApp) {\n whiteboardView.callbacks.once(\n \"onSizeUpdated\",\n ({ width: contentWidth, height: contentHeight }) => {\n if (pages.length > 0 && box.state !== \"maximized\") {\n const { width: pageWidth, height: pageHeight } = pages[0];\n const preferHeight = pageHeight / pageWidth * contentWidth;\n const diff = preferHeight - contentHeight;\n if (diff !== 0 && context.getIsWritable()) {\n context.emitter.emit(\"setBoxSize\", {\n width: box.width,\n height: box.height + diff / box.containerRect.height\n });\n }\n }\n }\n );\n }\n return docsViewer;\n}\nexport { NetlessAppDocsViewer as default };\n//# sourceMappingURL=main.es.js.map\n"],"names":["styles","copyProperty","to","from","property","ignoreNonConfigurable","toDescriptor","fromDescriptor","canCopyProperty","changePrototype","fromPrototype","wrappedToString","withName","fromBody","toStringDescriptor","toStringName","changeToString","name","newToString","mimicFunction","debounceFn","inputFunction","options","wait","maxWait","before","after","timeout","maxTimeout","result","debouncedFunction","arguments_","context","later","maxLater","shouldCallNow","SOUP","SOUP_LEN","ID_LEN","reusedIdCarrier","genUID","i","invoke","fn","SideEffectManager","disposer","disposerID","joinDisposers","executor","disposers","el","type","listener","handler","ticket","uid","resizeObservers","hasActiveObservations","ro","hasSkippedObservations","msg","deliverResizeLoopError","event","ResizeObserverBoxOptions","ResizeObserverBoxOptions2","freeze","obj","ResizeObserverSize","ResizeObserverSize2","inlineSize","blockSize","DOMRectReadOnly","DOMRectReadOnly2","x","y","width","height","_a","top","right","bottom","left","rectangle","isSVG","target","isHidden","_b","offsetWidth","offsetHeight","isElement","scope","isReplacedElement","global","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","size","switchSizes","zeroBoxes","calculateBoxSizes","forceRecalculation","cs","svg","removePadding","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderRight","borderBottom","borderLeft","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","ResizeObserverEntry","ResizeObserverEntry2","calculateDepthForNode","node","depth","parent","broadcastActiveObservations","shallowestDepth","callbacks2","entries","ot","entry","targetDepth","_i","callbacks_1","callback","gatherActiveObservationsAtDepth","process","trigger","callbacks","notify","cb","queueMicroTask","toggle_1","el_1","config","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","events","time","scheduled","Scheduler","Scheduler2","_this","until","elementsHaveResized","scheduler","updateCount","n","skipNotifyOnElement","ResizeObservation","ResizeObservation2","size2","ResizeObserverDetail","ResizeObserverDetail2","resizeObserver","observerMap","getObservationIndex","observationTargets","ResizeObserverController","ResizeObserverController2","detail","firstObservation","index","lastObservation","ResizeObserver$1","ResizeObserver2","sidebarSVG","namespace","NS","$svg","$path","arrowLeftSVG","arrowRightSVG","playSVG","pauseSVG","runningOnBrowser","isBot","supportsIntersectionObserver","supportsClassList","isHiDpi","defaultSettings","getExtendedSettings","customSettings","createInstance","classObj","eventString","instance","autoInitialize","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","element","attribute","setData","value","attrName","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","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","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","addEventListener","eventName","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","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","loadAllNative","elements","isIntersecting","getObserverSettings","intersectionHandler","observeElements","updateObserver","elementsToObserve","setObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","setOnlineCheck","resetOnlineCheck","LazyLoad","givenNodeset","elementsToLoad","DocsViewer","readonly","box","pages","onNewPageIndex","onPlay","previewLazyLoad","pageIndex","isSmallBox","$content","$preview","pageClassName","pageNameClassName","page","previewSRC","$page","$name","$img","ev","$footer","$btnSidebar","$pageJumps","$btnPageBack","$btnPlay","returnPlay","$btnPageNext","$pageNumber","$pageNumberInput","$totalPage","$icon","$iconActive","$btn","isShowPreview","$previewPage","clamp","min","max","flattenEvent","preventEvent","isEditable","tagName","Stepper","_c","timestamp","frames","start","fSpring","fDamper","newVelocity","newCurrent","PageEl","scale","pagesIntrinsicWidth","pageOffsetY","visible","schedule","cancelSchedule","PageElManager","sortedEls","pageEl","PageRenderer","url","e","pagesIntrinsicYs","pagesMinHeight","pageY","$pages","pagesScrollTop","force","pageScrollIndex","startIndex","endIndex","$parent","SCROLLBAR_DEFAULT_MIN_HEIGHT","ScrollBar","elScrollTop","elPagesHeight","translateY","$scrollbar","trackStart","draggingClassName","startTop","startY","tracking","ev2","clientY","offsetY","trackEnd","newHeight","ResizeObserver","RATIO_BASE_CONTAINER_HEIGHT","StaticDocsViewer","whiteboardView","pageScrollTop","mountWhiteboard","onUserScroll","baseScenePath","appId","whiteSnapshotCanvas","whiteCtx","scenePath","firstPage","jsPDF","_interopNamespace","pdf","src","orientation","pdfPageSrc","img","resolve","pdfPageBase64","camera","windowManger","snapshot","dataUrl","debouncedOnUserScroll","containerWidth","containerHeight","pageScrollTop2","isReadonly","debouncedRenderRatioHeight","handleDownloadPdf","evt","boxHeight","titleBarSupposedHeight","titleBarActualHeight","footerSupposedHeight","footerActualHeight","emptySpace","titleBarHeight","footerHeight","halfWbHeight","handleCameraUpdate","wbWidth","wbHeight","updateUserScroll","handleSizeUpdate","pagesIntrinsicHeight","newPageScrollTop","dFn","blob","reader","base64data","a","progress","DynamicDocsViewer","room","isWritable","sceneState","reset","initScenePath","scene","pptState","$mask","$back","$next","kind","NetlessAppDocsViewer","scenes","ppt","docsViewer","setupDynamicDocsViewer","setupStaticDocsViewer","bol","_a2","pageWidth","pageHeight","diff"],"mappings":"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"}
|