@libresign/pdf-elements 0.1.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/COPYING +661 -0
- package/README.md +37 -0
- package/dist/demo.html +1 -0
- package/dist/pdf-elements.common.js +30731 -0
- package/dist/pdf-elements.common.js.map +1 -0
- package/dist/pdf-elements.css +1 -0
- package/dist/pdf-elements.umd.js +30743 -0
- package/dist/pdf-elements.umd.js.map +1 -0
- package/dist/pdf-elements.umd.min.js +23 -0
- package/dist/pdf-elements.umd.min.js.map +1 -0
- package/dist/pdf.worker.min.mjs +22 -0
- package/package.json +61 -0
- package/src/components/DraggableElement.vue +505 -0
- package/src/components/PDFElements.vue +870 -0
- package/src/components/PDFPage.vue +87 -0
- package/src/index.js +16 -0
- package/src/utils/asyncReader.js +20 -0
|
@@ -0,0 +1 @@
|
|
|
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/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/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/uid.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/ordinary-to-primitive.js","webpack://pdf-elements/./node_modules/core-js/internals/is-array.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/to-indexed-object.js","webpack://pdf-elements/./node_modules/core-js/internals/to-absolute-index.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/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/internals/create-non-enumerable-property.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/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/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/to-length.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/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/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/./node_modules/debounce/index.js","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/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 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 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 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 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';\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';\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';\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 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 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 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 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 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 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';\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 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 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');\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\",style:({ transform: `scale(${_vm.visualScale / _vm.scale})`, transformOrigin: 'top center' })},_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\"},[(_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(\"custom\",null,{\"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.getRenderPageScale(docIndex, pIndex),\"page-width\":_vm.getPageWidth(docIndex, pIndex),\"page-height\":_vm.getPageHeight(docIndex, pIndex),\"on-update\":(payload) => _vm.updateObject(docIndex, object.id, payload),\"on-delete\":() => _vm.deleteObject(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},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})]}}],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 }","export default function debounce(function_, wait = 100, options = {}) {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError(`Expected the first parameter to be a function, got \\`${typeof function_}\\`.`);\n\t}\n\n\tif (wait < 0) {\n\t\tthrow new RangeError('`wait` must not be negative.');\n\t}\n\n\tif (typeof options === 'boolean') {\n\t\tthrow new TypeError('The `options` parameter must be an object, not a boolean. Use `{immediate: true}` instead.');\n\t}\n\n\tconst {immediate} = options;\n\n\tlet storedContext;\n\tlet storedArguments;\n\tlet timeoutId;\n\tlet timestamp;\n\tlet result;\n\n\tfunction run() {\n\t\tconst callContext = storedContext;\n\t\tconst callArguments = storedArguments;\n\t\tstoredContext = undefined;\n\t\tstoredArguments = undefined;\n\t\tresult = function_.apply(callContext, callArguments);\n\t\treturn result;\n\t}\n\n\tfunction later() {\n\t\tconst last = Date.now() - timestamp;\n\n\t\tif (last < wait && last >= 0) {\n\t\t\ttimeoutId = setTimeout(later, wait - last);\n\t\t} else {\n\t\t\ttimeoutId = undefined;\n\n\t\t\tif (!immediate) {\n\t\t\t\tresult = run();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst debounced = function (...arguments_) {\n\t\tif (\n\t\t\tstoredContext\n\t\t\t&& this !== storedContext\n\t\t\t&& Object.getPrototypeOf(this) === Object.getPrototypeOf(storedContext)\n\t\t) {\n\t\t\tthrow new Error('Debounced method called with different contexts of the same prototype.');\n\t\t}\n\n\t\tstoredContext = this; // eslint-disable-line unicorn/no-this-assignment\n\t\tstoredArguments = arguments_;\n\t\ttimestamp = Date.now();\n\n\t\tconst callNow = immediate && !timeoutId;\n\n\t\tif (!timeoutId) {\n\t\t\ttimeoutId = setTimeout(later, wait);\n\t\t}\n\n\t\tif (callNow) {\n\t\t\tresult = run();\n\t\t\treturn result;\n\t\t}\n\n\t\treturn undefined;\n\t};\n\n\tObject.defineProperty(debounced, 'isPending', {\n\t\tget() {\n\t\t\treturn timeoutId !== undefined;\n\t\t},\n\t});\n\n\tdebounced.clear = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = undefined;\n\t\tstoredContext = undefined;\n\t\tstoredArguments = undefined;\n\t};\n\n\tdebounced.flush = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounced.trigger();\n\t};\n\n\tdebounced.trigger = () => {\n\t\tresult = run();\n\n\t\tdebounced.clear();\n\t};\n\n\treturn debounced;\n}\n","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 boundMeasure: null,\n }\n },\n watch: {\n scale(newScale) {\n this.dynamicScale = newScale\n this.render()\n },\n },\n mounted() {\n this.boundMeasure = this.measure.bind(this)\n window.addEventListener('resize', this.boundMeasure)\n this.render()\n },\n beforeUnmount() {\n if (this.boundMeasure) {\n window.removeEventListener('resize', this.boundMeasure)\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) return\n this.isRendering = true\n try {\n const _page = await this.page\n const canvas = this.$refs.canvas\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 await _page.render({\n canvasContext: context,\n viewport,\n }).promise\n this.measure()\n } finally {\n this.isRendering = false\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=2c9e224a&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=2c9e224a&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 \"2c9e224a\",\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\":\"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})],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\">\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 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 },\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 currentX = this.object.x + this.offsetX + this.resizeOffsetX\n const currentY = this.object.y + this.offsetY + this.resizeOffsetY\n const currentWidth = this.object.width + this.resizeOffsetW\n const currentHeight = this.object.height + this.resizeOffsetH\n return {\n left: `${currentX * scale}px`,\n top: `${currentY * scale}px`,\n width: `${currentWidth * scale}px`,\n height: `${currentHeight * scale}px`,\n }\n },\n toolbarStyle() {\n const scale = this.pagesScale || 1\n const x = this.object.x + this.offsetX + this.resizeOffsetX\n const y = this.object.y + this.offsetY + this.resizeOffsetY\n const width = this.object.width + this.resizeOffsetW\n return {\n left: `${(x + width / 2) * scale}px`,\n top: `${(y - 48) * 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 (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 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 (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 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\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: 100;\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 position: absolute;\n width: 10px;\n height: 10px;\n background: #2563eb;\n border: 1px solid #ffffff;\n border-radius: 2px;\n padding: 0;\n margin: 0;\n cursor: pointer;\n z-index: 200;\n}\n.handle-top-left {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n.handle-top-right {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.handle-bottom-left {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.handle-bottom-right {\n bottom: -6px;\n right: -6px;\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=55db89ce&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=55db89ce&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 \"55db89ce\",\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 } from 'pdfjs-dist'\nimport pdfWorkerCode from 'pdfjs-dist/build/pdf.worker.min.mjs'\n\nGlobalWorkerOptions.workerSrc = pdfWorkerCode\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 return getDocument(file).promise\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 :style=\"{ transform: `scale(${visualScale / scale})`, transformOrigin: 'top center' }\"\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 >\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=\"custom\"\n :object=\"previewElement\"\n :isSelected=\"false\"\n />\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=\"getRenderPageScale(docIndex, pIndex)\"\n :page-width=\"getPageWidth(docIndex, pIndex)\"\n :page-height=\"getPageHeight(docIndex, pIndex)\"\n :on-update=\"(payload) => updateObject(docIndex, object.id, payload)\"\n :on-delete=\"() => deleteObject(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 >\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 />\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 debounce from 'debounce'\nimport PDFPage from './PDFPage.vue'\nimport DraggableElement from './DraggableElement.vue'\nimport { readAsPDF, readAsArrayBuffer } from '../utils/asyncReader.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 pageCountFormat: {\n type: String,\n default: '{currentPage} of {totalPages}',\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 pagesBoundingRects: {},\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 boundHandleWheel: null,\n debouncedApplyZoom: null,\n visualScale: this.initialScale,\n }\n },\n mounted() {\n this.boundHandleWheel = this.handleWheel.bind(this)\n this.debouncedApplyZoom = debounce(this.commitZoom, 150)\n this.init()\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 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 this.debouncedApplyZoom?.clear?.()\n if (this.boundHandleWheel) {\n this.$el?.removeEventListener('wheel', this.boundHandleWheel)\n }\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('touchmove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.finishAdding)\n document.removeEventListener('touchend', this.finishAdding)\n document.removeEventListener('keydown', this.handleKeyDown)\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 },\n methods: {\n async init() {\n if (!this.initFiles || this.initFiles.length === 0) return\n const docs = []\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 for (let p = 1; p <= pdfDoc.numPages; p++) {\n pages.push(pdfDoc.getPage(p))\n }\n\n docs.push({\n name,\n file,\n pdfDoc,\n numPages: pdfDoc.numPages,\n pages,\n pagesScale: Array(pdfDoc.numPages).fill(this.scale),\n allObjects: Array(pdfDoc.numPages).fill(0).map(() => []),\n })\n }\n\n this.pdfDocuments = docs\n if (docs.length) {\n this.selectedDocIndex = 0\n this.selectedPageIndex = 0\n this.$emit('pdf-elements:end-init', { docsCount: docs.length })\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 const pageKey = `${docIndex}-${pageIndex}`\n if (!this.pagesBoundingRects[pageKey]) {\n this.cachePageBounds()\n }\n const pageRect = this.pagesBoundingRects[pageKey]?.rect\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 this.cachePageBounds()\n },\n\n updateDraggingPosition(clientX, clientY) {\n if (!this.isDraggingElement) return\n\n this.lastMouseClientPos.x = clientX\n this.lastMouseClientPos.y = clientY\n\n this.draggingClientPosition.x = clientX - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = clientY - this.draggingInitialMouseOffset.y\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 },\n\n startAddingElement(templateObject) {\n if (!this.pdfDocuments.length) return\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 this.pagesBoundingRects = {}\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 const rect = canvas.getBoundingClientRect()\n this.pagesBoundingRects[`${docIdx}-${pageIdx}`] = {\n docIndex: docIdx,\n pageIndex: pageIdx,\n rect,\n }\n }\n }\n },\n\n getDisplayedPageScale(docIndex, pageIndex) {\n const doc = this.pdfDocuments[docIndex]\n if (!doc) return 1\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 getRenderPageScale(docIndex, pageIndex) {\n const doc = this.pdfDocuments[docIndex]\n if (!doc) return 1\n return doc.pagesScale[pageIndex] || 1\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 if (this.isAddingMode || this.isDraggingElement) {\n this.cachePageBounds()\n }\n this.viewportRafId = 0\n })\n },\n\n handleMouseMove(event) {\n if (!this.isAddingMode || !this.previewElement) return\n\n const clientX = event.type.includes('touch') ? event.touches[0].clientX : event.clientX\n const clientY = event.type.includes('touch') ? event.touches[0].clientY : event.clientY\n\n let foundPage = false\n for (const key in this.pagesBoundingRects) {\n const { docIndex, pageIndex, rect } = this.pagesBoundingRects[key]\n if (clientX >= rect.left && clientX <= rect.right &&\n clientY >= rect.top && clientY <= rect.bottom) {\n this.previewPageDocIndex = docIndex\n this.previewPageIndex = pageIndex\n foundPage = true\n\n const canvasEl = this.getPageCanvasElement(docIndex, pageIndex)\n const pagesScale = this.pdfDocuments[docIndex]?.pagesScale?.[pageIndex] || 1\n const layoutWidth = canvasEl?.offsetWidth || rect.width\n const layoutHeight = canvasEl?.offsetHeight || rect.height\n const layoutScaleX = layoutWidth ? rect.width / layoutWidth : 1\n const layoutScaleY = layoutHeight ? rect.height / layoutHeight : 1\n const relX = (clientX - rect.left) / layoutScaleX / pagesScale\n const relY = (clientY - rect.top) / layoutScaleY / pagesScale\n\n const pageWidth = layoutWidth / pagesScale\n const pageHeight = layoutHeight / pagesScale\n this.previewScale.x = pagesScale * layoutScaleX\n this.previewScale.y = pagesScale * layoutScaleY\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 break\n }\n }\n\n if (!foundPage) {\n this.previewVisible = false\n this.previewScale = { x: 1, y: 1 }\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 this.debouncedApplyZoom()\n },\n\n commitZoom() {\n const newScale = this.visualScale\n\n this.scale = newScale\n\n this.pdfDocuments.forEach((doc) => {\n doc.pagesScale = doc.pagesScale.map(() => this.scale)\n })\n\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: `obj-${Date.now()}`,\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 },\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 const pageWidth = this.getPageWidth(docIndex, pageIndex)\n const pageHeight = this.getPageHeight(docIndex, pageIndex)\n\n if (object.x < 0 || object.y < 0 ||\n object.x + object.width > pageWidth ||\n object.y + object.height > pageHeight) {\n return false\n }\n\n doc.allObjects = doc.allObjects.map((objects, pIndex) =>\n pIndex === pageIndex ? [...objects, object] : objects,\n )\n return true\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 scale = this.scale || 1\n const result = []\n\n doc.allObjects.forEach((pageObjects, pageIndex) => {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return\n\n const measurement = pageRef.getCanvasMeasurement()\n const normalizedCanvasHeight = measurement.canvasHeight / scale\n\n pageObjects.forEach(object => {\n result.push({\n ...object,\n pageIndex,\n pageNumber: pageIndex + 1,\n scale,\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 },\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 doc.allObjects.forEach((objects, pIndex) => {\n if (objects.find(o => o.id === objectId)) {\n currentPageIndex = pIndex\n this.objectIndexCache[cacheKey] = pIndex\n }\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 if (!this.pagesBoundingRects || Object.keys(this.pagesBoundingRects).length === 0) {\n this.cachePageBounds()\n }\n\n const currentPageRect = this.pagesBoundingRects[`${docIndex}-${currentPageIndex}`]?.rect\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 doc.allObjects[currentPageIndex] = doc.allObjects[currentPageIndex].map(obj =>\n obj.id === objectId ? { ...obj, x: relX, y: relY } : obj\n )\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 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 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\n if (visibleRight > visibleLeft && visibleBottom > visibleTop) {\n const visibleArea = (visibleRight - visibleLeft) * (visibleBottom - visibleTop)\n if (visibleArea > maxVisibleArea) {\n maxVisibleArea = visibleArea\n bestPageIndex = pIndex\n }\n }\n }\n\n if (bestPageIndex !== currentPageIndex) {\n const pageWidth = this.getPageWidth(docIndex, bestPageIndex)\n const pageHeight = this.getPageHeight(docIndex, bestPageIndex)\n\n const adjustedX = Math.max(0, Math.min(newX, pageWidth - objWidth))\n const adjustedY = Math.max(0, Math.min(newY, pageHeight - objHeight))\n\n doc.allObjects[currentPageIndex] = doc.allObjects[currentPageIndex].filter(\n obj => obj.id !== objectId\n )\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 pageWidth = this.getPageWidth(docIndex, currentPageIndex)\n const pageHeight = this.getPageHeight(docIndex, currentPageIndex)\n\n if (newX < 0 || newY < 0 ||\n newX + objWidth > pageWidth ||\n newY + objHeight > pageHeight) {\n return\n }\n }\n\n doc.allObjects = doc.allObjects.map(objects =>\n objects.map(object => (object.id === objectId ? { ...object, ...payload } : object)),\n )\n },\n\n deleteObject(docIndex, objectId) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n doc.allObjects = doc.allObjects.map(objects =>\n objects.filter(object => object.id !== objectId),\n )\n delete this.objectIndexCache[`${docIndex}-${objectId}`]\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 doc.allObjects.forEach((objects, pIndex) => {\n if (objects.find(o => o.id === objectId)) {\n currentPageIndex = pIndex\n this.objectIndexCache[cacheKey] = pIndex\n }\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 for (const key in this.pagesBoundingRects) {\n const { docIndex: rectDocIndex, pageIndex, rect } = this.pagesBoundingRects[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.pagesBoundingRects[`${docIndex}-${targetPageIndex}`]?.rect\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 pageWidth = this.getPageWidth(docIndex, targetPageIndex)\n const pageHeight = this.getPageHeight(docIndex, targetPageIndex)\n\n const clampedX = Math.max(0, Math.min(relX, pageWidth - targetObject.width))\n const clampedY = Math.max(0, Math.min(relY, pageHeight - targetObject.height))\n\n if (targetPageIndex !== currentPageIndex) {\n doc.allObjects[currentPageIndex] = doc.allObjects[currentPageIndex].filter(\n obj => obj.id !== objectId\n )\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 doc.allObjects[currentPageIndex] = doc.allObjects[currentPageIndex].map(obj =>\n obj.id === objectId ? { ...obj, x: clampedX, y: clampedY } : obj\n )\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[pageIndex] = e.scale\n this.cachePageBounds()\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 doc = this.pdfDocuments[docIndex]\n const pagesScale = doc.pagesScale[pageIndex] || 1\n return pageRef.getCanvasMeasurement().canvasWidth / pagesScale\n },\n getPageHeight(docIndex, pageIndex) {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return 0\n const doc = this.pdfDocuments[docIndex]\n const pagesScale = doc.pagesScale[pageIndex] || 1\n return pageRef.getCanvasMeasurement().canvasHeight / pagesScale\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.drag-ghost {\n position: fixed;\n opacity: 0.9;\n pointer-events: none;\n z-index: 10000;\n transform-origin: top left;\n transition: none;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\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=5a4a7f3b&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=5a4a7f3b&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 \"5a4a7f3b\",\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'\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","test","bind","hasOwnProperty","isPrototypeOf","Prototype","methodName","method","Iterator","next","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","iterator","createIteratorProxy","callWithSafeIterationClosing","iteratorHelperThrowsOnInvalidIterator","IS_PURE","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","FORCED","IteratorProxy","done","mapper","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","id","postfix","random","functionToString","getOwnPropertySymbols","createElement","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","Array","val","valueOf","isArray","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","IteratorPrototype","CLOSED","check","window","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","enumerable","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","IndexedObject","requireObjectCoercible","toIntegerOrInfinity","max","min","integer","a","V","func","NATIVE_BIND","apply","uid","toLength","defineBuiltIn","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","global","STATIC","stat","dontCallGetSet","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","version","mode","copyright","license","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","ownKeys","getOwnPropertyDescriptorModule","exceptions","aFunction","namespace","anInstance","defineBuiltInAccessor","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getOwnPropertyNames","$propertyIsEnumerable","NASHORN_BUG","exec","defineBuiltIns","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","inner","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","uncurryThisWithBind","match","process","Deno","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","transform","visualScale","scale","transformOrigin","_l","pdfDoc","docIndex","pages","page","pIndex","on","$event","selectPage","class","selectedDocIndex","selectedPageIndex","ref","refInFor","attrs","onMeasure","isAddingMode","previewPageDocIndex","previewPageIndex","previewElement","previewVisible","left","previewPosition","previewScale","top","y","_t","_e","allObjects","getRenderPageScale","getPageWidth","getPageHeight","payload","updateObject","on-delete","deleteObject","on-drag-start","mouseX","mouseY","pointerOffset","dragShift","startDraggingElement","updateDraggingPosition","stopDraggingElement","isDraggingElement","draggingObject","draggingClientPosition","draggingDocIndex","draggingPageIndex","showSelectionHandles","hideSelectionUI","resizable","showElementActions","scopedSlots","_u","slotProps","onDelete","onResize","showPageFooter","_v","_s","formatPageNumber","numPages","position","draggingScale","pointerEvents","staticRenderFns","debounce","function_","wait","RangeError","immediate","storedContext","storedArguments","timeoutId","timestamp","run","callContext","callArguments","later","last","Date","now","setTimeout","debounced","arguments_","Error","callNow","clear","clearTimeout","flush","trigger","Promise","required","Number","default","dynamicScale","isRendering","boundMeasure","watch","newScale","mounted","measure","addEventListener","beforeUnmount","removeEventListener","methods","getCanvasMeasurement","canvasWidth","$refs","canvas","canvasHeight","$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","currentX","currentY","currentWidth","currentHeight","opacity","handleClickOutside","boundHandleMove","handleMove","boundStopInteraction","stopInteraction","cancelAnimationFrame","event","closest","startDrag","$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","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","buffer","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","b","domMatrixToTransform","dm","c","e","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","arrayBuffer","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","clone","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","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","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","some","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","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","cancel","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","isResizable","_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","ArrayBuffer","isView","byteLength","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","transfer","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","structuredClone","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","DataView","setUint32","TextDecoder","getUint32","SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","setUint8","guessFallback","transferToFixedLength","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","postMessage","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","getBuiltinModule","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","GlobalWorkerOptions","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","renderTask","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","readOnly","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","flatMap","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","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","detach","moveElementInDOM","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","ImageKind","readAsArrayBuffer","readAsPDF","pdfWorkerCode","PDFPage","DraggableElement","initFiles","initFileNames","initialScale","pageCountFormat","pagesBoundingRects","draggingInitialMouseOffset","draggingElementShift","lastMouseClientPos","viewportRafId","objectIndexCache","zoomRafId","boundHandleWheel","debouncedApplyZoom","handleWheel","commitZoom","handleMouseMove","finishAdding","handleKeyDown","onViewportScroll","docs","docsCount","getDisplayedPageScale","pageKey","cachePageBounds","elementScreenX","elementScreenY","objectId","originalDocIndex","finalPageIndex","checkAndMoveObjectPage","$nextTick","refKey","draggableRefs","startAddingElement","templateObject","docIdx","pageIdx","getPageCanvasElement","doc","getPageComponent","pageRef","pageComponent","foundPage","canvasEl","layoutWidth","offsetWidth","layoutHeight","offsetHeight","layoutScaleX","layoutScaleY","relX","relY","cancelAdding","nextVisual","objectToAdd","addObjectToPage","objects","getAllObjects","pageObjects","measurement","normalizedCanvasHeight","normalizedCoordinates","targetObject","objWidth","objHeight","bestPageIndex","maxVisibleArea","visibleLeft","visibleTop","visibleRight","visibleBottom","visibleArea","adjustedX","adjustedY","updatedObject","targetPageIndex","rectDocIndex","targetPageRect","clampedX","clampedY","currentPage","totalPages","PDFElements","install","Vue","installed"],"ignoreList":[],"sourceRoot":""}
|