flipbookengine 0.3.0 → 0.5.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 +1 @@
1
- {"version":3,"file":"flipbook-engine.js","sources":["../node_modules/@serenity-is/domwise/dist/index.js","../node_modules/@preact/signals-core/dist/signals-core.module.js","../src/state/store.ts","../src/i18n/locales/en.ts","../src/i18n/locales/tr.ts","../src/i18n/service.ts","../src/components/Toolbar.tsx","../src/components/Thumbnails.tsx","../src/components/Viewer.tsx","../src/components/NavigationArrows.tsx","../src/components/App.tsx","../node_modules/page-flip/dist/js/page-flip.browser.js","../src/adapters/PageFlipAdapter.ts","../src/core/LayoutManager.ts","../src/core/InteractionManager.ts","../src/model/pages.ts","../src/theme/theme.ts","../node_modules/pdfjs-dist/build/pdf.mjs","../src/core/PdfRenderer.ts","../src/engine.ts"],"sourcesContent":["// src/bind-this.ts\nvar hasOwnProperty = Object.hasOwnProperty;\nvar bindThisHandler = {\n get: (target, property) => {\n if (hasOwnProperty.call(target, property)) {\n return target[property];\n }\n const m2 = target[property];\n if (typeof m2 === \"function\") {\n return target[property] = m2.bind(target);\n }\n return m2;\n }\n};\nvar bindThisProxyMap = /* @__PURE__ */ new WeakMap();\nfunction bindThis(obj) {\n let proxy = bindThisProxyMap.get(obj);\n if (!proxy) {\n proxy = new Proxy(obj, bindThisHandler);\n bindThisProxyMap.set(obj, proxy);\n }\n return proxy;\n}\n\n// src/prop-hook.ts\nvar initPropHookSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.initPropHook\");\n\n// src/util.ts\nfunction isElement(val) {\n return !!(val && typeof val.nodeType === \"number\");\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" && val !== null;\n}\nfunction isComponentClass(val) {\n return !!(val && val.isComponent);\n}\nfunction isArrayLike(val) {\n return isObject(val) && typeof val.length === \"number\" && typeof val.nodeType !== \"number\";\n}\nfunction isPropHook(value) {\n return typeof value === \"function\" && typeof value[initPropHookSymbol] === \"function\";\n}\nfunction isVisibleChild(val) {\n return val != null && typeof val !== \"boolean\";\n}\n\n// src/class-name.ts\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return Object.keys(value).filter((k) => value[k]).join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\n\n// src/ref.ts\nfunction createRef() {\n return Object.seal({ current: null });\n}\nfunction isRefObject(maybeRef) {\n return maybeRef != null && typeof maybeRef === \"object\" && \"current\" in maybeRef;\n}\nfunction setRef(ref, current) {\n if (isRefObject(ref)) {\n ref.current = current;\n } else if (typeof ref === \"function\") {\n ref(current);\n }\n}\n\n// src/component.ts\nvar Component = class {\n static {\n this.isComponent = true;\n }\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n};\nfunction initComponentClass(Class, attr, children) {\n attr = { ...attr, children };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n setRef(attr.ref, instance);\n }\n return node;\n}\n\n// src/mathml-consts.ts\nvar MathMLNamespace = \"http://www.w3.org/1998/Math/MathML\";\nvar mathMLOnlyTags = /* @__PURE__ */ new Set([\"math\", \"annotation\", \"annotation-xml\", \"maction\", \"merror\", \"mfrac\", \"mi\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msubsup\", \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"semantics\", \"menclose\", \"mfenced\"]);\n\n// src/svg-consts.ts\nvar svgOnlyTags = /* @__PURE__ */ new Set([\n // \"a\",\n \"animate\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n // \"script\",\n \"set\",\n \"stop\",\n // \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n // \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\"\n]);\nvar nonPresentationSVGAttributes = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nvar SVGNamespace = \"http://www.w3.org/2000/svg\";\n\n// src/in-namespace-uri.ts\nvar jsxNamespaceURISymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxNamespaceURI\");\nfunction currentNamespaceURI(value) {\n const current = globalThis[jsxNamespaceURISymbol];\n if (!arguments.length) {\n return current;\n }\n globalThis[jsxNamespaceURISymbol] = value;\n return current;\n}\nfunction inNamespaceURI(namespaceURI, children) {\n const prev = currentNamespaceURI(namespaceURI);\n let result;\n try {\n result = children();\n } finally {\n currentNamespaceURI(prev);\n }\n return result;\n}\nfunction inSVGNamespace(fn) {\n return inNamespaceURI(SVGNamespace, fn);\n}\nfunction inMathMLNamespace(fn) {\n return inNamespaceURI(MathMLNamespace, fn);\n}\nfunction inHTMLNamespace(fn) {\n return inNamespaceURI(null, fn);\n}\n\n// src/shadow.ts\nvar jsxTypeKeySymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxTypeKey\");\nvar shadowRootKey = \"ShadowRoot\";\nfunction ShadowRootNode({\n children,\n ref,\n ...attr\n}) {\n return {\n [jsxTypeKeySymbol]: shadowRootKey,\n ref,\n attr,\n children\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxTypeKeySymbol] === shadowRootKey;\n}\n\n// src/disposing-listener.ts\nvar disposingListenersSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.disposingListeners\");\nvar lifecycleRootSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.lifecycleRoot\");\nfunction getDisposingListeners() {\n return globalThis[disposingListenersSymbol] ||= /* @__PURE__ */ new WeakMap();\n}\nfunction disposingEventListener(ev) {\n if (ev && ev.target && (!ev.currentTarget || ev.currentTarget === ev.target))\n invokeDisposingListeners(ev?.target);\n}\nfunction dispatchDisposingEvent(target, opt) {\n if (!target || typeof CustomEvent !== \"function\")\n return;\n const event = new CustomEvent(\"disposing\", {\n bubbles: opt?.bubbles ?? false,\n cancelable: opt?.cancelable ?? false\n });\n target.dispatchEvent(event);\n}\nfunction invokeDisposingListeners(node, opt) {\n if (!node)\n return;\n const disposingListeners = getDisposingListeners();\n function invokeFor(el) {\n const listeners = disposingListeners.get(el);\n if (!listeners)\n return;\n disposingListeners.delete(el);\n el.removeEventListener(\"disposing\", disposingEventListener);\n for (const disposer of listeners) {\n try {\n disposer.callback(el);\n } catch {\n }\n }\n }\n if (opt?.descendants && node instanceof Element && node.hasChildNodes()) {\n const descendants = [];\n const iterator = document.createNodeIterator(\n node,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT\n );\n let currentNode;\n while (currentNode = iterator.nextNode()) {\n if (currentNode !== node) {\n descendants.push(currentNode);\n }\n }\n for (let i2 = 0; i2 < descendants.length; i2++) {\n invokeFor(descendants[i2]);\n }\n }\n if (!opt?.excludeSelf) {\n invokeFor(node);\n }\n}\nfunction addDisposingListener(target, handler, regKey) {\n if (!target || !handler)\n return target;\n const disposingListeners = getDisposingListeners();\n let listeners = disposingListeners.get(target);\n if (!listeners) {\n if (typeof target.addEventListener !== \"function\")\n return target;\n disposingListeners.set(target, listeners = [{\n callback: handler,\n regKey\n }]);\n target.addEventListener(\"disposing\", disposingEventListener, { once: true });\n return target;\n }\n const existing = listeners.find((x2) => x2.callback === handler);\n if (existing) {\n if (existing.regKey && regKey && existing.regKey !== regKey) {\n throw new Error(\"A disposing listener with the same callback but different regKey is already registered on the target element.\");\n }\n if (regKey && !existing.regKey) {\n existing.regKey = regKey;\n }\n return target;\n }\n listeners.push({ callback: handler, regKey });\n return target;\n}\nfunction removeDisposingListener(target, handler, regKey) {\n if (!target || !handler && !regKey)\n return target;\n const disposingListeners = getDisposingListeners();\n const listeners = disposingListeners.get(target);\n if (listeners) {\n for (let index = listeners.length - 1; index >= 0; index--) {\n const listener = listeners[index];\n if (regKey && listener.regKey === regKey || handler && handler === listener.callback) {\n listeners.splice(index, 1);\n }\n }\n if (listeners.length === 0) {\n disposingListeners.delete(target);\n if (typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"disposing\", disposingEventListener);\n }\n }\n }\n return target;\n}\nfunction currentLifecycleRoot(...args) {\n if (args.length > 0) {\n const prev = globalThis[lifecycleRootSymbol] || null;\n globalThis[lifecycleRootSymbol] = args[0] || null;\n return prev;\n }\n return globalThis[lifecycleRootSymbol] || null;\n}\n\n// src/signal-util.ts\nfunction isSignalLike(obj) {\n return obj != null && typeof obj === \"object\" && typeof obj.subscribe === \"function\" && typeof obj.peek === \"function\" && \"value\" in obj;\n}\nvar SignalObserveArgsImpl = class {\n #dispose;\n #node;\n constructor(signal2, lifecycleRoot, lifecycleNode) {\n this.signal = signal2;\n this.isInitial = true;\n this.hasChanged = false;\n this.lifecycleRoot = lifecycleRoot;\n this.#node = lifecycleNode;\n }\n get lifecycleNode() {\n return this.#node;\n }\n #delDispose() {\n removeDisposingListener(this.#node, this.effectDisposer);\n removeDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n #addDispose() {\n addDisposingListener(this.#node, this.effectDisposer);\n addDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n get effectDisposer() {\n return this.#dispose;\n }\n set effectDisposer(value) {\n this.#delDispose();\n this.#dispose = value;\n this.#addDispose();\n }\n set lifecycleNode(value) {\n if (value !== this.#node) {\n this.#delDispose();\n this.#node = value;\n this.#addDispose();\n }\n }\n};\nfunction observeSignal(signal2, callback, opt) {\n const lifecycleRoot = opt?.useLifecycleRoot ? currentLifecycleRoot() : void 0;\n const args = new SignalObserveArgsImpl(signal2, lifecycleRoot, opt?.lifecycleNode);\n const disposer = args.signal.subscribe(function(value) {\n args.newValue = value;\n if (args.isInitial && this?.dispose) {\n args.effectDisposer = this.dispose.bind(this);\n }\n args.hasChanged = !args.isInitial && args.prevValue !== args.newValue;\n try {\n callback(args);\n } finally {\n args.prevValue = args.newValue;\n args.isInitial = false;\n }\n });\n if (disposer && !args.effectDisposer) {\n args.effectDisposer = disposer;\n }\n return args.effectDisposer;\n}\nfunction derivedSignal(input, fn) {\n if (!isSignalLike(input)) {\n throw new Error(\"Input must be a SignalLike\");\n }\n const callback = () => fn(input.value);\n if (typeof input.constructor === \"function\" && input.constructor !== {}.constructor) {\n try {\n let derived = new input.constructor(callback);\n let disposer2;\n if (isSignalLike(derived)) {\n if (derived.peek() === callback) {\n disposer2 = input.subscribe(() => {\n derived.value = callback();\n });\n }\n if (disposer2) {\n derived.derivedDisposer = function() {\n disposer2();\n delete derived.derivedDisposer;\n };\n }\n return derived;\n }\n } catch (error) {\n }\n }\n let primitive;\n const disposer = input.subscribe(() => {\n if (!primitive) {\n primitive = new PrimitiveComputed(callback);\n return;\n }\n primitive.update();\n });\n if (disposer) {\n primitive.derivedDisposer = function() {\n disposer();\n delete primitive.derivedDisposer;\n };\n }\n return primitive;\n}\nvar PrimitiveComputed = class {\n #subs = /* @__PURE__ */ new Set();\n #value;\n #fn;\n constructor(fn) {\n this.#fn = fn;\n this.update(true);\n }\n update(force) {\n const newValue = this.#fn();\n if (newValue !== this.#value || force) {\n this.#value = newValue;\n this.#subs.forEach((sub) => sub(newValue));\n }\n }\n subscribe(callback) {\n callback(this.#value);\n this.#subs.add(callback);\n return () => this.#subs.delete(callback);\n }\n peek() {\n return this.#value;\n }\n get value() {\n return this.#value;\n }\n};\n\n// src/jsx-append-children.ts\nfunction appendChild(parent, child) {\n if (parent instanceof window.HTMLTemplateElement) {\n parent.content.appendChild(child);\n } else {\n parent.appendChild(child);\n }\n}\nvar fragmentPlaceholderIdx = 0;\nvar placeholderPrefix = \"__domwisefrag_\";\nfunction isPlaceholder(node) {\n return node instanceof Comment && node.data.startsWith(placeholderPrefix);\n}\nfunction isFragmentWithPlaceholder(node) {\n return node instanceof DocumentFragment && isPlaceholder(node.firstChild);\n}\nfunction replaceNode(oldNode, newNode) {\n if (typeof oldNode.replaceWith === \"function\")\n oldNode.replaceWith(newNode);\n else\n oldNode.parentNode?.replaceChild(newNode, oldNode);\n}\nfunction wrapAsNode(value) {\n if (value instanceof DocumentFragment) {\n ++fragmentPlaceholderIdx;\n value.prepend(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n value.append(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n return value;\n }\n if (value instanceof Node) {\n return value;\n }\n if (!isVisibleChild(value)) {\n return document.createComment(\"\");\n }\n return document.createTextNode(value);\n}\nfunction appendChildrenWithSignal(parent, signal2) {\n let prevNode;\n observeSignal(signal2, (args) => {\n if (args.isInitial) {\n prevNode = wrapAsNode(args.newValue);\n let prevNodeNew2 = isFragmentWithPlaceholder(prevNode) ? prevNode.firstChild : prevNode;\n appendChildren(parent, prevNode);\n args.lifecycleNode = (prevNode = prevNodeNew2) ?? parent;\n return;\n }\n if (!args.hasChanged) {\n return;\n }\n const newNode = wrapAsNode(args.newValue);\n if (isPlaceholder(prevNode)) {\n let n2;\n while (n2 = prevNode.nextSibling) {\n n2.parentNode?.removeChild(n2);\n if (n2 instanceof Comment && n2.data === prevNode.data) {\n break;\n }\n }\n }\n let prevNodeNew = isFragmentWithPlaceholder(newNode) ? newNode.firstChild : newNode;\n replaceNode(prevNode, newNode);\n args.lifecycleNode = (prevNode = prevNodeNew) ?? parent;\n });\n}\nfunction appendChildren(parent, children) {\n if (!isVisibleChild(children)) return;\n if (isArrayLike(children)) {\n for (const child of [...children]) {\n appendChildren(parent, child);\n }\n } else if (isString(children) || isNumber(children)) {\n appendChild(parent, document.createTextNode(children));\n } else if (isElement(children)) {\n appendChild(parent, children);\n } else if (isShadowRoot(children)) {\n const shadowRoot = parent.attachShadow(children.attr);\n appendChildren(shadowRoot, children.children);\n setRef(children.ref, shadowRoot);\n } else if (isSignalLike(children)) {\n appendChildrenWithSignal(parent, children);\n }\n}\n\n// src/jsx-assign-class.ts\nfunction unsignalizePrevClass(prev) {\n if (prev == null)\n return prev;\n if (isArrayLike(prev)) {\n prev = Array.from(prev).map((item) => {\n if (isSignalLike(item))\n return item.peek();\n return item;\n });\n } else if (isObject(prev)) {\n prev = { ...prev };\n Object.entries(prev).forEach(([key, val]) => {\n if (isSignalLike(val))\n prev[key] = val.peek();\n });\n }\n return prev;\n}\nfunction clearPrevClass(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n prev = unsignalizePrevClass(prev);\n const prevClassNames = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevClassNames) {\n if (cls) {\n node.classList.remove(cls);\n }\n }\n}\nfunction assignClass(node, value, prev) {\n if (value == null || value === false) {\n clearPrevClass(node, prev);\n return;\n }\n prev = unsignalizePrevClass(prev);\n if (isArrayLike(value)) {\n value = Array.from(value).map((x2) => {\n let val = x2;\n if (isSignalLike(x2)) {\n observeSignal(x2, (args) => {\n if (args.isInitial) {\n val = args.newValue;\n return;\n }\n applyClassName(node, args.newValue, args.prevValue);\n }, {\n lifecycleNode: node\n });\n }\n return val;\n });\n } else if (isObject(value)) {\n value = { ...value };\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => {\n if (args.isInitial) {\n value[key] = args.newValue;\n return;\n }\n applyClassName(node, Boolean(args.newValue) && key, Boolean(args.prevValue) && key);\n }, {\n lifecycleNode: node\n });\n }\n });\n }\n applyClassName(node, value, prev);\n}\nfunction applyClassName(node, value, prev) {\n const newList = (className(value) ?? \"\").split(\" \");\n if (prev) {\n const prevList = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevList) {\n if (cls && !newList.includes(cls)) {\n node.classList.remove(cls);\n }\n }\n }\n for (let cls of newList) {\n cls && node.classList.add(cls);\n }\n}\n\n// src/jsx-assign-style.ts\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\nvar isUnitlessNumber = /* @__PURE__ */ (() => {\n let rec = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n };\n const prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n Object.keys(rec).forEach((prop) => {\n prefixes.forEach((prefix) => {\n rec[prefixKey(prefix, prop)] = 0;\n });\n });\n return rec;\n})();\nfunction setStylePropValue(node, key, val) {\n if (key.indexOf(\"-\") === 0) {\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n}\nfunction clearPrevStyle(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n if (isString(prev)) {\n node.removeAttribute(\"style\");\n return;\n }\n if (isObject(prev)) {\n Object.keys(prev).forEach((key) => {\n setStylePropValue(node, key, \"\");\n });\n }\n}\nfunction assignStyle(node, value, prev) {\n if (value == null || value === false || value === true) {\n clearPrevStyle(node, prev);\n return;\n }\n if (isString(value)) {\n node.setAttribute(\"style\", value);\n return;\n }\n if (isObject(value)) {\n if (isObject(prev)) {\n value = { ...value };\n Object.keys(prev).forEach((key) => {\n if (!(key in value))\n value[key] = \"\";\n });\n } else\n clearPrevStyle(node, prev);\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => setStylePropValue(node, key, args.newValue), {\n lifecycleNode: node\n });\n } else {\n setStylePropValue(node, key, val);\n }\n });\n return;\n }\n}\n\n// src/jsx-assign-props.ts\nvar XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nvar XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\nfunction normalizeAttribute(s2, separator) {\n return s2.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nvar mappedKeys = /* @__PURE__ */ new Map([\n [\"autoComplete\", \"autocomplete\"],\n [\"autoFocus\", \"autofocus\"],\n [\"className\", \"class\"],\n [\"colSpan\", \"colspan\"],\n [\"contentEditable\", \"contenteditable\"],\n [\"formNoValidate\", \"formnovalidate\"],\n [\"htmlFor\", \"for\"],\n [\"innerText\", \"textContent\"],\n [\"minLength\", \"minlength\"],\n [\"maxLength\", \"maxlength\"],\n [\"readOnly\", \"readonly\"],\n [\"reffererPolicy\", \"referrerpolicy\"],\n [\"rowSpan\", \"rowspan\"],\n [\"spellCheck\", \"spellcheck\"],\n [\"tabIndex\", \"tabindex\"],\n [\"onDoubleClick\", \"onDblClick\"],\n [\"onDoubleClickCapture\", \"onDblClickCapture\"]\n]);\nfunction assignProp(node, key, value, prev) {\n switch (key) {\n case \"dataset\":\n if (prev != null) {\n Object.entries(prev).forEach(([k, v2]) => {\n if (v2 != null) {\n delete node.dataset[k];\n }\n });\n }\n Object.entries(value).forEach(([dataKey, dataValue]) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n } else if (isVisibleChild(prev)) {\n node[key] = \"\";\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n } else if (isObject(prev)) {\n node.innerHTML = \"\";\n }\n return;\n case \"value\":\n if (value == null) {\n if (prev != null) {\n node[key] = null;\n }\n return;\n } else if (node instanceof window.HTMLSelectElement) {\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n break;\n case \"class\":\n assignClass(node, value, prev);\n return;\n case \"spellcheck\":\n node.spellcheck = value === \"\" || value === true || value === \"true\" ? true : value === false || value === \"false\" ? false : value;\n return;\n case \"draggable\":\n if (value === false || value === \"false\")\n value = \"false\";\n else if (value === \"\")\n value = null;\n else if (value === true || value === \"true\")\n value = \"true\";\n break;\n case \"contenteditable\":\n if (value === false)\n value = \"false\";\n else if (value === \"\" || value === true)\n value = \"true\";\n break;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n assignStyle(node, value, prev);\n return;\n case \"on\":\n case \"onCapture\":\n const useCapture = key === \"onCapture\";\n if (prev != null) {\n Object.entries(prev).forEach(([eventName, eventHandler]) => {\n if (value == null || value[eventName] !== eventHandler) {\n node.removeEventListener(eventName, eventHandler, useCapture);\n }\n });\n }\n Object.entries(value).forEach(([eventName, eventHandler]) => {\n if (prev == null || prev[eventName] !== eventHandler) {\n node.addEventListener(eventName, eventHandler, useCapture);\n }\n });\n return;\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n node.setAttributeNS(XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n node.setAttribute(\"xmlns:xlink\", value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n node.setAttributeNS(XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n if (typeof value === \"function\") {\n if (key[0] === \"o\" && key[1] === \"n\") {\n if (prev != null && prev === value)\n return;\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n let eventName;\n if (!useCapture && (node[attribute] === null || prev != null && node[attribute] === prev)) {\n node[attribute] = value;\n addDisposingListener(node, nodeEventPropDisposer.bind(node, attribute));\n } else if (useCapture) {\n eventName = attribute.substring(2, attribute.length - 7);\n if (prev != null) {\n node.removeEventListener(eventName, prev, true);\n }\n node.addEventListener(eventName, value, true);\n } else {\n if (attribute in window) {\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n if (prev != null) {\n node.removeEventListener(eventName, prev);\n }\n node.addEventListener(eventName, value);\n }\n } else {\n console.warn(`A function was provided for JSX ${node.tagName} element ${key} which does not start with \"on\":`, value, node.tagName);\n }\n return;\n }\n if (isObject(prev)) {\n if (prev === value) {\n return;\n }\n delete node[key];\n }\n if (prev === true) {\n if (prev === value) {\n return;\n }\n node.removeAttribute(key);\n }\n if (prev !== false && prev != null) {\n if (prev === value) {\n return;\n }\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.removeAttributeNS(normalizeAttribute(key, \"-\"), value);\n } else {\n node.removeAttribute(key);\n }\n }\n if (isObject(value)) {\n node[key] = value;\n return;\n }\n if (value === true) {\n node.setAttribute(key, \"\");\n return;\n }\n if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.setAttribute(normalizeAttribute(key, \"-\"), value);\n } else {\n node.setAttribute(key, value);\n }\n }\n}\nfunction assignProps(node, props) {\n for (let [key, value] of Object.entries(props)) {\n key = mappedKeys.get(key) ?? key;\n if (isSignalLike(value)) {\n observeSignal(value, (args) => assignProp(node, key, args.newValue, args.prevValue), {\n lifecycleNode: node\n });\n } else if (isPropHook(value)) {\n value[initPropHookSymbol](node, key);\n } else {\n assignProp(node, key, value);\n }\n }\n return node;\n}\nfunction nodeEventPropDisposer(key) {\n this[key] = null;\n}\n\n// src/jsx-factory.ts\nfunction jsx(tag, props) {\n let { children, ...attr } = props || {};\n let ns = attr.namespaceURI;\n if (!ns) {\n if (svgOnlyTags.has(tag))\n ns = SVGNamespace;\n else if (mathMLOnlyTags.has(tag))\n ns = MathMLNamespace;\n else\n ns = currentNamespaceURI();\n }\n let node;\n if (isString(tag)) {\n node = ns ? document.createElementNS(ns, tag) : document.createElement(tag);\n assignProps(node, attr);\n appendChildren(node, children);\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node.querySelectorAll(\"option\").forEach((option) => option.selected = values.includes(option.value));\n } else {\n node.value = attr.value;\n }\n }\n setRef(attr.ref, node);\n } else if (typeof tag === \"function\") {\n if (isObject(tag.defaultProps)) {\n attr = { ...tag.defaultProps, ...attr };\n }\n node = isComponentClass(tag) ? initComponentClass(tag, attr, children) : tag({ ...attr, children });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\n\n// src/compat-api.ts\nfunction createElement(tag, attr, ...children) {\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(tag, { ...attr, children });\n}\nfunction useImperativeHandle(ref, init) {\n setRef(ref, init());\n}\n\n// src/fragment.ts\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChildren(fragment, attr.children);\n return fragment;\n}\n\n// src/hooks.ts\nfunction useClassList(initialValue) {\n let temp = document.createElement(\"div\");\n if (initialValue != null) {\n temp.className = className(initialValue);\n }\n let list = temp.classList;\n function ClassList() {\n return list;\n }\n function dispose() {\n list = null;\n temp = null;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n [initPropHookSymbol](node, prop) {\n if (prop !== \"class\")\n throw new Error(\"useClassList can only be used for 'class' attribute.\");\n temp && removeDisposingListener(temp, dispose);\n list && node?.setAttribute(\"class\", list.value);\n addDisposingListener(temp = node, dispose);\n list = node?.classList ?? list;\n },\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add(...tokens) {\n list.add(...tokens);\n },\n remove(...tokens) {\n list.remove(...tokens);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n }\n })\n );\n return ClassList;\n}\nfunction propBinding(value) {\n if (arguments.length && value !== this.value) {\n this.node && this.prop && assignProp(this.node, this.prop, value, this.value);\n this.value = value;\n }\n return this.value;\n}\nfunction propBindingDispose() {\n delete this.node;\n}\nfunction propBindingInit(el, key) {\n if (this.node && el && this.node !== el || this.prop && key && this.prop !== key) {\n throw new Error(\"usePropBinding can only be used with one element and one attribute. Create a new setter for each element / prop.\");\n }\n if (this.node)\n removeDisposingListener(this.node, this.dispose);\n this.node = el;\n if (this.node) {\n addDisposingListener(this.node, this.dispose);\n assignProp(this.node, this.prop ??= key, this.value);\n }\n}\nfunction usePropBinding(initialValue) {\n const accessorThis = {\n value: initialValue\n };\n accessorThis.dispose = propBindingDispose.bind(accessorThis);\n const hook = propBinding.bind(accessorThis);\n hook[initPropHookSymbol] = propBindingInit.bind(accessorThis);\n return hook;\n}\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n }\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\n\n// ../../node_modules/.pnpm/@preact+signals-core@1.14.1/node_modules/@preact/signals-core/dist/signals-core.module.js\nvar i = /* @__PURE__ */ Symbol.for(\"preact-signals\");\nfunction t() {\n if (!(s > 1)) {\n var i2, t2 = false;\n !(function() {\n var i3 = c;\n c = void 0;\n while (void 0 !== i3) {\n if (i3.S.v === i3.v) i3.S.i = i3.i;\n i3 = i3.o;\n }\n })();\n while (void 0 !== h) {\n var n2 = h;\n h = void 0;\n v++;\n while (void 0 !== n2) {\n var r2 = n2.u;\n n2.u = void 0;\n n2.f &= -3;\n if (!(8 & n2.f) && w(n2)) try {\n n2.c();\n } catch (n3) {\n if (!t2) {\n i2 = n3;\n t2 = true;\n }\n }\n n2 = r2;\n }\n }\n v = 0;\n s--;\n if (t2) throw i2;\n } else s--;\n}\nfunction n(i2) {\n if (s > 0) return i2();\n e = ++u;\n s++;\n try {\n return i2();\n } finally {\n t();\n }\n}\nvar r = void 0;\nfunction o(i2) {\n var t2 = r;\n r = void 0;\n try {\n return i2();\n } finally {\n r = t2;\n }\n}\nvar f;\nvar h = void 0;\nvar s = 0;\nvar v = 0;\nvar u = 0;\nvar e = 0;\nvar c = void 0;\nvar d = 0;\nfunction a(i2) {\n if (void 0 !== r) {\n var t2 = i2.n;\n if (void 0 === t2 || t2.t !== r) {\n t2 = { i: 0, S: i2, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 };\n if (void 0 !== r.s) r.s.n = t2;\n r.s = t2;\n i2.n = t2;\n if (32 & r.f) i2.S(t2);\n return t2;\n } else if (-1 === t2.i) {\n t2.i = 0;\n if (void 0 !== t2.n) {\n t2.n.p = t2.p;\n if (void 0 !== t2.p) t2.p.n = t2.n;\n t2.p = r.s;\n t2.n = void 0;\n r.s.n = t2;\n r.s = t2;\n }\n return t2;\n }\n }\n}\nfunction l(i2, t2) {\n this.v = i2;\n this.i = 0;\n this.n = void 0;\n this.t = void 0;\n this.l = 0;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\nl.prototype.brand = i;\nl.prototype.h = function() {\n return true;\n};\nl.prototype.S = function(i2) {\n var t2 = this, n2 = this.t;\n if (n2 !== i2 && void 0 === i2.e) {\n i2.x = n2;\n this.t = i2;\n if (void 0 !== n2) n2.e = i2;\n else o(function() {\n var i3;\n null == (i3 = t2.W) || i3.call(t2);\n });\n }\n};\nl.prototype.U = function(i2) {\n var t2 = this;\n if (void 0 !== this.t) {\n var n2 = i2.e, r2 = i2.x;\n if (void 0 !== n2) {\n n2.x = r2;\n i2.e = void 0;\n }\n if (void 0 !== r2) {\n r2.e = n2;\n i2.x = void 0;\n }\n if (i2 === this.t) {\n this.t = r2;\n if (void 0 === r2) o(function() {\n var i3;\n null == (i3 = t2.Z) || i3.call(t2);\n });\n }\n }\n};\nl.prototype.subscribe = function(i2) {\n var t2 = this;\n return j(function() {\n var n2 = t2.value, o2 = r;\n r = void 0;\n try {\n i2(n2);\n } finally {\n r = o2;\n }\n }, { name: \"sub\" });\n};\nl.prototype.valueOf = function() {\n return this.value;\n};\nl.prototype.toString = function() {\n return this.value + \"\";\n};\nl.prototype.toJSON = function() {\n return this.value;\n};\nl.prototype.peek = function() {\n var i2 = r;\n r = void 0;\n try {\n return this.value;\n } finally {\n r = i2;\n }\n};\nObject.defineProperty(l.prototype, \"value\", { get: function() {\n var i2 = a(this);\n if (void 0 !== i2) i2.i = this.i;\n return this.v;\n}, set: function(i2) {\n if (i2 !== this.v) {\n if (v > 100) throw new Error(\"Cycle detected\");\n !(function(i3) {\n if (0 !== s && 0 === v) {\n if (i3.l !== e) {\n i3.l = e;\n c = { S: i3, v: i3.v, i: i3.i, o: c };\n }\n }\n })(this);\n this.v = i2;\n this.i++;\n d++;\n s++;\n try {\n for (var n2 = this.t; void 0 !== n2; n2 = n2.x) n2.t.N();\n } finally {\n t();\n }\n }\n} });\nfunction y(i2, t2) {\n return new l(i2, t2);\n}\nfunction w(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return true;\n return false;\n}\nfunction _(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {\n var n2 = t2.S.n;\n if (void 0 !== n2) t2.r = n2;\n t2.S.n = t2;\n t2.i = -1;\n if (void 0 === t2.n) {\n i2.s = t2;\n break;\n }\n }\n}\nfunction b(i2) {\n var t2 = i2.s, n2 = void 0;\n while (void 0 !== t2) {\n var r2 = t2.p;\n if (-1 === t2.i) {\n t2.S.U(t2);\n if (void 0 !== r2) r2.n = t2.n;\n if (void 0 !== t2.n) t2.n.p = r2;\n } else n2 = t2;\n t2.S.n = t2.r;\n if (void 0 !== t2.r) t2.r = void 0;\n t2 = r2;\n }\n i2.s = n2;\n}\nfunction p(i2, t2) {\n l.call(this, void 0);\n this.x = i2;\n this.s = void 0;\n this.g = d - 1;\n this.f = 4;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\np.prototype = new l();\np.prototype.h = function() {\n this.f &= -3;\n if (1 & this.f) return false;\n if (32 == (36 & this.f)) return true;\n this.f &= -5;\n if (this.g === d) return true;\n this.g = d;\n this.f |= 1;\n if (this.i > 0 && !w(this)) {\n this.f &= -2;\n return true;\n }\n var i2 = r;\n try {\n _(this);\n r = this;\n var t2 = this.x();\n if (16 & this.f || this.v !== t2 || 0 === this.i) {\n this.v = t2;\n this.f &= -17;\n this.i++;\n }\n } catch (i3) {\n this.v = i3;\n this.f |= 16;\n this.i++;\n }\n r = i2;\n b(this);\n this.f &= -2;\n return true;\n};\np.prototype.S = function(i2) {\n if (void 0 === this.t) {\n this.f |= 36;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.S(t2);\n }\n l.prototype.S.call(this, i2);\n};\np.prototype.U = function(i2) {\n if (void 0 !== this.t) {\n l.prototype.U.call(this, i2);\n if (void 0 === this.t) {\n this.f &= -33;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n }\n }\n};\np.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 6;\n for (var i2 = this.t; void 0 !== i2; i2 = i2.x) i2.t.N();\n }\n};\nObject.defineProperty(p.prototype, \"value\", { get: function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n var i2 = a(this);\n this.h();\n if (void 0 !== i2) i2.i = this.i;\n if (16 & this.f) throw this.v;\n return this.v;\n} });\nfunction g(i2, t2) {\n return new p(i2, t2);\n}\nfunction S(i2) {\n var n2 = i2.m;\n i2.m = void 0;\n if (\"function\" == typeof n2) {\n s++;\n var o2 = r;\n r = void 0;\n try {\n n2();\n } catch (t2) {\n i2.f &= -2;\n i2.f |= 8;\n m(i2);\n throw t2;\n } finally {\n r = o2;\n t();\n }\n }\n}\nfunction m(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n i2.x = void 0;\n i2.s = void 0;\n S(i2);\n}\nfunction x(i2) {\n if (r !== this) throw new Error(\"Out-of-order effect\");\n b(this);\n r = i2;\n this.f &= -2;\n if (8 & this.f) m(this);\n t();\n}\nfunction E(i2, t2) {\n this.x = i2;\n this.m = void 0;\n this.s = void 0;\n this.u = void 0;\n this.f = 32;\n this.name = null == t2 ? void 0 : t2.name;\n if (f) f.push(this);\n}\nE.prototype.c = function() {\n var i2 = this.S();\n try {\n if (8 & this.f) return;\n if (void 0 === this.x) return;\n var t2 = this.x();\n if (\"function\" == typeof t2) this.m = t2;\n } finally {\n i2();\n }\n};\nE.prototype.S = function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n this.f |= 1;\n this.f &= -9;\n S(this);\n _(this);\n s++;\n var i2 = r;\n r = this;\n return x.bind(this, i2);\n};\nE.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 2;\n this.u = h;\n h = this;\n }\n};\nE.prototype.d = function() {\n this.f |= 8;\n if (!(1 & this.f)) m(this);\n};\nE.prototype.dispose = function() {\n this.d();\n};\nfunction j(i2, t2) {\n var n2 = new E(i2, t2);\n try {\n n2.c();\n } catch (i3) {\n n2.d();\n throw i3;\n }\n var r2 = n2.d.bind(n2);\n r2[Symbol.dispose] = r2;\n return r2;\n}\n\n// src/signals.ts\nvar signal = y;\nvar computed = g;\nvar effect = j;\nvar batch = n;\nvar untracked = o;\nfunction useSignal(initialValue) {\n return signal(initialValue);\n}\nfunction useUpdatableComputed() {\n const updater = signal(0);\n const factory = (fn) => {\n return computed(() => {\n updater.value;\n return fn();\n });\n };\n const update = () => {\n updater.value++;\n };\n return { computed: factory, update };\n}\nexport {\n Component,\n Fragment,\n MathMLNamespace,\n SVGNamespace,\n ShadowRootNode,\n addDisposingListener,\n batch,\n bindThis,\n className,\n computed,\n createElement,\n createRef,\n currentLifecycleRoot,\n currentNamespaceURI,\n derivedSignal,\n dispatchDisposingEvent,\n effect,\n createElement as h,\n inHTMLNamespace,\n inMathMLNamespace,\n inNamespaceURI,\n inSVGNamespace,\n initPropHookSymbol,\n invokeDisposingListeners,\n isSignalLike,\n jsx,\n jsx as jsxs,\n observeSignal,\n removeDisposingListener,\n setRef,\n signal,\n untracked,\n useClassList,\n useImperativeHandle,\n usePropBinding,\n createRef as useRef,\n useSignal,\n useText,\n useUpdatableComputed\n};\n//# sourceMappingURL=index.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;!function(){var i=c;c=void 0;while(void 0!==i){if(i.S.v===i.v)i.S.i=i.i;i=i.o}}();while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();e=++u;s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0,e=0,c=void 0,d=0;function a(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}l.prototype.brand=i;l.prototype.h=function(){return!0};l.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};l.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value;o(function(){return i(n)})},{name:\"sub\"})};l.prototype.valueOf=function(){return this.value};l.prototype.toString=function(){return this.value+\"\"};l.prototype.toJSON=function(){return this.value};l.prototype.peek=function(){var i=this;return o(function(){return i.value})};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");!function(i){if(0!==s&&0===v)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c}}}(this);this.v=i;this.i++;d++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function y(i,t){return new l(i,t)}function w(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function _(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function b(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function p(i,t){l.call(this,void 0,t);this.x=i;this.s=void 0;this.g=d-1;this.f=4}p.prototype=new l;p.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===d)return!0;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return!0}var i=r;try{_(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;b(this);this.f&=-2;return!0};p.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}l.prototype.S.call(this,i)};p.prototype.U=function(i){if(void 0!==this.t){l.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function g(i,t){return new p(i,t)}function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;m(i);throw t}finally{r=o;t()}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i)}function x(i){if(r!==this)throw new Error(\"Out-of-order effect\");b(this);r=i;this.f&=-2;if(8&this.f)m(this);t()}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}E.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.m=t}finally{i()}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);s++;var i=r;r=this;return x.bind(this,i)};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this)};E.prototype.dispose=function(){this.d()};function j(i,t){var n=new E(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function C(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function O(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}var k=function(i){for(var t in i){var n=i[t];if(\"function\"==typeof n)i[t]=C(n);else if(\"object\"==typeof n&&null!==n&&!(\"brand\"in n))k(n)}};function T(i){return function(){var t,n,r=O();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}k(n);n[Symbol.dispose]=C(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{p as Computed,E as Effect,l as Signal,C as action,n as batch,g as computed,T as createModel,j as effect,y as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { signal, computed } from '@preact/signals-core';\nimport type { FlipbookThemeMode } from '../theme/theme';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport type { FlipbookEngineOptions } from '../engine';\n\n// Signals hold the reactive state of the application.\n// Any DOMWise component that accesses `.value` will automatically re-render when the value changes.\n\nexport const currentPage = signal<number>(0);\nexport const totalPages = signal<number>(0);\nexport const isSingleMode = signal<boolean>(false);\nexport const showThumbs = signal<boolean>(true);\nexport const showArrows = signal<boolean>(true);\nexport const orientation = signal<'landscape' | 'portrait'>('landscape');\nexport const flipState = signal<'read' | 'fold_corner' | 'flipping'>('read');\nexport const themeMode = signal<FlipbookThemeMode>('auto');\nexport const allowDownload = signal<boolean>(true);\nexport const hasDownloadUrl = signal<boolean>(false);\nexport const primaryColor = signal<string>('#7367f0');\nexport const whiteLabel = signal<boolean>(false);\nexport const isZoomed = signal<boolean>(false);\nexport const isAutoPlaying = signal<boolean>(false);\nexport const autoPlayInterval = signal<number>(3000);\nexport const soundEnabled = signal<boolean>(true);\n\nexport const zoomState = signal<{\n isActive: boolean;\n translateX: number;\n translateY: number;\n isDragging: boolean;\n scale: number;\n}>({\n isActive: false,\n translateX: 0,\n translateY: 0,\n isDragging: false,\n scale: 1\n});\n\nexport const pages = signal<NormalizedFlipbookPage[]>([]);\n\n// Computed values automatically update when their dependencies change.\nexport const isDoublePageLayout = computed(() => {\n return !isSingleMode.value && orientation.value === 'landscape';\n});\n\nexport const isFrontCover = computed(() => {\n return isDoublePageLayout.value && currentPage.value === 0;\n});\n\nexport const isBackCover = computed(() => {\n if (!isDoublePageLayout.value) return false;\n // In page-flip, the back cover is the last page if it's an even number of pages, etc.\n // For simplicity, if currentPage is >= totalPages - 1\n return currentPage.value >= totalPages.value - 1;\n});\n\n// A simple initialization function to inject options into state\nexport function initStore(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) {\n totalPages.value = total;\n pages.value = mappedPages;\n hasDownloadUrl.value = hasPdfUrl;\n \n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.showArrows !== undefined) showArrows.value = options.showArrows;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.isSingleMode !== undefined) isSingleMode.value = options.isSingleMode;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n \n currentPage.value = 0;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const enMessages = {\n emptyStateTitle: 'No data available.',\n thumbnails: 'Thumbnails',\n singlePageMode: 'Single Page Mode',\n pages: 'Pages',\n previous: 'Previous',\n next: 'Next',\n zoomOut: 'Zoom Out',\n zoomIn: 'Zoom In',\n fullscreen: 'Fullscreen',\n settings: 'Settings',\n downloadCatalog: 'Download Catalog',\n play: 'Play',\n pause: 'Pause'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const trMessages = {\n emptyStateTitle: 'Veri bulunamadi.',\n thumbnails: 'Küçük Resimler',\n singlePageMode: 'Tek Sayfa Modu',\n pages: 'Sayfalar',\n previous: 'Önceki',\n next: 'Sonraki',\n zoomOut: 'Uzaklaş',\n zoomIn: 'Yaklaş',\n fullscreen: 'Tam Ekran',\n settings: 'Ayarlar',\n downloadCatalog: 'Kataloğu İndir',\n play: 'Otomatik Oynat',\n pause: 'Duraklat'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport { enMessages } from './locales/en';\nimport { trMessages } from './locales/tr';\n\nexport interface FlipbookMessages {\n emptyStateTitle: string;\n thumbnails: string;\n singlePageMode: string;\n pages: string;\n previous: string;\n next: string;\n zoomOut: string;\n zoomIn: string;\n fullscreen: string;\n settings: string;\n downloadCatalog: string;\n play: string;\n pause: string;\n}\n\nexport const builtInMessages = {\n en: enMessages,\n tr: trMessages\n} as const;\n\nexport type FlipbookLocale = keyof typeof builtInMessages;\nexport type PartialFlipbookMessages = Partial<FlipbookMessages>;\n\nexport interface I18nConfiguration {\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n}\n\nexport function resolveMessages(config: I18nConfiguration = {}): FlipbookMessages {\n const locale = config.locale ?? 'en';\n const builtIn = builtInMessages[locale as FlipbookLocale] ?? builtInMessages.en;\n const custom = config.messages?.[locale] ?? {};\n return {\n ...builtInMessages.en,\n ...builtIn,\n ...custom\n };\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { computed } from '@preact/signals-core';\nimport { \n showThumbs, \n isSingleMode, \n currentPage, \n totalPages, \n isZoomed, \n allowDownload, \n hasDownloadUrl,\n isDoublePageLayout,\n soundEnabled,\n isAutoPlaying\n} from '../state/store';\nimport { resolveMessages } from '../i18n/service';\n\ninterface ToolbarProps {\n onToggleThumbs: () => void;\n onToggleSingleMode: () => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onDownload?: () => void;\n onSoundToggle: () => void;\n onNextPage: () => void;\n onPrevPage: () => void;\n onToggleAutoPlay: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport function Toolbar(props: ToolbarProps) {\n const messages = resolveMessages();\n\n return (\n <div class=\"bk-toolbar\">\n <div class=\"bk-btn-group\">\n <button \n class={computed(() => `bk-btn ${showThumbs.value ? 'active' : ''}`)} \n onClick={props.onToggleThumbs}\n title={messages.thumbnails || 'Thumbnails'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn bz-hide-mobile ${isSingleMode.value ? 'active' : ''}`)} \n onClick={props.onToggleSingleMode}\n title={messages.singlePageMode || 'Single Page'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn ${isAutoPlaying.value ? 'active' : ''}`)} \n onClick={props.onToggleAutoPlay}\n title={computed(() => isAutoPlaying.value ? (messages.pause || 'Pause') : (messages.play || 'Play'))}\n >\n <svg style={{ display: computed(() => isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect></svg>\n \n <svg style={{ display: computed(() => !isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"></polygon></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group bk-btn-group--center\">\n <button class=\"bk-btn\" onClick={props.onPrevPage} title={messages.previous || 'Previous'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\n </button>\n <span class=\"bz-page-info\">\n {computed(() => {\n const current = currentPage.value;\n const total = totalPages.value;\n if (isSingleMode.value || current === 0 || current >= total - 1) {\n return `${current + 1} / ${total}`;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return `${left + 1}-${left + 2} / ${total}`;\n })}\n </span>\n <button class=\"bk-btn\" onClick={props.onNextPage} title={messages.next || 'Next'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group\">\n <button class=\"bk-btn\" onClick={props.onZoomIn} title={messages.zoomIn || 'Zoom In'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n <button \n class={computed(() => `bk-btn ${isZoomed.value ? 'active' : ''}`)} \n onClick={props.onZoomOut} \n title={messages.zoomOut || 'Zoom Out'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n \n <button class=\"bk-btn bk-btn--fullscreen\" onClick={props.onToggleFullscreen} title={messages.fullscreen || 'Fullscreen'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path></svg>\n </button>\n\n {computed(() => {\n if (allowDownload.value && props.onDownload) {\n return (\n <button class=\"bk-btn bk-btn--download\" onClick={props.onDownload} title={messages.downloadCatalog || 'Download'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>\n </button>\n );\n }\n return null;\n })}\n\n <button \n // @ts-ignore\n class={computed(() => `bk-btn ${!soundEnabled.value ? 'muted' : ''}`)}\n onClick={() => {\n soundEnabled.value = !soundEnabled.value;\n props.onSoundToggle();\n }} \n title=\"Sound\"\n >\n <svg style={{ display: computed(() => soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path></svg>\n \n <svg style={{ display: computed(() => !soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line></svg>\n </button>\n </div>\n </div>\n );\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { computed } from '@preact/signals-core';\nimport { pages, showThumbs, currentPage, isSingleMode } from '../state/store';\n\ninterface ThumbnailsProps {\n onThumbClick: (pageIndex: number) => void;\n}\n\nexport function Thumbnails(props: ThumbnailsProps) {\n return (\n <div class=\"bk-thumbs\" style={computed(() => showThumbs.value ? 'display:flex;' : 'display:none;')}>\n {pages.value.map((page, index) => {\n const isActive = () => {\n const current = currentPage.value;\n if (isSingleMode.value || current === 0 || current >= pages.value.length - 1) {\n return current === index;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return index === left || index === left + 1;\n };\n \n return (\n <div \n // @ts-ignore\n class={computed(() => `thumb-item ${isActive() ? 'active' : ''}`)}\n onClick={() => props.onThumbClick(index)}\n >\n <div class=\"thumb-img-wrapper\">\n <img \n class=\"thumb-img\" \n src={page.thumb || page.low || page.normal} \n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n onError={(e: any) => { e.currentTarget.style.display = 'none'; }}\n />\n </div>\n <span>{index + 1}</span>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { computed } from '@preact/signals-core';\nimport { pages, zoomState, isFrontCover, isBackCover, isDoublePageLayout, flipState, isSingleMode, currentPage } from '../state/store';\n\ninterface ViewerProps {\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n}\n\nexport function Viewer(props: ViewerProps) {\n return (\n <div \n id=\"bk-book-wrapper\"\n class={computed(() => {\n let classes = '';\n if (isDoublePageLayout.value) classes += 'double-mode ';\n if (isFrontCover.value) classes += 'bk-is-cover ';\n if (isBackCover.value) classes += 'bk-is-back-cover ';\n if (zoomState.value.isActive) classes += 'zoomed ';\n return classes.trim();\n })}\n ref={props.bookWrapperRef}\n >\n <div \n id=\"bk-book-sizer\" \n ref={props.bookSizerRef}\n >\n <div \n id=\"bk-book\" \n ref={props.bookContainerRef}\n class={computed(() => flipState.value !== 'read' ? 'is-flipping' : '')}\n style={computed(() => `display: ${isSingleMode.value ? 'none' : 'block'};`)}\n >\n {pages.value.map((page, index) => {\n const isHard = index === 0 || index === pages.value.length - 1;\n \n return (\n <div \n // @ts-ignore\n class={`bz-page ${index === 0 ? 'bz-page--cover' : ''} ${index === pages.value.length - 1 ? 'bz-page--back' : ''}`}\n data-density={isHard ? \"hard\" : \"soft\"}\n data-idx={index}\n >\n <div class=\"bz-page-content\" style=\"position:relative; width:100%; height:100%; overflow:hidden;\">\n <img \n src={page.low || page.normal} \n data-src={page.normal} \n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n />\n <div class=\"page-shadow\"></div>\n </div>\n </div>\n );\n })}\n </div>\n \n <div \n id=\"bk-single-view\"\n style={computed(() => `display: ${isSingleMode.value ? 'flex' : 'none'}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`)}\n >\n {computed(() => {\n const page = pages.value[currentPage.value];\n if (!page) return null;\n return (\n <img \n id=\"bk-single-img\"\n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n src={zoomState.value.isActive ? page.normal : (page.low || page.normal)}\n style=\"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);\"\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n */\nimport { computed } from '@preact/signals-core';\nimport { showArrows, currentPage, totalPages, isDoublePageLayout } from '../state/store';\n\ninterface NavigationArrowsProps {\n onPrevPage: () => void;\n onNextPage: () => void;\n}\n\nexport function NavigationArrows(props: NavigationArrowsProps) {\n const isLeftVisible = computed(() => {\n return showArrows.value && currentPage.value > 0;\n });\n\n const isRightVisible = computed(() => {\n if (!showArrows.value || totalPages.value <= 1) return false;\n // If double page layout, the last visible spread starts at totalPages - 2 (if even) or totalPages - 1 (if odd)\n // A simple check: if current page is the last page, hide it.\n return currentPage.value < totalPages.value - 1;\n });\n\n return (\n <div class=\"bk-nav-arrows\" style={computed(() => showArrows.value ? 'display: block;' : 'display: none;')}>\n <button \n class=\"bk-nav-arrow bk-nav-prev\" \n style={computed(() => isLeftVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\n onClick={(e: Event) => { e.preventDefault(); props.onPrevPage(); }}\n aria-label=\"Previous Page\"\n >\n <div class=\"bk-arrow-icon bk-arrow-left\"></div>\n </button>\n <button \n class=\"bk-nav-arrow bk-nav-next\" \n style={computed(() => isRightVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\n onClick={(e: Event) => { e.preventDefault(); props.onNextPage(); }}\n aria-label=\"Next Page\"\n >\n <div class=\"bk-arrow-icon bk-arrow-right\"></div>\n </button>\n </div>\n );\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { computed } from '@preact/signals-core';\nimport { Toolbar } from './Toolbar';\nimport { Thumbnails } from './Thumbnails';\nimport { Viewer } from './Viewer';\nimport { NavigationArrows } from './NavigationArrows';\nimport { \n themeMode, \n whiteLabel, \n showThumbs, \n isSingleMode,\n currentPage,\n isAutoPlaying,\n soundEnabled\n} from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\nimport type { InteractionManager } from '../core/InteractionManager';\n\ninterface AppProps {\n pageFlipAdapterRef: { current: PageFlipAdapter | null };\n interactionManagerRef: { current: InteractionManager | null };\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n className?: string;\n onDownload: () => void;\n}\n\nexport function App(props: AppProps) {\n const handleToggleThumbs = () => {\n showThumbs.value = !showThumbs.value;\n };\n\n const handleToggleSingleMode = () => {\n isSingleMode.value = !isSingleMode.value;\n };\n\n const handleToggleAutoPlay = () => {\n isAutoPlaying.value = !isAutoPlaying.value;\n };\n\n const handleZoomIn = () => {\n props.interactionManagerRef.current?.zoomIn();\n };\n\n const handleZoomOut = () => {\n props.interactionManagerRef.current?.zoomOut();\n };\n\n const handleToggleFullscreen = () => {\n if (!document.fullscreenElement) {\n // Find the closest container or just use documentElement\n const el = document.querySelector('.bk-wrapper')?.parentElement || document.documentElement;\n el.requestFullscreen().catch(err => console.warn('Fullscreen err:', err));\n } else {\n document.exitFullscreen().catch(err => console.warn('Exit fullscreen err:', err));\n }\n };\n\n const handleThumbClick = (index: number) => {\n if (currentPage.value !== index) {\n currentPage.value = index;\n props.pageFlipAdapterRef.current?.playSound();\n }\n };\n\n const handleNextPage = () => {\n props.pageFlipAdapterRef.current?.turnToNextPage();\n };\n\n const handlePrevPage = () => {\n props.pageFlipAdapterRef.current?.turnToPrevPage();\n };\n\n return (\n <div \n class={computed(() => `bk-wrapper bk-theme-${themeMode.value} ${props.className || ''}`)}\n >\n <div class=\"bk-main-area\">\n <Viewer \n bookWrapperRef={props.bookWrapperRef}\n bookSizerRef={props.bookSizerRef}\n bookContainerRef={props.bookContainerRef}\n />\n \n <NavigationArrows \n onPrevPage={handlePrevPage}\n onNextPage={handleNextPage}\n />\n\n {!whiteLabel.value ? (\n <div class=\"bk-watermark\">\n Powered by <a href=\"https://flipbookengine.com\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration: underline;\">FlipbookEngine</a>\n </div>\n ) : null}\n </div>\n\n <Toolbar \n onToggleThumbs={handleToggleThumbs}\n onToggleSingleMode={handleToggleSingleMode}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onDownload={props.onDownload}\n onNextPage={handleNextPage}\n onPrevPage={handlePrevPage}\n onSoundToggle={() => soundEnabled.value = !soundEnabled.value}\n onToggleAutoPlay={handleToggleAutoPlay}\n onToggleFullscreen={handleToggleFullscreen}\n />\n \n <Thumbnails \n onThumbClick={handleThumbClick}\n />\n </div>\n );\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).St={})}(this,(function(t){\"use strict\";class e{constructor(t,e){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=e,this.nowDrawingDensity=this.createdDensity,this.render=t}setDensity(t){this.createdDensity=t,this.nowDrawingDensity=t}setDrawingDensity(t){this.nowDrawingDensity=t}setPosition(t){this.state.position=t}setAngle(t){this.state.angle=t}setArea(t){this.state.area=t}setHardDrawingAngle(t){this.state.hardDrawingAngle=t}setHardAngle(t){this.state.hardAngle=t,this.state.hardDrawingAngle=t}setOrientation(t){this.orientation=t}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class i extends e{constructor(t,e,i){super(t,i),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=e}draw(t){const e=this.render.getContext(),i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;e.save(),e.translate(i.x,i.y),e.beginPath();for(let t of this.state.area)null!==t&&(t=this.render.convertToGlobal(t),e.lineTo(t.x-i.x,t.y-i.y));e.rotate(this.state.angle),e.clip(),this.isLoad?e.drawImage(this.image,0,0,s,n):this.drawLoader(e,{x:0,y:0},s,n),e.restore()}simpleDraw(t){const e=this.render.getRect(),i=this.render.getContext(),s=e.pageWidth,n=e.height,h=1===t?e.left+e.pageWidth:e.left,r=e.top;this.isLoad?i.drawImage(this.image,h,r,s,n):this.drawLoader(i,{x:h,y:r},s,n)}drawLoader(t,e,i,s){t.beginPath(),t.strokeStyle=\"rgb(200, 200, 200)\",t.fillStyle=\"rgb(255, 255, 255)\",t.lineWidth=1,t.rect(e.x+1,e.y+1,i-1,s-1),t.stroke(),t.fill();const n={x:e.x+i/2,y:e.y+s/2};t.beginPath(),t.lineWidth=10,t.arc(n.x,n.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),t.stroke(),t.closePath(),this.loadingAngle+=.07,this.loadingAngle>=2*Math.PI&&(this.loadingAngle=0)}load(){this.isLoad||(this.image.onload=()=>{this.isLoad=!0})}newTemporaryCopy(){return this}getTemporaryCopy(){return this}hideTemporaryCopy(){}}class s{constructor(t,e){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=e,this.app=t,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let t=0;t<this.pages.length;t++)this.portraitSpread.push([t]);let t=0;this.isShowCover&&(this.pages[0].setDensity(\"hard\"),this.landscapeSpread.push([t]),t++);for(let e=t;e<this.pages.length;e+=2)e<this.pages.length-1?this.landscapeSpread.push([e,e+1]):(this.landscapeSpread.push([e]),this.pages[e].setDensity(\"hard\"))}getSpread(){return\"landscape\"===this.render.getOrientation()?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(t){const e=this.getSpread();for(let i=0;i<e.length;i++)if(t===e[i][0]||t===e[i][1])return i;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(t){if(t>=0&&t<this.pages.length)return this.pages[t];throw new Error(\"Invalid page number\")}nextBy(t){const e=this.pages.indexOf(t);return e<this.pages.length-1?this.pages[e+1]:null}prevBy(t){const e=this.pages.indexOf(t);return e>0?this.pages[e-1]:null}getFlippingPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e].newTemporaryCopy():this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length||0===t?this.pages[i[0]]:this.pages[i[1]]}}getBottomPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e+1]:this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length?this.pages[i[0]]:0===t?this.pages[i[1]]:this.pages[i[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(t=null){if(null===t&&(t=this.currentPageIndex),t<0||t>=this.pages.length)return;const e=this.getSpreadIndexByPage(t);null!==e&&(this.currentSpreadIndex=e,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(t){if(!(t>=0&&t<this.getSpread().length))throw new Error(\"Invalid page\");this.currentSpreadIndex=t}showSpread(){const t=this.getSpread()[this.currentSpreadIndex];2===t.length?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(this.pages[t[1]])):\"landscape\"===this.render.getOrientation()&&t[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[t[0]])),this.currentPageIndex=t[0],this.app.updatePageIndex(this.currentPageIndex)}}class n extends s{constructor(t,e,i){super(t,e),this.imagesHref=i}load(){for(const t of this.imagesHref){const e=new i(this.render,t,\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class h{static GetDistanceBetweenTwoPoint(t,e){return null===t||null===e?1/0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static GetSegmentLength(t){return h.GetDistanceBetweenTwoPoint(t[0],t[1])}static GetAngleBetweenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x;return Math.acos((i*s+n*h)/(Math.sqrt(i*i+n*n)*Math.sqrt(s*s+h*h)))}static PointInRect(t,e){return null===e?null:e.x>=t.left&&e.x<=t.width+t.left&&e.y>=t.top&&e.y<=t.top+t.height?e:null}static GetRotatedPoint(t,e,i){return{x:t.x*Math.cos(i)+t.y*Math.sin(i)+e.x,y:t.y*Math.cos(i)-t.x*Math.sin(i)+e.y}}static LimitPointToCircle(t,e,i){if(h.GetDistanceBetweenTwoPoint(t,i)<=e)return i;const s=t.x,n=t.y,r=i.x,o=i.y;let a=Math.sqrt(Math.pow(e,2)*Math.pow(s-r,2)/(Math.pow(s-r,2)+Math.pow(n-o,2)))+s;i.x<0&&(a*=-1);let g=(a-s)*(n-o)/(s-r)+n;return s-r+n===0&&(g=e),{x:a,y:g}}static GetIntersectBetweenTwoSegment(t,e,i){return h.PointInRect(t,h.GetIntersectBeetwenTwoLine(e,i))}static GetIntersectBeetwenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x,r=t[0].x*t[1].y-t[1].x*t[0].y,o=e[0].x*e[1].y-e[1].x*e[0].y,a=i*o-s*r,g=n*o-h*r,l=-(r*h-o*n)/(i*h-s*n),d=-(i*o-s*r)/(i*h-s*n);if(isFinite(l)&&isFinite(d))return{x:l,y:d};if(Math.abs(a-g)<.1)throw new Error(\"Segment included\");return null}static GetCordsFromTwoPoint(t,e){const i=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y),n=Math.max(i,s),h=[t];function r(t,e,i,s,n){return e>t?t+n*(i/s):e<t?t-n*(i/s):t}for(let o=1;o<=n;o+=1)h.push({x:r(t.x,e.x,i,n,o),y:r(t.y,e.y,s,n,o)});return h}}class r extends e{constructor(t,e,i){super(t,i),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=e,this.element.classList.add(\"stf__item\"),this.element.classList.add(\"--\"+i)}newTemporaryCopy(){return\"hard\"===this.nowDrawingDensity?this:(null===this.temporaryCopy&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new r(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){null!==this.temporaryCopy&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(t){const e=t||this.nowDrawingDensity,i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;this.element.classList.remove(\"--simple\");const h=`\\n display: block;\\n z-index: ${this.element.style.zIndex};\\n left: 0;\\n top: 0;\\n width: ${s}px;\\n height: ${n}px;\\n `;\"hard\"===e?this.drawHard(h):this.drawSoft(i,h)}drawHard(t=\"\"){const e=this.render.getRect().left+this.render.getRect().width/2,i=this.state.hardDrawingAngle,s=t+\"\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n clip-path: none;\\n -webkit-clip-path: none;\\n \"+(0===this.orientation?`transform-origin: ${this.render.getRect().pageWidth}px 0; \\n transform: translate3d(0, 0, 0) rotateY(${i}deg);`:`transform-origin: 0 0; \\n transform: translate3d(${e}px, 0, 0) rotateY(${i}deg);`);this.element.style.cssText=s}drawSoft(t,e=\"\"){let i=\"polygon( \";for(const t of this.state.area)if(null!==t){let e=1===this.render.getDirection()?{x:-t.x+this.state.position.x,y:t.y-this.state.position.y}:{x:t.x-this.state.position.x,y:t.y-this.state.position.y};e=h.GetRotatedPoint(e,{x:0,y:0},this.state.angle),i+=e.x+\"px \"+e.y+\"px, \"}i=i.slice(0,-2),i+=\")\";const s=e+`transform-origin: 0 0; clip-path: ${i}; -webkit-clip-path: ${i};`+(this.render.isSafari()&&0===this.state.angle?`transform: translate(${t.x}px, ${t.y}px);`:`transform: translate3d(${t.x}px, ${t.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=s}simpleDraw(t){const e=this.render.getRect(),i=e.pageWidth,s=e.height,n=1===t?e.left+e.pageWidth:e.left,h=e.top;this.element.classList.add(\"--simple\"),this.element.style.cssText=`\\n position: absolute; \\n display: block; \\n height: ${s}px; \\n left: ${n}px; \\n top: ${h}px; \\n width: ${i}px; \\n z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(t){super.setOrientation(t),this.element.classList.remove(\"--left\",\"--right\"),this.element.classList.add(1===t?\"--right\":\"--left\")}setDrawingDensity(t){this.element.classList.remove(\"--soft\",\"--hard\"),this.element.classList.add(\"--\"+t),super.setDrawingDensity(t)}}class o extends s{constructor(t,e,i,s){super(t,e),this.element=i,this.pagesElement=s}load(){for(const t of this.pagesElement){const e=new r(this.render,t,\"hard\"===t.dataset.density?\"hard\":\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class a{constructor(t,e,i,s){this.direction=t,this.corner=e,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(i,10),this.pageHeight=parseInt(s,10)}calc(t){try{return this.position=this.calcAngleAndPosition(t),this.calculateIntersectPoint(this.position),!0}catch(t){return!1}}getFlippingClipArea(){const t=[];let e=!1;return t.push(this.rect.topLeft),t.push(this.topIntersectPoint),null===this.sideIntersectPoint?e=!0:(t.push(this.sideIntersectPoint),null===this.bottomIntersectPoint&&(e=!1)),t.push(this.bottomIntersectPoint),(e||\"bottom\"===this.corner)&&t.push(this.rect.bottomLeft),t}getBottomClipArea(){const t=[];return t.push(this.topIntersectPoint),\"top\"===this.corner?t.push({x:this.pageWidth,y:0}):(null!==this.topIntersectPoint&&t.push({x:this.pageWidth,y:0}),t.push({x:this.pageWidth,y:this.pageHeight})),null!==this.sideIntersectPoint?h.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&t.push(this.sideIntersectPoint):\"top\"===this.corner&&t.push({x:this.pageWidth,y:this.pageHeight}),t.push(this.bottomIntersectPoint),t.push(this.topIntersectPoint),t}getAngle(){return 0===this.direction?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return 0===this.direction?this.rect.topLeft:this.rect.topRight}getDirection(){return this.direction}getFlippingProgress(){return Math.abs((this.position.x-this.pageWidth)/(2*this.pageWidth)*100)}getCorner(){return this.corner}getBottomPagePosition(){return 1===this.direction?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return\"top\"===this.corner?this.topIntersectPoint:null!==this.sideIntersectPoint?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const t=h.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return 0===this.direction?t:Math.PI-t}calcAngleAndPosition(t){let e=t;if(this.updateAngleAndGeometry(e),e=\"top\"===this.corner?this.checkPositionAtCenterLine(e,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(e,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(e.x-this.pageWidth)<1&&Math.abs(e.y)<1)throw new Error(\"Point is too small\");return e}updateAngleAndGeometry(t){this.angle=this.calculateAngle(t),this.rect=this.getPageRect(t)}calculateAngle(t){const e=this.pageWidth-t.x+1,i=\"bottom\"===this.corner?this.pageHeight-t.y:t.y;let s=2*Math.acos(e/Math.sqrt(i*i+e*e));i<0&&(s=-s);const n=Math.PI-s;if(!isFinite(s)||n>=0&&n<.003)throw new Error(\"The G point is too small\");return\"bottom\"===this.corner&&(s=-s),s}getPageRect(t){return\"top\"===this.corner?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],t):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],t)}getRectFromBasePoint(t,e){return{topLeft:this.getRotatedPoint(t[0],e),topRight:this.getRotatedPoint(t[1],e),bottomLeft:this.getRotatedPoint(t[2],e),bottomRight:this.getRotatedPoint(t[3],e)}}getRotatedPoint(t,e){return{x:t.x*Math.cos(this.angle)+t.y*Math.sin(this.angle)+e.x,y:t.y*Math.cos(this.angle)-t.x*Math.sin(this.angle)+e.y}}calculateIntersectPoint(t){const e={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};\"top\"===this.corner?(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(t,e,i){let s=t;const n=h.LimitPointToCircle(e,this.pageWidth,s);s!==n&&(s=n,this.updateAngleAndGeometry(s));const r=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let o=this.rect.bottomRight,a=this.rect.topLeft;if(\"bottom\"===this.corner&&(o=this.rect.topRight,a=this.rect.bottomLeft),o.x<=0){const t=h.LimitPointToCircle(i,r,a);t!==s&&(s=t,this.updateAngleAndGeometry(s))}return s}getSegmentToShadowLine(){const t=this.getShadowStartPoint();return[t,t!==this.sideIntersectPoint&&null!==this.sideIntersectPoint?this.sideIntersectPoint:this.bottomIntersectPoint]}}class g{constructor(t,e){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state=\"read\",this.render=t,this.app=e}fold(t){this.setState(\"user_fold\"),null===this.calc&&this.start(t),this.do(this.render.convertToPage(t))}flip(t){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(t))return;if(null!==this.calc&&this.render.finishAnimation(),!this.start(t))return;const e=this.getBoundsRect();this.setState(\"flipping\");const i=e.height/10,s=\"bottom\"===this.calc.getCorner()?e.height-i:i,n=\"bottom\"===this.calc.getCorner()?e.height:0;this.calc.calc({x:e.pageWidth-i,y:s}),this.animateFlippingTo({x:e.pageWidth-i,y:s},{x:-e.pageWidth,y:n},!0)}start(t){this.reset();const e=this.render.convertToBook(t),i=this.getBoundsRect(),s=this.getDirectionByPoint(e),n=e.y>=i.height/2?\"bottom\":\"top\";if(!this.checkDirection(s))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(s),this.bottomPage=this.app.getPageCollection().getBottomPage(s),\"landscape\"===this.render.getOrientation())if(1===s){const t=this.app.getPageCollection().nextBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}else{const t=this.app.getPageCollection().prevBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}return this.render.setDirection(s),this.calc=new a(s,n,i.pageWidth.toString(10),i.height.toString(10)),!0}catch(t){return!1}}do(t){if(null!==this.calc&&this.calc.calc(t)){const t=this.calc.getFlippingProgress();this.bottomPage.setArea(this.calc.getBottomClipArea()),this.bottomPage.setPosition(this.calc.getBottomPagePosition()),this.bottomPage.setAngle(0),this.bottomPage.setHardAngle(0),this.flippingPage.setArea(this.calc.getFlippingClipArea()),this.flippingPage.setPosition(this.calc.getActiveCorner()),this.flippingPage.setAngle(this.calc.getAngle()),0===this.calc.getDirection()?this.flippingPage.setHardAngle(90*(200-2*t)/100):this.flippingPage.setHardAngle(-90*(200-2*t)/100),this.render.setPageRect(this.calc.getRect()),this.render.setBottomPage(this.bottomPage),this.render.setFlippingPage(this.flippingPage),this.render.setShadowData(this.calc.getShadowStartPoint(),this.calc.getShadowAngle(),t,this.calc.getDirection())}}flipToPage(t,e){const i=this.app.getPageCollection().getCurrentSpreadIndex(),s=this.app.getPageCollection().getSpreadIndexByPage(t);try{s>i&&(this.app.getPageCollection().setCurrentSpreadIndex(s-1),this.flipNext(e)),s<i&&(this.app.getPageCollection().setCurrentSpreadIndex(s+1),this.flipPrev(e))}catch(t){}}flipNext(t){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:\"top\"===t?1:this.render.getRect().height-2})}flipPrev(t){this.flip({x:10,y:\"top\"===t?1:this.render.getRect().height-2})}stopMove(){if(null===this.calc)return;const t=this.calc.getPosition(),e=this.getBoundsRect(),i=\"bottom\"===this.calc.getCorner()?e.height:0;t.x<=0?this.animateFlippingTo(t,{x:-e.pageWidth,y:i},!0):this.animateFlippingTo(t,{x:e.pageWidth,y:i},!1)}showCorner(t){if(!this.checkState(\"read\",\"fold_corner\"))return;const e=this.getBoundsRect(),i=e.pageWidth;if(this.isPointOnCorners(t))if(null===this.calc){if(!this.start(t))return;this.setState(\"fold_corner\"),this.calc.calc({x:i-1,y:1});const s=50,n=\"bottom\"===this.calc.getCorner()?e.height-1:1,h=\"bottom\"===this.calc.getCorner()?e.height-s:s;this.animateFlippingTo({x:i-1,y:n},{x:i-s,y:h},!1,!1)}else this.do(this.render.convertToPage(t));else this.setState(\"read\"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(t,e,i,s=!0){const n=h.GetCordsFromTwoPoint(t,e),r=[];for(const t of n)r.push(()=>this.do(t));const o=this.getAnimationDuration(n.length);this.render.startAnimation(r,o,()=>{this.calc&&(i&&(1===this.calc.getDirection()?this.app.turnToPrevPage():this.app.turnToNextPage()),s&&(this.render.setBottomPage(null),this.render.setFlippingPage(null),this.render.clearShadow(),this.setState(\"read\"),this.reset()))})}getCalculation(){return this.calc}getState(){return this.state}setState(t){this.state!==t&&(this.app.updateState(t),this.state=t)}getDirectionByPoint(t){const e=this.getBoundsRect();if(\"portrait\"===this.render.getOrientation()){if(t.x-e.pageWidth<=e.width/5)return 1}else if(t.x<e.width/2)return 1;return 0}getAnimationDuration(t){const e=this.app.getSettings().flippingTime;return t>=1e3?e:t/1e3*e}checkDirection(t){return 0===t?this.app.getCurrentPageIndex()<this.app.getPageCount()-1:this.app.getCurrentPageIndex()>=1}reset(){this.calc=null,this.flippingPage=null,this.bottomPage=null}getBoundsRect(){return this.render.getRect()}checkState(...t){for(const e of t)if(this.state===e)return!0;return!1}isPointOnCorners(t){const e=this.getBoundsRect(),i=e.pageWidth,s=Math.sqrt(Math.pow(i,2)+Math.pow(e.height,2))/5,n=this.render.convertToBook(t);return n.x>0&&n.y>0&&n.x<e.width&&n.y<e.height&&(n.x<s||n.x>e.width-s)&&(n.y<s||n.y>e.height-s)}}class l{constructor(t,e){this.leftPage=null,this.rightPage=null,this.flippingPage=null,this.bottomPage=null,this.direction=null,this.orientation=null,this.shadow=null,this.animation=null,this.pageRect=null,this.boundsRect=null,this.timer=0,this.safari=!1,this.setting=e,this.app=t;const i=new RegExp(\"Version\\\\/[\\\\d\\\\.]+.*Safari/\");this.safari=null!==i.exec(window.navigator.userAgent)}render(t){if(null!==this.animation){const e=Math.round((t-this.animation.startedAt)/this.animation.durationFrame);e<this.animation.frames.length?this.animation.frames[e]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=t,this.drawFrame()}start(){this.update();const t=e=>{this.render(e),requestAnimationFrame(t)};requestAnimationFrame(t)}startAnimation(t,e,i){this.finishAnimation(),this.animation={frames:t,duration:e,durationFrame:e/t.length,onAnimateEnd:i,startedAt:this.timer}}finishAnimation(){null!==this.animation&&(this.animation.frames[this.animation.frames.length-1](),null!==this.animation.onAnimateEnd&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const t=this.calculateBoundsRect();this.orientation!==t&&(this.orientation=t,this.app.updateOrientation(t))}calculateBoundsRect(){let t=\"landscape\";const e=this.getBlockWidth(),i=e/2,s=this.getBlockHeight()/2,n=this.setting.width/this.setting.height;let h=this.setting.width,r=this.setting.height,o=i-h;return\"stretch\"===this.setting.size?(e<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(t=\"portrait\"),h=\"portrait\"===t?this.getBlockWidth():this.getBlockWidth()/2,h>this.setting.maxWidth&&(h=this.setting.maxWidth),r=h/n,r>this.getBlockHeight()&&(r=this.getBlockHeight(),h=r*n),o=\"portrait\"===t?i-h/2-h:i-h):e<2*h&&this.app.getSettings().usePortrait&&(t=\"portrait\",o=i-h/2-h),this.boundsRect={left:o,top:s-r/2,width:2*h,height:r,pageWidth:h},t}setShadowData(t,e,i,s){if(!this.app.getSettings().drawShadow)return;const n=100*this.getSettings().maxShadowOpacity;this.shadow={pos:t,angle:e,width:3*this.getRect().pageWidth/4*i/100,opacity:(100-i)*n/100/100,direction:s,progress:2*i}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return null===this.boundsRect&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(t){this.pageRect=t}setDirection(t){this.direction=t}setRightPage(t){null!==t&&t.setOrientation(1),this.rightPage=t}setLeftPage(t){null!==t&&t.setOrientation(0),this.leftPage=t}setBottomPage(t){null!==t&&t.setOrientation(1===this.direction?0:1),this.bottomPage=t}setFlippingPage(t){null!==t&&t.setOrientation(0===this.direction&&\"portrait\"!==this.orientation?0:1),this.flippingPage=t}convertToBook(t){const e=this.getRect();return{x:t.x-e.left,y:t.y-e.top}}isSafari(){return this.safari}convertToPage(t,e){e||(e=this.direction);const i=this.getRect();return{x:0===e?t.x-i.left-i.width/2:i.width/2-t.x+i.left,y:t.y-i.top}}convertToGlobal(t,e){if(e||(e=this.direction),null==t)return null;const i=this.getRect();return{x:0===e?t.x+i.left+i.width/2:i.width/2-t.x+i.left,y:t.y+i.top}}convertRectToGlobal(t,e){return e||(e=this.direction),{topLeft:this.convertToGlobal(t.topLeft,e),topRight:this.convertToGlobal(t.topRight,e),bottomLeft:this.convertToGlobal(t.bottomLeft,e),bottomRight:this.convertToGlobal(t.bottomRight,e)}}}class d extends l{constructor(t,e,i){super(t,e),this.canvas=i,this.ctx=i.getContext(\"2d\")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),\"portrait\"!==this.orientation&&null!=this.leftPage&&this.leftPage.simpleDraw(0),null!=this.rightPage&&this.rightPage.simpleDraw(1),null!=this.bottomPage&&this.bottomPage.draw(),this.drawBookShadow(),null!=this.flippingPage&&this.flippingPage.draw(),null!=this.shadow&&(this.drawOuterShadow(),this.drawInnerShadow());const t=this.getRect();\"portrait\"===this.orientation&&(this.ctx.beginPath(),this.ctx.rect(t.left+t.pageWidth,t.top,t.width,t.height),this.ctx.clip())}drawBookShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=t.width/20;this.ctx.rect(t.left,t.top,t.width,t.height);const i={x:t.left+t.width/2-e/2,y:0};this.ctx.translate(i.x,i.y);const s=this.ctx.createLinearGradient(0,0,e,0);s.addColorStop(0,\"rgba(0, 0, 0, 0)\"),s.addColorStop(.4,\"rgba(0, 0, 0, 0.2)\"),s.addColorStop(.49,\"rgba(0, 0, 0, 0.1)\"),s.addColorStop(.5,\"rgba(0, 0, 0, 0.5)\"),s.addColorStop(.51,\"rgba(0, 0, 0, 0.4)\"),s.addColorStop(1,\"rgba(0, 0, 0, 0)\"),this.ctx.clip(),this.ctx.fillStyle=s,this.ctx.fillRect(0,0,e,2*t.height),this.ctx.restore()}drawOuterShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(t.left,t.top,t.width,t.height);const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const i=this.ctx.createLinearGradient(0,0,this.shadow.width,0);0===this.shadow.direction?(this.ctx.translate(0,-100),i.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),i.addColorStop(1,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(-this.shadow.width,-100),i.addColorStop(0,\"rgba(0, 0, 0, 0)\"),i.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\")),this.ctx.clip(),this.ctx.fillStyle=i,this.ctx.fillRect(0,0,this.shadow.width,2*t.height),this.ctx.restore()}drawInnerShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(i.topLeft.x,i.topLeft.y),this.ctx.lineTo(i.topRight.x,i.topRight.y),this.ctx.lineTo(i.bottomRight.x,i.bottomRight.y),this.ctx.lineTo(i.bottomLeft.x,i.bottomLeft.y),this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const s=3*this.shadow.width/4,n=this.ctx.createLinearGradient(0,0,s,0);0===this.shadow.direction?(this.ctx.translate(-s,-100),n.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.9,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.7,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(0,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(0,-100),n.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.1,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.3,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(1,\"rgba(0, 0, 0, 0)\")),this.ctx.clip(),this.ctx.fillStyle=n,this.ctx.fillRect(0,0,s,2*t.height),this.ctx.restore()}clear(){this.ctx.fillStyle=\"white\",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class p{constructor(t,e,i){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=t=>{if(this.checkTarget(t.target)){const e=this.getMousePos(t.clientX,t.clientY);this.app.startUserTouch(e),t.preventDefault()}},this.onTouchStart=t=>{if(this.checkTarget(t.target)&&t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.touchPoint={point:i,time:Date.now()},setTimeout(()=>{null!==this.touchPoint&&this.app.startUserTouch(i)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||t.preventDefault()}},this.onMouseUp=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userStop(e)},this.onMouseMove=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userMove(e,!1)},this.onTouchMove=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.app.getSettings().mobileScrollSupport?(null!==this.touchPoint&&(Math.abs(this.touchPoint.point.x-i.x)>10||\"read\"!==this.app.getState())&&t.cancelable&&this.app.userMove(i,!0),\"read\"!==this.app.getState()&&t.preventDefault()):this.app.userMove(i,!0)}},this.onTouchEnd=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);let s=!1;if(null!==this.touchPoint){const t=i.x-this.touchPoint.point.x,e=Math.abs(i.y-this.touchPoint.point.y);Math.abs(t)>this.swipeDistance&&e<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(t>0?this.app.flipPrev(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"):this.app.flipNext(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"),s=!0),this.touchPoint=null}this.app.userStop(i,s)}},this.parentElement=t,t.classList.add(\"stf__parent\"),t.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__wrapper\"></div>'),this.wrapper=t.querySelector(\".stf__wrapper\"),this.app=e;const s=this.app.getSettings().usePortrait?1:2;t.style.minWidth=i.minWidth*s+\"px\",t.style.minHeight=i.minHeight+\"px\",\"fixed\"===i.size&&(t.style.minWidth=i.width*s+\"px\",t.style.minHeight=i.height+\"px\"),i.autoSize&&(t.style.width=\"100%\",t.style.maxWidth=2*i.maxWidth+\"px\"),t.style.display=\"block\",window.addEventListener(\"resize\",this.onResize,!1),this.swipeDistance=i.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(t){this.wrapper.classList.remove(\"--portrait\",\"--landscape\"),\"portrait\"===t?(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/this.app.getSettings().width*100+\"%\"),this.wrapper.classList.add(\"--portrait\")):(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/(2*this.app.getSettings().width)*100+\"%\"),this.wrapper.classList.add(\"--landscape\")),this.update()}removeHandlers(){window.removeEventListener(\"resize\",this.onResize),this.distElement.removeEventListener(\"mousedown\",this.onMouseDown),this.distElement.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"mouseup\",this.onMouseUp),window.removeEventListener(\"touchend\",this.onTouchEnd)}setHandlers(){window.addEventListener(\"resize\",this.onResize,!1),this.app.getSettings().useMouseEvents&&(this.distElement.addEventListener(\"mousedown\",this.onMouseDown),this.distElement.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"touchmove\",this.onTouchMove,{passive:!this.app.getSettings().mobileScrollSupport}),window.addEventListener(\"mouseup\",this.onMouseUp),window.addEventListener(\"touchend\",this.onTouchEnd))}getMousePos(t,e){const i=this.distElement.getBoundingClientRect();return{x:t-i.left,y:e-i.top}}checkTarget(t){return!this.app.getSettings().clickEventForward||![\"a\",\"button\"].includes(t.tagName.toLowerCase())}}class c extends p{constructor(t,e,i,s){super(t,e,i),this.wrapper.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__block\"></div>'),this.distElement=t.querySelector(\".stf__block\"),this.items=s;for(const t of s)this.distElement.appendChild(t);this.setHandlers()}clear(){for(const t of this.items)this.parentElement.appendChild(t)}updateItems(t){this.removeHandlers(),this.distElement.innerHTML=\"\";for(const e of t)this.distElement.appendChild(e);this.items=t,this.setHandlers()}update(){this.app.getRender().update()}}class u extends p{constructor(t,e,i){super(t,e,i),this.wrapper.innerHTML='<canvas class=\"stf__canvas\"></canvas>',this.canvas=t.querySelectorAll(\"canvas\")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const t=getComputedStyle(this.canvas),e=parseInt(t.getPropertyValue(\"width\"),10),i=parseInt(t.getPropertyValue(\"height\"),10);this.canvas.width=e,this.canvas.height=i}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class w extends l{constructor(t,e,i){super(t,e),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=i,this.createShadows()}createShadows(){this.element.insertAdjacentHTML(\"beforeend\",'<div class=\"stf__outerShadow\"></div>\\n <div class=\"stf__innerShadow\"></div>\\n <div class=\"stf__hardShadow\"></div>\\n <div class=\"stf__hardInnerShadow\"></div>'),this.outerShadow=this.element.querySelector(\".stf__outerShadow\"),this.innerShadow=this.element.querySelector(\".stf__innerShadow\"),this.hardShadow=this.element.querySelector(\".stf__hardShadow\"),this.hardInnerShadow=this.element.querySelector(\".stf__hardInnerShadow\")}clearShadow(){super.clearShadow(),this.outerShadow.style.cssText=\"display: none\",this.innerShadow.style.cssText=\"display: none\",this.hardShadow.style.cssText=\"display: none\",this.hardInnerShadow.style.cssText=\"display: none\"}reload(){this.element.querySelector(\".stf__outerShadow\")||this.createShadows()}drawHardInnerShadow(){const t=this.getRect(),e=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let i=(100-e)*(2.5*t.pageWidth)/100+20;i>t.pageWidth&&(i=t.pageWidth);let s=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+5).toString(10)};\\n width: ${i}px;\\n height: ${t.height}px;\\n background: linear-gradient(to right,\\n rgba(0, 0, 0, ${this.shadow.opacity*e/100}) 5%,\\n rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;s+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0);\":\"transform: translate3d(0, 0, 0) rotateY(180deg);\",this.hardInnerShadow.style.cssText=s}drawHardOuterShadow(){const t=this.getRect();let e=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*t.pageWidth)/100+20;e>t.pageWidth&&(e=t.pageWidth);let i=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+4).toString(10)};\\n width: ${e}px;\\n height: ${t.height}px;\\n background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;i+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0) rotateY(180deg);\":\"transform: translate3d(0, 0, 0);\",this.hardShadow.style.cssText=i}drawInnerShadow(){const t=this.getRect(),e=3*this.shadow.width/4,i=0===this.getDirection()?e:0,s=0===this.getDirection()?\"to left\":\"to right\",n=this.convertToGlobal(this.shadow.pos),r=this.shadow.angle+3*Math.PI/2,o=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let a=\"polygon( \";for(const t of o){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:i,y:100},r),a+=e.x+\"px \"+e.y+\"px, \"}a=a.slice(0,-2),a+=\")\";const g=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${e}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${s},\\n rgba(0, 0, 0, ${this.shadow.opacity}) 5%,\\n rgba(0, 0, 0, 0.05) 15%,\\n rgba(0, 0, 0, ${this.shadow.opacity}) 35%,\\n rgba(0, 0, 0, 0) 100%);\\n transform-origin: ${i}px 100px;\\n transform: translate3d(${n.x-i}px, ${n.y-100}px, 0) rotate(${r}rad);\\n clip-path: ${a};\\n -webkit-clip-path: ${a};\\n `;this.innerShadow.style.cssText=g}drawOuterShadow(){const t=this.getRect(),e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.shadow.angle+3*Math.PI/2,s=1===this.getDirection()?this.shadow.width:0,n=0===this.getDirection()?\"to right\":\"to left\",r=[{x:0,y:0},{x:t.pageWidth,y:0},{x:t.pageWidth,y:t.height},{x:0,y:t.height}];let o=\"polygon( \";for(const t of r)if(null!==t){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:s,y:100},i),o+=e.x+\"px \"+e.y+\"px, \"}o=o.slice(0,-2),o+=\")\";const a=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${this.shadow.width}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${n}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));\\n transform-origin: ${s}px 100px;\\n transform: translate3d(${e.x-s}px, ${e.y-100}px, 0) rotate(${i}rad);\\n clip-path: ${o};\\n -webkit-clip-path: ${o};\\n `;this.outerShadow.style.cssText=a}drawLeftPage(){\"portrait\"!==this.orientation&&null!==this.leftPage&&(1===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.leftPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.leftPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.leftPage.draw(this.flippingPage.getDrawingDensity())):this.leftPage.simpleDraw(0))}drawRightPage(){null!==this.rightPage&&(0===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.rightPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.rightPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.rightPage.draw(this.flippingPage.getDrawingDensity())):this.rightPage.simpleDraw(1))}drawBottomPage(){if(null===this.bottomPage)return;const t=null!=this.flippingPage?this.flippingPage.getDrawingDensity():null;\"portrait\"===this.orientation&&1===this.direction||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(t))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),null!=this.flippingPage&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),null!=this.shadow&&null!==this.flippingPage&&(\"soft\"===this.flippingPage.getDrawingDensity()?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const t of this.app.getPageCollection().getPages())t!==this.leftPage&&t!==this.rightPage&&t!==this.flippingPage&&t!==this.bottomPage&&(t.getElement().style.cssText=\"display: none\"),t.getTemporaryCopy()!==this.flippingPage&&t.hideTemporaryCopy()}update(){super.update(),null!==this.rightPage&&this.rightPage.setOrientation(1),null!==this.leftPage&&this.leftPage.setOrientation(0)}}class x{constructor(){this._default={startPage:0,size:\"fixed\",width:0,height:0,minWidth:0,maxWidth:0,minHeight:0,maxHeight:0,drawShadow:!0,flippingTime:1e3,usePortrait:!0,startZIndex:0,autoSize:!0,maxShadowOpacity:1,showCover:!1,mobileScrollSupport:!0,swipeDistance:30,clickEventForward:!0,useMouseEvents:!0,showPageCorners:!0,disableFlipByClick:!1}}getSettings(t){const e=this._default;if(Object.assign(e,t),\"stretch\"!==e.size&&\"fixed\"!==e.size)throw new Error('Invalid size type. Available only \"fixed\" and \"stretch\" value');if(e.width<=0||e.height<=0)throw new Error(\"Invalid width or height\");if(e.flippingTime<=0)throw new Error(\"Invalid flipping time\");return\"stretch\"===e.size?(e.minWidth<=0&&(e.minWidth=100),e.maxWidth<e.minWidth&&(e.maxWidth=2e3),e.minHeight<=0&&(e.minHeight=100),e.maxHeight<e.minHeight&&(e.maxHeight=2e3)):(e.minWidth=e.width,e.maxWidth=e.width,e.minHeight=e.height,e.maxHeight=e.height),e}}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}}(\".stf__parent {\\n position: relative;\\n display: block;\\n box-sizing: border-box;\\n transform: translateZ(0);\\n\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.sft__wrapper {\\n position: relative;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.stf__parent canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__block {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n perspective: 2000px;\\n}\\n\\n.stf__item {\\n display: none;\\n position: absolute;\\n transform-style: preserve-3d;\\n}\\n\\n.stf__outerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__innerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardInnerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\");t.PageFlip=class extends class{constructor(){this.events=new Map}on(t,e){return this.events.has(t)?this.events.get(t).push(e):this.events.set(t,[e]),this}off(t){this.events.delete(t)}trigger(t,e,i=null){if(this.events.has(t))for(const s of this.events.get(t))s({data:i,object:e})}}{constructor(t,e){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=(new x).getSettings(e),this.block=t}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(t){this.ui=new u(this.block,this,this.setting);const e=this.ui.getCanvas();this.render=new d(this,this.setting,e),this.flipController=new g(this.render,this),this.pages=new n(this,this.render,t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}loadFromHTML(t){this.ui=new c(this.block,this,this.setting,t),this.render=new w(this,this.setting,this.ui.getDistElement()),this.flipController=new g(this.render,this),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}updateFromImages(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new n(this,this.render,t),this.pages.load(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}updateFromHtml(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.ui.updateItems(t),this.render.reload(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(t){this.pages.show(t)}flipNext(t=\"top\"){this.flipController.flipNext(t)}flipPrev(t=\"top\"){this.flipController.flipPrev(t)}flip(t,e=\"top\"){this.flipController.flipToPage(t,e)}updateState(t){this.trigger(\"changeState\",this,t)}updatePageIndex(t){this.trigger(\"flip\",this,t)}updateOrientation(t){this.ui.setOrientationStyle(t),this.update(),this.trigger(\"changeOrientation\",this,t)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(t){return this.pages.getPage(t)}getRender(){return this.render}getFlipController(){return this.flipController}getOrientation(){return this.render.getOrientation()}getBoundsRect(){return this.render.getRect()}getSettings(){return this.setting}getUI(){return this.ui}getState(){return this.flipController.getState()}getPageCollection(){return this.pages}startUserTouch(t){this.mousePosition=t,this.isUserTouch=!0,this.isUserMove=!1}userMove(t,e){this.isUserTouch||e||!this.setting.showPageCorners?this.isUserTouch&&h.GetDistanceBetweenTwoPoint(this.mousePosition,t)>5&&(this.isUserMove=!0,this.flipController.fold(t)):this.flipController.showCorner(t)}userStop(t,e=!1){this.isUserTouch&&(this.isUserTouch=!1,e||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(t)))}},Object.defineProperty(t,\"__esModule\",{value:!0})}));\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { PageFlip } from 'page-flip';\nimport { effect } from '@preact/signals-core';\nimport { currentPage, orientation, flipState, pages, isSingleMode, soundEnabled, isAutoPlaying, autoPlayInterval } from '../state/store';\nimport type { FlipbookEngineOptions } from '../engine';\n\nexport class PageFlipAdapter {\n private pageFlip: any = null;\n private bookContainer: HTMLElement;\n private options: FlipbookEngineOptions;\n private unsubs: Array<() => void> = [];\n private audioEl: HTMLAudioElement | null = null;\n private isLibraryFlipping = false;\n private autoPlayTimer: any = null;\n\n constructor(bookContainer: HTMLElement, options: FlipbookEngineOptions) {\n this.bookContainer = bookContainer;\n this.options = options;\n if (options.soundUrl) {\n this.audioEl = new Audio(options.soundUrl);\n this.unlockAudio();\n }\n }\n\n private unlockAudio() {\n if (!this.audioEl) return;\n const unlock = () => {\n if (this.audioEl) {\n this.audioEl.play().then(() => {\n this.audioEl!.pause();\n this.audioEl!.currentTime = 0;\n }).catch(() => {});\n }\n document.removeEventListener('touchstart', unlock);\n document.removeEventListener('click', unlock);\n };\n document.addEventListener('touchstart', unlock, { once: true });\n document.addEventListener('click', unlock, { once: true });\n }\n\n public init(viewportWidth: number, viewportHeight: number) {\n this.pageFlip = new PageFlip(this.bookContainer, {\n width: viewportWidth,\n height: viewportHeight,\n size: \"stretch\" as any,\n minWidth: 100,\n maxWidth: 3000,\n minHeight: 100,\n maxHeight: 3000,\n drawShadow: true,\n showCover: true,\n usePortrait: true,\n mobileScrollSupport: false,\n maxShadowOpacity: this.options.maxShadowOpacity || 0.5,\n flippingTime: this.options.flippingTime || 1000\n });\n\n // Load the HTML pages from the DOM\n const pageElements = this.bookContainer.querySelectorAll('.bz-page');\n this.pageFlip.loadFromHTML(Array.from(pageElements));\n\n this.bindEvents();\n this.setupSignalSync();\n }\n\n private bindEvents() {\n // When the library flips a page, update our signal\n this.pageFlip.on('flip', (e: any) => {\n // Check if we are not just initializing\n if (currentPage.value !== e.data) {\n this.isLibraryFlipping = true;\n currentPage.value = e.data;\n this.playSound();\n this.isLibraryFlipping = false;\n }\n });\n\n // When the library changes state, update our signal\n this.pageFlip.on('changeState', (e: any) => {\n flipState.value = e.data;\n });\n\n // When the library changes orientation, update our signal\n this.pageFlip.on('changeOrientation', (e: any) => {\n if (orientation.value !== e.data) {\n orientation.value = e.data;\n }\n });\n }\n\n private setupSignalSync() {\n // When our signal changes, tell the library to flip (if needed)\n this.unsubs.push(\n effect(() => {\n const targetPage = currentPage.value;\n const state = flipState.peek();\n if (!this.pageFlip || this.isLibraryFlipping || state !== 'read') return;\n \n const libCurrentPage = this.pageFlip.getCurrentPageIndex();\n if (libCurrentPage !== targetPage && !isSingleMode.value) {\n const getSpreadIndex = (p: number) => p === 0 ? 0 : Math.ceil(p / 2);\n const targetSpread = getSpreadIndex(targetPage);\n const currentSpread = getSpreadIndex(libCurrentPage);\n \n if (targetSpread === currentSpread + 1) {\n this.pageFlip.flipNext();\n } else if (targetSpread === currentSpread - 1) {\n this.pageFlip.flipPrev();\n } else if (targetSpread !== currentSpread) {\n this.pageFlip.turnToPage(targetPage);\n }\n }\n })\n );\n\n // Watch for singleMode changes from DOMWise UI to trigger layout updates\n this.unsubs.push(\n effect(() => {\n isSingleMode.value;\n if (!this.pageFlip) return;\n \n // We use setTimeout to wait for LayoutManager to update the container dimensions first\n setTimeout(() => {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n window.dispatchEvent(new Event('resize'));\n }, 50);\n })\n );\n \n // AutoPlay loop\n this.unsubs.push(\n effect(() => {\n const playing = isAutoPlaying.value;\n const interval = autoPlayInterval.value || 3000;\n \n if (this.autoPlayTimer) {\n clearInterval(this.autoPlayTimer);\n this.autoPlayTimer = null;\n }\n \n if (playing) {\n this.autoPlayTimer = setInterval(() => {\n // Check if we are at the end\n const maxIndex = pages.value.length - 1;\n if (currentPage.peek() >= maxIndex || (currentPage.peek() >= maxIndex - 1 && !isSingleMode.peek())) {\n // If at end, pause or loop\n // Let's just pause\n isAutoPlaying.value = false;\n return;\n }\n this.turnToNextPage();\n }, interval);\n }\n })\n );\n }\n\n public turnToNextPage() {\n if (isSingleMode.value) {\n const nextIdx = currentPage.value + 1;\n if (nextIdx < pages.value.length) {\n currentPage.value = nextIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipNext();\n }\n }\n\n public turnToPrevPage() {\n if (isSingleMode.value) {\n const prevIdx = currentPage.value - 1;\n if (prevIdx >= 0) {\n currentPage.value = prevIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipPrev();\n }\n }\n\n public playSound() {\n if (soundEnabled.value && this.audioEl) {\n this.audioEl.currentTime = 0;\n this.audioEl.play().catch(err => console.warn('Flipbook Audio Play Error:', err));\n }\n }\n\n public update() {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n if (this.pageFlip) {\n this.pageFlip.destroy();\n this.pageFlip = null;\n }\n }\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { effect } from '@preact/signals-core';\nimport { isSingleMode, isDoublePageLayout, orientation } from '../state/store';\n\nexport class LayoutManager {\n private wrapperElement: HTMLElement | null = null;\n private sizerElement: HTMLElement | null = null;\n private pageViewport: { width: number; height: number };\n private resizeObserver: ResizeObserver | null = null;\n private orientationMediaQuery: MediaQueryList | null = null;\n private unsubs: Array<() => void> = [];\n public onResizeCallback?: () => void;\n\n constructor(pageViewport: { width: number; height: number }) {\n this.pageViewport = pageViewport;\n }\n\n public init(wrapperElement: HTMLElement, sizerElement: HTMLElement) {\n this.wrapperElement = wrapperElement;\n this.sizerElement = sizerElement;\n\n this.setupResizeObserver();\n this.setupOrientationMedia();\n this.setupStateSync();\n\n // Initial update\n this.updateBookAspectRatio();\n }\n\n private setupStateSync() {\n // When single mode or orientation changes, we need to recalculate the aspect ratio\n this.unsubs.push(\n effect(() => {\n // Accessing signals to track dependencies\n isSingleMode.value;\n orientation.value;\n \n // Debounce slightly to allow DOM to settle if classes were added\n setTimeout(() => this.updateBookAspectRatio(), 10);\n })\n );\n }\n\n private setupResizeObserver() {\n if (typeof ResizeObserver !== 'undefined' && this.wrapperElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateBookAspectRatio();\n });\n this.resizeObserver.observe(this.wrapperElement);\n }\n }\n\n private setupOrientationMedia() {\n if (typeof window !== 'undefined' && window.matchMedia) {\n this.orientationMediaQuery = window.matchMedia(\"(orientation: portrait)\");\n \n const handleOrientationChange = (e: MediaQueryListEvent | MediaQueryList) => {\n if (e.matches) {\n // Mobile device turned to portrait -> force single mode? \n // This can be decided by the business logic, for now we just recalculate\n }\n this.updateBookAspectRatio();\n };\n\n // Add listener\n if (this.orientationMediaQuery.addEventListener) {\n this.orientationMediaQuery.addEventListener('change', handleOrientationChange);\n } else {\n this.orientationMediaQuery.addListener(handleOrientationChange);\n }\n \n // Call once\n handleOrientationChange(this.orientationMediaQuery);\n }\n }\n\n public updateBookAspectRatio() {\n if (!this.wrapperElement || !this.sizerElement) return;\n\n const availWidth = this.wrapperElement.clientWidth;\n const availHeight = this.wrapperElement.clientHeight;\n\n if (availWidth === 0 || availHeight === 0) return;\n\n const width = this.pageViewport.width;\n const height = this.pageViewport.height;\n\n // Standard aspect ratio calculation\n const isPhysicalPortrait = availWidth < availHeight;\n \n // If the library is in landscape mode AND we are not in forced single mode, we need double width\n const isDouble = isDoublePageLayout.value;\n const targetRatio = isDouble ? (width * 2) / height : width / height;\n\n let bookWidth = availWidth;\n let bookHeight = availWidth / targetRatio;\n\n // We must fit the entire book on the screen to prevent unwanted vertical scrolling.\n if (bookHeight > availHeight) {\n bookHeight = availHeight;\n bookWidth = availHeight * targetRatio;\n }\n\n // Apply exact pixel sizes.\n // Ensure the width is ALWAYS an EVEN number to prevent sub-pixel rendering gaps.\n let finalWidth = Math.ceil(bookWidth);\n if (finalWidth % 2 !== 0) finalWidth += 1;\n\n this.sizerElement.style.width = `${finalWidth}px`;\n this.sizerElement.style.height = `${Math.floor(bookHeight)}px`;\n this.sizerElement.style.aspectRatio = '';\n\n if (this.onResizeCallback) {\n this.onResizeCallback();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n\n if (this.resizeObserver && this.wrapperElement) {\n this.resizeObserver.unobserve(this.wrapperElement);\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.orientationMediaQuery) {\n // Remove listeners (safely ignoring for brevity)\n this.orientationMediaQuery = null;\n }\n }\n}\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n * \n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n * \n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n * \n * 2. Commercial License: If you wish to use this software in commercial, \n * closed-source, or SaaS products without the AGPLv3 obligations, \n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport { effect } from '@preact/signals-core';\nimport { zoomState, isZoomed, isSingleMode, currentPage, totalPages } from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\n\nexport class InteractionManager {\n private container: HTMLElement;\n private pageFlipAdapter: PageFlipAdapter;\n private touchStartX: number | null = null;\n private unsubs: Array<() => void> = [];\n\n constructor(container: HTMLElement, pageFlipAdapter: PageFlipAdapter) {\n this.container = container;\n this.pageFlipAdapter = pageFlipAdapter;\n }\n\n public init() {\n this.bindWheel();\n this.bindMouseDrag();\n this.bindTouch();\n this.setupStateSync();\n }\n\n private setupStateSync() {\n this.unsubs.push(\n effect(() => {\n isZoomed.value = zoomState.value.isActive;\n \n if (zoomState.value.isActive) {\n this.container.style.transform = `translate(${zoomState.value.translateX}px, ${zoomState.value.translateY}px) scale(${zoomState.value.scale})`;\n this.container.style.transition = 'none';\n } else {\n this.container.style.transform = '';\n this.container.style.transition = 'transform 0.3s ease';\n }\n })\n );\n }\n\n private bindWheel() {\n this.container.addEventListener('wheel', (e) => {\n if (zoomState.value.isActive) {\n e.preventDefault();\n this.updateZoomPan(\n zoomState.value.translateX - e.deltaX,\n zoomState.value.translateY - e.deltaY\n );\n }\n }, { passive: false });\n }\n\n private bindMouseDrag() {\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialTx = 0;\n let initialTy = 0;\n\n this.container.addEventListener('mousedown', (e) => {\n if (zoomState.value.isActive) {\n isDragging = true;\n startX = e.clientX;\n startY = e.clientY;\n initialTx = zoomState.value.translateX;\n initialTy = zoomState.value.translateY;\n this.container.style.cursor = 'grabbing';\n }\n });\n\n window.addEventListener('mousemove', (e) => {\n if (!isDragging || !zoomState.value.isActive) return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n this.updateZoomPan(initialTx + dx, initialTy + dy);\n });\n\n window.addEventListener('mouseup', () => {\n if (isDragging) {\n isDragging = false;\n this.container.style.cursor = zoomState.value.isActive ? 'grab' : '';\n }\n });\n }\n\n private bindTouch() {\n let isDragging = false;\n let startTx = 0;\n let startTy = 0;\n\n this.container.addEventListener('touchstart', (e) => {\n if (e.touches.length === 1) {\n if (!zoomState.value.isActive) {\n this.touchStartX = e.touches[0].clientX;\n } else {\n isDragging = true;\n this.touchStartX = e.touches[0].clientX;\n const touchStartY = e.touches[0].clientY;\n startTx = zoomState.value.translateX;\n startTy = zoomState.value.translateY;\n (this.container as any)._touchStartY = touchStartY;\n }\n }\n }, { passive: true });\n\n this.container.addEventListener('touchmove', (e) => {\n if (isDragging && zoomState.value.isActive && e.touches.length === 1 && this.touchStartX !== null) {\n e.preventDefault();\n const dx = e.touches[0].clientX - this.touchStartX;\n const dy = e.touches[0].clientY - (this.container as any)._touchStartY;\n this.updateZoomPan(startTx + dx, startTy + dy);\n }\n }, { passive: false });\n\n this.container.addEventListener('touchend', (e) => {\n if (this.touchStartX !== null && !zoomState.value.isActive && isSingleMode.value && e.changedTouches.length === 1) {\n const diffX = e.changedTouches[0].clientX - this.touchStartX;\n if (diffX > 50 && currentPage.value > 0) {\n this.pageFlipAdapter.turnToPrevPage();\n } else if (diffX < -50 && currentPage.value < totalPages.value - 1) {\n this.pageFlipAdapter.turnToNextPage();\n }\n }\n this.touchStartX = null;\n isDragging = false;\n }, { passive: true });\n }\n\n public zoomIn() {\n let newScale = zoomState.value.scale + 0.5;\n if (newScale > 3) newScale = 3;\n \n zoomState.value = { \n ...zoomState.value, \n isActive: newScale > 1, \n scale: newScale \n };\n if (newScale > 1) {\n this.container.style.cursor = 'grab';\n }\n }\n\n public zoomOut() {\n let newScale = zoomState.value.scale - 0.5;\n if (newScale <= 1) {\n newScale = 1;\n zoomState.value = { ...zoomState.value, isActive: false, translateX: 0, translateY: 0, scale: 1 };\n this.container.style.cursor = '';\n } else {\n zoomState.value = { ...zoomState.value, isActive: true, scale: newScale };\n }\n }\n\n private updateZoomPan(x: number, y: number) {\n zoomState.value = {\n ...zoomState.value,\n translateX: x,\n translateY: y\n };\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n }\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookPageKind = 'single' | 'spread' | 'cover';\nexport type FlipbookCropMode = 'full' | 'left' | 'right';\nexport type FlipbookSplitDirection = 'ltr' | 'rtl';\n\nexport interface FlipbookPageAsset {\n id?: string;\n pageNumber?: number;\n pageNumbers?: number[];\n kind?: FlipbookPageKind;\n splitDirection?: FlipbookSplitDirection;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface NormalizedFlipbookPage {\n index: number;\n assetId: string;\n pageNumber: number;\n cropMode: FlipbookCropMode;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport function isFlipbookPageAsset(value: unknown): value is FlipbookPageAsset {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as FlipbookPageAsset;\n return typeof candidate.normal === 'string'\n && typeof candidate.low === 'string'\n && typeof candidate.thumb === 'string';\n}\n\nfunction getAssetPageNumbers(asset: FlipbookPageAsset): number[] {\n if (Array.isArray(asset.pageNumbers) && asset.pageNumbers.length > 0) {\n return asset.pageNumbers;\n }\n\n if (typeof asset.pageNumber === 'number') {\n if (asset.kind === 'spread') return [asset.pageNumber, asset.pageNumber + 1];\n return [asset.pageNumber];\n }\n\n return [];\n}\n\nfunction getSpreadCropModes(splitDirection: FlipbookSplitDirection): FlipbookCropMode[] {\n return splitDirection === 'rtl' ? ['right', 'left'] : ['left', 'right'];\n}\n\nexport function normalizeFlipbookPages(assets: FlipbookPageAsset[]): NormalizedFlipbookPage[] {\n const normalized: NormalizedFlipbookPage[] = [];\n let fallbackPageNumber = 1;\n\n assets.forEach((asset, assetIndex) => {\n const kind = asset.kind ?? 'single';\n const assetId = asset.id ?? `asset-${assetIndex}`;\n const splitDirection = asset.splitDirection ?? 'ltr';\n const pageNumbers = getAssetPageNumbers(asset);\n\n if (kind === 'spread') {\n const spreadNumbers = pageNumbers.length >= 2 ? pageNumbers.slice(0, 2) : [fallbackPageNumber, fallbackPageNumber + 1];\n const cropModes = getSpreadCropModes(splitDirection);\n\n spreadNumbers.forEach((pageNumber, spreadIndex) => {\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: cropModes[spreadIndex] ?? 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n });\n\n fallbackPageNumber = spreadNumbers[spreadNumbers.length - 1] + 1;\n return;\n }\n\n const pageNumber = pageNumbers[0] ?? fallbackPageNumber;\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n fallbackPageNumber = pageNumber + 1;\n });\n\n return normalized;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookThemeMode = 'auto' | 'light' | 'dark';\n\nexport interface ThemeConfiguration {\n theme?: FlipbookThemeMode;\n primaryColor?: string;\n cssVariables?: Record<string, string>;\n}\n\nexport function applyThemeConfiguration(container: HTMLElement, config: ThemeConfiguration) {\n container.classList.add('bk-container');\n container.classList.remove('bk-theme-light', 'bk-theme-dark');\n\n if (config.theme === 'light') container.classList.add('bk-theme-light');\n if (config.theme === 'dark') container.classList.add('bk-theme-dark');\n\n if (config.primaryColor) {\n container.style.setProperty('--accentcolor', config.primaryColor);\n }\n\n const userVariables = config.cssVariables ?? {};\n Object.entries(userVariables).forEach(([name, value]) => {\n const variableName = name.startsWith('--') ? name : `--${name}`;\n container.style.setProperty(variableName, value);\n });\n}\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.4.530\n * pdfjsBuild = 50cc4adac\n */\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstElementChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n set bbox(bbox) {\n shadow(this, \"bbox\", bbox);\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj-bin-transform.js\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass PatternInfo {\n static #KIND = 0;\n static #HAS_BBOX = 1;\n static #HAS_BACKGROUND = 2;\n static #SHADING_TYPE = 3;\n static #N_COORD = 4;\n static #N_COLOR = 8;\n static #N_STOP = 12;\n static #N_FIGURES = 16;\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n static write(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n figures = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n figures = ir[4] || [];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 3);\n const nStop = colorStops.length;\n const nFigures = figures.length;\n let figuresSize = 0;\n for (const figure of figures) {\n figuresSize += 1;\n figuresSize = Math.ceil(figuresSize / 4) * 4;\n figuresSize += 4 + figure.coords.length * 4;\n figuresSize += 4 + figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n figuresSize += 4;\n }\n }\n const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize;\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PatternInfo.#KIND, kind);\n dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType);\n dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 3;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n offset += 3;\n }\n for (let i = 0; i < figures.length; i++) {\n const figure = figures[i];\n dataView.setUint8(offset, figure.type);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n dataView.setUint32(offset, figure.coords.length, true);\n offset += 4;\n const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length);\n figureCoordsView.set(figure.coords);\n offset += figure.coords.length * 4;\n dataView.setUint32(offset, figure.colors.length, true);\n offset += 4;\n const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n colorsView.set(figure.colors);\n offset += figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n dataView.setUint32(offset, figure.verticesPerRow, true);\n offset += 4;\n }\n }\n return buffer;\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PatternInfo.#KIND];\n const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n offset += nColor * 3;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n const figures = [];\n for (let i = 0; i < nFigures; ++i) {\n const type = dataView.getUint8(offset);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n const coordsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n offset += coordsLength * 4;\n const colorsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n offset += colorsLength * 4;\n const figure = {\n type,\n coords: figureCoords,\n colors: figureColors\n };\n if (type === MeshFigureType.LATTICE) {\n figure.verticesPerRow = dataView.getUint32(offset, true);\n offset += 4;\n }\n figures.push(figure);\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n let minX = coords[0],\n maxX = coords[0];\n let minY = coords[1],\n maxY = coords[1];\n for (let i = 0; i < coords.length; i += 2) {\n const x = coords[i],\n y = coords[i + 1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n bounds = [minX, minY, maxX, maxY];\n }\n return [\"Mesh\", shadingType, coords, colors, figures, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n static write(path) {\n let data;\n let buffer;\n if (util_FeatureTest.isFloat16ArraySupported) {\n buffer = new ArrayBuffer(path.length * 2);\n data = new Float16Array(buffer);\n } else {\n buffer = new ArrayBuffer(path.length * 4);\n data = new Float32Array(buffer);\n }\n data.set(path);\n return buffer;\n }\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (util_FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case MeshFigureType.LATTICE:\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case MeshFigureType.TRIANGLES:\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n if (needsStroke) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.530\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n extractPages(pageInfos) {\n return this._transport.extractPages(pageInfos);\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, enableHWA) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n extractPages(pageInfos) {\n return this.messageHandler.sendWithPromise(\"ExtractPages\", {\n pageInfos\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n hasStructTree: results[2]\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.4.530\";\nconst build = \"50cc4adac\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n color\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = color || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (data.overlaidText) {\n link.title = data.overlaidText;\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n if (this.#commentManager) {\n return false;\n }\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n id\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n for (const element of this.#elements) {\n this.#accessibilityManager.addPointerInTextLayer(element.contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #firstPoint = null;\n #lastPoint = null;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n get commentButtonPosition() {\n return this.#firstPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims();\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims();\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._currentParent.endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (!CurrentPointers.isSamePointerId(pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstElementChild;\n const pathElement = defs.firstElementChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","import * as pdfjsLib from 'pdfjs-dist';\nimport type { NormalizedFlipbookPage } from '../model/pages';\n\n// @ts-ignore\nconst pdfWorkerUrl = new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url).href;\npdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorkerUrl;\n\nexport interface PdfRenderOptions {\n scale?: number;\n quality?: number;\n format?: string;\n}\n\nexport class PdfRenderer {\n private pdfDoc: any = null;\n private options: Required<PdfRenderOptions>;\n\n constructor(options: PdfRenderOptions = {}) {\n this.options = {\n scale: options.scale || 1.5,\n quality: options.quality || 0.85,\n format: options.format || 'image/webp'\n };\n }\n\n /**\n * Loads the PDF document from the given URL.\n */\n public async loadDocument(pdfUrl: string): Promise<number> {\n const loadingTask = pdfjsLib.getDocument(pdfUrl);\n this.pdfDoc = await loadingTask.promise;\n return this.pdfDoc.numPages;\n }\n\n /**\n * Renders a specific page to a Data URL.\n * @param pageIndex 1-based page index\n */\n public async renderPageToDataUrl(pageIndex: number): Promise<string> {\n if (!this.pdfDoc) throw new Error(\"PDF document is not loaded.\");\n \n try {\n const page = await this.pdfDoc.getPage(pageIndex);\n const vp = page.getViewport({ scale: this.options.scale });\n const canvas = document.createElement('canvas');\n canvas.width = vp.width;\n canvas.height = vp.height;\n const ctx = canvas.getContext('2d');\n \n if (ctx) {\n await page.render({ canvasContext: ctx, viewport: vp }).promise;\n return canvas.toDataURL(this.options.format, this.options.quality);\n }\n } catch (err) {\n console.error(`PDF page ${pageIndex} render error:`, err);\n }\n \n return '';\n }\n\n /**\n * Calculates the best viewport dimensions based on the first page.\n * Used for determining the overall flipbook dimensions.\n */\n public async calculateViewportDimensions(baseShortSide: number = 420): Promise<{ width: number, height: number }> {\n if (!this.pdfDoc) throw new Error(\"PDF document is not loaded.\");\n \n const firstPage = await this.pdfDoc.getPage(1);\n const vp = firstPage.getViewport({ scale: 1.0 });\n const aspectRatio = vp.width / vp.height;\n\n return aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n\n /**\n * Renders all pages sequentially and returns an array of NormalizedFlipbookPage.\n */\n public async renderAllPages(): Promise<NormalizedFlipbookPage[]> {\n if (!this.pdfDoc) return [];\n \n const resolvedPages: NormalizedFlipbookPage[] = [];\n \n for (let i = 1; i <= this.pdfDoc.numPages; i++) {\n const normalSrc = await this.renderPageToDataUrl(i);\n \n resolvedPages.push({\n index: i - 1,\n assetId: `pdf-page-${i}`,\n pageNumber: i,\n cropMode: 'full',\n normal: normalSrc,\n low: normalSrc,\n thumb: normalSrc\n });\n }\n \n return resolvedPages;\n }\n\n public destroy() {\n if (this.pdfDoc) {\n this.pdfDoc.destroy();\n this.pdfDoc = null;\n }\n }\n}\n","/**\r\n * @license FlipbookEngine v0.2.4\r\n * Copyright (c) 2026 Murat Dogan\r\n * \r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n * \r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n * \r\n * 2. Commercial License: If you wish to use this software in commercial, \r\n * closed-source, or SaaS products without the AGPLv3 obligations, \r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\nimport * as pdfjsLib from 'pdfjs-dist';\r\nimport { App } from './components/App';\r\nimport { PageFlipAdapter } from './adapters/PageFlipAdapter';\r\nimport { LayoutManager } from './core/LayoutManager';\r\nimport { InteractionManager } from './core/InteractionManager';\r\nimport { \r\n initStore, \r\n currentPage,\r\n totalPages,\r\n isZoomed,\r\n isSingleMode, \r\n zoomState,\r\n themeMode,\r\n primaryColor,\r\n showThumbs,\r\n allowDownload,\r\n whiteLabel,\r\n soundEnabled,\r\n isAutoPlaying,\r\n autoPlayInterval\r\n} from './state/store';\r\nimport { isFlipbookPageAsset, normalizeFlipbookPages, type FlipbookPageAsset, type NormalizedFlipbookPage } from './model/pages';\r\nimport { applyThemeConfiguration, type FlipbookThemeMode } from './theme/theme';\r\nimport { resolveMessages, type FlipbookLocale, type PartialFlipbookMessages } from './i18n/service';\r\nimport { PdfRenderer } from './core/PdfRenderer';\r\nimport './styles/flipbook-engine.css';\r\n\r\nexport interface FlipbookEngineOptions {\r\n allowDownload?: boolean;\r\n showThumbs?: boolean;\r\n showArrows?: boolean;\r\n primaryColor?: string;\r\n soundEnabled?: boolean;\r\n soundUrl?: string;\r\n flippingTime?: number;\r\n maxShadowOpacity?: number;\r\n backgroundColor?: string;\r\n backgroundImage?: string;\r\n whiteLabel?: boolean;\r\n watermarkUrl?: string;\r\n theme?: FlipbookThemeMode;\r\n locale?: FlipbookLocale | string;\r\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\r\n className?: string;\r\n cssVariables?: Record<string, string>;\r\n onDownload?: (url: string) => void;\r\n singleMode?: boolean;\r\n isSingleMode?: boolean;\r\n autoPlay?: boolean;\r\n autoPlayInterval?: number;\r\n pdfRenderScale?: number;\r\n pdfRenderQuality?: number;\r\n pdfRenderFormat?: string;\r\n}\r\n\r\nexport interface PageImages extends FlipbookPageAsset {\r\n pageNumber: number;\r\n normal: string;\r\n low: string;\r\n thumb: string;\r\n}\r\n\r\nexport interface FlipbookEngineEventMap {\r\n init: { totalPages: number };\r\n destroy: undefined;\r\n pageChange: { currentPage: number; pageNumber: number; totalPages: number; isSingle: boolean };\r\n zoomChange: { zoom: number; isActive: boolean };\r\n thumbsToggle: { showThumbs: boolean };\r\n singlePageModeChange: { isSingle: boolean };\r\n orientationChange: { orientation: 'landscape' | 'portrait' };\r\n}\r\n\r\nexport type FlipbookEngineEventName = keyof FlipbookEngineEventMap;\r\ntype FlipbookEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;\r\ntype AnyFlipbookEventHandler = (payload: FlipbookEngineEventMap[FlipbookEngineEventName]) => void;\r\n\r\nexport class FlipbookEngine {\r\n private static readonly DEFAULT_PAGE_VIEWPORT = { width: 420, height: 594 };\r\n private container: HTMLElement | null = null;\r\n private options: FlipbookEngineOptions;\r\n \r\n // Core Managers\r\n private pageFlipAdapter: PageFlipAdapter | null = null;\r\n private layoutManager: LayoutManager | null = null;\r\n private interactionManager: InteractionManager | null = null;\r\n \r\n private pdfRenderer: PdfRenderer | null = null;\r\n private listeners: Partial<Record<FlipbookEngineEventName, Set<AnyFlipbookEventHandler>>> = {};\r\n\r\n constructor(private selector: string | HTMLElement, options: FlipbookEngineOptions = {}) {\r\n this.options = { \r\n allowDownload: true, \r\n showThumbs: true, \r\n primaryColor: '#7367f0', \r\n theme: 'auto', \r\n soundUrl: 'https://flipbookengine.com/Content/page-flip.mp3',\r\n autoPlayInterval: 3000,\r\n pdfRenderScale: 1.5,\r\n pdfRenderQuality: 0.85,\r\n pdfRenderFormat: 'image/webp',\r\n ...options \r\n };\r\n }\r\n\r\n public async init(pdfUrl: string, imageList?: Array<PageImages | FlipbookPageAsset>) {\r\n if (typeof this.selector === 'string') {\r\n this.container = document.querySelector(this.selector) as HTMLElement;\r\n } else {\r\n this.container = this.selector;\r\n }\r\n\r\n if (!this.container) return;\r\n\r\n this.destroy(true);\r\n\r\n let resolvedPages: NormalizedFlipbookPage[] = [];\r\n let viewport = { ...FlipbookEngine.DEFAULT_PAGE_VIEWPORT };\r\n\r\n if (imageList && imageList.length > 0) {\r\n const sourceAssets = imageList.filter(isFlipbookPageAsset);\r\n resolvedPages = normalizeFlipbookPages(sourceAssets);\r\n \r\n // Resolve aspect ratio from first page\r\n const referencePage = resolvedPages[0];\r\n if (referencePage) {\r\n const size = await this.loadImageSize(referencePage.low || referencePage.normal);\r\n if (size) {\r\n const actualWidth = referencePage.cropMode !== 'full' ? size.width / 2 : size.width;\r\n const aspectRatio = actualWidth / size.height;\r\n const baseShortSide = 420;\r\n viewport = aspectRatio >= 1\r\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\r\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\r\n }\r\n }\r\n } else if (pdfUrl) {\r\n try {\r\n this.pdfRenderer = new PdfRenderer({\r\n scale: this.options.pdfRenderScale,\r\n quality: this.options.pdfRenderQuality,\r\n format: this.options.pdfRenderFormat\r\n });\r\n \r\n await this.pdfRenderer.loadDocument(pdfUrl);\r\n resolvedPages = await this.pdfRenderer.renderAllPages();\r\n viewport = await this.pdfRenderer.calculateViewportDimensions();\r\n } catch (e) {\r\n console.error(\"PDF load failed:\", e);\r\n return;\r\n }\r\n }\r\n\r\n if (!resolvedPages.length) return;\r\n\r\n // 1. Initialize State\r\n initStore(this.options, resolvedPages.length, resolvedPages, !!pdfUrl);\r\n\r\n // 2. Setup DOM container\r\n applyThemeConfiguration(this.container, this.options);\r\n this.container.innerHTML = '';\r\n\r\n // 3. Mount App Component\r\n // In DOMWise, TSX returns actual DOM nodes\r\n let bookWrapperEl: HTMLElement;\r\n let bookSizerEl: HTMLElement;\r\n let bookContainerEl: HTMLElement;\r\n \r\n const pageFlipAdapterRef = { current: null as any };\r\n const interactionManagerRef = { current: null as any };\r\n\r\n // Pass refs to capture DOM elements created by DOMWise\r\n const appNode = App({\r\n pageFlipAdapterRef,\r\n interactionManagerRef,\r\n bookWrapperRef: (el) => bookWrapperEl = el,\r\n bookSizerRef: (el) => bookSizerEl = el,\r\n bookContainerRef: (el) => bookContainerEl = el,\r\n className: this.options.className,\r\n onDownload: () => {\r\n if (this.options.onDownload) this.options.onDownload(pdfUrl);\r\n else window.open(pdfUrl, '_blank');\r\n }\r\n });\r\n\r\n this.container.appendChild(appNode as unknown as Node);\r\n\r\n // 4. Initialize Core Managers\r\n this.layoutManager = new LayoutManager(viewport);\r\n this.layoutManager.onResizeCallback = () => {\r\n if (this.pageFlipAdapter) {\r\n this.pageFlipAdapter.update();\r\n }\r\n };\r\n this.layoutManager.init(bookWrapperEl!, bookSizerEl!);\r\n\r\n this.pageFlipAdapter = new PageFlipAdapter(bookContainerEl!, this.options);\r\n pageFlipAdapterRef.current = this.pageFlipAdapter;\r\n \r\n // Wait a tick for styles to apply before initializing PageFlip\r\n setTimeout(() => {\r\n this.pageFlipAdapter!.init(viewport.width, viewport.height);\r\n \r\n this.interactionManager = new InteractionManager(bookWrapperEl!, this.pageFlipAdapter!);\r\n this.interactionManager.init();\r\n interactionManagerRef.current = this.interactionManager;\r\n\r\n this.emit('init', { totalPages: resolvedPages.length });\r\n }, 10);\r\n }\r\n\r\n private loadImageSize(src: string): Promise<{ width: number; height: number } | null> {\r\n return new Promise(resolve => {\r\n const image = new Image();\r\n image.onload = () => resolve({ width: image.naturalWidth || image.width, height: image.naturalHeight || image.height });\r\n image.onerror = () => resolve(null);\r\n image.src = src;\r\n });\r\n }\r\n\r\n public goToPage(targetIdx: number) {\r\n currentPage.value = targetIdx;\r\n }\r\n\r\n public getTotalPages(): number {\r\n return totalPages.value;\r\n }\r\n\r\n public getCurrentPage(): number {\r\n return currentPage.value;\r\n }\r\n\r\n public getZoom(): number {\r\n return zoomState.value.scale;\r\n }\r\n\r\n public setZoom(zoomLevel: number) {\r\n const scale = Math.max(0.5, Math.min(5, zoomLevel));\r\n zoomState.value = { ...zoomState.value, scale };\r\n isZoomed.value = scale > 1;\r\n }\r\n\r\n public nextPage() {\r\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToNextPage();\r\n }\r\n\r\n public prevPage() {\r\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToPrevPage();\r\n }\r\n\r\n public setSingleMode(isSingle: boolean) {\r\n isSingleMode.value = isSingle;\r\n }\r\n\r\n public updateOptions(options: Partial<FlipbookEngineOptions>) {\r\n this.options = { ...this.options, ...options };\r\n if (options.theme !== undefined) themeMode.value = options.theme;\r\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\r\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\r\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\r\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\r\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\r\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\r\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\r\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\r\n\r\n if (this.container) {\r\n applyThemeConfiguration(this.container, this.options);\r\n }\r\n }\r\n\r\n public setPages(imageList: Array<PageImages | FlipbookPageAsset>, pdfUrl?: string) {\r\n // Just recall init, for simplicity in this facade\r\n this.init(pdfUrl || '', imageList);\r\n }\r\n\r\n public destroy(keepContainer = false) {\r\n if (this.pageFlipAdapter) {\r\n this.pageFlipAdapter.destroy();\r\n }\r\n if (this.layoutManager) {\r\n this.layoutManager.destroy();\r\n }\r\n if (this.interactionManager) {\r\n this.interactionManager.destroy();\r\n }\r\n if (this.pdfRenderer) {\r\n this.pdfRenderer.destroy();\r\n }\r\n \r\n this.pageFlipAdapter = null;\r\n this.layoutManager = null;\r\n this.interactionManager = null;\r\n this.pdfRenderer = null;\r\n\r\n if (!keepContainer && this.container) {\r\n this.container.innerHTML = '';\r\n }\r\n\r\n this.emit('destroy', undefined);\r\n }\r\n\r\n public on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\r\n const listeners = this.listeners[eventName] ?? new Set<AnyFlipbookEventHandler>();\r\n listeners.add(handler as AnyFlipbookEventHandler);\r\n this.listeners[eventName] = listeners;\r\n return () => this.off(eventName, handler);\r\n }\r\n\r\n public off<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\r\n this.listeners[eventName]?.delete(handler as AnyFlipbookEventHandler);\r\n }\r\n\r\n private emit<T extends FlipbookEngineEventName>(eventName: T, payload: FlipbookEngineEventMap[T]) {\r\n this.listeners[eventName]?.forEach((listener) => {\r\n (listener as FlipbookEventHandler<T>)(payload);\r\n });\r\n }\r\n}\r\n\r\nconst globalScope = globalThis as any;\r\nconst flipbookNamespace = globalScope.FlipbookEngine || {};\r\nflipbookNamespace.FlipbookEngine = FlipbookEngine;\r\nglobalScope.FlipbookEngine = flipbookNamespace;\r\n"],"names":["initPropHookSymbol","isElement","val","isString","isNumber","isObject","isComponentClass","isArrayLike","isPropHook","value","isVisibleChild","className","k","isRefObject","maybeRef","setRef","ref","current","initComponentClass","Class","attr","children","instance","node","MathMLNamespace","mathMLOnlyTags","svgOnlyTags","nonPresentationSVGAttributes","SVGNamespace","jsxNamespaceURISymbol","currentNamespaceURI","jsxTypeKeySymbol","shadowRootKey","isShadowRoot","el","disposingListenersSymbol","lifecycleRootSymbol","getDisposingListeners","disposingEventListener","ev","invokeDisposingListeners","opt","disposingListeners","invokeFor","listeners","disposer","addDisposingListener","target","handler","regKey","existing","x2","removeDisposingListener","index","listener","currentLifecycleRoot","args","prev","isSignalLike","obj","_dispose","_node","_SignalObserveArgsImpl_instances","delDispose_fn","addDispose_fn","_a","SignalObserveArgsImpl","signal2","lifecycleRoot","lifecycleNode","__privateAdd","__privateSet","__privateGet","__privateMethod","observeSignal","callback","appendChild","parent","child","fragmentPlaceholderIdx","placeholderPrefix","isPlaceholder","isFragmentWithPlaceholder","replaceNode","oldNode","newNode","wrapAsNode","appendChildrenWithSignal","prevNode","prevNodeNew2","appendChildren","n2","prevNodeNew","shadowRoot","unsignalizePrevClass","item","key","clearPrevClass","prevClassNames","cls","assignClass","applyClassName","newList","prevList","prefixKey","prefix","isUnitlessNumber","rec","prefixes","prop","setStylePropValue","clearPrevStyle","assignStyle","XLinkNamespace","XMLNamespace","normalizeAttribute","s2","separator","match","mappedKeys","assignProp","v2","dataKey","dataValue","useCapture","eventName","eventHandler","attribute","nodeEventPropDisposer","assignProps","props","jsx","tag","ns","values","option","i","t","s","i2","t2","i3","c","h","v","r2","w","n3","r","o","e","d","a","l","j","o2","_","b","p","S","m","x","E","n","y","g","currentPage","signal","totalPages","isSingleMode","showThumbs","showArrows","orientation","flipState","themeMode","allowDownload","hasDownloadUrl","primaryColor","whiteLabel","isZoomed","isAutoPlaying","autoPlayInterval","soundEnabled","zoomState","pages","isDoublePageLayout","computed","isFrontCover","isBackCover","initStore","options","total","mappedPages","hasPdfUrl","enMessages","trMessages","builtInMessages","resolveMessages","config","locale","builtIn","custom","Toolbar","messages","jsxs","left","Thumbnails","page","isActive","Viewer","classes","isHard","NavigationArrows","isLeftVisible","isRightVisible","App","handleToggleThumbs","handleToggleSingleMode","handleToggleAutoPlay","handleZoomIn","handleZoomOut","handleToggleFullscreen","err","handleThumbClick","handleNextPage","handlePrevPage","exports","this","u","PageFlipAdapter","bookContainer","__publicField","unlock","viewportWidth","viewportHeight","PageFlip","pageElements","effect","targetPage","state","libCurrentPage","getSpreadIndex","targetSpread","currentSpread","playing","interval","maxIndex","nextIdx","prevIdx","unsub","LayoutManager","pageViewport","wrapperElement","sizerElement","handleOrientationChange","availWidth","availHeight","width","height","targetRatio","bookWidth","bookHeight","finalWidth","InteractionManager","container","pageFlipAdapter","isDragging","startX","startY","initialTx","initialTy","dx","dy","startTx","startTy","touchStartY","diffX","newScale","isFlipbookPageAsset","candidate","getAssetPageNumbers","asset","getSpreadCropModes","splitDirection","normalizeFlipbookPages","assets","normalized","fallbackPageNumber","assetIndex","kind","assetId","pageNumbers","spreadNumbers","cropModes","pageNumber","spreadIndex","applyThemeConfiguration","userVariables","name","variableName","isNodeJS","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","AnnotationEditorPrefix","AnnotationEditorType","AnnotationEditorParamsType","PermissionFlag","MeshFigureType","TextRenderingMode","util_ImageKind","AnnotationType","AnnotationBorderStyleType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","dots","stringToUTF8String","absoluteUrl","updateUrlHash","hash","allowRel","res","shadow","nonSerializable","BaseException","message","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","str","string32","isLittleEndian","buffer8","isEvalSupported","util_FeatureTest","platform","userAgent","_b","hexNumbers","_Util_static","getExtremumOnCurve_fn","getExtremum_fn","Util","dm","transform","minMax","temp","m1","m2","md","pos","p0","p1","m0","m3","m4","m5","pI","pI1","rect","output","r0","r1","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","y2","x3","y3","mt","tt","ttt","delta","sqrtDelta","NormalizeRegex","NormalizationMap","normalizeUnicode","p2","getUuid","buf","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","zoom","argsLen","allowNull","arg","MathClamp","min","max","toBase64Util","arr","fromBase64Util","fn","resolve","numbers","XfaText","xfa","items","walk","XfaLayer","html","id","element","storage","intent","storedData","event","linkService","attributes","isHTMLAnchorElement","parameters","root","rootHtml","isNotForRichText","rootDiv","textDivs","stack","childHtml","SVG_NS","_PixelsPerInch","PixelsPerInch","fetchData","type","isValidFetchUrl","response","reject","request","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","dims","topLeft","bottomRight","RenderingCancelledException","extraDelay","isDataScheme","ii","isPdfFile","filename","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","decode","decoded","pdfRegex","keys","hashFilename","StatTimer","outBuf","longest","start","end","noContextMenu","stopEvent","deprecated","_regex","PDFDateString","input","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","setLayerDimensions","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","widthStr","heightStr","OutputScale","pixelRatio","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","winPixels","SupportedImageMimeTypes","ColorScheme","CSSConstants","applyOpacity","opacity","white","RGBToHSL","rgb","HSLToRGB","hsl","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","dir","fragment","lines","line","makePathFromDrawOPS","data","path","_toolbar","_colorPicker","_editor","_buttons","_altText","_comment","_commentButtonDivider","_signatureDescriptionButton","_l10nRemove","_EditorToolbar_static","pointerDown_fn","_EditorToolbar_instances","focusIn_fn","focusOut_fn","addListenersToElement_fn","divider_get","_EditorToolbar","editor","editToolbar","buttons","position","editorType","_uiManager","button","altText","comment","beforeElement","divider","colorPicker","signatureManager","tool","beforeSelector","description","EditorToolbar","_FloatingToolbar_instances","render_fn","getLastPoint_fn","makeButton_fn","FloatingToolbar","uiManager","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","bindEvents","names","_pointerId","_pointerIds","_moveTimestamp","_pointerType","_CurrentPointers","pointerId","pointerType","timeStamp","CurrentPointers","_id","IdManager","__privateWrapper","_baseId","_cache","_ImageManager_instances","get_fn","_ImageManager","svg","image","promise","file","lastModified","size","blobPromise","blob","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","_commands","_locked","_maxSize","_position","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","_KeyboardManager_instances","serialize_fn","KeyboardManager","callbacks","isMac","isMacKey","self","bubbles","checker","_ColorManager","RGB","ColorManager","_abortController","_activeEditor","_allEditableAnnotations","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_commentManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_floatingToolbar","_idManager","_isEnabled","_isPointerDown","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_missingCanvases","_mlManager","_mode","_selectedEditors","_selectedTextNode","_signatureManager","_pageColors","_showAllStates","_pdfDocument","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_viewerAlert","_updateModeCapability","_AnnotationEditorUIManager_instances","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","displayFloatingToolbar_fn","selectionChange_fn","onSelectEnd_fn","addSelectionListener_fn","addFocusManager_fn","removeFocusManager_fn","addKeyboardManager_fn","removeKeyboardManager_fn","addCopyPasteListeners_fn","removeCopyPasteListeners_fn","addDragAndDropListeners_fn","dispatchUpdateStates_fn","dispatchUpdateUI_fn","enableAll_fn","disableAll_fn","addEditorToLayer_fn","lastSelectedEditor_get","isEmpty_fn","selectEditors_fn","_AnnotationEditorUIManager","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","evt","proto","arrowChecker","textInputChecker","_self","small","big","_c","_d","_e","_f","_g","_h","_i","layer","ac","pair","map","hasHCM","isNameForHCM","colorName","firstTime","posX","posY","pageIndex","uid","isSelected","visibility","onEditorsRendered","mode","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","isNoneMode","annotationId","storedValue","messageId","activeElement","lastEditor","lastActiveElement","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","isEditing","types","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","editComment","editorClass","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","visible","updateButton","mustWait","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","editorId","currentLayer","activeLayer","pointerup","promises","AnnotationEditorUIManager","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","_AltText_instances","label_get","setState_fn","_AltText","l10n","label","onClick","guessedText","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_commentStandaloneButton","_commentToolbarButton","_commentWasFromKeyBoard","_initialText","_richText","_text","_date","_deleted","_popupPosition","_Comment_instances","Comment$1","parentX","parentY","selected","hasPopup","parentDimensions","richText","isStandalone","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_pointerDownAC","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","_TouchManager_instances","onTouchStart_fn","onTouchMove_fn","onTouchEnd_fn","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","pointerDownAC","opts","cancelPointerDown","onTouchEnd","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","TouchManager","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_resizersDiv","_lastPointerCoords","_savedDimensions","_fakeAnnotation","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","_AnnotationEditor_instances","translate_fn","_AnnotationEditor_static","rotatePoint_fn","getRotationMatrix_fn","createResizers_fn","resizerPointerdown_fn","resize_fn","addResizeToUndoStack_fn","resizerPointermove_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","selectOnPointerEvent_fn","setUpDragSession_fn","addFocusListeners_fn","resizerKeydown_fn","resizerBlur_fn","resizerFocus_fn","setResizerTabIndex_fn","stopResizing_fn","_AnnotationEditor","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","baseX","baseY","bx","by","_borderLineWidth","parentScale","toolbarButtons","editToolbarDiv","Comment","date","trY","blX","blY","trX","contents","shiftX","shiftY","creationDate","modificationDate","focus","top","bottom","right","innerHeight","innerWidth","_angle","context","timeout","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","action","annotationLayer","content","firstElementChild","angle","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","hasDraggingStarted","cancelDrag","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","_modified","_modifiedIds","_editorsMap","_storage","_AnnotationStorage_instances","setModified_fn","AnnotationStorage","defaultValue","modified","entry","PrintAnnotationStorage","transfer","hasBitmap","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","editorStats","counters","count","ids","_serializable","clone","_systemFonts","FontLoader","ownerDocument","styleElement","nativeFontFace","rule","styleSheet","disableFontFace","_inspectFont","loadedName","src","fontFace","font","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","_fontData","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","css","objs","character","objId","cmds","bbox","_buffer","_view","_decoder","_CssFontInfo_instances","readString_fn","_CssFontInfo","buffer","encoder","encodedStrings","stringsLength","encoded","view","CssFontInfo","_SystemFontInfo_instances","_SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","styleLength","weightLength","weight","SystemFontInfo","_OFFSET_NUMBERS","_OFFSET_BBOX","_OFFSET_FONT_MATRIX","_OFFSET_DEFAULT_VMETRICS","_OFFSET_STRINGS","_FontInfo_instances","readBoolean_fn","readNumber_fn","_FontInfo","fontMatrix","defaultVMetrics","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","coord","metric","byteOffset","bitOffset","stringData","FontInfo","_KIND","_HAS_BBOX","_HAS_BACKGROUND","_SHADING_TYPE","_N_COORD","_N_COLOR","_N_STOP","_N_FIGURES","_PatternInfo","ir","coords","colorStops","figures","shadingType","background","nCoord","nColor","nStop","nFigures","figuresSize","figure","byteLen","dataView","u8data","hex","hasBBox","hasBackground","stops","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","PatternInfo","FontPathInfo","getUrlProp","getDataProp","getFactoryUrlProp","isRefProxy","isNameProxy","isValidExplicitDest","_listeners","_deferred","LoopbackPort","rmAbort","onAbort","CallbackKind","StreamKind","onFn","wrapReason","_messageAC","_MessageHandler_instances","onMessage_fn","createStreamSink_fn","processStreamMessage_fn","deleteStreamController_fn","MessageHandler","sourceName","targetName","comObj","actionName","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","reason","cancelCapability","result","streamSink","lastDesiredSize","streamController","dataReason","_enableHWA","BaseCanvasFactory","enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","_DOMFilterFactory_instances","cache_get","hcmCache_get","defs_get","createTables_fn","createUrl_fn","addLuminosityConversion_fn","addGrayConversion_fn","createFilter_fn","appendFeFunc_fn","addTransferMapConversion_fn","addTransferMapAlphaConversion_fn","getRGB_fn","DOMFilterFactory","docId","tableR","tableG","tableB","filter","fgRGB","bgRGB","table","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","mapR","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","floor","ceil","expandBBox","EMPTY_BBOX","_bboxes","_coords","BBoxReader","bboxes","ensureDebugMetadata","_simple","_incremental","_namedDependencies","_savesStack","_markedContentStack","_baseTransformStack","_clipBox","_pendingBBox","_pendingBBoxIdx","_pendingDependencies","_operations","_fontBBoxTrustworthy","_canvasWidth","_canvasHeight","_bboxesCoords","_debugMetadata","_CanvasDependencyTracker_instances","initializeBBoxes_fn","CanvasDependencyTracker","operationsCount","recordDebugMetadata","opIdx","previous","lastSave","idx","depName","fallbackIdx","dep","clipBox","intersection","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","measure","dependencyName","dependencyNames","pendingDependencies","simple","incremental","preserve","metadata","dependencies","depIdx","saveIdx","deps","operation","oldBBoxes","_dependencyTracker","_opIdx","_ignoreBBoxes","_nestingLevel","_savesLevel","_CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","CanvasNestedDependencyTracker","Dependencies","PathType","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","firstPoint","secondPoint","colorStop","owner","inverse","pathType","pattern","precision","n1","ps","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","p3","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","fillStyle","strokeStyle","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","CanvasExtraState","preInit","xStrokePad","yStrokePad","intersect","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics_instances","restoreInitialState_fn","drawFilter_fn","getScaledPath_fn","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","fallback","transparency","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","depObjId","objsPool","cache","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","clip","old","op","outerExtraSize","consumePath","strokeColor","newPath","needRestore","paths","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","scaledPath","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","widthAdvanceScale","simpleFillText","needsFill","needsStroke","lineWidth","chars","glyph","joinedChars","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","renderingOpIdx","inv","group","currentCtx","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","_port","_src","GlobalWorkerOptions","_map","_data","Metadata","parsedData","INTERNAL","_isDisplay","_isPrint","_userSet","_visible","OptionalContentGroup","renderingIntent","usage","rbGroups","print","internal","userSet","_cachedGetHash","_groups","_initialHash","_order","_OptionalContentConfig_instances","evaluateVisibilityExpression_fn","OptionalContentConfig","on","off","preserveRB","rbGroup","otherId","operator","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","found","rangeReader","reader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","stream","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","charset","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","error","readableStream","INITIAL_DATA","_objs","_PDFObjects_instances","ensureObj_fn","PDFObjects","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","_pendingTextLayers","_TextLayer_instances","processItems_fn","appendText_fn","layout_fn","_TextLayer_static","getCtx_fn","ensureCtxFont_fn","ensureMinFontSizeComputed_fn","getAscent_fn","_TextLayer","textContentSource","isWindows","isFirefox","pump","onBefore","abortEx","textContentItemsStr","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","divStyle","shouldScaleText","absScaleX","absScaleY","br","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","TextLayer","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","_PDFDocumentLoadingTask","_progressiveDoneListeners","_progressiveReadListeners","_progressListeners","_rangeListeners","PDFDocumentProxy","pdfInfo","pageIndexesToSkip","pageInfos","keepLoadedFonts","_pendingCleanup","_PDFPageProxy_instances","tryCleanup_fn","PDFPageProxy","pageInfo","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","intentPrint","recordForDebugger","shouldRecordOperations","complete","internalRenderTask","recordedBBoxes","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","renderTasks","_messageHandler","_webWorker","_fakeWorkerId","_isWorkerDisabled","_workerPorts","_PDFWorker_instances","resolve_fn","initializeFromPort_fn","initialize_fn","setupFakeWorker_fn","_PDFWorker_static","mainThreadWorkerMessageHandler_get","_PDFWorker","port","cachedPort","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","workerHandler","otherUrl","base","other","wrapper","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","_WorkerTransport_instances","cacheSimpleMethod_fn","loadingTask","factory","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","exportedData","exportedError","fontData","imageRef","pageProxy","imageData","cachedPromise","results","refStr","_internalRenderTask","RenderTask","separateAnnots","_rAF","_canvasInUse","_InternalRenderTask","useRequestAnimationFrame","version","build","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","_ColorPicker_instances","getDropdownRoot_fn","colorSelect_fn","keyDown_fn","openDropdown_fn","isDropdownVisible_get","_ColorPicker","swatch","dropdown","ColorPicker","_input","_BasicColorPicker","colorType","BasicColorPicker","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_updates","_hasBorder","_popupElement","_AnnotationElement_instances","setRectEdited_fn","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","quadPoints","inkLists","inkList","popup","newPopup","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","styleName","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popupData","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","EditorAnnotationElement","_LinkAnnotationElement_instances","setInternalLink_fn","bindAttachment_fn","bindSetOCGState_fn","link","isBound","destination","overlaidText","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","datetimeFormat","datetimeType","timeStep","hasDateOrTime","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","displayValue","selectChild","indices","change","_PopupAnnotationElement_instances","createPopup_fn","elements","hasCommentManager","PopupElement","_boundKeyDown","_boundHide","_boundShow","_boundToggle","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_popupAbortController","_commentButton","_commentButtonPosition","_rect","_titleObj","_wasVisible","_firstElement","_commentText","_PopupElement_instances","addEventListeners_fn","setCommentButtonPosition_fn","updateCommentButtonPosition_fn","updateColor_fn","html_get","fontSize_get","fontColor_get","makePopupContent_fn","setPosition_fn","toggle_fn","show_fn","hide_fn","titleObj","parentRect","open","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","header","title","popupLines","popupContent","lineAttributes","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","points","polyline","_polylinesGroupElement","_polylines","_InkAnnotationElement_instances","getTransform_fn","thickness","mark","underline","strikeout","_trigger","_FileAttachmentAnnotationElement_instances","download_fn","trigger","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","_linkService","_hasAriaAttributesFromStructTree","_AnnotationLayer_instances","addElementsToDOM_fn","setAnnotationCanvasMap_fn","_AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","annotations","popupToElements","popupAnnotations","elementParams","isPopupAnnotation","rendered","contentElement","ariaAttributes","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","firstChild","editableAnnotation","AnnotationLayer","EOL_PATTERN","_content","_editorDivId","_editModeAC","_fontSize","_FreeTextEditor_instances","updateFontSize_fn","extractText_fn","setEditorDimensions_fn","_FreeTextEditor_static","getNodeContent_fn","setContent_fn","serializeContent_fn","deserializeContent_fn","hasElementChanged_fn","_FreeTextEditor","savedText","newText","setText","paste","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","padding","textPosition","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","sx","sy","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN_DIFF","_MIN","_FreeDrawOutliner_instances","getLastCoords_fn","toSVGPathTwoPoints_fn","toSVGPathStart_fn","toSVGPathEnd_fn","getOutlineTwoPoints_fn","getOutlineStart_fn","getOutlineEnd_fn","_FreeDrawOutliner","scaleFactor","innerMargin","diffY","diffD","K","nX","nY","thX","thY","outline","FreeDrawOutline","last","N","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_outline","_FreeDrawOutline_instances","computeMinMax_fn","outliner","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","_firstPoint","_lastPoint","_verticalEdges","_intervals","_HighlightOutliner_instances","getOutlines_fn","binarySearch_fn","insert_fn","remove_fn","breakEdge_fn","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_outlineId","_methodOfCreation","_HighlightEditor_instances","createOutlines_fn","createFreeOutlines_fn","updateThickness_fn","changeThickness_fn","cleanDrawLayer_fn","addToDrawLayer_fn","_HighlightEditor_static","rotateBbox_fn","keydown_fn","setCaret_fn","getRotation_fn","serializeBoxes_fn","serializeOutlines_fn","highlightMove_fn","endHighlight_fn","_HighlightEditor","mustBeSelected","drawLayer","highlightDiv","direction","clipPathId","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","HighlightEditor","_svgProperties","DrawingOptions","_drawOutlines","_mustBeCommitted","_currentDraw","_currentDrawingAC","_currentDrawingOptions","_DrawingEditor_instances","createDrawOutlines_fn","createDrawing_fn","convertToParentSpace_fn","convertToDrawSpace_fn","updateBbox_fn","rotateBox_fn","_DrawingEditor","p1Keys","_options","propertyName","_drawingOptions","savedValue","setter","_x","_y","drawDiv","_parentWidth","_parentHeight","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","pW","pH","parentRotation","DrawingEditor","_lines","_lastSVGPath","_lastIndex","_InkDrawOutliner_instances","normalizePoint_fn","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_currentRotation","_parentScale","_InkDrawOutline_instances","getMarginComponents_fn","getBBoxWithNoMargin_fn","computeBbox_fn","serializedLines","serializedPoints","rescaleFn","newLines","len","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","margin","InkDrawingOptions","viewerParameters","_InkEditor_instances","_InkEditor","_drawId","stroke","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","_PARAMETERS","_SignatureExtractor_static","neighborIndexToId_fn","_neighborIdToIndex","clockwiseNonZero_fn","counterClockwiseNonZero_fn","findContours_fn","douglasPeuckerHelper_fn","douglasPeucker_fn","bilateralFilter_fn","getHistogram_fn","toUint8_fn","guessThreshold_fn","getGrayPixels_fn","SignatureExtractor","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","histogram","threshold","contourList","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","minDiff","maxDiff","outlinesLength","bufferType","headerLength","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","i0","j0","kk","shiftI","shiftJ","nbd","lnbd","contours","ij","pix","j2","isHole","contour","contour0","i1","j1","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","out","center","sum","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","isteps","grayImage","SignatureOptions","DrawnSignatureOptions","_isExtracted","_description","_signatureData","_signatureUUID","_SignatureEditor","hasDescriptionStats","_isCopy","uuid","heightInPage","toolbar","outlineData","fontInfo","SignatureEditor","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_missingCanvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","_StampEditor_instances","getBitmapFetched_fn","getBitmapDone_fn","getBitmap_fn","createCanvas_fn","scaleBitmap_fn","drawBitmap_fn","serializeBitmap_fn","StampEditor","hasAltTextStats","updateAltTextData","bitmapId","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","changes","area","prevData","fromId","MAX_RATIO","toUrl","isSamePageIndex","isSameAltText","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","_textLayerDblClickAC","_lastPointerDownTimestamp","_AnnotationEditorLayer_instances","allEditorsIterator_get","textLayerPointerDown_fn","currentEditorType_get","createNewEditor_fn","getCenterPoint_fn","cleanup_fn","_AnnotationEditorLayer","editorTypes","classList","annotationElementIds","editable","clientX","clientY","lastPointerDownTimestamp","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","isCentered","currentMode","relatedTarget","oldRotation","AnnotationEditorLayer","_mapping","_toUpdate","_DrawLayer_static","setBox_fn","_DrawLayer_instances","createSVG_fn","createClipPath_fn","updateProperties_fn","_DrawLayer","isPathUpdatable","hasClip","pathId","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","pathElement","clipPathUse","DrawLayer","pdfWorkerUrl","pdfjsLib.GlobalWorkerOptions","PdfRenderer","pdfUrl","pdfjsLib.getDocument","vp","baseShortSide","aspectRatio","resolvedPages","normalSrc","_FlipbookEngine","selector","imageList","sourceAssets","referencePage","bookWrapperEl","bookSizerEl","bookContainerEl","pageFlipAdapterRef","interactionManagerRef","appNode","targetIdx","zoomLevel","isSingle","keepContainer","payload","FlipbookEngine","globalScope","flipbookNamespace"],"mappings":"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","x_google_ignoreList":[0,1,11,17]}
1
+ {"version":3,"file":"flipbook-engine.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}