UNPKG

1.77 MBSource Map (JSON)View Raw
1{"version":3,"file":"pdf.mjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,0BAA0B,mBAAO,CAAC,IAAoC;;AAEtE;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACTa;AACb,UAAU,+BAAuC;;AAEjD;AACA;AACA;AACA;AACA;;;;;;;;ACPa;AACb,oBAAoB,mBAAO,CAAC,IAAqC;;AAEjE;;AAEA;AACA;AACA;AACA;;;;;;;;ACRa;AACb,eAAe,mBAAO,CAAC,EAAwB;;AAE/C;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb;AACA;;;;;;;;ACFa;AACb,0BAA0B,mBAAO,CAAC,IAA6C;AAC/E,cAAc,mBAAO,CAAC,IAA0B;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZa;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,4BAA4B,mBAAO,CAAC,IAAuC;;AAE3E;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;ACda;AACb,aAAa,mBAAO,CAAC,IAAqB;AAC1C,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,0BAA0B,mBAAO,CAAC,IAA6C;AAC/E,cAAc,mBAAO,CAAC,IAAuB;AAC7C,iBAAiB,mBAAO,CAAC,IAAuC;AAChE,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,yBAAyB,mBAAO,CAAC,IAAkC;AACnE,uCAAuC,mBAAO,CAAC,IAA+C;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yBAAyB;AAC1E;AACA;AACA;AACA;AACA,IAAI;AACJ,4EAA4E,4CAA4C;AACxH;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;;;;;;;AC7Ca;AACb,0BAA0B,mBAAO,CAAC,IAA2C;AAC7E,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,aAAa,mBAAO,CAAC,IAAqB;AAC1C,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,aAAa,mBAAO,CAAC,IAA+B;AACpD,cAAc,mBAAO,CAAC,IAAsB;AAC5C,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,kCAAkC,mBAAO,CAAC,IAA6C;AACvF,oBAAoB,mBAAO,CAAC,IAA8B;AAC1D,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,oBAAoB,mBAAO,CAAC,IAAqC;AACjE,qBAAqB,mBAAO,CAAC,IAAsC;AACnE,qBAAqB,mBAAO,CAAC,IAAsC;AACnE,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,UAAU,mBAAO,CAAC,IAAkB;AACpC,0BAA0B,mBAAO,CAAC,IAA6B;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAC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O,CAAC,IAAuC;AAC5E,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,WAAW,mBAAO,CAAC,GAAmB;AACtC,4BAA4B,mBAAO,CAAC,IAAsC;AAC1E,gBAAgB,mBAAO,CAAC,IAAyB;;AAEjD;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;;;;;;;ACnFa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,8BAA8B,mBAAO,CAAC,IAAsC;AAC5E,2BAA2B,mBAAO,CAAC,IAAqC;AACxE,eAAe,mBAAO,CAAC,IAAwB;AAC/C,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,qBAAqB,mBAAO,CAAC,IAA6B;AAC1D,8BAA8B,mBAAO,CAAC,IAAsC;AAC5E,eAAe,mBAAO,CAAC,IAAwB;AAC/C,oBAAoB,mBAAO,CAAC,IAA8B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;;;;;;;;AC3Ca;AACb,kB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A;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,IAAI,uDAAuD;AAC3D;AACA;AACA;AACA,CAAC;;;;;;;;AC1PY;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA6B;AACtD,6BAA6B,mBAAO,CAAC,IAAyC;;AAE9E;AACA;AACA,IAAI,uFAAuF;AAC3F;AACA,CAAC;;;;;;;;ACTY;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,YAAY,mBAAO,CAAC,IAAoB;AACxC,mBAAmB,mBAA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EAC1E;IACA,OAAOD,MAAM,CAACC,UAAU,CAAC,CAAC;EAC5B;EACA,MAAMC,GAAG,GAAG,IAAI/tF,UAAU,CAAC,EAAE,CAAC;EAC9B,IACE,OAAO6tF,MAAM,KAAK,WAAW,IAC7B,OAAOA,MAAM,EAAEG,eAAe,KAAK,UAAU,EAC7C;IACAH,MAAM,CAACG,eAAe,CAACD,GAAG,CAAC;EAC7B,CAAC,MAAM;IACL,KAAK,IAAIngG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC3BmgG,GAAG,CAACngG,CAAC,CAAC,GAAGzd,IAAI,CAACC,KAAK,CAACD,IAAI,CAAC89G,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IAC1C;EACF;EACA,OAAOtiB,aAAa,CAACoiB,GAAG,CAAC;AAC3B;AAEA,MAAM56G,gBAAgB,GAAG,oBAAoB;;;;;;;SCjjC7C;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAI;UACJ;UACA;UACA,IAAI;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,CAAC;UACD;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,EAAE;UACF;UACA,sGAAsG;UACtG;UACA;UACA;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA,EAAE;UACF;UACA;;;;;UChEA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;SEAA;SACA;SACA;SACA","sources":["webpack://pdf.js/./node_modules/core-js/internals/a-callable.js","webpack://pdf.js/./node_modules/core-js/internals/a-possible-prototype.js","webpack://pdf.js/./node_modules/core-js/internals/a-set.js","webpack://pdf.js/./node_modules/core-js/internals/an-instance.js","webpack://pdf.js/./node_modules/core-js/internals/an-object.js","webpack://pdf.js/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://pdf.js/./node_modules/core-js/internals/array-buffer-byte-length.js","webpack://pdf.js/./node_modules/core-js/internals/array-buffer-is-detached.js","webpack://pdf.js/./node_modules/core-js/internals/array-buffer-transfer.js","webpack://pdf.js/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://pdf.js/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://pdf.js/./node_modules/core-js/internals/array-includes.js","webpack://pdf.js/./node_modules/core-js/internals/array-set-length.js","webpack://pdf.js/./node_modules/core-js/internals/array-to-reversed.js","webpack://pdf.js/./node_modules/core-js/internals/array-with.js","webpack://pdf.js/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdf.js/./node_modules/core-js/internals/classof-raw.js","webpack://pdf.js/./node_modules/core-js/internals/classof.js","webpack://pdf.js/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdf.js/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdf.js/./node_modules/core-js/internals/create-iter-result-object.js","webpack://pdf.js/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdf.js/./node_modules/core-js/internals/create-property-descriptor.js","webpack://pdf.js/./node_modules/core-js/internals/create-property.js","webpack://pdf.js/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://pdf.js/./node_modules/core-js/internals/define-built-in.js","webpack://pdf.js/./node_modules/core-js/internals/define-built-ins.js","webpack://pdf.js/./node_modules/core-js/internals/define-global-property.js","webpack://pdf.js/./node_modules/core-js/internals/descriptors.js","webpack://pdf.js/./node_modules/core-js/internals/detach-transferable.js","webpack://pdf.js/./node_modules/core-js/internals/document-create-element.js","webpack://pdf.js/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://pdf.js/./node_modules/core-js/internals/dom-exception-constants.js","webpack://pdf.js/./node_modules/core-js/internals/engine-is-browser.js","webpack://pdf.js/./node_modules/core-js/internals/engine-is-deno.js","webpack://pdf.js/./node_modules/core-js/internals/engine-is-node.js","webpack://pdf.js/./node_modules/core-js/internals/engine-user-agent.js","webpack://pdf.js/./node_modules/core-js/internals/engine-v8-version.js","webpack://pdf.js/./node_modules/core-js/internals/enum-bug-keys.js","webpack://pdf.js/./node_modules/core-js/internals/error-stack-clear.js","webpack://pdf.js/./node_modules/core-js/internals/export.js","webpack://pdf.js/./node_modules/core-js/internals/fails.js","webpack://pdf.js/./node_modules/core-js/internals/function-bind-context.js","webpack://pdf.js/./node_modules/core-js/internals/function-bind-native.js","webpack://pdf.js/./node_modules/core-js/internals/function-call.js","webpack://pdf.js/./node_modules/core-js/internals/function-name.js","webpack://pdf.js/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://pdf.js/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://pdf.js/./node_modules/core-js/internals/function-uncurry-this.js","webpack://pdf.js/./node_modules/core-js/internals/get-built-in.js","webpack://pdf.js/./node_modules/core-js/internals/get-iterator-direct.js","webpack://pdf.js/./node_modules/core-js/internals/get-iterator-flattenable.js","webpack://pdf.js/./node_modules/core-js/internals/get-iterator-method.js","webpack://pdf.js/./node_modules/core-js/internals/get-iterator.js","webpack://pdf.js/./node_modules/core-js/internals/get-method.js","webpack://pdf.js/./node_modules/core-js/internals/get-set-record.js","webpack://pdf.js/./node_modules/core-js/internals/global.js","webpack://pdf.js/./node_modules/core-js/internals/has-own-property.js","webpack://pdf.js/./node_modules/core-js/internals/hidden-keys.js","webpack://pdf.js/./node_modules/core-js/internals/html.js","webpack://pdf.js/./node_modules/core-js/internals/ie8-dom-define.js","webpack://pdf.js/./node_modules/core-js/internals/indexed-object.js","webpack://pdf.js/./node_modules/core-js/internals/inherit-if-required.js","webpack://pdf.js/./node_modules/core-js/internals/inspect-source.js","webpack://pdf.js/./node_modules/core-js/internals/internal-state.js","webpack://pdf.js/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdf.js/./node_modules/core-js/internals/is-array.js","webpack://pdf.js/./node_modules/core-js/internals/is-big-int-array.js","webpack://pdf.js/./node_modules/core-js/internals/is-callable.js","webpack://pdf.js/./node_modules/core-js/internals/is-forced.js","webpack://pdf.js/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://pdf.js/./node_modules/core-js/internals/is-object.js","webpack://pdf.js/./node_modules/core-js/internals/is-possible-prototype.js","webpack://pdf.js/./node_modules/core-js/internals/is-pure.js","webpack://pdf.js/./node_modules/core-js/internals/is-symbol.js","webpack://pdf.js/./node_modules/core-js/internals/iterate-simple.js","webpack://pdf.js/./node_modules/core-js/internals/iterate.js","webpack://pdf.js/./node_modules/core-js/internals/iterator-close.js","webpack://pdf.js/./node_modules/core-js/internals/iterator-create-proxy.js","webpack://pdf.js/./node_modules/core-js/internals/iterator-map.js","webpack://pdf.js/./node_modules/core-js/internals/iterators-core.js","webpack://pdf.js/./node_modules/core-js/internals/iterators.js","webpack://pdf.js/./node_modules/core-js/internals/length-of-array-like.js","webpack://pdf.js/./node_modules/core-js/internals/make-built-in.js","webpack://pdf.js/./node_modules/core-js/internals/math-trunc.js","webpack://pdf.js/./node_modules/core-js/internals/new-promise-capability.js","webpack://pdf.js/./node_modules/core-js/internals/normalize-string-argument.js","webpack://pdf.js/./node_modules/core-js/internals/object-create.js","webpack://pdf.js/./node_modules/core-js/internals/object-define-properties.js","webpack://pdf.js/./node_modules/core-js/internals/object-define-property.js","webpack://pdf.js/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdf.js/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdf.js/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdf.js/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdf.js/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdf.js/./node_modules/core-js/internals/object-keys-internal.js","webpack://pdf.js/./node_modules/core-js/internals/object-keys.js","webpack://pdf.js/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdf.js/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdf.js/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdf.js/./node_modules/core-js/internals/own-keys.js","webpack://pdf.js/./node_modules/core-js/internals/parse-json-string.js","webpack://pdf.js/./node_modules/core-js/internals/require-object-coercible.js","webpack://pdf.js/./node_modules/core-js/internals/set-clone.js","webpack://pdf.js/./node_modules/core-js/internals/set-difference.js","webpack://pdf.js/./node_modules/core-js/internals/set-helpers.js","webpack://pdf.js/./node_modules/core-js/internals/set-intersection.js","webpack://pdf.js/./node_modules/core-js/internals/set-is-disjoint-from.js","webpack://pdf.js/./node_modules/core-js/internals/set-is-subset-of.js","webpack://pdf.js/./node_modules/core-js/internals/set-is-superset-of.js","webpack://pdf.js/./node_modules/core-js/internals/set-iterate.js","webpack://pdf.js/./node_modules/core-js/internals/set-method-accept-set-like.js","webpack://pdf.js/./node_modules/core-js/internals/set-size.js","webpack://pdf.js/./node_modules/core-js/internals/set-symmetric-difference.js","webpack://pdf.js/./node_modules/core-js/internals/set-union.js","webpack://pdf.js/./node_modules/core-js/internals/shared-key.js","webpack://pdf.js/./node_modules/core-js/internals/shared-store.js","webpack://pdf.js/./node_modules/core-js/internals/shared.js","webpack://pdf.js/./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://pdf.js/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://pdf.js/./node_modules/core-js/internals/to-absolute-index.js","webpack://pdf.js/./node_modules/core-js/internals/to-big-int.js","webpack://pdf.js/./node_modules/core-js/internals/to-index.js","webpack://pdf.js/./node_modules/core-js/internals/to-indexed-object.js","webpack://pdf.js/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdf.js/./node_modules/core-js/internals/to-length.js","webpack://pdf.js/./node_modules/core-js/internals/to-object.js","webpack://pdf.js/./node_modules/core-js/internals/to-primitive.js","webpack://pdf.js/./node_modules/core-js/internals/to-property-key.js","webpack://pdf.js/./node_modules/core-js/internals/to-string-tag-support.js","webpack://pdf.js/./node_modules/core-js/internals/to-string.js","webpack://pdf.js/./node_modules/core-js/internals/try-node-require.js","webpack://pdf.js/./node_modules/core-js/internals/try-to-string.js","webpack://pdf.js/./node_modules/core-js/internals/uid.js","webpack://pdf.js/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdf.js/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdf.js/./node_modules/core-js/internals/validate-arguments-length.js","webpack://pdf.js/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://pdf.js/./node_modules/core-js/internals/well-known-symbol.js","webpack://pdf.js/./node_modules/core-js/modules/es.array-buffer.detached.js","webpack://pdf.js/./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack://pdf.js/./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack://pdf.js/./node_modules/core-js/modules/es.array.push.js","webpack://pdf.js/./node_modules/core-js/modules/es.promise.with-resolvers.js","webpack://pdf.js/./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://pdf.js/./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://pdf.js/./node_modules/core-js/modules/es.typed-array.with.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.constructor.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.every.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.filter.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.flat-map.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.map.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.iterator.some.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.json.parse.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.difference.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.intersection.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.is-subset-of.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.is-superset-of.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js","webpack://pdf.js/./node_modules/core-js/modules/esnext.set.union.v2.js","webpack://pdf.js/./node_modules/core-js/modules/web.dom-exception.stack.js","webpack://pdf.js/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://pdf.js/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://pdf.js/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://pdf.js/./src/shared/scripting_utils.js","webpack://pdf.js/./src/display/annotation_layer.js","webpack://pdf.js/./src/display/annotation_storage.js","webpack://pdf.js/./src/display/api.js","webpack://pdf.js/./src/display/base_factory.js","webpack://pdf.js/./src/display/pattern_helper.js","webpack://pdf.js/./src/shared/image_utils.js","webpack://pdf.js/./src/display/canvas.js","webpack://pdf.js/./src/display/display_utils.js","webpack://pdf.js/./src/display/draw_layer.js","webpack://pdf.js/./src/display/editor/freetext.js","webpack://pdf.js/./src/display/editor/highlight.js","webpack://pdf.js/./src/display/editor/ink.js","webpack://pdf.js/./src/display/editor/stamp.js","webpack://pdf.js/./src/display/editor/annotation_editor_layer.js","webpack://pdf.js/./src/display/editor/color_picker.js","webpack://pdf.js/./src/display/editor/alt_text.js","webpack://pdf.js/./src/display/editor/editor.js","webpack://pdf.js/./src/display/editor/outliner.js","webpack://pdf.js/./src/display/editor/toolbar.js","webpack://pdf.js/./src/display/editor/tools.js","webpack://pdf.js/./src/display/fetch_stream.js","webpack://pdf.js/./src/display/font_loader.js","webpack://pdf.js/./src/display/metadata.js","webpack://pdf.js/./src/display/network.js","webpack://pdf.js/./src/display/content_disposition.js","webpack://pdf.js/./src/display/network_utils.js","webpack://pdf.js/./src/display/node_stream.js","webpack://pdf.js/./src/display/node_utils.js","webpack://pdf.js/./src/display/optional_content_config.js","webpack://pdf.js/./src/display/text_layer.js","webpack://pdf.js/./src/display/transport_stream.js","webpack://pdf.js/./src/display/worker_options.js","webpack://pdf.js/./src/display/xfa_layer.js","webpack://pdf.js/./src/display/xfa_text.js","webpack://pdf.js/./src/pdf.js","webpack://pdf.js/./src/shared/message_handler.js","webpack://pdf.js/./src/shared/murmurhash3.js","webpack://pdf.js/./src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar $TypeError = TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new $TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar slice = uncurryThis(ArrayBuffer.prototype.slice);\n\nmodule.exports = function (O) {\n if (arrayBufferByteLength(O) !== 0) return false;\n try {\n slice(O, 0, 0);\n return false;\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar isDetached = require('../internals/array-buffer-is-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar ArrayBuffer = global.ArrayBuffer;\nvar DataView = global.DataView;\nvar TypeError = global.TypeError;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n if (isDetached(arrayBuffer)) throw new TypeError('ArrayBuffer is detached');\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar $ArrayBuffer = global.ArrayBuffer;\nvar $MessageChannel = global.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = tryNodeRequire('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = global[TARGET] && global[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n try {\n var result = state.done ? undefined : state.nextHandler();\n return createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, 'normal');\n } catch (error) {\n return iteratorClose(iterator, 'throw', error);\n }\n iteratorClose(iterator, 'normal');\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n anObject(this);\n aCallable(mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) remove(result, e);\n });\n return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nmodule.exports = function (name) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n return true;\n }\n } catch (error) {\n return false;\n }\n};\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.36.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n try {\n // eslint-disable-next-line no-new-func -- safe\n if (IS_NODE) return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\n// `Promise.withResolvers` method\n// https://github.com/tc39/proposal-promise-with-resolvers\n$({ target: 'Promise', stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n});\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n every: function every(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n filter: function filter(predicate) {\n anObject(this);\n aCallable(predicate);\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n aCallable(mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n map: map\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n some: function some(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar parseJSONString = require('../internals/parse-json-string');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar JSON = global.JSON;\nvar Number = global.Number;\nvar SyntaxError = global.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^(?:-|\\d)$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n source = toString(source);\n var context = new Context(source, 0, '');\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === undefined) delete object[key];\n else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n this.source = source;\n this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n fork: function (nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function () {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case '{':\n return fork.object();\n case '[':\n return fork.array();\n case '\"':\n return fork.string();\n case 't':\n return fork.keyword(true);\n case 'f':\n return fork.keyword(false);\n case 'n':\n return fork.keyword(null);\n } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function (type, value, start, end, nodes) {\n return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', '}'], i);\n if (at(source, i) === '}' && !expectKeypair) {\n i++;\n break;\n }\n // Parsing the key\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([':'], i) + 1;\n // Parsing value\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([',', '}'], result.end);\n var chr = at(source, i);\n if (chr === ',') {\n expectKeypair = true;\n i++;\n } else if (chr === '}') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === ']' && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([',', ']'], result.end);\n if (at(source, i) === ',') {\n expectElement = true;\n i++;\n } else if (at(source, i) === ']') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function () {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function () {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === '-') i++;\n if (at(source, i) === '0') i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, ++i);\n else throw new SyntaxError('Failed to parse number at: ' + i);\n if (at(source, i) === '.') i = this.skip(IS_DIGIT, ++i);\n if (at(source, i) === 'e' || at(source, i) === 'E') {\n i++;\n if (at(source, i) === '+' || at(source, i) === '-') i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function (value) {\n var keyword = '' + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function (regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function (array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n var unsafeInt = '9007199254740993';\n var source;\n nativeParse(unsafeInt, function (key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n // Safari 9 bug\n return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n difference: difference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n isDisjointFrom: isDisjointFrom\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n isSubsetOf: isSubsetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n isSupersetOf: isSupersetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n union: union\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n","/* Copyright 2020 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\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\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\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static T_rgb() {\n return [null];\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\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\nexport { ColorConverters };\n","/* Copyright 2014 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\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationPrefix,\n AnnotationType,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\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\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n #hasBorder = false;\n\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\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\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n\n static _hasPopupData({ titleObj, contentsObj, richText }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: { page, viewport },\n } = this;\n\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\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n container.style.zIndex = this.parent.zIndex++;\n\n if (data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\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 container.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 container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\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\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\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] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\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 { hidden } = 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({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\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\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\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\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 // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n if (quadPoints.length === 1) {\n const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n if (\n rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY\n ) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n\n const { style } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n ];\n this.container.classList.add(\"hasBorder\");\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasClipPath\");\n }\n\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n\n const { svgFactory } = 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\n for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\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 `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n );\n }\n\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n const { container, data } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n const popup = 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\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = 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({ id, exportValue, domElement });\n }\n return fields;\n }\n\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\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\n get _isEditable() {\n return false;\n }\n\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: { id: editId },\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\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\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\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 (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\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\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\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 === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\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\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n * @param {str} [dest]\n */\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n attachment.content,\n attachment.filename,\n dest\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\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\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\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\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\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 { id } 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\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\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\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({ type: this.data.name })\n );\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n return this.container;\n }\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\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\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 // Non-mouse events\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\n if (!valueGetter) {\n return;\n }\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\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 ||= { focused: false };\n }\n this._setEventListener(\n element,\n elementData,\n baseName,\n eventName,\n getter\n );\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n // Ensure that elementData will have the correct value.\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\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the <input>\n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\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(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\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}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n parameters.data.hasOwnCanvas ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\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\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false,\n };\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\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const { target } = 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\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, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\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 { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\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, { 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\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered 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 { value } = 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\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .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\n // We handle the event ourselves.\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\n this._setEventListeners(\n element,\n elementData,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\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\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\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, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n if (value) {\n // It's possible that multiple radio buttons are checked.\n // So if this one is checked we just reset the other ones.\n // (see bug 1864136). Then when the other ones will be rendered they will\n // unchecked (because of their value in the storage).\n // Consequently, the first checked radio button will be the only checked\n // one.\n for (const radio of this._getElementsByName(\n data.fieldName,\n /* skipId = */ id\n )) {\n storage.setValue(radio.id, { value: false });\n }\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\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, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\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\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\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\n // Insert the options into the choice field.\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\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\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\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\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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ 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(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = 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(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ 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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n null,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const { data, elements } = parameters;\n super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n this.elements = elements;\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const 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\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n\n this.container.setAttribute(\n \"aria-controls\",\n elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n );\n\n return this.container;\n }\n}\n\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n\n #boundHide = this.#hide.bind(this);\n\n #boundShow = this.#show.bind(this);\n\n #boundToggle = this.#toggle.bind(this);\n\n #color = null;\n\n #container = null;\n\n #contentsObj = null;\n\n #dateObj = null;\n\n #elements = null;\n\n #parent = null;\n\n #parentRect = null;\n\n #pinned = false;\n\n #popup = null;\n\n #rect = null;\n\n #richText = null;\n\n #titleObj = null;\n\n #wasVisible = false;\n\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\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\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\n // Attach the event listener to toggle the popup with the keyboard.\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n this.#parent.popupShow.push(async () => {\n if (this.#container.hidden) {\n this.#show();\n }\n });\n }\n }\n\n render() {\n if (this.#popup) {\n return;\n }\n\n const {\n page: { view },\n viewport: {\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n },\n } = this.#parent;\n const popup = (this.#popup = document.createElement(\"div\"));\n popup.className = \"popup\";\n\n if (this.#color) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n ...this.#color\n ));\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n ) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n ...this.#color.map(c =>\n Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n )\n );\n }\n }\n\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n popup.append(header);\n\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\n \"data-l10n-id\",\n \"pdfjs-annotation-date-string\"\n );\n modificationDate.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString(),\n })\n );\n header.append(modificationDate);\n }\n\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (\n richText?.str &&\n (!contentsObj?.str || contentsObj.str === richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n\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\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n\n const { style } = this.#container;\n style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.#container.append(popup);\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\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\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n this.#toggle();\n }\n }\n\n /**\n * Toggle the visibility of the popup.\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\n /**\n * Show the popup.\n */\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n\n /**\n * Hide the popup.\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 =\n parseInt(this.#container.style.zIndex) - 1000;\n }\n\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\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\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this._editOnDoubleClick();\n\n return this.container;\n }\n\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#line;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#square;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = (this.#circle =\n 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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = (this.#polyline = this.svgFactory.createElement(\n this.svgElementName\n ));\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n const { container, data } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(\n data.fillAlpha * 100\n )}%);`;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasFillAlpha\");\n }\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n\n const { isMac } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n\n container.append(trigger);\n return container;\n }\n\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n\n /**\n * Download the file attachment associated with this annotation.\n */\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n #accessibilityManager = null;\n\n #annotationCanvasMap = null;\n\n #editableAnnotations = new Map();\n\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n page,\n viewport,\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"showPopups\", {\n value: async () => {\n for (const show of this.popupShow) {\n await show();\n }\n },\n });\n this.popupShow = [];\n }\n }\n\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n async render(params) {\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n\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\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 { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\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\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n\n this.#setAnnotationCanvasMap();\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\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\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\nexport {\n AnnotationLayer,\n FreeTextAnnotationElement,\n InkAnnotationElement,\n StampAnnotationElement,\n};\n","/* Copyright 2020 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\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\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\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\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\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\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\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\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\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfer }\n : SerializableEmpty;\n }\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 { type } = 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}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n\n constructor(parent) {\n super();\n const { map, hash, transfer } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(map, transfer ? { transfer } : null);\n\n this.#serializable = { map: clone, hash, transfer };\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 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\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { cleanupTextLayer } from \"./text_layer.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {TypedArray | ArrayBuffer | Array<number> | string} [data] -\n * Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\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 =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : 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 =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n 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\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\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 canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream,\n });\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n const isFetchSupported = function () {\n return (\n typeof fetch !== \"undefined\" &&\n typeof Response !== \"undefined\" &&\n \"body\" in Response.prototype\n );\n };\n return isFetchSupported() && isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (\n val instanceof ArrayBuffer ||\n ArrayBuffer.isView(val) ||\n (typeof val === \"object\" && !isNaN(val?.length))\n ) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\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\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\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\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getNetworkStreamName\", {\n value: () => this._transport.getNetworkStreamName(),\n });\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => this._transport.getXFADatasets(),\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => this._transport.getXRefPrevValue(),\n });\n Object.defineProperty(this, \"getStartXRefPos\", {\n value: () => this._transport.getStartXRefPos(),\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => this._transport.getAnnotArray(pageIndex),\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree.\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @typedef {Object} GetOptionalContentConfigParameters\n * @property {string} [intent] - Determines the optional content groups that\n * are visible by default; valid values are:\n * - 'display' (viewable groups).\n * - 'print' (printable groups).\n * - 'any' (all groups).\n * The default value is 'display'.\n */\n\n /**\n * @param {GetOptionalContentConfigParameters} [params] - Optional content\n * config parameters.\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig({ intent = \"display\" } = {}) {\n const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\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 /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\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 scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} [params] - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\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 }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n const { renderingIntent, cacheKey } = intentArgs;\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n optionalContentConfigPromise ||=\n this._transport.getOptionalContentConfig(renderingIntent);\n\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\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\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\n \"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" +\n \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\"\n );\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\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\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\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\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\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\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\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } 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\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\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\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfer } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfer\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\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 };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? { transfer } : null),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (isNodeJS) {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.mjs\";\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(\n new Blob([wrapper], { type: \"text/javascript\" })\n );\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts;\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\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n port\n ) {\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\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _initializeFromPort\");\n }\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker.#mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker = new Worker(workerSrc, { type: \"module\" });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .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\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: fromPort\");\n }\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(\n \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n );\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker =\n typeof PDFJSDev === \"undefined\"\n ? await import(\"pdfjs/pdf.worker.js\")\n : await __non_webpack_import__(this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #methodPromises = new Map();\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #passwordCapability = null;\n\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._params = params;\n\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n\n this.destroyed = false;\n this.destroyCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n\n this.setupMessageHandler();\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getNetworkStreamName\", {\n value: () => networkStream?.constructor?.name || null,\n });\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () =>\n this.messageHandler.sendWithPromise(\"GetXFADatasets\", null),\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () =>\n this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null),\n });\n Object.defineProperty(this, \"getStartXRefPos\", {\n value: () =>\n this.messageHandler.sendWithPromise(\"GetStartXRefPos\", null),\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex =>\n this.messageHandler.sendWithPromise(\"GetAnnotArray\", { pageIndex }),\n });\n }\n }\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\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let annotationStorageSerializable = SerializableEmpty;\n\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\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\n const annotationStorage =\n renderingIntent & RenderingIntentFlag.PRINT &&\n printAnnotationStorage instanceof PrintAnnotationStorage\n ? printAnnotationStorage\n : this.annotationStorage;\n\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n\n this.#passwordCapability?.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n cleanupTextLayer();\n\n this._networkStream?.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\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\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = Promise.withResolvers();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this.#passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return null;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\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\n const inspectFont =\n params.pdfBug && globalThis.FontInspector?.enabled\n ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n : null;\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont,\n });\n\n this.fontLoader\n .bind(font)\n .catch(() => messageHandler.sendWithPromise(\"FontFallback\", { id }))\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const { imageRef } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n\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\n return null;\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n // Don't store data *after* cleanup has successfully run, see bug 1854145.\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\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\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.cMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n const { map, transfer } = this.annotationStorage.serializable;\n\n return this.messageHandler\n .sendWithPromise(\n \"SaveDocument\",\n {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null,\n },\n transfer\n )\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\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\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\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\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(\n data => new OptionalContentConfig(data, renderingIntent)\n );\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\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\n .sendWithPromise(name, null)\n .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\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(/* keepHCM = */ true);\n cleanupTextLayer();\n }\n\n get loadingParams() {\n const { disableAutoFetch, enableXfa } = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa,\n });\n }\n}\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n return (this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\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\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n\n clear() {\n for (const objId in this.#objs) {\n const { data } = this.#objs[objId];\n data?.bitmap?.close(); // Release any `ImageBitmap` data.\n }\n this.#objs = Object.create(null);\n }\n\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const { data } = this.#objs[objId];\n\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getOperatorList\", {\n value: () => this.#internalRenderTask.operatorList,\n });\n }\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n *\n * @param {number} [extraDelay]\n */\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n }\n\n /**\n * Whether form fields are rendered separately from the main operatorList.\n * @type {boolean}\n */\n get separateAnnots() {\n const { separateAnnots } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const { annotationCanvasMap } = this.#internalRenderTask;\n return (\n separateAnnots.form ||\n (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n );\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\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\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n // caching this-bound methods\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\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\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 { canvasContext, viewport, transform, background } = this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n { optionalContentConfig },\n this.annotationCanvasMap,\n this.pageColors\n );\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\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n extraDelay\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n\n if (this.running) {\n return;\n }\n this._continue();\n }\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\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\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\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultFilterFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n PDFWorkerUtil,\n RenderTask,\n version,\n};\n","/* Copyright 2015 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\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n unreachable(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n\n addFilter(maps) {\n return \"none\";\n }\n\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n\n destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\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 };\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\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = true }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\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\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\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\n /**\n * @ignore\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2014 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\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\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}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\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\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n getCurrentTransform(ctx)\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\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 // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\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\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\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}\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(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\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\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\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\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\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\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\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\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\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 // Obtain scale from matrix and current transformation matrix.\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\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\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}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static MAX_PATTERN_SIZE = 3000;\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\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\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 coordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\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 { scale, 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), [\n x0,\n y0,\n x1,\n y1,\n ]);\n graphics.clip();\n graphics.endPath();\n }\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 // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\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\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\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\nimport { FeatureTest, ImageKind } from \"./util.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\n return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false,\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode\n ? [nonBlackColor, black]\n : [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\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 { srcPos, 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 len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n if (FeatureTest.isLittleEndian) {\n // It's a way faster to do the shuffle manually instead of working\n // component by component with some Uint8 arrays.\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R2B1G1R1\n const s2 = src32[i + 1]; // G3R3B2G2\n const s3 = src32[i + 2]; // B4G4R4B3\n\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\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n 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]; // R1G1B1R2\n const s2 = src32[i + 1]; // G2B2R3G3\n const s3 = src32[i + 2]; // B3R4G4B4\n\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\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n }\n }\n\n return { srcPos, 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\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2012 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\nimport {\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n isNodeJS,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getCurrentTransform,\n getCurrentTransformInverse,\n PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\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\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\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\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\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\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\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\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\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\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\n delete(id) {\n delete this.cache[id];\n }\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}\n\nfunction drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\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\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\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\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\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\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\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\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\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\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\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\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 // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (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\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\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\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n\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\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\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n path.lineTo(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\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 // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\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\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\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\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\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\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 // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\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\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\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\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\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\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\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\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 = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\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\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\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\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\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\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\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\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\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\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n\n ({ srcPos } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0,\n }));\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n \"filter\",\n ];\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}\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 (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n const composeFn =\n subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction 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 genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\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\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n filterFactory,\n { optionalContentConfig, markedContentStack = null },\n annotationCanvasMap,\n pageColors\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\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 // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\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\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\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\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\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\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n // eslint-disable-next-line prefer-spread\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\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n #restoreInitialState() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.#restoreInitialState();\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(\n this.pageColors.foreground,\n this.pageColors.background\n );\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\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(paintWidth / 2);\n newWidth =\n paintWidth >= 16384\n ? Math.floor(paintWidth / 2) - 1 || 1\n : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n // TODO: see the comment above.\n newHeight =\n paintHeight >= 16384\n ? Math.floor(paintHeight / 2) - 1 || 1\n : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\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\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const { width, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets (but not when filling patterns see #15573).\n // TODO: handle the case of a pattern fill if it's possible.\n cacheKey = JSON.stringify(\n isPatternFill\n ? currentTransform\n : [currentTransform.slice(0, 4), fillColor]\n );\n\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(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n\n let maskToCanvas = Util.transform(currentTransform, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n maskToCanvas\n );\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n getCurrentTransformInverse(fillCtx)\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(fillCtx),\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\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\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\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\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\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 =\n this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\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 // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\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(\n cacheId,\n drawnWidth,\n drawnHeight\n );\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\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\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\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\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\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\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\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 // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\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\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\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\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(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\n );\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(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\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(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\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\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n needRestore = true;\n }\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\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\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\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface =\n fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\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\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\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\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\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\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\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 =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = (this.pendingTextPaths ||= []);\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\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\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\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\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\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\n return undefined;\n }\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\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 =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\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\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n 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 +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n const charWidth = vertical\n ? width * widthAdvanceScale - spacing * fontDirection\n : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\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\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\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 =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\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\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\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\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\n // Color\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 =>\n new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack,\n }\n ),\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\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\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.SHADING\n );\n\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const { width, height } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n inv\n );\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n\n this.baseTransform = getCurrentTransform(this.ctx);\n\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\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\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\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n getCurrentTransform(currentCtx)\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\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 // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\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(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n // The annotations are drawn just after the page content.\n // The page content drawing can potentially have set a transform,\n // a clipping path, whatever...\n // So in order to have something clean, we restore the initial state.\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n getCurrentTransform(this.ctx)\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = 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\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform(...transform);\n this.transform(...matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\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\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\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\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\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\n paintImageMaskXObjectRepeat(\n img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n\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\n ctx.setTransform(\n 1,\n 0,\n 0,\n 1,\n mask.offsetX - currentTransform[4],\n mask.offsetY - currentTransform[5]\n );\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\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\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\n for (const image of images) {\n const { data, width, height, transform } = image;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\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\n this.paintInlineImageXObject(imgData);\n }\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\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\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\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const { bitmap, width, height } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n\n return tmpCanvas.canvas;\n }\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\n this.save();\n\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n // The filter, if any, will be applied in applyTransferMapsToBitmap.\n // It must be applied to the image before rescaling else some artifacts\n // could appear.\n // The final restore will reset it to its value.\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n // typeof check is needed due to node.js support, see issue #8489\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n const scaled = this._scaleImage(\n imgToPaint,\n getCurrentTransformInverse(ctx)\n );\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(ctx),\n imgData.interpolate\n );\n\n drawImageAtIntegerCoords(\n ctx,\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n this.compose();\n this.restore();\n }\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\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\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n imgToPaint,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\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\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\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\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 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\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (this._cachedScaleForStroking[0] === -1) {\n const { lineWidth } = this.current;\n const { a, b, c, d } = this.ctx.getTransform();\n let scaleX, scaleY;\n\n if (b === 0 && c === 0) {\n // Fast path\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 // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\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\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when 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\n ctx.stroke();\n\n if (saveRestore) {\n ctx.restore();\n }\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}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2015 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\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n BaseException,\n FeatureTest,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n #_cache;\n\n #_defs;\n\n #docId;\n\n #document;\n\n #_hcmCache;\n\n #id = 0;\n\n constructor({ docId, ownerDocument = globalThis.document } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n\n get #cache() {\n return (this.#_cache ||= new Map());\n }\n\n get #hcmCache() {\n return (this.#_hcmCache ||= new Map());\n }\n\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const { style } = 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\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\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n\n // When a page is zoomed the page is re-drawn but the maps are likely\n // the same.\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n\n let tableR, tableG, tableB, key;\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 key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\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 tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n\n // We create a SVG filter: feComponentTransferElement\n // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n return url;\n }\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\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\n if (!fgColor || !bgColor) {\n return info.url;\n }\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\n if (\n (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n fgColor === bgColor\n ) {\n return info.url;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\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\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\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(\n getSteps(0, 5),\n getSteps(1, 5),\n getSteps(2, 5),\n filter\n );\n\n info.url = `url(#${id})`;\n return info.url;\n }\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\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\n if (!fgColor || !bgColor) {\n return info.url;\n }\n\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(\n 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n );\n let bgGray = Math.round(\n 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n );\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n this.#getRGB.bind(this)\n );\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [\n bgGray,\n fgGray,\n newBgRGB,\n newFgRGB,\n ];\n }\n this.#defs.style.color = \"\";\n\n // Now we can create the filters to highlight some canvas parts.\n // The colors in the pdf will almost be Canvas and CanvasText, hence we\n // want to filter them to finally get Highlight and HighlightText.\n // Since we're in HCM the background color and the foreground color should\n // be really different when converted to grayscale (if they're not then it\n // means that we've a poor contrast). Once the canvas colors are converted\n // to grayscale we can easily map them on their new colors.\n // The grayscale step is important because if we've something like:\n // fgColor = #FF....\n // bgColor = #FF....\n // then we are enable to map the red component on the new red components\n // which can be different.\n\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\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = (info.filter = this.#createFilter(id));\n\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(\n getSteps(newFgRGB[0], newBgRGB[0], 5),\n getSteps(newFgRGB[1], newBgRGB[1], 5),\n getSteps(newFgRGB[2], newBgRGB[2], 5),\n filter\n );\n\n info.url = `url(#${id})`;\n return info.url;\n }\n\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(\n SVG_NS,\n \"feColorMatrix\"\n );\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\n \"values\",\n \"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 );\n filter.append(feColorMatrix);\n }\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\n return filter;\n }\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\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\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\nasync function fetchData(url, type = \"text\") {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\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\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* async = */ true);\n request.responseType = type;\n\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\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(\n url,\n /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n ).then(data => ({\n cMapData:\n data instanceof ArrayBuffer\n ? new Uint8Array(data)\n : stringToBytes(data),\n compressionType,\n }));\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* type = */ \"arraybuffer\").then(\n data => new Uint8Array(data)\n );\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\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(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\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 // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * The original, un-scaled, viewport dimensions.\n * @type {Object}\n */\n get rawDims() {\n const { viewBox } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1],\n });\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\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 scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\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\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\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}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\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 // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n started = Object.create(null);\n\n times = [];\n\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\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 // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const { name } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const { name, start, end } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: isValidFetchUrl\");\n }\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n e.preventDefault();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n pdfDateStringRegex ||= new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\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\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [\n (colorRGB & 0xff0000) >> 16,\n (colorRGB & 0x00ff00) >> 8,\n colorRGB & 0x0000ff,\n ];\n }\n\n if (color.startsWith(\"rgb(\")) {\n // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n return color\n .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color\n .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x))\n .slice(0, 3);\n }\n\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\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}\n\nfunction getCurrentTransform(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n div,\n viewport,\n mustFlip = false,\n mustRotate = true\n) {\n if (viewport instanceof PageViewport) {\n const { pageWidth, pageHeight } = viewport.rawDims;\n const { style } = div;\n const useRound = FeatureTest.isCSSRoundSupported;\n\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n\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\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\nexport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n fetchData,\n getColorValues,\n getCurrentTransform,\n getCurrentTransformInverse,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n noContextMenu,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n StatTimer,\n};\n","/* Copyright 2023 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\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n #parent = null;\n\n #id = 0;\n\n #mapping = new Map();\n\n #toUpdate = new Map();\n\n constructor({ pageIndex }) {\n this.pageIndex = pageIndex;\n }\n\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\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\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n\n static #setBox(element, { x = 0, y = 0, width = 1, height = 1 } = {}) {\n const { style } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n\n return svg;\n }\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\n return clipPathId;\n }\n\n highlight(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlight\");\n if (outlines.free) {\n root.classList.add(\"free\");\n }\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(\"d\", outlines.toSVGPath());\n\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n\n // Create the clipping path for the editor div.\n const clipPathId = this.#createClipPath(defs, pathId);\n\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n\n this.#mapping.set(id, root);\n\n return { id, clipPathId: `url(#${clipPathId})` };\n }\n\n highlightOutline(outlines) {\n // We cannot draw the outline directly in the SVG for highlights because\n // it composes with its parent with mix-blend-mode: multiply.\n // But the outline has a different mix-blend-mode, so we need to draw it in\n // its own SVG.\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlightOutline\");\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(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n let maskId;\n if (outlines.free) {\n root.classList.add(\"free\");\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\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\n this.#mapping.set(id, root);\n\n return id;\n }\n\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n\n removeFreeHighlight(id) {\n this.remove(id);\n this.#toUpdate.delete(id);\n }\n\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n\n remove(id) {\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n }\n}\n\nexport { DrawLayer };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n assert,\n LINE_FACTOR,\n shadow,\n Util,\n} from \"../../shared/util.js\";\nimport {\n AnnotationEditorUIManager,\n bindEvents,\n KeyboardManager,\n} from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n #boundEditorDivInput = this.editorDivInput.bind(this);\n\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n #boundEditorDivPaste = this.editorDivPaste.bind(this);\n\n #color;\n\n #content = \"\";\n\n #editorDivId = `${this.id}-editor`;\n\n #fontSize;\n\n #initialData = null;\n\n static _freeTextDefaultContent = \"\";\n\n static _internalPadding = 0;\n\n static _defaultColor = null;\n\n static _defaultFontSize = 10;\n\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n\n const arrowChecker = self => self.isEmpty();\n\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n // Commit the text in case the user use ctrl+s to save the document.\n // The event must bubble in order to be caught by the viewer.\n // See bug 1831574.\n [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n proto.commitOrRemove,\n { bubbles: true },\n ],\n [\n [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n proto.commitOrRemove,\n ],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto._translateEmpty,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto._translateEmpty,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n static _type = \"freetext\";\n\n static _editorType = AnnotationEditorType.FREETEXT;\n\n constructor(params) {\n super({ ...params, name: \"freeTextEditor\" });\n this.#color =\n params.color ||\n FreeTextEditor._defaultColor ||\n AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager, {\n strings: [\"pdfjs-free-text-default-content\"],\n });\n const style = getComputedStyle(document.documentElement);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n const lineHeight = parseFloat(\n style.getPropertyValue(\"--freetext-line-height\")\n );\n assert(\n lineHeight === LINE_FACTOR,\n \"Update the CSS variable to agree with the constant.\"\n );\n }\n\n this._internalPadding = parseFloat(\n style.getPropertyValue(\"--freetext-padding\")\n );\n }\n\n /** @inheritdoc */\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\n /** @inheritdoc */\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\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.FREETEXT_SIZE,\n FreeTextEditor._defaultFontSize,\n ],\n [\n AnnotationEditorParamsType.FREETEXT_COLOR,\n FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n ];\n }\n\n /**\n * Update the font size and make this action as undoable.\n * @param {number} fontSize\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\n /**\n * Update the color and make this action undoable.\n * @param {string} color\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\n /**\n * Helper to translate the editor with the keyboard when it's empty.\n * @param {number} x in page units.\n * @param {number} y in page units.\n */\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n }\n\n /** @inheritdoc */\n getInitialTranslation() {\n // The start of the base line is where the user clicked.\n const scale = this.parentScale;\n return [\n -FreeTextEditor._internalPadding * scale,\n -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n ];\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\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.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n this.editorDiv.addEventListener(\"paste\", this.#boundEditorDivPaste);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\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.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n this.editorDiv.removeEventListener(\"paste\", this.#boundEditorDivPaste);\n\n // On Chrome, the focus is given to <body> when contentEditable is set to\n // false, hence we focus the div.\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n\n // In case the blur callback hasn't been called.\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n\n /** @inheritdoc */\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\n /** @inheritdoc */\n onceAdded() {\n if (this.width) {\n // The editor was created in using ctrl+c.\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n /** @inheritdoc */\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\n /**\n * Extract the text from this editor.\n * @returns {string}\n */\n #extractText() {\n // We don't use innerText because there are some bugs with line breaks.\n const buffer = [];\n this.editorDiv.normalize();\n for (const child of this.editorDiv.childNodes) {\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n return buffer.join(\"\\n\");\n }\n\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n // This editor isn't on screen but we need to get its dimensions, so\n // we just insert it in the DOM, get its bounding box and then remove it.\n const { currentLayer, div } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n\n // The dimensions are relative to the rotation of the page, hence we need to\n // take that into account (see issue #16636).\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\n /**\n * Commit the content we have in this editor.\n * @returns {undefined}\n */\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\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\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\n /** @inheritdoc */\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n /** @inheritdoc */\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n /**\n * ondblclick callback.\n * @param {MouseEvent} event\n */\n dblclick(event) {\n this.enterInEditMode();\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n // Avoid to add an unwanted new line.\n event.preventDefault();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n\n /** @inheritdoc */\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n /** @inheritdoc */\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n\n AnnotationEditor._l10nPromise\n .get(\"pdfjs-free-text-default-content\")\n .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n\n const { style } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n\n this.div.append(this.editorDiv);\n\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n // This stuff is hard to test: if something is changed here, please\n // test with the following PDF file:\n // - freetexts.pdf\n // - rotated_freetexts.pdf\n // Only small variations between the original annotation and its editor\n // are allowed.\n\n // position is the position of the first glyph in the annotation\n // and it's relative to its container.\n const { position } = 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 =\n baseX +\n (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY =\n baseY +\n (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(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\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\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n }\n\n return this.div;\n }\n\n static #getNodeContent(node) {\n return (\n node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText\n ).replaceAll(EOL_PATTERN, \"\");\n }\n\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const { types } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(\n clipboardData.getData(\"text\") || \"\"\n ).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\n // Collect the text before and after the caret.\n const { startContainer, startOffset } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(\n startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\")\n );\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(\n startContainer.nodeValue\n .slice(0, startOffset)\n .replaceAll(EOL_PATTERN, \"\")\n );\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\n // Set the caret at the right position.\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const { firstChild } of this.editorDiv.childNodes) {\n // Each child is either a div with a text node or a br element.\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\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(\n line ? document.createTextNode(line) : document.createElement(\"br\")\n );\n this.editorDiv.append(div);\n }\n }\n\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n\n /** @inheritdoc */\n get contentDiv() {\n return this.editorDiv;\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: { fontSize, fontColor },\n rect,\n rotation,\n id,\n },\n textContent,\n textPosition,\n parent: {\n page: { pageNumber },\n },\n } = data;\n // textContent is supposed to be an array of strings containing each line\n // of text. However, it can be null or empty.\n if (!textContent || textContent.length === 0) {\n // Empty annotation.\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,\n rotation,\n id,\n deleted: false,\n };\n }\n const editor = 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\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true,\n };\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(\n this.isAttachedToDOM\n ? getComputedStyle(this.editorDiv).color\n : this.#color\n );\n\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\n if (isForCopying) {\n // Don't add the id when copying because the pasted editor mustn't be\n // linked to an existing annotation.\n return serialized;\n }\n\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n\n serialized.id = this.annotationElementId;\n\n return serialized;\n }\n\n #hasElementChanged(serialized) {\n const { value, fontSize, color, pageIndex } = this.#initialData;\n\n return (\n this._hasBeenMoved ||\n serialized.value !== value ||\n serialized.fontSize !== fontSize ||\n serialized.color.some((c, i) => c !== color[i]) ||\n serialized.pageIndex !== pageIndex\n );\n }\n}\n\nexport { FreeTextEditor };\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\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n shadow,\n Util,\n} from \"../../shared/util.js\";\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport { FreeOutliner, Outliner } from \"./outliner.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { ColorPicker } from \"./color_picker.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * Basic draw editor in order to generate an Highlight annotation.\n */\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n\n #anchorOffset = 0;\n\n #boxes;\n\n #clipPathId = null;\n\n #colorPicker = null;\n\n #focusOutlines = null;\n\n #focusNode = null;\n\n #focusOffset = 0;\n\n #highlightDiv = null;\n\n #highlightOutlines = null;\n\n #id = null;\n\n #isFreeHighlight = false;\n\n #boundKeydown = this.#keydown.bind(this);\n\n #lastPoint = null;\n\n #opacity;\n\n #outlineId = null;\n\n #text = \"\";\n\n #thickness;\n\n #methodOfCreation = \"\";\n\n static _defaultColor = null;\n\n static _defaultOpacity = 1;\n\n static _defaultThickness = 12;\n\n static _l10nPromise;\n\n static _type = \"highlight\";\n\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n\n static _freeHighlightId = -1;\n\n static _freeHighlight = null;\n\n static _freeHighlightClipId = \"\";\n\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, { args: [0] }],\n [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, { args: [1] }],\n [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, { args: [2] }],\n [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, { args: [3] }],\n ])\n );\n }\n\n constructor(params) {\n super({ ...params, name: \"highlightEditor\" });\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\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else {\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\n /** @inheritdoc */\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\n /** @inheritdoc */\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n };\n }\n\n static computeTelemetryFinalData(data) {\n // We want to know how many colors have been used.\n return { numberOfColors: data.get(\"color\").size };\n }\n\n #createOutlines() {\n const outliner = new Outliner(this.#boxes, /* borderWidth = */ 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n } = this.#highlightOutlines.box);\n\n const outlinerForOutline = new Outliner(\n this.#boxes,\n /* borderWidth = */ 0.0025,\n /* innerMargin = */ 0.001,\n this._uiManager.direction === \"ltr\"\n );\n this.#focusOutlines = outlinerForOutline.getOutlines();\n\n // The last point is in the pages coordinate system.\n const { lastPoint } = this.#focusOutlines.box;\n this.#lastPoint = [\n (lastPoint[0] - this.x) / this.width,\n (lastPoint[1] - this.y) / this.height,\n ];\n }\n\n #createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(\n /* Slightly bigger than the highlight in order to have a little\n space between the highlight and the outline. */\n this.#thickness / 2 + extraThickness,\n /* innerMargin = */ 0.0025\n );\n\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n // We need to redraw the highlight because we change the coordinates to be\n // in the box coordinate system.\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.highlightOutline(\n this.#focusOutlines\n );\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(\n this.#id,\n HighlightEditor.#rotateBbox(\n this.#highlightOutlines.box,\n (angle - this.rotation + 360) % 360\n )\n );\n\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(\n this.#outlineId,\n HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle)\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 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 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\n const { lastPoint } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||=\n uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n\n /** @inheritdoc */\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\n /** @inheritdoc */\n translateInPage(x, y) {}\n\n /** @inheritdoc */\n get toolbarPosition() {\n return this.#lastPoint;\n }\n\n /** @inheritdoc */\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\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,\n HighlightEditor._defaultColor,\n ],\n [\n AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n HighlightEditor._defaultThickness,\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n this.color || HighlightEditor._defaultColor,\n ],\n [\n AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n this.#thickness || HighlightEditor._defaultThickness,\n ],\n [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight],\n ];\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(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.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n\n this._reportTelemetry(\n {\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color),\n },\n /* mustWait = */ true\n );\n }\n\n /**\n * Update the thickness and make this action undoable.\n * @param {number} thickness\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\", thickness },\n /* mustWait = */ true\n );\n }\n\n /** @inheritdoc */\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({ editor: this });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n\n /** @inheritdoc */\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n\n /** @inheritdoc */\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n\n /** @inheritdoc */\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n\n /** @inheritdoc */\n getBaseTranslation() {\n // The editor itself doesn't have any CSS border (we're drawing one\n // ourselves in using SVG).\n return [0, 0];\n }\n\n /** @inheritdoc */\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n\n /** @inheritdoc */\n onceAdded() {\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n\n /** @inheritdoc */\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\",\n });\n super.remove();\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n this.#addToDrawLayer();\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\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 // If mustBeSelected is true it means that this editor was selected\n // when its parent has been destroyed, hence we must select it again.\n mustBeSelected =\n !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n // We select it after the parent has been set.\n this.select();\n }\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\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\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({ id: this.#id, clipPathId: this.#clipPathId } =\n parent.drawLayer.highlight(\n this.#highlightOutlines,\n this.color,\n this.#opacity\n ));\n this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n\n static #rotateBbox({ x, y, width, height }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width,\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height,\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width,\n };\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n\n /** @inheritdoc */\n rotate(angle) {\n // We need to rotate the svgs because of the coordinates system.\n const { drawLayer } = 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 // An highlight annotation is always drawn horizontally.\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(\n this.#outlineId,\n HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle)\n );\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\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.#boundKeydown);\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\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n\n return div;\n }\n\n pointerover() {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n\n pointerleave() {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0 /* left */:\n case 2 /* up */:\n this.#setCaret(/* start = */ true);\n break;\n case 1 /* right */:\n case 3 /* down */:\n this.#setCaret(/* start = */ false);\n break;\n }\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\n /** @inheritdoc */\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n\n /** @inheritdoc */\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(/* start = */ false);\n }\n }\n\n /** @inheritdoc */\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n\n /** @inheritdoc */\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n\n #getRotation() {\n // Highlight annotations are always drawn horizontally but if\n // a free highlight annotation can be rotated.\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const boxes = this.#boxes;\n const quadPoints = new Array(boxes.length * 8);\n let i = 0;\n for (const { x, y, width, height } of boxes) {\n const sx = x * pageWidth;\n const sy = (1 - y - height) * pageHeight;\n // The specifications say that the rectangle should start from the bottom\n // left corner and go counter-clockwise.\n // But when opening the file in Adobe Acrobat it appears that this isn't\n // correct hence the 4th and 6th numbers are just swapped.\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\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n\n static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight,\n } = textLayer.getBoundingClientRect();\n const pointerMove = e => {\n this.#highlightMove(parent, e);\n };\n const pointerDownOptions = { capture: true, passive: false };\n const pointerDown = e => {\n // Avoid to have undesired clicks during the drawing.\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n textLayer.removeEventListener(\"pointermove\", pointerMove);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\n \"pointerdown\",\n pointerDown,\n pointerDownOptions\n );\n window.removeEventListener(\"contextmenu\", noContextMenu);\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback);\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n window.addEventListener(\"contextmenu\", noContextMenu);\n\n textLayer.addEventListener(\"pointermove\", pointerMove);\n this._freeHighlight = new FreeOutliner(\n { x, y },\n [layerX, layerY, parentWidth, parentHeight],\n parent.scale,\n this._defaultThickness / 2,\n isLTR,\n /* innerMargin = */ 0.001\n );\n ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\n parent.drawLayer.highlight(\n this._freeHighlight,\n this._defaultColor,\n this._defaultOpacity,\n /* isPathUpdatable = */ true\n ));\n }\n\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n // Redraw only if the point has been added.\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\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.removeFreeHighlight(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n\n const {\n rect: [blX, blY, trX, trY],\n color,\n quadPoints,\n } = data;\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = data.opacity;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n editor.width = (trX - blX) / pageWidth;\n editor.height = (trY - blY) / pageHeight;\n const boxes = (editor.#boxes = []);\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[4] - trX) / pageWidth,\n y: (trY - (1 - quadPoints[i + 5])) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight,\n });\n }\n editor.#createOutlines();\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false) {\n // It doesn't make sense to copy/paste a highlight annotation.\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n\n return {\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 }\n\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\nexport { HighlightEditor };\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\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\nimport { noContextMenu } from \"../display_utils.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n\n #baseWidth = 0;\n\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n #canvasContextMenuTimeoutId = null;\n\n #currentPath2D = new Path2D();\n\n #disableEditing = false;\n\n #hasSomethingToDraw = false;\n\n #isCanvasInitialized = false;\n\n #observer = null;\n\n #realWidth = 0;\n\n #realHeight = 0;\n\n #requestFrameCallback = null;\n\n static _defaultColor = null;\n\n static _defaultOpacity = 1;\n\n static _defaultThickness = 1;\n\n static _type = \"ink\";\n\n static _editorType = AnnotationEditorType.INK;\n\n constructor(params) {\n super({ ...params, name: \"inkEditor\" });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n [\n AnnotationEditorParamsType.INK_COLOR,\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(InkEditor._defaultOpacity * 100),\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.INK_THICKNESS,\n this.thickness || InkEditor._defaultThickness,\n ],\n [\n AnnotationEditorParamsType.INK_COLOR,\n this.color ||\n InkEditor._defaultColor ||\n AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n ],\n ];\n }\n\n /**\n * Update the thickness and make this action undoable.\n * @param {number} thickness\n */\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\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 }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\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.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the opacity and make this action undoable.\n * @param {number} opacity\n */\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n\n /** @inheritdoc */\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n // Destroy the canvas.\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n\n this.#observer.disconnect();\n this.#observer = null;\n\n super.remove();\n }\n\n setParent(parent) {\n if (!this.parent && parent) {\n // We've a parent hence the rescale will be handled thanks to the\n // ResizeObserver.\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n // The editor is removed from the DOM, hence we handle the rescale thanks\n // to the onScaleChanging callback.\n // This way, it'll be saved/printed correctly.\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return (\n this.paths.length === 0 ||\n (this.paths.length === 1 && this.paths[0].length === 0)\n );\n }\n\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height],\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n\n /**\n * Set line styles.\n */\n #setStroke() {\n const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\n ctx.lineWidth = (thickness * parentScale) / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n\n /**\n * Start to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||=\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n /**\n * Draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n\n this.#makeBezierCurve(\n path2D,\n ...currentPath.at(-3),\n ...currentPath.at(-2),\n x,\n y\n );\n }\n\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n\n /**\n * Stop to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n\n this.#draw(x, y);\n this.#endPath();\n\n // Interpolate the path entered by the user with some\n // Bezier's curves in order to have a smoother path and\n // to reduce the data size used to draw it in the PDF.\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n // We have only one point finally.\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n\n const { ctx } = this;\n ctx.save();\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // In Chrome, the clip() method doesn't work as expected.\n ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.beginPath();\n ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.clip();\n } else {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n\n ctx.restore();\n }\n\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n path2D.bezierCurveTo(\n prevX + (2 * (x1 - prevX)) / 3,\n prevY + (2 * (y1 - prevY)) / 3,\n x3 + (2 * (x1 - x3)) / 3,\n y3 + (2 * (y1 - y3)) / 3,\n x3,\n y3\n );\n }\n\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n // Convert the quadratic to a cubic\n // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n [x0, y0] = [x3, y3];\n }\n\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n\n // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n\n /**\n * Redraw all the paths.\n */\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n\n const { canvas, ctx } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n /**\n * Commit the curves we have in this editor.\n */\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n\n this.isEditing = false;\n this.disableEditMode();\n\n // This editor must be on top of the main ink editor.\n this.setInForeground();\n\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n\n this.#fitToContent(/* firstTime = */ true);\n this.select();\n\n this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n // When committing, the position of this editor is changed, hence we must\n // move it to the right position in the DOM.\n this.moveInDOM();\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n }\n\n /** @inheritdoc */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n\n /**\n * onpointerdown callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n // We want to draw on top of any other editors.\n // Since it's the last child, there's no need to give it a higher z-index.\n this.setInForeground();\n\n event.preventDefault();\n\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true /* See issue #17327 */,\n });\n }\n\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointermove callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointerup callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n\n /**\n * onpointerleave callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n\n /**\n * End the drawing.\n * @param {PointerEvent} event\n */\n #endDrawing(event) {\n this.canvas.removeEventListener(\n \"pointerleave\",\n this.#boundCanvasPointerleave\n );\n this.canvas.removeEventListener(\n \"pointermove\",\n this.#boundCanvasPointermove\n );\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n // Slight delay to avoid the context menu to appear (it can happen on a long\n // tap with a pen).\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n\n this.#stopDrawing(event.offsetX, event.offsetY);\n\n this.addToAnnotationStorage();\n\n // Since the ink editor covers all of the page and we want to be able\n // to select another editor, we just put this one in the background.\n this.setInBackground();\n }\n\n /**\n * Create the canvas element.\n */\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n\n this.#createCanvas();\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.#createObserver();\n\n return this.div;\n }\n\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (\n this.#realWidth === roundedWidth &&\n this.#realHeight === roundedHeight\n ) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n\n this.canvas.style.visibility = \"hidden\";\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n\n this.#setCanvasDims();\n this.#redraw();\n\n this.canvas.style.visibility = \"visible\";\n\n // For any reason the dimensions couldn't be in percent but in pixels, hence\n // we must fix them.\n this.fixDims();\n }\n\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n\n /**\n * Update the canvas transform.\n */\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(\n this.scaleFactor,\n 0,\n 0,\n this.scaleFactor,\n this.translationX * this.scaleFactor + padding,\n this.translationY * this.scaleFactor + padding\n );\n }\n\n /**\n * Convert into a Path2D.\n * @param {Array<Array<number>>} bezier\n * @returns {Path2D}\n */\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(\n control1[0],\n control1[1],\n control2[0],\n control2[1],\n second[0],\n second[1]\n );\n }\n return path2D;\n }\n\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n /**\n * Transform and serialize the paths.\n * @param {number} s - scale factor\n * @param {number} tx - abscissa of the translation\n * @param {number} ty - ordinate of the translation\n * @param {Array<number>} rect - the bounding box of the annotation\n */\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n // We have only one point.\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\n });\n }\n\n return paths;\n }\n\n /**\n * Get the bounding box containing all the paths.\n * @returns {Array<number>}\n */\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(\n ...first,\n ...control1,\n ...control2,\n ...second\n );\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n }\n\n /**\n * The bounding box is computed with null thickness, so we must take\n * it into account for the display.\n * It corresponds to the total padding, hence it should be divided by 2\n * in order to have left/right paddings.\n * @returns {number}\n */\n #getPadding() {\n return this.#disableEditing\n ? Math.ceil(this.thickness * this.parentScale)\n : 0;\n }\n\n /**\n * Set the div position and dimensions in order to fit to\n * the bounding box of the contents.\n * @returns {undefined}\n */\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n this.setAspectRatio(width, height);\n\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n\n this.#realWidth = width;\n this.#realHeight = height;\n\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(\n prevTranslationX - this.translationX - unscaledPadding,\n prevTranslationY - this.translationY - unscaledPadding\n );\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n const { paths, rect, rotation } = data;\n\n for (let { bezier } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([\n [p0, p1],\n [p10, p11],\n [p20, p21],\n [p30, p31],\n ]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(\n this.scaleFactor / this.parentScale,\n this.translationX,\n this.translationY,\n rect\n ),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n };\n }\n}\n\nexport { InkEditor };\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\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { PixelsPerInch } from \"../display_utils.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n\n #bitmapId = null;\n\n #bitmapPromise = null;\n\n #bitmapUrl = null;\n\n #bitmapFile = null;\n\n #bitmapFileName = \"\";\n\n #canvas = null;\n\n #observer = null;\n\n #resizeTimeoutId = null;\n\n #isSvg = false;\n\n #hasBeenAddedInUndoStack = false;\n\n static _type = \"stamp\";\n\n static _editorType = AnnotationEditorType.STAMP;\n\n constructor(params) {\n super({ ...params, name: \"stampEditor\" });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n\n static get supportedTypes() {\n // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n // to know which types are supported by the browser.\n const types = [\n \"apng\",\n \"avif\",\n \"bmp\",\n \"gif\",\n \"jpeg\",\n \"png\",\n \"svg+xml\",\n \"webp\",\n \"x-icon\",\n ];\n return shadow(\n this,\n \"supportedTypes\",\n types.map(type => `image/${type}`)\n );\n }\n\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n\n /** @inheritdoc */\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n\n /** @inheritdoc */\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile(),\n });\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\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager\n .getFromId(this.#bitmapId)\n .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n .finally(() => this.#getBitmapDone());\n return;\n }\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\n .getFromUrl(url)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\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\n .getFromFile(file)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n const input = document.createElement(\"input\");\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.hidden = true;\n input.id = \"stampEditorFileInput\";\n document.body.append(input);\n }\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\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(\n input.files[0]\n );\n this.#getBitmapFetched(data);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.remove();\n }\n resolve();\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n });\n }).finally(() => this.#getBitmapDone());\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n input.click();\n }\n }\n\n /** @inheritdoc */\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 this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n // It's possible to have to rebuild an editor which is not on a visible\n // page.\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !(\n this.#bitmapPromise ||\n this.#bitmap ||\n this.#bitmapUrl ||\n this.#bitmapFile ||\n this.#bitmapId\n );\n }\n\n /** @inheritdoc */\n get isResizable() {\n return true;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.div.hidden = true;\n\n this.addAltTextButton();\n\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\n\n return this.div;\n }\n\n #createCanvas() {\n const { div } = this;\n let { width, height } = 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 (\n width > MAX_RATIO * pageWidth ||\n height > MAX_RATIO * pageHeight\n ) {\n // If the the image is too big compared to the page dimensions\n // (more than MAX_RATIO) then we scale it down.\n const factor = Math.min(\n (MAX_RATIO * pageWidth) / width,\n (MAX_RATIO * pageHeight) / height\n );\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(\n (width * parentWidth) / pageWidth,\n (height * parentHeight) / pageHeight\n );\n\n this._uiManager.enableWaiting(false);\n const canvas = (this.#canvas = document.createElement(\"canvas\"));\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n\n // There are multiple ways to add an image to the page, so here we just\n // count the number of times an image is added to the page whatever the way\n // is.\n this._reportTelemetry({\n action: \"inserted_image\",\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n // When the user is resizing the editor we just use CSS to scale the image\n // to avoid redrawing it too often.\n // And once the user stops resizing the editor we redraw the image in\n // rescaling it correctly (see this.#scaleBitmap).\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n\n #scaleBitmap(width, height) {\n const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\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\n if (newWidth > 2 * width) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(newWidth / 2);\n newWidth =\n newWidth >= 16384\n ? Math.floor(newWidth / 2) - 1\n : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight =\n newHeight >= 16384\n ? Math.floor(newHeight / 2) - 1\n : Math.ceil(newHeight / 2);\n }\n\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n prevWidth,\n prevHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n bitmap = offscreen.transferToImageBitmap();\n }\n\n return bitmap;\n }\n\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || (canvas.width === width && canvas.height === height)) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg\n ? this.#bitmap\n : this.#scaleBitmap(width, height);\n\n if (this._uiManager.hasMLManager && !this.hasAltText()) {\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n 0,\n 0,\n width,\n height\n );\n offscreen.convertToBlob().then(blob => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n const url = fileReader.result;\n this._uiManager\n .mlGuess({\n service: \"image-to-text\",\n request: {\n imageData: url,\n },\n })\n .then(response => {\n const altText = response?.output || \"\";\n if (this.parent && altText && !this.hasAltText()) {\n this.altTextData = { altText, decorative: false };\n }\n });\n };\n fileReader.readAsDataURL(blob);\n });\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n 0,\n 0,\n width,\n height\n );\n }\n\n /** @inheritdoc */\n getImageForAltText() {\n return this.#canvas;\n }\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 // We convert to a data url because it's sync and the url can live in the\n // clipboard.\n const canvas = document.createElement(\"canvas\");\n ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n\n return canvas.toDataURL();\n }\n\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n // image resolution when rasterizing it.\n const width = Math.round(\n this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const height = Math.round(\n this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n this.#bitmap,\n 0,\n 0,\n this.#bitmap.width,\n this.#bitmap.height,\n 0,\n 0,\n width,\n height\n );\n return offscreen.transferToImageBitmap();\n }\n\n return structuredClone(this.#bitmap);\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const { rect, bitmapUrl, bitmapId, isSvg, accessibilityData } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\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\n if (isForCopying) {\n // We don't know what's the final destination (this pdf or another one)\n // of this annotation and the clipboard doesn't support ImageBitmaps,\n // hence we serialize the bitmap to a data url.\n serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n serialized.accessibilityData = this.altTextData;\n return serialized;\n }\n\n const { decorative, altText } = this.altTextData;\n if (!decorative && altText) {\n serialized.accessibilityData = { type: \"Figure\", alt: altText };\n }\n\n if (context === null) {\n return serialized;\n }\n\n context.stamps ||= new Map();\n const area = this.#isSvg\n ? (serialized.rect[2] - serialized.rect[0]) *\n (serialized.rect[3] - serialized.rect[1])\n : null;\n if (!context.stamps.has(this.#bitmapId)) {\n // We don't want to have multiple copies of the same bitmap in the\n // annotationMap, hence we only add the bitmap the first time we meet it.\n context.stamps.set(this.#bitmapId, { area, serialized });\n serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n } else if (this.#isSvg) {\n // If we have multiple copies of the same svg but with different sizes,\n // then we want to keep the biggest one.\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(/* toUrl = */ false);\n }\n }\n return serialized;\n }\n}\n\nexport { StampEditor };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n/** @typedef {import(\"../draw_layer.js\").DrawLayer} DrawLayer */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { HighlightEditor } from \"./highlight.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {HTMLDivElement} [textLayer]\n * @property {DrawLayer} drawLayer\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n #accessibilityManager;\n\n #allowClick = false;\n\n #annotationLayer = null;\n\n #boundPointerup = null;\n\n #boundPointerdown = null;\n\n #boundTextLayerPointerDown = null;\n\n #editorFocusTimeoutId = null;\n\n #editors = new Map();\n\n #hadPointerDown = false;\n\n #isCleaningUp = false;\n\n #isDisabling = false;\n\n #textLayer = null;\n\n #uiManager;\n\n static _initialized = false;\n\n static #editorTypes = new Map(\n [FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [\n type._editorType,\n type,\n ])\n );\n\n /**\n * @param {AnnotationEditorLayerOptions} options\n */\n constructor({\n uiManager,\n pageIndex,\n div,\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\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\n this.#uiManager.addLayer(this);\n }\n\n get isEmpty() {\n return this.#editors.size === 0;\n }\n\n get isInvisible() {\n return (\n this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE\n );\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n */\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n /**\n * The mode has changed: it must be updated.\n * @param {number} 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 // We always want to have an ink editor ready to draw in.\n this.addInkEditorIfNeeded(false);\n\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\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\n this.toggleAnnotationLayerPointerEvents(false);\n const { classList } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(\n `${editorType._type}Editing`,\n mode === editorType._editorType\n );\n }\n this.div.hidden = false;\n }\n\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n // We don't want to add an ink editor if we're not in ink mode!\n return;\n }\n\n if (!isCommitting) {\n // We're removing an editor but an empty one can already exist so in this\n // case we don't need to create a new one.\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.createAndAddNewEditor(\n { offsetX: 0, offsetY: 0 },\n /* isCentered = */ false\n );\n editor.setInBackground();\n }\n\n /**\n * Set the editing state.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n\n /**\n * Enable pointer events on the main div in order to enable\n * editor creation.\n */\n enable() {\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 if (editor.annotationElementId) {\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n\n if (!this.#annotationLayer) {\n return;\n }\n\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n // The element must be hidden whatever its state is.\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 = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n\n /**\n * Disable editor creation.\n */\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const hiddenAnnotationIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId || editor.serialize() !== null) {\n hiddenAnnotationIds.add(editor.annotationElementId);\n continue;\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n\n if (this.#annotationLayer) {\n // Show the annotations that were hidden in enable().\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const { id } = editable.data;\n if (\n hiddenAnnotationIds.has(id) ||\n this.#uiManager.isDeletedAnnotationElement(id)\n ) {\n continue;\n }\n editable.show();\n }\n }\n\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const { classList } = 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\n this.#isDisabling = false;\n }\n\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n\n /**\n * Set the current editor.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#boundTextLayerPointerDown) {\n this.#boundTextLayerPointerDown = this.#textLayerPointerDown.bind(this);\n this.#textLayer.div.addEventListener(\n \"pointerdown\",\n this.#boundTextLayerPointerDown\n );\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#boundTextLayerPointerDown) {\n this.#textLayer.div.removeEventListener(\n \"pointerdown\",\n this.#boundTextLayerPointerDown\n );\n this.#boundTextLayerPointerDown = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n\n #textLayerPointerDown(event) {\n // Unselect all the editors in order to let the user select some text\n // without being annoyed by an editor toolbar.\n this.#uiManager.unselectAll();\n if (event.target === this.#textLayer.div) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n this.#uiManager.showAllEditors(\n \"highlight\",\n true,\n /* updateButton = */ true\n );\n this.#textLayer.div.classList.add(\"free\");\n HighlightEditor.startHighlighting(\n this,\n this.#uiManager.direction === \"ltr\",\n event\n );\n this.#textLayer.div.addEventListener(\n \"pointerup\",\n () => {\n this.#textLayer.div.classList.remove(\"free\");\n },\n { once: true }\n );\n event.preventDefault();\n }\n }\n\n enableClick() {\n if (this.#boundPointerdown) {\n return;\n }\n this.#boundPointerdown = this.pointerdown.bind(this);\n this.#boundPointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n if (!this.#boundPointerdown) {\n return;\n }\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n this.#boundPointerdown = null;\n this.#boundPointerup = null;\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const { annotationElementId } = editor;\n if (\n annotationElementId &&\n this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n ) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n }\n\n /**\n * An editor can have a different parent, for example after having\n * being dragged and droped from a page to another.\n * @param {AnnotationEditor} editor\n */\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n\n if (editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\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\n /**\n * Add a new editor in the current view.\n * @param {AnnotationEditor} editor\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\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n\n const { activeElement } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n // When the div is moved in the DOM the focus can move somewhere else,\n // so we want to be sure that the focus will stay on the editor but we\n // don't want to call any focus callbacks, hence we disable them and only\n // re-enable them when the editor has the focus.\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\n \"focusin\",\n () => {\n editor._focusEventsAllowed = true;\n },\n { once: true }\n );\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n this.div,\n editor.div,\n editor.contentDiv,\n /* isRemovable = */ true\n );\n }\n\n /**\n * Add or rebuild depending if it has been removed or not.\n * @param {AnnotationEditor} editor\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\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({ cmd, undo, mustExec: false });\n }\n\n /**\n * Get an id for an editor.\n * @returns {string}\n */\n getNextId() {\n return this.#uiManager.getId();\n }\n\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n\n /**\n * Create a new editor\n * @param {Object} params\n * @returns {AnnotationEditor}\n */\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n\n /**\n * Paste some content into a new editor.\n * @param {number} mode\n * @param {Object} params\n */\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n\n const { offsetX, offsetY } = 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\n /**\n * Create a new editor\n * @param {Object} data\n * @returns {AnnotationEditor | null}\n */\n deserialize(data) {\n return (\n AnnotationEditorLayer.#editorTypes\n .get(data.annotationType ?? data.annotationEditorType)\n ?.deserialize(data, this, this.#uiManager) || null\n );\n }\n\n /**\n * Create and add a new editor.\n * @param {PointerEvent} event\n * @param {boolean} isCentered\n * @param [Object] data\n * @returns {AnnotationEditor}\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\n return editor;\n }\n\n #getCenterPoint() {\n const { x, y, width, height } = 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] =\n this.viewport.rotation % 180 === 0\n ? [centerX, centerY]\n : [centerY, centerX];\n\n return { offsetX, offsetY };\n }\n\n /**\n * Create and add a new editor.\n */\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), /* isCentered = */ true);\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n /**\n * Pointerup callback.\n * @param {PointerEvent} event\n */\n pointerup(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Don't create an editor on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#hadPointerDown) {\n // It can happen when the user starts a drag inside a text editor\n // and then releases the mouse button outside of it. In such a case\n // we don't want to create a new editor, hence we check that a pointerdown\n // occurred on this div previously.\n return;\n }\n this.#hadPointerDown = false;\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n\n this.createAndAddNewEditor(event, /* isCentered = */ false);\n }\n\n /**\n * Pointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n // It's possible to have a second pointerdown event before a pointerup one\n // when the user puts a finger on a touchscreen and then add a second one\n // to start a pinch-to-zoom gesture.\n // That said, in case it's possible to have two pointerdown events with\n // a mouse, we don't want to create a new editor in such a case either.\n this.#hadPointerDown = false;\n return;\n }\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n this.#hadPointerDown = true;\n\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n /**\n *\n * @param {AnnotationEditor} editor\n * @param {number} x\n * @param {number} y\n * @returns\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\n /**\n * Destroy the main editor.\n */\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n // We need to commit the current editor before destroying the layer.\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\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\n #cleanup() {\n // When we're cleaning up, some editors are removed but we don't want\n // to add a new one which will induce an addition in this.#editors, hence\n // an infinite loop.\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n\n /**\n * Render the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n render({ viewport }) {\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 // We're maybe rendering a layer which was invisible when we started to edit\n // so we must set the different callbacks for it.\n this.updateMode();\n }\n\n /**\n * Update the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n update({ viewport }) {\n // Editors have their dimensions/positions in percent so to avoid any\n // issues (see #15582), we must commit the current one before changing\n // the viewport.\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, { rotation });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n\n /**\n * Get page dimensions.\n * @returns {Object} dimensions.\n */\n get pageDimensions() {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2023 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\nimport { AnnotationEditorParamsType, shadow } from \"../../shared/util.js\";\nimport { KeyboardManager } from \"./tools.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass ColorPicker {\n #boundKeyDown = this.#keyDown.bind(this);\n\n #boundPointerDown = this.#pointerDown.bind(this);\n\n #button = null;\n\n #buttonSwatch = null;\n\n #defaultColor;\n\n #dropdown = null;\n\n #dropdownWasFromKeyboard = false;\n\n #isMainColorPicker = false;\n\n #editor = null;\n\n #eventBus;\n\n #uiManager = null;\n\n #type;\n\n static get _keyboardManager() {\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n [\"Escape\", \"mac+Escape\"],\n ColorPicker.prototype._hideDropdownFromKeyboard,\n ],\n [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard],\n [\n [\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"],\n ColorPicker.prototype._moveToNext,\n ],\n [\n [\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"],\n ColorPicker.prototype._moveToPrevious,\n ],\n [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning],\n [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd],\n ])\n );\n }\n\n constructor({ editor = null, uiManager = null }) {\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 =\n editor?.color ||\n this.#uiManager?.highlightColors.values().next().value ||\n \"#FFFF98\";\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 button.addEventListener(\"click\", this.#openDropdown.bind(this));\n button.addEventListener(\"keydown\", this.#boundKeyDown);\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\n renderMainDropdown() {\n const dropdown = (this.#dropdown = this.#getDropdownRoot());\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n\n return dropdown;\n }\n\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n div.addEventListener(\"contextmenu\", noContextMenu);\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\", `pdfjs-editor-colorpicker-${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 div.append(button);\n }\n\n div.addEventListener(\"keydown\", this.#boundKeyDown);\n\n return div;\n }\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\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\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\n _moveToPrevious(event) {\n if (\n event.target === this.#dropdown?.firstChild ||\n event.target === this.#button\n ) {\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\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n window.addEventListener(\"pointerdown\", this.#boundPointerDown);\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\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n }\n\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n // The user pressed Escape with no dropdown visible, so we must\n // unselect it.\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard,\n });\n }\n\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\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\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\nexport { ColorPicker };\n","/* Copyright 2023 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\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass AltText {\n #altText = \"\";\n\n #altTextDecorative = false;\n\n #altTextButton = null;\n\n #altTextTooltip = null;\n\n #altTextTooltipTimeout = null;\n\n #altTextWasFromKeyBoard = false;\n\n #editor = null;\n\n static _l10nPromise = null;\n\n constructor(editor) {\n this.#editor = editor;\n }\n\n static initialize(l10nPromise) {\n AltText._l10nPromise ||= l10nPromise;\n }\n\n async render() {\n const altText = (this.#altTextButton = document.createElement(\"button\"));\n altText.className = \"altText\";\n const msg = await AltText._l10nPromise.get(\n \"pdfjs-editor-alt-text-button-label\"\n );\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n altText.addEventListener(\"contextmenu\", noContextMenu);\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n };\n altText.addEventListener(\"click\", onClick, { capture: true });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n });\n await this.#setState();\n\n return altText;\n }\n\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n this.#altTextWasFromKeyBoard = false;\n }\n\n isEmpty() {\n return !this.#altText && !this.#altTextDecorative;\n }\n\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative,\n };\n }\n\n /**\n * Set the alt text data.\n */\n set data({ altText, decorative }) {\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n this.#setState();\n }\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\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n }\n\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n\n AltText._l10nPromise\n .get(\"pdfjs-editor-alt-text-edit-button-label\")\n .then(msg => {\n button.setAttribute(\"aria-label\", msg);\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 const id = (tooltip.id = `alt-text-tooltip-${this.#editor.id}`);\n button.setAttribute(\"aria-describedby\", id);\n\n const DELAY_TO_SHOW_TOOLTIP = 100;\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 button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n });\n }\n tooltip.innerText = this.#altTextDecorative\n ? await AltText._l10nPromise.get(\n \"pdfjs-editor-alt-text-decorative-tooltip\"\n )\n : this.#altText;\n\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\nexport { AltText };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n KeyboardManager,\n} from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\nimport { AltText } from \"./alt_text.js\";\nimport { EditorToolbar } from \"./toolbar.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n #allResizerDivs = null;\n\n #altText = null;\n\n #disabled = false;\n\n #keepAspectRatio = false;\n\n #resizersDiv = null;\n\n #savedDimensions = null;\n\n #boundFocusin = this.focusin.bind(this);\n\n #boundFocusout = this.focusout.bind(this);\n\n #editToolbar = null;\n\n #focusedResizerName = \"\";\n\n #hasBeenClicked = false;\n\n #initialPosition = null;\n\n #isEditing = false;\n\n #isInEditMode = false;\n\n #isResizerEnabledForKeyboard = false;\n\n #moveInDOMTimeout = null;\n\n #prevDragX = 0;\n\n #prevDragY = 0;\n\n #telemetryTimeouts = null;\n\n _initialOptions = Object.create(null);\n\n _isVisible = true;\n\n _uiManager = null;\n\n _focusEventsAllowed = true;\n\n _l10nPromise = null;\n\n #isDraggable = false;\n\n #zIndex = AnnotationEditor._zIndex++;\n\n static _borderLineWidth = -1;\n\n static _colorManager = new ColorManager();\n\n static _zIndex = 1;\n\n // Time to wait (in ms) before sending the telemetry data.\n // We wait a bit to avoid sending too many requests when changing something\n // like the thickness of a line.\n static _telemetryTimeout = 1000;\n\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_resizerKeyboardManager\",\n new KeyboardManager([\n [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n resize,\n { args: [-big, 0] },\n ],\n [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n resize,\n { args: [big, 0] },\n ],\n [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n [\n [\"Escape\", \"mac+Escape\"],\n AnnotationEditor.prototype._stopResizingWithKeyboard,\n ],\n ])\n );\n }\n\n /**\n * @param {AnnotationEditorParameters} parameters\n */\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n unreachable(\"Cannot initialize AnnotationEditor.\");\n }\n\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\n const {\n rotation,\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n } = this.parent.viewport;\n\n this.rotation = rotation;\n this.pageRotation =\n (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n\n static get _defaultLineColor() {\n return shadow(\n this,\n \"_defaultLineColor\",\n this._colorManager.getHexCode(\"CanvasText\")\n );\n }\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\n /**\n * Initialize the l10n stuff for this type of editor.\n * @param {Object} l10n\n */\n static initialize(l10n, _uiManager, options) {\n AnnotationEditor._l10nPromise ||= new Map(\n [\n \"pdfjs-editor-alt-text-button-label\",\n \"pdfjs-editor-alt-text-edit-button-label\",\n \"pdfjs-editor-alt-text-decorative-tooltip\",\n \"pdfjs-editor-resizer-label-topLeft\",\n \"pdfjs-editor-resizer-label-topMiddle\",\n \"pdfjs-editor-resizer-label-topRight\",\n \"pdfjs-editor-resizer-label-middleRight\",\n \"pdfjs-editor-resizer-label-bottomRight\",\n \"pdfjs-editor-resizer-label-bottomMiddle\",\n \"pdfjs-editor-resizer-label-bottomLeft\",\n \"pdfjs-editor-resizer-label-middleLeft\",\n ].map(str => [\n str,\n l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`)),\n ])\n );\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth =\n parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n\n /**\n * Update the default parameters for this type of editor.\n * @param {number} _type\n * @param {*} _value\n */\n static updateDefaultParams(_type, _value) {}\n\n /**\n * Get the default properties to set in the UI for this type of editor.\n * @returns {Array}\n */\n static get defaultPropertiesToUpdate() {\n return [];\n }\n\n /**\n * Check if this kind of editor is able to handle the given mime type for\n * pasting.\n * @param {string} mime\n * @returns {boolean}\n */\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n\n /**\n * Extract the data from the clipboard item and delegate the creation of the\n * editor to the parent.\n * @param {DataTransferItem} item\n * @param {AnnotationEditorLayer} parent\n */\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n\n /**\n * Get the properties to update in the UI for this editor.\n * @returns {Array}\n */\n get propertiesToUpdate() {\n return [];\n }\n\n get _isDraggable() {\n return this.#isDraggable;\n }\n\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n\n /**\n * @returns {boolean} true if the editor handles the Enter key itself.\n */\n get isEnterHandled() {\n return true;\n }\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\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n\n /**\n * This editor will be behind the others.\n */\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n /**\n * This editor will be in the foreground.\n */\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n // The editor is being removed from the DOM, so we need to stop resizing.\n this.#stopResizing();\n }\n this.parent = parent;\n }\n\n /**\n * onfocus callback.\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\n /**\n * onblur callback.\n * @param {FocusEvent} event\n */\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n return;\n }\n\n // In case of focusout, the relatedTarget is the element which\n // is grabbing the focus.\n // So if the related target is an element under the div for this\n // editor, then the editor isn't unactive.\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n /**\n * Commit the data contained in this editor.\n */\n commit() {\n this.addToAnnotationStorage();\n }\n\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n\n /**\n * Set the editor position within its parent.\n * @param {number} x\n * @param {number} y\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n */\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n\n this.fixAndSetPosition();\n }\n\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n\n this.x += x / width;\n this.y += y / height;\n\n this.fixAndSetPosition();\n }\n\n /**\n * Translate the editor position within its parent.\n * @param {number} x - x-translation in screen coordinates.\n * @param {number} y - y-translation in screen coordinates.\n */\n translate(x, y) {\n // We don't change the initial position because the move here hasn't been\n // done by the user.\n this.#translate(this.parentDimensions, x, y);\n }\n\n /**\n * Translate the editor position within its page and adjust the scroll\n * in order to have the editor in the view.\n * @param {number} x - x-translation in page coordinates.\n * @param {number} y - y-translation in page coordinates.\n */\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\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 // It's possible to not have a parent: for example, when the user is\n // dragging all the selected editors but this one on a page which has been\n // destroyed.\n // It's why we need to check for it. In such a situation, it isn't really\n // a problem to not find a new parent: it's something which is related to\n // what the user is seeing, hence it depends on how pages are layed out.\n\n // The element will be outside of its parent so change the parent.\n const { x, y } = 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\n // The editor can be moved wherever the user wants, so we don't need to fix\n // the position: it'll be done when the user will release the mouse button.\n\n let { x, y } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n get _hasBeenMoved() {\n return (\n !!this.#initialPosition &&\n (this.#initialPosition[0] !== this.x ||\n this.#initialPosition[1] !== this.y)\n );\n }\n\n /**\n * Get the translation to take into account the editor border.\n * The CSS engine positions the element by taking the border into account so\n * we must apply the opposite translation to have the editor in the right\n * position.\n * @returns {Array<number>}\n */\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const { _borderLineWidth } = 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\n /**\n * @returns {boolean} true if position must be fixed (i.e. make the x and y\n * living in the page).\n */\n get _mustFixPosition() {\n return true;\n }\n\n /**\n * Fix the position of the editor in order to keep it inside its parent page.\n * @param {number} [rotation] - the rotation of the page.\n */\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let { x, y, width, height } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n\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\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n\n const { style } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n\n this.moveInDOM();\n }\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\n /**\n * Convert a screen translation into a page one.\n * @param {number} x\n * @param {number} y\n */\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n\n /**\n * Convert a page translation into a screen one.\n * @param {number} x\n * @param {number} y\n */\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90: {\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 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\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight],\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return FeatureTest.isCSSRoundSupported\n ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n : [scaledWidth, scaledHeight];\n }\n\n /**\n * Set the dimensions of this editor.\n * @param {number} width\n * @param {number} height\n */\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n }\n }\n\n fixDims() {\n const { style } = this.div;\n const { height, width } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\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(\n 2\n )}%`;\n }\n }\n\n /**\n * Get the translation used to position this editor when it's created.\n * @returns {Array<number>}\n */\n getInitialTranslation() {\n return [0, 0];\n }\n\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n // When the resizers are used with the keyboard, they're focusable, hence\n // we want to have them in this order (top left, top middle, top right, ...)\n // in the DOM to have the focus order correct.\n const classes = this._willKeepAspectRatio\n ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n : [\n \"topLeft\",\n \"topMiddle\",\n \"topRight\",\n \"middleRight\",\n \"bottomRight\",\n \"bottomMiddle\",\n \"bottomLeft\",\n \"middleLeft\",\n ];\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(\n \"pointerdown\",\n this.#resizerPointerdown.bind(this, name)\n );\n div.addEventListener(\"contextmenu\", noContextMenu);\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n return;\n }\n\n this.#altText?.toggle(false);\n\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const pointerMoveOptions = { passive: true, capture: true };\n this.parent.togglePointerEvents(false);\n window.addEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\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 =\n window.getComputedStyle(event.target).cursor;\n\n const pointerUpCallback = () => {\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user switches to another window (with alt+tab), then we end the\n // resize session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (\n newX === savedX &&\n newY === savedY &&\n newWidth === savedWidth &&\n newHeight === savedHeight\n ) {\n return;\n }\n\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true,\n });\n }\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\n // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n // Without rounding, the positions of the corners other than the top left\n // one can be slightly wrong.\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [\n rotationMatrix[0] * x + rotationMatrix[2] * y,\n rotationMatrix[1] * x + rotationMatrix[3] * y,\n ];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [\n invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n ];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n\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\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n\n let [deltaX, deltaY] = this.screenToPageTranslation(\n event.movementX,\n event.movementY\n );\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(\n Math.min(\n Math.hypot(\n oppositePoint[0] - point[0] - deltaX,\n oppositePoint[1] - point[1] - deltaY\n ) / oldDiag,\n // Avoid the editor to be larger than the page.\n 1 / savedWidth,\n 1 / savedHeight\n ),\n // Avoid the editor to be smaller than the minimum size.\n minWidth / savedWidth,\n minHeight / savedHeight\n );\n } else if (isHorizontal) {\n ratioX =\n Math.max(\n minWidth,\n Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n ) / savedWidth;\n } else {\n ratioY =\n Math.max(\n minHeight,\n Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n ) / savedHeight;\n }\n\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n\n altTextFinish() {\n this.#altText?.finish();\n }\n\n /**\n * Add a toolbar for this editor.\n * @returns {Promise<EditorToolbar|null>}\n */\n async addEditToolbar() {\n if (this.#editToolbar || this.#isInEditMode) {\n return this.#editToolbar;\n }\n this.#editToolbar = new EditorToolbar(this);\n this.div.append(this.#editToolbar.render());\n if (this.#altText) {\n this.#editToolbar.addAltTextButton(await this.#altText.render());\n }\n\n return this.#editToolbar;\n }\n\n removeEditToolbar() {\n if (!this.#editToolbar) {\n return;\n }\n this.#editToolbar.remove();\n this.#editToolbar = null;\n\n // We destroy the alt text but we don't null it because we want to be able\n // to restore it in case the user undoes the deletion.\n this.#altText?.destroy();\n }\n\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10nPromise);\n this.#altText = new AltText(this);\n await this.addEditToolbar();\n }\n\n get altTextData() {\n return this.#altText?.data;\n }\n\n /**\n * Set the alt text data.\n */\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n\n hasAltText() {\n return !this.#altText?.isEmpty();\n }\n\n /**\n * Render this editor in a div.\n * @returns {HTMLDivElement | null}\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\n this.setInForeground();\n\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n 2\n )}%`;\n this.div.style.maxHeight = `${(\n (100 * parentWidth) /\n parentHeight\n ).toFixed(2)}%`;\n }\n\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n\n bindEvents(this, this.div, [\"pointerdown\"]);\n\n return this.div;\n }\n\n /**\n * Onpointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Avoid to focus this editor because of a non-left click.\n event.preventDefault();\n return;\n }\n\n this.#hasBeenClicked = true;\n\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n\n this.#selectOnPointerEvent(event);\n }\n\n #selectOnPointerEvent(event) {\n const { isMac } = FeatureTest.platform;\n if (\n (event.ctrlKey && !isMac) ||\n event.shiftKey ||\n (event.metaKey && isMac)\n ) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n\n #setUpDragSession(event) {\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n\n let pointerMoveOptions, pointerMoveCallback;\n if (isSelected) {\n this.div.classList.add(\"moving\");\n pointerMoveOptions = { passive: true, capture: true };\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n pointerMoveCallback = e => {\n const { clientX: x, clientY: y } = e;\n const [tx, ty] = this.screenToPageTranslation(\n x - this.#prevDragX,\n y - this.#prevDragY\n );\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n window.removeEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user is using alt+tab during the dragging session, the pointerup\n // event could be not fired, but a blur event is fired so we can use it in\n // order to interrupt the dragging session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n moveInDOM() {\n // Moving the editor in the DOM can be expensive, so we wait a bit before.\n // It's important to not block the UI (for example when changing the font\n // size in a FreeText).\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\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n\n /**\n * Convert the current rect into a page one.\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n * @param {number} [rotation] - the rotation of the page.\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\n switch (rotation) {\n case 0:\n return [\n x + shiftX + pageX,\n pageHeight - y - shiftY - height + pageY,\n x + shiftX + width + pageX,\n pageHeight - y - shiftY + pageY,\n ];\n case 90:\n return [\n x + shiftY + pageX,\n pageHeight - y + shiftX + pageY,\n x + shiftY + height + pageX,\n pageHeight - y + shiftX + width + pageY,\n ];\n case 180:\n return [\n x - shiftX - width + pageX,\n pageHeight - y + shiftY + pageY,\n x - shiftX + pageX,\n pageHeight - y + shiftY + height + pageY,\n ];\n case 270:\n return [\n x - shiftY - height + pageX,\n pageHeight - y - shiftX - width + pageY,\n x - shiftY + pageX,\n pageHeight - y - shiftX + pageY,\n ];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n\n const width = x2 - x1;\n const height = y2 - y1;\n\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\n /**\n * Executed once this editor has been rendered.\n */\n onceAdded() {}\n\n /**\n * Check if the editor contains something.\n * @returns {boolean}\n */\n isEmpty() {\n return false;\n }\n\n /**\n * Enable edit mode.\n */\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n /**\n * Disable edit mode.\n */\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n /**\n * Check if the editor is edited.\n * @returns {boolean}\n */\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n /**\n * If it returns true, then this editor handles the keyboard\n * events itself.\n * @returns {boolean}\n */\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n\n /**\n * Check if this editor needs to be rebuilt or not.\n * @returns {boolean}\n */\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n /**\n * Rebuild the editor in case it has been removed on undo.\n *\n * To implement in subclasses.\n */\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n }\n\n /**\n * Rotate the editor.\n * @param {number} angle\n */\n rotate(_angle) {}\n\n /**\n * Serialize the editor.\n * The result of the serialization will be used to construct a\n * new annotation to add to the pdf document.\n *\n * To implement in subclasses.\n * @param {boolean} [isForCopying]\n * @param {Object | null} [context]\n * @returns {Object | null}\n */\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n\n /**\n * Deserialize the editor.\n * The result of the deserialization is a new editor.\n *\n * @param {Object} data\n * @param {AnnotationEditorLayer} parent\n * @param {AnnotationEditorUIManager} uiManager\n * @returns {AnnotationEditor | null}\n */\n static 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\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(\n data.rect,\n pageHeight\n );\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n\n return editor;\n }\n\n /**\n * Remove this editor.\n * It's used on ctrl+backspace action.\n */\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n // The editor is removed but it can be back at some point thanks to\n // undo/redo so we must commit it before.\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\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 }\n\n /**\n * @returns {boolean} true if this editor can be resized.\n */\n get isResizable() {\n return false;\n }\n\n /**\n * Add the resizers to this editor.\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\n get toolbarPosition() {\n return null;\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (\n !this.isResizable ||\n event.target !== this.div ||\n event.key !== \"Enter\"\n ) {\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 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 div.addEventListener(\"blur\", boundResizerBlur);\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n AnnotationEditor._l10nPromise\n .get(`pdfjs-editor-resizer-label-${name}`)\n .then(msg => div.setAttribute(\"aria-label\", msg));\n }\n }\n\n // We want to have the resizers in the visual order, so we move the first\n // (top-left) to the right place.\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 =\n (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n (this.#allResizerDivs.length / 4);\n\n if (nextFirstPosition !== firstPosition) {\n // We need to reorder the resizers in the DOM in order to have the focus\n // on the top-left one.\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\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 AnnotationEditor._l10nPromise\n .get(`pdfjs-editor-resizer-label-${name}`)\n .then(msg => child.setAttribute(\"aria-label\", msg));\n }\n }\n\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({ focusVisible: true });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n\n #resizerBlur(event) {\n if (\n this.#isResizerEnabledForKeyboard &&\n event.relatedTarget?.parentNode !== this.#resizersDiv\n ) {\n this.#stopResizing();\n }\n }\n\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\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\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y,\n });\n }\n\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n\n /**\n * Select this editor.\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 // The editor can have been unselected while we were waiting for the\n // edit toolbar to be created, hence we want to be sure that this\n // editor is still selected.\n this.#editToolbar?.show();\n }\n });\n return;\n }\n this.#editToolbar?.show();\n }\n\n /**\n * Unselect this editor.\n */\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n // Don't use this.div.blur() because we don't know where the focus will\n // go.\n this._uiManager.currentLayer.div.focus({\n preventScroll: true,\n });\n }\n this.#editToolbar?.hide();\n }\n\n /**\n * Update some parameters which have been changed through the UI.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {}\n\n /**\n * When the user disables the editing mode some editors can change some of\n * their properties.\n */\n disableEditing() {}\n\n /**\n * When the user enables the editing mode some editors can change some of\n * their properties.\n */\n enableEditing() {}\n\n /**\n * The editor is about to be edited.\n */\n enterInEditMode() {}\n\n /**\n * @returns {HTMLElement | null} the element requiring an alt text.\n */\n getImageForAltText() {\n return null;\n }\n\n /**\n * Get the div which really contains the displayed content.\n * @returns {HTMLDivElement | undefined}\n */\n get contentDiv() {\n return this.div;\n }\n\n /**\n * If true then the editor is currently edited.\n * @type {boolean}\n */\n get isEditing() {\n return this.#isEditing;\n }\n\n /**\n * When set to true, it means that this editor is currently edited.\n * @param {boolean} value\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\n /**\n * Set the aspect ratio to use when resizing.\n * @param {number} width\n * @param {number} height\n */\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const { style } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n\n static get MIN_SIZE() {\n return 16;\n }\n\n static canCreateNewEmptyEditor() {\n return true;\n }\n\n /**\n * Get the data to report to the telemetry when the editor is added.\n * @returns {Object}\n */\n get telemetryInitialData() {\n return { action: \"added\" };\n }\n\n /**\n * The telemetry data to use when saving/printing.\n * @returns {Object|null}\n */\n get telemetryFinalData() {\n return null;\n }\n\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const { action } = 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\n /**\n * Show or hide this editor.\n * @param {boolean|undefined} visible\n */\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n };\n }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2023 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\nimport { Util } from \"../../shared/util.js\";\n\nclass Outliner {\n #box;\n\n #verticalEdges = [];\n\n #intervals = [];\n\n /**\n * Construct an outliner.\n * @param {Array<Object>} boxes - An array of axis-aligned rectangles.\n * @param {number} borderWidth - The width of the border of the boxes, it\n * allows to make the boxes bigger (or smaller).\n * @param {number} innerMargin - The margin between the boxes and the\n * outlines. It's important to not have a null innerMargin when we want to\n * draw the outline else the stroked outline could be clipped because of its\n * width.\n * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n * the last point of the boxes.\n */\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\n // We round the coordinates to slightly reduce the number of edges in the\n // final outlines.\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n\n // The coordinates of the boxes are in the page coordinate system.\n for (const { x, y, width, height } 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\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\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\n // Convert the coordinates of the edges into box coordinates.\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\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint,\n };\n }\n\n getOutlines() {\n // We begin to sort lexicographically the vertical edges by their abscissa,\n // and then by their ordinate.\n this.#verticalEdges.sort(\n (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\n );\n\n // We're now using a sweep line algorithm to find the outlines.\n // We start with the leftmost vertical edge, and we're going to iterate\n // over all the vertical edges from left to right.\n // Each time we encounter a left edge, we're going to insert the interval\n // [y1, y2] in the set of intervals.\n // This set of intervals is used to break the vertical edges into chunks:\n // we only take the part of the vertical edge that isn't in the union of\n // the intervals.\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n // Left edge.\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n // Right edge.\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n\n // We sort lexicographically the vertices of each edge by their ordinate and\n // by their abscissa.\n // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n // So for every vertical edge, we're going to add the two vertical edges\n // which are connected to it through a horizontal edge.\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\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\n outline = [x, y2];\n outlines.push(outline);\n\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\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n\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);\n }\n\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n\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\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\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\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 // There is no intersection between the interval and the edge, hence\n // we keep it as is.\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 // The edge is included in the interval, hence we remove it.\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}\n\nclass Outline {\n /**\n * @returns {string} The SVG path of the outline.\n */\n toSVGPath() {\n throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n }\n\n /**\n * @type {Object|null} The bounding box of the outline.\n */\n get box() {\n throw new Error(\"Abstract getter `box` must be implemented.\");\n }\n\n serialize(_bbox, _rotation) {\n throw new Error(\"Abstract method `serialize` must be implemented.\");\n }\n\n get free() {\n return this instanceof FreeHighlightOutline;\n }\n}\n\nclass HighlightOutline extends Outline {\n #box;\n\n #outlines;\n\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\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\n /**\n * Serialize the outlines into the PDF page coordinate system.\n * @param {Array<number>} _bbox - the bounding box of the annotation.\n * @param {number} _rotation - the rotation of the annotation.\n * @returns {Array<Array<number>>}\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\n get box() {\n return this.#box;\n }\n}\n\nclass FreeOutliner {\n #box;\n\n #bottom = [];\n\n #innerMargin;\n\n #isLTR;\n\n #top = [];\n\n // The first 6 elements are the last 3 points of the top part of the outline.\n // The next 6 elements are the last 3 points of the line.\n // The next 6 elements are the last 3 points of the bottom part of the\n // outline.\n // We track the last 3 points in order to be able to:\n // - compute the normal of the line,\n // - compute the control points of the quadratic Bézier curve.\n #last = new Float64Array(18);\n\n #lastX;\n\n #lastY;\n\n #min;\n\n #min_dist;\n\n #scaleFactor;\n\n #thickness;\n\n #points = [];\n\n static #MIN_DIST = 8;\n\n static #MIN_DIFF = 2;\n\n static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n\n constructor({ x, y }, 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 = FreeOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n\n get free() {\n return true;\n }\n\n isEmpty() {\n // When we add a second point then this.#last.slice(6) will be something\n // like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\n // at index 8 means that we've only one point.\n return isNaN(this.#last[8]);\n }\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\n return [\n (this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width,\n (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height,\n (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width,\n (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height,\n ];\n }\n\n add({ x, y }) {\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 // The idea is to avoid garbage points around the last point.\n // When the points are too close, it just leads to bad normal vectors and\n // control points.\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\n // We update the last 3 points of the line.\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n\n // We keep track of the points in order to be able to compute the focus\n // outline.\n this.#points?.push(x, y);\n\n // Create the normal unit vector.\n // |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\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\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(\n NaN,\n NaN,\n NaN,\n NaN,\n (x1 + thX - layerX) / layerWidth,\n (y1 + thY - layerY) / layerHeight\n );\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(\n NaN,\n NaN,\n NaN,\n NaN,\n (x1 - thX - layerX) / layerWidth,\n (y1 - thY - layerY) / layerHeight\n );\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n\n const angle = Math.abs(\n Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX)\n );\n if (angle < Math.PI / 2) {\n // In order to avoid some possible artifacts, we're going to use the a\n // straight line instead of a quadratic Bézier curve.\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(\n NaN,\n NaN,\n NaN,\n NaN,\n ((x1 + x2) / 2 - layerX) / layerWidth,\n ((y1 + y2) / 2 - layerY) / layerHeight\n );\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(\n NaN,\n NaN,\n NaN,\n NaN,\n ((x0 + x1) / 2 - layerX) / layerWidth,\n ((y0 + y1) / 2 - layerY) / layerHeight\n );\n return true;\n }\n\n // Control points and the final point for the quadratic Bézier curve.\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(\n ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n ((x1 + x2) / 2 - layerX) / layerWidth,\n ((y1 + y2) / 2 - layerY) / layerHeight\n );\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(\n ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n ((x1 + x2) / 2 - layerX) / layerWidth,\n ((y1 + y2) / 2 - layerY) / layerHeight\n );\n return true;\n }\n\n toSVGPath() {\n if (this.isEmpty()) {\n // We've only one point.\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\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 const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n this.#getLastCoords();\n\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n // We've only two points.\n return `M${(this.#last[2] - x) / width} ${\n (this.#last[3] - y) / height\n } L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n (this.#last[16] - x) / width\n } ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${\n (this.#last[15] - y) / height\n } Z`;\n }\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(\n `C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${\n top[i + 5]\n }`\n );\n }\n }\n\n buffer.push(\n `L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n (lastBottom[0] - x) / width\n } ${(lastBottom[1] - y) / height}`\n );\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(\n `C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${\n bottom[i + 4]\n } ${bottom[i + 5]}`\n );\n }\n }\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n\n return buffer.join(\" \");\n }\n\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const lastTop = last.subarray(4, 6);\n const lastBottom = last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n\n const points = new Float64Array((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 const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n this.#getLastCoords();\n\n if (isNaN(last[6]) && !this.isEmpty()) {\n // We've only two points.\n const outline = new Float64Array(36);\n outline.set(\n [\n NaN,\n NaN,\n NaN,\n NaN,\n (last[2] - layerX) / layerWidth,\n (last[3] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[4] - layerX) / layerWidth,\n (last[5] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n lastTopX,\n lastTopY,\n NaN,\n NaN,\n NaN,\n NaN,\n lastBottomX,\n lastBottomY,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[16] - layerX) / layerWidth,\n (last[17] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[14] - layerX) / layerWidth,\n (last[15] - layerY) / layerHeight,\n ],\n 0\n );\n return new FreeHighlightOutline(\n outline,\n points,\n this.#box,\n this.#scaleFactor,\n this.#innerMargin,\n this.#isLTR\n );\n }\n\n const outline = new Float64Array(\n this.#top.length + 24 + this.#bottom.length\n );\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 outline.set(\n [\n NaN,\n NaN,\n NaN,\n NaN,\n (lastTop[0] - layerX) / layerWidth,\n (lastTop[1] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n lastTopX,\n lastTopY,\n NaN,\n NaN,\n NaN,\n NaN,\n lastBottomX,\n lastBottomY,\n NaN,\n NaN,\n NaN,\n NaN,\n (lastBottom[0] - layerX) / layerWidth,\n (lastBottom[1] - layerY) / layerHeight,\n ],\n N\n );\n N += 24;\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 outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n return new FreeHighlightOutline(\n outline,\n points,\n this.#box,\n this.#scaleFactor,\n this.#innerMargin,\n this.#isLTR\n );\n }\n}\n\nclass FreeHighlightOutline extends Outline {\n #box;\n\n #bbox = null;\n\n #innerMargin;\n\n #isLTR;\n\n #points;\n\n #scaleFactor;\n\n #outline;\n\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.#computeMinMax(isLTR);\n\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\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(\n `C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${\n this.#outline[i + 3]\n } ${this.#outline[i + 4]} ${this.#outline[i + 5]}`\n );\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\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 = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(\n this.#outline,\n trX,\n trY,\n -width,\n -height\n );\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return { outline: Array.from(outline), points: [Array.from(points)] };\n }\n\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(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\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(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\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\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(\n lastX,\n lastY,\n ...outline.slice(i, i + 6)\n );\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\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = { x, y, width, height, lastPoint: [lastPointX, lastPointY] };\n }\n\n get box() {\n return this.#bbox;\n }\n\n getNewOutline(thickness, innerMargin) {\n // Build the outline of the highlight to use as the focus outline.\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 = new FreeOutliner(\n {\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty,\n },\n this.#box,\n this.#scaleFactor,\n thickness,\n this.#isLTR,\n innerMargin ?? this.#innerMargin\n );\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\nexport { FreeOutliner, Outliner };\n","/* Copyright 2023 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\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass EditorToolbar {\n #toolbar = null;\n\n #colorPicker = null;\n\n #editor;\n\n #buttons = null;\n\n constructor(editor) {\n this.#editor = editor;\n }\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 editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown);\n\n const buttons = (this.#buttons = document.createElement(\"div\"));\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n\n const position = this.#editor.toolbarPosition;\n if (position) {\n const { style } = editToolbar;\n const x =\n this.#editor._uiManager.direction === \"ltr\"\n ? 1 - position[0]\n : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${\n 100 * position[1]\n }% + var(--editor-toolbar-vert-offset))`;\n }\n\n this.#addDeleteButton();\n\n return editToolbar;\n }\n\n static #pointerDown(e) {\n e.stopPropagation();\n }\n\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n\n #addListenersToElement(element) {\n // If we're clicking on a button with the keyboard or with\n // the mouse, we don't want to trigger any focus events on\n // the editor.\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n });\n element.addEventListener(\"contextmenu\", noContextMenu);\n }\n\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n }\n\n #addDeleteButton() {\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\n \"data-l10n-id\",\n `pdfjs-editor-remove-${this.#editor.editorType}-button`\n );\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n this.#editor._uiManager.delete();\n });\n this.#buttons.append(button);\n }\n\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n\n addAltTextButton(button) {\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\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\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\n\nclass HighlightToolbar {\n #buttons = null;\n\n #toolbar = null;\n\n #uiManager;\n\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\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\n const buttons = (this.#buttons = document.createElement(\"div\"));\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n\n this.#addHighlightButton();\n\n return editToolbar;\n }\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\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const { style } = (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\n hide() {\n this.#toolbar.remove();\n }\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 button.addEventListener(\"contextmenu\", noContextMenu);\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n this.#buttons.append(button);\n }\n}\n\nexport { EditorToolbar, HighlightToolbar };\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\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n FeatureTest,\n getUuid,\n shadow,\n Util,\n warn,\n} from \"../../shared/util.js\";\nimport {\n fetchData,\n getColorValues,\n getRGB,\n PixelsPerInch,\n} from \"../display_utils.js\";\nimport { HighlightToolbar } from \"./toolbar.js\";\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n .toString(16)\n .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n #id = 0;\n\n constructor() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n Object.defineProperty(this, \"reset\", {\n value: () => (this.#id = 0),\n });\n }\n }\n\n /**\n * Get a unique id.\n * @returns {string}\n */\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n #baseId = getUuid();\n\n #id = 0;\n\n #cache = null;\n\n static get _isSVGFittingCanvas() {\n // By default, Firefox doesn't rescale without preserving the aspect ratio\n // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n // url, but according to comment #15, it seems that it leads to unexpected\n // behavior in Safari.\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\");\n 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\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n // We already tried to load the image but it failed.\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 {\n image = data.file = rawData;\n }\n\n if (image.type === \"image/svg+xml\") {\n // Unfortunately, createImageBitmap doesn't work with SVG images.\n // (see https://bugzilla.mozilla.org/1841972).\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 // We need to set the preserveAspectRatio to none in order to let\n // the image fits the canvas when resizing.\n imageElement.src = (await mustRemoveAspectRatioPromise)\n ? `${url}#svgView(preserveAspectRatio(none))`\n : 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 console.error(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\n async getFromFile(file) {\n const { lastModified, name, size, type } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n\n async getFromUrl(url) {\n return this.#get(url, url);\n }\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\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\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\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 data.bitmap = null;\n }\n\n // We can use the id only if it belongs this manager.\n // We must take care of having the right manager because we can copy/paste\n // some images from other documents, hence it'd be a pity to use an id from an\n // other manager.\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n #commands = [];\n\n #locked = false;\n\n #maxSize;\n\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n /**\n * @typedef {Object} addOptions\n * @property {function} cmd\n * @property {function} undo\n * @property {function} [post]\n * @property {boolean} mustExec\n * @property {number} type\n * @property {boolean} overwriteIfSameType\n * @property {boolean} keepUndo\n */\n\n /**\n * Add a new couple of commands to be used in case of redo/undo.\n * @param {addOptions} options\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\n if (this.#locked) {\n return;\n }\n\n const save = { cmd, undo, post, type };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n // All the commands have been undone and then a new one is added\n // hence we clear the queue.\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n // For example when we change a color we don't want to\n // be able to undo all the steps, hence we only want to\n // keep the last undoable action in this sequence of actions.\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\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\n this.#commands.push(save);\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n if (this.#position === -1) {\n // Nothing to undo.\n return;\n }\n\n // Avoid to insert something during the undo execution.\n this.#locked = true;\n const { undo, post } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n\n this.#position -= 1;\n }\n\n /**\n * Redo the last command.\n */\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n\n // Avoid to insert something during the redo execution.\n this.#locked = true;\n const { cmd, post } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n\n /**\n * Check if there is something to undo.\n * @returns {boolean}\n */\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n /**\n * Check if there is something to redo.\n * @returns {boolean}\n */\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n /**\n * Create a new keyboard manager class.\n * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n * and a callback to call.\n * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n */\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n\n const { isMac } = 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), { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n /**\n * Serialize an event into a string in order to match a\n * potential key for a callback.\n * @param {KeyboardEvent} event\n * @returns {string}\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\n return str;\n }\n\n /**\n * Execute a callback, if any, for a given keyboard event.\n * The self is used as `this` in the callback.\n * @param {Object} self\n * @param {KeyboardEvent} event\n * @returns\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: { bubbles = false, args = [], checker = null },\n } = info;\n\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n\n // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n // the event must bubble.\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([\n [\"CanvasText\", [0, 0, 0]],\n [\"Canvas\", [255, 255, 255]],\n ]);\n\n get _colors() {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\"\n ) {\n return shadow(this, \"_colors\", ColorManager._colorsMapping);\n }\n\n const colors = new Map([\n [\"CanvasText\", null],\n [\"Canvas\", null],\n ]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n\n /**\n * In High Contrast Mode, the color on the screen is not always the\n * real color used in the pdf.\n * For example in some cases white can appear to be black but when saving\n * we want to have white.\n * @param {string} color\n * @returns {Array<number>}\n */\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\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\n /**\n * An input element must have its color value as a hex string\n * and not as color name.\n * So this function converts a name into an hex string.\n * @param {string} name\n * @returns {string}\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}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n\n #allEditors = new Map();\n\n #allLayers = new Map();\n\n #altTextManager = null;\n\n #annotationStorage = null;\n\n #commandManager = new CommandManager();\n\n #currentPageIndex = 0;\n\n #deletedAnnotationsElementIds = new Set();\n\n #draggingEditors = null;\n\n #editorTypes = null;\n\n #editorsToRescale = new Set();\n\n #enableHighlightFloatingButton = false;\n\n #filterFactory = null;\n\n #focusMainContainerTimeoutId = null;\n\n #highlightColors = null;\n\n #highlightWhenShiftUp = false;\n\n #highlightToolbar = null;\n\n #idManager = new IdManager();\n\n #isEnabled = false;\n\n #isWaiting = false;\n\n #lastActiveElement = null;\n\n #mainHighlightColorPicker = null;\n\n #mlManager = null;\n\n #mode = AnnotationEditorType.NONE;\n\n #selectedEditors = new Set();\n\n #selectedTextNode = null;\n\n #pageColors = null;\n\n #showAllStates = null;\n\n #boundBlur = this.blur.bind(this);\n\n #boundFocus = this.focus.bind(this);\n\n #boundCopy = this.copy.bind(this);\n\n #boundCut = this.cut.bind(this);\n\n #boundPaste = this.paste.bind(this);\n\n #boundKeydown = this.keydown.bind(this);\n\n #boundKeyup = this.keyup.bind(this);\n\n #boundOnEditingAction = this.onEditingAction.bind(this);\n\n #boundOnPageChanging = this.onPageChanging.bind(this);\n\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n #boundSelectionChange = this.#selectionChange.bind(this);\n\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false,\n };\n\n #translation = [0, 0];\n\n #translationTimeoutId = null;\n\n #container = null;\n\n #viewer = null;\n\n static TRANSLATE_SMALL = 1; // page units.\n\n static TRANSLATE_BIG = 10; // page units.\n\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n\n /**\n * If the focused element is an input, we don't want to handle the arrow.\n * For example, sliders can be controlled with the arrow keys.\n */\n const arrowChecker = self =>\n self.#container.contains(document.activeElement) &&\n document.activeElement.tagName !== \"BUTTON\" &&\n self.hasSomethingToControl();\n\n const textInputChecker = (_self, { target: el }) => {\n if (el instanceof HTMLInputElement) {\n const { type } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n [\"ctrl+a\", \"mac+meta+a\"],\n proto.selectAll,\n { checker: textInputChecker },\n ],\n [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n [\n // On mac, depending of the OS version, the event.key is either \"z\" or\n // \"Z\" when the user presses \"meta+shift+z\".\n [\n \"ctrl+y\",\n \"ctrl+shift+z\",\n \"mac+meta+shift+z\",\n \"ctrl+shift+Z\",\n \"mac+meta+shift+Z\",\n ],\n proto.redo,\n { checker: textInputChecker },\n ],\n [\n [\n \"Backspace\",\n \"alt+Backspace\",\n \"ctrl+Backspace\",\n \"shift+Backspace\",\n \"mac+Backspace\",\n \"mac+alt+Backspace\",\n \"mac+ctrl+Backspace\",\n \"Delete\",\n \"ctrl+Delete\",\n \"shift+Delete\",\n \"mac+Delete\",\n ],\n proto.delete,\n { checker: textInputChecker },\n ],\n [\n [\"Enter\", \"mac+Enter\"],\n proto.addNewEditorFromKeyboard,\n {\n // Those shortcuts can be used in the toolbar for some other actions\n // like zooming, hence we need to check if the container has the\n // focus.\n checker: (self, { target: el }) =>\n !(el instanceof HTMLButtonElement) &&\n self.#container.contains(el) &&\n !self.isEnterHandled,\n },\n ],\n [\n [\" \", \"mac+ \"],\n proto.addNewEditorFromKeyboard,\n {\n // Those shortcuts can be used in the toolbar for some other actions\n // like zooming, hence we need to check if the container has the\n // focus.\n checker: (self, { target: el }) =>\n !(el instanceof HTMLButtonElement) &&\n self.#container.contains(document.activeElement),\n },\n ],\n [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n constructor(\n container,\n viewer,\n altTextManager,\n eventBus,\n pdfDocument,\n pageColors,\n highlightColors,\n enableHighlightFloatingButton,\n mlManager\n ) {\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#addSelectionListener();\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.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0,\n };\n this.isShiftKeyDown = false;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n Object.defineProperty(this, \"reset\", {\n value: () => {\n this.selectAll();\n this.delete();\n this.#idManager.reset();\n },\n });\n }\n }\n\n destroy() {\n this.#removeKeyboardManager();\n this.#removeFocusManager();\n this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\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.#removeSelectionListener();\n }\n\n async mlGuess(data) {\n return this.#mlManager?.guess(data) || null;\n }\n\n get hasMLManager() {\n return !!this.#mlManager;\n }\n\n get hcmFilter() {\n return shadow(\n this,\n \"hcmFilter\",\n this.#pageColors\n ? this.#filterFactory.addHCMFilter(\n this.#pageColors.foreground,\n this.#pageColors.background\n )\n : \"none\"\n );\n }\n\n get direction() {\n return shadow(\n this,\n \"direction\",\n getComputedStyle(this.#container).direction\n );\n }\n\n get highlightColors() {\n return shadow(\n this,\n \"highlightColors\",\n this.#highlightColors\n ? new Map(\n this.#highlightColors\n .split(\",\")\n .map(pair => pair.split(\"=\").map(x => x.trim()))\n )\n : null\n );\n }\n\n get highlightColorNames() {\n return shadow(\n this,\n \"highlightColorNames\",\n this.highlightColors\n ? new Map(Array.from(this.highlightColors, e => e.reverse()))\n : null\n );\n }\n\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n\n editAltText(editor) {\n this.#altTextManager?.editAltText(this, editor);\n }\n\n onPageChanging({ pageNumber }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\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 (\n x >= layerX &&\n x <= layerX + width &&\n y >= layerY &&\n y <= layerY + height\n ) {\n return layer;\n }\n }\n return null;\n }\n\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n\n onScaleChanging({ scale }) {\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 }\n\n onRotationChanging({ pagesRotation }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n\n #getAnchorElementForSelection({ anchorNode }) {\n return anchorNode.nodeType === Node.TEXT_NODE\n ? anchorNode.parentElement\n : anchorNode;\n }\n\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const { anchorNode, anchorOffset, focusNode, focusOffset } = 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 if (this.#mode === AnnotationEditorType.NONE) {\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode: AnnotationEditorType.HIGHLIGHT,\n });\n this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n layer.createAndAddNewEditor({ x: 0, y: 0 }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text,\n });\n break;\n }\n }\n }\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\n /**\n * Add an editor in the annotation storage.\n * @param {AnnotationEditor} editor\n */\n addToAnnotationStorage(editor) {\n if (\n !editor.isEmpty() &&\n this.#annotationStorage &&\n !this.#annotationStorage.has(editor.id)\n ) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\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 { anchorNode } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\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\n if (\n this.#mode !== AnnotationEditorType.HIGHLIGHT &&\n this.#mode !== AnnotationEditorType.NONE\n ) {\n return;\n }\n\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n }\n\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n // Do nothing on right click.\n return;\n }\n window.removeEventListener(\"pointerup\", pointerup);\n window.removeEventListener(\"blur\", pointerup);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup);\n window.addEventListener(\"blur\", pointerup);\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\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#boundSelectionChange);\n }\n\n #removeSelectionListener() {\n document.removeEventListener(\"selectionchange\", this.#boundSelectionChange);\n }\n\n #addFocusManager() {\n window.addEventListener(\"focus\", this.#boundFocus);\n window.addEventListener(\"blur\", this.#boundBlur);\n }\n\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\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 // When several editors are selected and the window loses focus, we want to\n // keep the last active element in order to be able to focus it again when\n // the window gets the focus back but we don't want to trigger any focus\n // callbacks else only one editor will be selected.\n const { activeElement } = 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\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\n \"focusin\",\n () => {\n lastEditor._focusEventsAllowed = true;\n },\n { once: true }\n );\n lastActiveElement.focus();\n }\n\n #addKeyboardManager() {\n // The keyboard events are caught at the container level in order to be able\n // to execute some callbacks even if the current page doesn't have focus.\n window.addEventListener(\"keydown\", this.#boundKeydown);\n window.addEventListener(\"keyup\", this.#boundKeyup);\n }\n\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown);\n window.removeEventListener(\"keyup\", this.#boundKeyup);\n }\n\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n\n /**\n * Copy callback.\n * @param {ClipboardEvent} event\n */\n copy(event) {\n event.preventDefault();\n\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(/* isForCopying = */ true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n\n /**\n * Cut callback.\n * @param {ClipboardEvent} event\n */\n cut(event) {\n this.copy(event);\n this.delete();\n }\n\n /**\n * Paste callback.\n * @param {ClipboardEvent} event\n */\n paste(event) {\n event.preventDefault();\n const { clipboardData } = 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\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n\n if (!Array.isArray(data)) {\n return;\n }\n\n this.unselectAll();\n const layer = this.currentLayer;\n\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\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({ cmd, undo, mustExec: true });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n\n /**\n * Keydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (\n this.#mode !== AnnotationEditorType.NONE &&\n !this.isEditorHandlingKeyboard\n ) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n /**\n * Keyup callback.\n * @param {KeyboardEvent} event\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\n /**\n * Execute an action for a given name.\n * For example, the user can click on the \"Undo\" entry in the context menu\n * and it'll trigger the undo action.\n */\n onEditingAction({ name }) {\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\n /**\n * Update the different possible states of this manager, e.g. is there\n * something to undo, redo, ...\n * @param {Object} details\n */\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(\n ([key, value]) => this.#previousStates[key] !== value\n );\n\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details),\n });\n // We could listen on our own event but it sounds like a bit weird and\n // it's a way to simpler to handle that stuff here instead of having to\n // add something in every place where an editor can be unselected.\n if (\n this.#mode === AnnotationEditorType.HIGHLIGHT &&\n details.hasSelectedEditor === false\n ) {\n this.#dispatchUpdateUI([\n [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\n ]);\n }\n }\n }\n\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details,\n });\n }\n\n /**\n * Set the editing state.\n * It can be useful to temporarily disable it when the user is editing a\n * FreeText annotation.\n * @param {boolean} isEditing\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\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\n /**\n * Get an id.\n * @returns {string}\n */\n getId() {\n return this.#idManager.id;\n }\n\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n\n /**\n * Add a new layer for a page which will contains the editors.\n * @param {AnnotationEditorLayer} layer\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\n /**\n * Remove a layer.\n * @param {AnnotationEditorLayer} layer\n */\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n /**\n * Change the editor mode (None, FreeText, Ink, ...)\n * @param {number} mode\n * @param {string|null} editId\n * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n * keyboard action.\n */\n updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n * @returns {undefined}\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\n /**\n * Update a parameter in the current editor or globally.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\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\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state =\n this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ??\n true;\n if (state !== visible) {\n this.#dispatchUpdateUI([\n [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\n ]);\n }\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\n /**\n * Enable all the layers.\n */\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n\n /**\n * Disable all the layers.\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\n /**\n * Get all the editors belonging to a given page.\n * @param {number} pageIndex\n * @returns {Array<AnnotationEditor>}\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\n /**\n * Get an editor with the given id.\n * @param {string} id\n * @returns {AnnotationEditor}\n */\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n /**\n * Add a new editor.\n * @param {AnnotationEditor} editor\n */\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} 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 // When the div is removed from DOM the focus can move on the\n // document.body, so we need to move it back to the main container.\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (\n !editor.annotationElementId ||\n !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n ) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n\n /**\n * The annotation element with the given id has been deleted.\n * @param {AnnotationEditor} editor\n */\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n editor.deleted = true;\n }\n\n /**\n * Check if the annotation element with the given id has been deleted.\n * @param {string} annotationElementId\n * @returns {boolean}\n */\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n\n /**\n * The annotation element with the given id have been restored.\n * @param {AnnotationEditor} editor\n */\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n editor.deleted = false;\n }\n\n /**\n * Add an editor to the layer it belongs to or add it to the global map.\n * @param {AnnotationEditor} editor\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\n /**\n * Set the given editor as the active one.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {\n // Iterate to get the last element.\n }\n return ed;\n }\n\n /**\n * Update the UI of the active editor.\n * @param {AnnotationEditor} editor\n */\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\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\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n get isEnterHandled() {\n return (\n this.#selectedEditors.size === 1 &&\n this.firstSelectedEditor.isEnterHandled\n );\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty(),\n });\n }\n\n /**\n * Redo the last undoed command.\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\n /**\n * Add a command to execute (cmd) and another one to undo it.\n * @param {Object} params\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\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n /**\n * Delete the current editor or all.\n */\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [...this.#selectedEditors];\n const cmd = () => {\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\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n commitOrRemove() {\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n }\n\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n\n /**\n * Select the editors.\n * @param {Array<AnnotationEditor>} editors\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({ hasSelectedEditor: this.hasSelection });\n }\n\n /**\n * Select all the editors.\n */\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n\n /**\n * Unselect all the selected editors.\n */\n unselectAll() {\n if (this.#activeEditor) {\n // An editor is being edited so just commit it.\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n // If the mode is NONE, we want to really unselect the editor, hence we\n // mustn't return here.\n return;\n }\n }\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\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n\n // We don't want to have an undo/redo for each translation so we wait a bit\n // before adding the command to the command manager.\n const TIME_TO_WAIT = 1000;\n\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n\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\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n\n /**\n * Set up the drag session for moving the selected editors.\n */\n setUpDragSession() {\n // Note: don't use any references to the editor's parent which can be null\n // if the editor belongs to a destroyed page.\n if (!this.hasSelection) {\n return;\n }\n // Avoid to have spurious text selection in the text layer when dragging.\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\n /**\n * Ends the drag session.\n * @returns {boolean} true if at least one editor has been moved.\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\n for (const [{ x, y, pageIndex }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||=\n x !== value.savedX ||\n y !== value.savedY ||\n pageIndex !== value.savedPageIndex;\n }\n\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n // The editor can be undone/redone on a page which is not visible (and\n // which potentially has no annotation editor layer), hence we need to\n // use the pageIndex instead of the parent.\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\n this.addCommands({\n cmd: () => {\n for (const [editor, { newX, newY, newPageIndex }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true,\n });\n\n return true;\n }\n\n /**\n * Drag the set of selected editors.\n * @param {number} tx\n * @param {number} ty\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\n /**\n * Rebuild the editor (usually on undo/redo actions) on a potentially\n * non-rendered page.\n * @param {AnnotationEditor} editor\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\n get isEditorHandlingKeyboard() {\n return (\n this.getActive()?.shouldGetKeyboardEvents() ||\n (this.#selectedEditors.size === 1 &&\n this.firstSelectedEditor.shouldGetKeyboardEvents())\n );\n }\n\n /**\n * Is the current editor the one passed as argument?\n * @param {AnnotationEditor} editor\n * @returns\n */\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n /**\n * Get the current active editor.\n * @returns {AnnotationEditor|null}\n */\n getActive() {\n return this.#activeEditor;\n }\n\n /**\n * Get the current editor mode.\n * @returns {number}\n */\n getMode() {\n return this.#mode;\n }\n\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\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 (\n !textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)\n ) {\n return null;\n }\n }\n\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight,\n } = textLayer.getBoundingClientRect();\n\n // We must rotate the boxes because we want to have them in the non-rotated\n // page coordinates.\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\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 { x, y, width, height } 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}\n\nexport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n CommandManager,\n KeyboardManager,\n opacityToHex,\n};\n","/* Copyright 2012 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\nimport { AbortException, assert, warn } from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\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}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\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}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\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\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\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\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => response.headers.get(name);\n\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({ loaded: this._loaded });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2012 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\nimport {\n assert,\n bytesToString,\n FeatureTest,\n isNodeJS,\n shadow,\n string32,\n unreachable,\n warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n #systemFonts = new Set();\n\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null, // For testing only.\n }) {\n this._document = ownerDocument;\n\n this.nativeFontFaces = new Set();\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? styleElement\n : null;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\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\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async loadSystemFont({ systemFontInfo: info, _inspectFont }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(\n !this.disableFontFace,\n \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n );\n\n if (this.isFontLoadingAPISupported) {\n const { loadedName, src, style } = 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(\n `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n );\n\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n\n unreachable(\n \"Not implemented: loadSystemFont without the Font Loading API.\"\n );\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n return;\n }\n font.attached = true;\n\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\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\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: async font loading\");\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (isNodeJS) {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else if (\n typeof navigator !== \"undefined\" &&\n typeof navigator?.userAgent === \"string\" &&\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n ) {\n // Firefox, from version 14, supports synchronous font loading.\n supported = true;\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _queueLoadingCallback\");\n }\n\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const { loadingRequests } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback,\n };\n loadingRequests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _loadTestFont\");\n }\n\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n const testFont = atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n return shadow(this, \"_loadTestFont\", testFont);\n }\n\n _prepareFontLoadEvent(font, request) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n }\n\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\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\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n // With setTimeout clamping this gives the font ~100ms to load.\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\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\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 // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\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\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\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\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n}\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(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\n this._inspectFont?.(this, url);\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n // eslint-disable-next-line prefer-spread\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2012 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\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2012 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\nimport { assert, stringToBytes } from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\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\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = 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 pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\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._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\n\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\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({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.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\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\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}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\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\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\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 { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\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\nexport { PDFNetworkStream };\n","/* Copyright 2017 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\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\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\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\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\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\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, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\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 // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\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 // Find the first unescaped \" and terminate there.\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; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replaceAll(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\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 } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 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\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"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}\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(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2012 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\nimport {\n AbortException,\n assert,\n isNodeJS,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nlet fs, http, https, url;\nif (isNodeJS) {\n // Native packages.\n fs = await __non_webpack_import__(\"fs\");\n http = await __non_webpack_import__(\"http\");\n https = await __non_webpack_import__(\"https\");\n url = await __non_webpack_import__(\"url\");\n}\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\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; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\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\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\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 }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\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?.({ loaded: this._loaded });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n const getResponseHeader = name =>\n this._readableStream.headers[name.toLowerCase()];\n\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.promises.lstat(path).then(\n stat => {\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n },\n error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n }\n );\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2020 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\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS, warn } from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nlet fs, canvas, path2d;\nif (isNodeJS) {\n // Native packages.\n fs = await __non_webpack_import__(\"fs\");\n // Optional, third-party, packages.\n try {\n canvas = await __non_webpack_import__(\"canvas\");\n } catch {}\n try {\n path2d = await __non_webpack_import__(\"path2d\");\n } catch {}\n}\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"SKIP_BABEL\")) {\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n const DOMMatrix = canvas?.DOMMatrix;\n\n if (DOMMatrix) {\n globalThis.DOMMatrix = DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n })();\n\n (function checkPath2D() {\n if (globalThis.Path2D || !isNodeJS) {\n return;\n }\n const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D;\n const applyPath2DToCanvasRenderingContext =\n path2d?.applyPath2DToCanvasRenderingContext;\n const Path2D = path2d?.Path2D;\n\n if (\n CanvasRenderingContext2D &&\n applyPath2DToCanvasRenderingContext &&\n Path2D\n ) {\n applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D);\n globalThis.Path2D = Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n })();\n}\n\nconst fetchData = function (url) {\n return fs.promises.readFile(url).then(data => new Uint8Array(data));\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n return canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => ({ cMapData: data, compressionType }));\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 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\nimport {\n info,\n objectFromMap,\n RenderingIntentFlag,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #isDisplay = false;\n\n #isPrint = false;\n\n #userSet = false;\n\n #visible = true;\n\n constructor(renderingIntent, { name, intent, usage }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n }\n\n /**\n * @type {boolean}\n */\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const { print, view } = this.usage;\n\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\n /**\n * @ignore\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}\n\nclass OptionalContentConfig {\n #cachedGetHash = null;\n\n #groups = new Map();\n\n #initialHash = null;\n\n #order = null;\n\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n\n this.name = null;\n this.creator = null;\n\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(\n group.id,\n new OptionalContentGroup(renderingIntent, group)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n // The following code must always run *last* in the constructor.\n this.#initialHash = this.getHash();\n }\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\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 // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\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\n setVisibility(id, visible = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n group._setVisible(INTERNAL, !!visible, /* userSet = */ true);\n\n this.#cachedGetHash = null;\n }\n\n setOCGState({ state, preserveRB }) {\n let operator;\n\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\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n group._setVisible(INTERNAL, true);\n break;\n case \"OFF\":\n group._setVisible(INTERNAL, false);\n break;\n case \"Toggle\":\n group._setVisible(INTERNAL, !group.visible);\n break;\n }\n }\n\n this.#cachedGetHash = null;\n }\n\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\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\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return (this.#cachedGetHash = hash.hexdigest());\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2015 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\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport { AbortException, Util } from \"../shared/util.js\";\nimport { setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n * render, i.e. the value returned by the page's `streamTextContent` or\n * `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n * rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nlet _canvasContext = null;\n\nfunction getCtx() {\n if (!_canvasContext) {\n // We don't use an OffscreenCanvas here because we use serif/sans serif\n // fonts with it and they depends on the locale.\n // In Firefox, the <html> element get a lang attribute that depends on what\n // Fluent returns for the locale and the OffscreenCanvas uses the OS locale.\n // Those two locales can be different and consequently the used fonts will\n // be different (see bug 1869001).\n // Ideally, we should use in the text layer the fonts we've in the pdf (or\n // their replacements when they aren't embedded) and then we can use an\n // OffscreenCanvas.\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n document.body.append(canvas);\n _canvasContext = canvas.getContext(\"2d\", { alpha: false });\n }\n\n return _canvasContext;\n}\n\nfunction cleanupTextLayer() {\n _canvasContext?.canvas.remove();\n _canvasContext = null;\n}\n\nfunction getAscent(fontFamily) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n const ctx = getCtx();\n\n const savedFont = ctx.font;\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\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(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).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\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\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\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\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 task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n const fontFamily =\n (task._fontInspectorEnabled && style.fontSubstitution) || style.fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(fontFamily);\n\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\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n if (task._container === task._rootContainer) {\n divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n } else {\n // We're in a marked content span, hence we can't use percents.\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n\n textDivProperties.fontSize = fontHeight;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName =\n style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\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 // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\n\nfunction layout(params) {\n const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n const { style } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const { fontFamily } = style;\n const { canvasWidth, fontSize } = properties;\n\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = ctx.measureText(div.textContent);\n\n if (width > 0) {\n transform = `scaleX(${(canvasWidth * scale) / width})`;\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\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = Promise.withResolvers();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(),\n };\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n\n setLayerDimensions(container, viewport);\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n this._layoutTextParams = null;\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (\n item.type === \"beginMarkedContentProps\" ||\n item.type === \"beginMarkedContent\"\n ) {\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 this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = (this._layoutTextParams.properties =\n this._textDivProperties.get(textDiv));\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n\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\n /**\n * @private\n */\n _render() {\n const { promise, resolve, reject } = Promise.withResolvers();\n let styleCache = Object.create(null);\n\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, reject);\n };\n\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const { items, styles } = this._textContentSource;\n this._processItems(items, styles);\n resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n\n promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n mustRotate = true,\n mustRescale = true,\n}) {\n if (mustRotate) {\n setLayerDimensions(container, { rotation: viewport.rotation });\n }\n\n if (mustRescale) {\n const ctx = getCtx();\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx,\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\nexport {\n cleanupTextLayer,\n renderTextLayer,\n TextLayerRenderTask,\n updateTextLayer,\n};\n","/* Copyright 2012 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\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(\n pdfDataRangeTransport,\n { disableRange = false, disableStream = false }\n ) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n const { length, initialData, progressiveDone, contentDispositionFilename } =\n pdfDataRangeTransport;\n\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n\n if (initialData?.length > 0) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n initialData instanceof Uint8Array &&\n initialData.byteLength === initialData.buffer.byteLength\n ? initialData.buffer\n : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData({ begin, chunk }) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n chunk instanceof Uint8Array &&\n chunk.byteLength === chunk.buffer.byteLength\n ? chunk.buffer\n : new Uint8Array(chunk).buffer;\n\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(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n }\n\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\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\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : 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\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2018 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\nclass GlobalWorkerOptions {\n static #port = null;\n\n static #src = \"\";\n\n /**\n * @type {Worker | null}\n */\n static get workerPort() {\n return this.#port;\n }\n\n /**\n * @param {Worker | null} workerPort - Defines global port for worker process.\n * Overrides the `workerSrc` option.\n */\n static set workerPort(val) {\n if (\n !(typeof Worker !== \"undefined\" && val instanceof Worker) &&\n val !== null\n ) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n\n /**\n * @type {string}\n */\n static get workerSrc() {\n return this.#src;\n }\n\n /**\n * @param {string} workerSrc - A string containing the path and filename of\n * the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent\n * any issues when using the PDF.js library.\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\nexport { GlobalWorkerOptions };\n","/* Copyright 2021 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\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, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\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\n ? event.target.getAttribute(\"xfaOn\")\n : 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, { value: event.target.value });\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 =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\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\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\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\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure to overwrite any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\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\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n // In the rich text context, it's possible to just have a text node without\n // a root element, so we handle this case here (see issue 17215).\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 { textDivs };\n }\n\n const stack = [[root, -1, rootHtml]];\n\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\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n const childHtml = child?.attributes?.xmlns\n ? document.createElementNS(child.attributes.xmlns, name)\n : document.createElement(name);\n\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\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\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\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\nexport { XfaLayer };\n","/* Copyright 2021 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\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\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\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2012 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n AbortException,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationMode,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n ImageKind,\n InvalidPDFException,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n PDFDataRangeTransport,\n PDFWorker,\n version,\n} from \"./display/api.js\";\nimport {\n DOMSVGFactory,\n fetchData,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n noContextMenu,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { ColorPicker } from \"./display/editor/color_picker.js\";\nimport { DrawLayer } from \"./display/draw_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { Outliner } from \"./display/editor/outliner.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n AbortException,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n ColorPicker,\n createValidAbsoluteUrl,\n DOMSVGFactory,\n DrawLayer,\n FeatureTest,\n fetchData,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n ImageKind,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n MissingPDFException,\n noContextMenu,\n normalizeUnicode,\n OPS,\n Outliner,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderTextLayer,\n setLayerDimensions,\n shadow,\n UnexpectedResponseException,\n updateTextLayer,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n","/* Copyright 2018 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\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\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};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\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\n this._onComObjOnMessage = event => {\n const data = event.data;\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\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 cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\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\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\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 {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\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\n return new ReadableStream(\n {\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 {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\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 // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\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 Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\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\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 // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\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\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\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\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 }\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\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 // Ignore any pull after close is called.\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 // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\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 );\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\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\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 );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async #deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall?.promise,\n streamController.pullCall?.promise,\n streamController.cancelCall?.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2014 Opera Software ASA\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 *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\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\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\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\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\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\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\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n return (\n (h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\")\n );\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 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/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\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 OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n};\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};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\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};\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};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\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};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\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};\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};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\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};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\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 // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\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};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\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}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\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}\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}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\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}\n\n// Checks the endianness of the platform.\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}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof navigator !== \"undefined\" &&\n typeof navigator?.platform === \"string\")\n ) {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n return shadow(this, \"platform\", { isMac: false });\n }\n\n static get isCSSRoundSupported() {\n return shadow(\n this,\n \"isCSSRoundSupported\",\n globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n );\n }\n}\n\nconst hexNumbers = Array.from(Array(256).keys(), n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swapped.\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\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\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\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\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\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\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\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\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 [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\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\n // Solve the second degree polynomial to get roots.\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\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\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\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\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\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(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n -c / b,\n minMax\n );\n }\n return;\n }\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(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n (-b + sqrtDelta) / a2,\n minMax\n );\n this.#getExtremumOnCurve(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n (-b - sqrtDelta) / a2,\n minMax\n );\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\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 = [\n Math.min(x0, x3),\n Math.min(y0, y3),\n Math.max(x0, x3),\n Math.max(y0, y3),\n ];\n }\n this.#getExtremum(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n 3 * (-x0 + 3 * (x1 - x2) + x3),\n 6 * (x0 - 2 * x1 + x2),\n 3 * (x1 - x0),\n minMax\n );\n this.#getExtremum(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n 3 * (-y0 + 3 * (y1 - y2) + y3),\n 6 * (y0 - 2 * y1 + y2),\n 3 * (y1 - y0),\n minMax\n );\n return minMax;\n }\n}\n\nconst PDFStringTranslateTable = [\n 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,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n // See section 7.9.2.2 Text String Type.\n // The string can contain some language codes bracketed with 0x0b,\n // so we must remove them.\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\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\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 // ISO Latin 1\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 // eslint-disable-next-line no-empty\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}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\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}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\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) =>\n p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n );\n}\n\nfunction getUuid() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n ) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto?.getRandomValues === \"function\"\n ) {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationPrefix,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getUuid,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayEqual,\n isNodeJS,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1228);\n",""],"names":["makeColorComp","n","Math","floor","max","min","toString","padStart","scaleAndClamp","x","ColorConverters","CMYK_G","_ref","c","y","m","k","G_CMYK","_ref2","g","G_RGB","_ref3","G_rgb","_ref4","G_HTML","_ref5","G","RGB_G","_ref6","r","b","RGB_rgb","color","map","RGB_HTML","join","T_HTML","T_rgb","CMYK_RGB","_ref7","CMYK_rgb","_ref8","CMYK_HTML","components","rgb","slice","RGB_CMYK","_ref9","AnnotationBorderStyleType","AnnotationEditorType","AnnotationPrefix","AnnotationType","FeatureTest","LINE_FACTOR","shadow","unreachable","Util","warn","DOMSVGFactory","getFilenameFromUrl","PDFDateString","setLayerDimensions","AnnotationStorage","XfaLayer","DEFAULT_TAB_INDEX","DEFAULT_FONT_SIZE","GetElementsByNameSet","WeakSet","getRectDims","rect","width","height","AnnotationElementFactory","create","parameters","subtype","data","annotationType","LINK","LinkAnnotationElement","TEXT","TextAnnotationElement","WIDGET","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","POPUP","PopupAnnotationElement","FREETEXT","FreeTextAnnotationElement","LINE","LineAnnotationElement","SQUARE","SquareAnnotationElement","CIRCLE","CircleAnnotationElement","POLYLINE","PolylineAnnotationElement","CARET","CaretAnnotationElement","INK","InkAnnotationElement","POLYGON","PolygonAnnotationElement","HIGHLIGHT","HighlightAnnotationElement","UNDERLINE","UnderlineAnnotationElement","SQUIGGLY","SquigglyAnnotationElement","STRIKEOUT","StrikeOutAnnotationElement","STAMP","StampAnnotationElement","FILEATTACHMENT","FileAttachmentAnnotationElement","AnnotationElement","hasBorder","constructor","isRenderable","ignoreBorder","createQuadrilaterals","arguments","length","undefined","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","annotationStorage","enableScripting","hasJSActions","_fieldObjects","fieldObjects","parent","container","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","str","hasPopupData","page","viewport","document","createElement","setAttribute","id","tabIndex","style","zIndex","popupRef","alternativeText","title","noRotate","classList","add","pageWidth","pageHeight","pageX","pageY","rawDims","rotation","hasOwnCanvas","setRotation","normalizeRect","view","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","SOLID","DASHED","BEVELED","INSET","borderBottomStyle","borderColor","makeHexColor","left","top","angle","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","event","detail","colorType","colorArray","target","setValue","display","hidden","visibility","noView","noPrint","print","focus","setTimeout","preventScroll","userName","readonly","disabled","required","_setRequired","bgColor","fillColor","fgColor","textColor","strokeColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","name","Object","keys","action","_setDefaultPropertiesFromJS","element","storedData","getRawValue","actionName","entries","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","svg","defs","append","clipPath","rectWidth","rectHeight","push","backgroundImage","_createPopup","popup","modificationDate","parentRect","elements","div","render","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","has","getElementsByName","getAttribute","show","maybeShow","hide","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","Array","isArray","_isEditable","_editOnDoubleClick","annotationEditorType","mode","editId","addEventListener","eventBus","dispatch","source","options","isTooltipOnly","link","isBound","url","addLinkAttributes","newWindow","_bindNamedAction","attachment","bindAttachment","attachmentDest","setOCGState","bindSetOCGState","dest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","#setInternalLink","destination","href","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","#bindAttachment","openOrDownloadData","content","filename","#bindSetOCGState","executeSetOCGState","Map","get","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","Set","fieldName","values","field","storage","allIds","type","value","defaultValue","dispatchEvent","Event","ids","image","src","toLowerCase","JSON","stringify","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","platform","isMac","metaKey","ctrlKey","_setEventListener","elementData","baseName","eventName","valueGetter","includes","shift","shiftKey","modifier","focused","relatedTarget","_setEventListeners","names","getter","Blur","Focus","_setBackgroundColor","backgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","fontSize","computedFontSize","BORDER_SIZE","roundToOneDecimal","round","multiLine","abs","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","removeAttribute","hasAppearance","fieldValue","setPropertyOnSiblings","base","key","keyInStorage","getValue","textContent","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","replaceAll","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","match","substring","preventDefault","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","size","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","remove","removeEventListener","isExport","selectedIndex","prototype","filter","call","selectedValues","getItems","multipleSelection","index","i","findIndex","items","clear","insert","selectChild","children","before","item","indices","editable","changeEx","keyDown","PopupElement","open","elementIds","boundKeyDown","bind","boundHide","boundShow","boundToggle","toggle","dateObj","pinned","wasVisible","toDateObject","trigger","flatMap","e","className","baseColor","outlineColor","CSS","supports","BACKGROUND_ENLIGHT","header","dir","date","toLocaleDateString","time","toLocaleTimeString","xfaHtml","html","intent","contents","_formatContents","useParentRect","intersect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","parentWidth","popupLeft","popupTop","p","lines","split","ii","line","createTextNode","#keyDown","altKey","#toggle","#show","isVisible","parseInt","#hide","textPosition","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","points","coordinate","vertices","polylines","inkList","inkLists","file","fillAlpha","test","download","evt","#download","AnnotationLayer","accessibilityManager","annotationCanvasMap","editableAnnotations","appendElement","#appendElement","contentElement","firstChild","moveElementInDOM","params","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","set","rendered","setAnnotationCanvasMap","update","#setAnnotationCanvasMap","canvas","replaceWith","getEditableAnnotations","from","getEditableAnnotation","objectFromMap","AnnotationEditor","MurmurHash3_64","SerializableEmpty","freeze","hash","transfer","modified","onSetModified","onResetModified","onAnnotationEditor","assign","delete","resetModified","obj","entry","val","setModified","_type","getAll","setAll","#setModified","PrintAnnotationStorage","serializable","context","hasBitmap","serialized","serialize","bitmap","hexdigest","editorStats","stats","typeToEditor","telemetryFinalData","getPrototypeOf","counters","count","editor","computeTelemetryFinalData","clone","structuredClone","AbortException","AnnotationMode","assert","getVerbosityLevel","info","InvalidPDFException","isNodeJS","MAX_IMAGE_SIZE_TO_CACHE","MissingPDFException","PasswordException","RenderingIntentFlag","setVerbosityLevel","stringToBytes","UnexpectedResponseException","UnknownErrorException","DOMCanvasFactory","DOMCMapReaderFactory","DOMFilterFactory","DOMStandardFontDataFactory","isDataScheme","isValidFetchUrl","PageViewport","RenderingCancelledException","StatTimer","FontFaceObject","FontLoader","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","CanvasGraphics","cleanupTextLayer","GlobalWorkerOptions","MessageHandler","Metadata","OptionalContentConfig","PDFDataTransportStream","PDFFetchStream","PDFNetworkStream","PDFNodeStream","XfaText","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","getDocument","URL","ArrayBuffer","isView","Error","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","Number","isInteger","worker","PDFWorker","verbosity","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","isEvalSupported","isOffscreenCanvasSupported","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","globalThis","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","baseUrl","isCompressed","standardFontDataFactory","workerParams","port","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","promise","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","Promise","resolve","networkStream","createPDFNetworkStream","isFetchSupported","fetch","Response","all","workerId","messageHandler","transport","WorkerTransport","_transport","send","catch","_capability","reject","sendWithPromise","buffer","window","location","Buffer","Uint8Array","byteLength","isNaN","withResolvers","onPassword","onProgress","destroy","_pendingDestroy","ex","initialData","progressiveDone","contentDispositionFilename","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","chunk","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","renderingIntent","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","getViewport","scale","offsetX","offsetY","dontFlip","viewBox","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","ENABLE","transform","background","optionalContentConfigPromise","pageColors","printAnnotationStorage","intentArgs","cacheKey","abortDelayedCleanup","intentState","streamReaderCancelTimeout","clearTimeout","intentPrint","PRINT","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","error","renderTasks","internalRenderTask","tryCleanup","capability","_abortOperatorList","reason","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","getTextContent","xfa","readableStream","pump","reader","read","done","styles","getReader","getStructTree","_destroy","waitOn","force","completed","cancel","resetStats","success","#tryCleanup","delayed","#abortDelayedCleanup","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","extraDelay","message","curCacheKey","curIntentState","LoopbackPort","listeners","deferred","postMessage","terminate","PDFWorkerUtil","isWorkerDisabled","fakeWorkerId","workerSrc","isSameOrigin","otherUrl","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","_port","_webWorker","_messageHandler","WeakMap","_initializeFromPort","_initialize","on","mainThreadWorkerMessageHandler","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","#mainThreadWorkerMessageHandler","pdfjsWorker","loader","methodPromises","pageCache","pagePromises","passwordCapability","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","#cacheSimpleMethod","cachedPromise","isOpList","DISPLAY","ANY","DISABLE","ANNOTATIONS_DISABLE","ENABLE_FORMS","ANNOTATIONS_FORMS","ENABLE_STORAGE","ANNOTATIONS_STORAGE","OPLIST","hasOwnProperty","terminated","cancelAllRequests","sink","getFullReader","onPull","close","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_ref10","_numPages","htmlForXfa","code","status","details","exception","updatePassword","_ref11","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","finally","imageRef","pageProxy","dataLen","_ref12","imageData","num","gen","results","metadata","cleanupSuccessful","INITIAL_DATA","Symbol","ensureObj","#ensureObj","objId","iterator","RenderTask","onContinue","form","canvasInUse","_ref13","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_ref14","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","CMapCompressionType","BaseFilterFactory","addFilter","maps","addHCMFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","BaseCanvasFactory","_createCanvas","getContext","reset","canvasAndContext","BaseCMapReaderFactory","compressionType","BINARY","NONE","_fetchData","BaseStandardFontDataFactory","BaseSVGFactory","skipDimensions","_createSVG","FormatError","getCurrentTransform","PathType","FILL","STROKE","SHADING","applyBoundingBox","ctx","bbox","region","Path2D","clip","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","translate","baseTransform","fillStyle","fill","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p1","p2","p3","c1","c2","c3","coords","colors","bytes","rowSize","tmp","x1","scaleX","y1","scaleY","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","j","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","singularValueDecompose2dScale","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","xstep","ystep","paintType","tilingType","createPatternCanvas","x0","y0","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","save","clipBbox","step","realOutputSize","maxSize","bboxWidth","bboxHeight","updateRectMinMax","endPath","strokeStyle","cssColor","ImageKind","convertToRGBA","kind","GRAYSCALE_1BPP","convertBlackAndWhiteToRGBA","RGB_24BPP","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","isLittleEndian","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","Uint32Array","destPos","elem","len32","src32","s1","s2","s3","jj","grayToRGBA","FONT_IDENTITY_MATRIX","IDENTITY_MATRIX","OPS","TextRenderingMode","getCurrentTransformInverse","PixelsPerInch","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","restore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","moveTo","__originalLineTo","lineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","closePath","__originalBeginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","a","d","f","ctxSetTransform","ctxResetTransform","ctxRotate","rule","cp1x","cp1y","cp2x","cp2y","CachedCanvases","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","hypot","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","lineSize","pos","mask","sum","steps","Int32Array","path","p0","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","applyTransform","minX","maxX","p4","updateScalingPathMinMax","minMax","scaleMinMax","updateCurvePathMinMax","box","bezierBoundingBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","putBinaryImageData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","RGBA_32BPP","subarray","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","getImageData","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","startsWith","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","Date","now","fnId","breakIt","dependency","apply","depObjId","objsPool","restoreInitialState","#restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","#drawFilter","hcmFilterId","foreground","savedFilter","_scaleImage","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","getAxialAlignedBoundingBox","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","setLineWidth","setLineCap","setLineJoin","setMiterLimit","limit","setDash","dashArray","dashPhase","setRenderingIntent","setFlatness","flatness","setGState","states","setFont","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","constructPath","ops","args","startX","startY","isScalingMatrix","minMaxForBezier","rectangle","xw","yh","curveTo","curveTo2","curveTo3","stroke","consumePath","rescaleAndStroke","closeStroke","needRestore","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","eoClip","beginText","endText","paths","pendingTextPaths","addToPath","setCharSpacing","spacing","setWordSpacing","setHScale","setLeading","fontRefName","fontObj","fontDirection","isType3Font","loadedName","typeface","systemFontInfo","css","fallbackName","bold","italic","browserFontSize","setTextRenderingMode","setTextRise","rise","moveText","setLeadingMoveText","setTextMatrix","nextLine","paintChar","character","patternTransform","fillStrokeMode","FILL_STROKE_MASK","isAddToPathSet","ADD_TO_PATH_FLAG","missingFile","getPathGenerator","FILL_STROKE","fillText","strokeText","isFontSubpixelAAEnabled","showText","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","offset","scaledAccentY","charWidth","isTextInvisible","INVISIBLE","spacingLength","charProcOperatorList","operatorListId","transformed","setCharWidth","xWidth","yWidth","setCharWidthAndBounds","llx","lly","urx","ury","getColorN_Pattern","_getPattern","setStrokeColorN","setFillColorN","setStrokeRGBColor","setFillRGBColor","shadingFill","inv","beginInlineImage","beginImageData","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","endGroup","currentMtx","beginAnnotation","canvasWidth","canvasHeight","annotationCanvas","savedCtx","endAnnotation","paintImageMaskXObject","compiled","paintImageMaskXObjectRepeat","skewX","skewY","positions","trans","paintImageMaskXObjectGroup","images","paintImageXObject","paintInlineImageXObject","paintImageXObjectRepeat","w","h","paintInlineImageXObjectGroup","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","paintSolidColorImageMask","markPoint","tag","markPointProps","beginMarkedContent","visible","beginMarkedContentProps","isContentVisible","endMarkedContent","beginCompat","endCompat","isEmpty","absDet","normX","normY","getScaleForStroking","getTransform","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","BaseException","SVG_NS","PDF","_cache","_defs","_hcmCache","#cache","hcmCache","#hcmCache","#defs","contain","position","createElementNS","body","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","createFilter","addTransferMapConversion","fgRGB","getRGB","bgRGB","table","addGrayConversion","getSteps","start","arr","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","parentNode","#addGrayConversion","feColorMatrix","#createFilter","appendFeFunc","#appendFeFunc","feComponentTransfer","func","feFunc","#addTransferMapConversion","rTable","gTable","bTable","#getRGB","getComputedStyle","getPropertyValue","_document","fetchData","response","ok","statusText","arrayBuffer","blob","json","text","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","cMapData","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","msg","trim","isPdfFile","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","decodeURIComponent","started","times","outBuf","longest","padEnd","protocol","noContextMenu","deprecated","console","log","pdfDateStringRegex","input","RegExp","matches","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","getColorValues","span","computedColor","invertSelf","mustFlip","mustRotate","useRound","isCSSRoundSupported","widthStr","heightStr","DrawLayer","mapping","toUpdate","setParent","root","_svgFactory","setBox","#setBox","createSVG","#createSVG","createClipPath","#createClipPath","pathId","clipPathId","clipPathUse","highlight","outlines","opacity","isPathUpdatable","free","toSVGPath","use","highlightOutline","maskId","use1","use2","cloneNode","finalizeLine","updateBox","updateLine","removeFreeHighlight","updatePath","changeColor","changeOpacity","addClass","removeClass","AnnotationEditorParamsType","AnnotationEditorUIManager","bindEvents","KeyboardManager","EOL_PATTERN","FreeTextEditor","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","boundEditorDivPaste","editorDivPaste","editorDivId","_freeTextDefaultContent","_internalPadding","_defaultColor","_defaultFontSize","_keyboardManager","proto","arrowChecker","self","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","commitOrRemove","bubbles","_translateEmpty","checker","_editorType","_defaultLineColor","initialize","l10n","uiManager","strings","documentElement","parseFloat","updateDefaultParams","FREETEXT_SIZE","FREETEXT_COLOR","updateParams","updateFontSize","updateColor","defaultPropertiesToUpdate","propertiesToUpdate","#updateFontSize","setFontsize","editorDiv","parentScale","setEditorDimensions","savedFontsize","addCommands","cmd","undo","post","_uiManager","updateUI","mustExec","overwriteIfSameType","keepUndo","#updateColor","col","savedColor","translateSelectedEditors","getInitialTranslation","rebuild","isAttachedToDOM","enableEditMode","isInEditMode","setEditingState","updateToolbar","overlayDiv","contentEditable","_isDraggable","disableEditMode","isEditing","focusin","_focusEventsAllowed","onceAdded","_initialOptions","isCentered","center","innerText","extractText","#extractText","normalize","child","childNodes","getNodeContent","#setEditorDimensions","parentHeight","parentDimensions","getBoundingClientRect","currentLayer","savedDisplay","parentRotation","fixAndSetPosition","commit","savedText","newText","trimEnd","setText","setContent","shouldGetKeyboardEvents","enterInEditMode","dblclick","keydown","disableEditing","enableEditing","baseX","baseY","_l10nPromise","annotationElementId","pageTranslationToScreen","pageDimensions","pageTranslation","posX","posY","setAt","#getNodeContent","node","nodeType","Node","TEXT_NODE","nodeValue","clipboardData","types","paste","deserializeContent","selection","getSelection","rangeCount","deleteFromDocument","getRangeAt","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","parentElement","newRange","Range","beforeLength","reduce","acc","setStart","setEnd","removeAllRanges","addRange","#setContent","replaceChildren","serializeContent","#serializeContent","#deserializeContent","contentDiv","deserialize","deleted","isForCopying","padding","getRect","_colorManager","convert","structTreeParentId","_structTreeParentId","hasElementChanged","#hasElementChanged","_hasBeenMoved","some","FreeOutliner","Outliner","ColorPicker","HighlightEditor","anchorNode","anchorOffset","boxes","colorPicker","focusOutlines","focusNode","focusOffset","highlightDiv","highlightOutlines","isFreeHighlight","boundKeydown","lastPoint","outlineId","thickness","methodOfCreation","_defaultOpacity","_defaultThickness","_freeHighlightId","_freeHighlight","_freeHighlightClipId","_moveCaret","highlightId","createFreeOutlines","addToDrawLayer","createOutlines","telemetryInitialData","highlightColorNames","numberOfColors","#createOutlines","outliner","getOutlines","outlinerForOutline","direction","#createFreeOutlines","extraThickness","getNewOutline","drawLayer","rotateBbox","highlightColors","next","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","translateInPage","toolbarPosition","HIGHLIGHT_COLOR","updateThickness","HIGHLIGHT_FREE","_reportTelemetry","#updateThickness","savedThickness","setThickness","th","changeThickness","INK_THICKNESS","addEditToolbar","toolbar","addColorPicker","getRotation","getBaseTranslation","addUndoableEditor","cleanDrawLayer","mustBeSelected","contains","_isVisible","select","#changeThickness","setDims","#cleanDrawLayer","#addToDrawLayer","#rotateBbox","pointerover","pointerleave","#keydown","unselect","setCaret","#setCaret","setPosition","_mustFixPosition","#getRotation","serializeBoxes","#serializeBoxes","sx","sy","serializeOutlines","#serializeOutlines","startHighlighting","isLTR","textLayer","layerX","layerY","pointerMove","highlightMove","pointerDownOptions","capture","passive","pointerDown","stopPropagation","pointerUpCallback","endHighlight","#highlightMove","#endHighlight","createAndAddNewEditor","canCreateNewEmptyEditor","opacityToHex","InkEditor","baseHeight","baseWidth","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","canvasContextMenuTimeoutId","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","bezierPath2D","allRawPaths","currentPath","scaleFactor","translationX","translationY","_willKeepAspectRatio","INK_COLOR","INK_OPACITY","updateOpacity","fitToContent","redraw","#updateOpacity","setOpacity","savedOpacity","createCanvas","createObserver","setCanvasDims","disconnect","removeShouldRescale","addShouldRescale","onScaleChanging","setDimensions","getInitialBBox","#getInitialBBox","setStroke","#setStroke","startDrawing","#startDrawing","drawPoints","draw","#draw","lastX","lastY","at","path2D","makeBezierCurve","#endPath","stopDrawing","#stopDrawing","bezier","generateBezierPoints","xy","#drawPoints","lastPoints","xMin","xMax","yMin","yMax","#makeBezierCurve","prevX","prevY","#generateBezierPoints","bezierPoints","control1","control2","#redraw","updateTransform","setInForeground","addInkEditorIfNeeded","moveInDOM","button","#endDrawing","addToAnnotationStorage","setInBackground","#createCanvas","#createObserver","ResizeObserver","contentRect","observe","isResizable","setAspectRatio","#setCanvasDims","roundedWidth","roundedHeight","setScaleFactor","fixDims","#setScaleFactor","getPadding","scaleFactorW","scaleFactorH","#updateTransform","buildPath2D","#buildPath2D","first","toPDFCoordinates","#toPDFCoordinates","fromPDFCoordinates","#fromPDFCoordinates","serializePaths","#serializePaths","s","shiftX","shiftY","p10","p11","p20","p21","p30","p31","p40","p41","getBbox","#getBbox","#getPadding","#fitToContent","firstTime","MIN_SIZE","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","bitmapFileName","resizeTimeoutId","isSvg","hasBeenAddedInUndoStack","supportedTypes","supportedTypesStr","isHandlingMimeForPasting","mime","pasteEditor","getAsFile","getBitmapFetched","#getBitmapFetched","fromId","getBitmapDone","#getBitmapDone","enableWaiting","getBitmap","#getBitmap","imageManager","getFromId","getFromUrl","getFromFile","accept","files","click","deleteId","addAltTextButton","MAX_RATIO","factor","drawBitmap","#setDimensions","TIME_TO_WAIT","scaleBitmap","#scaleBitmap","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","OffscreenCanvas","transferToImageBitmap","#drawBitmap","hasMLManager","hasAltText","convertToBlob","fileReader","FileReader","onload","result","mlGuess","service","altText","output","altTextData","decorative","readAsDataURL","hcmFilter","getImageForAltText","serializeBitmap","#serializeBitmap","toUrl","getSvgUrl","toDataURL","accessibilityData","isValidId","alt","stamps","area","prevData","AnnotationEditorLayer","allowClick","annotationLayer","boundPointerup","boundPointerdown","boundTextLayerPointerDown","editorFocusTimeoutId","editors","hadPointerDown","isCleaningUp","isDisabling","_initialized","editorTypes","editorType","registerEditorTypes","addLayer","isInvisible","getMode","updateMode","disableTextSelection","togglePointerEvents","toggleAnnotationLayerPointerEvents","disableClick","enableTextSelection","enableClick","hasTextLayer","isCommitting","enable","annotationElementIds","editables","isDeletedAnnotationElement","addOrRebuild","disable","hiddenAnnotationIds","setActiveEditor","currentActive","getActive","textLayerPointerDown","#textLayerPointerDown","unselectAll","showAllEditors","once","pointerdown","pointerup","attach","removeDeletedAnnotationElement","detach","removePointerInTextLayer","addDeletedAnnotationElement","removeEditor","changeParent","deleteAnnotationElement","addEditor","moveEditorInDOM","needsToBeRebuilt","getNextId","getId","currentEditorType","#currentEditorType","createNewEditor","#createNewEditor","getCenterPoint","#getCenterPoint","innerWidth","innerHeight","addNewEditor","setSelected","toggleSelected","isSelected","findNewParent","findParent","removeLayer","#cleanup","getEditors","oldRotation","viewParameters","realScale","boundPointerDown","buttonSwatch","defaultColor","dropdown","dropdownWasFromKeyboard","isMainColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","_eventBus","renderButton","openDropdown","swatch","renderMainDropdown","getDropdownRoot","#getDropdownRoot","role","colorSelect","#colorSelect","isDropdownVisible","nextSibling","#openDropdown","hideDropdown","#pointerDown","#isDropdownVisible","focusVisible","AltText","altTextDecorative","altTextButton","altTextTooltip","altTextTooltipTimeout","altTextWasFromKeyBoard","l10nPromise","onClick","editAltText","setState","finish","#setState","tooltip","DELAY_TO_SHOW_TOOLTIP","ColorManager","EditorToolbar","allResizerDivs","keepAspectRatio","resizersDiv","savedDimensions","boundFocusin","boundFocusout","focusout","editToolbar","focusedResizerName","hasBeenClicked","initialPosition","isResizerEnabledForKeyboard","moveInDOMTimeout","prevDragX","prevDragY","telemetryTimeouts","isDraggable","_zIndex","_borderLineWidth","_telemetryTimeout","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","pageRotation","getHexCode","fakeEditor","FakeEditor","_value","isEnterHandled","stopResizing","closest","isMultipleSelection","screenToPageTranslation","#translate","scrollIntoView","block","drag","bx","by","toFixed","rotatePoint","#rotatePoint","getRotationMatrix","#getRotationMatrix","scaledWidth","scaledHeight","widthPercent","endsWith","heightPercent","createResizers","#createResizers","classes","resizerPointerdown","#resizerPointerdown","boundResizerPointermove","resizerPointermove","savedDraggable","pointerMoveOptions","savedX","savedY","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","addResizeToUndoStack","#addResizeToUndoStack","newX","newY","#resizerPointermove","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","altTextFinish","removeEditToolbar","getClientDimensions","maxWidth","maxHeight","setUpDragSession","selectOnPointerEvent","#selectOnPointerEvent","#setUpDragSession","pointerMoveCallback","clientX","clientY","dragSelectedEditors","endDragSession","_setParentAndPosition","getRectInCurrentCoords","_angle","timeout","makeResizable","boundResizerKeydown","resizerKeydown","boundResizerBlur","resizerBlur","resizerFocus","firstPosition","nextFirstPosition","setResizerTabIndex","stopImmediatePropagation","#resizerKeydown","#resizerBlur","#resizerFocus","#setResizerTabIndex","#stopResizing","aspectRatio","mustWait","verticalEdges","intervals","innerMargin","NUMBER_OF_DIGITS","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","edge","sort","outlineVerticalEdges","breakEdge","#getOutlines","edges","allEdges","edge1","edge2","outline","lastPointX","lastPointY","HighlightOutline","binarySearch","#binarySearch","array","middle","#insert","splice","#remove","#breakEdge","y4","Outline","_rotation","FreeHighlightOutline","polygon","bottom","last","Float64Array","min_dist","MIN_DIST","MIN_DIFF","MIN","getLastCoords","#getLastCoords","lastTop","lastBottom","diffX","diffY","diffD","K","nX","nY","thX","thY","atan2","PI","lastTopX","lastTopY","lastBottomX","lastBottomY","N","computeMinMax","rescale","rescaleAndSwap","#rescale","#rescaleAndSwap","#computeMinMax","ltrCallback","buttons","insetInlineEnd","addDeleteButton","focusIn","#focusIn","focusOut","#focusOut","addListenersToElement","#addListenersToElement","#addDeleteButton","divider","#divider","HighlightToolbar","#render","addHighlightButton","getLastPoint","#getLastPoint","#addHighlightButton","highlightSelection","AnnotationEditorPrefix","getUuid","IdManager","ImageManager","baseId","_isSVGFittingCanvas","Image","decode","#get","rawData","refCounter","mustRemoveAspectRatioPromise","imageElement","imagePromise","svgUrl","onerror","createImageBitmap","lastModified","CommandManager","commands","locked","redo","hasSomethingToUndo","hasSomethingToRedo","callbacks","allKeys","isMacKey","#serialize","_colorsMapping","matchMedia","RGB","every","activeEditor","allEditors","allLayers","altTextManager","commandManager","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorsToRescale","enableHighlightFloatingButton","focusMainContainerTimeoutId","highlightWhenShiftUp","highlightToolbar","idManager","isEnabled","isWaiting","lastActiveElement","mainHighlightColorPicker","mlManager","selectedEditors","selectedTextNode","showAllStates","boundBlur","blur","boundFocus","boundCopy","copy","boundCut","cut","boundPaste","boundKeyup","keyup","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","boundSelectionChange","selectionChange","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","hasSelectedText","translation","translationTimeoutId","viewer","tagName","hasSomethingToControl","textInputChecker","_self","el","HTMLInputElement","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","pdfDocument","_on","addSelectionListener","addKeyboardManager","isShiftKeyDown","removeKeyboardManager","removeFocusManager","_off","removeSelectionListener","guess","pair","reverse","setMainHighlightColorPicker","focusMainContainer","disableUserSelect","pagesRotation","getAnchorElementForSelection","#getAnchorElementForSelection","isCollapsed","anchorElement","getSelectionBoxes","empty","displayHighlightToolbar","#displayHighlightToolbar","#selectionChange","dispatchUpdateStates","onSelectEnd","#onSelectEnd","#addSelectionListener","#removeSelectionListener","addFocusManager","#addFocusManager","#removeFocusManager","hasSelection","lastEditor","#addKeyboardManager","#removeKeyboardManager","addCopyPasteListeners","#addCopyPasteListeners","removeCopyPasteListeners","#removeCopyPasteListeners","addEditListeners","removeEditListeners","setData","parse","newEditors","deserializedEditor","addEditorToLayer","selectEditors","isEditorHandlingKeyboard","#dispatchUpdateStates","hasChanged","dispatchUpdateUI","#dispatchUpdateUI","getLayer","isFromKeyboard","disableAll","enableAll","CREATE","HIGHLIGHT_SHOW_ALL","updateButton","state","#enableAll","#disableAll","getEditor","#addEditorToLayer","lastSelectedEditor","#lastSelectedEditor","ed","firstSelectedEditor","#isEmpty","#selectEditors","noCommit","totalX","totalY","savedPageIndex","newPageIndex","mustBeAddedInUndoStack","move","isActive","commonAncestorContainer","rotator","collapsed","getClientRects","createResponseStatusError","extractFilenameFromHeader","validateRangeRequestCapabilities","validateResponseStatus","createFetchOptions","headers","abortController","method","signal","credentials","redirect","createHeaders","Headers","getArrayBuffer","isHttp","_fullRequestReader","_rangeRequestReaders","_progressiveDataLength","_loaded","PDFFetchStreamReader","PDFFetchStreamRangeReader","stream","_stream","_reader","_filename","_withCredentials","_contentLength","_headersCapability","_disableRange","_rangeChunkSize","_abortController","AbortController","_isStreamingSupported","_isRangeSupported","_headers","getResponseHeader","allowRangeRequests","suggestedLength","_readCapability","bytesToString","string32","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","_inspectFont","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","navigator","userAgent","completeRequest","otherRequest","_loadTestFont","testFont","atob","int32","charCodeAt","spliceString","chunk1","chunk2","called","isFontReady","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","cssFontInfo","weight","fontWeight","italicAngle","mimetype","cmds","jsBuf","Function","metadataMap","parsedData","getRaw","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","prop","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","indexOf","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_onProgress","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_requests","_done","_storedError","fullRequestXhrId","fullRequestXhr","requestCapability","lengthComputable","_requestId","_queuedChunk","_close","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","replace","charset","hex","String","fromCharCode","returnValues","contentEncoding","fs","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","BaseRangeReader","createRequestOptions","auth","hostname","handleResponse","statusCode","_request","_httpHeaders","promises","lstat","stat","createReadStream","path2d","checkDOMMatrix","checkPath2D","CanvasRenderingContext2D","applyPath2DToCanvasRenderingContext","readFile","INTERNAL","OptionalContentGroup","isDisplay","isPrint","userSet","usage","viewState","printState","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","#evaluateVisibilityExpression","operator","expression","policy","setVisibility","preserveRB","hasInitialVisibility","getOrder","getGroups","getGroup","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_ASCENT","ascentCache","_canvasContext","getCtx","getAscent","cachedAscent","savedFont","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","fontName","_fontInspectorEnabled","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","ReadableStream","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","br","_render","renderTextLayer","updateTextLayer","mustRescale","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_rangeReaders","_onReceiveData","_onProgressiveDone","_enqueue","found","_begin","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_headersReady","_end","requestsCapability","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","rootHtml","isNotForRichText","rootDiv","shouldBuildText","stack","childHtml","xmlns","querySelectorAll","walk","createValidAbsoluteUrl","normalizeUnicode","PasswordResponses","PermissionFlag","VerbosityLevel","pdfjsVersion","pdfjsBuild","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","processStreamMessage","cbSourceName","cbTargetName","createStreamSink","handler","ah","transfers","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","#createStreamSink","streamSink","isCancelled","lastDesiredSize","sinkCapability","#processStreamMessage","streamController","deleteStreamController","#deleteStreamController","allSettled","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","process","versions","nw","electron","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SAVE","RESIZE","FREETEXT_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","SOUND","MOVIE","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","ERRORS","WARNINGS","INFOS","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setFillColor","setStrokeGray","setFillGray","setStrokeCMYKColor","setFillCMYKColor","endInlineImage","paintXObject","NEED_PASSWORD","INCORRECT_PASSWORD","level","cond","_isValidProtocol","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","nonSerializable","defineProperty","enumerable","configurable","writable","BaseExceptionClosure","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","objectSize","buffer8","view32","hexNumbers","temp","m1","m2","xt","yt","transpose","sqrt","rect1","rect2","xLow","xHigh","yLow","yHigh","getExtremumOnCurve","#getExtremumOnCurve","t","mt","tt","ttt","getExtremum","#getExtremum","delta","sqrtDelta","a2","PDFStringTranslateTable","stringToPDFString","decoded","charCode","charAt","escape","utf8StringToString","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","_","crypto","randomUUID","buf","getRandomValues","random"],"sourceRoot":""}
\No newline at end of file