@libresign/pdf-elements 0.3.1 → 1.0.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.
- package/README.md +24 -1
- package/dist/components/DraggableElement.vue.d.ts +240 -0
- package/dist/components/PDFElements.vue.d.ts +552 -0
- package/dist/components/PDFPage.vue.d.ts +40 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +1293 -0
- package/dist/pdf-uHvE5neP.mjs +17593 -0
- package/dist/pdf.worker.min-DmO9Xdfo.mjs +4 -0
- package/dist/types.d.ts +30 -0
- package/dist/utils/asyncReader.d.ts +10 -0
- package/dist/utils/geometry.d.ts +5 -0
- package/dist/utils/measurements.d.ts +12 -0
- package/dist/utils/objectStore.d.ts +5 -0
- package/dist/utils/pageBounds.d.ts +5 -0
- package/dist/utils/zoom.d.ts +2 -0
- package/package.json +46 -21
- package/src/components/DraggableElement.vue +18 -15
- package/src/components/PDFElements.vue +135 -60
- package/src/components/PDFPage.vue +11 -7
- package/src/index.ts +18 -0
- package/src/types.ts +35 -0
- package/src/utils/asyncReader.ts +103 -0
- package/src/utils/{geometry.js → geometry.ts} +16 -2
- package/src/utils/{measurements.js → measurements.ts} +20 -1
- package/src/utils/{objectStore.js → objectStore.ts} +15 -4
- package/src/utils/{pageBounds.js → pageBounds.ts} +2 -2
- package/src/utils/{zoom.js → zoom.ts} +3 -1
- package/dist/demo.html +0 -1
- package/dist/pdf-elements.common.js +0 -31698
- package/dist/pdf-elements.common.js.map +0 -1
- package/dist/pdf-elements.css +0 -1
- package/dist/pdf-elements.umd.js +0 -31710
- package/dist/pdf-elements.umd.js.map +0 -1
- package/dist/pdf-elements.umd.min.js +0 -2
- package/dist/pdf-elements.umd.min.js.map +0 -1
- package/dist/pdf.worker.min.mjs +0 -22
- package/src/index.js +0 -17
- package/src/utils/asyncReader.js +0 -44
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-elements.umd.min.js","mappings":"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","sources":["webpack://pdf-elements/webpack/universalModuleDefinition","webpack://pdf-elements/./node_modules/core-js/internals/is-object.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.find.js","webpack://pdf-elements/./node_modules/core-js/internals/make-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/function-name.js","webpack://pdf-elements/./node_modules/core-js/internals/html.js","webpack://pdf-elements/./node_modules/core-js/internals/hidden-keys.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.flat-map.js","webpack://pdf-elements/./node_modules/core-js/internals/function-bind-native.js","webpack://pdf-elements/./node_modules/core-js/internals/an-instance.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-helper-throws-on-invalid-iterator.js","webpack://pdf-elements/./node_modules/core-js/internals/math-trunc.js","webpack://pdf-elements/./node_modules/core-js/internals/is-symbol.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-method.js","webpack://pdf-elements/./node_modules/core-js/internals/object-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/internal-state.js","webpack://pdf-elements/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-close-all.js","webpack://pdf-elements/./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://pdf-elements/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.map.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-direct.js","webpack://pdf-elements/./node_modules/core-js/internals/object-keys-internal.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://pdf-elements/./node_modules/core-js/internals/to-string-tag-support.js","webpack://pdf-elements/./node_modules/core-js/internals/classof-raw.js","webpack://pdf-elements/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdf-elements/./node_modules/core-js/internals/object-create.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.filter.js","webpack://pdf-elements/./node_modules/core-js/internals/create-iter-result-object.js","webpack://pdf-elements/./node_modules/core-js/internals/iterate.js","webpack://pdf-elements/./node_modules/core-js/internals/to-primitive.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdf-elements/./node_modules/core-js/internals/is-forced.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-user-agent.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-is-detached.js","webpack://pdf-elements/./node_modules/core-js/internals/uid.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.some.js","webpack://pdf-elements/./node_modules/core-js/internals/inspect-source.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdf-elements/./node_modules/core-js/internals/descriptors.js","webpack://pdf-elements/./node_modules/core-js/internals/document-create-element.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array.push.js","webpack://pdf-elements/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://pdf-elements/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdf-elements/./node_modules/core-js/internals/environment.js","webpack://pdf-elements/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdf-elements/./node_modules/core-js/internals/is-array.js","webpack://pdf-elements/./node_modules/core-js/internals/detach-transferable.js","webpack://pdf-elements/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://pdf-elements/./node_modules/core-js/internals/array-set-length.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-helper-without-closing-on-early-error.js","webpack://pdf-elements/./node_modules/core-js/internals/global-this.js","webpack://pdf-elements/./node_modules/core-js/internals/create-property.js","webpack://pdf-elements/./node_modules/core-js/internals/is-callable.js","webpack://pdf-elements/./node_modules/core-js/internals/object-define-property.js","webpack://pdf-elements/./node_modules/core-js/internals/own-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-not-detached.js","webpack://pdf-elements/./node_modules/core-js/internals/to-indexed-object.js","webpack://pdf-elements/./node_modules/core-js/internals/to-absolute-index.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-transfer.js","webpack://pdf-elements/./node_modules/core-js/internals/shared.js","webpack://pdf-elements/./node_modules/core-js/internals/ie8-dom-define.js","webpack://pdf-elements/./node_modules/core-js/internals/get-method.js","webpack://pdf-elements/./node_modules/core-js/internals/function-bind-context.js","webpack://pdf-elements/./node_modules/core-js/internals/shared-key.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-is-node.js","webpack://pdf-elements/./node_modules/core-js/internals/length-of-array-like.js","webpack://pdf-elements/./node_modules/core-js/internals/iterators.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-ins.js","webpack://pdf-elements/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdf-elements/./node_modules/core-js/internals/is-pure.js","webpack://pdf-elements/./node_modules/core-js/internals/export.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.detached.js","webpack://pdf-elements/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://pdf-elements/./node_modules/core-js/internals/object-define-properties.js","webpack://pdf-elements/./node_modules/core-js/internals/try-to-string.js","webpack://pdf-elements/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/classof.js","webpack://pdf-elements/./node_modules/core-js/internals/to-property-key.js","webpack://pdf-elements/./node_modules/core-js/internals/create-property-descriptor.js","webpack://pdf-elements/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdf-elements/./node_modules/core-js/internals/indexed-object.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-byte-length.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.for-each.js","webpack://pdf-elements/./node_modules/core-js/internals/shared-store.js","webpack://pdf-elements/./node_modules/core-js/internals/iterators-core.js","webpack://pdf-elements/./node_modules/core-js/internals/to-index.js","webpack://pdf-elements/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdf-elements/./node_modules/core-js/internals/require-object-coercible.js","webpack://pdf-elements/./node_modules/core-js/internals/get-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack://pdf-elements/./node_modules/core-js/internals/to-length.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.constructor.js","webpack://pdf-elements/./node_modules/core-js/internals/well-known-symbol.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdf-elements/./node_modules/core-js/internals/an-object.js","webpack://pdf-elements/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-flattenable.js","webpack://pdf-elements/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdf-elements/./node_modules/core-js/internals/enum-bug-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdf-elements/./node_modules/core-js/internals/to-object.js","webpack://pdf-elements/./node_modules/core-js/internals/fails.js","webpack://pdf-elements/./node_modules/core-js/internals/has-own-property.js","webpack://pdf-elements/./node_modules/core-js/internals/a-callable.js","webpack://pdf-elements/./node_modules/core-js/internals/get-built-in-node-module.js","webpack://pdf-elements/./node_modules/core-js/internals/define-global-property.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-create-proxy.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-v8-version.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-close.js","webpack://pdf-elements/./node_modules/core-js/internals/function-call.js","webpack://pdf-elements/./node_modules/core-js/internals/array-includes.js","webpack://pdf-elements/webpack/bootstrap","webpack://pdf-elements/webpack/runtime/define property getters","webpack://pdf-elements/webpack/runtime/hasOwnProperty shorthand","webpack://pdf-elements/webpack/runtime/publicPath","webpack://pdf-elements/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://pdf-elements/./src/components/PDFElements.vue","webpack://pdf-elements/./src/components/PDFPage.vue","webpack://pdf-elements/src/components/PDFPage.vue","webpack://pdf-elements/./src/components/PDFPage.vue?9f3a","webpack://pdf-elements/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://pdf-elements/./src/components/PDFPage.vue?84e5","webpack://pdf-elements/./src/components/DraggableElement.vue","webpack://pdf-elements/src/components/DraggableElement.vue","webpack://pdf-elements/./src/components/DraggableElement.vue?1ce3","webpack://pdf-elements/./src/components/DraggableElement.vue?7502","webpack://pdf-elements/./node_modules/pdfjs-dist/build/pdf.mjs","webpack://pdf-elements/./src/utils/asyncReader.js","webpack://pdf-elements/./src/utils/geometry.js","webpack://pdf-elements/./src/utils/pageBounds.js","webpack://pdf-elements/./src/utils/zoom.js","webpack://pdf-elements/./src/utils/objectStore.js","webpack://pdf-elements/./src/utils/measurements.js","webpack://pdf-elements/src/components/PDFElements.vue","webpack://pdf-elements/./src/components/PDFElements.vue?b26b","webpack://pdf-elements/./src/components/PDFElements.vue?32d4","webpack://pdf-elements/./src/index.js","webpack://pdf-elements/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdf-elements\"] = factory();\n\telse\n\t\troot[\"pdf-elements\"] = factory();\n})((typeof self !== 'undefined' ? self : this), () => {\nreturn ","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n find: function find(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE\n && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\n// Should throw an error on invalid iterator\n// https://issues.chromium.org/issues/336839115\nmodule.exports = function (methodName, argument) {\n // eslint-disable-next-line es/no-iterator -- required for testing\n var method = typeof Iterator == 'function' && Iterator.prototype[methodName];\n if (method) try {\n method.call({ next: null }, argument).next();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar iteratorClose = require('../internals/iterator-close');\n\nmodule.exports = function (iters, kind, value) {\n for (var i = iters.length - 1; i >= 0; i--) {\n if (iters[i] === undefined) continue;\n try {\n value = iteratorClose(iters[i].iterator, kind, value);\n } catch (error) {\n kind = 'throw';\n value = error;\n }\n }\n if (kind === 'throw') throw value;\n return value;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/environment-v8-version');\nvar ENVIRONMENT = require('../internals/environment');\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });\nvar mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n }\n});\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/ecma262/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });\nvar filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal');\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getBuiltInNodeModule = require('../internals/get-built-in-node-module');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n var Iterator = globalThis.Iterator;\n var IteratorPrototype = Iterator && Iterator.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n var CLOSED = false;\n\n if (method) try {\n method.call({\n next: function () { return { done: true }; },\n 'return': function () { CLOSED = true; }\n }, -1);\n } catch (error) {\n // https://bugs.webkit.org/show_bug.cgi?id=291195\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n\n if (!CLOSED) return method;\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n forEach: function forEach(fn) {\n anObject(this);\n try {\n aCallable(fn);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n fn(value, counter++);\n }, { IS_RECORD: true });\n }\n});\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.47.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)',\n license: 'https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar IS_NODE = require('../internals/environment-is-node');\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorCloseAll = require('../internals/iterator-close-all');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar NORMAL = 'normal';\nvar THROW = 'throw';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(undefined, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (state.openIters) try {\n iteratorCloseAll(state.openIters, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (iterator) iteratorClose(iterator, NORMAL);\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pdf-elements-root\",style:({ width: _vm.width, height: _vm.height })},[(_vm.pdfDocuments.length)?_c('div',{staticClass:\"pages-container\"},_vm._l((_vm.pdfDocuments),function(pdfDoc,docIndex){return _c('div',{key:docIndex},_vm._l((pdfDoc.pages),function(page,pIndex){return _c('div',{key:`${docIndex}-${pIndex}`,staticClass:\"page-slot\"},[_c('div',{staticClass:\"page-wrapper\",on:{\"mousedown\":function($event){return _vm.selectPage(docIndex, pIndex)},\"touchstart\":function($event){return _vm.selectPage(docIndex, pIndex)}}},[_c('div',{staticClass:\"page-canvas\",class:{ 'shadow-outline': docIndex === _vm.selectedDocIndex && pIndex === _vm.selectedPageIndex }},[_c('PDFPage',{ref:`page${docIndex}-${pIndex}`,refInFor:true,attrs:{\"page\":page,\"scale\":_vm.scale},on:{\"onMeasure\":function($event){return _vm.onMeasure($event, docIndex, pIndex)}}}),_c('div',{staticClass:\"overlay\",on:{\"mousemove\":_vm.handleMouseMove,\"touchmove\":_vm.handleMouseMove}},[(_vm.isAddingMode && _vm.previewPageDocIndex === docIndex && _vm.previewPageIndex === pIndex && _vm.previewElement && _vm.previewVisible)?_c('div',{staticClass:\"preview-element\",style:({\n left: `${_vm.previewPosition.x * _vm.previewScale.x}px`,\n top: `${_vm.previewPosition.y * _vm.previewScale.y}px`,\n width: `${_vm.previewElement.width * _vm.previewScale.x}px`,\n height: `${_vm.previewElement.height * _vm.previewScale.y}px`,\n })},[_vm._t(_vm.previewElement.type ? `element-${_vm.previewElement.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":_vm.previewElement,\"isSelected\":false})]},{\"object\":_vm.previewElement,\"isSelected\":false})],2):_vm._e(),_vm._l((pdfDoc.allObjects[pIndex]),function(object){return _c('DraggableElement',{key:object.id,ref:`draggable${docIndex}-${pIndex}-${object.id}`,refInFor:true,attrs:{\"object\":object,\"pages-scale\":_vm.getDisplayedPageScale(docIndex, pIndex),\"page-width\":_vm.getPageWidth(docIndex, pIndex),\"page-height\":_vm.getPageHeight(docIndex, pIndex),\"read-only\":_vm.readOnly,\"on-update\":(payload) => _vm.updateObject(docIndex, object.id, payload),\"on-delete\":() => _vm.deleteObject(docIndex, object.id),\"on-duplicate\":() => _vm.duplicateObject(docIndex, object.id),\"on-drag-start\":(mouseX, mouseY, pointerOffset, dragShift) => _vm.startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift),\"on-drag-move\":_vm.updateDraggingPosition,\"on-drag-end\":_vm.stopDraggingElement,\"is-being-dragged-globally\":_vm.isDraggingElement && _vm.draggingObject && _vm.draggingObject.id === object.id,\"dragging-client-pos\":_vm.draggingClientPosition,\"current-doc-index\":docIndex,\"current-page-index\":pIndex,\"global-drag-doc-index\":_vm.draggingDocIndex,\"global-drag-page-index\":_vm.draggingPageIndex,\"show-selection-ui\":_vm.showSelectionHandles && !_vm.hideSelectionUI && object.resizable !== false,\"show-default-actions\":_vm.showElementActions && !_vm.hideSelectionUI,\"ignore-click-outside-selectors\":_vm.ignoreClickOutsideSelectors},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_vm._t(slotProps.object.type ? `element-${slotProps.object.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onResize\":slotProps.onResize})]},{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onResize\":slotProps.onResize})]}},{key:\"actions\",fn:function(slotProps){return [_vm._t(\"actions\",null,{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onDuplicate\":slotProps.onDuplicate})]}}],null,true)})})],2)],1),(_vm.showPageFooter)?_c('div',{staticClass:\"page-footer\"},[_c('span',[_vm._v(_vm._s(pdfDoc.name))]),_c('span',[_vm._v(_vm._s(_vm.formatPageNumber(pIndex + 1, pdfDoc.numPages)))])]):_vm._e()])])}),0)}),0):_vm._e(),(_vm.isDraggingElement && _vm.draggingObject)?_c('div',{staticClass:\"drag-portal\",style:({\n position: 'fixed',\n left: `${_vm.draggingClientPosition.x}px`,\n top: `${_vm.draggingClientPosition.y}px`,\n width: `${_vm.draggingObject.width * _vm.draggingScale}px`,\n height: `${_vm.draggingObject.height * _vm.draggingScale}px`,\n pointerEvents: 'none',\n })},[_vm._t(_vm.draggingObject.type ? `element-${_vm.draggingObject.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":_vm.draggingObject,\"isSelected\":false})]},{\"object\":_vm.draggingObject,\"isSelected\":false})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('canvas',{ref:\"canvas\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <canvas ref=\"canvas\" />\n</template>\n\n<script>\nexport default {\n name: 'PDFPage',\n props: {\n page: {\n type: Promise,\n required: true,\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n data() {\n return {\n dynamicScale: this.scale,\n isRendering: false,\n pendingRender: false,\n renderTask: null,\n }\n },\n watch: {\n scale(newScale) {\n this.dynamicScale = newScale\n this.render()\n },\n },\n mounted() {\n this.render()\n },\n beforeUnmount() {\n if (this.renderTask) {\n try {\n this.renderTask.cancel()\n } catch (e) {\n // Ignore render cancellation errors.\n }\n this.renderTask = null\n }\n },\n methods: {\n getCanvasMeasurement() {\n return {\n canvasWidth: this.$refs.canvas.width,\n canvasHeight: this.$refs.canvas.height,\n }\n },\n measure() {\n this.$emit('onMeasure', {\n scale: this.dynamicScale,\n })\n },\n async render() {\n if (this.isRendering) {\n this.pendingRender = true\n return\n }\n this.isRendering = true\n this.pendingRender = false\n try {\n const _page = await this.page\n const canvas = this.$refs.canvas\n if (!canvas) return\n if (this.renderTask) {\n try {\n this.renderTask.cancel()\n } catch (e) {\n // Ignore render cancellation errors.\n }\n this.renderTask = null\n }\n const context = canvas.getContext('2d')\n const viewport = _page.getViewport({\n scale: this.dynamicScale,\n })\n canvas.width = viewport.width\n canvas.height = viewport.height\n this.renderTask = _page.render({\n canvasContext: context,\n viewport,\n })\n await this.renderTask.promise\n this.measure()\n } finally {\n this.isRendering = false\n this.renderTask = null\n if (this.pendingRender) {\n this.pendingRender = false\n this.render()\n }\n }\n },\n },\n}\n</script>\n\n<style scoped>\ncanvas {\n display: block;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFPage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFPage.vue?vue&type=script&lang=js\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./PDFPage.vue?vue&type=template&id=acf7a444&scoped=true\"\nimport script from \"./PDFPage.vue?vue&type=script&lang=js\"\nexport * from \"./PDFPage.vue?vue&type=script&lang=js\"\nimport style0 from \"./PDFPage.vue?vue&type=style&index=0&id=acf7a444&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"acf7a444\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"draggable-wrapper\"},[(_vm.isSelected && !_vm.isBeingDraggedGlobally && _vm.showSelectionUi && _vm.showDefaultActions)?_c('div',{staticClass:\"actions-toolbar\",style:(_vm.toolbarStyle)},[_vm._t(\"actions\",function(){return [_c('button',{staticClass:\"action-btn\",attrs:{\"type\":\"button\",\"title\":\"Duplicate\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDuplicate.apply(null, arguments)}}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\"}},[_c('path',{attrs:{\"d\":\"M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H10V7h9v14z\"}})])]),_c('button',{staticClass:\"action-btn\",attrs:{\"type\":\"button\",\"title\":\"Delete\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDelete.apply(null, arguments)}}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"}},[_c('path',{attrs:{\"d\":\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.5a.5.5 0 0 0 0 1h.5v10.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V3.5h.5a.5.5 0 0 0 0-1H11Zm1 1v10.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V3.5h8Z\"}})])])]},{\"object\":_vm.object,\"onDelete\":_vm.onDelete,\"onDuplicate\":_vm.onDuplicate})],2):_vm._e(),_c('div',{staticClass:\"draggable-element\",class:{ selected: _vm.isSelected && _vm.showSelectionUi },style:([_vm.elementStyle, _vm.dragElementStyle]),attrs:{\"draggable\":\"false\"},on:{\"dragstart\":function($event){$event.preventDefault();},\"mousedown\":_vm.handleElementClick,\"touchstart\":_vm.handleElementClick}},[_vm._t(\"default\",null,{\"object\":_vm.object,\"isSelected\":_vm.isSelected,\"onDelete\":_vm.onDelete,\"onResize\":_vm.startResizeFromSlot}),(_vm.isSelected && _vm.showSelectionUi)?_vm._l((_vm.resizeDirections),function(dir){return _c('button',{key:dir,staticClass:\"resize-handle\",class:`handle-${dir}`,attrs:{\"type\":\"button\"},on:{\"mousedown\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startResize(dir, $event)},\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startResize(dir, $event)}}})}):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <div class=\"draggable-wrapper\">\n <div\n v-if=\"isSelected && !isBeingDraggedGlobally && showSelectionUi && showDefaultActions\"\n class=\"actions-toolbar\"\n :style=\"toolbarStyle\"\n >\n <slot name=\"actions\" :object=\"object\" :onDelete=\"onDelete\" :onDuplicate=\"onDuplicate\">\n <button class=\"action-btn\" type=\"button\" title=\"Duplicate\" @click.stop=\"onDuplicate\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H10V7h9v14z\"/>\n </svg>\n </button>\n <button class=\"action-btn\" type=\"button\" title=\"Delete\" @click.stop=\"onDelete\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.5a.5.5 0 0 0 0 1h.5v10.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V3.5h.5a.5.5 0 0 0 0-1H11Zm1 1v10.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V3.5h8Z\"/>\n </svg>\n </button>\n </slot>\n </div>\n <div\n class=\"draggable-element\"\n draggable=\"false\"\n @dragstart.prevent\n :class=\"{ selected: isSelected && showSelectionUi }\"\n :style=\"[elementStyle, dragElementStyle]\"\n @mousedown=\"handleElementClick\"\n @touchstart=\"handleElementClick\"\n >\n <slot\n :object=\"object\"\n :isSelected=\"isSelected\"\n :onDelete=\"onDelete\"\n :onResize=\"startResizeFromSlot\"\n />\n\n <template v-if=\"isSelected && showSelectionUi\">\n <button\n v-for=\"dir in resizeDirections\"\n :key=\"dir\"\n class=\"resize-handle\"\n :class=\"`handle-${dir}`\"\n type=\"button\"\n @mousedown.stop.prevent=\"startResize(dir, $event)\"\n @touchstart.stop.prevent=\"startResize(dir, $event)\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'DraggableElement',\n props: {\n object: {\n type: Object,\n required: true,\n },\n pagesScale: {\n type: Number,\n default: 1,\n },\n pageWidth: {\n type: Number,\n required: true,\n },\n pageHeight: {\n type: Number,\n required: true,\n },\n onUpdate: {\n type: Function,\n default: () => {},\n },\n onDelete: {\n type: Function,\n default: () => {},\n },\n onDuplicate: {\n type: Function,\n default: () => {},\n },\n onDragStart: {\n type: Function,\n default: () => {},\n },\n onDragMove: {\n type: Function,\n default: () => {},\n },\n onDragEnd: {\n type: Function,\n default: () => {},\n },\n isBeingDraggedGlobally: {\n type: Boolean,\n default: false,\n },\n draggingClientPos: {\n type: Object,\n default: () => ({ x: 0, y: 0 }),\n },\n currentDocIndex: {\n type: Number,\n default: -1,\n },\n currentPageIndex: {\n type: Number,\n default: -1,\n },\n globalDragDocIndex: {\n type: Number,\n default: -1,\n },\n globalDragPageIndex: {\n type: Number,\n default: -1,\n },\n showSelectionUi: {\n type: Boolean,\n default: true,\n },\n showDefaultActions: {\n type: Boolean,\n default: true,\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n ignoreClickOutsideSelectors: {\n type: Array,\n default: () => [],\n },\n },\n data() {\n return {\n isSelected: false,\n mode: 'idle',\n direction: '',\n startX: 0,\n startY: 0,\n startLeft: 0,\n startTop: 0,\n startWidth: 0,\n startHeight: 0,\n offsetX: 0,\n offsetY: 0,\n resizeOffsetX: 0,\n resizeOffsetY: 0,\n resizeOffsetW: 0,\n resizeOffsetH: 0,\n aspectRatio: 1,\n lastMouseX: 0,\n lastMouseY: 0,\n pointerOffsetDoc: { x: 0, y: 0 },\n currentPageRect: null,\n rafId: null,\n }\n },\n computed: {\n resizeDirections() {\n return ['top-left', 'top-right', 'bottom-left', 'bottom-right']\n },\n elementStyle() {\n const scale = this.pagesScale || 1\n const isDragging = this.mode === 'drag'\n const isResizing = this.mode === 'resize'\n const offsetX = isDragging ? this.offsetX : 0\n const offsetY = isDragging ? this.offsetY : 0\n const resizeOffsetX = isResizing ? this.resizeOffsetX : 0\n const resizeOffsetY = isResizing ? this.resizeOffsetY : 0\n const resizeOffsetW = isResizing ? this.resizeOffsetW : 0\n const resizeOffsetH = isResizing ? this.resizeOffsetH : 0\n const currentX = this.object.x + offsetX + resizeOffsetX\n const currentY = this.object.y + offsetY + resizeOffsetY\n const currentWidth = this.object.width + resizeOffsetW\n const currentHeight = this.object.height + resizeOffsetH\n return {\n left: `${currentX * scale}px`,\n top: `${currentY * scale}px`,\n width: `${currentWidth * scale}px`,\n height: `${currentHeight * scale}px`,\n pointerEvents: this.readOnly ? 'none' : 'auto',\n }\n },\n toolbarStyle() {\n const scale = this.pagesScale || 1\n const isDragging = this.mode === 'drag'\n const isResizing = this.mode === 'resize'\n const offsetX = isDragging ? this.offsetX : 0\n const offsetY = isDragging ? this.offsetY : 0\n const resizeOffsetX = isResizing ? this.resizeOffsetX : 0\n const resizeOffsetY = isResizing ? this.resizeOffsetY : 0\n const resizeOffsetW = isResizing ? this.resizeOffsetW : 0\n const x = this.object.x + offsetX + resizeOffsetX\n const y = this.object.y + offsetY + resizeOffsetY\n const width = this.object.width + resizeOffsetW\n const toolbarOffset = 60\n const nextTop = y - toolbarOffset\n const top = nextTop < 0 ? (y + 8) : nextTop\n return {\n left: `${(x + width / 2) * scale}px`,\n top: `${top * scale}px`,\n transform: 'translateX(-50%)',\n }\n },\n dragElementStyle() {\n if (!this.isBeingDraggedGlobally || !this.draggingClientPos) {\n return {}\n }\n return {\n opacity: 0,\n pointerEvents: 'none',\n }\n },\n },\n mounted() {\n this.handleClickOutside = this.handleClickOutside.bind(this)\n this.boundHandleMove = this.handleMove.bind(this)\n this.boundStopInteraction = this.stopInteraction.bind(this)\n document.addEventListener('mousedown', this.handleClickOutside)\n document.addEventListener('touchstart', this.handleClickOutside)\n },\n beforeUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside)\n document.removeEventListener('touchstart', this.handleClickOutside)\n window.removeEventListener('mousemove', this.boundHandleMove)\n window.removeEventListener('mouseup', this.boundStopInteraction)\n window.removeEventListener('touchmove', this.boundHandleMove)\n window.removeEventListener('touchend', this.boundStopInteraction)\n if (this.rafId) cancelAnimationFrame(this.rafId)\n },\n methods: {\n handleElementClick(event) {\n if (this.readOnly) {\n return\n }\n if (event.target.closest('.delete-handle') || event.target.closest('[data-stop-drag]') || event.target.closest('.actions-toolbar')) {\n return\n }\n event.preventDefault()\n this.isSelected = true\n this.startDrag(event)\n },\n handleClickOutside(event) {\n const selectors = Array.isArray(this.ignoreClickOutsideSelectors)\n ? this.ignoreClickOutsideSelectors\n : []\n for (const selector of selectors) {\n if (selector && event?.target?.closest?.(selector)) {\n return\n }\n }\n if (this.$el && !this.$el.contains(event.target)) {\n this.isSelected = false\n }\n },\n startResizeFromSlot(direction, event) {\n if (!direction || !event) return\n this.startResize(direction, event)\n },\n startDrag(event) {\n if (this.readOnly) return\n if (event.target.classList.contains('delete')) return\n if (event.target.classList.contains('resize-handle')) return\n this.mode = 'drag'\n this.startX = event.type.includes('touch') ? event.touches[0].clientX : event.clientX\n this.startY = event.type.includes('touch') ? event.touches[0].clientY : event.clientY\n this.startLeft = this.object.x\n this.startTop = this.object.y\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n\n const elementRect = this.$el.querySelector('.draggable-element').getBoundingClientRect()\n\n this.pointerOffsetDoc.x = this.startX - elementRect.left\n this.pointerOffsetDoc.y = this.startY - elementRect.top\n\n const pageRect = this.capturePageRect()\n this.currentPageRect = pageRect\n let dragElementShift = { x: 0, y: 0 }\n if (pageRect) {\n const expectedLeft = pageRect.left + (this.object.x * this.pagesScale)\n const expectedTop = pageRect.top + (this.object.y * this.pagesScale)\n dragElementShift = {\n x: elementRect.left - expectedLeft,\n y: elementRect.top - expectedTop,\n }\n }\n\n this.onDragStart(this.startX, this.startY, { ...this.pointerOffsetDoc }, dragElementShift)\n\n window.addEventListener('mousemove', this.boundHandleMove)\n window.addEventListener('mouseup', this.boundStopInteraction)\n window.addEventListener('touchmove', this.boundHandleMove)\n window.addEventListener('touchend', this.boundStopInteraction)\n },\n startResize(direction, event) {\n if (this.readOnly) return\n this.mode = 'resize'\n this.direction = direction\n this.startX = event.type.includes('touch') ? event.touches[0].clientX : event.clientX\n this.startY = event.type.includes('touch') ? event.touches[0].clientY : event.clientY\n this.startLeft = this.object.x\n this.startTop = this.object.y\n this.startWidth = this.object.width\n this.startHeight = this.object.height\n this.aspectRatio = this.startWidth / this.startHeight\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n\n window.addEventListener('mousemove', this.boundHandleMove)\n window.addEventListener('mouseup', this.boundStopInteraction)\n window.addEventListener('touchmove', this.boundHandleMove)\n window.addEventListener('touchend', this.boundStopInteraction)\n },\n handleMove(event) {\n if (this.mode === 'idle') return\n event.preventDefault()\n\n if (this.rafId) return\n\n this.rafId = requestAnimationFrame(() => {\n const currentX = event.type.includes('touch') ? event.touches[0]?.clientX : event.clientX\n const currentY = event.type.includes('touch') ? event.touches[0]?.clientY : event.clientY\n\n if (currentX === undefined || currentY === undefined) return\n\n this.lastMouseX = currentX\n this.lastMouseY = currentY\n const deltaX = (currentX - this.startX) / this.pagesScale\n const deltaY = (currentY - this.startY) / this.pagesScale\n\n if (this.mode === 'drag') {\n const pageRect = this.currentPageRect\n if (pageRect) {\n const newElementLeft = currentX - this.pointerOffsetDoc.x\n const newElementTop = currentY - this.pointerOffsetDoc.y\n\n const newX = (newElementLeft - pageRect.left) / this.pagesScale\n const newY = (newElementTop - pageRect.top) / this.pagesScale\n\n this.offsetX = newX - this.object.x\n this.offsetY = newY - this.object.y\n } else {\n this.offsetX = deltaX\n this.offsetY = deltaY\n }\n this.onDragMove(currentX, currentY)\n if (this.isBeingDraggedGlobally) {\n this.onUpdate({\n _globalDrag: true,\n _mouseX: currentX,\n _mouseY: currentY,\n })\n }\n this.rafId = null\n return\n }\n\n const minSize = 16 / (this.pagesScale || 1)\n let newWidth = this.startWidth\n let newHeight = this.startHeight\n let newLeft = this.startLeft\n let newTop = this.startTop\n\n const widthChange = this.direction.includes('right') ? deltaX : this.direction.includes('left') ? -deltaX : 0\n newWidth = this.startWidth + widthChange\n if (newWidth < minSize) newWidth = minSize\n newHeight = newWidth / this.aspectRatio\n\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n if (newLeft < 0) {\n const overflow = -newLeft\n newLeft = 0\n newWidth = newWidth - overflow\n newHeight = newWidth / this.aspectRatio\n }\n }\n\n if (this.direction.includes('top')) {\n newTop = this.startTop + (this.startHeight - newHeight)\n if (newTop < 0) {\n const overflow = -newTop\n newTop = 0\n newHeight = newHeight - overflow\n newWidth = newHeight * this.aspectRatio\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n }\n }\n }\n\n if (newLeft + newWidth > this.pageWidth) {\n const excess = newLeft + newWidth - this.pageWidth\n newWidth -= excess\n newHeight = newWidth / this.aspectRatio\n }\n if (newTop + newHeight > this.pageHeight) {\n const excess = newTop + newHeight - this.pageHeight\n newHeight -= excess\n newWidth = newHeight * this.aspectRatio\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n }\n }\n\n this.resizeOffsetX = newLeft - this.object.x\n this.resizeOffsetY = newTop - this.object.y\n this.resizeOffsetW = newWidth - this.object.width\n this.resizeOffsetH = newHeight - this.object.height\n\n this.rafId = null\n })\n },\n stopInteraction() {\n if (this.mode === 'idle') return\n\n if (this.mode === 'drag' && (this.offsetX !== 0 || this.offsetY !== 0)) {\n if (this.isBeingDraggedGlobally) {\n this.onUpdate({\n _globalDrag: true,\n _mouseX: this.lastMouseX,\n _mouseY: this.lastMouseY,\n })\n } else {\n const x = Math.max(0, Math.min(this.object.x + this.offsetX, this.pageWidth - this.object.width))\n const y = Math.max(0, Math.min(this.object.y + this.offsetY, this.pageHeight - this.object.height))\n this.onUpdate({ x, y })\n }\n }\n\n if (this.mode === 'resize' && (this.resizeOffsetW !== 0 || this.resizeOffsetH !== 0 || this.resizeOffsetX !== 0 || this.resizeOffsetY !== 0)) {\n const x = this.object.x + this.resizeOffsetX\n const y = this.object.y + this.resizeOffsetY\n const width = this.object.width + this.resizeOffsetW\n const height = this.object.height + this.resizeOffsetH\n this.onUpdate({ x, y, width, height })\n }\n\n this.resetOffsets()\n this.onDragEnd()\n window.removeEventListener('mousemove', this.boundHandleMove)\n window.removeEventListener('mouseup', this.boundStopInteraction)\n window.removeEventListener('touchmove', this.boundHandleMove)\n window.removeEventListener('touchend', this.boundStopInteraction)\n },\n capturePageRect() {\n const wrapper = this.$el.closest('.page-wrapper')\n if (!wrapper) return null\n const canvas = wrapper.querySelector('canvas')\n return canvas ? canvas.getBoundingClientRect() : null\n },\n resetResizeOffsets() {\n this.resizeOffsetX = 0\n this.resizeOffsetY = 0\n this.resizeOffsetW = 0\n this.resizeOffsetH = 0\n },\n resetOffsets() {\n this.mode = 'idle'\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n this.pointerOffsetDoc = { x: 0, y: 0 }\n this.currentPageRect = null\n },\n },\n}\n</script>\n\n<style scoped>\n.draggable-wrapper {\n position: relative;\n}\n.actions-toolbar {\n position: absolute;\n display: flex;\n gap: 4px;\n background: #1f2937;\n border-radius: 6px;\n padding: 6px 8px;\n box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.15), 0 2px 6px -2px rgba(0, 0, 0, 0.1);\n z-index: 5;\n white-space: nowrap;\n}\n.action-btn {\n border: none;\n background: transparent;\n color: #ffffff;\n padding: 4px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 120ms ease;\n}\n.action-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n.draggable-element {\n position: absolute;\n cursor: move;\n user-select: none;\n border-radius: 6px;\n overflow: visible;\n}\n.draggable-element.selected {\n box-shadow: inset 0 0 0 2px #2563eb;\n}\n.resize-handle {\n all: unset;\n position: absolute;\n width: 12px;\n height: 12px;\n min-width: 0;\n min-height: 0;\n background: #2563eb;\n border: 1px solid #ffffff;\n border-radius: 3px;\n padding: 0;\n margin: 0;\n line-height: 0;\n font-size: 0;\n box-sizing: border-box;\n display: block;\n appearance: none;\n cursor: pointer;\n z-index: 5;\n}\n.handle-top-left {\n top: -7px;\n left: -7px;\n cursor: nwse-resize;\n}\n.handle-top-right {\n top: -7px;\n right: -7px;\n cursor: nesw-resize;\n}\n.handle-bottom-left {\n bottom: -7px;\n left: -7px;\n cursor: nesw-resize;\n}\n.handle-bottom-right {\n bottom: -7px;\n right: -7px;\n cursor: nwse-resize;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DraggableElement.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DraggableElement.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DraggableElement.vue?vue&type=template&id=9f1fd9e4&scoped=true\"\nimport script from \"./DraggableElement.vue?vue&type=script&lang=js\"\nexport * from \"./DraggableElement.vue?vue&type=script&lang=js\"\nimport style0 from \"./DraggableElement.vue?vue&type=style&index=0&id=9f1fd9e4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9f1fd9e4\",\n null\n \n)\n\nexport default component.exports","/**\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","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { getDocument, GlobalWorkerOptions, PDFWorker } from 'pdfjs-dist'\nimport pdfWorkerCode from 'pdfjs-dist/build/pdf.worker.min.mjs'\n\nGlobalWorkerOptions.workerSrc = pdfWorkerCode\n\nlet sharedWorker = null\n\nfunction getSharedWorker() {\n if (!sharedWorker) {\n sharedWorker = new PDFWorker({ name: 'libresign-pdf-worker' })\n }\n return sharedWorker\n}\n\nexport function setWorkerPath(path) {\n GlobalWorkerOptions.workerSrc = path\n}\n\nexport function readAsArrayBuffer(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => resolve(reader.result)\n reader.onerror = reject\n reader.readAsArrayBuffer(file)\n })\n}\n\nexport function readAsPDF(file) {\n const worker = getSharedWorker()\n const isArrayBuffer = file instanceof ArrayBuffer\n const isView = ArrayBuffer.isView(file)\n const isBlob = typeof Blob !== 'undefined' && file instanceof Blob\n\n if (file && typeof file === 'object' && !isArrayBuffer && !isView && !isBlob) {\n return getDocument({ ...file, worker }).promise\n }\n if (typeof file === 'string') {\n return getDocument({ url: file, worker }).promise\n }\n return getDocument({ data: file, worker }).promise\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function clampPosition(x, y, width, height, pageWidth, pageHeight) {\n return {\n x: Math.max(0, Math.min(x, pageWidth - width)),\n y: Math.max(0, Math.min(y, pageHeight - height)),\n }\n}\n\nexport function getVisibleArea(newX, newY, objWidth, objHeight, pageWidth, pageHeight) {\n const visibleLeft = Math.max(0, newX)\n const visibleTop = Math.max(0, newY)\n const visibleRight = Math.min(pageWidth, newX + objWidth)\n const visibleBottom = Math.min(pageHeight, newY + objHeight)\n if (visibleRight <= visibleLeft || visibleBottom <= visibleTop) {\n return 0\n }\n return (visibleRight - visibleLeft) * (visibleBottom - visibleTop)\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function getViewportWindow(scrollTop, viewHeight, margin = 300) {\n return {\n minY: Math.max(0, scrollTop - margin),\n maxY: scrollTop + viewHeight + margin,\n }\n}\n\nexport function isPageInViewport(offsetTop, offsetHeight, minY, maxY) {\n return !(offsetTop + offsetHeight < minY || offsetTop > maxY)\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function applyScaleToDocs(docs, scale) {\n docs.forEach((doc) => {\n doc.pagesScale = doc.pagesScale.map(() => scale)\n })\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function objectIdExistsInDoc(doc, objectId) {\n if (!doc || !objectId) return false\n return doc.allObjects.some((objects) => objects.some((obj) => obj.id === objectId))\n}\n\nexport function findObjectPageIndex(doc, objectId) {\n if (!doc || !objectId) return undefined\n for (let pageIndex = 0; pageIndex < doc.allObjects.length; pageIndex++) {\n if (doc.allObjects[pageIndex].some((obj) => obj.id === objectId)) {\n return pageIndex\n }\n }\n return undefined\n}\n\nexport function updateObjectInDoc(doc, pageIndex, objectId, payload) {\n const objects = doc?.allObjects?.[pageIndex]\n if (!objects) return false\n const objectIndex = objects.findIndex((obj) => obj.id === objectId)\n if (objectIndex === -1) return false\n objects.splice(objectIndex, 1, { ...objects[objectIndex], ...payload })\n return true\n}\n\nexport function removeObjectFromDoc(doc, pageIndex, objectId) {\n const objects = doc?.allObjects?.[pageIndex]\n if (!objects) return false\n const objectIndex = objects.findIndex((obj) => obj.id === objectId)\n if (objectIndex === -1) return false\n objects.splice(objectIndex, 1)\n return true\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {\n const cached = cache[cacheKey]\n if (cached) {\n return cached\n }\n const measurement = pageRef.getCanvasMeasurement()\n const normalized = {\n width: measurement.canvasWidth / pagesScale,\n height: measurement.canvasHeight / pagesScale,\n }\n cache[cacheKey] = normalized\n return normalized\n}\n","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <div :style=\"{ width, height }\" class=\"pdf-elements-root\">\n <div\n v-if=\"pdfDocuments.length\"\n class=\"pages-container\"\n >\n <div v-for=\"(pdfDoc, docIndex) in pdfDocuments\" :key=\"docIndex\">\n <div v-for=\"(page, pIndex) in pdfDoc.pages\" :key=\"`${docIndex}-${pIndex}`\" class=\"page-slot\">\n <div class=\"page-wrapper\"\n @mousedown=\"selectPage(docIndex, pIndex)\"\n @touchstart=\"selectPage(docIndex, pIndex)\">\n <div class=\"page-canvas\" :class=\"{ 'shadow-outline': docIndex === selectedDocIndex && pIndex === selectedPageIndex }\">\n <PDFPage\n :ref=\"`page${docIndex}-${pIndex}`\"\n :page=\"page\"\n :scale=\"scale\"\n @onMeasure=\"onMeasure($event, docIndex, pIndex)\"\n />\n <div\n class=\"overlay\"\n @mousemove=\"handleMouseMove\"\n @touchmove=\"handleMouseMove\"\n >\n <div\n v-if=\"isAddingMode && previewPageDocIndex === docIndex && previewPageIndex === pIndex && previewElement && previewVisible\"\n class=\"preview-element\"\n :style=\"{\n left: `${previewPosition.x * previewScale.x}px`,\n top: `${previewPosition.y * previewScale.y}px`,\n width: `${previewElement.width * previewScale.x}px`,\n height: `${previewElement.height * previewScale.y}px`,\n }\"\n >\n <slot\n :name=\"previewElement.type ? `element-${previewElement.type}` : 'custom'\"\n :object=\"previewElement\"\n :isSelected=\"false\"\n >\n <slot\n name=\"custom\"\n :object=\"previewElement\"\n :isSelected=\"false\"\n />\n </slot>\n </div>\n\n <DraggableElement\n v-for=\"object in pdfDoc.allObjects[pIndex]\"\n :key=\"object.id\"\n :ref=\"`draggable${docIndex}-${pIndex}-${object.id}`\"\n :object=\"object\"\n :pages-scale=\"getDisplayedPageScale(docIndex, pIndex)\"\n :page-width=\"getPageWidth(docIndex, pIndex)\"\n :page-height=\"getPageHeight(docIndex, pIndex)\"\n :read-only=\"readOnly\"\n :on-update=\"(payload) => updateObject(docIndex, object.id, payload)\"\n :on-delete=\"() => deleteObject(docIndex, object.id)\"\n :on-duplicate=\"() => duplicateObject(docIndex, object.id)\"\n :on-drag-start=\"(mouseX, mouseY, pointerOffset, dragShift) => startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift)\"\n :on-drag-move=\"updateDraggingPosition\"\n :on-drag-end=\"stopDraggingElement\"\n :is-being-dragged-globally=\"isDraggingElement && draggingObject && draggingObject.id === object.id\"\n :dragging-client-pos=\"draggingClientPosition\"\n :current-doc-index=\"docIndex\"\n :current-page-index=\"pIndex\"\n :global-drag-doc-index=\"draggingDocIndex\"\n :global-drag-page-index=\"draggingPageIndex\"\n :show-selection-ui=\"showSelectionHandles && !hideSelectionUI && object.resizable !== false\"\n :show-default-actions=\"showElementActions && !hideSelectionUI\"\n :ignore-click-outside-selectors=\"ignoreClickOutsideSelectors\"\n >\n <template #default=\"slotProps\">\n <slot\n :name=\"slotProps.object.type ? `element-${slotProps.object.type}` : 'custom'\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onResize=\"slotProps.onResize\"\n >\n <slot\n name=\"custom\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onResize=\"slotProps.onResize\"\n />\n </slot>\n </template>\n <template #actions=\"slotProps\">\n <slot\n name=\"actions\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onDuplicate=\"slotProps.onDuplicate\"\n />\n </template>\n </DraggableElement>\n </div>\n </div>\n <div v-if=\"showPageFooter\" class=\"page-footer\">\n <span>{{ pdfDoc.name }}</span>\n <span>{{ formatPageNumber(pIndex + 1, pdfDoc.numPages) }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"isDraggingElement && draggingObject\"\n class=\"drag-portal\"\n :style=\"{\n position: 'fixed',\n left: `${draggingClientPosition.x}px`,\n top: `${draggingClientPosition.y}px`,\n width: `${draggingObject.width * draggingScale}px`,\n height: `${draggingObject.height * draggingScale}px`,\n pointerEvents: 'none',\n }\"\n >\n <slot\n :name=\"draggingObject.type ? `element-${draggingObject.type}` : 'custom'\"\n :object=\"draggingObject\"\n :isSelected=\"false\"\n >\n <slot\n name=\"custom\"\n :object=\"draggingObject\"\n :isSelected=\"false\"\n />\n </slot>\n </div>\n\n </div>\n</template>\n\n<script>\nimport PDFPage from './PDFPage.vue'\nimport DraggableElement from './DraggableElement.vue'\nimport { readAsPDF, readAsArrayBuffer } from '../utils/asyncReader.js'\nimport { clampPosition, getVisibleArea } from '../utils/geometry.js'\nimport { getViewportWindow, isPageInViewport } from '../utils/pageBounds.js'\nimport { applyScaleToDocs } from '../utils/zoom.js'\nimport { objectIdExistsInDoc, findObjectPageIndex, updateObjectInDoc, removeObjectFromDoc } from '../utils/objectStore.js'\nimport { getCachedMeasurement } from '../utils/measurements.js'\n\nexport default {\n name: 'PDFElements',\n components: {\n PDFPage,\n DraggableElement,\n },\n props: {\n width: {\n type: String,\n default: '100%',\n },\n height: {\n type: String,\n default: '100%',\n },\n initFiles: {\n type: Array,\n default: () => [],\n },\n initFileNames: {\n type: Array,\n default: () => [],\n },\n initialScale: {\n type: Number,\n default: 1,\n },\n showPageFooter: {\n type: Boolean,\n default: true,\n },\n hideSelectionUI: {\n type: Boolean,\n default: false,\n },\n showSelectionHandles: {\n type: Boolean,\n default: true,\n },\n showElementActions: {\n type: Boolean,\n default: true,\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n ignoreClickOutsideSelectors: {\n type: Array,\n default: () => [],\n },\n pageCountFormat: {\n type: String,\n default: '{currentPage} of {totalPages}',\n },\n autoFitZoom: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n scale: this.initialScale,\n pdfDocuments: [],\n selectedDocIndex: -1,\n selectedPageIndex: -1,\n isAddingMode: false,\n previewElement: null,\n previewPosition: { x: 0, y: 0 },\n previewScale: { x: 1, y: 1 },\n previewPageDocIndex: -1,\n previewPageIndex: -1,\n previewVisible: false,\n hoverRafId: 0,\n pendingHoverClientPos: null,\n lastHoverRect: null,\n addingListenersAttached: false,\n dragRafId: 0,\n pendingDragClientPos: null,\n pageBoundsVersion: 0,\n lastScrollTop: 0,\n lastClientWidth: 0,\n nextObjectCounter: 0,\n isDraggingElement: false,\n draggingObject: null,\n draggingDocIndex: -1,\n draggingPageIndex: -1,\n draggingClientPosition: { x: 0, y: 0 },\n draggingScale: 1,\n draggingInitialMouseOffset: { x: 0, y: 0 },\n draggingElementShift: { x: 0, y: 0 },\n lastMouseClientPos: { x: 0, y: 0 },\n viewportRafId: 0,\n objectIndexCache: {},\n zoomRafId: null,\n wheelZoomRafId: null,\n boundHandleWheel: null,\n visualScale: this.initialScale,\n autoFitApplied: false,\n lastContainerWidth: 0,\n }\n },\n created() {\n this._pagesBoundingRects = {}\n this._pagesBoundingRectsList = []\n this._pageMeasurementCache = {}\n this._lastPageBoundsScrollTop = 0\n this._lastPageBoundsClientHeight = 0\n },\n mounted() {\n this.boundHandleWheel = this.handleWheel.bind(this)\n this.init()\n window.addEventListener('scroll', this.onViewportScroll, { passive: true })\n window.addEventListener('resize', this.onViewportScroll)\n this.$el?.addEventListener('scroll', this.onViewportScroll, { passive: true })\n this.$el?.addEventListener('wheel', this.boundHandleWheel, { passive: false })\n },\n beforeUnmount() {\n if (this.zoomRafId) {\n cancelAnimationFrame(this.zoomRafId)\n }\n if (this.wheelZoomRafId) {\n cancelAnimationFrame(this.wheelZoomRafId)\n this.wheelZoomRafId = null\n }\n if (this.boundHandleWheel) {\n this.$el?.removeEventListener('wheel', this.boundHandleWheel)\n }\n this.detachAddingListeners()\n window.removeEventListener('scroll', this.onViewportScroll)\n window.removeEventListener('resize', this.onViewportScroll)\n this.$el?.removeEventListener('scroll', this.onViewportScroll)\n if (this.viewportRafId) {\n window.cancelAnimationFrame(this.viewportRafId)\n this.viewportRafId = 0\n }\n if (this.hoverRafId) {\n window.cancelAnimationFrame(this.hoverRafId)\n this.hoverRafId = 0\n }\n if (this.dragRafId) {\n window.cancelAnimationFrame(this.dragRafId)\n this.dragRafId = 0\n }\n },\n methods: {\n async init() {\n if (!this.initFiles || this.initFiles.length === 0) return\n const docs = []\n this.autoFitApplied = false\n\n for (let i = 0; i < this.initFiles.length; i++) {\n const file = this.initFiles[i]\n const name = this.initFileNames[i] || `document-${i + 1}.pdf`\n\n let pdfDoc\n if (file instanceof Blob) {\n const buffer = await readAsArrayBuffer(file)\n pdfDoc = await readAsPDF({ data: buffer })\n } else {\n pdfDoc = await readAsPDF(file)\n }\n\n const pages = []\n const pageWidths = Array(pdfDoc.numPages).fill(0)\n for (let p = 1; p <= pdfDoc.numPages; p++) {\n const pagePromise = pdfDoc.getPage(p)\n pagePromise.then((page) => {\n pageWidths.splice(p - 1, 1, page.getViewport({ scale: 1 }).width)\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n })\n pages.push(pagePromise)\n }\n\n docs.push({\n name,\n file,\n pdfDoc,\n numPages: pdfDoc.numPages,\n pages,\n pageWidths,\n pagesScale: Array(pdfDoc.numPages).fill(this.scale),\n allObjects: Array(pdfDoc.numPages).fill(0).map(() => []),\n })\n }\n\n this.pdfDocuments = docs\n this._pageMeasurementCache = {}\n if (docs.length) {\n this.selectedDocIndex = 0\n this.selectedPageIndex = 0\n this.$emit('pdf-elements:end-init', { docsCount: docs.length })\n this.$nextTick(() => {\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n })\n }\n },\n\n selectPage(docIndex, pageIndex) {\n this.selectedDocIndex = docIndex\n this.selectedPageIndex = pageIndex\n },\n\n startDraggingElement(docIndex, pageIndex, object, mouseX, mouseY, pointerOffset, dragShift) {\n this.isDraggingElement = true\n this.draggingObject = { ...object }\n this.draggingDocIndex = docIndex\n this.draggingPageIndex = pageIndex\n this.draggingScale = this.getDisplayedPageScale(docIndex, pageIndex)\n this.lastMouseClientPos.x = mouseX\n this.lastMouseClientPos.y = mouseY\n this.draggingElementShift = dragShift && typeof dragShift.x === 'number' && typeof dragShift.y === 'number'\n ? dragShift\n : { x: 0, y: 0 }\n\n this.cachePageBounds()\n const pageRect = this.getPageRect(docIndex, pageIndex)\n if (pointerOffset && typeof pointerOffset.x === 'number' && typeof pointerOffset.y === 'number') {\n this.draggingInitialMouseOffset.x = pointerOffset.x\n this.draggingInitialMouseOffset.y = pointerOffset.y\n this.draggingClientPosition.x = mouseX - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = mouseY - this.draggingInitialMouseOffset.y\n } else if (pageRect) {\n const elementScreenX = pageRect.left + (object.x * this.draggingScale)\n const elementScreenY = pageRect.top + (object.y * this.draggingScale)\n this.draggingInitialMouseOffset.x = mouseX - elementScreenX\n this.draggingInitialMouseOffset.y = mouseY - elementScreenY\n\n this.draggingClientPosition.x = mouseX - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = mouseY - this.draggingInitialMouseOffset.y\n }\n\n },\n\n updateDraggingPosition(clientX, clientY) {\n if (!this.isDraggingElement) return\n\n this.pendingDragClientPos = { x: clientX, y: clientY }\n if (this.dragRafId) return\n this.dragRafId = window.requestAnimationFrame(() => {\n this.dragRafId = 0\n const pending = this.pendingDragClientPos\n if (!pending) return\n this.lastMouseClientPos.x = pending.x\n this.lastMouseClientPos.y = pending.y\n this.draggingClientPosition.x = pending.x - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = pending.y - this.draggingInitialMouseOffset.y\n })\n },\n\n stopDraggingElement() {\n if (this.draggingObject) {\n const objectId = this.draggingObject.id\n const originalDocIndex = this.draggingDocIndex\n\n const finalPageIndex = this.checkAndMoveObjectPage(\n this.draggingDocIndex,\n objectId,\n this.lastMouseClientPos.x,\n this.lastMouseClientPos.y\n )\n\n if (finalPageIndex !== undefined) {\n this.$nextTick(() => {\n this.selectPage(originalDocIndex, finalPageIndex)\n\n const refKey = `draggable${originalDocIndex}-${finalPageIndex}-${objectId}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n }\n }\n this.isDraggingElement = false\n this.draggingObject = null\n this.draggingDocIndex = -1\n this.draggingPageIndex = -1\n this.draggingElementShift = { x: 0, y: 0 }\n this.pendingDragClientPos = null\n },\n\n startAddingElement(templateObject) {\n if (!this.pdfDocuments.length) return\n this.attachAddingListeners()\n this.isAddingMode = true\n this.previewElement = { ...templateObject }\n this.previewPageDocIndex = 0\n this.previewPageIndex = 0\n this.previewVisible = false\n this.previewScale = { x: 1, y: 1 }\n this.cachePageBounds()\n },\n\n cachePageBounds() {\n const nextRects = {}\n const container = this.$el\n const scrollTop = container?.scrollTop || 0\n const viewHeight = container?.clientHeight || 0\n if (!this.isAddingMode && !this.isDraggingElement &&\n scrollTop === this._lastPageBoundsScrollTop &&\n viewHeight === this._lastPageBoundsClientHeight) {\n return\n }\n this._lastPageBoundsScrollTop = scrollTop\n this._lastPageBoundsClientHeight = viewHeight\n const { minY, maxY } = getViewportWindow(scrollTop, viewHeight)\n for (let docIdx = 0; docIdx < this.pdfDocuments.length; docIdx++) {\n for (let pageIdx = 0; pageIdx < this.pdfDocuments[docIdx].pages.length; pageIdx++) {\n const canvas = this.getPageCanvasElement(docIdx, pageIdx)\n if (!canvas) continue\n if (viewHeight) {\n const wrapper = canvas.closest('.page-wrapper') || canvas\n const offsetTop = wrapper.offsetTop || 0\n const offsetHeight = wrapper.offsetHeight || 0\n if (!isPageInViewport(offsetTop, offsetHeight, minY, maxY)) {\n continue\n }\n }\n const rect = canvas.getBoundingClientRect()\n nextRects[`${docIdx}-${pageIdx}`] = {\n docIndex: docIdx,\n pageIndex: pageIdx,\n rect,\n }\n }\n }\n this._pagesBoundingRects = nextRects\n this._pagesBoundingRectsList = Object.values(nextRects)\n this.pageBoundsVersion++\n },\n cachePageBoundsForPage(docIndex, pageIndex) {\n const canvas = this.getPageCanvasElement(docIndex, pageIndex)\n if (!canvas) return\n const rect = canvas.getBoundingClientRect()\n this._pagesBoundingRects = {\n ...this._pagesBoundingRects,\n [`${docIndex}-${pageIndex}`]: {\n docIndex,\n pageIndex,\n rect,\n },\n }\n this._pagesBoundingRectsList = Object.values(this._pagesBoundingRects)\n this.pageBoundsVersion++\n },\n getPageBoundsMap() {\n return this._pagesBoundingRects || {}\n },\n getPageBoundsList() {\n return this._pagesBoundingRectsList || []\n },\n getPageRect(docIndex, pageIndex) {\n return this.getPageBoundsMap()[`${docIndex}-${pageIndex}`]?.rect || null\n },\n getPointerPosition(event) {\n if (event?.type?.includes?.('touch')) {\n return {\n x: event.touches?.[0]?.clientX,\n y: event.touches?.[0]?.clientY,\n }\n }\n return {\n x: event?.clientX,\n y: event?.clientY,\n }\n },\n\n getDisplayedPageScale(docIndex, pageIndex) {\n this.pageBoundsVersion\n const doc = this.pdfDocuments[docIndex]\n if (!doc) return 1\n const baseWidth = doc.pageWidths?.[pageIndex] || 0\n const pageBoundsMap = this.getPageBoundsMap()\n if (!pageBoundsMap[`${docIndex}-${pageIndex}`]) {\n this.cachePageBoundsForPage(docIndex, pageIndex)\n }\n const rectWidth = this.getPageBoundsMap()[`${docIndex}-${pageIndex}`]?.rect?.width || 0\n if (rectWidth && baseWidth) {\n return rectWidth / baseWidth\n }\n if (this.isAddingMode || this.isDraggingElement) {\n const canvas = this.getPageCanvasElement(docIndex, pageIndex)\n const fallbackRectWidth = canvas?.getBoundingClientRect?.().width || 0\n if (fallbackRectWidth && baseWidth) {\n return fallbackRectWidth / baseWidth\n }\n }\n const base = doc.pagesScale[pageIndex] || 1\n const factor = this.visualScale && this.scale ? (this.visualScale / this.scale) : 1\n return base * factor\n },\n getPageComponent(docIndex, pageIndex) {\n const pageRef = this.$refs[`page${docIndex}-${pageIndex}`]\n return pageRef && Array.isArray(pageRef) && pageRef[0] ? pageRef[0] : null\n },\n getPageCanvasElement(docIndex, pageIndex) {\n const pageComponent = this.getPageComponent(docIndex, pageIndex)\n return pageComponent ? (pageComponent.$el || pageComponent) : null\n },\n\n onViewportScroll() {\n if (this.viewportRafId) return\n this.viewportRafId = window.requestAnimationFrame(() => {\n const container = this.$el\n const scrollTop = container?.scrollTop || 0\n const clientWidth = container?.clientWidth || 0\n const scrollChanged = scrollTop !== this.lastScrollTop\n const widthChanged = clientWidth !== this.lastClientWidth\n this.lastScrollTop = scrollTop\n this.lastClientWidth = clientWidth\n\n if (this.isAddingMode || this.isDraggingElement) {\n if (scrollChanged || widthChanged) {\n this.cachePageBounds()\n }\n }\n if (this.autoFitZoom && !this.isAddingMode && !this.isDraggingElement) {\n if (clientWidth && widthChanged) {\n this.lastContainerWidth = clientWidth\n this.autoFitApplied = false\n this.scheduleAutoFitZoom()\n }\n }\n this.viewportRafId = 0\n })\n },\n\n handleMouseMove(event) {\n if (!this.isAddingMode || !this.previewElement) return\n const { x, y } = this.getPointerPosition(event)\n if (x === undefined || y === undefined) return\n this.pendingHoverClientPos = { x, y }\n if (this.hoverRafId) return\n this.hoverRafId = window.requestAnimationFrame(() => {\n this.hoverRafId = 0\n const pending = this.pendingHoverClientPos\n if (!pending) return\n\n const cursorX = pending.x\n const cursorY = pending.y\n let target = null\n\n if (this.lastHoverRect &&\n cursorX >= this.lastHoverRect.left && cursorX <= this.lastHoverRect.right &&\n cursorY >= this.lastHoverRect.top && cursorY <= this.lastHoverRect.bottom) {\n target = {\n docIndex: this.previewPageDocIndex,\n pageIndex: this.previewPageIndex,\n rect: this.lastHoverRect,\n }\n } else {\n const rects = this.getPageBoundsList().length\n ? this.getPageBoundsList()\n : Object.values(this.getPageBoundsMap())\n for (let i = 0; i < rects.length; i++) {\n const entry = rects[i]\n const rect = entry.rect\n if (cursorX >= rect.left && cursorX <= rect.right &&\n cursorY >= rect.top && cursorY <= rect.bottom) {\n target = entry\n break\n }\n }\n }\n\n if (!target) {\n this.previewVisible = false\n this.previewScale = { x: 1, y: 1 }\n this.lastHoverRect = null\n return\n }\n\n this.previewPageDocIndex = target.docIndex\n this.previewPageIndex = target.pageIndex\n this.lastHoverRect = target.rect\n const canvasEl = this.getPageCanvasElement(target.docIndex, target.pageIndex)\n const pagesScale = this.pdfDocuments[target.docIndex]?.pagesScale?.[target.pageIndex] || 1\n const renderWidth = canvasEl?.width || target.rect.width\n const renderHeight = canvasEl?.height || target.rect.height\n const layoutScaleX = renderWidth ? target.rect.width / renderWidth : 1\n const layoutScaleY = renderHeight ? target.rect.height / renderHeight : 1\n const relX = (cursorX - target.rect.left) / layoutScaleX / pagesScale\n const relY = (cursorY - target.rect.top) / layoutScaleY / pagesScale\n\n const pageWidth = renderWidth / pagesScale\n const pageHeight = renderHeight / pagesScale\n this.previewScale.x = pagesScale\n this.previewScale.y = pagesScale\n let x = relX - this.previewElement.width / 2\n let y = relY - this.previewElement.height / 2\n\n x = Math.max(0, Math.min(x, pageWidth - this.previewElement.width))\n y = Math.max(0, Math.min(y, pageHeight - this.previewElement.height))\n\n this.previewPosition.x = x\n this.previewPosition.y = y\n this.previewVisible = true\n })\n },\n\n handleKeyDown(event) {\n if (event.key === 'Escape' && this.isAddingMode) {\n this.cancelAdding()\n }\n },\n\n handleWheel(event) {\n if (!event.ctrlKey) return\n event.preventDefault()\n\n const factor = 1 - (event.deltaY * 0.002)\n const nextVisual = Math.max(0.5, Math.min(3.0, this.visualScale * factor))\n this.visualScale = nextVisual\n if (this.wheelZoomRafId) return\n this.wheelZoomRafId = window.requestAnimationFrame(() => {\n this.wheelZoomRafId = null\n this.commitZoom()\n })\n },\n\n commitZoom() {\n const newScale = this.visualScale\n\n this.scale = newScale\n\n applyScaleToDocs(this.pdfDocuments, this.scale)\n\n this._pageMeasurementCache = {}\n this.cachePageBounds()\n },\n\n finishAdding() {\n if (!this.isAddingMode || !this.previewElement) return\n if (!this.previewVisible) return\n\n const objectToAdd = {\n ...this.previewElement,\n id: this.generateObjectId(),\n x: Math.round(this.previewPosition.x),\n y: Math.round(this.previewPosition.y),\n }\n\n const doc = this.pdfDocuments[this.previewPageDocIndex]\n const pageWidth = this.getPageWidth(this.previewPageDocIndex, this.previewPageIndex)\n const pageHeight = this.getPageHeight(this.previewPageDocIndex, this.previewPageIndex)\n\n if (objectToAdd.x < 0 || objectToAdd.y < 0 ||\n objectToAdd.x + objectToAdd.width > pageWidth ||\n objectToAdd.y + objectToAdd.height > pageHeight) {\n this.cancelAdding()\n return\n }\n\n doc.allObjects[this.previewPageIndex].push(objectToAdd)\n\n const pageIndex = this.previewPageIndex\n const docIndex = this.previewPageDocIndex\n const objectId = objectToAdd.id\n\n this.cancelAdding()\n\n this.$nextTick(() => {\n const refKey = `draggable${docIndex}-${pageIndex}-${objectId}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n },\n\n cancelAdding() {\n this.isAddingMode = false\n this.previewElement = null\n this.previewVisible = false\n this.detachAddingListeners()\n },\n generateObjectId() {\n const counter = this.nextObjectCounter++\n const rand = Math.random().toString(36).slice(2, 8)\n return `obj-${Date.now()}-${counter}-${rand}`\n },\n attachAddingListeners() {\n if (this.addingListenersAttached) return\n this.addingListenersAttached = true\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('touchmove', this.handleMouseMove, { passive: true })\n document.addEventListener('mouseup', this.finishAdding)\n document.addEventListener('touchend', this.finishAdding)\n document.addEventListener('keydown', this.handleKeyDown)\n },\n detachAddingListeners() {\n if (!this.addingListenersAttached) return\n this.addingListenersAttached = false\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('touchmove', this.handleMouseMove, { passive: true })\n document.removeEventListener('mouseup', this.finishAdding)\n document.removeEventListener('touchend', this.finishAdding)\n document.removeEventListener('keydown', this.handleKeyDown)\n },\n\n addObjectToPage(object, pageIndex = this.selectedPageIndex, docIndex = this.selectedDocIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return false\n if (pageIndex < 0 || pageIndex >= this.pdfDocuments[docIndex].pages.length) return false\n\n const doc = this.pdfDocuments[docIndex]\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return false\n\n let objectToAdd = object\n if (!objectToAdd.id || this.objectIdExists(docIndex, objectToAdd.id)) {\n objectToAdd = { ...objectToAdd, id: this.generateObjectId() }\n }\n\n const pageWidth = this.getPageWidth(docIndex, pageIndex)\n const pageHeight = this.getPageHeight(docIndex, pageIndex)\n\n if (objectToAdd.x < 0 || objectToAdd.y < 0 ||\n objectToAdd.x + objectToAdd.width > pageWidth ||\n objectToAdd.y + objectToAdd.height > pageHeight) {\n return false\n }\n\n doc.allObjects[pageIndex].push(objectToAdd)\n this.objectIndexCache[`${docIndex}-${objectToAdd.id}`] = pageIndex\n return true\n },\n objectIdExists(docIndex, objectId) {\n if (!objectId) return false\n const cacheKey = `${docIndex}-${objectId}`\n if (this.objectIndexCache[cacheKey] !== undefined) return true\n const doc = this.pdfDocuments[docIndex]\n return objectIdExistsInDoc(doc, objectId)\n },\n updateObjectInPage(docIndex, pageIndex, objectId, payload) {\n const doc = this.pdfDocuments[docIndex]\n updateObjectInDoc(doc, pageIndex, objectId, payload)\n },\n removeObjectFromPage(docIndex, pageIndex, objectId) {\n const doc = this.pdfDocuments[docIndex]\n removeObjectFromDoc(doc, pageIndex, objectId)\n },\n\n getAllObjects(docIndex = this.selectedDocIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return []\n\n const doc = this.pdfDocuments[docIndex]\n const result = []\n\n doc.allObjects.forEach((pageObjects, pageIndex) => {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n const normalizedCanvasHeight = measurement.height\n const pagesScale = doc.pagesScale[pageIndex] || 1\n\n pageObjects.forEach(object => {\n result.push({\n ...object,\n pageIndex,\n pageNumber: pageIndex + 1,\n scale: pagesScale,\n normalizedCoordinates: {\n llx: parseInt(object.x, 10),\n lly: parseInt(normalizedCanvasHeight - object.y, 10),\n ury: parseInt(normalizedCanvasHeight - object.y - object.height, 10),\n width: parseInt(object.width, 10),\n height: parseInt(object.height, 10),\n },\n })\n })\n })\n\n return result\n },\n\n updateObject(docIndex, objectId, payload) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let currentPageIndex = this.objectIndexCache[cacheKey]\n\n if (currentPageIndex === undefined) {\n currentPageIndex = findObjectPageIndex(doc, objectId)\n if (currentPageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = currentPageIndex\n }\n }\n\n if (currentPageIndex === undefined) return\n\n const targetObject = doc.allObjects[currentPageIndex]?.find(o => o.id === objectId)\n if (!targetObject) return\n\n if (payload._globalDrag && payload._mouseX !== undefined && payload._mouseY !== undefined) {\n const mouseX = payload._mouseX\n const mouseY = payload._mouseY\n\n const pageBoundsMap = this.getPageBoundsMap()\n if (!pageBoundsMap || Object.keys(pageBoundsMap).length === 0) {\n this.cachePageBounds()\n }\n\n const currentPageRect = this.getPageRect(docIndex, currentPageIndex)\n if (currentPageRect) {\n const pagesScale = this.getDisplayedPageScale(docIndex, currentPageIndex)\n const relX = (mouseX - currentPageRect.left - this.draggingElementShift.x) / pagesScale - (this.draggingInitialMouseOffset.x / pagesScale)\n const relY = (mouseY - currentPageRect.top - this.draggingElementShift.y) / pagesScale - (this.draggingInitialMouseOffset.y / pagesScale)\n\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, { x: relX, y: relY })\n }\n return\n }\n\n if (payload.x !== undefined || payload.y !== undefined) {\n const newX = payload.x !== undefined ? payload.x : targetObject.x\n const newY = payload.y !== undefined ? payload.y : targetObject.y\n const objWidth = payload.width !== undefined ? payload.width : targetObject.width\n const objHeight = payload.height !== undefined ? payload.height : targetObject.height\n\n const { width: currentPageWidth, height: currentPageHeight } = this.getPageSize(docIndex, currentPageIndex)\n if (newX >= 0 && newY >= 0 &&\n newX + objWidth <= currentPageWidth &&\n newY + objHeight <= currentPageHeight) {\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, payload)\n return\n }\n\n let bestPageIndex = currentPageIndex\n let maxVisibleArea = 0\n\n for (let pIndex = 0; pIndex < doc.pages.length; pIndex++) {\n const pageWidth = this.getPageWidth(docIndex, pIndex)\n const pageHeight = this.getPageHeight(docIndex, pIndex)\n\n const visibleArea = getVisibleArea(newX, newY, objWidth, objHeight, pageWidth, pageHeight)\n if (visibleArea > maxVisibleArea) {\n maxVisibleArea = visibleArea\n bestPageIndex = pIndex\n }\n }\n\n if (bestPageIndex !== currentPageIndex) {\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, bestPageIndex)\n const { x: adjustedX, y: adjustedY } = clampPosition(newX, newY, objWidth, objHeight, pageWidth, pageHeight)\n\n this.removeObjectFromPage(docIndex, currentPageIndex, objectId)\n const updatedObject = {\n ...targetObject,\n ...payload,\n x: adjustedX,\n y: adjustedY,\n }\n doc.allObjects[bestPageIndex].push(updatedObject)\n this.objectIndexCache[`${docIndex}-${objectId}`] = bestPageIndex\n return\n }\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, currentPageIndex)\n\n if (newX < 0 || newY < 0 ||\n newX + objWidth > pageWidth ||\n newY + objHeight > pageHeight) {\n return\n }\n }\n\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, payload)\n },\n\n deleteObject(docIndex, objectId) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n let deletedObject = null\n let deletedPageIndex = -1\n\n doc.allObjects.some((objects, pageIndex) => {\n const objectIndex = objects.findIndex(object => object.id === objectId)\n if (objectIndex === -1) {\n return false\n }\n deletedObject = objects[objectIndex]\n deletedPageIndex = pageIndex\n objects.splice(objectIndex, 1)\n return true\n })\n delete this.objectIndexCache[`${docIndex}-${objectId}`]\n if (deletedObject) {\n this.$emit('pdf-elements:delete-object', {\n object: deletedObject,\n docIndex,\n pageIndex: deletedPageIndex,\n })\n }\n },\n duplicateObject(docIndex, objectId) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let pageIndex = this.objectIndexCache[cacheKey]\n\n if (pageIndex === undefined) {\n pageIndex = findObjectPageIndex(doc, objectId)\n if (pageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = pageIndex\n }\n }\n\n if (pageIndex === undefined) return\n\n const sourceObject = doc.allObjects[pageIndex]?.find(o => o.id === objectId)\n if (!sourceObject) return\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, pageIndex)\n const offset = 12\n const { x, y } = clampPosition(\n sourceObject.x + offset,\n sourceObject.y + offset,\n sourceObject.width,\n sourceObject.height,\n pageWidth,\n pageHeight,\n )\n\n let duplicatedSigner = sourceObject.signer\n if (duplicatedSigner?.element && Object.prototype.hasOwnProperty.call(duplicatedSigner.element, 'elementId')) {\n duplicatedSigner = {\n ...duplicatedSigner,\n element: { ...duplicatedSigner.element },\n }\n delete duplicatedSigner.element.elementId\n }\n\n const duplicatedObject = {\n ...sourceObject,\n id: this.generateObjectId(),\n x,\n y,\n signer: duplicatedSigner,\n }\n\n doc.allObjects[pageIndex].push(duplicatedObject)\n this.objectIndexCache[`${docIndex}-${duplicatedObject.id}`] = pageIndex\n\n this.$nextTick(() => {\n const refKey = `draggable${docIndex}-${pageIndex}-${duplicatedObject.id}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n },\n\n checkAndMoveObjectPage(docIndex, objectId, mouseX, mouseY) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return undefined\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let currentPageIndex = this.objectIndexCache[cacheKey]\n\n if (currentPageIndex === undefined) {\n currentPageIndex = findObjectPageIndex(doc, objectId)\n if (currentPageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = currentPageIndex\n }\n }\n\n if (currentPageIndex === undefined) return undefined\n\n const targetObject = doc.allObjects[currentPageIndex]?.find(o => o.id === objectId)\n if (!targetObject) return currentPageIndex\n\n let targetPageIndex = currentPageIndex\n const pageBoundsMap = this.getPageBoundsMap()\n for (const key in pageBoundsMap) {\n const { docIndex: rectDocIndex, pageIndex, rect } = pageBoundsMap[key]\n if (rectDocIndex === docIndex &&\n mouseX >= rect.left && mouseX <= rect.right &&\n mouseY >= rect.top && mouseY <= rect.bottom) {\n targetPageIndex = pageIndex\n break\n }\n }\n\n const targetPageRect = this.getPageRect(docIndex, targetPageIndex)\n if (!targetPageRect) return currentPageIndex\n\n const pagesScale = this.getDisplayedPageScale(docIndex, targetPageIndex)\n const relX = (mouseX - targetPageRect.left - this.draggingElementShift.x) / pagesScale - (this.draggingInitialMouseOffset.x / pagesScale)\n const relY = (mouseY - targetPageRect.top - this.draggingElementShift.y) / pagesScale - (this.draggingInitialMouseOffset.y / pagesScale)\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, targetPageIndex)\n const { x: clampedX, y: clampedY } = clampPosition(\n relX,\n relY,\n targetObject.width,\n targetObject.height,\n pageWidth,\n pageHeight,\n )\n\n if (targetPageIndex !== currentPageIndex) {\n this.removeObjectFromPage(docIndex, currentPageIndex, objectId)\n doc.allObjects[targetPageIndex].push({\n ...targetObject,\n x: clampedX,\n y: clampedY,\n })\n this.objectIndexCache[cacheKey] = targetPageIndex\n } else if (clampedX !== targetObject.x || clampedY !== targetObject.y) {\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, { x: clampedX, y: clampedY })\n }\n\n return targetPageIndex\n },\n\n onMeasure(e, docIndex, pageIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n this.pdfDocuments[docIndex].pagesScale.splice(pageIndex, 1, e.scale)\n this._pageMeasurementCache[`${docIndex}-${pageIndex}`] = null\n this.cachePageBoundsForPage(docIndex, pageIndex)\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n },\n\n formatPageNumber(currentPage, totalPages) {\n return this.pageCountFormat\n .replace('{currentPage}', currentPage)\n .replace('{totalPages}', totalPages)\n },\n getPageWidth(docIndex, pageIndex) {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return 0\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n return measurement.width\n },\n getPageHeight(docIndex, pageIndex) {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return 0\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n return measurement.height\n },\n getPageSize(docIndex, pageIndex) {\n return {\n width: this.getPageWidth(docIndex, pageIndex),\n height: this.getPageHeight(docIndex, pageIndex),\n }\n },\n getCachedMeasurement(docIndex, pageIndex, pageRef) {\n const cacheKey = `${docIndex}-${pageIndex}`\n const doc = this.pdfDocuments[docIndex]\n const pagesScale = doc.pagesScale[pageIndex] || 1\n return getCachedMeasurement(this._pageMeasurementCache, cacheKey, pageRef, pagesScale)\n },\n calculateOptimalScale(maxPageWidth) {\n const containerWidth = this.$el?.clientWidth || 0\n if (!containerWidth || !maxPageWidth) return 1\n\n const availableWidth = containerWidth - 40\n return Math.max(0.1, Math.min(2, availableWidth / maxPageWidth))\n },\n scheduleAutoFitZoom() {\n if (this.autoFitApplied) return\n if (this.zoomRafId) return\n this.zoomRafId = window.requestAnimationFrame(() => {\n this.zoomRafId = 0\n this.adjustZoomToFit()\n })\n },\n adjustZoomToFit() {\n if (!this.autoFitZoom || this.autoFitApplied || !this.pdfDocuments.length) return\n\n const widths = this.pdfDocuments\n .flatMap(doc => doc.pageWidths || [])\n .filter(width => width > 0)\n\n let maxCanvasWidth = 0\n if (widths.length) {\n maxCanvasWidth = Math.max(...widths)\n } else {\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n return\n }\n const canvases = this.$el?.querySelectorAll('canvas')\n if (!canvases?.length) return\n maxCanvasWidth = Math.max(...Array.from(canvases).map(canvas =>\n canvas.width / (this.scale || 1),\n ))\n }\n\n const optimalScale = this.calculateOptimalScale(maxCanvasWidth)\n this.autoFitApplied = true\n if (Math.abs(optimalScale - this.scale) > 0.01) {\n this.scale = optimalScale\n this.visualScale = optimalScale\n applyScaleToDocs(this.pdfDocuments, this.scale)\n this._pageMeasurementCache = {}\n this.cachePageBounds()\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.pdf-elements-root {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n.pages-container {\n width: 100%;\n padding: 20px 0 0 0;\n text-align: center;\n background: #f7fafc;\n overflow: hidden;\n}\n.page-slot {\n margin: 0 auto;\n}\n.page-wrapper {\n display: inline-block;\n margin-bottom: 0;\n}\n.page-canvas {\n position: relative;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n}\n.shadow-outline {\n box-shadow: 0 0 0 3px rgb(66 153 225 / 50%);\n}\n.preview-element {\n position: absolute;\n opacity: 0.7;\n pointer-events: none;\n}\n.overlay {\n position: absolute;\n top: 0;\n left: 0;\n transform-origin: top left;\n width: 100%;\n height: 100%;\n}\n.page-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px 20px 20px;\n color: #4b5563;\n font-size: 14px;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFElements.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFElements.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PDFElements.vue?vue&type=template&id=46de43ea&scoped=true\"\nimport script from \"./PDFElements.vue?vue&type=script&lang=js\"\nexport * from \"./PDFElements.vue?vue&type=script&lang=js\"\nimport style0 from \"./PDFElements.vue?vue&type=style&index=0&id=46de43ea&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46de43ea\",\n null\n \n)\n\nexport default component.exports","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport PDFElements from './components/PDFElements.vue'\nexport { setWorkerPath } from './utils/asyncReader.js'\n\nPDFElements.install = function(Vue) {\n if (PDFElements.install.installed) return\n Vue.component(PDFElements.name, PDFElements)\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n PDFElements.install(window.Vue)\n}\n\nexport default PDFElements\nexport { PDFElements }\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","define","amd","self","this","isCallable","it","call","aCallable","anObject","tryToString","getIteratorMethod","$TypeError","TypeError","argument","usingIterator","iteratorMethod","arguments","length","$","iterate","getIteratorDirect","iteratorClose","iteratorHelperWithoutClosingOnEarlyError","findWithoutClosingOnEarlyError","target","proto","real","forced","find","predicate","error","record","counter","value","stop","IS_RECORD","INTERRUPTED","result","uncurryThis","fails","hasOwn","DESCRIPTORS","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","get","$String","String","defineProperty","Object","stringSlice","slice","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","split","makeBuiltIn","name","options","getter","setter","configurable","arity","constructor","writable","prototype","undefined","state","source","Function","toString","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","EXISTS","PROPER","CONFIGURABLE","getBuiltIn","getIteratorFlattenable","createIteratorProxy","IS_PURE","iteratorHelperThrowsOnInvalidIterator","FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","flatMapWithoutClosingOnEarlyError","FORCED","IteratorProxy","inner","iterator","mapper","next","done","flatMap","test","bind","hasOwnProperty","isPrototypeOf","Prototype","methodName","method","Iterator","ceil","Math","floor","trunc","x","n","USE_SYMBOL_AS_UID","$Object","$Symbol","classof","getMethod","isNullOrUndefined","Iterators","wellKnownSymbol","ITERATOR","internalObjectKeys","enumBugKeys","keys","O","set","has","NATIVE_WEAK_MAP","globalThis","isObject","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","getterFor","TYPE","type","store","metadata","facade","STATE","number","iters","kind","i","V8","ENVIRONMENT","structuredClone","buffer","ArrayBuffer","clone","transfer","byteLength","callWithSafeIterationClosing","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","map","obj","toIndexedObject","indexOf","push","object","names","key","descriptor","f","TO_STRING_TAG","F","getPrototypeOf","activeXDocument","definePropertiesModule","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","style","display","appendChild","src","contentWindow","document","open","NullProtoObject","ActiveXObject","domain","create","Properties","FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR","filterWithoutClosingOnEarlyError","filter","isArrayIteratorMethod","lengthOfArrayLike","getIterator","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","index","step","that","AS_ENTRIES","IS_ITERATOR","fn","condition","callFn","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","navigator","userAgent","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","DataView","id","postfix","random","someWithoutClosingOnEarlyError","some","functionToString","getOwnPropertySymbols","createElement","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","Array","userAgentStartsWith","Bun","version","Deno","process","window","val","valueOf","isArray","WorkerThreads","channel","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","postMessage","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","IteratorPrototype","CLOSED","check","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","enumerable","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","isDetached","IndexedObject","requireObjectCoercible","toIntegerOrInfinity","max","min","integer","uncurryThisAccessor","toIndex","notDetached","detachTransferable","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","a","b","copyLength","V","func","NATIVE_BIND","apply","uid","toLength","defineBuiltIn","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","global","STATIC","stat","dontCallGetSet","defineBuiltInAccessor","objectKeys","defineProperties","props","MAX_SAFE_INTEGER","simple","unsafe","nonConfigurable","nonWritable","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","toPrimitive","bitmap","NATIVE_SYMBOL","propertyIsEnumerable","propertyIsEnumerableModule","forEachWithoutClosingOnEarlyError","forEach","SHARED","versions","mode","copyright","license","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","$RangeError","RangeError","ownKeys","getOwnPropertyDescriptorModule","exceptions","aFunction","namespace","$transfer","transferToFixedLength","anInstance","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getOwnPropertyNames","stringHandling","$propertyIsEnumerable","NASHORN_BUG","exec","IS_NODE","getBuiltinModule","defineBuiltIns","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","uncurryThisWithBind","match","v8","innerResult","innerError","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","prop","p","currentScript","render","_vm","_c","_self","staticClass","width","height","pdfDocuments","_l","pdfDoc","docIndex","pages","page","pIndex","on","$event","selectPage","class","selectedDocIndex","selectedPageIndex","ref","refInFor","attrs","scale","onMeasure","handleMouseMove","isAddingMode","previewPageDocIndex","previewPageIndex","previewElement","previewVisible","left","previewPosition","previewScale","top","y","_t","_e","allObjects","getDisplayedPageScale","getPageWidth","getPageHeight","readOnly","payload","updateObject","on-delete","deleteObject","on-duplicate","duplicateObject","on-drag-start","mouseX","mouseY","pointerOffset","dragShift","startDraggingElement","updateDraggingPosition","stopDraggingElement","isDraggingElement","draggingObject","draggingClientPosition","draggingDocIndex","draggingPageIndex","showSelectionHandles","hideSelectionUI","resizable","showElementActions","ignoreClickOutsideSelectors","scopedSlots","_u","slotProps","onDelete","onResize","onDuplicate","showPageFooter","_v","_s","formatPageNumber","numPages","position","draggingScale","pointerEvents","staticRenderFns","Promise","required","Number","default","dynamicScale","isRendering","pendingRender","renderTask","watch","newScale","mounted","beforeUnmount","cancel","e","methods","getCanvasMeasurement","canvasWidth","$refs","canvas","canvasHeight","measure","$emit","_page","context","getContext","viewport","getViewport","canvasContext","promise","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","component","isSelected","isBeingDraggedGlobally","showSelectionUi","showDefaultActions","toolbarStyle","stopPropagation","selected","elementStyle","dragElementStyle","preventDefault","handleElementClick","startResizeFromSlot","resizeDirections","dir","startResize","pagesScale","pageWidth","pageHeight","onUpdate","onDragStart","onDragMove","onDragEnd","Boolean","draggingClientPos","currentDocIndex","currentPageIndex","globalDragDocIndex","globalDragPageIndex","direction","startX","startY","startLeft","startTop","startWidth","startHeight","offsetX","offsetY","resizeOffsetX","resizeOffsetY","resizeOffsetW","resizeOffsetH","aspectRatio","lastMouseX","lastMouseY","pointerOffsetDoc","currentPageRect","rafId","computed","isDragging","isResizing","currentX","currentY","currentWidth","currentHeight","toolbarOffset","nextTop","transform","opacity","handleClickOutside","boundHandleMove","handleMove","boundStopInteraction","stopInteraction","addEventListener","removeEventListener","cancelAnimationFrame","event","closest","startDrag","selectors","selector","$el","contains","classList","touches","clientX","clientY","resetResizeOffsets","elementRect","querySelector","getBoundingClientRect","pageRect","capturePageRect","dragElementShift","expectedLeft","expectedTop","requestAnimationFrame","deltaX","deltaY","newElementLeft","newElementTop","newX","newY","_globalDrag","_mouseX","_mouseY","minSize","newWidth","newHeight","newLeft","newTop","widthChange","overflow","excess","resetOffsets","wrapper","isNodeJS","nw","electron","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","IS_EDITING","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","POPUP","SIGNATURE","COMMENT","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","MeshFigureType","TRIANGLES","LATTICE","PATCH","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","quadraticCurveTo","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","info","msg","console","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","parse","updateUrlHash","hash","allowRel","res","href","shadow","nonSerializable","BaseException","message","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","chunk","subarray","stringToBytes","str","Uint8Array","charCodeAt","string32","isLittleEndian","buffer8","view32","Uint32Array","isEvalSupported","util_FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","isFloat16ArraySupported","Float16Array","isSanitizerSupported","Sanitizer","platform","isAndroid","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","CSS","supports","hexNumbers","from","padStart","Util","makeHexColor","r","g","domMatrixToTransform","dm","c","scaleMinMax","minMax","m1","m2","multiplyByDOMMatrix","m","md","applyTransform","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","rectBoundingBox","x0","y0","x1","y1","x2","x3","y2","y3","t","mt","tt","ttt","abs","delta","sqrtDelta","bezierBoundingBox","decodeURIComponent","escape","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","p2","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","zoom","args","argsLen","allowNull","arg","MathClamp","v","toBase64Util","arr","toBase64","btoa","fromBase64Util","fromBase64","atob","try","resolve","sumPrecise","numbers","reduce","XfaText","textContent","xfa","items","styles","walk","node","shouldBuildText","attributes","children","child","XfaLayer","setupStorage","element","storage","intent","storedData","getValue","setValue","xfaOn","setAttribute","xfaOff","removeAttribute","checked","getAttribute","option","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","entries","assign","addLinkAttributes","newWindow","dataId","parameters","annotationStorage","xfaHtml","rootHtml","isNotForRichText","rootDiv","div","append","textDivs","createTextNode","stack","at","pop","childHtml","xmlns","createElementNS","querySelectorAll","update","hidden","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","blob","json","text","reject","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","rotation","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","rawDims","dims","pageX","pageY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","isPdfFile","filename","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","getURL","urlString","newURL","decode","decoded","pdfRegex","pathname","searchParams","size","values","reverse","reFilename","hashFilename","StatTimer","started","times","time","Date","now","timeEnd","start","end","outBuf","longest","padEnd","noContextMenu","stopEvent","deprecated","log","PDFDateString","toDateObject","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","visibility","colorScheme","body","computedColor","getComputedStyle","remove","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","useRound","w","widthStr","heightStr","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","Infinity","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","screen","availWidth","availHeight","SupportedImageMimeTypes","ColorScheme","isDarkMode","matchMedia","CSSConstants","commentForegroundColor","applyOpacity","white","round","RGBToHSL","rgb","l","HSLToRGB","hsl","s","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","Float32Array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","className","container","fragment","createDocumentFragment","lines","line","firstElementChild","makePathFromDrawOPS","path","Path2D","bezierCurveTo","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","signature","editToolbar","signal","_uiManager","_signal","AbortSignal","aborted","buttons","toolbarPosition","insetInlineEnd","_focusEventsAllowed","capture","hide","hideDropdown","show","shown","addDeleteButton","editorType","button","tabIndex","delete","divider","addAltText","altText","addComment","comment","beforeElement","renderForToolbar","insertBefore","toolbar","addColorPicker","colorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","removeButton","removeToolbarCommentButton","addButton","tool","addButtonBefore","beforeSelector","updateEditSignatureButton","description","title","destroy","FloatingToolbar","uiManager","hasCommentManager","commentSelection","highlightSelection","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","bindEvents","CurrentPointers","NaN","initializeAndAddPointerId","pointerId","Set","setPointer","pointerType","setTimeStamp","timeStamp","isSamePointerId","isSamePointerIdOrRemove","isSamePointerType","isInitializedAndDifferentPointerType","isSameTimeStamp","isUsingMultiplePointers","clearPointerType","clearPointerIds","clearTimeStamp","IdManager","ImageManager","_isSVGFittingCanvas","svg","willReadFrequently","image","Image","then","drawImage","getImageData","rawData","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","callback","isMacKey","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","convert","RGB","every","_colorsMapping","getHexCode","AnnotationEditorUIManager","AbortController","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","arrowChecker","activeElement","tagName","hasSomethingToControl","textInputChecker","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","setSidebarUiManager","abort","layer","clear","clearTimeout","combinedSignal","ac","any","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","_highlightColors","pair","toUpperCase","hasHCM","isNameForHCM","endsWith","highlightColorNames","getNonHCMColor","colorName","getNonHCMColorName","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","editComment","posX","posY","showDialog","selectComment","pageIndex","getEditorByUID","toggleComment","updateComment","getData","updatePopupColor","removeComment","removeComments","toggleCommentPopup","makeCommentColor","getCommentDialogElement","dialogElement","waitForEditorsRendered","pageNumber","withResolvers","onEditorsRendered","_off","getSignature","switchToMode","once","dispatch","setPreference","focusMainContainer","focus","findParent","layerX","layerY","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","Node","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","anchorElement","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","getAndRemoveDataFromAnnotationStorage","annotationId","storedValue","getRawValue","addToAnnotationStorage","a11yAlert","messageId","JSON","stringify","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","drop","addEditListeners","setEditingState","removeEditListeners","dataTransfer","isHandlingMimeForPasting","dropEffect","editors","serialized","serialize","clipboardData","setData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","hasChanged","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","addLayer","enable","disable","removeLayer","updateMode","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","hideSidebar","destroyPopup","hideStandaloneCommentButton","addStandaloneCommentButton","loadSignatures","getAnnotationsByType","editorClass","_editorType","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","showSidebar","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","firstSelectedEditor","params","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","TIME_TO_WAIT","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","isEditingMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","range","collapsed","getClientRects","renderAnnotationElement","editorId","hasBeenModified","setMissingCanvas","setCanvas","addMissingCanvas","AltText","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","parentNode","getElementForAltText","Comment","renderForStandalone","commentButtonPosition","commentButtonColor","backgroundColor","focusButton","onUpdatedColor","commentButtonWidth","boundingClientRect","commentPopupPositionInLayer","parentX","parentY","hasDefaultPopupPosition","removeStandaloneCommentButton","setCommentButtonStates","hasPopup","ariaExpanded","isStandalone","ariaHasPopup","ariaControls","ariaControlsElements","edit","parentDimensions","isDeleted","hasBeenEdited","richText","date","setInitialText","TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","pointerDownAC","opts","cancelPointerDown","opt","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","_willKeepAspectRatio","isCentered","_structTreeParentId","creationDate","modificationDate","canAddComment","pageRotation","pageDimensions","pageTranslation","isAttachedToDOM","_type","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","isInEditMode","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","_onTranslating","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","getInitialTranslation","classes","prepend","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","_round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","toolbarButtons","addEditToolbar","addCommentButton","addCommentButtonInToolbar","removeCommentButtonFromToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","createAltText","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","focusCommentButton","setCommentData","updateFromAnnotationLayer","hasEditedComment","hasDeletedComment","setSelectedCommentButton","setSelectedButton","DEFAULT_POPUP_WIDTH","DEFAULT_POPUP_HEIGHT","trY","blX","blY","trX","popup","contents","parentBoundingClientRect","defaultL10nId","maxWidth","maxHeight","_origin","prevDistance","slowDownFactor","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","getPDFRect","onceAdded","enableEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","annotationType","structTreeParentId","accessibilityData","isCopy","hideCommentPopup","timeout","makeResizable","commentButtonPositionInPage","commentPopupPosition","elementBeforePopup","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","lastElementChild","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","nodeName","contentDiv","telemetryInitialData","telemetryFinalData","_telemetryTimeout","updateFakeAnnotationElement","annotationLayer","updateEdited","addFakeAnnotation","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","isView","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","defaultValue","resetModified","modified","entry","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","isCommentDeleted","counters","count","comments","edited","computeTelemetryFinalData","resetModifiedIds","updateEditor","modifiedIds","ids","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","completeRequest","otherRequest","shift","complete","_loadTestFont","testFont","int32","offset","spliceString","insert","chunk1","chunk2","called","isFontReady","fillText","imageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","fontFamily","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","fontExtraProperties","black","bold","isInvalidPDFjsFont","isType3Font","italic","remeasure","vertical","ascent","defaultWidth","descent","bbox","fontMatrix","fallbackName","clearData","defaultVMetrics","CssFontInfo","encoder","TextEncoder","encodedStrings","stringsLength","strings","encoded","encode","view","setUint32","TextDecoder","getUint32","SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","setUint8","guessFallback","getUint8","styleLength","weightLength","FontInfo","bools","byteOffset","bitOffset","getFloat64","numCoords","getInt16","numPoints","numMetrics","stringData","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","bits","setFloat64","coord","setInt16","metric","PatternInfo","ir","coords","colorStops","figures","shadingType","nCoord","nColor","nStop","nFigures","figuresSize","figure","verticesPerRow","byteLen","dataView","u8data","coordsView","hex","setFloat32","figureCoordsView","Int32Array","colorsView","getIR","hasBBox","hasBackground","stops","getFloat32","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","FontPathInfo","getUrlProp","location","getDataProp","Buffer","isNaN","getFactoryUrlProp","isRefProxy","num","gen","isNameProxy","isValidExplicitDest","LoopbackPort","listener","rmAbort","onAbort","terminate","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","reason","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","contain","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","k","j","feColorMatrix","feComponentTransfer","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","fs","readFile","NodeFilterFactory","NodeCanvasFactory","require","createRequire","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","expandBBox","EMPTY_BBOX","BBoxReader","bboxes","ensureDebugMetadata","dependencies","isRenderingOperation","CanvasDependencyTracker","__proto__","sameLineText","Float64Array","operationsCount","recordDebugMetadata","growOperationsCount","oldBBoxes","Uint8ClampedArray","opIdx","previous","lastSave","recordOpenMarker","idx","getOpenMarker","recordCloseMarker","pushBaseTransform","popBaseTransform","recordSimpleData","recordIncrementalData","resetIncrementalData","recordNamedData","recordSimpleDataFromNamed","depName","fallbackIdx","recordFutureForcedDependency","inheritSimpleDataAsFutureForcedDependencies","inheritPendingDependenciesAsFutureForcedDependencies","dep","resetBBox","recordClipBox","clipBox","intersection","recordBBox","recordCharacterBBox","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","recordFullPageBBox","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getSimpleIndex","dependencyName","recordDependencies","dependencyNames","pendingDependencies","incremental","recordNamedDependency","recordOperation","preserve","depIdx","saveIdx","recordShowTextOperation","deps","bboxToClipBoxDropOperation","_takePendingDependencies","_extractOperation","operation","_pushPendingDependencies","take","takeDebugMetadata","CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","Dependencies","imageXObject","transformAndFill","PathType","SHADING","applyBoundingBox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","isOriginBased","isRadial","_createGradient","grad","firstPoint","secondPoint","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","baseTransform","precision","n1","n2","ps","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p3","c1","c2","c3","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","cs","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","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","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","preInit","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","limit","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","op","outerExtraSize","_pathStartIdx","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","typeface","browserFontSize","rise","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","scaledPath","invPatternTransform","measureText","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","needsFill","needsStroke","getSinglePixelWidth","chars","glyph","unicode","joinedChars","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","renderingOpIdx","_getPattern","inv","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","found","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","requestCapability","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","_end","_queuedChunk","requestsCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","contentEncoding","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","currXhrId","pendingRequests","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","parseUrlOrPath","sourceUrl","pathToFileURL","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","TextLayer","FontInspector","textContentSource","setProperty","finally","fontFamilyMap","pump","lang","onBefore","abortEx","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","divStyle","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","lineHeight","cachedAscent","metrics","fontBoundingBoxAscent","fontBoundingBoxDescent","ratio","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","port","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","pageIndexesToSkip","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","extractPages","pageInfos","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","recordedBBoxes","getAnnotations","getPageJSActions","getXfa","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","recordForDebugger","StepperManager","shouldRecordOperations","renderTasks","internalRenderTask","gfx","setOperatorBBoxes","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","_isSameOrigin","otherUrl","base","other","_createCDNWrapper","createObjectURL","fromPort","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","import","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontData","fontAdded","imageRef","pageProxy","dataLen","refStr","results","hasStructTree","cleanupSuccessful","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_canvasContext","_enableHWA","_dependencyTracker","_operationsFilter","init","getNextBreakPoint","updateOperatorList","build","ColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","ariaHidden","renderMainDropdown","dropdown","ariaOrientation","ariaLabelledBy","role","ariaMultiSelectable","ariaSelected","updateColor","nextSibling","previousSibling","detail","BasicColorPicker","colorType","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","getTimezoneOffset","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableComment","enableScripting","_fieldObjects","fieldObjects","hasOwnCommentButton","contentElement","_createContainer","_createQuadrilaterals","_hasPopupData","_isEditable","isEditable","hasPopupData","commentText","commentData","hasCommentButton","hasPopupElement","quadPoints","inkLists","inkList","_normalizePoint","removePopup","newPopup","_createPopup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","colorArray","noView","noPrint","userName","readonly","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","popupData","titleObj","parentRect","elements","extraPopupElement","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","EditorAnnotationElement","createOrUpdatePopup","removeAnnotation","isTooltipOnly","link","isBound","_bindNamedAction","overlaidText","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","numberOfLines","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","datetimeFormat","datetimeType","timeStep","hasDateOrTime","maxLength","defaultFieldValue","blurListener","scrollLeft","getHours","getMinutes","getSeconds","toISOString","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","keyDown","_commentManager","PopupElement","trigger","renderCommentButton","after","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","outlineColor","header","dateObj","dateTime","popupLines","popupContent","lineAttributes","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","points","polyline","thickness","mark","underline","strikeout","AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","annotations","popupToElements","popupAnnotations","elementParams","noHTML","isPopupAnnotation","rendered","replaceChildren","getAriaAttributes","ariaAttributes","sort","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","addPointerInTextLayer","addLinkAnnotations","_defaultBorderStyle","firstChild","replaceWith","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","removePointerInTextLayer","updateFakeAnnotations","rawWidth","EOL_PATTERN","FreeTextEditor","_colorPicker","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","padding","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nX","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPoint","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","newOutliner","getNewOutline","outliner","HighlightOutliner","NUMBER_OF_DIGITS","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","extraThickness","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","_addOutlines","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","getPathResizingSVGProperties","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","i0","j0","kk","shiftI","shiftJ","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","sum","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","log2","isteps","grayImage","uint8Buf","extractContoursFromText","fontStyle","SCALE","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","Int8Array","Int16Array","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","DecompressionStream","numberOfDrawings","diffsOffset","SignatureOptions","DrawnSignatureOptions","SignatureEditor","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","getSignaturePreview","outlineData","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapUrl","bitmapFile","pasteEditor","getAsFile","hasAltTextStats","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","accept","files","click","bitmapId","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","toUrl","toDataURL","missingCanvas","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","DBL_CLICK_THRESHOLD","lastPointerDownTimestamp","elementsFromPoint","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","currentActive","attach","moveElementInDOM","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","GlobalWorkerOptions","ImageKind","pdfWorkerCode","sharedWorker","getSharedWorker","readAsArrayBuffer","readAsPDF","isArrayBuffer","isBlob","clampPosition","getVisibleArea","objWidth","objHeight","visibleLeft","visibleTop","visibleRight","visibleBottom","getViewportWindow","scrollTop","viewHeight","isPageInViewport","offsetTop","offsetHeight","applyScaleToDocs","docs","doc","objectIdExistsInDoc","objectId","objects","findObjectPageIndex","updateObjectInDoc","objectIndex","removeObjectFromDoc","getCachedMeasurement","pageRef","measurement","normalized","PDFPage","DraggableElement","initFiles","initFileNames","initialScale","pageCountFormat","autoFitZoom","hoverRafId","pendingHoverClientPos","lastHoverRect","addingListenersAttached","dragRafId","pendingDragClientPos","pageBoundsVersion","lastScrollTop","lastClientWidth","nextObjectCounter","draggingInitialMouseOffset","draggingElementShift","lastMouseClientPos","viewportRafId","objectIndexCache","zoomRafId","wheelZoomRafId","boundHandleWheel","visualScale","autoFitApplied","lastContainerWidth","created","_pagesBoundingRects","_pagesBoundingRectsList","_pageMeasurementCache","_lastPageBoundsScrollTop","_lastPageBoundsClientHeight","handleWheel","onViewportScroll","detachAddingListeners","pageWidths","pagePromise","scheduleAutoFitZoom","docsCount","$nextTick","cachePageBounds","getPageRect","elementScreenX","elementScreenY","pending","originalDocIndex","finalPageIndex","checkAndMoveObjectPage","refKey","draggableRefs","startAddingElement","templateObject","attachAddingListeners","nextRects","clientHeight","docIdx","pageIdx","getPageCanvasElement","cachePageBoundsForPage","getPageBoundsMap","getPageBoundsList","getPointerPosition","baseWidth","pageBoundsMap","fallbackRectWidth","getPageComponent","pageComponent","clientWidth","scrollChanged","widthChanged","cursorX","cursorY","rects","canvasEl","renderWidth","renderHeight","layoutScaleX","layoutScaleY","relX","relY","handleKeyDown","cancelAdding","nextVisual","commitZoom","finishAdding","objectToAdd","generateObjectId","rand","addObjectToPage","objectIdExists","updateObjectInPage","removeObjectFromPage","getAllObjects","pageObjects","normalizedCanvasHeight","normalizedCoordinates","targetObject","currentPageWidth","currentPageHeight","getPageSize","bestPageIndex","maxVisibleArea","visibleArea","adjustedX","adjustedY","updatedObject","deletedObject","deletedPageIndex","sourceObject","duplicatedSigner","signer","elementId","duplicatedObject","targetPageIndex","rectDocIndex","targetPageRect","clampedX","clampedY","currentPage","totalPages","calculateOptimalScale","maxPageWidth","containerWidth","availableWidth","adjustZoomToFit","widths","maxCanvasWidth","canvases","optimalScale","PDFElements","install","Vue","installed"],"ignoreList":[],"sourceRoot":""}
|