{"version":3,"file":"pdf-a72eac494ce65a7ee317.js","mappings":"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","sources":["webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./assets/javascripts/render/logger.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./assets/javascripts/render/setup-globals.ts","webpack:///./assets/javascripts/render/config.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./assets/javascripts/render/status.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./assets/javascripts/render/failbot.ts","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/lodash.unescape/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack:///./node_modules/process/browser.js","webpack:///./assets/javascripts/render/utils.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/construct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./assets/javascripts/render/constants.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./assets/javascripts/render/link-navigator.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/getFullHash","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///./node_modules/pdfjs-dist/build/pdf.mjs","webpack:///./assets/javascripts/pdf/lib/common.ts","webpack:///./assets/javascripts/pdf/lib/single-page-view.ts","webpack:///./assets/javascripts/render/job-queue.ts","webpack:///./assets/javascripts/pdf/lib/multi-page-view.ts","webpack:///./node_modules/pdfjs-dist/webpack.mjs","webpack:///./assets/javascripts/pdf/index.ts","webpack:///./assets/javascripts/pdf/lib/index.ts"],"sourcesContent":["function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nexport { _isNativeFunction as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","type LogMessage = {\n args: any[]\n time: number\n}\n\nexport type LoggerFn = (message?: any, ...data: any[]) => void\n\nfunction logMessage(...messageArgs: any[]): LogMessage {\n return {\n args: messageArgs,\n time: Date.now(),\n }\n}\n\nclass Logger {\n private _loggerFn: LoggerFn\n public buffer: LogMessage[] = []\n private bufferSize = 50\n private quiet = false\n\n constructor(options = {loggerFn: window.console.log, quiet: false}) {\n this._loggerFn = options.loggerFn\n this.quiet = options.quiet\n }\n\n debug(...args: any[]) {\n this.storeMessage(...args)\n\n if (!this.quiet) {\n this._loggerFn(...args)\n }\n }\n\n /**\n * Store the most recent log message at the end of the message buffer.\n * Resizes the buffer to bufferSize, removing older messages.\n * All operations performed on copies of the buffer array\n * @param {*} Any\n */\n storeMessage(...args: any[]) {\n const bufCopy = this.buffer\n bufCopy.push(logMessage(...args))\n const nextBuffer = bufCopy.slice(-this.bufferSize)\n\n this.buffer = nextBuffer\n }\n\n /**\n * Helper to replay the most recent numMessages in the log buffer\n * @param {number} numMessages? The number of debug / log messages to replay. Defaults to 1\n * @returns the total number of messages in the buffer\n */\n replayMessages(numMessages = 1) {\n const messagesToRead = this.buffer.slice(-numMessages)\n for (const message of messagesToRead) {\n this._loggerFn(`${new Date(message.time)}: `, ...message.args)\n }\n\n return this.buffer.length\n }\n}\n\nexport default Logger\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import Logger from './logger'\nimport config from './config'\n\nwindow.Render = window.Render || {}\n\n// Try to call `console.log`, if possible, in the way\n// most likely to invoke pretty-printing\nfunction safeLog(...args: Parameters) {\n if (!('log' in window.console)) {\n return\n }\n\n return window.console.log(...args)\n}\n\nconst logger = new Logger({\n loggerFn: safeLog,\n quiet: config.quiet,\n})\n\nexport {logger}\n\n// @ts-expect-error TS2322 `logger.debug` doesn't fully satisfy the type of\n// `window.debug`, seeing as we need `.buffer` to exist as a static property\n// as well. That despite that being added later here, ts cannot guarantee that\n// this line is safe if it relied on other lines. Type narrowing is a newish\n// concept to typescript, so maybe one day we'll get it — but not today. So lets\n// expect an error than ignore it.\nwindow.debug = logger.debug.bind(logger)\nwindow.debug.buffer = () => logger.buffer\n","export default {\n // Controls whether debug messages display in the console\n quiet: IS_QUIET_MODE,\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import unescape from 'lodash.unescape'\nimport type {TopoJSON} from 'topojson-specification'\nimport {MESSAGE_RESPONSE_TYPES, RENDER_FORMATS, STATUS_TYPES} from './constants'\nimport {isDefined, isSameOrigin} from './utils'\nimport LinkNavigator from './link-navigator'\nimport reportErrors from './failbot'\n\nclass InvalidProtocolError extends Error {\n constructor() {\n super('The client:// protocol is invalid.')\n }\n}\n\nclass FailedError extends Error {\n constructor() {\n super('Failed to load content')\n this.message = 'Failed to load content'\n }\n}\n\nwindow.Render = window.Render || {}\n\nconst isClientUrl = (url: string) => /^client:\\/\\//i.exec(url)\n\ntype StatusOptions = {\n allowLinks?: boolean\n initialMessage?: STATUS_TYPES\n}\n\ntype RenderStatusMessage = {\n sent: boolean\n status: STATUS_TYPES\n when: number\n payload: Record | null\n}\n\ntype RenderableLoaderCallbacks = {\n before: (xhr?: XMLHttpRequest, settings?: Record) => void\n success: (data: Data, response: Response) => void\n error: (error: E, xhr: Response) => void\n}\n\ntype RenderableLoaderOptions = {\n attempts?: number\n timeout?: number\n json?: boolean\n}\n\ntype DataResponseTypes = string | ArrayBuffer | TopoJSON | JSON | undefined\n\nconst renderableLoaderDefaults = {\n setStatus: true,\n attempts: 3,\n timeout: 30_000,\n json: true,\n}\n\nconst statusOptionDefaults = {\n allowLinks: false,\n initialMessage: STATUS_TYPES.hello,\n}\n\n/**\n * Responsible for handling communication between the render DOM and it's parent iframe\n *\n * @param format Valid renderable file format @see RENDER_FORMATS\n * @param opts.allowLinks? Should this class allow redirects from link within the render area?\n * @param opts.initial? The initial status message to be communicated\n */\nclass Status {\n acked = false\n format: RENDER_FORMATS\n githubEnv: string | null\n githubHostname: string\n identity: string\n protocol: string\n initialStatusTimeout: NodeJS.Timeout | null\n messages: RenderStatusMessage[]\n\n constructor(format: RENDER_FORMATS, opts: StatusOptions = {}) {\n const options = {...statusOptionDefaults, ...opts}\n\n this.githubHostname = document.body.getAttribute('data-github-hostname') ?? 'github.localhost'\n this.githubEnv = document.body.getAttribute('data-deploy-env') ?? 'development'\n this.format = format\n this.initialStatusTimeout = null\n\n if (options.allowLinks) {\n new LinkNavigator({hasParent: this.haveParent()})\n }\n\n this.identity = window.location.hash.substring(1)\n this.protocol = window.location.protocol\n\n this.messages = [\n {status: STATUS_TYPES.constructor, payload: null, when: Date.now(), sent: true}, // Debugging ctor call timing\n ]\n\n window.addEventListener('message', this.handleMessage)\n\n if (this.haveParent()) {\n this.sendInitial(options.initialMessage, 10, 1000)\n }\n }\n\n /**\n * This function is responsible for communicating the initial status of the renderer back to the parent frame.\n * Necessary as the render JS functionality is embedded in an iframe. This function will attempt to\n * contact its parent frame until it receives a response or exhausts the pool of attempts.\n */\n sendInitial = (initial: STATUS_TYPES, remaining = 10, interval = 1000) => {\n if (this.initialStatusTimeout && (this.acked || remaining < 1)) {\n clearTimeout(this.initialStatusTimeout)\n return\n }\n\n this.initialStatusTimeout = setTimeout(() => this.sendInitial(initial, remaining - 1, interval), interval)\n window.debug(\n `Sending hello. Will try again ${remaining} more times in ${interval / 1000} second intervals until ack'd`,\n )\n return this.set(initial)\n }\n\n // Fired when content is loaded and ready to be displayed.\n #onSuccess = () => {\n this.set(STATUS_TYPES.loaded)\n }\n\n // Fires when requested content fails to load.\n #onError = () => {\n this.set(STATUS_TYPES.error)\n }\n\n #onBeforeSend() {\n return void 0\n }\n\n //# Raw status access\n // Handles whether or not to post a message to the parent window\n // TODO: Rename? The name set is incredibly generic and doesn't really encapsulate\n // what this method does. It also does two things, adding a message to the message list\n // and posting that message?\n set = (status: STATUS_TYPES, payload = {}) => {\n const sent = this.alreadySentStatus(status)\n\n if (isDefined(sent) && ![STATUS_TYPES.hello, STATUS_TYPES.resize].includes(status)) {\n const ago = Math.abs(Date.now() - sent.when)\n return window.debug(`Already set status '${status}' ${ago}ms ago`)\n }\n\n const message = {status, payload, when: Date.now(), sent: false}\n // Don't push duplicate hello messages into our message cache.\n // However, it seems that we do still send duplicate `hello` messages to dotcom.\n if (!sent || status !== STATUS_TYPES.hello) {\n this.messages.push(message)\n }\n\n if (status === STATUS_TYPES.ready) {\n this.onReady()\n }\n\n if (!this.requireAck(status)) {\n message.sent = true\n\n return this.post({\n type: 'render',\n body: status,\n payload,\n })\n }\n }\n\n alreadySentStatus(status: STATUS_TYPES) {\n const found = this.messages.filter(e => e.status === status)\n return found[0]\n }\n\n async #prepareFetchedData(result: Response, options: RenderableLoaderOptions): Promise {\n const contentType = result.headers.get('content-type')\n\n /**\n * using vanilla XMLHTTPRequest / jquery, we were able to force the response\n * header's content-type to a specific value. This was needed for stl files,\n * since they may be a binary file OR ASCII text.\n *\n * We can't force the header with `fetch`, so we need to check for a header that\n * indicates a response with an array buffer data type.\n *\n * This works in all major browsers for CORs requests.\n */\n if (contentType === 'application/octet-stream') {\n return await result.arrayBuffer()\n }\n\n if (!options.json) {\n return await result.text()\n }\n\n try {\n return await result.json()\n } catch (error) {\n // Apparently Mobile Safari requires this, though it is unclear why.\n // Google searches didn't yield fruit\n window.debug(`Error while trying to parse initial JSON: ${error}`)\n window.debug('Attempting to parse htmlDecoded JSON')\n try {\n const maybeJson = await result.text()\n return JSON.parse(unescape(maybeJson))\n } catch {\n this.set(STATUS_TYPES.fatal)\n this.reportStatusError(new FailedError())\n }\n }\n\n return\n }\n\n async load(\n url: string,\n opts: RenderableLoaderOptions & Partial = renderableLoaderDefaults,\n ) {\n if (isClientUrl(url)) {\n this.reportStatusError(new InvalidProtocolError())\n }\n\n this.set(STATUS_TYPES.loading)\n\n const finalOptions = {...renderableLoaderDefaults, ...opts} as RenderableLoaderOptions & RenderableLoaderCallbacks\n finalOptions.attempts = finalOptions.attempts ?? this.clientTimeoutAttempts()\n finalOptions.before = finalOptions.before ?? this.#onBeforeSend\n finalOptions.success = finalOptions.success ?? this.#onSuccess\n finalOptions.error = finalOptions.error ?? this.#onError\n\n finalOptions.before?.()\n\n const requestController = new AbortController()\n const abortTimeoutId = setTimeout(() => {\n requestController.abort()\n }, finalOptions.timeout)\n\n const settings = {\n method: 'GET',\n signal: requestController.signal,\n }\n\n try {\n const response = await fetch(url, settings)\n\n if (response.status < 400) {\n const data = await this.#prepareFetchedData(response, finalOptions)\n this.set(STATUS_TYPES.loaded)\n finalOptions.success(data, response)\n\n return\n }\n } catch {\n window.debug(\"Couldn't load\")\n } finally {\n clearTimeout(abortTimeoutId)\n }\n\n finalOptions.attempts -= 1\n if (finalOptions.attempts > 0) {\n window.debug(`Going to retry up to ${finalOptions.attempts} more times!`)\n setTimeout(() => {\n this.load(url, finalOptions)\n }, 1000)\n } else {\n this.set(STATUS_TYPES.error)\n this.submitGiveup()\n const error = new FailedError()\n finalOptions.error(error, new Response(null, {status: 500}))\n this.reportStatusError(error)\n }\n }\n\n post(msg: {identity?: string; type: string; body: STATUS_TYPES; payload?: Record | null}) {\n msg.identity = msg.identity ?? this.identity\n\n if (!this.haveParent()) {\n window.debug('WARNING: No window.parent: postMessage:', msg)\n return\n }\n\n const parentHostname = document.referrer ? new URL(document.referrer).hostname : ''\n const isSameDomain = isSameOrigin(this.githubHostname, parentHostname)\n\n const targetOrigin = isSameDomain && this.githubEnv !== 'development' ? `${this.protocol}//${parentHostname}` : '*'\n\n window.debug('Render Status:', msg)\n window.parent.postMessage(msg, targetOrigin)\n }\n\n // Called when a status of \"ready\" is set for the first time\n onReady = () => {\n const localTiming: Partial> = {}\n for (const message of this.messages) {\n localTiming[message.status] = message.when\n }\n\n return this.submitTiming('local', localTiming)\n }\n\n onAck = () => {\n window.debug(\"Ack'd, sending saved messages\")\n this.acked = true\n for (const msg of this.messages) {\n if (msg.sent) {\n continue\n }\n\n msg.sent = true\n this.post({\n type: 'render',\n body: msg.status,\n payload: msg.payload,\n })\n }\n }\n\n /**\n * Determines whether the render iframe has sent its initial status message to the\n * parent window\n */\n requireAck = (status = '') => {\n return !this.acked && status !== 'hello'\n }\n\n submitTiming = (origin: string, timing: Record) => {\n window.debug(`Got ${origin} timing: ${this.format} => ${JSON.stringify(timing)}`)\n const baseRenderUrl = document.body.getAttribute('data-render-url')\n const didQueue = navigator.sendBeacon?.(\n `${baseRenderUrl}/stats/timing/${origin}/${this.format}/`,\n JSON.stringify(timing),\n )\n\n if (!didQueue) {\n window.debug('Failed to send remote timing info')\n } else {\n window.debug(`Sent ${origin} timing info:`, timing)\n }\n }\n\n submitGiveup = () => {\n const baseRenderUrl = document.body.getAttribute('data-render-url')\n\n const didQueue = navigator.sendBeacon?.(`${baseRenderUrl}/stats/${this.format}/gave_up`)\n\n if (!didQueue) {\n window.debug('Failed to send give up info')\n } else {\n window.debug('Sent give up status info.')\n }\n }\n\n handleCmd = (cmd: MESSAGE_RESPONSE_TYPES, arg: Record | boolean) => {\n if (cmd === MESSAGE_RESPONSE_TYPES.branding) {\n document.body.classList.remove('is-embedded')\n\n return\n }\n\n const renderableContent = arg as Record\n\n switch (cmd) {\n case MESSAGE_RESPONSE_TYPES.ack:\n if (this.requireAck()) {\n this.onAck()\n }\n\n break\n // this has to match the string in github/github/app/assets/modules/github/behaviors/render-editor.ts\n case MESSAGE_RESPONSE_TYPES.markdown:\n this.trigger(document, MESSAGE_RESPONSE_TYPES.markdown, {\n data: renderableContent.data,\n width: renderableContent.width,\n })\n break\n case MESSAGE_RESPONSE_TYPES.containerSize:\n this.trigger(document, MESSAGE_RESPONSE_TYPES.containerSize, {width: renderableContent.width})\n break\n case MESSAGE_RESPONSE_TYPES.readyAck:\n this.trigger(document, MESSAGE_RESPONSE_TYPES.readyAck)\n break\n case MESSAGE_RESPONSE_TYPES.sandboxReady:\n this.trigger(document, MESSAGE_RESPONSE_TYPES.sandboxReady, {\n content: renderableContent.content,\n scripts: renderableContent.scripts,\n styles: renderableContent.styles,\n })\n break\n default:\n window.debug(`Invalid command '${cmd}':`, arg)\n }\n }\n\n handleMessage = (event: MessageEvent) => {\n const {data, origin} = event\n if (!data || !origin || origin === 'null') {\n return\n }\n\n let originHostname = ''\n try {\n originHostname = new URL(origin).host\n } catch (e) {\n window.debug('Could not construct URL from origin', origin)\n if (e instanceof Error) this.reportStatusError(e)\n }\n\n if (\n !isSameOrigin(this.githubHostname, originHostname) &&\n // special case: allow local IP address for local development\n !(this.githubHostname === 'github.localhost' && isSameOrigin('127.0.0.1', originHostname))\n ) {\n return\n }\n\n const {type, identity, body} = (() => {\n try {\n return JSON.parse(data)\n } catch {\n return data\n }\n })()\n if (!type || !body) {\n return\n }\n if (identity && identity !== this.identity) {\n return window.debug(`Message has identity '${identity}', expected '${this.identity}'.`)\n }\n\n switch (type) {\n case 'render:timing': {\n const {timing, format} = body\n if (!timing || !format) {\n return window.debug('Malformed timing message:', body)\n }\n if (format !== this.format) {\n return window.debug(`Format mismatch: got '${format}' expected '${this.format}'`)\n }\n return this.submitTiming('remote', timing)\n }\n case 'render:cmd': {\n const {cmd} = body\n const arg = body[cmd]\n if (isDefined(cmd) && isDefined(arg)) {\n return this.handleCmd(cmd, arg)\n }\n break\n }\n default:\n return window.debug(`Unknown message type: ${type}`)\n }\n }\n\n // Is the viewscreen renderer running inside an iframe?\n haveParent = () => {\n return window.parent !== window\n }\n\n clientTimeoutAttempts() {\n return Number(document.body.getAttribute('data-client-timeout-attempts'))\n }\n\n trigger(target: Document | HTMLElement, name: string, data = {}) {\n const event = new CustomEvent(name, {detail: {...data}})\n target.dispatchEvent(event)\n }\n\n // Report a failed status error to Sentry\n reportStatusError(error: Error) {\n reportErrors(\n new ErrorEvent('status', {\n error,\n filename: 'status.ts',\n message: error.message,\n }),\n )\n }\n}\n\nexport default Status\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","var UNKNOWN_FUNCTION = '';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n var lines = stackString.split('\\n');\n return lines.reduce(function (stack, line) {\n var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n var parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n var submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n var parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n var parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n var parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n var parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nexport { parse };\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Reports uncaught JS errors to Sentry\nimport {isDefined} from './utils'\nimport {parse} from 'stacktrace-parser'\n\ntype NavigationExtraInfo = Record\ntype NavigationDetails = {\n type: string\n url: string\n state: History['state']\n info: NavigationExtraInfo\n}\n\nconst baseContext = {originalHistoryState: JSON.stringify(window.history.state)}\nconst ERROR_METADATA_KEYS = ['commit', 'repository_id', 'repository_type', 'browser', 'version']\n\n/**\n * Firefox (and perhaps other browsers) will occasionally return a null\n * value for the error property on an error event.\n * It is unclear why this would happen, but it leads to some confusing error reporting\n * in Sentry\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror\n */\nconst errorFallback = {\n name: 'NullErrorEvent',\n stack: '',\n failbotContext: {},\n}\n\n/**\n * Parses the url of the renderable being displayed for metadata that can help us\n * troubleshoot client JS errors without exposing PII.\n * This data is currently being proxied to failbotg from the go server.\n *\n * @param locationData object adhering to the Location interface\n * @returns Map of additional error data we want to supply to sentry\n */\nfunction getErrorMetadata(locationData: Location) {\n const {pathname, search} = locationData\n const pathParts = pathname.split('/')\n const [action, format] = pathParts.slice(1)\n const urlParams = new URLSearchParams(search)\n\n const paramsMetadata = Array.from(urlParams.entries()).reduce((memo, pair) => {\n if (ERROR_METADATA_KEYS.includes(pair[0])) {\n memo = {\n ...memo,\n [pair[0]]: pair[1],\n }\n }\n\n return memo\n }, {})\n\n return {...paramsMetadata, format, action}\n}\n\n/**\n * Many errors are emitted from browser extensions, e.g. users\n * with TexAllTheThings, which attempts to load a version of mathjax.\n * That extension doesn't handle load failures and results in errors\n * being reported to us that we:\n * * cannot control\n * * do not affect the rendering of the notebook\n * So, we ignore them when detected.\n * @param filename\n * @returns boolean\n */\nfunction isBrowserExtension(filename: string = '') {\n return filename.includes('chrome-extension://') || filename.includes('moz-extension://')\n}\n\nconst loadTime = new Date().getTime()\n\n// Flag when page is unloaded\nlet unloaded = false\n\nfunction flagUnloaded() {\n unloaded = true\n}\n\nfunction flagLoaded() {\n unloaded = false\n}\n\nfunction reportErrors(event: ErrorEvent) {\n // Do this first so we can skip all the extra, unnecessary operations\n if (!reportable(event) && event.type !== 'submit') {\n return\n }\n const {message, filename, lineno, error} = event\n const safeError = error || errorFallback\n const {stack, name, failbotContext} = safeError\n const preprocessedStack = parse(stack ?? '')\n const stacktrace = preprocessedStack\n .map(frame => ({\n filename: frame.file || '',\n function: String(frame.methodName),\n lineno: (frame.lineNumber || 0).toString(),\n colno: (frame.column || 0).toString(),\n }))\n .reverse()\n const exceptionDetail = [\n {\n type: name,\n value: message,\n stacktrace,\n },\n ]\n\n const context = {\n message,\n filename,\n lineno,\n url: window.location.href,\n readyState: document.readyState,\n referrer: document.referrer,\n stack: safeError.stack,\n historyState: JSON.stringify(window.history.state),\n timeSinceLoad: Math.round(new Date().getTime() - loadTime),\n extensionScripts: JSON.stringify(extensionScripts().sort()),\n navigations: JSON.stringify(getNavigations()),\n exceptionDetail,\n platform: 'javascript',\n ...getErrorMetadata(window.location),\n ...failbotContext,\n ...baseContext,\n }\n\n // Attach any logging info we have\n context.logging = (() => {\n try {\n const debugMessages = (isDefined(window.debug) ? window.debug.buffer() : undefined) || []\n return JSON.stringify(debugMessages)\n } catch {\n return\n }\n })()\n\n // Report errors to app\n const viewscreenUrl = document.body.getAttribute('data-render-url')\n\n fetch(`${viewscreenUrl}/_errors`, {\n method: 'POST',\n headers: {'Content-Type': 'application/json; charset=utf-8'},\n body: JSON.stringify(context),\n })\n}\n\nconst reportable = (function () {\n let errorsReported = 0\n\n return function (event: ErrorEvent) {\n const {lineno, error, filename, message} = event\n const errorStack = error ? error.stack : undefined\n\n // Only report errors if we can get backtraces & line numbers\n if (!errorStack || !lineno) {\n return false\n }\n\n // Ignore errors raised when browsers cancel loading resources after\n // links are clicked or the page is stopped.\n if (unloaded) {\n return false\n }\n\n if (isBrowserExtension(filename) || isBrowserExtension(errorStack)) {\n return false\n }\n\n if (message.includes('Failed to load content') || errorStack?.includes('Failed to load content')) {\n return false\n }\n\n // Report a max of 10 errors per user per page load. This way if something is\n // generating errors continuously, we won't flood Haystack with duplicates.\n if (errorsReported >= 10) {\n return false\n }\n errorsReported++\n\n return true\n }\n})()\n\nconst extensionScripts = () =>\n (() => {\n const result = []\n const scripts = Array.from(document.querySelectorAll('script'))\n for (const script of scripts) {\n if (/^(?:chrome-extension|file):/.test(script.src)) {\n result.push(script.src)\n }\n }\n return result\n })()\n\n// Add the just-completed navigation to session storage to be included in\n// needles for debugging.\nfunction pushNavigation(loadType: string, info: NavigationExtraInfo = {}) {\n const navigations = getNavigations()\n navigations.push({type: loadType, url: window.location.href, state: window.history.state, info})\n return setNavigations(navigations)\n}\n\nconst NAVIGATIONS_KEY = 'navigations'\n\n// Retrieve all past navigations from the current session.\nfunction getNavigations() {\n const json = (() => {\n try {\n return sessionStorage.getItem(NAVIGATIONS_KEY)\n } catch {\n return\n }\n })()\n if (json) {\n return JSON.parse(json)\n } else {\n return []\n }\n}\n\n// Store the current session's navigations.\nfunction setNavigations(navigations: NavigationDetails[]) {\n try {\n return sessionStorage.setItem(NAVIGATIONS_KEY, JSON.stringify(navigations))\n } catch {\n return\n }\n}\n\n// Record all navigations in this session for inclusion in needles.\npushNavigation('load')\n\nwindow.addEventListener('hashchange', event =>\n pushNavigation('hashchange', {oldURL: event.oldURL, newURL: event.newURL}),\n)\nwindow.addEventListener('popstate', event => pushNavigation('popstate', {eventState: event.state}))\nwindow.addEventListener('pageshow', flagLoaded)\nwindow.addEventListener('pagehide', flagUnloaded)\nwindow.addEventListener('error', reportErrors)\n\ndocument.addEventListener('pjax:success', () => pushNavigation('pjax:success'))\ndocument.addEventListener('pjax:popstate', (event: PJaxPopStateEvent) =>\n pushNavigation('pjax:popstate', {pjaxDirection: event.direction, pjaxState: event.state}),\n)\n\nexport default reportErrors\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, `'`, and ``` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nmodule.exports = unescape;\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import {DEFAULT_DOCS_LINK_HOSTNAME} from './constants'\n\n/**\n * Determine if a value is nullish (undefined or null)\n * @param {*} value The value to check\n * @returns boolean\n */\nexport function isDefined(value?: T): value is NonNullable {\n return value !== null && value !== undefined && typeof value !== 'undefined'\n}\n\nexport function onDocumentReady(initializer: () => void) {\n if (document.readyState === 'complete') {\n initializer()\n } else {\n document.addEventListener('DOMContentLoaded', initializer)\n }\n}\n\nexport function decodeHTML(html: string) {\n // DOMParser won't run javascript and just returns text,\n // so this should be safe.\n const doc = new DOMParser().parseFromString(html, 'text/html')\n return doc.documentElement.textContent ?? ''\n}\n\nclass InvariantViolationError extends Error {}\n\nexport function invariant(condition: any, message?: string): asserts condition {\n if (condition) return\n\n throw new InvariantViolationError(message ?? 'Invariant violation')\n}\n\nexport const assertElement = (node: any): node is Element => node instanceof Element\n\nexport const assertHTMLElement = (node: Element | ParentNode | HTMLElement | null): node is HTMLElement =>\n node instanceof HTMLElement\n\nexport const assertSVGElement = (node: SVGElement | SVGSVGElement | null): node is SVGElement =>\n node instanceof SVGElement\n\nexport const getGitHubDocsHostname = () =>\n document.body.getAttribute('data-github-docs-hostname') || DEFAULT_DOCS_LINK_HOSTNAME\n\nconst getDomainName = (hostname: string) => hostname.split('.').slice(-2).join('.').toLowerCase()\n\n/**\n * Determine if the source domain has the same origin as the host domain. To match, the source domain must contain\n * have the same domain name (ignoring subdomains) as the host domain.\n */\nexport const isSameOrigin = (targetHostname: string, sourceHostname: string) =>\n getDomainName(targetHostname) === getDomainName(sourceHostname)\n\n/** Adds `target=\"_parent\"` (if not already set to something else) to all links in this node. */\nexport const openLinksInParent = (node: Element) => {\n for (const link of node.querySelectorAll('a'))\n if (!link.hasAttribute('_target')) link.setAttribute('target', '_parent')\n}\n","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","/**\n * Map of supported render types\n * These correspond to the supported formats outlined in formats.go, and should\n * be kept in sync with those.\n * Certain formats when rendered, for example, the geojson code in this repo\n * handles both geojson and topojson files.\n */\nexport const enum RENDER_FORMATS {\n solid = 'solid',\n geojson = 'geojson',\n image = 'img',\n pdf = 'pdf',\n psd = 'psd',\n mermaid = 'mermaid',\n sandbox = 'sandbox',\n}\n\n/**\n * Map of supported states for the Status class\n * Enumerates the status message types accepted by the rails app\n */\nexport enum STATUS_TYPES {\n constructor = 'constructor',\n hello = 'hello',\n resize = 'resize',\n loading = 'loading',\n loaded = 'loaded',\n error = 'error',\n fatal = 'error:fatal',\n invalid = 'error:invalid',\n ready = 'ready',\n // these need to match the strings in github/github/app/assets/modules/github/behaviors/render-editor.ts\n markdown = 'code_rendering_service:markdown:get_data',\n getContainerSize = 'code_rendering_service:container:get_size',\n}\n\nexport const enum MESSAGE_RESPONSE_TYPES {\n ack = 'ack',\n branding = 'branding',\n markdown = 'code_rendering_service:data:ready',\n containerSize = 'code_rendering_service:container:size',\n readyAck = 'code_rendering_service:ready:ack',\n sandboxReady = 'sandbox:data:ready',\n}\n\n/**\n * This is set within the github css. However, because we need to manually\n * update the render container's height during pjax nav events, we also need to ensure that\n * every renderable type fires a resize event some height; this is a fallback for types\n * that did not previously report their height. For now, those types are `geojson` and `stl`\n */\nexport const DEFAULT_CONTAINER_HEIGHT = 500\n\nexport const DEFAULT_DOCS_LINK_HOSTNAME = 'https://docs.github.com'\n","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import {assertElement, invariant} from './utils'\n\n/**\n * LinkNavigator handles linking to relative and absolute URLs from a rich file.\n * Mostly used in geojson pins or within mermaid charts\n *\n * @param hasParent boolean Is this class instantiated from within an iframe?\n */\nclass LinkNavigator {\n private hasParent!: boolean\n\n constructor({hasParent = false}) {\n this.hasParent = hasParent\n\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target\n invariant(assertElement(target), `Expected click target to be an instance of Element. Got ${target} instead.`)\n\n if (this.isLinkableNode(target)) {\n this.handleLink(event)\n }\n })\n }\n\n private isLinkableNode = (node: Element) => {\n return node.matches('a') || node.matches('svg')\n }\n\n // Handle the clicking of a link in the document in the context-appropriate way\n public handleLink = (e: MouseEvent) => {\n const target = e.target as HTMLAnchorElement | SVGElement\n const href = target.getAttribute('href') || target.getAttribute('xlink:href') || ''\n\n // Don't bother processing nothing\n if (!href.length) {\n return\n }\n // anchors can just pass through\n if (href.match(/^#/)) {\n return true\n }\n\n e.preventDefault()\n try {\n return this.navigateTo(href)\n } catch (error) {\n window.debug(`Navigation to '${href}' failed:`, error)\n const failClass = 'failed'\n const failInterval = 500\n\n target.classList.add(failClass)\n return setTimeout(() => target.classList.remove(failClass), failInterval)\n }\n }\n\n // Navigate to `href` either by asking the parent for the move, or by\n // performing the navigation myself.\n public navigateTo = (href: string) => {\n if (href.match(/^https?:\\/\\//) || href.match(/^\\/\\//)) {\n this.navigateDirect(href)\n } else {\n this.navigateRelative(href)\n }\n }\n\n public navigateRelative = (relHref: string) => {\n const rootUrl = document.body.getAttribute('data-github-hostname')\n\n // Using the URL constructor to build a full URL to take advantage of the built-in sanitization.\n const baseUrl = new URL(`https://${rootUrl}`)\n const prefixedRelHref = relHref.startsWith('/') ? relHref : `/${relHref}`\n const fullUrl = new URL(prefixedRelHref, baseUrl)\n const protocolRelativeURL = fullUrl.toString().replace(/^https:/, '')\n return this.navigateDirect(protocolRelativeURL)\n }\n\n public navigateDirect = (href: string) => {\n if (this.hasParent) {\n window.top!.location.href = href\n } else {\n window.location.href = href\n }\n }\n}\n\nexport default LinkNavigator\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","// 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](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + __webpack_require__.h() + \".js\";\n};","__webpack_require__.h = () => (\"a72eac494ce65a7ee317\")","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t375: 0,\n\t839: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","/**\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/******/ // 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__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n TouchManager: () => (/* reexport */ TouchManager),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n stopEvent: () => (/* reexport */ stopEvent),\n version: () => (/* reexport */ version)\n});\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 IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\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};\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_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\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 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};\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.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`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 try {\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 ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\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 MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\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 objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\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 platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\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 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 applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\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(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\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 #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 if (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 } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\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 return 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) {\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 (!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 (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 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 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}\n\n;// ./src/display/display_utils.js\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 {\n userUnit,\n viewBox\n } = this;\n const dims = viewBox.map(x => x * userUnit);\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 return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\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 reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || 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 try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\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 || 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 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(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `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 pixelRatio = window.devicePixelRatio || 1;\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}\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 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 });\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 editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\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 this.#addDeleteButton();\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 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 }\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 }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\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.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\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 editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\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 #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\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}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\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,`;\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 #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\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 #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = 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 #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, altTextManager, 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.#altTextManager = altTextManager;\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 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 }\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.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = 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 }\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 => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\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 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 = \"\") {\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 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 };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\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.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\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 #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.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.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.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 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 }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\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.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\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 }\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, isFromKeyboard = 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.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this._editorUndoBar?.hide();\n this.#updateModeCapability.resolve();\n return;\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 (!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.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\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(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\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 for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\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 const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\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 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.#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 }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\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 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}\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.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/touch_manager.js\n\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\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 shadow(this, \"MIN_TOUCH_DISTANCE_TO_PINCH\", 35 / (window.devicePixelRatio || 1));\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.() || evt.touches.length < 2) {\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 passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n container.addEventListener(\"touchend\", this.#onTouchEnd.bind(this), opt);\n container.addEventListener(\"touchcancel\", this.#onTouchEnd.bind(this), 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 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 evt.preventDefault();\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 this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n if (!this.#touchInfo) {\n return;\n }\n evt.preventDefault();\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = 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 _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 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 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 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 }\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 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 #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 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 = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\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(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\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 = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / 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(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\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 if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\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 async addAltTextButton() {\n if (this.#altText) {\n return;\n }\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 await this.addEditToolbar();\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 render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: this.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._uiManager._editorUndoBar?.hide();\n return this.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(parentWidth * newWidth, parentHeight * newHeight);\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 get isSelected() {\n return this._uiManager.isSelected(this);\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._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 onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\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 unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\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 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 }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\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.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\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.firstChild.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 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 unselect() {\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 }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\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 setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\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 renderAnnotationElement(annotation) {\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 firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.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 #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 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 && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\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 for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\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 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 get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\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\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 _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.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 let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\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 constructor(translatedData, {\n disableFontFace = false,\n fontExtraProperties = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this.fontExtraProperties = fontExtraProperties === true;\n this._inspectFont = inspectFont;\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 = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\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 MissingPDFException || ex instanceof PasswordException || ex instanceof UnexpectedResponseException || 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 \"MissingPDFException\":\n return new MissingPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(ex.message, ex.status);\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 = url.split(\"#\", 1)[0];\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/node_utils.js\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}\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 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 _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._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 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 \"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 \"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[7];\n this._background = IR[8];\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 getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\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, color, ctx, canvasGraphicsFactory, baseTransform) {\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.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\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 matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[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);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\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 graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\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 ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\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);\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\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\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 ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(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 ctxSetTransform(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 ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(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}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.patternStroke = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[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.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 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 if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[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) {\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.processingType3 = null;\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 }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\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) {\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;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[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 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(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 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 [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\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) : 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 return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\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(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\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() {\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 this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\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 const backdropRGB = Util.makeHexColor(...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 = backdropRGB;\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 = backdropRGB;\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() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(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 ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(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 ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\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 newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\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(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\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(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) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n const currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n const currentTransform = ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\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 }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\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 }\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(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\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 ctx.transform(...current.textMatrix);\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 if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\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 const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\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 ctx.fillText(chars.join(\"\"), 0, 0);\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 if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).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 } else {\n this.paintChar(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(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 return undefined;\n }\n showType3Text(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 ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\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 continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n this.current.patternStroke = true;\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(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(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\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 = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\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 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 } else {\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.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(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 if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\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 const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\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(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\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(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(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 ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(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(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\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 const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(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 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(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : 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 ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(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(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(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();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\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 drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(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 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 ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\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() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(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(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\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(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\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.stroke();\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\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\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 getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\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}\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 try {\n return new URL(url).origin;\n } catch {}\n return 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 createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\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 createResponseStatusError(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 createResponseStatusError(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 = createResponseStatusError(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 ??= createResponseStatusError(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\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 = new MissingPDFException(`Missing PDF \"${this._url}\".`);\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/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\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 * (globalThis.devicePixelRatio || 1);\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 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 * (globalThis.devicePixelRatio || 1);\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 !== null) {\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, 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 scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * 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 let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\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 transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\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, 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 let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\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/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\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 : DEFAULT_RANGE_CHUNK_SIZE;\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 = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\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 || DefaultCanvasFactory;\n const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n const enableHWA = src.enableHWA === true;\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 && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, 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 };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.10.38\",\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 cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\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 let NetworkStream;\n if (isNodeJS) {\n if (isValidFetchUrl(url)) {\n if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n }\n NetworkStream = PDFFetchStream;\n } else {\n NetworkStream = PDFNodeStream;\n }\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\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);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\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 isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\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}\nclass PDFDataRangeTransport {\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 this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\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._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.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 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 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 #delayedCleanupTimeout = null;\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._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\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 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 }) {\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 this.#abortDelayedCleanup();\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 complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\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 canvasContext,\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 });\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 this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\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 #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\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(true);\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(true);\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 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}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\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 }\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 this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\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 ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.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\", function () {});\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.href, 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._readyCapability.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._readyCapability.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._readyCapability.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 fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - 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(/*webpackIgnore: true*/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) {\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.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.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 const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\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 inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n fontExtraProperties,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\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 case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\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 pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\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(\"FetchBuiltInCMap\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.cMapReaderFactory) {\n throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.standardFontDataFactory) {\n throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.standardFontDataFactory.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 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 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 }));\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}\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}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\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 }) {\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.canvasContext.canvas;\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 canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\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 this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\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);\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 = \"4.10.38\";\nconst build = \"f9bea397f\";\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}\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/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/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\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.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\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 const {\n width,\n height\n } = getRectDims(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 * width / pageWidth}%`;\n style.height = `${100 * height / 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)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\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 } = getRectDims(data.rect);\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(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--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 const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\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,\", ``, ``];\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 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(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\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 });\n });\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);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\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.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\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 }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\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) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\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 (!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._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(--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 = \"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 element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\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 (elementData.userValue) {\n target.value = elementData.userValue;\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 storage.setValue(id, {\n value: elementData.userValue.toString()\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 storage.setValue(id, {\n formattedValue\n });\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 value\n } = event.target;\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(--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 = DEFAULT_TAB_INDEX;\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 = DEFAULT_TAB_INDEX;\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 = DEFAULT_TAB_INDEX;\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 } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\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 });\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 #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 #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\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 }) {\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.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\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 if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"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 header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\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(--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 _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.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 return p;\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 popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\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 #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 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.#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 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 = 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._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 data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\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._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 data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\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._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 data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\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._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 } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\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._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._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._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 if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\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 if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\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 if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\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 if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\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._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._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 #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\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 elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\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 const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\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 && 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 const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\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 }\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}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\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 }\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 #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--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 #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\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 (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\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 }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\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 }\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 dblclick(event) {\n this.enterInEditMode();\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 render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\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(--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 bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\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.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\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 = bufferBefore.reduce((acc, line) => acc + line.length, 0);\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 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 },\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 id,\n deleted: false,\n popupRef\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.annotationElementId = data.id || null;\n editor._initialData = initialData;\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 padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\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._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 (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--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 const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\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.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 let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const bbox = this.#bbox;\n bbox[0] = minX - this.#innerMargin;\n bbox[1] = minY - this.#innerMargin;\n bbox[2] = maxX - minX + 2 * this.#innerMargin;\n bbox[3] = maxY - minY + 2 * this.#innerMargin;\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\nclass HighlightOutliner {\n #box;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -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 minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\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] = edge;\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.#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.#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, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\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/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 #type;\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.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || 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.setAttribute(\"aria-haspopup\", true);\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.setAttribute(\"aria-hidden\", 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.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"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.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\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.setAttribute(\"aria-selected\", 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: this.#type,\n value: color\n });\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.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || 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.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.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 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.#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.setAttribute(\"aria-selected\", i.next().value === color);\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}\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 #lastPoint = null;\n #opacity;\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 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 }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(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 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 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_DEFAULT_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 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_DEFAULT_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 #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\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.highlightColorNames.get(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 async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\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 },\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 id,\n deleted: false,\n popupRef\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 },\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 id,\n deleted: false,\n popupRef\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.annotationElementId = data.id || null;\n editor._initialData = initialData;\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 }\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 rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\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 } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\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 this.updateProperty(name, value);\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 _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\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 (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 };\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(x, y)\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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\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 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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\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 (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== 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 DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(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 (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\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 DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = 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 DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\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) {\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.getRect(0, 0)\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 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) {\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 InkDrawOutline();\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 const [x, y] = line.subarray(i, i + 2);\n bbox[0] = Math.min(bbox[0], x);\n bbox[1] = Math.min(bbox[1], y);\n bbox[2] = Math.max(bbox[2], x);\n bbox[3] = Math.max(bbox[3], y);\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] = Math.min(1, Math.max(0, bbox[0] - marginX));\n bbox[1] = Math.min(1, Math.max(0, bbox[1] - marginY));\n bbox[2] = Math.min(1, Math.max(0, bbox[2] + marginX));\n bbox[3] = Math.min(1, Math.max(0, bbox[3] + marginY));\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\nclass InkDrawingOptions extends DrawingOptions {\n #viewParameters;\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 }\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 },\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 id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\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 rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\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._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 const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\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 #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 }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\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._editToolbar.hide();\n this._uiManager.editAltText(this, true);\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 = StampEditor.supportedTypesStr;\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);\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.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.div.setAttribute(\"role\", \"figure\");\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width && !this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\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 const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\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 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 canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\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 (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\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 getImageForAltText() {\n return this.#canvas;\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 if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n const canvas = container.querySelector(\"canvas\");\n const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n canvas.remove();\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: imageData.id,\n bitmap: imageData.bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\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 (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 editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\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 = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(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 }\n serialized.id = this.annotationElementId;\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._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\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 #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].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(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\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 for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\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?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n this.#isEnabling = false;\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\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 this.#isEnabling = false;\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\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 if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\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 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.annotationElementId);\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 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 pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(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 #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\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() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\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 if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\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 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 #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\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 = this.#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 = this.#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.firstChild;\n const pathElement = defs.firstChild;\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\nconst pdfjsVersion = \"4.10.38\";\nconst pdfjsBuild = \"f9bea397f\";\n{\n globalThis.pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__TouchManager = __webpack_exports__.TouchManager;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__stopEvent = __webpack_exports__.stopEvent;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__TouchManager as TouchManager, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","import {getDocument} from 'pdfjs-dist'\nimport type {PDFPageProxy} from 'pdfjs-dist'\n\nexport const getPDFPromise = (url: string, cmapDir: string) => {\n const cMapUrl = cmapDir[cmapDir.length - 1] === '/' ? cmapDir : `${cmapDir}/`\n\n return getDocument({\n url,\n cMapPacked: true,\n cMapUrl,\n // Disable range loading of PDF documents since raw doesn't seem to support it\n disableRange: true,\n }).promise\n}\n\nexport const getCanvas = async (page: PDFPageProxy): Promise<[HTMLCanvasElement, null] | [null, Error]> => {\n // Scale viewport to page width\n const originalViewport = page.getViewport({scale: 1})\n // The default .com width is 900, lets use just over double that so we can\n // scale it down and have it look nice\n const scale = 2000 / originalViewport.width\n const viewport = page.getViewport({scale})\n\n // Construct canvas\n // If this canvas is created from an iframe's document, that iframe must be\n // visible in the DOM before creating canvas nodes. Attempting to write to\n // a canvas created from a document within a hidden iframe produces an NS_ERROR_FAILURE\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=941146\n const canvas = document.createElement('canvas')\n canvas.classList.add('pdf-page')\n canvas.setAttribute('data-page', page._pageIndex)\n const canvasContext = canvas.getContext('2d')!\n\n // We need these to be set correctly so the pdf renders at the correct\n // size within the canvas\n canvas.height = viewport.height\n canvas.width = viewport.width\n try {\n await page.render({\n canvasContext,\n viewport,\n }).promise\n return [canvas, null]\n } catch (error) {\n return [null, error as Error]\n }\n}\n","import '../../render'\nimport {RENDER_FORMATS, STATUS_TYPES} from '../../render/constants'\nimport {getCanvas, getPDFPromise} from './common'\n\nimport type pdfjs from 'pdfjs-dist'\nimport type {PDFDocumentProxy} from 'pdfjs-dist'\nimport Status from '../../render/status'\n\n/**\n * This class was created due to canvas memory limitations on iOS,\n * which requires us to only render a single canvas with one page\n * at a time.\n *\n * Ideally all PDFs would be rendered using the MultiPageView class\n * as it provides a better user experience, so only use this if the\n * device you're using is running into memory issues.\n */\nclass SinglePageView {\n private status = new Status(RENDER_FORMATS.pdf)\n private shell = document.querySelector('.js-render-shell')!\n private pageContainer = this.shell.querySelector('.pdf-container')!\n private pageNav = this.shell.querySelector('#single-page-nav')!\n\n private currentPage = 1\n private pagePrev = this.pageNav.querySelector('#page-prev')!\n private pageNext = this.pageNav.querySelector('#page-next')!\n\n // How many pages the document contains\n private totalPages = 0\n\n private pagesRendered = 0\n\n private pdf!: PDFDocumentProxy\n\n constructor(private PDFJS: typeof pdfjs) {\n // Hide by default, only showing when there are multiple pages\n this.pageNav.style.display = 'none'\n\n // Load PDFJS worker from correct path\n const workerSrc = this.pageContainer.getAttribute('data-pdf-worker-js-path')\n\n if (!workerSrc) {\n this.status.set(STATUS_TYPES.error, {error: 'Missing pdf worker src path'})\n return\n }\n\n this.PDFJS.GlobalWorkerOptions.workerSrc = workerSrc\n\n this.pagePrev.addEventListener('click', () => this.renderPage(this.currentPage - 1))\n this.pageNext.addEventListener('click', () => this.renderPage(this.currentPage + 1))\n\n window.addEventListener('resize', () => {\n // Prevent resize jank on pjax navigations\n // when a user goes back and forth using browser navigation,\n // the iframe is getting resized as DOM classes are added / removed by code on dotcom\n // There seems to be a race condition where this handler is listening\n // before those classes have been updated, which triggers a resize of 1px\n if (this.pagesRendered > 0) {\n this.status.set(STATUS_TYPES.resize, {height: this.entireHeight()})\n }\n })\n\n this.init()\n }\n\n private init = async () => {\n const url = this.pageContainer.getAttribute('data-file') ?? ''\n\n try {\n await this.fetch(url)\n await this.renderPage(this.currentPage)\n const height = this.entireHeight()\n this.status.set(STATUS_TYPES.ready, {height})\n // For some reason the height of the iframe doesn't update until a few hundred milliseconds after the page is loaded, so we need to wait for that\n const interval = setInterval(() => {\n if (height !== this.entireHeight()) {\n this.status.set(STATUS_TYPES.resize, {height: this.entireHeight()})\n clearInterval(interval)\n }\n }, 100)\n } catch (error) {\n this.status.set(STATUS_TYPES.error, {error})\n }\n }\n\n private entireHeight = () => document.documentElement.scrollHeight\n\n private fetch = async (url: string) => {\n window.debug(`Attempting to load [${url}]`)\n this.status.set(STATUS_TYPES.loading)\n\n try {\n this.pdf = await getPDFPromise(url, this.pageContainer.getAttribute('data-bcmap-dir')!)\n this.totalPages = this.pdf.numPages\n window.debug(`Got PDF with ${this.totalPages} pages`)\n if (this.totalPages > 1) {\n this.pageNav.style.display = 'block'\n }\n this.status.set(STATUS_TYPES.loaded)\n } catch (reason) {\n window.debug(`Invalid PDF because ${reason}`)\n this.status.set(STATUS_TYPES.invalid)\n }\n }\n\n async renderPage(num: number) {\n if (num < 1 || num > this.totalPages) return\n this.currentPage = num\n // Deload all pages first to prevent memory issues\n for (const canvas of document.querySelectorAll('.pdf-page')) {\n canvas.width = 0\n canvas.height = 0\n\n canvas.remove()\n }\n\n const page = await this.pdf.getPage(this.currentPage)\n\n const [canvas, error] = await getCanvas(page)\n if (error !== null) {\n this.status.set(STATUS_TYPES.fatal, {\n error: `Error loading PDF page number ${page.pageNumber}`,\n })\n throw error\n }\n\n this.pageContainer.append(canvas)\n\n this.pagePrev.setAttribute('aria-disabled', String(this.currentPage <= 1))\n this.pageNext.setAttribute('aria-disabled', String(this.currentPage >= this.totalPages))\n\n window.debug(`Page ${this.currentPage} ready`)\n }\n}\n\nexport default SinglePageView\n","import {isDefined} from './utils'\n\ntype Options = {\n queueInterval?: number\n batchSize?: number\n}\n\ntype Handler = () => void\n\n/**\n * @class JobQueue\n *\n * Schedules batches of functions to be executed after a set number\n * of milliseconds. Exposes a single method, `run`, which is used to both add functions\n * to the queue and execute existing batches of functions\n *\n * @param options.queueInterval? Number of milliseconds in between execution of a batch of functions.\n * Defaults to 16ms\n * @param options.batchSize? Number of functions to be executed in a single batch.\n * Defaults to 50 functions\n */\nclass JobQueue {\n private queueInterval!: number\n private batchSize!: number\n private queue: Handler[] = []\n\n constructor(options?: Options) {\n this.queueInterval = options?.queueInterval ?? 16\n this.batchSize = options?.batchSize ?? 50\n }\n\n public run = (fn?: Handler): void => {\n if (isDefined(fn)) {\n // Defer the first call if we have an empty queue otherwise this is no\n // better than calling the given function inline. setTimeout of 0 will schedule\n // `run` to execute at the top of the next stack frame\n if (this.queue.length === 0) {\n setTimeout(this.run, 0)\n }\n return void this.queue.push(fn)\n } else {\n // We'll run through the queue in batches to avoid a super long and awkward\n // animation-like experience\n for (let n = 0; n < this.batchSize; n++) {\n if (this.queue.length < 1) {\n return\n }\n\n const first = this.queue.shift()\n\n if (typeof first === 'function') {\n first()\n }\n }\n }\n\n setTimeout(this.run, this.queueInterval)\n }\n}\n\nexport default JobQueue\n","import '../../render'\nimport JobQueue from '../../render/job-queue'\nimport {RENDER_FORMATS, STATUS_TYPES} from '../../render/constants'\nimport {getCanvas, getPDFPromise} from './common'\nimport Status from '../../render/status'\n\nimport type pdfjs from 'pdfjs-dist'\nimport type {PDFDocumentProxy, PDFPageProxy} from 'pdfjs-dist'\n\nconst RENDER_BATCH_SIZE = 5\n\nclass MultiPageView {\n private status = new Status(RENDER_FORMATS.pdf)\n private jobQueue = new JobQueue({batchSize: RENDER_BATCH_SIZE})\n\n // Current number of pages rendered so far\n private pagesRendered = 0\n // How many pages the document contains\n private totalPages = 0\n // How many pages to render per load\n private pagesPerLoad = 5\n // How many pages have we been asked for?\n private pagesFetched = 0\n\n private shell = document.querySelector('.js-render-shell')!\n private pageContainer = this.shell.querySelector('.pdf-container')!\n private pageLoader = this.shell.querySelector('#js-click-for-more')!\n\n private pageNav = this.shell.querySelector('#single-page-nav')!\n\n private pdf!: PDFDocumentProxy\n\n constructor(private PDFJS: typeof pdfjs) {\n // Hide this by default, until all the pages we want to load are drawn on the DOM\n this.pageLoader.style.display = 'none'\n this.pageNav.style.display = 'none'\n\n // Load PDFJS worker from correct path\n const workerSrc = this.pageContainer.getAttribute('data-pdf-worker-js-path')\n\n if (!workerSrc) {\n this.status.set(STATUS_TYPES.error, {error: 'Missing pdf worker src path'})\n return\n }\n this.PDFJS.GlobalWorkerOptions.workerSrc = workerSrc\n\n window.addEventListener('resize', () => {\n // Prevent resize jank on pjax navigations\n // when a user goes back and forth using browser navigation,\n // the iframe is getting resized as DOM classes are added / removed by code on dotcom\n // There seems to be a race condition where this handler is listening\n // before those classes have been updated, which triggers a resize of 1px\n if (this.pagesRendered > 0) {\n this.resize()\n }\n })\n this.pageLoader.addEventListener('click', this.getMorePages)\n\n this.init()\n }\n\n private init = async () => {\n const url = this.pageContainer.getAttribute('data-file') ?? ''\n\n try {\n await this.fetch(url)\n await this.loadPages(1, this.pagesPerLoad)\n } catch (error) {\n this.status.set(STATUS_TYPES.error, {error})\n }\n }\n\n private fetch = async (url: string) => {\n window.debug(`Attempting to load [${url}]`)\n this.status.set(STATUS_TYPES.loading)\n\n try {\n this.pdf = await getPDFPromise(url, this.pageContainer.getAttribute('data-bcmap-dir') ?? '')\n this.totalPages = this.pdf.numPages\n window.debug(`Got PDF with ${this.totalPages} pages`)\n if (this.totalPages < this.pagesPerLoad) {\n this.pagesPerLoad = this.totalPages\n }\n\n this.status.set(STATUS_TYPES.loaded)\n } catch (reason) {\n window.debug(`Invalid PDF because ${reason}`)\n this.status.set(STATUS_TYPES.invalid, {error: 'Invalid PDF'})\n }\n }\n\n private loadPages = async (start: number, end: number) => {\n this.pagesFetched += end - start\n window.debug(`Loading pages from ${start} to ${end}`)\n\n for (let pageNumber = start; pageNumber <= end; pageNumber++) {\n try {\n const page = await this.pdf.getPage(pageNumber)\n await this.renderPage(page)\n } catch (error) {\n window.debug('Error loading PDF', error)\n }\n }\n }\n\n private renderPage = async (page: PDFPageProxy) => {\n const [canvas, error] = await getCanvas(page)\n\n if (error) {\n this.status.set(STATUS_TYPES.fatal, {\n error: `Error loading PDF page number ${page.pageNumber}`,\n })\n return\n }\n\n this.pageContainer.append(canvas)\n\n this.pagesRendered += 1\n this.updateContainerSize()\n }\n\n private updateContainerSize = () => {\n const allPagesLoaded = this.pagesRendered === this.totalPages\n\n if (this.pagesRendered === this.pagesPerLoad) {\n this.jobQueue.run(this.ready)\n } else if (this.pagesRendered % this.pagesPerLoad === 0) {\n // Page rendered, queue a message telling the iframe's container on dotcom to resize\n // itself if necessary\n this.jobQueue.run(() => this.resize())\n }\n\n if (allPagesLoaded) {\n this.jobQueue.run(() => {\n this.hidePageLoader()\n })\n\n this.jobQueue.run(() => {\n this.resize()\n })\n }\n\n if (this.pagesRendered === this.pagesFetched && !allPagesLoaded) {\n this.jobQueue.run(this.rebindPageLoader)\n }\n\n if (this.pagesRendered % RENDER_BATCH_SIZE === 0 || allPagesLoaded) {\n window.debug(`${this.pagesRendered}/${this.totalPages} pages ready`)\n }\n }\n\n private getMorePages = () => {\n this.pageLoader.classList.add(STATUS_TYPES.loading)\n\n let pageMax = 0\n if (this.pagesRendered + this.pagesPerLoad > this.totalPages) {\n pageMax = this.totalPages\n } else {\n pageMax = this.pagesRendered + this.pagesPerLoad\n }\n\n window.debug(`Getting pages from ${this.pagesRendered + 1} to ${pageMax}`)\n\n this.loadPages(this.pagesRendered + 1, pageMax)\n }\n\n private ready = () => {\n window.debug('Sending ready')\n this.status.set(STATUS_TYPES.ready)\n }\n\n private resize = () => {\n window.debug(`Sending resize w/${this.entireHeight()}`)\n this.status.set(STATUS_TYPES.resize, {height: this.entireHeight()})\n }\n\n private entireHeight = () => {\n return document.documentElement.scrollHeight\n }\n\n private rebindPageLoader = () => {\n if (this.pagesRendered === this.totalPages) {\n return\n }\n\n this.pageLoader.style.display = 'block'\n this.pageLoader.classList.remove('loading')\n this.pageLoader.removeEventListener('click', this.getMorePages)\n this.pageLoader.addEventListener('click', this.getMorePages)\n }\n\n private hidePageLoader = () => {\n this.pageLoader.style.display = 'none'\n this.pageContainer.classList.add('loaded')\n this.pageLoader.removeEventListener('click', this.getMorePages)\n }\n}\n\nexport default MultiPageView\n","/* Copyright 2022 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/* eslint-disable import/no-unresolved */\n\nimport { GlobalWorkerOptions } from \"./build/pdf.mjs\";\n\nif (typeof window !== \"undefined\" && \"Worker\" in window) {\n GlobalWorkerOptions.workerPort = new Worker(\n new URL(\"./build/pdf.worker.mjs\", import.meta.url),\n { type: \"module\" }\n );\n}\n\nexport * from \"./build/pdf.mjs\";\n","import '../../stylesheets/pdf.scss'\nimport {onDocumentReady} from '../render/utils'\n\nimport PDFViewer from './lib'\n\nonDocumentReady(PDFViewer)\n","import SinglePageView from './single-page-view'\nimport MultiPageView from './multi-page-view'\nimport * as PDFJS from 'pdfjs-dist/webpack.mjs'\n\nconst PDFViewer = () => {\n // IOS has a low limit on canvas sizes so we should only render a few pages at a time\n const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent)\n\n return isIOS ? new SinglePageView(PDFJS) : new MultiPageView(PDFJS)\n}\n\nexport default PDFViewer\n"],"names":["_isNativeFunction","t","Function","toString","call","indexOf","n","asyncGeneratorStep","e","r","o","a","c","i","u","value","done","Promise","resolve","then","_asyncToGenerator","this","arguments","apply","_next","_throw","_isNativeReflectConstruct","Boolean","prototype","valueOf","Reflect","construct","_typeof","Symbol","iterator","constructor","toPrimitive","TypeError","String","Number","_defineProperties","length","enumerable","configurable","writable","Object","defineProperty","key","_createClass","_classCallCheck","logMessage","_len","messageArgs","Array","_key","args","time","Date","now","Logger","options","undefined","loggerFn","window","console","log","quiet","_defineProperty","_loggerFn","storeMessage","bufCopy","buffer","push","nextBuffer","slice","bufferSize","_step","numMessages","_iterator","_createForOfIteratorHelper","s","message","concat","isArray","arrayLikeToArray","from","unsupportedIterableToArray","err","f","Render","logger","_window$console","IS_QUIET_MODE","debug","bind","_arrayLikeToArray","InvalidProtocolError","_Error","_callSuper","_inherits","_wrapNativeSuper","Error","FailedError","_Error2","_this","isClientUrl","url","exec","renderableLoaderDefaults","setStatus","attempts","timeout","json","statusOptionDefaults","allowLinks","initialMessage","STATUS_TYPES","hello","_onSuccess","WeakMap","_onError","_Status_brand","WeakSet","_onBeforeSend","_prepareFetchedData","_x2","_x3","_prepareFetchedData2","_regeneratorRuntime","_callee2","result","maybeJson","_context2","prev","next","headers","get","arrayBuffer","abrupt","sent","text","t0","JSON","parse","unescape","t1","set","fatal","reportStatusError","stop","Status","format","_document$body$getAtt","_document$body$getAtt2","_this2","opts","initial","remaining","interval","initialStatusTimeout","acked","setTimeout","sendInitial","clearTimeout","_classPrivateFieldInitSpec","loaded","error","status","payload","alreadySentStatus","isDefined","resize","includes","ago","Math","abs","when","messages","ready","onReady","requireAck","post","type","body","localTiming","submitTiming","_step2","_iterator2","msg","origin","timing","_navigator$sendBeacon","_navigator","stringify","baseRenderUrl","document","getAttribute","navigator","sendBeacon","_navigator$sendBeacon2","_navigator2","cmd","arg","MESSAGE_RESPONSE_TYPES","branding","renderableContent","ack","onAck","markdown","trigger","data","width","containerSize","readyAck","sandboxReady","content","scripts","styles","classList","remove","event","originHostname","URL","host","isSameOrigin","githubHostname","_ref","_unused","identity","handleCmd","parent","_objectSpread","githubEnv","LinkNavigator","hasParent","haveParent","location","hash","substring","protocol","addEventListener","handleMessage","filter","_load","_callee","_finalOptions$attempt","_finalOptions$before","_finalOptions$success","_finalOptions$error","_finalOptions$before2","finalOptions","requestController","abortTimeoutId","settings","response","_this3","_args","_context","loading","clientTimeoutAttempts","before","_assertClassBrand","success","_classPrivateFieldGet","AbortController","abort","method","signal","fetch","finish","load","submitGiveup","Response","_x","_msg$identity","parentHostname","referrer","hostname","targetOrigin","postMessage","target","name","CustomEvent","detail","dispatchEvent","reportErrors","ErrorEvent","filename","_slicedToArray","_setPrototypeOf","setPrototypeOf","__proto__","module","exports","__esModule","_getPrototypeOf","getPrototypeOf","UNKNOWN_FUNCTION","stackString","split","reduce","stack","line","parseResult","parts","chromeRe","isNative","isEval","submatch","chromeEvalRe","file","methodName","lineNumber","column","parseChrome","winjsRe","parseWinjs","geckoRe","geckoEvalRe","parseGecko","nodeRe","parseNode","javaScriptCoreRe","parseJSC","hasOwnProperty","asyncIterator","toStringTag","define","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","h","l","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","awrap","async","keys","reverse","pop","charAt","rval","handle","complete","delegateYield","baseContext","originalHistoryState","history","state","ERROR_METADATA_KEYS","errorFallback","failbotContext","isBrowserExtension","loadTime","getTime","unloaded","reportable","locationData","pathname","search","_pathParts$slice","_pathParts$slice2","action","urlParams","paramsMetadata","lineno","safeError","exceptionDetail","stacktrace","map","frame","function","colno","context","href","readyState","historyState","timeSinceLoad","round","extensionScripts","sort","navigations","getNavigations","platform","URLSearchParams","entries","memo","pair","logging","debugMessages","viewscreenUrl","errorsReported","errorStack","_i","_scripts","querySelectorAll","script","test","src","pushNavigation","loadType","info","sessionStorage","setItem","NAVIGATIONS_KEY","_unused3","setNavigations","getItem","_unused2","oldURL","newURL","eventState","pjaxDirection","direction","pjaxState","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","object","reEscapedHtml","reHasEscapedHtml","RegExp","source","freeGlobal","freeSelf","self","root","unescapeHtmlChar","objectToString","symbolProto","symbolToString","string","isObjectLike","isSymbol","baseToString","replace","Map","has","Wrapper","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","marker","runClearTimeout","Item","array","noop","nextTick","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","onDocumentReady","initializer","InvariantViolationError","invariant","condition","assertElement","node","Element","getDomainName","join","toLowerCase","targetHostname","sourceHostname","_construct","_arrayWithHoles","_nonIterableRest","_possibleConstructorReturn","RENDER_FORMATS","_iterableToArrayLimit","_unsupportedIterableToArray","_assertThisInitialized","ReferenceError","_ref$hasParent","matches","match","preventDefault","navigateTo","failClass","add","navigateDirect","navigateRelative","relHref","rootUrl","baseUrl","prefixedRelHref","startsWith","protocolRelativeURL","top","isLinkableNode","handleLink","toPropertyKey","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","getter","definition","chunkId","obj","prop","scriptUrl","importScripts","currentScript","tagName","toUpperCase","getElementsByTagName","b","baseURI","pdfjsLib","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","ColorPicker","DOMSVGFactory","DrawLayer","FeatureTest","GlobalWorkerOptions","ImageKind","InvalidPDFException","MissingPDFException","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","TouchManager","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","stopEvent","isNodeJS","nw","electron","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","ERRORS","WARNINGS","INFOS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","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","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","warn","unreachable","assert","cond","addDefaultProtocol","dots","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","_isValidProtocol","nonSerializable","BaseException","PasswordException","code","super","UnknownErrorException","details","FormatError","bytesToString","bytes","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","Uint8Array","charCodeAt","objectFromMap","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","isMac","isWindows","isFirefox","userAgent","isCSSRoundSupported","CSS","supports","hexNumbers","padStart","makeHexColor","scaleMinMax","minMax","temp","m1","m2","applyTransform","applyInverseTransform","getAxialAlignedBoundingBox","p1","p2","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","x1","x2","x3","y0","y1","y2","y3","mt","tt","ttt","x","delta","sqrtDelta","a2","bezierBoundingBox","NormalizeRegex","NormalizationMap","replaceAll","_","normalize","AnnotationPrefix","try","fn","SVG_NS","static","PDF","isValidFetchUrl","ok","statusText","blob","reject","request","XMLHttpRequest","open","responseType","onreadystatechange","DONE","responseText","send","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","height","rawDims","dims","pageWidth","pageHeight","pageX","pageY","clone","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","extraDelay","ii","trim","lastIndexOf","defaultFilename","reFilename","splitURI","suggestedFilename","StatTimer","started","times","timeEnd","start","end","outBuf","longest","padEnd","stopPropagation","toDateObject","input","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","xfaPage","attributes","style","getRGB","color","colorRGB","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","div","viewport","mustFlip","mustRotate","useRound","w","widthStr","heightStr","setAttribute","pixelRatio","devicePixelRatio","scaled","symmetric","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","render","editToolbar","createElement","_uiManager","_signal","buttons","className","append","position","toolbarPosition","insetInlineEnd","_focusEventsAllowed","element","capture","hide","hideDropdown","show","shown","editorType","button","tabIndex","delete","divider","addAltText","altText","prepend","addColorPicker","colorPicker","renderButton","destroy","HighlightToolbar","uiManager","boxes","isLTR","lastY","lastX","box","span","highlightSelection","bindEvents","names","IdManager","id","ImageManager","crypto","randomUUID","buf","getRandomValues","getUuid","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","decode","drawImage","getImageData","rawData","bitmap","refCounter","isSvg","File","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","size","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","close","isValidId","CommandManager","maxSize","undo","mustExec","NaN","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","Set","callback","isMacKey","at","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","colors","visibility","computedColor","getComputedStyle","getColorValues","convert","rgb","matchMedia","RGB","every","_colorsMapping","getHexCode","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","proto","arrowChecker","contains","activeElement","hasSomethingToControl","textInputChecker","_self","el","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","annotationStorage","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","layer","clear","combinedSignal","ac","AbortSignal","any","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","highlightColorNames","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","switchToMode","mode","dispatch","setPreference","pageNumber","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","Node","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","addToAnnotationStorage","setValue","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","drop","addEditListeners","removeEditListeners","dataTransfer","items","isHandlingMimeForPasting","dropEffect","item","editors","serialized","serialize","clipboardData","setData","getData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","some","assign","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","pageIndex","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","promise","withResolvers","annotationElementId","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","updateColor","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","all","getEditors","getEditor","addEditor","removeEditor","addDeletedAnnotationElement","addChangedExistingAnnotation","deleted","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","isSelected","firstSelectedEditor","params","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","translateInPage","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","range","collapsed","getClientRects","renderAnnotationElement","annotation","editorId","getRawValue","hasBeenModified","AltText","added","missing","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","removeAttribute","textContent","parentNode","getImageForAltText","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","touches","opt","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","AnnotationEditor","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","_resizeWithKeyboard","_stopResizingWithKeyboard","parameters","_willKeepAspectRatio","isCentered","_structTreeParentId","pageRotation","pageDimensions","pageTranslation","parentDimensions","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","setAt","screenToPageTranslation","_onTranslating","translate","scrollIntoView","block","findNewParent","floor","bx","by","getBaseTranslation","left","toFixed","_onTranslated","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","classes","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","newWidth","newHeight","_round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","deltaX","deltaY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","addEditToolbar","removeEditToolbar","addContainer","editToolbarDiv","getClientDimensions","addAltTextButton","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","maxWidth","maxHeight","isResizable","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","clientX","clientY","pointerId","pointerType","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","isInEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","popupRef","accessibilityData","makeResizable","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","firstChild","lastChild","child","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","contentDiv","setAspectRatio","aspectRatio","telemetryInitialData","telemetryFinalData","_telemetryTimeout","querySelector","nodeName","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","update","ArrayBuffer","isView","byteLength","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","transfer","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","resetModified","modified","entry","val","getAll","setAll","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","counters","count","computeTelemetryFinalData","resetModifiedIds","modifiedIds","ids","structuredClone","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","_inspectFont","loadedName","disableFontFace","isFontLoadingAPISupported","fontFace","FontFace","baseFontName","font","attached","missingFile","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","supported","otherRequest","shift","_loadTestFont","atob","int32","offset","spliceString","insert","called","XXXX_VALUE","checksum","btoa","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","fontExtraProperties","inspectFont","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","arr","toBase64","getPathGenerator","objs","character","objId","cmds","path","Path2D","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","onPull","onCancel","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","canvasAndContext","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","BaseStandardFontDataFactory","DOMStandardFontDataFactory","node_utils_fetchData","fs","getBuiltinModule","readFile","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","current","getClippedPathBoundingBox","ceil","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","c1","c2","c3","coords","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","k","x1_","x2_","j","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","matrixScale","temporaryPatternCanvas","DummyShadingPattern","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","step","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","updateRectMinMax","strokeStyle","fillColor","strokeColor","cssColor","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","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","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","maxX","updateScalingPathMinMax","updateCurvePathMinMax","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","kind","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","fround","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","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","intent","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","newPath","invTransf","addPath","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","multiplySelf","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","_getPattern","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","compiled","POINT_TYPES","width1","j0","points","lineSize","pos","sum","Int32Array","p0","pp","compileType3Glyph","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","view","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroups","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","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","quotindex","extvalue","encodingend","charset","hex","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","NetworkManager","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","stat","_setReadableStream","createReadStream","_error","readableStream","DEFAULT_FONT_SIZE","FontInspector","textContentSource","finally","fontFamilyMap","pump","lang","onBefore","abortEx","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","opacity","lineHeight","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","XfaText","xfa","output","walk","shouldBuildText","DEFAULT_RANGE_CHUNK_SIZE","DefaultCanvasFactory","createRequire","require","createCanvas","DefaultCMapReaderFactory","DefaultFilterFactory","docId","contain","svg","createElementNS","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","getUrlProp","Buffer","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","workerParams","port","fromPort","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","isRefProxy","ref","num","gen","onPassword","_pendingDestroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","listener","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","PDFObjects","_maybeCleanupAfterRender","_intentStates","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","LoopbackPort","rmAbort","aborted","onAbort","removeEventListener","terminate","_isSameOrigin","otherUrl","base","other","_createCDNWrapper","wrapper","createObjectURL","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","_setupFakeWorker","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","import","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","page","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","exportedData","exportedError","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","metadata","INITIAL_DATA","RenderTask","onContinue","form","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_canvas","StepperManager","init","getNextBreakPoint","gfx","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","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","setupStorage","html","storage","storedData","xfaOn","xfaOff","checked","option","selected","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","addLinkAttributes","newWindow","dataId","xfaHtml","rootHtml","isNotForRichText","rootDiv","createTextNode","childHtml","xmlns","hidden","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","annotationType","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","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","_isEditable","isEditable","hasPopupData","updateEdited","popup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","colorType","colorArray","display","noView","noPrint","userName","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","modificationDate","parentRect","elements","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","isTooltipOnly","link","isBound","_bindNamedAction","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","description","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","Event","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","index","findIndex","selectChild","indices","editable","changeEx","keyDown","PopupElement","elementIds","ariaHasPopup","flatMap","baseColor","outlineColor","BACKGROUND_ENLIGHT","header","dateObj","contents","_formatContents","popupLines","popupContent","lineAttributes","lines","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","polyline","it","inkLists","thickness","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","contentElement","annotationId","ariaAttributes","getAriaAttributes","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","replaceWith","after","getEditableAnnotations","getEditableAnnotation","EOL_PATTERN","FreeTextEditor","_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","dblclick","baseX","baseY","posX","posY","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","acc","setStart","setEnd","removeAllRanges","addRange","replaceChildren","padding","structTreeParentId","Outline","toSVGPath","_rotation","_rescale","Float32Array","_rescaleAndSwap","_translate","svgRound","_normalizePoint","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPoint","lastPointX","lastPointY","ltrCallback","newOutliner","getNewOutline","outliner","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","renderMainDropdown","dropdown","role","nextSibling","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","toolbar","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","rawWidth","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","setter","getPathResizingSVGProperties","getPathResizedSVGProperties","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_y","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","timeStamp","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","Float64Array","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","PRECISION","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","InkEditor","StampEditor","bitmapUrl","bitmapFile","supportedTypes","supportedTypesStr","pasteEditor","getAsFile","hasAltTextStats","hasNoAltText","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","alt","accept","files","click","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","prevWidth","prevHeight","toUrl","toDataURL","structParent","_structTree","bitmapId","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","_editorType","annotationLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","editables","changedAnnotations","resetAnnotations","attach","detach","removePointerInTextLayer","startDrawingSession","pause","oldRotation","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","pdfjsTestingUtils","__webpack_exports__AbortException","__webpack_exports__AnnotationEditorLayer","__webpack_exports__AnnotationEditorParamsType","__webpack_exports__AnnotationEditorType","__webpack_exports__AnnotationEditorUIManager","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__ColorPicker","__webpack_exports__DOMSVGFactory","__webpack_exports__DrawLayer","__webpack_exports__FeatureTest","__webpack_exports__GlobalWorkerOptions","__webpack_exports__ImageKind","__webpack_exports__InvalidPDFException","__webpack_exports__MissingPDFException","__webpack_exports__OPS","__webpack_exports__OutputScale","__webpack_exports__PDFDataRangeTransport","__webpack_exports__PDFDateString","__webpack_exports__PDFWorker","__webpack_exports__PasswordResponses","__webpack_exports__PermissionFlag","__webpack_exports__PixelsPerInch","__webpack_exports__RenderingCancelledException","__webpack_exports__TextLayer","__webpack_exports__TouchManager","__webpack_exports__UnexpectedResponseException","__webpack_exports__Util","__webpack_exports__VerbosityLevel","__webpack_exports__XfaLayer","__webpack_exports__build","__webpack_exports__createValidAbsoluteUrl","__webpack_exports__fetchData","__webpack_exports__getDocument","__webpack_exports__getFilenameFromUrl","__webpack_exports__getPdfFilenameFromUrl","__webpack_exports__getXfaPageViewport","__webpack_exports__isDataScheme","__webpack_exports__isPdfFile","__webpack_exports__noContextMenu","__webpack_exports__normalizeUnicode","__webpack_exports__setLayerDimensions","__webpack_exports__shadow","__webpack_exports__stopEvent","__webpack_exports__version","getPDFPromise","cmapDir","originalViewport","SinglePageView","PDFJS","pdf","shell","pageNav","_this$pageContainer$g","pageContainer","renderPage","currentPage","entireHeight","setInterval","clearInterval","scrollHeight","_ref2","totalPages","invalid","pagePrev","pageNext","pagesRendered","_renderPage","_callee3","_yield$getCanvas","_yield$getCanvas2","_context3","JobQueue","_options$queueInterva","_options$batchSize","batchSize","queueInterval","MultiPageView","loadPages","pagesPerLoad","_this$pageContainer$g2","_ref3","pagesFetched","_ref4","_callee4","_context4","updateContainerSize","_x4","allPagesLoaded","jobQueue","hidePageLoader","rebindPageLoader","pageLoader","pageMax","getMorePages"],"sourceRoot":""}