@netless/window-manager 1.0.15 → 1.0.17-beta.0

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-docs-viewer.js","sources":["../node_modules/.pnpm/@netless+app-docs-viewer@0.2.20_jspdf@2.5.2/node_modules/@netless/app-docs-viewer/dist/main.es.js"],"sourcesContent":["var styles = \".netless-app-docs-viewer-content{position:relative;height:100%;overflow:hidden}.netless-app-docs-viewer-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-docs-viewer-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview-mask{display:block}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview{transform:translate(0)}.netless-app-docs-viewer-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-docs-viewer-preview-page:hover,.netless-app-docs-viewer-preview-page.netless-app-docs-viewer-preview-page-active{border-color:#444e601a}.netless-app-docs-viewer-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-docs-viewer-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;user-select:none}.netless-app-docs-viewer-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-docs-viewer-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-docs-viewer-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:transparent;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-docs-viewer-footer-btn:hover{background:transparent!important}}.netless-app-docs-viewer-footer-btn>svg{width:100%;height:100%}.netless-app-docs-viewer-footer-btn>svg:nth-of-type(2){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-docs-viewer-footer-btn~.netless-app-docs-viewer-footer-btn{margin-left:15px}.netless-app-docs-viewer-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-docs-viewer-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-docs-viewer-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:transparent;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn:hover{background:transparent}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:active{background:transparent;box-shadow:none}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:disabled{color:inherit}.netless-app-docs-viewer-readonly.netless-app-docs-viewer-float-footer{display:none}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:active,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:focus,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-docs-viewer-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-docs-viewer-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-docs-viewer-preview{background:rgba(50,50,50,.9)}.netless-app-docs-viewer-static-scrollbar{position:absolute;top:0;right:0;z-index:2147483647;width:8px;min-height:30px;margin:0;padding:0;border:none;outline:none;border-radius:4px;background:rgba(68,78,96,.4);box-shadow:1px 1px 8px #ffffffb3;opacity:0;transition:background .4s,opacity .4s 3s,transform .2s;user-select:none}.netless-app-docs-viewer-static-scrollbar.netless-app-docs-viewer-static-scrollbar-dragging{background:rgba(68,78,96,.6);opacity:1;transition:background .4s,opacity .4s 3s!important}.netless-app-docs-viewer-static-scrollbar:hover,.netless-app-docs-viewer-static-scrollbar:focus{background:rgba(68,78,96,.5)}.netless-app-docs-viewer-static-scrollbar:active{background:rgba(68,78,96,.6)}.netless-app-docs-viewer-content:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-static-scrollbar{display:none}.netless-app-docs-viewer-static-pages:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.page-renderer-pages-container{position:relative;overflow:hidden}.page-renderer-page{position:absolute;top:0;left:0;background-position:center;background-size:cover;background-repeat:no-repeat}.page-renderer-pages-container.is-hwa .page-renderer-page{will-change:transform}.page-renderer-page-img{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-pages{overflow:hidden;position:relative;height:100%;user-select:none}.netless-app-docs-viewer-static-page{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-wb-view,.netless-app-docs-viewer-dynamic-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden}.netless-app-docs-viewer-dynamic-wb-view .cursor-clicker .ppt-event-source{cursor:pointer}\\n\";\nconst copyProperty = (to, from, property, ignoreNonConfigurable) => {\n if (property === \"length\" || property === \"prototype\") {\n return;\n }\n if (property === \"arguments\" || property === \"caller\") {\n return;\n }\n const toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n return;\n }\n Object.defineProperty(to, property, fromDescriptor);\n};\nconst canCopyProperty = function(toDescriptor, fromDescriptor) {\n return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);\n};\nconst changePrototype = (to, from) => {\n const fromPrototype = Object.getPrototypeOf(from);\n if (fromPrototype === Object.getPrototypeOf(to)) {\n return;\n }\n Object.setPrototypeOf(to, fromPrototype);\n};\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, \"toString\");\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, \"name\");\nconst changeToString = (to, from, name) => {\n const withName = name === \"\" ? \"\" : `with ${name.trim()}() `;\n const newToString = wrappedToString.bind(null, withName, from.toString());\n Object.defineProperty(newToString, \"name\", toStringName);\n Object.defineProperty(to, \"toString\", { ...toStringDescriptor, value: newToString });\n};\nfunction mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {\n const { name } = to;\n for (const property of Reflect.ownKeys(from)) {\n copyProperty(to, from, property, ignoreNonConfigurable);\n }\n changePrototype(to, from);\n changeToString(to, from, name);\n return to;\n}\nconst debounceFn = (inputFunction, options = {}) => {\n if (typeof inputFunction !== \"function\") {\n throw new TypeError(`Expected the first argument to be a function, got \\`${typeof inputFunction}\\``);\n }\n const {\n wait = 0,\n maxWait = Number.POSITIVE_INFINITY,\n before = false,\n after = true\n } = options;\n if (!before && !after) {\n throw new Error(\"Both `before` and `after` are false, function wouldn't be called.\");\n }\n let timeout;\n let maxTimeout;\n let result;\n const debouncedFunction = function(...arguments_) {\n const context = this;\n const later = () => {\n timeout = void 0;\n if (maxTimeout) {\n clearTimeout(maxTimeout);\n maxTimeout = void 0;\n }\n if (after) {\n result = inputFunction.apply(context, arguments_);\n }\n };\n const maxLater = () => {\n maxTimeout = void 0;\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n if (after) {\n result = inputFunction.apply(context, arguments_);\n }\n };\n const shouldCallNow = before && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {\n maxTimeout = setTimeout(maxLater, maxWait);\n }\n if (shouldCallNow) {\n result = inputFunction.apply(context, arguments_);\n }\n return result;\n };\n mimicFunction(debouncedFunction, inputFunction);\n debouncedFunction.cancel = () => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n if (maxTimeout) {\n clearTimeout(maxTimeout);\n maxTimeout = void 0;\n }\n };\n return debouncedFunction;\n};\nvar SOUP = \"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nvar SOUP_LEN = 87;\nvar ID_LEN = 20;\nvar reusedIdCarrier = [];\nvar genUID = () => {\n for (let i = 0; i < ID_LEN; i++) {\n reusedIdCarrier[i] = SOUP.charAt(Math.random() * SOUP_LEN);\n }\n return reusedIdCarrier.join(\"\");\n};\nfunction invoke(fn) {\n try {\n return fn();\n } catch (e) {\n console.error(e);\n }\n}\nvar SideEffectManager = class {\n constructor() {\n this.push = this.addDisposer;\n this.disposers = /* @__PURE__ */ new Map();\n }\n addDisposer(disposer, disposerID = this.genUID()) {\n this.flush(disposerID);\n this.disposers.set(\n disposerID,\n Array.isArray(disposer) ? joinDisposers(disposer) : disposer\n );\n return disposerID;\n }\n add(executor, disposerID = this.genUID()) {\n const disposers = executor();\n return disposers ? this.addDisposer(disposers, disposerID) : disposerID;\n }\n addEventListener(el, type, listener, options, disposerID = this.genUID()) {\n el.addEventListener(type, listener, options);\n this.addDisposer(\n () => el.removeEventListener(type, listener, options),\n disposerID\n );\n return disposerID;\n }\n setTimeout(handler, timeout, disposerID = this.genUID()) {\n const ticket = window.setTimeout(() => {\n this.remove(disposerID);\n handler();\n }, timeout);\n return this.addDisposer(() => window.clearTimeout(ticket), disposerID);\n }\n setInterval(handler, timeout, disposerID = this.genUID()) {\n const ticket = window.setInterval(handler, timeout);\n return this.addDisposer(() => window.clearInterval(ticket), disposerID);\n }\n remove(disposerID) {\n const disposer = this.disposers.get(disposerID);\n this.disposers.delete(disposerID);\n return disposer;\n }\n flush(disposerID) {\n const disposer = this.remove(disposerID);\n if (disposer) {\n disposer();\n }\n }\n flushAll() {\n this.disposers.forEach(invoke);\n this.disposers.clear();\n }\n genUID() {\n let uid;\n do {\n uid = genUID();\n } while (this.disposers.has(uid));\n return uid;\n }\n};\nfunction joinDisposers(disposers) {\n return () => disposers.forEach(invoke);\n}\nvar resizeObservers = [];\nvar hasActiveObservations = function() {\n return resizeObservers.some(function(ro) {\n return ro.activeTargets.length > 0;\n });\n};\nvar hasSkippedObservations = function() {\n return resizeObservers.some(function(ro) {\n return ro.skippedTargets.length > 0;\n });\n};\nvar msg = \"ResizeObserver loop completed with undelivered notifications.\";\nvar deliverResizeLoopError = function() {\n var event;\n if (typeof ErrorEvent === \"function\") {\n event = new ErrorEvent(\"error\", {\n message: msg\n });\n } else {\n event = document.createEvent(\"Event\");\n event.initEvent(\"error\", false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nvar ResizeObserverBoxOptions;\n(function(ResizeObserverBoxOptions2) {\n ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nvar freeze = function(obj) {\n return Object.freeze(obj);\n};\nvar ResizeObserverSize = function() {\n function ResizeObserverSize2(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize2;\n}();\nvar DOMRectReadOnly = function() {\n function DOMRectReadOnly2(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly2.prototype.toJSON = function() {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x, y, top, right, bottom, left, width, height };\n };\n DOMRectReadOnly2.fromRect = function(rectangle) {\n return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly2;\n}();\nvar isSVG = function(target) {\n return target instanceof SVGElement && \"getBBox\" in target;\n};\nvar isHidden = function(target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function(obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function(target) {\n switch (target.tagName) {\n case \"INPUT\":\n if (target.type !== \"image\") {\n break;\n }\n case \"VIDEO\":\n case \"AUDIO\":\n case \"EMBED\":\n case \"OBJECT\":\n case \"CANVAS\":\n case \"IFRAME\":\n case \"IMG\":\n return true;\n }\n return false;\n};\nvar global = typeof window !== \"undefined\" ? window : {};\nvar cache = /* @__PURE__ */ new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function(pixel) {\n return parseFloat(pixel || \"0\");\n};\nvar size = function(inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) {\n inlineSize = 0;\n }\n if (blockSize === void 0) {\n blockSize = 0;\n }\n if (switchSizes === void 0) {\n switchSizes = false;\n }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function(target, forceRecalculation) {\n if (forceRecalculation === void 0) {\n forceRecalculation = false;\n }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === \"border-box\";\n var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function(target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nvar ResizeObserverEntry = function() {\n function ResizeObserverEntry2(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry2;\n}();\nvar calculateDepthForNode = function(node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nvar broadcastActiveObservations = function() {\n var shallowestDepth = Infinity;\n var callbacks2 = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks2.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nvar gatherActiveObservationsAtDepth = function(depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n } else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nvar process = function() {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nvar trigger;\nvar callbacks = [];\nvar notify = function() {\n return callbacks.splice(0).forEach(function(cb) {\n return cb();\n });\n};\nvar queueMicroTask = function(callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode(\"\");\n var config = { characterData: true };\n new MutationObserver(function() {\n return notify();\n }).observe(el_1, config);\n trigger = function() {\n el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++);\n };\n }\n callbacks.push(callback);\n trigger();\n};\nvar queueResizeObserver = function(cb) {\n queueMicroTask(function ResizeObserver2() {\n requestAnimationFrame(cb);\n });\n};\nvar watching = 0;\nvar isWatching = function() {\n return !!watching;\n};\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n \"resize\",\n \"load\",\n \"transitionend\",\n \"animationend\",\n \"animationstart\",\n \"animationiteration\",\n \"keyup\",\n \"keydown\",\n \"mouseup\",\n \"mousedown\",\n \"mouseover\",\n \"mouseout\",\n \"blur\",\n \"focus\"\n];\nvar time = function(timeout) {\n if (timeout === void 0) {\n timeout = 0;\n }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = function() {\n function Scheduler2() {\n var _this = this;\n this.stopped = true;\n this.listener = function() {\n return _this.schedule();\n };\n }\n Scheduler2.prototype.run = function(timeout) {\n var _this = this;\n if (timeout === void 0) {\n timeout = CATCH_PERIOD;\n }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function() {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n } finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1e3);\n } else if (timeout > 0) {\n _this.run(timeout);\n } else {\n _this.start();\n }\n }\n });\n };\n Scheduler2.prototype.schedule = function() {\n this.stop();\n this.run();\n };\n Scheduler2.prototype.observe = function() {\n var _this = this;\n var cb = function() {\n return _this.observer && _this.observer.observe(document.body, observerConfig);\n };\n document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n };\n Scheduler2.prototype.start = function() {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function(name) {\n return global.addEventListener(name, _this.listener, true);\n });\n }\n };\n Scheduler2.prototype.stop = function() {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function(name) {\n return global.removeEventListener(name, _this.listener, true);\n });\n this.stopped = true;\n }\n };\n return Scheduler2;\n}();\nvar scheduler = new Scheduler();\nvar updateCount = function(n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nvar skipNotifyOnElement = function(target) {\n return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n};\nvar ResizeObservation = function() {\n function ResizeObservation2(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation2.prototype.isActive = function() {\n var size2 = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size2;\n }\n if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation2;\n}();\nvar ResizeObserverDetail = function() {\n function ResizeObserverDetail2(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail2;\n}();\nvar observerMap = /* @__PURE__ */ new WeakMap();\nvar getObservationIndex = function(observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = function() {\n function ResizeObserverController2() {\n }\n ResizeObserverController2.connect = function(resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController2.observe = function(resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController2.unobserve = function(resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController2.disconnect = function(resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function(ot) {\n return _this.unobserve(resizeObserver, ot.target);\n });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController2;\n}();\nvar ResizeObserver$1 = function() {\n function ResizeObserver2(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver2.prototype.observe = function(target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver2.prototype.unobserve = function(target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver2.prototype.disconnect = function() {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver2.toString = function() {\n return \"function ResizeObserver () { [polyfill code] }\";\n };\n return ResizeObserver2;\n}();\nfunction sidebarSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-sidebar`);\n $svg.setAttribute(\"viewBox\", \"0 0 64 64\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nfunction arrowLeftSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-left`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nfunction arrowRightSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-right`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nfunction playSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-play`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nfunction pauseSVG(namespace) {\n const NS = \"http://www.w3.org/2000/svg\";\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-pause`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z\"\n );\n $svg.appendChild($path);\n return $svg;\n}\nconst runningOnBrowser = typeof window !== \"undefined\";\nconst isBot = runningOnBrowser && !(\"onscroll\" in window) || typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false\n};\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n createInstance(classObj, options);\n } else {\n for (let i = 0, optionsItem; optionsItem = options[i]; i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\nconst setData = (element, attribute, value) => {\n const attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n if (!callback || typeof callback !== \"function\") {\n return;\n }\n if (arg3 !== void 0) {\n callback(arg1, arg2, arg3);\n return;\n }\n if (arg2 !== void 0) {\n callback(arg1, arg2);\n return;\n }\n callback(arg1);\n};\nconst addClass = (element, className) => {\n if (className === \"\") {\n return;\n }\n if (supportsClassList) {\n element.classList.add(className);\n return;\n }\n element.className += (element.className ? \" \" : \"\") + className;\n};\nconst removeClass = (element, className) => {\n if (className === \"\") {\n return;\n }\n if (supportsClassList) {\n element.classList.remove(className);\n return;\n }\n element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n};\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\nconst getTempImage = (element) => element.llTempImage;\nconst unobserve = (element, instance) => {\n if (!instance)\n return;\n const observer = instance._observer;\n if (!observer)\n return;\n observer.unobserve(element);\n};\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered)\n unobserve(element, instance);\n};\nconst updateLoadingCount = (instance, delta) => {\n if (!instance)\n return;\n instance.loadingCount += delta;\n};\nconst decreaseToLoadCount = (instance) => {\n if (!instance)\n return;\n instance.toLoadCount -= 1;\n};\nconst setToLoadCount = (instance, value) => {\n if (!instance)\n return;\n instance.toLoadCount = value;\n};\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; childTag = parentTag.children[i]; i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n if (!instance)\n return;\n if (settings.unobserve_completed) {\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n if (!instance)\n return;\n updateLoadingCount(instance, 1);\n safeCallback(settings.callback_loading, element, instance);\n};\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue)\n return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\nconst setImgsetBackground = (element, settings, instance) => {\n const bgImgSetDataValue = getData(element, settings.data_bg_set);\n if (!bgImgSetDataValue) {\n return;\n }\n const imgSetValues = bgImgSetDataValue.split(\"|\");\n let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n if (element.style.backgroundImage === \"\") {\n bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n }\n manageApplied(element, settings, instance);\n};\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\nconst addEventListeners = (element, loadHandler2, errorHandler2) => {\n if (!hasEventListeners(element))\n element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler2);\n addEventListener(element, \"error\", errorHandler2);\n};\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative)\n checkFinish(settings, instance);\n};\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error)\n restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative)\n checkFinish(settings, instance);\n};\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n};\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit)\n return;\n if (!hasStatusLoading(element))\n return;\n if (element.tagName !== \"IMG\")\n return;\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element);\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad)\n return;\n load(element, settings, instance);\n};\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element))\n return;\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\nconst shouldUseNative = (settings) => settings.use_native && \"loading\" in HTMLImageElement.prototype;\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach(\n (entry) => isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance)\n );\n};\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\nconst queryElements = (settings) => settings.container.querySelectorAll(settings.elements_selector);\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\nconst getElementsToLoad = (elements, settings) => excludeManagedElements(elements || queryElements(settings));\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach((element) => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\nconst resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\nconst LazyLoad = function(customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\nLazyLoad.prototype = {\n update: function(givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n updateObserver(this._observer, elementsToLoad);\n },\n destroy: function() {\n if (this._observer) {\n this._observer.disconnect();\n }\n resetOnlineCheck(this);\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n loadAll: function(elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\nclass DocsViewer {\n constructor({ readonly, box, pages, onNewPageIndex, onPlay }) {\n this.pageIndex = 0;\n this.namespace = \"netless-app-docs-viewer\";\n this.isShowPreview = false;\n this.isSmallBox = false;\n this.sideEffect = new SideEffectManager();\n if (pages.length <= 0) {\n throw new Error(\"[DocsViewer] Empty pages.\");\n }\n this.readonly = readonly;\n this.box = box;\n this.pages = pages;\n this.onNewPageIndex = onNewPageIndex;\n this.onPlay = onPlay;\n this.onPageIndexChanged = () => void 0;\n this.render();\n }\n mount() {\n this.box.mountContent(this.$content);\n this.box.mountFooter(this.$footer);\n this.sideEffect.add(() => {\n const previewLazyLoad = new LazyLoad({\n container: this.$preview,\n elements_selector: `.${this.wrapClassName(\"preview-page>img\")}`\n });\n return () => previewLazyLoad.destroy();\n }, \"preview-lazyload\");\n }\n unmount() {\n this.$content.remove();\n this.$footer.remove();\n }\n setReadonly(readonly) {\n if (this.readonly !== readonly) {\n this.readonly = readonly;\n this.$content.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n this.$footer.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n this.$pageNumberInput.disabled = readonly;\n }\n }\n destroy() {\n this.sideEffect.flushAll();\n this.unmount();\n }\n setPageIndex(pageIndex) {\n if (!Number.isNaN(pageIndex)) {\n this.pageIndex = pageIndex;\n this.$pageNumberInput.value = String(pageIndex + 1);\n this.onPageIndexChanged(pageIndex);\n }\n }\n setSmallBox(isSmallBox) {\n if (this.isSmallBox !== isSmallBox) {\n this.isSmallBox = isSmallBox;\n this.$footer.classList.toggle(this.wrapClassName(\"float-footer\"), isSmallBox);\n }\n }\n render() {\n this.renderContent();\n this.renderFooter();\n return this.$content;\n }\n renderContent() {\n if (!this.$content) {\n const $content = document.createElement(\"div\");\n $content.className = this.wrapClassName(\"content\");\n this.$content = $content;\n if (this.readonly) {\n $content.classList.add(this.wrapClassName(\"readonly\"));\n }\n $content.appendChild(this.renderPreviewMask());\n $content.appendChild(this.renderPreview());\n }\n return this.$content;\n }\n renderPreview() {\n if (!this.$preview) {\n const $preview = document.createElement(\"div\");\n $preview.className = this.wrapClassName(\"preview\") + \" tele-fancy-scrollbar\";\n this.$preview = $preview;\n const pageClassName = this.wrapClassName(\"preview-page\");\n const pageNameClassName = this.wrapClassName(\"preview-page-name\");\n this.pages.forEach((page, i) => {\n var _a;\n const previewSRC = (_a = page.thumbnail) != null ? _a : page.src.startsWith(\"ppt\") ? void 0 : page.src;\n if (!previewSRC) {\n return;\n }\n const pageIndex = String(i);\n const $page = document.createElement(\"a\");\n $page.className = pageClassName + \" \" + this.wrapClassName(`preview-page-${i}`);\n $page.setAttribute(\"href\", \"#\");\n $page.dataset.pageIndex = pageIndex;\n const $name = document.createElement(\"span\");\n $name.className = pageNameClassName;\n $name.textContent = String(i + 1);\n $name.dataset.pageIndex = pageIndex;\n const $img = document.createElement(\"img\");\n $img.width = page.width;\n $img.height = page.height;\n $img.dataset.src = previewSRC;\n $img.dataset.pageIndex = pageIndex;\n $page.appendChild($img);\n $page.appendChild($name);\n $preview.appendChild($page);\n });\n this.sideEffect.addEventListener($preview, \"click\", (ev) => {\n var _a;\n if (this.readonly) {\n return;\n }\n const pageIndex = (_a = ev.target.dataset) == null ? void 0 : _a.pageIndex;\n if (pageIndex) {\n ev.preventDefault();\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n this.onNewPageIndex(Number(pageIndex));\n this.togglePreview(false);\n }\n });\n }\n return this.$preview;\n }\n renderPreviewMask() {\n if (!this.$previewMask) {\n this.$previewMask = document.createElement(\"div\");\n this.$previewMask.className = this.wrapClassName(\"preview-mask\");\n this.sideEffect.addEventListener(this.$previewMask, \"click\", (ev) => {\n if (this.readonly) {\n return;\n }\n if (ev.target === this.$previewMask) {\n this.togglePreview(false);\n }\n });\n }\n return this.$previewMask;\n }\n renderFooter() {\n if (!this.$footer) {\n const $footer = document.createElement(\"div\");\n $footer.className = this.wrapClassName(\"footer\");\n this.$footer = $footer;\n if (this.readonly) {\n $footer.classList.add(this.wrapClassName(\"readonly\"));\n }\n if (this.isSmallBox) {\n $footer.classList.add(this.wrapClassName(\"float-footer\"));\n }\n if (this.pages.some((page) => page.thumbnail || !page.src.startsWith(\"ppt\"))) {\n const $btnSidebar = this.renderFooterBtn(\"btn-sidebar\", sidebarSVG(this.namespace));\n this.sideEffect.addEventListener($btnSidebar, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.togglePreview();\n });\n this.$footer.appendChild($btnSidebar);\n }\n const $pageJumps = document.createElement(\"div\");\n $pageJumps.className = this.wrapClassName(\"page-jumps\");\n const $btnPageBack = this.renderFooterBtn(\"btn-page-back\", arrowLeftSVG(this.namespace));\n this.sideEffect.addEventListener($btnPageBack, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.onNewPageIndex(this.pageIndex - 1);\n });\n $pageJumps.appendChild($btnPageBack);\n if (this.onPlay) {\n const $btnPlay = this.renderFooterBtn(\n \"btn-page-play\",\n playSVG(this.namespace),\n pauseSVG(this.namespace)\n );\n const returnPlay = () => {\n this.sideEffect.setTimeout(\n () => {\n $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), false);\n },\n 500,\n \"returnPlay\"\n );\n };\n this.sideEffect.addEventListener($btnPlay, \"click\", () => {\n if (this.readonly) {\n return;\n }\n $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), true);\n if (this.onPlay) {\n this.onPlay();\n }\n returnPlay();\n });\n $pageJumps.appendChild($btnPlay);\n }\n const $btnPageNext = this.renderFooterBtn(\"btn-page-next\", arrowRightSVG(this.namespace));\n this.sideEffect.addEventListener($btnPageNext, \"click\", () => {\n if (this.readonly) {\n return;\n }\n this.onNewPageIndex(this.pageIndex + 1);\n });\n $pageJumps.appendChild($btnPageNext);\n const $pageNumber = document.createElement(\"div\");\n $pageNumber.className = this.wrapClassName(\"page-number\");\n const $pageNumberInput = document.createElement(\"input\");\n $pageNumberInput.className = this.wrapClassName(\"page-number-input\");\n $pageNumberInput.value = String(this.pageIndex + 1);\n if (this.readonly) {\n $pageNumberInput.disabled = true;\n }\n this.$pageNumberInput = $pageNumberInput;\n this.sideEffect.addEventListener($pageNumberInput, \"focus\", () => {\n $pageNumberInput.select();\n });\n this.sideEffect.addEventListener($pageNumberInput, \"change\", () => {\n if (this.readonly) {\n return;\n }\n if ($pageNumberInput.value) {\n this.onNewPageIndex(Number($pageNumberInput.value) - 1);\n }\n });\n const $totalPage = document.createElement(\"span\");\n $totalPage.textContent = \" / \" + this.pages.length;\n $pageNumber.appendChild($pageNumberInput);\n $pageNumber.appendChild($totalPage);\n this.$footer.appendChild($pageJumps);\n this.$footer.appendChild($pageNumber);\n }\n return this.$footer;\n }\n renderFooterBtn(className, $icon, $iconActive) {\n const $btn = document.createElement(\"button\");\n $btn.className = this.wrapClassName(\"footer-btn\") + \" \" + this.wrapClassName(className);\n $btn.appendChild($icon);\n if ($iconActive) {\n $btn.appendChild($iconActive);\n }\n return $btn;\n }\n togglePreview(isShowPreview) {\n this.isShowPreview = isShowPreview != null ? isShowPreview : !this.isShowPreview;\n this.$content.classList.toggle(this.wrapClassName(\"preview-active\"), this.isShowPreview);\n if (this.isShowPreview) {\n const $previewPage = this.$preview.querySelector(\n \".\" + this.wrapClassName(`preview-page-${this.pageIndex}`)\n );\n if ($previewPage) {\n this.$preview.scrollTo({\n top: $previewPage.offsetTop - 16\n });\n }\n }\n }\n wrapClassName(className) {\n return `${this.namespace}-${className}`;\n }\n}\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction flattenEvent(ev) {\n return ev.touches ? ev.touches[0] : ev;\n}\nfunction preventEvent(ev) {\n ev.stopPropagation();\n if (ev.cancelable) {\n ev.preventDefault();\n }\n}\nfunction isEditable(el) {\n if (!el)\n return false;\n const tagName = el.tagName;\n return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || tagName === \"SELECT\";\n}\nclass Stepper {\n constructor(config) {\n var _a, _b, _c;\n this.velocity = 0;\n this.paused = true;\n this._animationFrameID = null;\n this._loopTimestamp = 0;\n this.looper = (timestamp) => {\n if (this.paused) {\n return;\n }\n let frames = Math.floor((timestamp - this._loopTimestamp) / 1e3 * 60) + 1;\n this._loopTimestamp = timestamp;\n while (frames-- > 0) {\n this.stepper();\n }\n this.onStep(this.current, this);\n if (!this.paused && this.current !== this.target) {\n window.requestAnimationFrame(this.looper);\n }\n };\n this.current = (_a = config.start) != null ? _a : 0;\n this.target = this.current;\n this.stiffness = (_b = config.stiffness) != null ? _b : 170;\n this.damping = (_c = config.damping) != null ? _c : 26;\n this.onStep = config.onStep;\n }\n stepTo(target, start) {\n if (this.paused && start != null) {\n this.current = start;\n }\n this.paused = false;\n this.target = target;\n this.onStep(this.current, this);\n this._loopTimestamp = Date.now();\n window.requestAnimationFrame(this.looper);\n }\n pause() {\n this.paused = true;\n }\n destroy() {\n this.pause();\n }\n stepper() {\n const fSpring = -this.stiffness * (this.current - this.target);\n const fDamper = -this.damping * this.velocity;\n const newVelocity = this.velocity + (fSpring + fDamper) / 60;\n const newCurrent = this.current + newVelocity / 60;\n if (Math.abs(newVelocity - 0) < 0.01 && Math.abs(newCurrent - this.target) < 0.01) {\n this.current = this.target;\n this.velocity = 0;\n } else {\n this.current = newCurrent;\n this.velocity = newVelocity;\n }\n }\n}\nclass PageEl {\n constructor(index, page, scale, pagesIntrinsicWidth) {\n this.scale = 1;\n this.lastVisit = Date.now();\n this.pageOffsetY = 0;\n this.pageOffsetX = 0;\n this.visible = true;\n this.index = index;\n this.page = page;\n this.scale = scale;\n this.pageOffsetX = (pagesIntrinsicWidth - page.width) / 2;\n const $page = document.createElement(\"div\");\n $page.className = \"page-renderer-page\";\n $page.dataset.index = `${index}`;\n $page.style.width = `${page.width * scale}px`;\n $page.style.height = `${page.height * scale}px`;\n if (page.thumbnail) {\n $page.style.backgroundImage = `url(\"${page.thumbnail}\")`;\n }\n const $img = document.createElement(\"img\");\n $img.className = \"page-renderer-page-img\";\n $img.width = page.width;\n $img.height = page.height;\n $img.src = page.src;\n $page.appendChild($img);\n this.$page = $page;\n }\n translateY(pageOffsetY) {\n if (Math.abs(pageOffsetY - this.pageOffsetY) >= 1e-3) {\n this.pageOffsetY = pageOffsetY;\n this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n }\n }\n setScale(scale) {\n if (Math.abs(scale - this.scale) >= 1e-3) {\n this.scale = scale;\n this.$page.style.width = `${this.page.width * this.scale}px`;\n this.$page.style.height = `${this.page.height * this.scale}px`;\n this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n }\n }\n setVisible(visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n this.$page.style.opacity = visible ? \"1\" : \"0\";\n }\n }\n}\nconst schedule = window.requestIdleCallback || ((handler) => window.setTimeout(handler, 5e3));\nconst cancelSchedule = window.cancelIdleCallback || window.clearTimeout;\nclass PageElManager {\n constructor(pages, pagesIntrinsicWidth, scale) {\n this.pages = pages;\n this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n this.scale = scale;\n this.els = /* @__PURE__ */ new Map();\n this.maxElCount = 200;\n this.gcTimer = null;\n this.gc = () => {\n this.gcTimer = null;\n if (this.els.size > this.maxElCount) {\n const sortedEls = [...this.els.values()].sort((x, y) => y.lastVisit - x.lastVisit);\n for (let i = Math.floor(this.maxElCount / 4); i < sortedEls.length; i++) {\n this.els.delete(sortedEls[i].index);\n }\n }\n };\n }\n getEl(index) {\n let el = this.els.get(index);\n if (!el) {\n el = new PageEl(index, this.pages[index], this.scale, this.pagesIntrinsicWidth);\n this.els.set(index, el);\n }\n el.lastVisit = Date.now();\n if (this.els.size > this.maxElCount && this.gcTimer === null) {\n this.gcTimer = schedule(this.gc);\n }\n return el;\n }\n setScale(scale) {\n if (scale !== this.scale) {\n this.scale = scale;\n this.els.forEach((pageEl) => pageEl.setScale(scale));\n }\n }\n destroy() {\n this.els.clear();\n if (this.gcTimer !== null) {\n cancelSchedule(this.gcTimer);\n this.gcTimer = null;\n }\n }\n}\nclass PageRenderer {\n constructor(config) {\n this._hwaTimeout = NaN;\n this._turnOffHWA = () => {\n window.clearTimeout(this._hwaTimeout);\n this._hwaTimeout = NaN;\n this.$pages.classList.toggle(\"is-hwa\", false);\n };\n this.pagesScrollTop = config.pagesScrollTop || 0;\n this.containerWidth = config.containerWidth || 1;\n this.containerHeight = config.containerHeight || 1;\n this.pages = config.pages.map((page) => {\n if (page.thumbnail) {\n return page;\n }\n try {\n const url = new URL(page.src);\n url.searchParams.set(\"x-oss-process\", \"image/resize,l_50\");\n return { ...page, thumbnail: url.toString() };\n } catch (e) {\n console.error(e);\n return page;\n }\n });\n const pagesIntrinsicYs = Array(this.pages.length);\n let pagesMinHeight = Infinity;\n let pagesIntrinsicWidth = 0;\n this.pagesIntrinsicHeight = this.pages.reduce((pageY, page, i) => {\n pagesIntrinsicYs[i] = pageY;\n if (page.width > pagesIntrinsicWidth) {\n pagesIntrinsicWidth = page.width;\n }\n if (page.height <= pagesMinHeight) {\n pagesMinHeight = page.height;\n }\n return pageY + page.height;\n }, 0);\n this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n this.pagesMinHeight = pagesMinHeight;\n this.pagesIntrinsicYs = pagesIntrinsicYs;\n this.scale = this._calcScale();\n this.threshold = this._calcThreshold();\n this.onPageIndexChanged = config.onPageIndexChanged;\n this.pageScrollIndex = 0;\n if (this.pagesScrollTop !== 0) {\n this.pageScrollIndex = this.findScrollPageIndex();\n if (this.onPageIndexChanged && this.pageScrollIndex > 0) {\n this.onPageIndexChanged(this.pageScrollIndex);\n }\n }\n this.pageElManager = new PageElManager(this.pages, pagesIntrinsicWidth, this.scale);\n this.$pages = this.renderPages();\n }\n setContainerSize(width, height) {\n if (width > 0 && height > 0) {\n if (width !== this.containerWidth || height !== this.containerHeight) {\n this.containerWidth = width;\n this.containerHeight = height;\n this.$pages.style.width = `${this.containerWidth}px`;\n this.$pages.style.height = `${this.containerHeight}px`;\n this.scale = this._calcScale();\n this.threshold = this._calcThreshold();\n this.pageElManager.setScale(this.scale);\n if (this.$pages.parentElement) {\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n }\n }\n }\n renderPages() {\n const $pages = document.createElement(\"div\");\n $pages.className = \"page-renderer-pages-container\";\n $pages.style.width = `${this.containerWidth}px`;\n $pages.style.height = `${this.containerHeight}px`;\n return $pages;\n }\n pagesScrollTo(pagesScrollTop, force) {\n pagesScrollTop = clamp(\n pagesScrollTop,\n 0,\n this.pagesIntrinsicHeight - this.containerHeight / this.scale\n );\n if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n this._turnOnHWA();\n this.pagesScrollTop = pagesScrollTop;\n const pageScrollIndex = this.findScrollPageIndex();\n const startIndex = Math.max(pageScrollIndex - this.threshold, 0);\n const endIndex = Math.min(pageScrollIndex + this.threshold, this.pages.length - 1);\n for (let i = 0; i < this.$pages.children.length; i++) {\n const $page = this.$pages.children[i];\n const index = Number($page.dataset.index);\n if (!(index >= startIndex && index <= endIndex)) {\n $page.remove();\n i--;\n }\n }\n for (let i = startIndex; i <= endIndex; i++) {\n const pageEl = this.pageElManager.getEl(i);\n if (pageEl.$page.parentElement !== this.$pages) {\n this.$pages.appendChild(pageEl.$page);\n }\n pageEl.translateY(this.pagesIntrinsicYs[i] - this.pagesScrollTop);\n }\n if (pageScrollIndex !== this.pageScrollIndex) {\n this.pageScrollIndex = pageScrollIndex;\n if (this.onPageIndexChanged) {\n this.onPageIndexChanged(pageScrollIndex);\n }\n }\n }\n }\n findScrollPageIndex() {\n for (let i = 0; i < this.pagesIntrinsicYs.length; i++) {\n if (this.pagesIntrinsicYs[i] + this.pages[i].height - this.pagesScrollTop >= 1e-3) {\n return i;\n }\n }\n return this.pagesIntrinsicYs.length - 1;\n }\n mount($parent) {\n $parent.appendChild(this.$pages);\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n unmount() {\n this.$pages.remove();\n }\n destroy() {\n this.unmount();\n this.onPageIndexChanged = void 0;\n this.pageElManager.destroy();\n if (this._hwaTimeout) {\n window.clearTimeout(this._hwaTimeout);\n this._hwaTimeout = NaN;\n }\n }\n _calcScale() {\n return this.containerWidth / this.pagesIntrinsicWidth || 1;\n }\n _calcThreshold() {\n return clamp(\n Math.ceil(this.containerHeight / this.scale / this.pagesMinHeight / 2),\n 1,\n this.pages.length\n );\n }\n _turnOnHWA() {\n if (this._hwaTimeout) {\n window.clearTimeout(this._hwaTimeout);\n } else {\n this.$pages.classList.toggle(\"is-hwa\", true);\n }\n this._hwaTimeout = window.setTimeout(this._turnOffHWA, 1e3);\n }\n}\nconst SCROLLBAR_DEFAULT_MIN_HEIGHT = 30;\nclass ScrollBar {\n constructor(config) {\n this.sideEffect = new SideEffectManager();\n this.pagesScrollTop = config.pagesScrollTop || 0;\n this.containerWidth = config.containerWidth || 1;\n this.containerHeight = config.containerHeight || 1;\n this.pagesWidth = config.pagesWidth || 1;\n this.pagesHeight = config.pagesHeight || 1;\n this.scale = this._calcScale();\n this.scrollbarMinHeight = config.scrollbarMinHeight || SCROLLBAR_DEFAULT_MIN_HEIGHT;\n this.scrollbarHeight = this._calcScrollbarHeight();\n this.readonly = config.readonly;\n this.wrapClassName = config.wrapClassName;\n this.onDragScroll = config.onDragScroll;\n this.$scrollbar = this.renderScrollbar();\n }\n mount($parent) {\n $parent.appendChild(this.$scrollbar);\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n unmount() {\n this.$scrollbar.remove();\n }\n setReadonly(readonly) {\n this.readonly = readonly;\n }\n setContainerSize(width, height) {\n if (width > 0 && height > 0) {\n if (width !== this.containerWidth || height !== this.containerHeight) {\n this.containerWidth = width;\n this.containerHeight = height;\n this.scale = this._calcScale();\n this._updateScrollbarHeight();\n if (this.$scrollbar.parentElement) {\n this.pagesScrollTo(this.pagesScrollTop, true);\n }\n }\n }\n }\n pagesScrollTo(pagesScrollTop, force) {\n pagesScrollTop = clamp(pagesScrollTop, 0, this.pagesHeight - this.containerHeight / this.scale);\n if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n this.pagesScrollTop = pagesScrollTop;\n const elScrollTop = this.pagesScrollTop * this.scale;\n const elPagesHeight = this.pagesHeight * this.scale;\n const translateY = elScrollTop / (elPagesHeight - this.containerHeight) * (this.containerHeight - this.scrollbarHeight);\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n });\n } else {\n this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n }\n }\n }\n destroy() {\n this.unmount();\n this.onDragScroll = void 0;\n this.sideEffect.flushAll();\n }\n renderScrollbar() {\n const $scrollbar = document.createElement(\"button\");\n $scrollbar.className = this.wrapClassName(\"scrollbar\");\n $scrollbar.style.minHeight = `${this.scrollbarMinHeight}px`;\n $scrollbar.style.height = `${this.scrollbarHeight}px`;\n const trackStart = (ev) => {\n if (this.readonly) {\n return;\n }\n if (ev.button != null && ev.button !== 0) {\n return;\n }\n preventEvent(ev);\n const draggingClassName = this.wrapClassName(\"scrollbar-dragging\");\n $scrollbar.classList.toggle(draggingClassName, true);\n const startTop = this.pagesScrollTop;\n const { clientY: startY } = flattenEvent(ev);\n const tracking = (ev2) => {\n if (this.readonly) {\n return;\n }\n const { clientY } = flattenEvent(ev2);\n const offsetY = (clientY - startY) / this.scale;\n if (Math.abs(offsetY) > 0 && this.onDragScroll) {\n this.onDragScroll(\n startTop + offsetY * (this.pagesHeight * this.scale / this.containerHeight)\n );\n }\n };\n const trackEnd = () => {\n $scrollbar.classList.toggle(draggingClassName, false);\n window.removeEventListener(\"mousemove\", tracking, true);\n window.removeEventListener(\"touchmove\", tracking, true);\n window.removeEventListener(\"mouseup\", trackEnd, true);\n window.removeEventListener(\"touchend\", trackEnd, true);\n window.removeEventListener(\"touchcancel\", trackEnd, true);\n };\n window.addEventListener(\"mousemove\", tracking, true);\n window.addEventListener(\"touchmove\", tracking, true);\n window.addEventListener(\"mouseup\", trackEnd, true);\n window.addEventListener(\"touchend\", trackEnd, true);\n window.addEventListener(\"touchcancel\", trackEnd, true);\n };\n this.sideEffect.addEventListener($scrollbar, \"mousedown\", trackStart);\n this.sideEffect.addEventListener($scrollbar, \"touchstart\", trackStart);\n return $scrollbar;\n }\n _calcScale() {\n return this.containerWidth / this.pagesWidth || 1;\n }\n _calcScrollbarHeight() {\n return clamp(\n this.containerHeight / (this.pagesHeight * this.scale) * this.containerHeight,\n this.scrollbarMinHeight,\n this.containerHeight\n );\n }\n _updateScrollbarHeight() {\n const newHeight = this._calcScrollbarHeight();\n if (Math.abs(newHeight - this.scrollbarHeight) > 1e-3) {\n this.scrollbarHeight = newHeight;\n this.$scrollbar.style.height = `${newHeight}px`;\n }\n }\n}\nconst ResizeObserver = window.ResizeObserver || ResizeObserver$1;\nconst RATIO_BASE_CONTAINER_HEIGHT = 640;\nclass StaticDocsViewer {\n constructor({\n context,\n whiteboardView,\n readonly,\n box,\n pages,\n pageScrollTop = 0,\n mountWhiteboard,\n onUserScroll,\n baseScenePath,\n appId\n }) {\n this.sideEffect = new SideEffectManager();\n this.userScrolling = false;\n this.docsViewReadonly = false;\n this.onNewPageIndex = (index) => {\n this.scrollToPage(index);\n };\n this.toPdf = async () => {\n const whiteSnapshotCanvas = document.createElement(\"canvas\");\n const whiteCtx = whiteSnapshotCanvas.getContext(\"2d\");\n if (!whiteCtx || !this.baseScenePath) {\n this.reportProgress(100, null);\n return;\n }\n const scenePath = this.whiteboardView.focusScenePath || `${this.baseScenePath}/1`;\n const firstPage = this.pages[0];\n const { jsPDF } = await import(\"jspdf\");\n const pdf = new jsPDF({\n format: [firstPage.width, firstPage.height],\n orientation: firstPage.width > firstPage.height ? \"l\" : \"p\",\n compress: true\n });\n for (const [index, page] of this.pages.entries()) {\n const { width, height, src } = page;\n whiteSnapshotCanvas.width = width;\n whiteSnapshotCanvas.height = height;\n const orientation = width > height ? \"l\" : \"p\";\n if (index > 0) {\n pdf.addPage([width, height], orientation);\n }\n const pdfPageSrc = await this.getBase64FromUrl(src);\n const img = document.createElement(\"img\");\n img.src = pdfPageSrc;\n await new Promise((resolve) => img.onload = resolve);\n whiteCtx.drawImage(img, 0, 0);\n const pdfPageBase64 = whiteSnapshotCanvas.toDataURL(\"image/png\");\n whiteCtx.clearRect(0, 0, width, height);\n const camera = {\n centerX: width / 2,\n centerY: height / 2 + index * height,\n scale: 1\n };\n const windowManger = this.context.manager.windowManger;\n if (windowManger._appliancePlugin) {\n await windowManger._appliancePlugin.screenshotToCanvasAsync(\n whiteCtx,\n scenePath,\n width,\n height,\n camera\n );\n } else {\n this.whiteboardView.screenshotToCanvas(whiteCtx, scenePath, width, height, camera);\n }\n const snapshot = whiteSnapshotCanvas.toDataURL(\"image/png\");\n pdf.addImage(pdfPageBase64, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n pdf.addImage(snapshot, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n whiteCtx.clearRect(0, 0, width, height);\n const progress = Math.ceil((index + 1) / this.pages.length * 100);\n if (progress < 100) {\n this.reportProgress(Math.ceil((index + 1) / this.pages.length * 100), null);\n }\n }\n const dataUrl = pdf.output(\"arraybuffer\");\n this.reportProgress(100, { pdf: dataUrl, title: this.box.title });\n };\n this.context = context;\n this.whiteboardView = whiteboardView;\n this.readonly = readonly;\n this.box = box;\n this.pages = pages;\n this.baseScenePath = baseScenePath;\n this.appId = appId;\n this.mountWhiteboard = mountWhiteboard;\n this._onUserScroll = onUserScroll;\n const debouncedOnUserScroll = this.debounce(\n () => {\n this.userScrolling = false;\n if (this._onUserScroll) {\n this._onUserScroll(this.pageRenderer.pagesScrollTop);\n }\n },\n { wait: 80 },\n \"debounce-updateUserScroll\"\n );\n this.updateUserScroll = () => {\n this.userScrolling = true;\n debouncedOnUserScroll();\n };\n this.viewer = new DocsViewer({\n readonly,\n box,\n pages,\n onNewPageIndex: this.onNewPageIndex\n });\n const { width: containerWidth, height: containerHeight } = this.whiteboardView.size;\n this.pageRenderer = new PageRenderer({\n pagesScrollTop: pageScrollTop,\n pages: this.pages,\n containerWidth,\n containerHeight,\n onPageIndexChanged: this.viewer.setPageIndex.bind(this.viewer)\n });\n this.scrollbar = new ScrollBar({\n pagesScrollTop: this.pageRenderer.pagesScrollTop,\n containerWidth,\n containerHeight,\n pagesWidth: this.pageRenderer.pagesIntrinsicWidth,\n pagesHeight: this.pageRenderer.pagesIntrinsicHeight,\n readonly: this.readonly,\n wrapClassName: this.wrapClassName.bind(this),\n onDragScroll: (pageScrollTop2) => {\n this.pageScrollTo(pageScrollTop2);\n this.updateUserScroll();\n }\n });\n this.pageScrollStepper = new Stepper({\n start: this.pageRenderer.pagesScrollTop,\n onStep: (pageScrollTop2) => {\n this.pageScrollTo(pageScrollTop2);\n }\n });\n this.render();\n }\n setDocsViewReadonly(isReadonly) {\n this.docsViewReadonly = isReadonly;\n }\n mount() {\n this.viewer.mount();\n this.setupScrollListener();\n const debouncedRenderRatioHeight = this.debounce(this.renderRatioHeight.bind(this), {\n wait: 80\n });\n this.sideEffect.add(() => {\n const observer = new ResizeObserver(debouncedRenderRatioHeight);\n observer.observe(this.viewer.$content);\n return () => observer.disconnect();\n });\n this.sideEffect.setTimeout(() => {\n if (!this.userScrolling) {\n this.pageScrollTo(this.pageRenderer.pagesScrollTop);\n }\n }, 100);\n this.sideEffect.add(() => {\n const handleDownloadPdf = (evt) => {\n if (evt.data.type === \"@netless/_request_save_pdf_\" && evt.data.appId === this.appId) {\n this.toPdf().catch(() => this.reportProgress(100, null));\n }\n };\n window.addEventListener(\"message\", handleDownloadPdf);\n return () => {\n window.removeEventListener(\"message\", handleDownloadPdf);\n };\n });\n return this;\n }\n unmount() {\n this.viewer.unmount();\n return this;\n }\n setReadonly(readonly) {\n if (this.readonly !== readonly) {\n this.readonly = readonly;\n this.viewer.setReadonly(readonly);\n this.scrollbar.setReadonly(readonly);\n }\n }\n destroy() {\n this.sideEffect.flushAll();\n this.pageScrollStepper.destroy();\n this._onUserScroll = void 0;\n this.unmount();\n this.viewer.destroy();\n this.pageRenderer.destroy();\n this.scrollbar.destroy();\n }\n syncPageScrollTop(pageScrollTop) {\n if (!this.userScrolling && pageScrollTop >= 0 && Math.abs(this.pageRenderer.pagesScrollTop - pageScrollTop) > 0.01) {\n this.pageScrollStepper.stepTo(pageScrollTop, this.pageRenderer.pagesScrollTop);\n }\n }\n render() {\n this.pageRenderer.mount(this.viewer.$content);\n this.viewer.$content.appendChild(this.renderWhiteboardView());\n this.scrollbar.mount(this.viewer.$content);\n this.renderRatioHeight();\n }\n renderRatioHeight() {\n const boxHeight = this.box.absoluteHeight;\n const isSmallBox = boxHeight <= RATIO_BASE_CONTAINER_HEIGHT;\n this.viewer.setSmallBox(isSmallBox);\n if (isSmallBox) {\n const titleBarSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n const titleBarActualHeight = 26 / boxHeight;\n const footerSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n const footerActualHeight = 0;\n const emptySpace = Math.max(\n (titleBarSupposedHeight + footerSupposedHeight - (titleBarActualHeight + footerActualHeight)) / 2,\n 0\n );\n if (this.box.$titleBar) {\n const titleBarHeight = titleBarActualHeight + emptySpace;\n this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n }\n if (this.box.$footer) {\n const footerHeight = footerActualHeight + emptySpace;\n this.box.$footer.style.height = `${footerHeight * 100}%`;\n }\n } else {\n if (this.box.$titleBar) {\n const titleBarHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n }\n if (this.box.$footer) {\n const footerHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n this.box.$footer.style.height = `${footerHeight * 100}%`;\n }\n }\n }\n renderWhiteboardView() {\n if (!this.$whiteboardView) {\n this.$whiteboardView = document.createElement(\"div\");\n this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n this.mountWhiteboard(this.$whiteboardView);\n this.sideEffect.addEventListener(\n this.$whiteboardView,\n \"wheel\",\n (ev) => {\n preventEvent(ev);\n if (!this.readonly) {\n this.pageScrollTo(this.pageRenderer.pagesScrollTop + ev.deltaY);\n this.updateUserScroll();\n }\n },\n { passive: false, capture: true }\n );\n this.sideEffect.addEventListener(\n this.$whiteboardView,\n \"touchmove\",\n (ev) => {\n if (this.readonly || ev.touches.length <= 1) {\n return;\n }\n this.updateUserScroll();\n },\n { passive: true, capture: true }\n );\n }\n return this.$whiteboardView;\n }\n scrollTopPageToEl(pageScrollTop) {\n return pageScrollTop * this.pageRenderer.scale;\n }\n scrollTopElToPage(elScrollTop) {\n return elScrollTop / this.pageRenderer.scale;\n }\n elScrollTo(elScrollTop) {\n this.pageScrollTo(this.scrollTopElToPage(elScrollTop));\n }\n pageScrollTo(pageScrollTop) {\n const halfWbHeight = this.scrollTopElToPage(this.whiteboardView.size.height / 2);\n this.whiteboardView.moveCamera({\n centerY: clamp(\n pageScrollTop + halfWbHeight,\n halfWbHeight,\n this.pageRenderer.pagesIntrinsicHeight - halfWbHeight\n ),\n animationMode: \"immediately\"\n });\n }\n scrollToPage(index) {\n if (!this.readonly && !Number.isNaN(index)) {\n const offsetY = this.pageRenderer.pagesIntrinsicYs[index];\n if (offsetY >= 0) {\n this.pageScrollTo(offsetY + 5 / this.pageRenderer.scale);\n this.updateUserScroll();\n }\n }\n }\n setupScrollListener() {\n this.sideEffect.add(() => {\n const handleCameraUpdate = (camera) => {\n const { width: wbWidth, height: wbHeight } = this.whiteboardView.size;\n if (wbWidth <= 0 || wbHeight <= 0) {\n return;\n }\n const pagesScrollTop = camera.centerY - this.pageRenderer.containerHeight / this.pageRenderer.scale / 2;\n this.pageRenderer.pagesScrollTo(pagesScrollTop);\n this.scrollbar.pagesScrollTo(pagesScrollTop);\n };\n this.whiteboardView.callbacks.on(\"onCameraUpdated\", handleCameraUpdate);\n return () => this.whiteboardView.callbacks.off(\"onCameraUpdated\", handleCameraUpdate);\n });\n this.sideEffect.add(() => {\n const { updateUserScroll } = this;\n this.whiteboardView.callbacks.on(\"onCameraUpdatedByDevice\", updateUserScroll);\n return () => this.whiteboardView.callbacks.off(\"onCameraUpdatedByDevice\", updateUserScroll);\n });\n this.sideEffect.add(() => {\n const handleSizeUpdate = ({ width: wbWidth, height: wbHeight }) => {\n if (wbWidth <= 0 || wbHeight <= 0) {\n return;\n }\n this.pageRenderer.setContainerSize(wbWidth, wbHeight);\n this.scrollbar.setContainerSize(wbWidth, wbHeight);\n const { pagesIntrinsicWidth, pagesIntrinsicHeight } = this.pageRenderer;\n this.whiteboardView.moveCameraToContain({\n originX: 0,\n originY: this.pageRenderer.pagesScrollTop,\n width: pagesIntrinsicWidth,\n height: wbHeight / this.pageRenderer.scale,\n animationMode: \"immediately\"\n });\n this.whiteboardView.setCameraBound({\n damping: 1,\n maxContentMode: () => this.pageRenderer.scale,\n minContentMode: () => this.pageRenderer.scale,\n centerX: pagesIntrinsicWidth / 2,\n centerY: pagesIntrinsicHeight / 2,\n width: pagesIntrinsicWidth,\n height: pagesIntrinsicHeight\n });\n };\n this.whiteboardView.callbacks.on(\"onSizeUpdated\", handleSizeUpdate);\n return () => {\n this.whiteboardView.callbacks.off(\"onSizeUpdated\", handleSizeUpdate);\n };\n }, \"whiteboard-size-update\");\n this.sideEffect.addEventListener(\n window,\n \"keyup\",\n (ev) => {\n if (this.readonly || !this.box.focus || this.box.minimized || isEditable(ev.target)) {\n return;\n }\n if (this.docsViewReadonly) {\n return;\n }\n let newPageScrollTop = null;\n switch (ev.key) {\n case \"PageDown\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / this.pageRenderer.scale;\n break;\n }\n case \"PageUp\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / this.pageRenderer.scale;\n break;\n }\n case \"ArrowDown\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n break;\n }\n case \"ArrowUp\": {\n newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n break;\n }\n }\n if (newPageScrollTop !== null) {\n if (this._onUserScroll) {\n this._onUserScroll(newPageScrollTop);\n } else {\n this.pageScrollTo(newPageScrollTop);\n this.updateUserScroll();\n }\n }\n },\n { capture: true }\n );\n }\n debounce(fn, options, disposerID) {\n const dFn = debounceFn(fn, options);\n this.sideEffect.addDisposer(() => dFn.cancel(), disposerID);\n return dFn;\n }\n wrapClassName(className) {\n return \"netless-app-docs-viewer-static-\" + className;\n }\n async getBase64FromUrl(url) {\n const data = await fetch(this._invalidate(url));\n const blob = await data.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n const base64data = reader.result;\n resolve(base64data);\n };\n });\n }\n _invalidate(url) {\n try {\n const a = new URL(url);\n a.searchParams.set(\"t\", Date.now().toString());\n return a.toString();\n } catch {\n return url;\n }\n }\n reportProgress(progress, result) {\n window.postMessage({\n type: \"@netless/_result_save_pdf_\",\n appId: this.appId,\n progress,\n result\n });\n }\n}\nclass DynamicDocsViewer {\n constructor({ context, whiteboardView, box, pages }) {\n this.sideEffect = new SideEffectManager();\n this.docsViewReadonly = false;\n this.onPlayPPT = () => {\n const room = this.context.getRoom();\n if (room) {\n room.pptNextStep();\n }\n };\n this._scaleDocsToFitImpl = () => {\n const page = this.pages[this.getPageIndex()];\n if (page) {\n this.whiteboardView.moveCameraToContain({\n originX: -page.width / 2,\n originY: -page.height / 2,\n width: page.width,\n height: page.height,\n animationMode: \"immediately\"\n });\n this.whiteboardView.setCameraBound({\n damping: 1,\n maxContentMode: () => this.whiteboardView.camera.scale,\n minContentMode: () => this.whiteboardView.camera.scale,\n centerX: 0,\n centerY: 0,\n width: page.width,\n height: page.height\n });\n }\n };\n this._scaleDocsToFitDebounced = () => {\n this.sideEffect.setTimeout(this._scaleDocsToFitImpl, 1e3, \"_scaleDocsToFitDebounced\");\n };\n this.scaleDocsToFit = () => {\n this._scaleDocsToFitImpl();\n this._scaleDocsToFitDebounced();\n };\n this.onNewPageIndex = (index) => {\n this.jumpToPage(index, true);\n };\n this.context = context;\n this.whiteboardView = whiteboardView;\n this.box = box;\n this.pages = pages;\n this.displayer = context.getDisplayer();\n this.viewer = new DocsViewer({\n readonly: !context.getIsWritable(),\n box,\n pages,\n onNewPageIndex: this.onNewPageIndex,\n onPlay: this.onPlayPPT\n });\n this.render();\n this.sideEffect.add(() => {\n const handler = (isWritable) => {\n this.viewer.setReadonly(!isWritable);\n };\n this.context.emitter.on(\"writableChange\", handler);\n return () => this.context.emitter.off(\"writableChange\", handler);\n });\n this.sideEffect.add(() => {\n const handler = (sceneState) => {\n this.jumpToPage(sceneState.index);\n };\n this.context.emitter.on(\"sceneStateChange\", handler);\n return () => this.context.emitter.off(\"sceneStateChange\", handler);\n });\n }\n setDocsViewReadonly(isReadonly) {\n this.docsViewReadonly = isReadonly;\n }\n mount() {\n this.viewer.mount();\n const pageIndex = this.getPageIndex();\n if (pageIndex !== 0) {\n this.jumpToPage(pageIndex);\n }\n this.scaleDocsToFit();\n this.sideEffect.add(() => {\n this.whiteboardView.callbacks.on(\"onSizeUpdated\", this.scaleDocsToFit);\n return () => {\n this.whiteboardView.callbacks.off(\"onSizeUpdated\", this.scaleDocsToFit);\n };\n });\n return this;\n }\n unmount() {\n this.viewer.unmount();\n return this;\n }\n destroy() {\n this.sideEffect.flushAll();\n this.unmount();\n this.viewer.destroy();\n }\n getPageIndex() {\n return this.displayer.state.sceneState.index;\n }\n jumpToPage(index, reset) {\n var _a, _b;\n index = clamp(index, 0, this.pages.length - 1);\n if (index !== this.getPageIndex()) {\n if (this.context.getIsWritable()) {\n const initScenePath = this.context.getInitScenePath();\n const scene = (_b = (_a = this.context.getScenes()) == null ? void 0 : _a[index]) == null ? void 0 : _b.name;\n if (initScenePath && scene) {\n this.context.setScenePath(`${initScenePath}/${scene}`);\n }\n this.scaleDocsToFit();\n }\n }\n if (index !== this.viewer.pageIndex) {\n this.viewer.setPageIndex(index);\n }\n if (reset) {\n const room = this.context.getRoom();\n if (room) {\n const pptState = room.state.globalState.__pptState;\n room.setGlobalState({\n __pptState: pptState && {\n uuid: pptState.uuid,\n pageIndex: index,\n disableAutoPlay: pptState.disableAutoPlay\n }\n });\n }\n }\n }\n render() {\n this.viewer.$content.appendChild(this.renderMask());\n this.viewer.$content.appendChild(this.renderWhiteboardView());\n this.sideEffect.addEventListener(window, \"keydown\", (ev) => {\n var _a;\n if (this.docsViewReadonly) {\n return;\n }\n if (this.box.focus && !isEditable(ev.target)) {\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n this.jumpToPage(this.getPageIndex() - 1, true);\n break;\n }\n case \"ArrowRight\":\n case \"ArrowDown\": {\n (_a = this.context.getRoom()) == null ? void 0 : _a.pptNextStep();\n break;\n }\n }\n }\n });\n }\n renderMask() {\n if (!this.$mask) {\n const $mask = document.createElement(\"div\");\n $mask.className = this.wrapClassName(\"mask\");\n this.$mask = $mask;\n const $back = document.createElement(\"button\");\n $back.className = this.wrapClassName(\"back\");\n const $next = document.createElement(\"button\");\n $next.className = this.wrapClassName(\"next\");\n }\n return this.$mask;\n }\n renderWhiteboardView() {\n if (!this.$whiteboardView) {\n this.$whiteboardView = document.createElement(\"div\");\n this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n this.sideEffect.addEventListener(this.$whiteboardView, \"click\", (ev) => {\n var _a;\n const room = this.context.getRoom();\n if (room && room.state.memberState.currentApplianceName === \"clicker\") {\n for (let el = ev.target; el; el = el.parentElement) {\n if ((_a = el.classList) == null ? void 0 : _a.contains(\"ppt-event-source\")) {\n return;\n }\n }\n room.pptNextStep();\n }\n });\n this.context.mountView(this.$whiteboardView);\n }\n return this.$whiteboardView;\n }\n wrapClassName(className) {\n return \"netless-app-docs-viewer-dynamic-\" + className;\n }\n}\nconst kind = \"DocsViewer\";\nconst NetlessAppDocsViewer = {\n kind,\n setup(context) {\n const box = context.getBox();\n const scenes = context.getScenes();\n if (!scenes) {\n throw new Error(\"[Docs Viewer]: scenes not found.\");\n }\n const whiteboardView = context.getView();\n if (!whiteboardView) {\n throw new Error(\"[Docs Viewer]: no whiteboard view.\");\n }\n const pages = scenes.map(\n ({ ppt }) => ppt ? {\n width: ppt.width,\n height: ppt.height,\n src: ppt.src,\n thumbnail: ppt.previewURL\n } : null\n ).filter((page) => Boolean(page));\n if (pages.length <= 0) {\n throw new Error(\"[Docs Viewer]: empty scenes.\");\n }\n box.mountStyles(styles);\n let docsViewer = null;\n if (pages[0].src.startsWith(\"ppt\")) {\n docsViewer = setupDynamicDocsViewer(\n context,\n whiteboardView,\n box,\n pages\n );\n } else {\n docsViewer = setupStaticDocsViewer(\n context,\n whiteboardView,\n box,\n pages\n );\n }\n const appOptions = context.getAppOptions() || {};\n if (appOptions.justDocsViewReadonly) {\n docsViewer.setDocsViewReadonly(true);\n }\n return {\n setDocsViewReadonly: (bol) => {\n docsViewer == null ? void 0 : docsViewer.setDocsViewReadonly(bol);\n }\n };\n }\n};\nfunction setupStaticDocsViewer(context, whiteboardView, box, pages) {\n var _a;\n whiteboardView.disableCameraTransform = !context.getIsWritable();\n const docsViewer = new StaticDocsViewer({\n context,\n whiteboardView,\n readonly: !context.getIsWritable(),\n box,\n pages,\n pageScrollTop: (_a = context.getAttributes()) == null ? void 0 : _a.pageScrollTop,\n mountWhiteboard: context.mountView.bind(context),\n onUserScroll: (pageScrollTop) => {\n var _a2;\n if (((_a2 = context.getAttributes()) == null ? void 0 : _a2.pageScrollTop) !== pageScrollTop && !box.readonly) {\n context.updateAttributes([\"pageScrollTop\"], pageScrollTop);\n }\n },\n baseScenePath: context.getInitScenePath(),\n appId: context.appId\n }).mount();\n docsViewer.viewer.onPageIndexChanged = (index) => {\n context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n };\n context.dispatchAppEvent(\"pageStateChange\", {\n index: docsViewer.viewer.pageIndex,\n length: pages.length\n });\n context.emitter.on(\"attributesUpdate\", (attributes) => {\n if (attributes) {\n if (attributes.pageScrollTop != null) {\n docsViewer.syncPageScrollTop(attributes.pageScrollTop);\n }\n }\n });\n context.emitter.on(\"writableChange\", (isWritable) => {\n docsViewer.setReadonly(!isWritable);\n whiteboardView.disableCameraTransform = !isWritable;\n });\n return docsViewer;\n}\nfunction setupDynamicDocsViewer(context, whiteboardView, box, pages) {\n whiteboardView.disableCameraTransform = true;\n const docsViewer = new DynamicDocsViewer({\n context,\n whiteboardView,\n box,\n pages\n }).mount();\n docsViewer.viewer.onPageIndexChanged = (index) => {\n context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n };\n context.dispatchAppEvent(\"pageStateChange\", {\n index: docsViewer.getPageIndex(),\n length: pages.length\n });\n context.mountView(docsViewer.$whiteboardView);\n if (context.isAddApp) {\n whiteboardView.callbacks.once(\n \"onSizeUpdated\",\n ({ width: contentWidth, height: contentHeight }) => {\n if (pages.length > 0 && box.state !== \"maximized\") {\n const { width: pageWidth, height: pageHeight } = pages[0];\n const preferHeight = pageHeight / pageWidth * contentWidth;\n const diff = preferHeight - contentHeight;\n if (diff !== 0 && context.getIsWritable()) {\n context.emitter.emit(\"setBoxSize\", {\n width: box.width,\n height: box.height + diff / box.containerRect.height\n });\n }\n }\n }\n );\n }\n return docsViewer;\n}\nexport { NetlessAppDocsViewer as default };\n//# sourceMappingURL=main.es.js.map\n"],"names":["styles","copyProperty","to","from","property","ignoreNonConfigurable","toDescriptor","fromDescriptor","canCopyProperty","changePrototype","fromPrototype","wrappedToString","withName","fromBody","toStringDescriptor","toStringName","changeToString","name","newToString","mimicFunction","debounceFn","inputFunction","options","wait","maxWait","before","after","timeout","maxTimeout","result","debouncedFunction","arguments_","context","later","maxLater","shouldCallNow","SOUP","SOUP_LEN","ID_LEN","reusedIdCarrier","genUID","i","invoke","fn","SideEffectManager","disposer","disposerID","joinDisposers","executor","disposers","el","type","listener","handler","ticket","uid","resizeObservers","hasActiveObservations","ro","hasSkippedObservations","msg","deliverResizeLoopError","event","ResizeObserverBoxOptions","ResizeObserverBoxOptions2","freeze","obj","ResizeObserverSize","ResizeObserverSize2","inlineSize","blockSize","DOMRectReadOnly","DOMRectReadOnly2","x","y","width","height","_a","top","right","bottom","left","rectangle","isSVG","target","isHidden","_b","offsetWidth","offsetHeight","isElement","scope","isReplacedElement","global","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","size","switchSizes","zeroBoxes","calculateBoxSizes","forceRecalculation","cs","svg","removePadding","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderRight","borderBottom","borderLeft","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","ResizeObserverEntry","ResizeObserverEntry2","calculateDepthForNode","node","depth","parent","broadcastActiveObservations","shallowestDepth","callbacks2","entries","ot","entry","targetDepth","_i","callbacks_1","callback","gatherActiveObservationsAtDepth","process","trigger","callbacks","notify","cb","queueMicroTask","toggle_1","el_1","config","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","events","time","scheduled","Scheduler","Scheduler2","_this","until","elementsHaveResized","scheduler","updateCount","n","skipNotifyOnElement","ResizeObservation","ResizeObservation2","size2","ResizeObserverDetail","ResizeObserverDetail2","resizeObserver","observerMap","getObservationIndex","observationTargets","ResizeObserverController","ResizeObserverController2","detail","firstObservation","index","lastObservation","ResizeObserver$1","ResizeObserver2","sidebarSVG","namespace","NS","$svg","$path","arrowLeftSVG","arrowRightSVG","playSVG","pauseSVG","runningOnBrowser","isBot","supportsIntersectionObserver","supportsClassList","isHiDpi","defaultSettings","getExtendedSettings","customSettings","createInstance","classObj","eventString","instance","autoInitialize","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","element","attribute","setData","value","attrName","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","arg1","arg2","arg3","addClass","className","removeClass","addTempImage","deleteTempImage","getTempImage","unobserve","observer","resetObserver","unobserveEntered","settings","updateLoadingCount","delta","decreaseToLoadCount","setToLoadCount","isSomethingLoading","haveElementsToLoad","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","saveOriginalBackgroundStyle","setOrResetAttribute","restoreOriginalAttrs","restoreOriginalBgImage","manageApplied","manageLoading","setAttributeIfValue","setImageAttributes","setSourcesImg","imgEl","sourceTag","setSourcesIframe","iframe","setSourcesVideo","videoEl","sourceEl","setSourcesObject","object","setBackground","bg1xValue","bgHiDpiValue","bgDataValue","setMultiBackground","setImgsetBackground","bgImgSetDataValue","imgSetValues","bgImageValues","setSourcesFunctions","setSourcesNative","setSourcesFunction","setSources","elementsWithLoadEvent","hasLoadEvent","checkFinish","addEventListener","eventName","removeEventListener","hasEventListeners","addEventListeners","loadHandler2","errorHandler2","loadEventName","removeEventListeners","eventListeners","doneHandler","loadHandler","goingNative","errorHandler","addOneShotEventListeners","elementToListenTo","loadBackground","loadRegular","load","loadNative","removeImageAttributes","resetSourcesImg","restoreImg","restoreVideo","restoreIframe","iframeEl","restoreObject","objectEl","restoreFunctions","restoreAttributes","restoreFunction","resetClasses","restore","cancelLoading","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","loadAllNative","elements","isIntersecting","getObserverSettings","intersectionHandler","observeElements","updateObserver","elementsToObserve","setObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","setOnlineCheck","resetOnlineCheck","LazyLoad","givenNodeset","elementsToLoad","DocsViewer","readonly","box","pages","onNewPageIndex","onPlay","previewLazyLoad","pageIndex","isSmallBox","$content","$preview","pageClassName","pageNameClassName","page","previewSRC","$page","$name","$img","ev","$footer","$btnSidebar","$pageJumps","$btnPageBack","$btnPlay","returnPlay","$btnPageNext","$pageNumber","$pageNumberInput","$totalPage","$icon","$iconActive","$btn","isShowPreview","$previewPage","clamp","min","max","flattenEvent","preventEvent","isEditable","tagName","Stepper","_c","timestamp","frames","start","fSpring","fDamper","newVelocity","newCurrent","PageEl","scale","pagesIntrinsicWidth","pageOffsetY","visible","schedule","cancelSchedule","PageElManager","sortedEls","pageEl","PageRenderer","url","e","pagesIntrinsicYs","pagesMinHeight","pageY","$pages","pagesScrollTop","force","pageScrollIndex","startIndex","endIndex","$parent","SCROLLBAR_DEFAULT_MIN_HEIGHT","ScrollBar","elScrollTop","elPagesHeight","translateY","$scrollbar","trackStart","draggingClassName","startTop","startY","tracking","ev2","clientY","offsetY","trackEnd","newHeight","ResizeObserver","RATIO_BASE_CONTAINER_HEIGHT","StaticDocsViewer","whiteboardView","pageScrollTop","mountWhiteboard","onUserScroll","baseScenePath","appId","whiteSnapshotCanvas","whiteCtx","scenePath","firstPage","jsPDF","_interopNamespace","pdf","src","orientation","pdfPageSrc","img","resolve","pdfPageBase64","camera","windowManger","snapshot","dataUrl","debouncedOnUserScroll","containerWidth","containerHeight","pageScrollTop2","isReadonly","debouncedRenderRatioHeight","handleDownloadPdf","evt","boxHeight","titleBarSupposedHeight","titleBarActualHeight","footerSupposedHeight","footerActualHeight","emptySpace","titleBarHeight","footerHeight","halfWbHeight","handleCameraUpdate","wbWidth","wbHeight","updateUserScroll","handleSizeUpdate","pagesIntrinsicHeight","newPageScrollTop","dFn","blob","reader","base64data","a","progress","DynamicDocsViewer","room","isWritable","sceneState","reset","initScenePath","scene","pptState","$mask","$back","$next","kind","NetlessAppDocsViewer","scenes","ppt","docsViewer","setupDynamicDocsViewer","setupStaticDocsViewer","bol","_a2","pageWidth","pageHeight","diff"],"mappings":"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"}