@nutrient-sdk/viewer 1.9.0-nightly.20251110 → 1.9.0-nightly.20251111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/nutrient-viewer-lib/{chunk-848-94b161130fd92b0c.js → chunk-848-0a0194b2c0b81dd9.js} +1 -1
  2. package/dist/nutrient-viewer-lib/{chunk-core-worker-329eafb15728c35e.js → chunk-core-worker-418877f58a60b274.js} +2 -2
  3. package/dist/nutrient-viewer-lib/{chunk-gdpicture-d8389b36e14c85e8.js → chunk-gdpicture-b5dc7ab233624af2.js} +1 -1
  4. package/dist/nutrient-viewer-lib/{chunk-gdpicture-worker-5ec85b61c879b03d.js → chunk-gdpicture-worker-f5eeae6dfe205343.js} +2 -2
  5. package/dist/nutrient-viewer-lib/{chunk-lazy-sha-c8532885319f291a.js → chunk-lazy-sha-e043dc7a4246d507.js} +1 -1
  6. package/dist/nutrient-viewer-lib/{chunk-locale-ar-e1354197a7b42c48.js → chunk-locale-ar-f653484a3867914c.js} +1 -1
  7. package/dist/nutrient-viewer-lib/{chunk-locale-cs-1eeb4347ad41ca73.js → chunk-locale-cs-825e450ca52e9e30.js} +1 -1
  8. package/dist/nutrient-viewer-lib/{chunk-locale-cy-37ba810d4e57e73f.js → chunk-locale-cy-b9b9b7bd20284c47.js} +1 -1
  9. package/dist/nutrient-viewer-lib/{chunk-locale-da-5cd2462157eca724.js → chunk-locale-da-4f7b352c947805f9.js} +1 -1
  10. package/dist/nutrient-viewer-lib/{chunk-locale-de-51b6d43a369230f8.js → chunk-locale-de-e7a15d4de84a130f.js} +1 -1
  11. package/dist/nutrient-viewer-lib/{chunk-locale-el-ec73e1c97ef1f74d.js → chunk-locale-el-ca05f2526b69f4b8.js} +1 -1
  12. package/dist/nutrient-viewer-lib/{chunk-locale-en-GB-f15a5f68450b475a.js → chunk-locale-en-GB-4f73fe35556c8acd.js} +1 -1
  13. package/dist/nutrient-viewer-lib/{chunk-locale-es-f598b7fb96e3ebc8.js → chunk-locale-es-0ce835f629c99550.js} +1 -1
  14. package/dist/nutrient-viewer-lib/{chunk-locale-fi-df03bd05b00618b7.js → chunk-locale-fi-7566b0277a88401a.js} +1 -1
  15. package/dist/nutrient-viewer-lib/{chunk-locale-fr-CA-13c01f61516329ff.js → chunk-locale-fr-CA-734503a9ef3b0bdd.js} +1 -1
  16. package/dist/nutrient-viewer-lib/{chunk-locale-fr-3987fb6d90abfb99.js → chunk-locale-fr-ef92c2633662ad65.js} +1 -1
  17. package/dist/nutrient-viewer-lib/{chunk-locale-he-e1ad98bf777400a6.js → chunk-locale-he-bb0e239c3e370a9f.js} +1 -1
  18. package/dist/nutrient-viewer-lib/{chunk-locale-hr-c758f1eb21f1bf15.js → chunk-locale-hr-de83b5bcfd997a7a.js} +1 -1
  19. package/dist/nutrient-viewer-lib/{chunk-locale-id-9ad11857e2354c0f.js → chunk-locale-id-24261c19b798fa62.js} +1 -1
  20. package/dist/nutrient-viewer-lib/{chunk-locale-it-42db1f9f5d23fb2f.js → chunk-locale-it-a651dd210b0e6c37.js} +1 -1
  21. package/dist/nutrient-viewer-lib/{chunk-locale-ja-b382b369b2e7b003.js → chunk-locale-ja-c57c64be47d458c3.js} +1 -1
  22. package/dist/nutrient-viewer-lib/{chunk-locale-ko-f5ec7ee41fabfcb2.js → chunk-locale-ko-52fa879e6d2154b7.js} +1 -1
  23. package/dist/nutrient-viewer-lib/{chunk-locale-ms-3d0a1c7a86993ff1.js → chunk-locale-ms-c75dde22187c8d59.js} +1 -1
  24. package/dist/nutrient-viewer-lib/{chunk-locale-nb-NO-cdb8cec4508e7d8a.js → chunk-locale-nb-NO-58f4f108e12981d9.js} +1 -1
  25. package/dist/nutrient-viewer-lib/{chunk-locale-nl-7ad6f4536f4e9cff.js → chunk-locale-nl-236353309ae53f31.js} +1 -1
  26. package/dist/nutrient-viewer-lib/{chunk-locale-pl-d3d03949ac14aa47.js → chunk-locale-pl-45fbd6b226015e0f.js} +1 -1
  27. package/dist/nutrient-viewer-lib/{chunk-locale-pt-PT-ad22aeaef296e9b5.js → chunk-locale-pt-PT-2a383b8567a76344.js} +1 -1
  28. package/dist/nutrient-viewer-lib/{chunk-locale-pt-8f45400b614e2125.js → chunk-locale-pt-ddf13c0d41efdaa2.js} +1 -1
  29. package/dist/nutrient-viewer-lib/{chunk-locale-ru-3b89b906b5fa431f.js → chunk-locale-ru-bed3b9d720cf3f0e.js} +1 -1
  30. package/dist/nutrient-viewer-lib/{chunk-locale-sk-38e0a9334b7f5521.js → chunk-locale-sk-8dc853f5af41da4f.js} +1 -1
  31. package/dist/nutrient-viewer-lib/{chunk-locale-sl-670b49d5eab45fc6.js → chunk-locale-sl-ba8680d658841082.js} +1 -1
  32. package/dist/nutrient-viewer-lib/{chunk-locale-sv-956e69505eedb56e.js → chunk-locale-sv-447ffb616cbad506.js} +1 -1
  33. package/dist/nutrient-viewer-lib/{chunk-locale-th-48cbe64b56481f92.js → chunk-locale-th-8f944ab78ca2e01f.js} +1 -1
  34. package/dist/nutrient-viewer-lib/{chunk-locale-tr-836ca680caa06679.js → chunk-locale-tr-cc89a4b7b2ca225a.js} +1 -1
  35. package/dist/nutrient-viewer-lib/{chunk-locale-uk-9b06152ca17e2a48.js → chunk-locale-uk-f87cd8519abaed77.js} +1 -1
  36. package/dist/nutrient-viewer-lib/{chunk-locale-zh-Hans-a3d7c3ef2702c0de.js → chunk-locale-zh-Hans-f278f910c80f71d3.js} +1 -1
  37. package/dist/nutrient-viewer-lib/{chunk-locale-zh-Hant-7be4e4097f131352.js → chunk-locale-zh-Hant-ee5c9cba7251b314.js} +1 -1
  38. package/dist/nutrient-viewer-lib/{chunk-offscreen-renderer-worker-534d600c82af9782.js → chunk-offscreen-renderer-worker-68eb2c350abe2a98.js} +2 -2
  39. package/dist/nutrient-viewer-lib/{chunk-server-2d3db4edb32f1448.js → chunk-server-ad671f1f4d44cbba.js} +2 -2
  40. package/dist/nutrient-viewer-lib/{chunk-server-instant-1aa32d2c454a4383.js → chunk-server-instant-b7fd611e0ebc8538.js} +1 -1
  41. package/dist/nutrient-viewer-lib/{chunk-server-rest-fdf3440072dc48e7.js → chunk-server-rest-a7c5b3ed8dfd89f7.js} +1 -1
  42. package/dist/nutrient-viewer-lib/{chunk-standalone-4eeb1ee0b7042878.js → chunk-standalone-e582b3446087b363.js} +1 -1
  43. package/dist/nutrient-viewer-lib/{chunk-standalone-server-a54df627abf78f76.js → chunk-standalone-server-75aab9733d57c0fc.js} +1 -1
  44. package/dist/nutrient-viewer-lib/core-worker.js +2 -2
  45. package/dist/nutrient-viewer-lib/dark-402cc98d3d69bff8.css +1 -1
  46. package/dist/nutrient-viewer-lib/gdpicture-worker.js +1 -1
  47. package/dist/nutrient-viewer-lib/{nutrient-viewer-1.9.0-d4bdcad.css → nutrient-viewer-1.9.0-250bd04.css} +1 -1
  48. package/dist/nutrient-viewer-lib/{nutrient-viewer-52ec4ec6aa25cbfa.wasm → nutrient-viewer-56efe3219296092b.wasm} +0 -0
  49. package/dist/nutrient-viewer-lib/{nutrient-viewer-52d8e5da5c65466a.wasm.js → nutrient-viewer-b9e3146430de22e9.wasm.js} +2 -2
  50. package/dist/nutrient-viewer-lib/offscreen-render-worker.js +1 -1
  51. package/dist/nutrient-viewer.js +2 -2
  52. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)
3
3
  *
4
4
  * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.
5
5
  *
@@ -10,4 +10,4 @@
10
10
  *
11
11
  * PSPDFKit uses several open source third-party components: https://www.nutrient.io/legal/acknowledgements/web-acknowledgements/
12
12
  */
13
- "use strict";(globalThis.webpackChunkNutrientViewer=globalThis.webpackChunkNutrientViewer||[]).push([[861],{22292:(e,t,i)=>{i.d(t,{default:()=>n});var s=i(55512),r=i.n(s);function n(){return r()('/*!\n * Nutrient Web SDK 1.9.0-d4bdcad (https://www.nutrient.io/sdk/web)\n *\n * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.\n *\n * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW\n * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.\n * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.\n * This notice may not be removed from this file.\n *\n * PSPDFKit uses several open source third-party components: https://www.nutrient.io/legal/acknowledgements/web-acknowledgements/\n */(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t){var i=function(t,i){if("object"!=e(t)||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var r=s.call(t,i||"default");if("object"!=e(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==e(i)?i:i+""}function i(e,i,s){return(i=t(i))in e?Object.defineProperty(e,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[i]=s,e}const s=Symbol("Comlink.proxy"),r=Symbol("Comlink.endpoint"),n=Symbol("Comlink.releaseProxy"),o=Symbol("Comlink.finalizer"),a=Symbol("Comlink.thrown"),h=e=>"object"==typeof e&&null!==e||"function"==typeof e,l=new Map([["proxy",{canHandle:e=>h(e)&&e[s],serialize(e){const{port1:t,port2:i}=new MessageChannel;return c(e,t),[i,[i]]},deserialize:e=>(e.start(),u(e))}],["throw",{canHandle:e=>h(e)&&a in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(new Error(e.value.message),e.value);throw e.value}}]]);function c(e,t=globalThis,i=["*"]){t.addEventListener("message",(function r(n){if(!n||!n.data)return;if(!function(e,t){for(const i of e){if(t===i||"*"===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}return!1}(i,n.origin))return void console.warn(`Invalid origin \'${n.origin}\' for comlink proxy`);const{id:h,type:l,path:u}=Object.assign({path:[]},n.data),p=(n.data.argumentList||[]).map(b);let f;try{const t=u.slice(0,-1).reduce(((e,t)=>e[t]),e),i=u.reduce(((e,t)=>e[t]),e);switch(l){case"GET":f=i;break;case"SET":t[u.slice(-1)[0]]=b(n.data.value),f=!0;break;case"APPLY":f=i.apply(t,p);break;case"CONSTRUCT":f=function(e){return Object.assign(e,{[s]:!0})}(new i(...p));break;case"ENDPOINT":{const{port1:t,port2:i}=new MessageChannel;c(e,i),f=function(e,t){return y.set(e,t),e}(t,[t])}break;case"RELEASE":f=void 0;break;default:return}}catch(e){f={value:e,[a]:0}}Promise.resolve(f).catch((e=>({value:e,[a]:0}))).then((i=>{const[s,n]=T(i);t.postMessage(Object.assign(Object.assign({},s),{id:h}),n),"RELEASE"===l&&(t.removeEventListener("message",r),d(t),o in e&&"function"==typeof e[o]&&e[o]())})).catch((e=>{const[i,s]=T({value:new TypeError("Unserializable return value"),[a]:0});t.postMessage(Object.assign(Object.assign({},i),{id:h}),s)}))})),t.start&&t.start()}function d(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function u(e,t){const i=new Map;return e.addEventListener("message",(function(e){const{data:t}=e;if(!t||!t.id)return;const s=i.get(t.id);if(s)try{s(t)}finally{i.delete(t.id)}})),w(e,i,[],t)}function p(e){if(e)throw new Error("Proxy has been released and is not useable")}function f(e){return $(e,new Map,{type:"RELEASE"}).then((()=>{d(e)}))}const g=new WeakMap,m="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(g.get(e)||0)-1;g.set(e,t),0===t&&f(e)}));function w(e,t,i=[],s=function(){}){let o=!1;const a=new Proxy(s,{get(s,r){if(p(o),r===n)return()=>{!function(e){m&&m.unregister(e)}(a),f(e),t.clear(),o=!0};if("then"===r){if(0===i.length)return{then:()=>a};const s=$(e,t,{type:"GET",path:i.map((e=>e.toString()))}).then(b);return s.then.bind(s)}return w(e,t,[...i,r])},set(s,r,n){p(o);const[a,h]=T(n);return $(e,t,{type:"SET",path:[...i,r].map((e=>e.toString())),value:a},h).then(b)},apply(s,n,a){p(o);const h=i[i.length-1];if(h===r)return $(e,t,{type:"ENDPOINT"}).then(b);if("bind"===h)return w(e,t,i.slice(0,-1));const[l,c]=v(a);return $(e,t,{type:"APPLY",path:i.map((e=>e.toString())),argumentList:l},c).then(b)},construct(s,r){p(o);const[n,a]=v(r);return $(e,t,{type:"CONSTRUCT",path:i.map((e=>e.toString())),argumentList:n},a).then(b)}});return function(e,t){const i=(g.get(t)||0)+1;g.set(t,i),m&&m.register(e,t,e)}(a,e),a}function v(e){const t=e.map(T);return[t.map((e=>e[0])),(i=t.map((e=>e[1])),Array.prototype.concat.apply([],i))];var i}const y=new WeakMap;function T(e){for(const[t,i]of l)if(i.canHandle(e)){const[s,r]=i.serialize(e);return[{type:"HANDLER",name:t,value:s},r]}return[{type:"RAW",value:e},y.get(e)||[]]}function b(e){switch(e.type){case"HANDLER":return l.get(e.name).deserialize(e.value);case"RAW":return e.value}}function $(e,t,i,s){return new Promise((r=>{const n=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");t.set(n,r),e.start&&e.start(),e.postMessage(Object.assign({id:n},i),s)}))}class C{constructor(e){i(this,"queue",[]),i(this,"activeRequests",new Map),i(this,"isProcessing",!1),i(this,"renderCallbacks",new Map),i(this,"errorCallbacks",new Map),i(this,"maxConcurrentRequests",1),i(this,"activeRequestCount",0),this.renderChannel=e}setCallbacks(e,t,i){this.renderCallbacks.set(e,t),this.errorCallbacks.set(e,i)}enqueue(e,t){const i=Date.now();for(const s of t){if(this.activeRequests.has(s.id))continue;const t=this.queue.findIndex((e=>e.request.id===s.id));-1===t?this.queue.push({request:s,sessionId:e,priority:this.calculatePriority(s),timestamp:i,cancelled:!1}):this.queue[t].priority=this.calculatePriority(s)}this.sortQueue(),this.isProcessing||this.startProcessing()}cancel(e,t){const i=new Set(t);for(const t of this.queue)t.sessionId===e&&i.has(t.request.id)&&(t.cancelled=!0);for(const[t,s]of this.activeRequests)s.sessionId===e&&i.has(t)&&(s.cancelled=!0)}cancelSession(e){for(const t of this.queue)t.sessionId===e&&(t.cancelled=!0);for(const t of this.activeRequests.values())t.sessionId===e&&(t.cancelled=!0)}async startProcessing(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0||this.activeRequestCount>0;){for(;this.activeRequestCount<this.maxConcurrentRequests&&this.queue.length>0;){const e=this.getNextRequest();if(!e)break;this.activeRequestCount++,this.processRequest(e).finally((()=>{this.activeRequestCount--}))}await new Promise((e=>setTimeout(e,0)))}this.isProcessing=!1}}getNextRequest(){for(;this.queue.length>0;){const e=this.queue.shift();if(!e)break;if(!e.cancelled)return this.activeRequests.set(e.request.id,e),e}return null}async processRequest(e){const{request:t,sessionId:i}=e;try{if(e.cancelled)return;"undefined"!=typeof performance&&performance.mark&&performance.mark(`tile-render-start-${t.id}`);const s=await this.renderTile(t);if("undefined"!=typeof performance&&performance.mark&&(performance.mark(`tile-render-ready-${t.id}`),performance.measure))try{performance.measure(`tile-wasm-render-${t.id}`,`tile-render-start-${t.id}`,`tile-render-ready-${t.id}`)}catch(e){}if(e.cancelled)return;const r=this.renderCallbacks.get(i);r&&r(i,t.id,s)}catch(s){if(console.error("[SharedRenderQueue] Error processing request:",s),!e.cancelled){const e=this.errorCallbacks.get(i);e&&e(i,t.id,s)}}finally{this.activeRequests.delete(t.id)}}async renderTile(e){const{sourceInfo:t,options:i}=e,s=await this.renderChannel.render(t.pageIndex,t.pageSize,t.tileRect,{renderForPrinting:i.renderForPrinting,renderText:i.renderText,priority:i.priority||"high"});return{buffer:s,format:i.format||"bitmap",width:s.width,height:s.height}}calculatePriority(e){let t=0;"high"===e.options.priority&&(t-=1e3),e.targetInfo.isVisible&&(t-=500),t-=10*e.viewportRenderUpdateId;return t+=100*Math.abs(e.targetInfo.scale-e.targetInfo.targetScale),t}sortQueue(){this.queue.sort(((e,t)=>e.priority-t.priority))}}const M=function e(t){let i;return i=t instanceof Error?t:new Error(t),Object.setPrototypeOf(i,e.prototype),i};M.prototype=Object.create(Error.prototype,{name:{value:"PSPDFKitError",enumerable:!1}});const x=M;["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",\'[tabindex]:not([tabindex^="-"])\'].join(",");new WeakMap;const R=!1;function S(){R}function I(e,t){if(null===t)return!0;const i=e===t;return i||S("skipping render of outdated viewportUpdateId",e,"latest is",t),i}function E(e,t){return e.left<t.width&&e.left+e.width>0&&e.top<t.height&&e.top+e.height>0}class z{constructor(e,t,s,r,n,o,a){i(this,"viewport",null),i(this,"mipLevels",[]),i(this,"pendingTiles",new Map),i(this,"totalTilesForCurrentRender",0),i(this,"completedTilesForCurrentRender",0),i(this,"latestViewportUpdateId",0),i(this,"showTileBorders",R),i(this,"drawCallCounter",0),i(this,"scrollEventCounter",0),this.canvas=e,this.sessionId=t,this.sharedQueue=s,this.TILE_SIZE=n;const h=e.getContext("2d");!function(e,t){if(!e)throw new x(`Assertion failed: ${t||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}(h,"OffscreenCanvasRenderingContext2D not available"),this.ctx=h,this.pageIndex=o,this.pageSize=a,this.ctx.imageSmoothingEnabled=!0,this.ctx.imageSmoothingQuality="high",this.tileCache=r,s.setCallbacks(t,this.handleTileReady.bind(this),this.handleTileError.bind(this))}updateViewport(e){const t=this.viewport;if(this.viewport=e,this.latestViewportUpdateId++,this.cancelStaleRequests(this.latestViewportUpdateId),t?.devicePixelRatio!==e.devicePixelRatio&&(this.mipLevels=function(e,t){const i=e*t,s=[];s.push(.5),s.push(1);let r=2;for(;r<=i;)s.push(r),r*=2;return!s.includes(i)&&i>s[s.length-1]&&s.push(i),s}(e.maxZoomLevel,e.devicePixelRatio)),t){const i=t.zoomLevel!==e.zoomLevel,s=t.viewportWidth!==e.viewportWidth||t.viewportHeight!==e.viewportHeight,r=t.scrollX!==e.scrollX||t.scrollY!==e.scrollY;this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),i||s?this.handleResize(this.latestViewportUpdateId):r&&this.handleScroll(e.scrollX-t.scrollX,e.scrollY-t.scrollY,this.latestViewportUpdateId)}else this.handleResize(this.latestViewportUpdateId)}cancelStaleRequests(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(0===this.pendingTiles.size)return;const i=[];for(const[s,r]of this.pendingTiles){e-r.latestNeededViewportId>t&&i.push(s)}if(i.length>0){this.sharedQueue.cancel(this.sessionId,i);for(const e of i)this.pendingTiles.delete(e);S(`Cancelled ${i.length} stale requests (age > ${t})`)}}handleScroll(e,t,i){this.viewport&&(this.scrollEventCounter++,S(`SCROLL #${this.scrollEventCounter}: delta(${e.toFixed(1)}, ${t.toFixed(1)}) scroll:(${this.viewport.scrollX.toFixed(1)}, ${this.viewport.scrollY.toFixed(1)}) canvas:${this.canvas.width}x${this.canvas.height}`),this.drawOptimized(i))}handleResize(e){if(!this.viewport)return;const t=(e,t)=>Math.round(e*Math.pow(10,t))/Math.pow(10,t),{viewportWidth:i,viewportHeight:s,zoomLevel:r,devicePixelRatio:n}=this.viewport,o=Math.ceil(i*r*n),a=Math.ceil(s*r*n);this.canvas.width===o&&this.canvas.height===a||(this.canvas.width=t(o,4),this.canvas.height=t(a,4)),this.drawOptimized(e)}drawOptimized(e){const t=this.calculateVisibleTiles(),i=new Set;this.drawCallCounter=0,S("-- drawOptimized --"),S("--- paintCachedTiles() ---"),this.paintCachedTiles(t,i,e),S("--- renderExposedAreas() ---"),this.renderExposedAreas(t,i,e),S(`--- draw complete: ${this.drawCallCounter} tiles drawn ---`)}paintCachedTiles(e,t,i){if(this.viewport)for(const s of e){const e=`${s.col},${s.row},${s.mip}`;if(t.has(e))continue;if(!E(this.getTileCanvasRect(s),this.canvas))continue;let r=this.tileCache.get(this.pageIndex,s.mip,s.col,s.row,0,s.tileSize);if(r)this.drawCachedTile(r,s,i),t.add(e);else{const e=s.rect;let n=!1;for(const o of this.mipLevels){if(o===s.mip)continue;const a=this.TILE_SIZE/o,h=Math.floor(e.left/a),l=Math.ceil((e.left+e.width)/a),c=Math.floor(e.top/a),d=Math.ceil((e.top+e.height)/a);for(let e=c;e<d;e++)for(let c=h;c<l;c++)if(r=this.tileCache.get(this.pageIndex,o,c,e,0,Math.round(a)),r){const h=`${c},${e},${o}`;if(!t.has(h)){E(this.getFallbackTileCanvasRect(c,e,a),this.canvas)&&(this.drawCachedTileWithClipping(r,c,e,o,a,s,i),t.add(h),n=!0)}}if(n)break}}}}renderExposedAreas(e,t,i){if(!this.viewport)return;const s=e.filter((e=>{const i=`${e.col},${e.row},${e.mip}`;if(t.has(i))return!1;return E(this.getTileCanvasRect(e),this.canvas)}));s.length>0&&this.requestTiles(s,i)}calculateVisibleTiles(){if(!this.viewport)return[];const{scrollX:e,scrollY:t,zoomLevel:i,viewportWidth:s,viewportHeight:r,devicePixelRatio:n}=this.viewport,o=function(e,t){for(const i of t)if(i>=e)return i;return t[t.length-1]||e}(i*n,this.mipLevels),a=this.TILE_SIZE/o,h=Math.min(.25*Math.min(s,r),a),l=Math.max(0,e-h),c=Math.max(0,t-h),d=Math.min(e+s+h,this.pageSize.width),u=Math.min(t+r+h,this.pageSize.height),p=Math.floor(l/a),f=Math.ceil(d/a),g=Math.floor(c/a),m=Math.ceil(u/a);S(`Tile grid: ${f-p}x${m-g} = ${(f-p)*(m-g)} tiles (gutter: ${h.toFixed(1)} page units)`);const w=[];for(let e=g;e<m;e++)for(let t=p;t<f;t++){const i=t*a,s=e*a;w.push({col:t,row:e,rect:{left:i,top:s,width:Math.min(a,this.pageSize.width-i),height:Math.min(a,this.pageSize.height-s)},mip:o,tileSize:Math.round(a)})}return w}drawImageBitmap(e,t,i,s,r,n){I(n,this.latestViewportUpdateId)&&(this.drawCallCounter++,this.ctx.drawImage(e,t,i,s,r))}getTileCanvasRect(e){if(!this.viewport)return{left:0,top:0,width:0,height:0};const{scrollX:t,scrollY:i,zoomLevel:s,devicePixelRatio:r}=this.viewport;return{left:(e.rect.left-t)*s*r,top:(e.rect.top-i)*s*r,width:e.rect.width*s*r,height:e.rect.height*s*r}}getFallbackTileCanvasRect(e,t,i){if(!this.viewport)return{left:0,top:0,width:0,height:0};const{scrollX:s,scrollY:r,zoomLevel:n,devicePixelRatio:o}=this.viewport;return{left:(e*i-s)*n*o,top:(t*i-r)*n*o,width:i*n*o,height:i*n*o}}requestTiles(e,t){if(!this.viewport)return;const i=[];for(const s of e){const e=this.generateTileCacheKey(this.pageIndex,s.mip,s.col,s.row,0,s.tileSize);if(this.pendingTiles.has(e)){const i=this.pendingTiles.get(e);i&&(i.latestNeededViewportId=Math.max(i.latestNeededViewportId,t));continue}const r=this.getTileCanvasRect(s),n=r.left<this.canvas.width&&r.left+r.width>0&&r.top<this.canvas.height&&r.top+r.height>0;this.pendingTiles.set(e,{tile:s,latestNeededViewportId:t}),i.push({id:e,viewportRenderUpdateId:t,sourceInfo:{pageIndex:this.pageIndex,pageSize:{width:Math.ceil(this.pageSize.width*s.mip),height:Math.ceil(this.pageSize.height*s.mip)},tileRect:{left:Math.floor(s.rect.left*s.mip),top:Math.floor(s.rect.top*s.mip),width:Math.ceil(s.rect.width*s.mip),height:Math.ceil(s.rect.height*s.mip)}},targetInfo:{scale:s.mip,targetScale:this.viewport.zoomLevel*this.viewport.devicePixelRatio,isVisible:!0,canvasRect:r},options:{renderAnnotations:!0,renderText:!0,format:"bitmap",priority:n?"high":"normal"}})}i.length>0?(this.totalTilesForCurrentRender=this.pendingTiles.size,this.completedTilesForCurrentRender=0,S(`REQUESTING ${i.length} new tiles from backend`),this.sharedQueue.enqueue(this.sessionId,i)):S("No new tiles to request - all visible tiles are cached")}generateTileCacheKey(e,t,i,s,r,n){return`${e}_${t}_${i}_${s}_${r}_${n}`}drawCachedTileWithClipping(e,t,i,s,r,n,o){if(!this.viewport)return;const{scrollX:a,scrollY:h,zoomLevel:l,devicePixelRatio:c}=this.viewport,d=(t*r-a)*l*c,u=(i*r-h)*l*c,p=l*c/s,f=e.width*p,g=e.height*p,m={left:d,top:u,width:f,height:g};E(m,this.canvas)?(S(`DRAW: clipped cached tile[${t},${i}] size:(${Math.round(e.width||-1)}x${Math.round(e.height||-1)}) at canvasPos:(${Math.round(d)},${Math.round(u)}) canvasRect:${JSON.stringify(m)} mip:${s}`),this.drawImageBitmap(e.imageData,d,u,f,g,o),this.showTileBorders&&this.drawTileBorder(n,m,o,"#00f")):S(`SKIP DRAW: cached tile[${t},${i}] at canvasPos:(${Math.round(d)},${Math.round(u)})`)}drawCachedTile(e,t,i){if(!this.viewport)return;const s=this.getTileCanvasRect(t),r=E(s,this.canvas);r?(S(`Draw #${this.drawCallCounter}: tile[${t.col},${t.row}] mip:${t.mip.toFixed(1)} visible:${r} canvasPos:(${Math.round(s.left)},${Math.round(s.top)}) size:${Math.round(s.width)}x${Math.round(s.height)}`),this.drawImageBitmap(e.imageData,s.left,s.top,s.width,s.height,i),this.showTileBorders&&this.drawTileBorder(t,s,i)):S(`SKIP DRAW: invisible tile[${t.col},${t.row}] at canvasPos:(${Math.round(s.left)},${Math.round(s.top)})`)}handleTileReady(e,t,i){if(e!==this.sessionId)return;const s=this.pendingTiles.get(t);if(!s||!this.viewport)return;const{tile:r,latestNeededViewportId:n}=s;this.pendingTiles.delete(t),this.tileCache.put(this.pageIndex,r.mip,r.col,r.row,i.buffer,i.format,0,r.tileSize,i.width,i.height),this.drawTile(i,r,n),this.completedTilesForCurrentRender++}drawTile(e,t,i){if(!this.viewport)return;if(!I(i,this.latestViewportUpdateId))return;const s=this.getTileCanvasRect(t),r=E(s,this.canvas);this.drawCallCounter++,S(`NEW TILE: tile[${t.col},${t.row}] mip:${t.mip.toFixed(1)} visible:${r} canvasPos:(${Math.round(s.left)},${Math.round(s.top)}) size:${Math.round(s.width)}x${Math.round(s.height)}`),"bitmap"===e.format&&(this.ctx.drawImage(e.buffer,s.left,s.top,s.width,s.height),this.showTileBorders&&this.drawTileBorder(t,s,i))}drawTileBorder(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#0f0";this.ctx.save(),this.ctx.strokeStyle=s,this.ctx.lineWidth=2,this.ctx.setLineDash([5,5]),this.ctx.strokeRect(t.left,t.top,t.width,t.height),this.ctx.fillStyle="rgba(0, 0, 0, 0.8)",this.ctx.fillRect(t.left,t.top,280,75),this.ctx.fillStyle=s,this.ctx.font="bold 15px monospace",this.ctx.fillText(`Tile ${i}: ${e.col},${e.row}`,t.left+5,t.top+15),this.ctx.fillText(`MIP: ${e.mip.toFixed(1)}`,t.left+5,t.top+30),this.ctx.fillText(`Canvas: ${Math.round(t.width)}×${Math.round(t.height)}px`,t.left+5,t.top+45);const r=Math.ceil(e.rect.width*e.mip),n=Math.ceil(e.rect.height*e.mip);this.ctx.fillText(`Bitmap: ${r}×${n}px`,t.left+5,t.top+60),this.ctx.restore()}handleTileError(e,t,i){e===this.sessionId&&(this.pendingTiles.delete(t),console.warn("Tile render failed:",t,i))}dispose(){this.sharedQueue.cancelSession(this.sessionId),this.pendingTiles.clear(),this.tileCache.clear()}}class P{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:256;i(this,"cache",new Map),i(this,"hotQueue",new Set),i(this,"coldQueue",new Set),i(this,"pinnedTiles",new Set),i(this,"currentBytes",0),i(this,"hits",0),i(this,"misses",0),this.maxBytes=1024*e*1024}generateKey(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=Math.floor(i),a=Math.floor(s),h=Math.round(1e3*t)/1e3,l=Math.round(n);return 0!==r?`${e}/mip${h}/x${o}y${a}/rot${r}/ts${l}`:`${e}/mip${h}/x${o}y${a}/ts${l}`}get(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=this.generateKey(e,t,i,s,r,n),a=this.cache.get(o);return a?(this.hits++,a.lastAccessTime=Date.now(),a.accessCount++,this.coldQueue.has(o)&&a.accessCount>2&&(this.coldQueue.delete(o),this.hotQueue.add(o)),a):(this.misses++,null)}getCachedMipsForTile(e,t,i){let s=arguments.length>4?arguments[4]:void 0;const r=[];return this.cache.forEach((n=>{n.pageIndex===e&&n.tileX===t&&n.tileY===i&&Math.abs(n.tileSize-s)<1&&r.push(n.mip)})),r.sort(((e,t)=>e-t))}put(e,t,i,s,r){let n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"bitmap",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,a=arguments.length>7?arguments[7]:void 0,h=arguments.length>8?arguments[8]:void 0,l=arguments.length>9?arguments[9]:void 0;const c=this.generateKey(e,t,i,s,o,a),d=this.calculateTileMemorySize(h,l,n);this.ensureMemoryBudget(d);const u={key:c,pageIndex:e,mip:t,tileX:i,tileY:s,tileSize:a,imageData:r,format:n,width:h,height:l,byteSize:d,lastAccessTime:Date.now(),createdTime:Date.now(),accessCount:1,isPinned:!1},p=this.cache.get(c);p&&(this.currentBytes-=p.byteSize,this.hotQueue.delete(c),this.coldQueue.delete(c)),this.cache.set(c,u),this.hotQueue.add(c),this.currentBytes+=d}pin(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=this.generateKey(e,t,i,s,r,n),a=this.cache.get(o);a&&(this.pinnedTiles.add(o),a.isPinned=!0)}clearPage(e){const t=[];this.cache.forEach(((i,s)=>{i.pageIndex!==e||i.isPinned||t.push(s)})),t.forEach((e=>{this.removeTile(e)}))}clear(){const e=[];this.cache.forEach(((t,i)=>{t.isPinned||e.push(i)})),e.forEach((e=>{this.removeTile(e)}))}getStats(){const e=this.hits+this.misses>0?this.hits/(this.hits+this.misses):0;return{totalTiles:this.cache.size,totalBytes:this.currentBytes,hotTiles:this.hotQueue.size,coldTiles:this.coldQueue.size,pinnedTiles:this.pinnedTiles.size,hitRate:e}}ensureMemoryBudget(e){if(this.currentBytes+e<=this.maxBytes)return;const t=this.currentBytes+e-this.maxBytes;let i=0;const s=Date.now(),r=Array.from(this.hotQueue);for(const e of r){const t=this.cache.get(e);t&&!t.isPinned&&s-t.lastAccessTime>5e3&&(this.hotQueue.delete(e),this.coldQueue.add(e))}const n=Array.from(this.coldQueue).map((e=>({key:e,tile:this.cache.get(e)}))).filter((e=>e.tile&&!e.tile.isPinned)).sort(((e,t)=>(e.tile?.lastAccessTime??0)-(t.tile?.lastAccessTime??0)));for(const{key:e,tile:s}of n){if(i>=t||!s)break;i+=s.byteSize,this.removeTile(e)}if(i<t){const e=Array.from(this.hotQueue).map((e=>({key:e,tile:this.cache.get(e)}))).filter((e=>e.tile&&!e.tile.isPinned)).sort(((e,t)=>(e.tile?.lastAccessTime??0)-(t.tile?.lastAccessTime??0)));for(const{key:s,tile:r}of e){if(i>=t||!r)break;i+=r.byteSize,this.removeTile(s)}}}removeTile(e){const t=this.cache.get(e);t&&(t.imageData.close(),this.cache.delete(e),this.hotQueue.delete(e),this.coldQueue.delete(e),this.pinnedTiles.delete(e),this.currentBytes-=t.byteSize)}calculateTileMemorySize(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"bitmap";if("bitmap"===i)return e*t*4;const s=e*t;return"jpeg"===i?Math.ceil(4*s*.15):Math.ceil(4*s*.4)}}c(new class{constructor(){i(this,"offscreenRendererMap",new Map),i(this,"canvasSessionIdCounter",0),i(this,"sharedRenderQueue",null),i(this,"tileCache",new P(256)),i(this,"renderChannel",null)}async setupRenderMessageChannel(e){this.renderChannel=u(e)}async releaseRenderer(e){const t=this.offscreenRendererMap.get(e);t&&(t.dispose(),this.offscreenRendererMap.delete(e))}async beginRenderer(e,t,i,s){!function(e,t){if(!e)throw new x(`Assertion failed: ${t||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}(this.renderChannel,"Setup render channel first"),this.sharedRenderQueue||(this.sharedRenderQueue=new C(this.renderChannel));const r=`page-${t}-${this.canvasSessionIdCounter++}`,n=new z(e,r,this.sharedRenderQueue,this.tileCache,i,t,s);return this.offscreenRendererMap.set(r,n),r}async updateViewport(e,t){const i=this.offscreenRendererMap.get(e);i?i.updateViewport(t):console.warn(`No renderer found for session ${e}`)}async endRenderer(e){const t=this.offscreenRendererMap.get(e);t?(t.dispose(),this.offscreenRendererMap.delete(e)):console.warn(`No renderer found for session ${e}`)}})})();',"Worker",void 0,void 0)}},55512:e=>{e.exports=function(e,t,i,s){var r=self||window;try{try{var n;try{n=new r.Blob([e])}catch(t){(n=new(r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder)).append(e),n=n.getBlob()}var a=r.URL||r.webkitURL,o=a.createObjectURL(n),h=new r[t](o,i);return a.revokeObjectURL(o),h}catch(s){return new r[t]("data:application/javascript,".concat(encodeURIComponent(e)),i)}}catch(e){if(!s)throw Error("Inline worker is not supported");return new r[t](s,i)}}}}]);
13
+ "use strict";(globalThis.webpackChunkNutrientViewer=globalThis.webpackChunkNutrientViewer||[]).push([[861],{22292:(e,t,i)=>{i.d(t,{default:()=>n});var s=i(55512),r=i.n(s);function n(){return r()('/*!\n * Nutrient Web SDK 1.9.0-250bd04 (https://www.nutrient.io/sdk/web)\n *\n * Copyright (c) 2016-2025 PSPDFKit GmbH. All rights reserved.\n *\n * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW\n * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.\n * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.\n * This notice may not be removed from this file.\n *\n * PSPDFKit uses several open source third-party components: https://www.nutrient.io/legal/acknowledgements/web-acknowledgements/\n */(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t){var i=function(t,i){if("object"!=e(t)||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var r=s.call(t,i||"default");if("object"!=e(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==e(i)?i:i+""}function i(e,i,s){return(i=t(i))in e?Object.defineProperty(e,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[i]=s,e}const s=Symbol("Comlink.proxy"),r=Symbol("Comlink.endpoint"),n=Symbol("Comlink.releaseProxy"),o=Symbol("Comlink.finalizer"),a=Symbol("Comlink.thrown"),h=e=>"object"==typeof e&&null!==e||"function"==typeof e,l=new Map([["proxy",{canHandle:e=>h(e)&&e[s],serialize(e){const{port1:t,port2:i}=new MessageChannel;return c(e,t),[i,[i]]},deserialize:e=>(e.start(),u(e))}],["throw",{canHandle:e=>h(e)&&a in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(new Error(e.value.message),e.value);throw e.value}}]]);function c(e,t=globalThis,i=["*"]){t.addEventListener("message",(function r(n){if(!n||!n.data)return;if(!function(e,t){for(const i of e){if(t===i||"*"===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}return!1}(i,n.origin))return void console.warn(`Invalid origin \'${n.origin}\' for comlink proxy`);const{id:h,type:l,path:u}=Object.assign({path:[]},n.data),p=(n.data.argumentList||[]).map(b);let f;try{const t=u.slice(0,-1).reduce(((e,t)=>e[t]),e),i=u.reduce(((e,t)=>e[t]),e);switch(l){case"GET":f=i;break;case"SET":t[u.slice(-1)[0]]=b(n.data.value),f=!0;break;case"APPLY":f=i.apply(t,p);break;case"CONSTRUCT":f=function(e){return Object.assign(e,{[s]:!0})}(new i(...p));break;case"ENDPOINT":{const{port1:t,port2:i}=new MessageChannel;c(e,i),f=function(e,t){return y.set(e,t),e}(t,[t])}break;case"RELEASE":f=void 0;break;default:return}}catch(e){f={value:e,[a]:0}}Promise.resolve(f).catch((e=>({value:e,[a]:0}))).then((i=>{const[s,n]=T(i);t.postMessage(Object.assign(Object.assign({},s),{id:h}),n),"RELEASE"===l&&(t.removeEventListener("message",r),d(t),o in e&&"function"==typeof e[o]&&e[o]())})).catch((e=>{const[i,s]=T({value:new TypeError("Unserializable return value"),[a]:0});t.postMessage(Object.assign(Object.assign({},i),{id:h}),s)}))})),t.start&&t.start()}function d(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function u(e,t){const i=new Map;return e.addEventListener("message",(function(e){const{data:t}=e;if(!t||!t.id)return;const s=i.get(t.id);if(s)try{s(t)}finally{i.delete(t.id)}})),w(e,i,[],t)}function p(e){if(e)throw new Error("Proxy has been released and is not useable")}function f(e){return $(e,new Map,{type:"RELEASE"}).then((()=>{d(e)}))}const g=new WeakMap,m="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(g.get(e)||0)-1;g.set(e,t),0===t&&f(e)}));function w(e,t,i=[],s=function(){}){let o=!1;const a=new Proxy(s,{get(s,r){if(p(o),r===n)return()=>{!function(e){m&&m.unregister(e)}(a),f(e),t.clear(),o=!0};if("then"===r){if(0===i.length)return{then:()=>a};const s=$(e,t,{type:"GET",path:i.map((e=>e.toString()))}).then(b);return s.then.bind(s)}return w(e,t,[...i,r])},set(s,r,n){p(o);const[a,h]=T(n);return $(e,t,{type:"SET",path:[...i,r].map((e=>e.toString())),value:a},h).then(b)},apply(s,n,a){p(o);const h=i[i.length-1];if(h===r)return $(e,t,{type:"ENDPOINT"}).then(b);if("bind"===h)return w(e,t,i.slice(0,-1));const[l,c]=v(a);return $(e,t,{type:"APPLY",path:i.map((e=>e.toString())),argumentList:l},c).then(b)},construct(s,r){p(o);const[n,a]=v(r);return $(e,t,{type:"CONSTRUCT",path:i.map((e=>e.toString())),argumentList:n},a).then(b)}});return function(e,t){const i=(g.get(t)||0)+1;g.set(t,i),m&&m.register(e,t,e)}(a,e),a}function v(e){const t=e.map(T);return[t.map((e=>e[0])),(i=t.map((e=>e[1])),Array.prototype.concat.apply([],i))];var i}const y=new WeakMap;function T(e){for(const[t,i]of l)if(i.canHandle(e)){const[s,r]=i.serialize(e);return[{type:"HANDLER",name:t,value:s},r]}return[{type:"RAW",value:e},y.get(e)||[]]}function b(e){switch(e.type){case"HANDLER":return l.get(e.name).deserialize(e.value);case"RAW":return e.value}}function $(e,t,i,s){return new Promise((r=>{const n=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");t.set(n,r),e.start&&e.start(),e.postMessage(Object.assign({id:n},i),s)}))}class C{constructor(e){i(this,"queue",[]),i(this,"activeRequests",new Map),i(this,"isProcessing",!1),i(this,"renderCallbacks",new Map),i(this,"errorCallbacks",new Map),i(this,"maxConcurrentRequests",1),i(this,"activeRequestCount",0),this.renderChannel=e}setCallbacks(e,t,i){this.renderCallbacks.set(e,t),this.errorCallbacks.set(e,i)}enqueue(e,t){const i=Date.now();for(const s of t){if(this.activeRequests.has(s.id))continue;const t=this.queue.findIndex((e=>e.request.id===s.id));-1===t?this.queue.push({request:s,sessionId:e,priority:this.calculatePriority(s),timestamp:i,cancelled:!1}):this.queue[t].priority=this.calculatePriority(s)}this.sortQueue(),this.isProcessing||this.startProcessing()}cancel(e,t){const i=new Set(t);for(const t of this.queue)t.sessionId===e&&i.has(t.request.id)&&(t.cancelled=!0);for(const[t,s]of this.activeRequests)s.sessionId===e&&i.has(t)&&(s.cancelled=!0)}cancelSession(e){for(const t of this.queue)t.sessionId===e&&(t.cancelled=!0);for(const t of this.activeRequests.values())t.sessionId===e&&(t.cancelled=!0)}async startProcessing(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0||this.activeRequestCount>0;){for(;this.activeRequestCount<this.maxConcurrentRequests&&this.queue.length>0;){const e=this.getNextRequest();if(!e)break;this.activeRequestCount++,this.processRequest(e).finally((()=>{this.activeRequestCount--}))}await new Promise((e=>setTimeout(e,0)))}this.isProcessing=!1}}getNextRequest(){for(;this.queue.length>0;){const e=this.queue.shift();if(!e)break;if(!e.cancelled)return this.activeRequests.set(e.request.id,e),e}return null}async processRequest(e){const{request:t,sessionId:i}=e;try{if(e.cancelled)return;"undefined"!=typeof performance&&performance.mark&&performance.mark(`tile-render-start-${t.id}`);const s=await this.renderTile(t);if("undefined"!=typeof performance&&performance.mark&&(performance.mark(`tile-render-ready-${t.id}`),performance.measure))try{performance.measure(`tile-wasm-render-${t.id}`,`tile-render-start-${t.id}`,`tile-render-ready-${t.id}`)}catch(e){}if(e.cancelled)return;const r=this.renderCallbacks.get(i);r&&r(i,t.id,s)}catch(s){if(console.error("[SharedRenderQueue] Error processing request:",s),!e.cancelled){const e=this.errorCallbacks.get(i);e&&e(i,t.id,s)}}finally{this.activeRequests.delete(t.id)}}async renderTile(e){const{sourceInfo:t,options:i}=e,s=await this.renderChannel.render(t.pageIndex,t.pageSize,t.tileRect,{renderForPrinting:i.renderForPrinting,renderText:i.renderText,priority:i.priority||"high"});return{buffer:s,format:i.format||"bitmap",width:s.width,height:s.height}}calculatePriority(e){let t=0;"high"===e.options.priority&&(t-=1e3),e.targetInfo.isVisible&&(t-=500),t-=10*e.viewportRenderUpdateId;return t+=100*Math.abs(e.targetInfo.scale-e.targetInfo.targetScale),t}sortQueue(){this.queue.sort(((e,t)=>e.priority-t.priority))}}const M=function e(t){let i;return i=t instanceof Error?t:new Error(t),Object.setPrototypeOf(i,e.prototype),i};M.prototype=Object.create(Error.prototype,{name:{value:"PSPDFKitError",enumerable:!1}});const x=M;["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",\'[tabindex]:not([tabindex^="-"])\'].join(",");new WeakMap;const R=!1;function S(){R}function I(e,t){if(null===t)return!0;const i=e===t;return i||S("skipping render of outdated viewportUpdateId",e,"latest is",t),i}function E(e,t){return e.left<t.width&&e.left+e.width>0&&e.top<t.height&&e.top+e.height>0}class z{constructor(e,t,s,r,n,o,a){i(this,"viewport",null),i(this,"mipLevels",[]),i(this,"pendingTiles",new Map),i(this,"totalTilesForCurrentRender",0),i(this,"completedTilesForCurrentRender",0),i(this,"latestViewportUpdateId",0),i(this,"showTileBorders",R),i(this,"drawCallCounter",0),i(this,"scrollEventCounter",0),this.canvas=e,this.sessionId=t,this.sharedQueue=s,this.TILE_SIZE=n;const h=e.getContext("2d");!function(e,t){if(!e)throw new x(`Assertion failed: ${t||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}(h,"OffscreenCanvasRenderingContext2D not available"),this.ctx=h,this.pageIndex=o,this.pageSize=a,this.ctx.imageSmoothingEnabled=!0,this.ctx.imageSmoothingQuality="high",this.tileCache=r,s.setCallbacks(t,this.handleTileReady.bind(this),this.handleTileError.bind(this))}updateViewport(e){const t=this.viewport;if(this.viewport=e,this.latestViewportUpdateId++,this.cancelStaleRequests(this.latestViewportUpdateId),t?.devicePixelRatio!==e.devicePixelRatio&&(this.mipLevels=function(e,t){const i=e*t,s=[];s.push(.5),s.push(1);let r=2;for(;r<=i;)s.push(r),r*=2;return!s.includes(i)&&i>s[s.length-1]&&s.push(i),s}(e.maxZoomLevel,e.devicePixelRatio)),t){const i=t.zoomLevel!==e.zoomLevel,s=t.viewportWidth!==e.viewportWidth||t.viewportHeight!==e.viewportHeight,r=t.scrollX!==e.scrollX||t.scrollY!==e.scrollY;this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),i||s?this.handleResize(this.latestViewportUpdateId):r&&this.handleScroll(e.scrollX-t.scrollX,e.scrollY-t.scrollY,this.latestViewportUpdateId)}else this.handleResize(this.latestViewportUpdateId)}cancelStaleRequests(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(0===this.pendingTiles.size)return;const i=[];for(const[s,r]of this.pendingTiles){e-r.latestNeededViewportId>t&&i.push(s)}if(i.length>0){this.sharedQueue.cancel(this.sessionId,i);for(const e of i)this.pendingTiles.delete(e);S(`Cancelled ${i.length} stale requests (age > ${t})`)}}handleScroll(e,t,i){this.viewport&&(this.scrollEventCounter++,S(`SCROLL #${this.scrollEventCounter}: delta(${e.toFixed(1)}, ${t.toFixed(1)}) scroll:(${this.viewport.scrollX.toFixed(1)}, ${this.viewport.scrollY.toFixed(1)}) canvas:${this.canvas.width}x${this.canvas.height}`),this.drawOptimized(i))}handleResize(e){if(!this.viewport)return;const t=(e,t)=>Math.round(e*Math.pow(10,t))/Math.pow(10,t),{viewportWidth:i,viewportHeight:s,zoomLevel:r,devicePixelRatio:n}=this.viewport,o=Math.ceil(i*r*n),a=Math.ceil(s*r*n);this.canvas.width===o&&this.canvas.height===a||(this.canvas.width=t(o,4),this.canvas.height=t(a,4)),this.drawOptimized(e)}drawOptimized(e){const t=this.calculateVisibleTiles(),i=new Set;this.drawCallCounter=0,S("-- drawOptimized --"),S("--- paintCachedTiles() ---"),this.paintCachedTiles(t,i,e),S("--- renderExposedAreas() ---"),this.renderExposedAreas(t,i,e),S(`--- draw complete: ${this.drawCallCounter} tiles drawn ---`)}paintCachedTiles(e,t,i){if(this.viewport)for(const s of e){const e=`${s.col},${s.row},${s.mip}`;if(t.has(e))continue;if(!E(this.getTileCanvasRect(s),this.canvas))continue;let r=this.tileCache.get(this.pageIndex,s.mip,s.col,s.row,0,s.tileSize);if(r)this.drawCachedTile(r,s,i),t.add(e);else{const e=s.rect;let n=!1;for(const o of this.mipLevels){if(o===s.mip)continue;const a=this.TILE_SIZE/o,h=Math.floor(e.left/a),l=Math.ceil((e.left+e.width)/a),c=Math.floor(e.top/a),d=Math.ceil((e.top+e.height)/a);for(let e=c;e<d;e++)for(let c=h;c<l;c++)if(r=this.tileCache.get(this.pageIndex,o,c,e,0,Math.round(a)),r){const h=`${c},${e},${o}`;if(!t.has(h)){E(this.getFallbackTileCanvasRect(c,e,a),this.canvas)&&(this.drawCachedTileWithClipping(r,c,e,o,a,s,i),t.add(h),n=!0)}}if(n)break}}}}renderExposedAreas(e,t,i){if(!this.viewport)return;const s=e.filter((e=>{const i=`${e.col},${e.row},${e.mip}`;if(t.has(i))return!1;return E(this.getTileCanvasRect(e),this.canvas)}));s.length>0&&this.requestTiles(s,i)}calculateVisibleTiles(){if(!this.viewport)return[];const{scrollX:e,scrollY:t,zoomLevel:i,viewportWidth:s,viewportHeight:r,devicePixelRatio:n}=this.viewport,o=function(e,t){for(const i of t)if(i>=e)return i;return t[t.length-1]||e}(i*n,this.mipLevels),a=this.TILE_SIZE/o,h=Math.min(.25*Math.min(s,r),a),l=Math.max(0,e-h),c=Math.max(0,t-h),d=Math.min(e+s+h,this.pageSize.width),u=Math.min(t+r+h,this.pageSize.height),p=Math.floor(l/a),f=Math.ceil(d/a),g=Math.floor(c/a),m=Math.ceil(u/a);S(`Tile grid: ${f-p}x${m-g} = ${(f-p)*(m-g)} tiles (gutter: ${h.toFixed(1)} page units)`);const w=[];for(let e=g;e<m;e++)for(let t=p;t<f;t++){const i=t*a,s=e*a;w.push({col:t,row:e,rect:{left:i,top:s,width:Math.min(a,this.pageSize.width-i),height:Math.min(a,this.pageSize.height-s)},mip:o,tileSize:Math.round(a)})}return w}drawImageBitmap(e,t,i,s,r,n){I(n,this.latestViewportUpdateId)&&(this.drawCallCounter++,this.ctx.drawImage(e,t,i,s,r))}getTileCanvasRect(e){if(!this.viewport)return{left:0,top:0,width:0,height:0};const{scrollX:t,scrollY:i,zoomLevel:s,devicePixelRatio:r}=this.viewport;return{left:(e.rect.left-t)*s*r,top:(e.rect.top-i)*s*r,width:e.rect.width*s*r,height:e.rect.height*s*r}}getFallbackTileCanvasRect(e,t,i){if(!this.viewport)return{left:0,top:0,width:0,height:0};const{scrollX:s,scrollY:r,zoomLevel:n,devicePixelRatio:o}=this.viewport;return{left:(e*i-s)*n*o,top:(t*i-r)*n*o,width:i*n*o,height:i*n*o}}requestTiles(e,t){if(!this.viewport)return;const i=[];for(const s of e){const e=this.generateTileCacheKey(this.pageIndex,s.mip,s.col,s.row,0,s.tileSize);if(this.pendingTiles.has(e)){const i=this.pendingTiles.get(e);i&&(i.latestNeededViewportId=Math.max(i.latestNeededViewportId,t));continue}const r=this.getTileCanvasRect(s),n=r.left<this.canvas.width&&r.left+r.width>0&&r.top<this.canvas.height&&r.top+r.height>0;this.pendingTiles.set(e,{tile:s,latestNeededViewportId:t}),i.push({id:e,viewportRenderUpdateId:t,sourceInfo:{pageIndex:this.pageIndex,pageSize:{width:Math.ceil(this.pageSize.width*s.mip),height:Math.ceil(this.pageSize.height*s.mip)},tileRect:{left:Math.floor(s.rect.left*s.mip),top:Math.floor(s.rect.top*s.mip),width:Math.ceil(s.rect.width*s.mip),height:Math.ceil(s.rect.height*s.mip)}},targetInfo:{scale:s.mip,targetScale:this.viewport.zoomLevel*this.viewport.devicePixelRatio,isVisible:!0,canvasRect:r},options:{renderAnnotations:!0,renderText:!0,format:"bitmap",priority:n?"high":"normal"}})}i.length>0?(this.totalTilesForCurrentRender=this.pendingTiles.size,this.completedTilesForCurrentRender=0,S(`REQUESTING ${i.length} new tiles from backend`),this.sharedQueue.enqueue(this.sessionId,i)):S("No new tiles to request - all visible tiles are cached")}generateTileCacheKey(e,t,i,s,r,n){return`${e}_${t}_${i}_${s}_${r}_${n}`}drawCachedTileWithClipping(e,t,i,s,r,n,o){if(!this.viewport)return;const{scrollX:a,scrollY:h,zoomLevel:l,devicePixelRatio:c}=this.viewport,d=(t*r-a)*l*c,u=(i*r-h)*l*c,p=l*c/s,f=e.width*p,g=e.height*p,m={left:d,top:u,width:f,height:g};E(m,this.canvas)?(S(`DRAW: clipped cached tile[${t},${i}] size:(${Math.round(e.width||-1)}x${Math.round(e.height||-1)}) at canvasPos:(${Math.round(d)},${Math.round(u)}) canvasRect:${JSON.stringify(m)} mip:${s}`),this.drawImageBitmap(e.imageData,d,u,f,g,o),this.showTileBorders&&this.drawTileBorder(n,m,o,"#00f")):S(`SKIP DRAW: cached tile[${t},${i}] at canvasPos:(${Math.round(d)},${Math.round(u)})`)}drawCachedTile(e,t,i){if(!this.viewport)return;const s=this.getTileCanvasRect(t),r=E(s,this.canvas);r?(S(`Draw #${this.drawCallCounter}: tile[${t.col},${t.row}] mip:${t.mip.toFixed(1)} visible:${r} canvasPos:(${Math.round(s.left)},${Math.round(s.top)}) size:${Math.round(s.width)}x${Math.round(s.height)}`),this.drawImageBitmap(e.imageData,s.left,s.top,s.width,s.height,i),this.showTileBorders&&this.drawTileBorder(t,s,i)):S(`SKIP DRAW: invisible tile[${t.col},${t.row}] at canvasPos:(${Math.round(s.left)},${Math.round(s.top)})`)}handleTileReady(e,t,i){if(e!==this.sessionId)return;const s=this.pendingTiles.get(t);if(!s||!this.viewport)return;const{tile:r,latestNeededViewportId:n}=s;this.pendingTiles.delete(t),this.tileCache.put(this.pageIndex,r.mip,r.col,r.row,i.buffer,i.format,0,r.tileSize,i.width,i.height),this.drawTile(i,r,n),this.completedTilesForCurrentRender++}drawTile(e,t,i){if(!this.viewport)return;if(!I(i,this.latestViewportUpdateId))return;const s=this.getTileCanvasRect(t),r=E(s,this.canvas);this.drawCallCounter++,S(`NEW TILE: tile[${t.col},${t.row}] mip:${t.mip.toFixed(1)} visible:${r} canvasPos:(${Math.round(s.left)},${Math.round(s.top)}) size:${Math.round(s.width)}x${Math.round(s.height)}`),"bitmap"===e.format&&(this.ctx.drawImage(e.buffer,s.left,s.top,s.width,s.height),this.showTileBorders&&this.drawTileBorder(t,s,i))}drawTileBorder(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#0f0";this.ctx.save(),this.ctx.strokeStyle=s,this.ctx.lineWidth=2,this.ctx.setLineDash([5,5]),this.ctx.strokeRect(t.left,t.top,t.width,t.height),this.ctx.fillStyle="rgba(0, 0, 0, 0.8)",this.ctx.fillRect(t.left,t.top,280,75),this.ctx.fillStyle=s,this.ctx.font="bold 15px monospace",this.ctx.fillText(`Tile ${i}: ${e.col},${e.row}`,t.left+5,t.top+15),this.ctx.fillText(`MIP: ${e.mip.toFixed(1)}`,t.left+5,t.top+30),this.ctx.fillText(`Canvas: ${Math.round(t.width)}×${Math.round(t.height)}px`,t.left+5,t.top+45);const r=Math.ceil(e.rect.width*e.mip),n=Math.ceil(e.rect.height*e.mip);this.ctx.fillText(`Bitmap: ${r}×${n}px`,t.left+5,t.top+60),this.ctx.restore()}handleTileError(e,t,i){e===this.sessionId&&(this.pendingTiles.delete(t),console.warn("Tile render failed:",t,i))}dispose(){this.sharedQueue.cancelSession(this.sessionId),this.pendingTiles.clear(),this.tileCache.clear()}}class P{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:256;i(this,"cache",new Map),i(this,"hotQueue",new Set),i(this,"coldQueue",new Set),i(this,"pinnedTiles",new Set),i(this,"currentBytes",0),i(this,"hits",0),i(this,"misses",0),this.maxBytes=1024*e*1024}generateKey(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=Math.floor(i),a=Math.floor(s),h=Math.round(1e3*t)/1e3,l=Math.round(n);return 0!==r?`${e}/mip${h}/x${o}y${a}/rot${r}/ts${l}`:`${e}/mip${h}/x${o}y${a}/ts${l}`}get(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=this.generateKey(e,t,i,s,r,n),a=this.cache.get(o);return a?(this.hits++,a.lastAccessTime=Date.now(),a.accessCount++,this.coldQueue.has(o)&&a.accessCount>2&&(this.coldQueue.delete(o),this.hotQueue.add(o)),a):(this.misses++,null)}getCachedMipsForTile(e,t,i){let s=arguments.length>4?arguments[4]:void 0;const r=[];return this.cache.forEach((n=>{n.pageIndex===e&&n.tileX===t&&n.tileY===i&&Math.abs(n.tileSize-s)<1&&r.push(n.mip)})),r.sort(((e,t)=>e-t))}put(e,t,i,s,r){let n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"bitmap",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,a=arguments.length>7?arguments[7]:void 0,h=arguments.length>8?arguments[8]:void 0,l=arguments.length>9?arguments[9]:void 0;const c=this.generateKey(e,t,i,s,o,a),d=this.calculateTileMemorySize(h,l,n);this.ensureMemoryBudget(d);const u={key:c,pageIndex:e,mip:t,tileX:i,tileY:s,tileSize:a,imageData:r,format:n,width:h,height:l,byteSize:d,lastAccessTime:Date.now(),createdTime:Date.now(),accessCount:1,isPinned:!1},p=this.cache.get(c);p&&(this.currentBytes-=p.byteSize,this.hotQueue.delete(c),this.coldQueue.delete(c)),this.cache.set(c,u),this.hotQueue.add(c),this.currentBytes+=d}pin(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0;const o=this.generateKey(e,t,i,s,r,n),a=this.cache.get(o);a&&(this.pinnedTiles.add(o),a.isPinned=!0)}clearPage(e){const t=[];this.cache.forEach(((i,s)=>{i.pageIndex!==e||i.isPinned||t.push(s)})),t.forEach((e=>{this.removeTile(e)}))}clear(){const e=[];this.cache.forEach(((t,i)=>{t.isPinned||e.push(i)})),e.forEach((e=>{this.removeTile(e)}))}getStats(){const e=this.hits+this.misses>0?this.hits/(this.hits+this.misses):0;return{totalTiles:this.cache.size,totalBytes:this.currentBytes,hotTiles:this.hotQueue.size,coldTiles:this.coldQueue.size,pinnedTiles:this.pinnedTiles.size,hitRate:e}}ensureMemoryBudget(e){if(this.currentBytes+e<=this.maxBytes)return;const t=this.currentBytes+e-this.maxBytes;let i=0;const s=Date.now(),r=Array.from(this.hotQueue);for(const e of r){const t=this.cache.get(e);t&&!t.isPinned&&s-t.lastAccessTime>5e3&&(this.hotQueue.delete(e),this.coldQueue.add(e))}const n=Array.from(this.coldQueue).map((e=>({key:e,tile:this.cache.get(e)}))).filter((e=>e.tile&&!e.tile.isPinned)).sort(((e,t)=>(e.tile?.lastAccessTime??0)-(t.tile?.lastAccessTime??0)));for(const{key:e,tile:s}of n){if(i>=t||!s)break;i+=s.byteSize,this.removeTile(e)}if(i<t){const e=Array.from(this.hotQueue).map((e=>({key:e,tile:this.cache.get(e)}))).filter((e=>e.tile&&!e.tile.isPinned)).sort(((e,t)=>(e.tile?.lastAccessTime??0)-(t.tile?.lastAccessTime??0)));for(const{key:s,tile:r}of e){if(i>=t||!r)break;i+=r.byteSize,this.removeTile(s)}}}removeTile(e){const t=this.cache.get(e);t&&(t.imageData.close(),this.cache.delete(e),this.hotQueue.delete(e),this.coldQueue.delete(e),this.pinnedTiles.delete(e),this.currentBytes-=t.byteSize)}calculateTileMemorySize(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"bitmap";if("bitmap"===i)return e*t*4;const s=e*t;return"jpeg"===i?Math.ceil(4*s*.15):Math.ceil(4*s*.4)}}c(new class{constructor(){i(this,"offscreenRendererMap",new Map),i(this,"canvasSessionIdCounter",0),i(this,"sharedRenderQueue",null),i(this,"tileCache",new P(256)),i(this,"renderChannel",null)}async setupRenderMessageChannel(e){this.renderChannel=u(e)}async releaseRenderer(e){const t=this.offscreenRendererMap.get(e);t&&(t.dispose(),this.offscreenRendererMap.delete(e))}async beginRenderer(e,t,i,s){!function(e,t){if(!e)throw new x(`Assertion failed: ${t||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}(this.renderChannel,"Setup render channel first"),this.sharedRenderQueue||(this.sharedRenderQueue=new C(this.renderChannel));const r=`page-${t}-${this.canvasSessionIdCounter++}`,n=new z(e,r,this.sharedRenderQueue,this.tileCache,i,t,s);return this.offscreenRendererMap.set(r,n),r}async updateViewport(e,t){const i=this.offscreenRendererMap.get(e);i?i.updateViewport(t):console.warn(`No renderer found for session ${e}`)}async endRenderer(e){const t=this.offscreenRendererMap.get(e);t?(t.dispose(),this.offscreenRendererMap.delete(e)):console.warn(`No renderer found for session ${e}`)}})})();',"Worker",void 0,void 0)}},55512:e=>{e.exports=function(e,t,i,s){var r=self||window;try{try{var n;try{n=new r.Blob([e])}catch(t){(n=new(r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder)).append(e),n=n.getBlob()}var a=r.URL||r.webkitURL,o=a.createObjectURL(n),h=new r[t](o,i);return a.revokeObjectURL(o),h}catch(s){return new r[t]("data:application/javascript,".concat(encodeURIComponent(e)),i)}}catch(e){if(!s)throw Error("Inline worker is not supported");return new r[t](s,i)}}}}]);