@netless/app-slide 0.2.100-alpha.2 → 0.2.100

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/main.cjs.js CHANGED
@@ -8070,5 +8070,5 @@ self.onmessage = function(e) {
8070
8070
  box-shadow: 1px 0 2px rgba(0, 0, 0, 0.2);
8071
8071
  cursor: grab;
8072
8072
  `,this.addThumbDragListener(B,"vertical",D,P),A.appendChild(B),this.container.appendChild(A),this.verticalScrollBar=A}addThumbDragListener(T,m,A,E){let P=0,D=0;const B=(Tt,bt)=>{m==="horizontal"?this.isDraggingHorizontal=!0:this.isDraggingVertical=!0,P=m==="horizontal"?Tt:bt,D=m==="horizontal"?parseFloat(T.style.left)||0:parseFloat(T.style.top)||0,T.style.cursor="grabbing"},z=(Tt,bt)=>{var Q,G;if(!(m==="horizontal"?this.isDraggingHorizontal:this.isDraggingVertical))return;const F=(m==="horizontal"?Tt:bt)-P;let W=D+F;W=Math.max(1,Math.min(E-A-1,W)),m==="horizontal"?T.style.left=`${W}px`:T.style.top=`${W}px`;const O=E-A-2;let j=0;O>0&&(j=(W-1)/O,j=Math.max(0,Math.min(1,j))),m==="horizontal"?this.resizableContainer.handleNormalizeTranslate(j,(Q=this.resizableContainer.translateY)!=null?Q:.5,{triggerScrollBar:!1,triggerSync:!0}):this.resizableContainer.handleNormalizeTranslate((G=this.resizableContainer.translateX)!=null?G:.5,j,{triggerScrollBar:!1,triggerSync:!0})},X=()=>{m==="horizontal"?this.isDraggingHorizontal=!1:this.isDraggingVertical=!1,T.style.cursor="grab"},Z=Tt=>{B(Tt.clientX,Tt.clientY),Tt.preventDefault()},nt=Tt=>{z(Tt.clientX,Tt.clientY)},at=()=>{X()};this.addTrackedListener(T,"mousedown",Z),this.addTrackedListener(document,"mousemove",nt),this.addTrackedListener(document,"mouseup",at)}destroy(){this.clearScrollBars()}}class b2{constructor(T,m,A,E){this.onScaleChanged=null,this.whiteboardContainer=null,this.slide=null,this.scale=1,this.slideWidth=1,this.slideHeight=1,this.scrollBar=null,this.translateX=.5,this.translateY=.5,this.updateSlideSize=()=>{if(this.slide){let P=!1;(this.slideWidth!==this.slide.width||this.slideHeight!==this.slide.height)&&(this.slideWidth=this.slide.width,this.slideHeight=this.slide.height,P=!0),P&&this.updateResizableContainer()}},this.enableResize=A,this.parent=T,this.context=m,this.root=document.createElement("div"),this.root.style.width="100%",this.root.style.height="100%",this.root.style.overflow="hidden",this.parent.appendChild(this.root),this.scrollContainer=document.createElement("div"),this.scrollContainer.setAttribute("data-resizable-scroll","true"),this.scrollContainer.style.width="100%",this.scrollContainer.style.height="100%",this.scrollContainer.style.position="relative",this.scrollContainer.style.overflow="hidden",this.container=document.createElement("div"),this.container.style.position="relative",this.container.setAttribute("data-resizable-container","true"),this.scrollContainer.appendChild(this.container),this.root.appendChild(this.scrollContainer),this.enableResize&&(this.scrollBar=new x2(this.root,this))}getTranslate(){return{x:this.translateX,y:this.translateY}}getScale(){return this.scale}renderScrollBar(T,m,A,E){this.scrollBar&&this.scrollBar.render(T,A,m,E)}setSlideObject(T){this.slide=T,this.slide.on("renderEnd",this.updateSlideSize)}updateResizableContainer(){const T=this.scrollContainer.getBoundingClientRect();if(this.container.style.width=`${T.width*this.scale}px`,this.container.style.height=`${T.height*this.scale}px`,this.whiteboardContainer&&this.enableResize){const m=this.whiteboardContainer.getBoundingClientRect();if(m.width/m.height>this.slideWidth/this.slideHeight){const A=m.height*this.slideWidth/this.slideHeight,E=(m.width-A)/2;this.whiteboardContainer.style.clipPath=`inset(0px ${E}px 0px ${E}px)`}else if(m.width/m.height<this.slideWidth/this.slideHeight){const A=m.width*this.slideHeight/this.slideWidth,E=(m.height-A)/2;this.whiteboardContainer.style.clipPath=`inset(${E}px 0px ${E}px 0px)`}}this.translateX=.5,this.translateY=.5,this.renderScrollBar(T.width,T.width*this.scale,T.height,T.height*this.scale),this.handleNormalizeTranslate(this.translateX,this.translateY,{triggerScrollBar:!0,triggerSync:!0})}handleNormalizeTranslate(T,m,A){var z;if(Math.abs(T-this.translateX)<.001&&Math.abs(m-this.translateY)<.001&&!A.triggerSync)return;const E=this.scrollContainer.getBoundingClientRect(),P=this.container.getBoundingClientRect(),D=-T*(P.width-E.width),B=-m*(P.height-E.height);this.translateX=T,this.translateY=m,this.container.style.transform=`translate(${D}px, ${B}px)`,A.triggerScrollBar&&((z=this.scrollBar)==null||z.handleNormalizeTranslate(T,m)),A.triggerSync&&this.enableResize&&this.context.getIsWritable()&&this.context.storage.setState({translateX:this.translateX,translateY:this.translateY})}scaleContainer(T){Math.abs(this.scale-T)<.001||!this.enableResize||(T>1?(this.scrollContainer.style.width="calc(100% - 6px)",this.scrollContainer.style.height="calc(100% - 6px)"):(this.scrollContainer.style.width="100%",this.scrollContainer.style.height="100%"),T=this.enableResize?T:1,this.onScaleChanged&&this.enableResize&&this.onScaleChanged(T),this.scale=T,setTimeout(()=>{this.updateResizableContainer()}))}addSlideContainer(T){this.container.appendChild(T)}addWhiteboardContainer(T){this.container.appendChild(T),this.whiteboardContainer=T}getCurrentScale(){return this.scale}destroy(T){var m;(m=this.scrollBar)==null||m.destroy()}}var Ts=[],T2=function(){return Ts.some(function(_){return _.activeTargets.length>0})},S2=function(){return Ts.some(function(_){return _.skippedTargets.length>0})},Fg="ResizeObserver loop completed with undelivered notifications.",w2=function(){var _;typeof ErrorEvent=="function"?_=new ErrorEvent("error",{message:Fg}):(_=document.createEvent("Event"),_.initEvent("error",!1,!1),_.message=Fg),window.dispatchEvent(_)},hl;(function(_){_.BORDER_BOX="border-box",_.CONTENT_BOX="content-box",_.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(hl||(hl={}));var Ss=function(_){return Object.freeze(_)},E2=function(){function _(T,m){this.inlineSize=T,this.blockSize=m,Ss(this)}return _}(),Pv=function(){function _(T,m,A,E){return this.x=T,this.y=m,this.width=A,this.height=E,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Ss(this)}return _.prototype.toJSON=function(){var T=this,m=T.x,A=T.y,E=T.top,P=T.right,D=T.bottom,B=T.left,z=T.width,X=T.height;return{x:m,y:A,top:E,right:P,bottom:D,left:B,width:z,height:X}},_.fromRect=function(T){return new _(T.x,T.y,T.width,T.height)},_}(),yd=function(_){return _ instanceof SVGElement&&"getBBox"in _},Ov=function(_){if(yd(_)){var T=_.getBBox(),m=T.width,A=T.height;return!m&&!A}var E=_,P=E.offsetWidth,D=E.offsetHeight;return!(P||D||_.getClientRects().length)},Bg=function(_){var T;if(_ instanceof Element)return!0;var m=(T=_==null?void 0:_.ownerDocument)===null||T===void 0?void 0:T.defaultView;return!!(m&&_ instanceof m.Element)},A2=function(_){switch(_.tagName){case"INPUT":if(_.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},al=typeof window!="undefined"?window:{},Bh=new WeakMap,kg=/auto|scroll/,C2=/^tb|vertical/,M2=/msie|trident/i.test(al.navigator&&al.navigator.userAgent),so=function(_){return parseFloat(_||"0")},la=function(_,T,m){return _===void 0&&(_=0),T===void 0&&(T=0),m===void 0&&(m=!1),new E2((m?T:_)||0,(m?_:T)||0)},Ug=Ss({devicePixelContentBoxSize:la(),borderBoxSize:la(),contentBoxSize:la(),contentRect:new Pv(0,0,0,0)}),Nv=function(_,T){if(T===void 0&&(T=!1),Bh.has(_)&&!T)return Bh.get(_);if(Ov(_))return Bh.set(_,Ug),Ug;var m=getComputedStyle(_),A=yd(_)&&_.ownerSVGElement&&_.getBBox(),E=!M2&&m.boxSizing==="border-box",P=C2.test(m.writingMode||""),D=!A&&kg.test(m.overflowY||""),B=!A&&kg.test(m.overflowX||""),z=A?0:so(m.paddingTop),X=A?0:so(m.paddingRight),Z=A?0:so(m.paddingBottom),nt=A?0:so(m.paddingLeft),at=A?0:so(m.borderTopWidth),Tt=A?0:so(m.borderRightWidth),bt=A?0:so(m.borderBottomWidth),N=A?0:so(m.borderLeftWidth),R=nt+X,F=z+Z,W=N+Tt,O=at+bt,j=B?_.offsetHeight-O-_.clientHeight:0,Q=D?_.offsetWidth-W-_.clientWidth:0,G=E?R+W:0,It=E?F+O:0,Vt=A?A.width:so(m.width)-G-Q,ot=A?A.height:so(m.height)-It-j,V=Vt+R+Q+W,U=ot+F+j+O,ct=Ss({devicePixelContentBoxSize:la(Math.round(Vt*devicePixelRatio),Math.round(ot*devicePixelRatio),P),borderBoxSize:la(V,U,P),contentBoxSize:la(Vt,ot,P),contentRect:new Pv(nt,z,Vt,ot)});return Bh.set(_,ct),ct},Lv=function(_,T,m){var A=Nv(_,m),E=A.borderBoxSize,P=A.contentBoxSize,D=A.devicePixelContentBoxSize;switch(T){case hl.DEVICE_PIXEL_CONTENT_BOX:return D;case hl.BORDER_BOX:return E;default:return P}},R2=function(){function _(T){var m=Nv(T);this.target=T,this.contentRect=m.contentRect,this.borderBoxSize=Ss([m.borderBoxSize]),this.contentBoxSize=Ss([m.contentBoxSize]),this.devicePixelContentBoxSize=Ss([m.devicePixelContentBoxSize])}return _}(),Dv=function(_){if(Ov(_))return 1/0;for(var T=0,m=_.parentNode;m;)T+=1,m=m.parentNode;return T},I2=function(){var _=1/0,T=[];Ts.forEach(function(D){if(D.activeTargets.length!==0){var B=[];D.activeTargets.forEach(function(X){var Z=new R2(X.target),nt=Dv(X.target);B.push(Z),X.lastReportedSize=Lv(X.target,X.observedBox),nt<_&&(_=nt)}),T.push(function(){D.callback.call(D.observer,B,D.observer)}),D.activeTargets.splice(0,D.activeTargets.length)}});for(var m=0,A=T;m<A.length;m++){var E=A[m];E()}return _},Gg=function(_){Ts.forEach(function(m){m.activeTargets.splice(0,m.activeTargets.length),m.skippedTargets.splice(0,m.skippedTargets.length),m.observationTargets.forEach(function(E){E.isActive()&&(Dv(E.target)>_?m.activeTargets.push(E):m.skippedTargets.push(E))})})},P2=function(){var _=0;for(Gg(_);T2();)_=I2(),Gg(_);return S2()&&w2(),_>0},qc,Fv=[],O2=function(){return Fv.splice(0).forEach(function(_){return _()})},N2=function(_){if(!qc){var T=0,m=document.createTextNode(""),A={characterData:!0};new MutationObserver(function(){return O2()}).observe(m,A),qc=function(){m.textContent="".concat(T?T--:T++)}}Fv.push(_),qc()},L2=function(_){N2(function(){requestAnimationFrame(_)})},Gh=0,D2=function(){return!!Gh},F2=250,B2={attributes:!0,characterData:!0,childList:!0,subtree:!0},Hg=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],jg=function(_){return _===void 0&&(_=0),Date.now()+_},Jc=!1,k2=function(){function _(){var T=this;this.stopped=!0,this.listener=function(){return T.schedule()}}return _.prototype.run=function(T){var m=this;if(T===void 0&&(T=F2),!Jc){Jc=!0;var A=jg(T);L2(function(){var E=!1;try{E=P2()}finally{if(Jc=!1,T=A-jg(),!D2())return;E?m.run(1e3):T>0?m.run(T):m.start()}})}},_.prototype.schedule=function(){this.stop(),this.run()},_.prototype.observe=function(){var T=this,m=function(){return T.observer&&T.observer.observe(document.body,B2)};document.body?m():al.addEventListener("DOMContentLoaded",m)},_.prototype.start=function(){var T=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Hg.forEach(function(m){return al.addEventListener(m,T.listener,!0)}))},_.prototype.stop=function(){var T=this;this.stopped||(this.observer&&this.observer.disconnect(),Hg.forEach(function(m){return al.removeEventListener(m,T.listener,!0)}),this.stopped=!0)},_}(),ed=new k2,zg=function(_){!Gh&&_>0&&ed.start(),Gh+=_,!Gh&&ed.stop()},U2=function(_){return!yd(_)&&!A2(_)&&getComputedStyle(_).display==="inline"},G2=function(){function _(T,m){this.target=T,this.observedBox=m||hl.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return _.prototype.isActive=function(){var T=Lv(this.target,this.observedBox,!0);return U2(this.target)&&(this.lastReportedSize=T),this.lastReportedSize.inlineSize!==T.inlineSize||this.lastReportedSize.blockSize!==T.blockSize},_}(),H2=function(){function _(T,m){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=T,this.callback=m}return _}(),kh=new WeakMap,Vg=function(_,T){for(var m=0;m<_.length;m+=1)if(_[m].target===T)return m;return-1},Uh=function(){function _(){}return _.connect=function(T,m){var A=new H2(T,m);kh.set(T,A)},_.observe=function(T,m,A){var E=kh.get(T),P=E.observationTargets.length===0;Vg(E.observationTargets,m)<0&&(P&&Ts.push(E),E.observationTargets.push(new G2(m,A&&A.box)),zg(1),ed.schedule())},_.unobserve=function(T,m){var A=kh.get(T),E=Vg(A.observationTargets,m),P=A.observationTargets.length===1;E>=0&&(P&&Ts.splice(Ts.indexOf(A),1),A.observationTargets.splice(E,1),zg(-1))},_.disconnect=function(T){var m=this,A=kh.get(T);A.observationTargets.slice().forEach(function(E){return m.unobserve(T,E.target)}),A.activeTargets.splice(0,A.activeTargets.length)},_}(),j2=function(){function _(T){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof T!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Uh.connect(this,T)}return _.prototype.observe=function(T,m){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Bg(T))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Uh.observe(this,T,m)},_.prototype.unobserve=function(T){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Bg(T))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Uh.unobserve(this,T)},_.prototype.disconnect=function(){Uh.disconnect(this)},_.toString=function(){return"function ResizeObserver () { [polyfill code] }"},_}();const z2=window.ResizeObserver||j2,Wg=.5,Kc=({width:_,height:T})=>`${_.toFixed(1)} x ${T.toFixed(1)} px`,Zc=(_,T)=>Boolean(_&&T&&Math.abs(_.width-T.width)<=Wg&&Math.abs(_.height-T.height)<=Wg),V2=new Set(["clicker"]),W2=function(){};class Bv{constructor({context:T,box:m,view:A,mountSlideController:E,mountWhiteboard:P,baseScenePath:D,appId:B,urlInterrupter:z,enableScale:X,onPagesReady:Z,onNavigate:nt}){this.slideController=null,this.isViewMounted=!1,this.justSildeReadonly=!1,this.syncEventQueuePolicy="fifo",this.boxSizeEventCount=0,this._applyResize=(at,Tt)=>{var N,R,F;if(at.width<=0||at.height<=0||Zc(this.lastAppliedSize,at))return;this.lastAppliedSize=at,this.lastAppliedSource=Tt,(N=this.resizableContainer)==null||N.updateResizableContainer(),(F=(R=this.slideController)==null?void 0:R.slide)==null||F.notifyFrameResize(),this.scaleDocsToFit();const bt=this._getContentSize();console.log("[app-slide] resize",{appId:this.appId,source:Tt,eventCount:this.boxSizeEventCount,event:Kc(at),dom:Kc(bt)})},this._applyCurrentBoxSize=at=>{const Tt=at!=null?at:this._getContentSize();this._applyResize(Tt,at?"event":"observer")},this._onObserverSize=at=>{at.width<=0||at.height<=0||(this.lastObserverSize=at,this._applyResize(at,"observer"))},this._onContextBoxSizeChange=at=>{if(at.appId===this.context.appId){if(this.boxSizeEventCount+=1,this.latestBoxSize={width:at.width,height:at.height},Zc(this.lastObserverSize,this.latestBoxSize)||Zc(this.lastAppliedSize,this.latestBoxSize)){console.log("[app-slide] boxSizeChange skipped, observer already applied",{appId:this.appId,eventCount:this.boxSizeEventCount,source:this.lastAppliedSource,size:Kc(this.latestBoxSize)});return}this._applyResize(this.latestBoxSize,"event"),this._reconnectContentObserver()}},this.onError=({error:at,index:Tt})=>{var bt,N;this.viewer.setPaused(),(bt=this.slideController)!=null&&bt.showRenderError&&(this.$overlay.textContent=`Error on slide[page=${this.slideController.page}]: ${at.message}`,this.$overlay.style.opacity="1"),(N=this.slideController)!=null&&N.onRenderError&&this.slideController.onRenderError(at,Tt),Dr.warn("[Slide] render error",at)},this.onRenderStart=()=>{this.$whiteboardView.classList.add(this.wrapClassName("wb-view-hidden")),this.viewer.setPlaying()},this.onRenderEnd=()=>{},this.onPageChanged=()=>{clearTimeout(this._onPageChangedTimer),this._onPageChangedTimer=setTimeout(this._onPageChanged,200)},this._onPageChangedTimer=0,this._onPageChanged=()=>{this.$overlay.style.opacity="",this.$whiteboardView.classList.remove(this.wrapClassName("wb-view-hidden"))},this.refreshPages=()=>{this.slideController&&(this.viewer.pages=tv(this.slideController.slide,this.slideController.previewList),this.viewer.setPageIndex(this.getPageIndex(this.slideController.page)),this.scaleDocsToFit())},this.scaleDocsToFit=()=>{if(this.slideController){const{width:at,height:Tt}=this.slideController.slide;at&&Tt&&(this.whiteboardView.moveCameraToContain({originX:-at/2,originY:-Tt/2,width:at,height:Tt,animationMode:"immediately"}),this.whiteboardView.setCameraBound({damping:1,maxContentMode:()=>this.whiteboardView.camera.scale,minContentMode:()=>this.whiteboardView.camera.scale,centerX:0,centerY:0,width:at,height:Tt}),this.isViewMounted||(this.isViewMounted=!0,console.log("[Slide] mount whiteboard view"),this.mountWhiteboard(this.$whiteboardView)))}},this.onPlay=()=>{this.slideController&&this.slideController.slide.nextStep()},this.onNewPageIndex=(at,Tt)=>{this.slideController&&this.slideController.jumpToPage(at+1,Tt)},this.sideEffect=new ua,this.namespace="netless-app-slide",this.toPdf=async()=>{if(!this.slideController){this.reportProgress(100,null);return}const{slide:at}=this.slideController,Tt=1920,bt=document.createElement("canvas"),N=bt.getContext("2d"),{slideCount:R,width:F,height:W}=at;let O=Math.floor(F),j=Math.floor(W);O>Tt&&(O=Tt,j=Math.floor(W*O/F)),j>Tt&&(j=Tt,O=Math.floor(F*j/W)),bt.width=O,bt.height=j;const Q=document.createElement("canvas");Q.width=O,Q.height=j;const G=Q.getContext("2d");if(!G||!this.getWhiteSnapshot||!N)return this.reportProgress(100,null),null;const It=O>j?"l":"p",{jsPDF:Vt}=await Promise.resolve().then(function(){return jw(require("jspdf"))}),ot=new Vt({format:[O,j],orientation:It,compress:!0});for(let ct=1;ct<=R;ct++){let tt=null;try{tt=await this.slideController.slide.snapshotWithTimingEnd(ct)}catch{}if(tt){const K=document.createElement("img");K.src=tt,await new Promise(dt=>K.onload=dt),N.drawImage(K,0,0,O,j)}G.clearRect(0,0,O,j),await this.getWhiteSnapshot(ct,Q,G,F,W);try{const K=Q.toDataURL("image/png"),dt=document.createElement("img");dt.src=K,await new Promise(rt=>dt.onload=rt),N.drawImage(dt,0,0,O,j)}catch{}const vt=bt.toDataURL("image/jpeg",.6);ct>1&&ot.addPage(),ot.addImage(vt,"JPEG",0,0,O,j,"","FAST"),N.clearRect(0,0,O,j),Math.ceil(ct/R*100)<100&&this.reportProgress(Math.ceil(ct/R*100),null)}const V=ot.output("arraybuffer"),U=this.box.title;this.reportProgress(100,{pdf:V,title:U})},this.context=T,this.box=m,this.whiteboardView=A,this.mountSlideController=E,this.mountWhiteboard=P,this.onNavigate=nt||W2,this.baseScenePath=D,this.enableScale=X!=null?X:!1,this.appId=B,this.viewer=new vd({readonly:m.readonly,onNewPageIndex:this.onNewPageIndex,onPlay:this.onPlay,urlInterrupter:z,onPagesReady:Z}),this.sideEffect.add(()=>{const at=Tt=>{this.setReadonly(Tt)};return m.events.on("readonly",at),()=>m.events.off("readonly",at)}),this.sideEffect.add(()=>{const at=Tt=>{Tt.data.type==="@netless/_request_save_pdf_"&&Tt.data.appId===this.appId&&this.toPdf().catch(()=>this.reportProgress(100,null))};return window.addEventListener("message",at),()=>{window.removeEventListener("message",at)}}),this.render(),this._registerBoxSizeChange(),this.sideEffect.add(()=>{const at=bt=>{this.resizableContainer&&this.resizableContainer.scaleContainer(bt)};console.log("[SlideDocsViewer] Initial storage state:",this.context.storage.state),console.log("[SlideDocsViewer] Initial slideScale:",this.context.storage.state.slideScale),this.context.storage.state.slideScale!==void 0?(console.log("[SlideDocsViewer] Applying initial slideScale:",this.context.storage.state.slideScale),at(this.context.storage.state.slideScale)):console.log("[SlideDocsViewer] No initial slideScale found");const Tt=bt=>{var N,R;if(bt.slideScale!==void 0){const F=bt.slideScale.newValue;at(F!=null?F:1)}if(bt.translateX!==void 0||bt.translateY!==void 0){const F=this.resizableContainer.getTranslate(),W=bt.translateX?(N=bt.translateX.newValue)!=null?N:.5:F.x,O=bt.translateY?(R=bt.translateY.newValue)!=null?R:.5:F.y;this.resizableContainer&&this.resizableContainer.handleNormalizeTranslate(W,O,{triggerScrollBar:!0,triggerSync:!1})}};return console.log("[SlideDocsViewer] Adding storage state listener"),this.context.storage.onStateChanged.addListener(Tt),()=>{console.log("[SlideDocsViewer] Removing storage state listener"),this.context.storage.onStateChanged.removeListener(Tt)}})}setJustSildeReadonly(T){this.justSildeReadonly=T,this.applyInteractionState()}setSyncEventQueuePolicy(T){this.syncEventQueuePolicy=T,this.applyInteractionState()}applyInteractionState(){var m;const T=(m=this.slideController)==null?void 0:m.slide;!T||(T.setInteractive(!this.justSildeReadonly),T.setSyncEventQueuePolicy(this.syncEventQueuePolicy))}render(){this.resizableContainer||(this.resizableContainer=new b2(this.viewer.$content,this.context,this.enableScale,this.box)),this.renderSlideContainer(),this.renderWhiteboardView(),this.renderOverlay(),this.resizableContainer.addSlideContainer(this.$slide),this.resizableContainer.addWhiteboardContainer(this.$whiteboardView),this.viewer.$content.appendChild(this.$overlay),this.sideEffect.addEventListener(window,"keydown",T=>{if(!this.justSildeReadonly&&this.box.focus&&this.slideController&&!Jw(T.target))switch(T.key){case"ArrowUp":case"ArrowLeft":{this.slideController.slide.prevStep(),this.onNavigate(this.slideController.page,"keydown");break}case"ArrowRight":case"ArrowDown":{this.slideController.slide.nextStep(),this.onNavigate(this.slideController.page,"keydown");break}}})}renderOverlay(){if(!this.$overlay){const T=document.createElement("div");T.className=this.wrapClassName("overlay"),this.$overlay=T}return this.$overlay}renderSlideContainer(){if(!this.$slide){const T=document.createElement("div");T.className=this.wrapClassName("slide"),T.dataset.appKind="Slide",this.$slide=T}return this.$slide}renderWhiteboardView(){return this.$whiteboardView||(this.$whiteboardView=document.createElement("div"),this.$whiteboardView.className=this.wrapClassName("wb-view")),this.$whiteboardView}mount(){var T,m,A,E;return this.box.mountContent(this.viewer.$content),this.box.mountFooter(this.viewer.$footer),this.slideController=this.mountSlideController({anchor:this.$slide,onRenderStart:this.onRenderStart,onRenderEnd:this.onRenderEnd,onTransitionStart:this.viewer.setPlaying,onTransitionEnd:this.viewer.setPaused,onReady:this.refreshPages,onNavigate:this.onNavigate,onError:this.onError}),this.applyInteractionState(),this.resizableContainer.setSlideObject(this.slideController.slide),this.scaleDocsToFit(),this.sideEffect.add(()=>(this.whiteboardView.callbacks.on("onSizeUpdated",this.scaleDocsToFit),()=>this.whiteboardView.callbacks.off("onSizeUpdated",this.scaleDocsToFit))),this._observeContentSize(),this._applyCurrentBoxSize(),(E=(A=(m=(T=this.context).getAppProxy)==null?void 0:m.call(T))==null?void 0:A.scheduleBoxSizeSync)==null||E.call(A),this}_getContentSize(){const T=(this.viewer.$content||this.box.$content).getBoundingClientRect();return{width:T.width,height:T.height}}_reconnectContentObserver(){const T=this.viewer.$content;!T||!this.contentResizeObserver||(this.contentResizeObserver.disconnect(),this.contentResizeObserver.observe(T))}_observeContentSize(){this.contentResizeObserver||(this.contentResizeObserver=new z2(T=>{const m=T[T.length-1],A=m!=null&&m.contentRect?{width:m.contentRect.width,height:m.contentRect.height}:this._getContentSize();this._onObserverSize(A)})),this._reconnectContentObserver()}_registerBoxSizeChange(){var T,m,A,E;this.offBoxSizeChange=this.context.emitter.on("boxSizeChange",this._onContextBoxSizeChange),this._observeContentSize(),this._applyCurrentBoxSize(),(E=(A=(m=(T=this.context).getAppProxy)==null?void 0:m.call(T))==null?void 0:A.scheduleBoxSizeSync)==null||E.call(A)}getPageIndex(T){return(T>0?T:1)-1}unmount(){var T,m;return(T=this.offBoxSizeChange)==null||T.call(this),this.offBoxSizeChange=void 0,(m=this.contentResizeObserver)==null||m.disconnect(),this.contentResizeObserver=void 0,this.slideController&&(this.slideController.destroy(),this.slideController=null),this.viewer.unmount(),this.resizableContainer.destroy(this.box),this}setReadonly(T){this.viewer.setReadonly(T)}destroy(){this.sideEffect.flushAll(),this.unmount(),this.viewer.destroy()}toggleClickThrough(T){this.$whiteboardView.style.pointerEvents=!T||V2.has(T)?"none":"auto"}wrapClassName(T){return`${this.namespace}-${T}`}async getWhiteSnapshot(T,m,A,E,P){const D={centerX:0,centerY:0,scale:Math.min(m.width/E,m.height/P)},B=`${this.baseScenePath}/${T}`,z=this.context.manager.windowManger;z._appliancePlugin?await z._appliancePlugin.screenshotToCanvasAsync(A,B,m.width,m.height,D):this.whiteboardView.screenshotToCanvas(A,B,m.width,m.height,D)}reportProgress(T,m){window.postMessage({type:"@netless/_result_save_pdf_",appId:this.appId,progress:T,result:m})}}exports.useFreezer=!1;exports.FreezerLength=2;function X2(){return exports.FreezerLength}function Y2(_){exports.FreezerLength=_<1?1/0:_}const ol=_=>"["+_+"]",jh={map:new Map,boxes:new Map,queue:[],validateQueue(){for(this.queue.sort((_,T)=>{var E,P,D,B;const m=(P=(E=this.boxes.get(_))==null?void 0:E.zIndex)!=null?P:0,A=(B=(D=this.boxes.get(T))==null?void 0:D.zIndex)!=null?B:0;return-(m-A)}),li("[Slide] freezer: validate",ol(this.queue));this.queue.length>exports.FreezerLength;){const _=this.queue.pop(),T=this.map.get(_);T&&(li("[Slide] freezer: validate-freeze",_,ol(this.queue)),T.freeze())}},set(_,T,m){li("[Slide] freezer: add",_,ol(this.queue)),this.map.set(_,T),this.boxes.set(_,m),this.queue.includes(_)||this.queue.unshift(_),this.validateQueue()},delete(_){this.map.delete(_),this.boxes.delete(_),this.queue=this.queue.filter(T=>T!==_),li("[Slide] freezer: delete",_,ol(this.queue))},focus(_){const T=this.map.get(_),m=this.queue.indexOf(_);m>-1&&this.queue.splice(m,1),this.queue.unshift(_),this.validateQueue(),li("[Slide] freezer: focus",_,ol(this.queue)),T&&T.unfreeze()}},nd=new Set;function q2(_){return nd.add(_),()=>nd.delete(_)}const id=new Set;function J2(_){return id.add(_),()=>id.delete(_)}const K2=_=>{exports.useFreezer=!0,_.on("focus",({appId:T})=>{jh.focus(T)}),_.on("created",({appId:T})=>{nd.forEach(m=>m(T))}),_.on("destroy",({appId:T})=>{id.forEach(m=>m(T))})};var kv=`.netless-app-slide-content{position:relative;height:100%;overflow:hidden}.netless-app-slide-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-slide-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-slide-preview-active .netless-app-slide-preview-mask{display:block}.netless-app-slide-preview-active .netless-app-slide-preview{transform:translate(0)}.netless-app-slide-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-slide-preview-page:hover,.netless-app-slide-preview-page.netless-app-slide-preview-page-active{border-color:#444e601a}.netless-app-slide-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-slide-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-slide-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;-webkit-user-select:none;-webkit-touch-callout:none;-user-select:none;color:#191919}.netless-app-slide-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-slide-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-slide-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-slide-footer-btn:hover{background:transparent!important}}.netless-app-slide-footer-btn>svg{width:100%;height:100%}.netless-app-slide-footer-btn>svg:nth-of-type(2){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-slide-footer-btn~.netless-app-slide-footer-btn{margin-left:15px}.netless-app-slide-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-slide-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-slide-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-slide-page-number-input:hover,.netless-app-slide-page-number-input:focus,.netless-app-slide-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-slide-readonly.netless-app-slide-footer{display:none}.telebox-color-scheme-dark .netless-app-slide-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-slide-page-number-input:active,.telebox-color-scheme-dark .netless-app-slide-page-number-input:focus,.telebox-color-scheme-dark .netless-app-slide-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-slide-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-slide-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-slide-preview{background:rgba(50,50,50,.9)}.netless-app-slide-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden;transition:opacity .2s}.netless-app-slide-wb-view-hidden{opacity:0}.netless-app-slide-overlay{display:flex;align-items:center;justify-content:center;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%;padding:8px;background:rgba(255,0,0,.25);transition:opacity .3s;opacity:0;pointer-events:none}.netless-app-slide-slide{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-slide-slide canvas{transform:scale(var(--netless-app-slide-scale, 1))}
8073
- `;function Z2({container:_,taskId:T,resourceList:m=[],url:A=od,debug:E=!1}){if(!T)throw new Error("[Slide] taskId is required");_.style.cssText+="display:flex;flex-direction:column";const P=new Uv({target:_});return P.debug=!!E,P.mount(T,A,m),P}class Uv{constructor(T){this.slide=null,this.debug=!1,this.previewList=[],this.sideEffect=new ua,this.ready=!1,this.readyPromise=new Promise(m=>{this.resolveReady=()=>{this.ready=!0,m()}}),this.hotkeyListener=m=>{if(this.slide)switch(m.key){case"ArrowUp":case"ArrowLeft":{this.slide.prevStep();break}case"ArrowRight":case"ArrowDown":{this.slide.nextStep();break}}},this.onPageChanged=m=>{this.viewer.setPageIndex(m-1)},this.onTransitionStart=()=>{this.viewer.setPlaying()},this.onTransitionEnd=()=>{this.viewer.setPaused()},this.onError=({error:m})=>{this.viewer.setPaused(),console.warn("[Slide] render error",m)},this.destroyed=!1,this.refreshPages=()=>{this.slide&&(this.viewer.pages=tv(this.slide,this.previewList),this.viewer.setPageIndex(this.getPageIndex(this.slide.slideState.currentSlideIndex)))},this.onPlay=()=>{this.slide&&this.slide.nextStep()},this.onNewPageIndex=m=>{this.slide&&this.slide.slideCount>0&&this.slide.renderSlide(Yg(m+1,1,this.slide.slideCount))},this.namespace="netless-app-slide",this.target=T.target,this.bgColor=Qg(this.target),this.viewer=new vd({readonly:!1,onNewPageIndex:this.onNewPageIndex,onPlay:this.onPlay}),this.render()}render(){this.viewer.$content.appendChild(this.renderSlideContainer()),this.registerHotKeys(window)}registerHotKeys(T){this.sideEffect.addEventListener(T,"keydown",this.hotkeyListener,void 0,"hotkey")}mount(T,m,A,E=[]){this.target.appendChild(this.renderStyle()),this.target.appendChild(this.viewer.$content),this.target.appendChild(this.viewer.$footer),this.slide=new ci.Slide({anchor:this.$slide,interactive:!0,mode:"local",controller:this.debug,enableGlobalClick:!0,renderOptions:{minFPS:25,maxFPS:30,autoFPS:!0,autoResolution:!0,transactionBgColor:this.bgColor}}),this.registerEventListeners(),A.length>0?this.slide.setResourceList(T,A):this.slide.setResource(T,m),this.slide.renderSlide(1),this.previewList=E}renderStyle(){const T=document.createElement("style");return T.appendChild(document.createTextNode(kv)),T}registerEventListeners(){if(!this.slide)return;const{slide:T}=this;T.on(ci.SLIDE_EVENTS.slideChange,this.onPageChanged),T.on(ci.SLIDE_EVENTS.renderStart,this.onTransitionStart),T.on(ci.SLIDE_EVENTS.renderEnd,this.onTransitionEnd),T.on(ci.SLIDE_EVENTS.mainSeqStepStart,this.onTransitionStart),T.on(ci.SLIDE_EVENTS.mainSeqStepEnd,this.onTransitionEnd),T.on(ci.SLIDE_EVENTS.renderError,this.onError),T.on(ci.SLIDE_EVENTS.renderEnd,this.resolveReady),this.readyPromise.then(this.refreshPages)}destroy(){this.sideEffect.flushAll(),this.slide&&!this.destroyed&&(this.slide.destroy(),this.destroyed=!0),this.viewer.destroy()}getPageIndex(T){return(T>0?T:1)-1}renderSlideContainer(){if(!this.$slide){const T=document.createElement("div");T.className=this.wrapClassName("slide"),T.dataset.appKind="Slide",this.$slide=T}return this.$slide}wrapClassName(T){return`${this.namespace}-${T}`}}const $2=ci.Slide.usePlugin.bind(ci.Slide),rd="0.2.100-alpha.2",Q2={kind:"Slide",setup(_){var Z,nt,at,Tt,bt;if(console.log("[Slide] setup @ "+rd),_.getIsWritable()&&_.storage.ensureState(Qc),!_.storage.state.taskId)throw new Error("[Slide] no taskId");const T=_.getView();if(!T)throw new Error("[Slide] no view, please set scenePath on addApp()");T.disableCameraTransform=!0;const m=_.getBox();m.mountStyles(kv);try{m.$content.dataset.appSlideVersion=rd}catch{}const A=_.getInitScenePath();let E=null;const P=N=>{const R=_.getRoom();if(E&&E.slideController){let F=!1;R&&_.getIsWritable()&&($c(R,_,E.slideController.slide,A),F=!0),li("[Slide] page to",N,F?"(synced)":""),E.viewer.setPageIndex(N-1),E.viewer.setPaused(),E.onPageChanged();const W=E.viewer.pages.length;W>0&&_.dispatchAppEvent("pageStateChange",{index:N-1,length:W})}},D=N=>{const R=_.getAppOptions()||{},F=new nv({context:_,...N,onPageChanged:P,onNavigate:N.onNavigate,onRenderError:R.onRenderError,showRenderError:R.showRenderError,invisibleBehavior:R.invisibleBehavior});return exports.useFreezer&&jh.set(_.appId,F,m),Dr.setAppController(_.appId,F),F.readyPromise.then(N.onReady).then(()=>{const W=_.getRoom();let O=!1;W&&_.getIsWritable()&&($c(W,_,F.slide,A),O=!0);const j=F.slide.slideState.currentSlideIndex;li("[Slide] page to",j,O?"(synced)":"","(on ready)"),F.slide.on("renderEnd",N.onRenderEnd)}),F};E=new Bv({context:_,box:m,view:T,mountSlideController:D,mountWhiteboard:_.mountView.bind(_),baseScenePath:A,appId:_.appId,urlInterrupter:(Z=_.getAppOptions())==null?void 0:Z.urlInterrupter,enableScale:(at=(nt=_.getAppOptions())==null?void 0:nt.enableScale)!=null?at:!1,onPagesReady:({length:N})=>{const R=(E==null?void 0:E.viewer.pageIndex)||0;_.dispatchAppEvent("pageStateChange",{index:R,length:N})},onNavigate:(N,R)=>{li("[Slide] user navigate to",N,R?`(${R})`:"")}});const B=_.getAppOptions();E.setSyncEventQueuePolicy((Tt=B==null?void 0:B.syncEventQueuePolicy)!=null?Tt:"fifo"),E.setJustSildeReadonly((bt=B==null?void 0:B.justSildeReadonly)!=null?bt:!1);const z=_.getRoom(),X=new ua;return X.add(()=>{var N;return Dr.setAppContext(_.appId,_),Dr.enable=((N=_.getAppOptions())==null?void 0:N.debug)||!1,Dr.level="debug",()=>Dr.deleteApp(_.appId)}),z&&(E.toggleClickThrough(z.state.memberState.currentApplianceName),X.add(()=>{const N=R=>{R.memberState&&E&&E.toggleClickThrough(R.memberState.currentApplianceName)};return z.callbacks.on("onRoomStateChanged",N),()=>z.callbacks.off("onRoomStateChanged",N)})),_.emitter.on("destroy",()=>{li("[Slide] destroy",_.appId),exports.useFreezer&&jh.delete(_.appId),X.flushAll(),E&&(E.destroy(),E=null)}),E.mount(),{onScaleChanged:N=>{!E||(E.resizableContainer.onScaleChanged=N)},scaleView:N=>{let R=Number(N);Number.isNaN(R)&&(R=1),R<1&&(R=1),R>4&&(R=4),_.storage.setState({slideScale:R}),_.storage.setState({translateX:.5,translateY:.5}),E==null||E.resizableContainer.scaleContainer(R)},getViewScale:()=>E==null?void 0:E.resizableContainer.getScale(),translateView:(N,R)=>{var F,W;if(E!=null&&E.resizableContainer){const O=E.resizableContainer,j=_.getBox().$content.getBoundingClientRect(),Q=O.container.getBoundingClientRect(),G=Q.width-j.width,It=Q.height-j.height;if(G>0||It>0){const Vt=(F=O.translateX)!=null?F:.5,ot=(W=O.translateY)!=null?W:.5,V=G>0?N/G:0,U=It>0?R/It:0,ct=Math.max(0,Math.min(1,Vt+V)),tt=Math.max(0,Math.min(1,ot+U));_.storage.setState({translateX:ct,translateY:tt}),O.handleNormalizeTranslate(ct,tt,{triggerScrollBar:!0,triggerSync:!1})}}},setSildeReadonly:N=>{E==null||E.setJustSildeReadonly(N)},setSyncEventQueuePolicy:N=>{E==null||E.setSyncEventQueuePolicy(N)},viewer:()=>E,controller:()=>E==null?void 0:E.slideController,slide:()=>{var N;return(N=E==null?void 0:E.slideController)==null?void 0:N.slide},nextStep:()=>{var N;return E&&E.slideController?((N=E==null?void 0:E.slideController)==null||N.slide.nextStep(),!0):!1},prevStep:()=>{var N;return E&&E.slideController?((N=E==null?void 0:E.slideController)==null||N.slide.prevStep(),!0):!1},position:()=>{const N=E==null?void 0:E.slideController;if(N)return[N.page,N.pageCount]},nextPage:()=>{const N=E==null?void 0:E.slideController;if(N){const{page:R,pageCount:F}=N;if(F>0&&R<F)return N.jumpToPage(R+1),!0}return!1},prevPage:()=>{const N=E==null?void 0:E.slideController;if(N){const{page:R,pageCount:F}=N;if(F>0&&R>1)return N.jumpToPage(R-1),!0}return!1},jumpToPage:N=>{const R=E==null?void 0:E.slideController;if(R){const{page:F,pageCount:W}=R;if(W>0&&F>0&&F<=W)return R.jumpToPage(N),!0}return!1}}}};exports.DefaultUrl=od;exports.DocsViewer=vd;exports.SideEffectManager=ua;exports.Slide=ci.Slide;exports.SlideController=nv;exports.SlideControllerBase=ev;exports.SlideDocsViewer=Bv;exports.SlidePreviewer=Uv;exports.addHooks=K2;exports.apps=jh;exports.default=Q2;exports.getFreezerLength=X2;exports.log=li;exports.logger=Dr;exports.onCreated=q2;exports.onDestroyed=J2;exports.previewSlide=Z2;exports.setFreezerLength=Y2;exports.syncSceneWithSlide=$c;exports.usePlugin=$2;exports.version=rd;
8073
+ `;function Z2({container:_,taskId:T,resourceList:m=[],url:A=od,debug:E=!1}){if(!T)throw new Error("[Slide] taskId is required");_.style.cssText+="display:flex;flex-direction:column";const P=new Uv({target:_});return P.debug=!!E,P.mount(T,A,m),P}class Uv{constructor(T){this.slide=null,this.debug=!1,this.previewList=[],this.sideEffect=new ua,this.ready=!1,this.readyPromise=new Promise(m=>{this.resolveReady=()=>{this.ready=!0,m()}}),this.hotkeyListener=m=>{if(this.slide)switch(m.key){case"ArrowUp":case"ArrowLeft":{this.slide.prevStep();break}case"ArrowRight":case"ArrowDown":{this.slide.nextStep();break}}},this.onPageChanged=m=>{this.viewer.setPageIndex(m-1)},this.onTransitionStart=()=>{this.viewer.setPlaying()},this.onTransitionEnd=()=>{this.viewer.setPaused()},this.onError=({error:m})=>{this.viewer.setPaused(),console.warn("[Slide] render error",m)},this.destroyed=!1,this.refreshPages=()=>{this.slide&&(this.viewer.pages=tv(this.slide,this.previewList),this.viewer.setPageIndex(this.getPageIndex(this.slide.slideState.currentSlideIndex)))},this.onPlay=()=>{this.slide&&this.slide.nextStep()},this.onNewPageIndex=m=>{this.slide&&this.slide.slideCount>0&&this.slide.renderSlide(Yg(m+1,1,this.slide.slideCount))},this.namespace="netless-app-slide",this.target=T.target,this.bgColor=Qg(this.target),this.viewer=new vd({readonly:!1,onNewPageIndex:this.onNewPageIndex,onPlay:this.onPlay}),this.render()}render(){this.viewer.$content.appendChild(this.renderSlideContainer()),this.registerHotKeys(window)}registerHotKeys(T){this.sideEffect.addEventListener(T,"keydown",this.hotkeyListener,void 0,"hotkey")}mount(T,m,A,E=[]){this.target.appendChild(this.renderStyle()),this.target.appendChild(this.viewer.$content),this.target.appendChild(this.viewer.$footer),this.slide=new ci.Slide({anchor:this.$slide,interactive:!0,mode:"local",controller:this.debug,enableGlobalClick:!0,renderOptions:{minFPS:25,maxFPS:30,autoFPS:!0,autoResolution:!0,transactionBgColor:this.bgColor}}),this.registerEventListeners(),A.length>0?this.slide.setResourceList(T,A):this.slide.setResource(T,m),this.slide.renderSlide(1),this.previewList=E}renderStyle(){const T=document.createElement("style");return T.appendChild(document.createTextNode(kv)),T}registerEventListeners(){if(!this.slide)return;const{slide:T}=this;T.on(ci.SLIDE_EVENTS.slideChange,this.onPageChanged),T.on(ci.SLIDE_EVENTS.renderStart,this.onTransitionStart),T.on(ci.SLIDE_EVENTS.renderEnd,this.onTransitionEnd),T.on(ci.SLIDE_EVENTS.mainSeqStepStart,this.onTransitionStart),T.on(ci.SLIDE_EVENTS.mainSeqStepEnd,this.onTransitionEnd),T.on(ci.SLIDE_EVENTS.renderError,this.onError),T.on(ci.SLIDE_EVENTS.renderEnd,this.resolveReady),this.readyPromise.then(this.refreshPages)}destroy(){this.sideEffect.flushAll(),this.slide&&!this.destroyed&&(this.slide.destroy(),this.destroyed=!0),this.viewer.destroy()}getPageIndex(T){return(T>0?T:1)-1}renderSlideContainer(){if(!this.$slide){const T=document.createElement("div");T.className=this.wrapClassName("slide"),T.dataset.appKind="Slide",this.$slide=T}return this.$slide}wrapClassName(T){return`${this.namespace}-${T}`}}const $2=ci.Slide.usePlugin.bind(ci.Slide),rd="0.2.100",Q2={kind:"Slide",setup(_){var Z,nt,at,Tt,bt;if(console.log("[Slide] setup @ "+rd),_.getIsWritable()&&_.storage.ensureState(Qc),!_.storage.state.taskId)throw new Error("[Slide] no taskId");const T=_.getView();if(!T)throw new Error("[Slide] no view, please set scenePath on addApp()");T.disableCameraTransform=!0;const m=_.getBox();m.mountStyles(kv);try{m.$content.dataset.appSlideVersion=rd}catch{}const A=_.getInitScenePath();let E=null;const P=N=>{const R=_.getRoom();if(E&&E.slideController){let F=!1;R&&_.getIsWritable()&&($c(R,_,E.slideController.slide,A),F=!0),li("[Slide] page to",N,F?"(synced)":""),E.viewer.setPageIndex(N-1),E.viewer.setPaused(),E.onPageChanged();const W=E.viewer.pages.length;W>0&&_.dispatchAppEvent("pageStateChange",{index:N-1,length:W})}},D=N=>{const R=_.getAppOptions()||{},F=new nv({context:_,...N,onPageChanged:P,onNavigate:N.onNavigate,onRenderError:R.onRenderError,showRenderError:R.showRenderError,invisibleBehavior:R.invisibleBehavior});return exports.useFreezer&&jh.set(_.appId,F,m),Dr.setAppController(_.appId,F),F.readyPromise.then(N.onReady).then(()=>{const W=_.getRoom();let O=!1;W&&_.getIsWritable()&&($c(W,_,F.slide,A),O=!0);const j=F.slide.slideState.currentSlideIndex;li("[Slide] page to",j,O?"(synced)":"","(on ready)"),F.slide.on("renderEnd",N.onRenderEnd)}),F};E=new Bv({context:_,box:m,view:T,mountSlideController:D,mountWhiteboard:_.mountView.bind(_),baseScenePath:A,appId:_.appId,urlInterrupter:(Z=_.getAppOptions())==null?void 0:Z.urlInterrupter,enableScale:(at=(nt=_.getAppOptions())==null?void 0:nt.enableScale)!=null?at:!1,onPagesReady:({length:N})=>{const R=(E==null?void 0:E.viewer.pageIndex)||0;_.dispatchAppEvent("pageStateChange",{index:R,length:N})},onNavigate:(N,R)=>{li("[Slide] user navigate to",N,R?`(${R})`:"")}});const B=_.getAppOptions();E.setSyncEventQueuePolicy((Tt=B==null?void 0:B.syncEventQueuePolicy)!=null?Tt:"fifo"),E.setJustSildeReadonly((bt=B==null?void 0:B.justSildeReadonly)!=null?bt:!1);const z=_.getRoom(),X=new ua;return X.add(()=>{var N;return Dr.setAppContext(_.appId,_),Dr.enable=((N=_.getAppOptions())==null?void 0:N.debug)||!1,Dr.level="debug",()=>Dr.deleteApp(_.appId)}),z&&(E.toggleClickThrough(z.state.memberState.currentApplianceName),X.add(()=>{const N=R=>{R.memberState&&E&&E.toggleClickThrough(R.memberState.currentApplianceName)};return z.callbacks.on("onRoomStateChanged",N),()=>z.callbacks.off("onRoomStateChanged",N)})),_.emitter.on("destroy",()=>{li("[Slide] destroy",_.appId),exports.useFreezer&&jh.delete(_.appId),X.flushAll(),E&&(E.destroy(),E=null)}),E.mount(),{onScaleChanged:N=>{!E||(E.resizableContainer.onScaleChanged=N)},scaleView:N=>{let R=Number(N);Number.isNaN(R)&&(R=1),R<1&&(R=1),R>4&&(R=4),_.storage.setState({slideScale:R}),_.storage.setState({translateX:.5,translateY:.5}),E==null||E.resizableContainer.scaleContainer(R)},getViewScale:()=>E==null?void 0:E.resizableContainer.getScale(),translateView:(N,R)=>{var F,W;if(E!=null&&E.resizableContainer){const O=E.resizableContainer,j=_.getBox().$content.getBoundingClientRect(),Q=O.container.getBoundingClientRect(),G=Q.width-j.width,It=Q.height-j.height;if(G>0||It>0){const Vt=(F=O.translateX)!=null?F:.5,ot=(W=O.translateY)!=null?W:.5,V=G>0?N/G:0,U=It>0?R/It:0,ct=Math.max(0,Math.min(1,Vt+V)),tt=Math.max(0,Math.min(1,ot+U));_.storage.setState({translateX:ct,translateY:tt}),O.handleNormalizeTranslate(ct,tt,{triggerScrollBar:!0,triggerSync:!1})}}},setSildeReadonly:N=>{E==null||E.setJustSildeReadonly(N)},setSyncEventQueuePolicy:N=>{E==null||E.setSyncEventQueuePolicy(N)},viewer:()=>E,controller:()=>E==null?void 0:E.slideController,slide:()=>{var N;return(N=E==null?void 0:E.slideController)==null?void 0:N.slide},nextStep:()=>{var N;return E&&E.slideController?((N=E==null?void 0:E.slideController)==null||N.slide.nextStep(),!0):!1},prevStep:()=>{var N;return E&&E.slideController?((N=E==null?void 0:E.slideController)==null||N.slide.prevStep(),!0):!1},position:()=>{const N=E==null?void 0:E.slideController;if(N)return[N.page,N.pageCount]},nextPage:()=>{const N=E==null?void 0:E.slideController;if(N){const{page:R,pageCount:F}=N;if(F>0&&R<F)return N.jumpToPage(R+1),!0}return!1},prevPage:()=>{const N=E==null?void 0:E.slideController;if(N){const{page:R,pageCount:F}=N;if(F>0&&R>1)return N.jumpToPage(R-1),!0}return!1},jumpToPage:N=>{const R=E==null?void 0:E.slideController;if(R){const{page:F,pageCount:W}=R;if(W>0&&F>0&&F<=W)return R.jumpToPage(N),!0}return!1}}}};exports.DefaultUrl=od;exports.DocsViewer=vd;exports.SideEffectManager=ua;exports.Slide=ci.Slide;exports.SlideController=nv;exports.SlideControllerBase=ev;exports.SlideDocsViewer=Bv;exports.SlidePreviewer=Uv;exports.addHooks=K2;exports.apps=jh;exports.default=Q2;exports.getFreezerLength=X2;exports.log=li;exports.logger=Dr;exports.onCreated=q2;exports.onDestroyed=J2;exports.previewSlide=Z2;exports.setFreezerLength=Y2;exports.syncSceneWithSlide=$c;exports.usePlugin=$2;exports.version=rd;
8074
8074
  //# sourceMappingURL=main.cjs.js.map