@netless/window-manager 1.0.14 → 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-docs-viewer.mjs","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":[],"mappings":"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"}