@nutrient-sdk/viewer 1.10.0-nightly.20251119 → 1.10.0-nightly.20251120

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 (53) hide show
  1. package/ACKNOWLEDGEMENTS.md +107 -0
  2. package/dist/nutrient-viewer-lib/{chunk-848-6743c6c553676648.js → chunk-848-dd2408813c9363ab.js} +1 -1
  3. package/dist/nutrient-viewer-lib/{chunk-core-worker-5ddaded5cecb8e55.js → chunk-core-worker-962f1b269765b7a3.js} +2 -2
  4. package/dist/nutrient-viewer-lib/{chunk-gdpicture-89e1be876edb3cbc.js → chunk-gdpicture-da7b45c63fda703f.js} +1 -1
  5. package/dist/nutrient-viewer-lib/{chunk-gdpicture-worker-23da641062b18a34.js → chunk-gdpicture-worker-4aee0019547aa9b7.js} +2 -2
  6. package/dist/nutrient-viewer-lib/{chunk-lazy-sha-8eec681bee9b6135.js → chunk-lazy-sha-77da462253e8c154.js} +1 -1
  7. package/dist/nutrient-viewer-lib/{chunk-locale-ar-f938a3077dd46db8.js → chunk-locale-ar-b5b49f7fdf04fe35.js} +1 -1
  8. package/dist/nutrient-viewer-lib/{chunk-locale-cs-acdf522ee50d2cdd.js → chunk-locale-cs-192ef6d5b5e69923.js} +1 -1
  9. package/dist/nutrient-viewer-lib/{chunk-locale-cy-b996d203feff0e8f.js → chunk-locale-cy-e5d89a7df4d5b3a6.js} +1 -1
  10. package/dist/nutrient-viewer-lib/{chunk-locale-da-c9f2364cb1be8ff4.js → chunk-locale-da-585edc6ee1c7643b.js} +1 -1
  11. package/dist/nutrient-viewer-lib/{chunk-locale-de-5cd38ebc084c9526.js → chunk-locale-de-af58af84a8386a10.js} +1 -1
  12. package/dist/nutrient-viewer-lib/{chunk-locale-el-e3fbff3dc9c06141.js → chunk-locale-el-1d2eef87acc63b0d.js} +1 -1
  13. package/dist/nutrient-viewer-lib/{chunk-locale-en-GB-6e9ab711095d4943.js → chunk-locale-en-GB-70cb17a9e1ae95a8.js} +1 -1
  14. package/dist/nutrient-viewer-lib/{chunk-locale-es-40d9b9360f2b2788.js → chunk-locale-es-f1f45c914c23f69d.js} +1 -1
  15. package/dist/nutrient-viewer-lib/{chunk-locale-fi-4356676d2464e72c.js → chunk-locale-fi-a5abf93a62b94c2a.js} +1 -1
  16. package/dist/nutrient-viewer-lib/{chunk-locale-fr-07ff00da08aa610e.js → chunk-locale-fr-40da1264307e92ac.js} +1 -1
  17. package/dist/nutrient-viewer-lib/{chunk-locale-fr-CA-7886225ae07beb9e.js → chunk-locale-fr-CA-07b5e8fb08e6d891.js} +1 -1
  18. package/dist/nutrient-viewer-lib/{chunk-locale-he-0fb493b175ec62a2.js → chunk-locale-he-7b2de21b840f4838.js} +1 -1
  19. package/dist/nutrient-viewer-lib/{chunk-locale-hr-c3ed1ebbb9767974.js → chunk-locale-hr-001cfb8a9916d645.js} +1 -1
  20. package/dist/nutrient-viewer-lib/{chunk-locale-id-9710924a954008bd.js → chunk-locale-id-8d5cf9e928e7a2dc.js} +1 -1
  21. package/dist/nutrient-viewer-lib/{chunk-locale-it-3b12621448371ecb.js → chunk-locale-it-389b2165dfec6f44.js} +1 -1
  22. package/dist/nutrient-viewer-lib/{chunk-locale-ja-ea053eb9183585ea.js → chunk-locale-ja-859394bad0414941.js} +1 -1
  23. package/dist/nutrient-viewer-lib/{chunk-locale-ko-3ab3e85823112e68.js → chunk-locale-ko-98e16acd46445abe.js} +1 -1
  24. package/dist/nutrient-viewer-lib/{chunk-locale-ms-d5cab188363823b1.js → chunk-locale-ms-6747dac8ac3f0e70.js} +1 -1
  25. package/dist/nutrient-viewer-lib/{chunk-locale-nb-NO-89f6486ac00a302c.js → chunk-locale-nb-NO-5562b6d5d689fc82.js} +1 -1
  26. package/dist/nutrient-viewer-lib/{chunk-locale-nl-d7bf80a93245069e.js → chunk-locale-nl-7a9bf9bb6da8431e.js} +1 -1
  27. package/dist/nutrient-viewer-lib/{chunk-locale-pl-e410a0841014c104.js → chunk-locale-pl-32f304ccc5faeea3.js} +1 -1
  28. package/dist/nutrient-viewer-lib/{chunk-locale-pt-3c841b17660146ad.js → chunk-locale-pt-0418f768a1103da7.js} +1 -1
  29. package/dist/nutrient-viewer-lib/{chunk-locale-pt-PT-2edfe345df049de6.js → chunk-locale-pt-PT-144611b6853976f0.js} +1 -1
  30. package/dist/nutrient-viewer-lib/{chunk-locale-ru-bfa148d85fe524b8.js → chunk-locale-ru-723d14859095a28f.js} +1 -1
  31. package/dist/nutrient-viewer-lib/{chunk-locale-sk-06a23f42d633d425.js → chunk-locale-sk-b3079c6e6eec73b2.js} +1 -1
  32. package/dist/nutrient-viewer-lib/{chunk-locale-sl-b057e63ae0c84052.js → chunk-locale-sl-8adca292acdfdfef.js} +1 -1
  33. package/dist/nutrient-viewer-lib/{chunk-locale-sv-6c55ee3bf57dba81.js → chunk-locale-sv-9c844221012f20c4.js} +1 -1
  34. package/dist/nutrient-viewer-lib/{chunk-locale-th-0c1569552781c445.js → chunk-locale-th-e287c6b2d97cf1a5.js} +1 -1
  35. package/dist/nutrient-viewer-lib/{chunk-locale-tr-0d5c86df7f7e312e.js → chunk-locale-tr-27c405500de1b28f.js} +1 -1
  36. package/dist/nutrient-viewer-lib/{chunk-locale-uk-d95103be848ebd0c.js → chunk-locale-uk-78649e23332698d9.js} +1 -1
  37. package/dist/nutrient-viewer-lib/{chunk-locale-zh-Hans-c6fee4bce5c24ba3.js → chunk-locale-zh-Hans-ef9dbb45cd9f64df.js} +1 -1
  38. package/dist/nutrient-viewer-lib/{chunk-locale-zh-Hant-87a0fa9c203fc904.js → chunk-locale-zh-Hant-44abba328473b188.js} +1 -1
  39. package/dist/nutrient-viewer-lib/{chunk-offscreen-renderer-worker-1a9ad6a7f8c81a9e.js → chunk-offscreen-renderer-worker-4c3c4266ecaa02fe.js} +2 -2
  40. package/dist/nutrient-viewer-lib/{chunk-server-d85bcc0a84628dd4.js → chunk-server-f56855cc3aaa518d.js} +2 -2
  41. package/dist/nutrient-viewer-lib/{chunk-server-instant-edff940adbaa6c8e.js → chunk-server-instant-b8d980eaeb2892fe.js} +1 -1
  42. package/dist/nutrient-viewer-lib/{chunk-server-rest-33de4797e8d3c7db.js → chunk-server-rest-a0157c5439c61a36.js} +1 -1
  43. package/dist/nutrient-viewer-lib/{chunk-standalone-86a18166bdfddad6.js → chunk-standalone-e5f8297ec11fd429.js} +1 -1
  44. package/dist/nutrient-viewer-lib/{chunk-standalone-server-915e38540a585049.js → chunk-standalone-server-08c76063732a4481.js} +1 -1
  45. package/dist/nutrient-viewer-lib/core-worker.js +2 -2
  46. package/dist/nutrient-viewer-lib/dark-402cc98d3d69bff8.css +1 -1
  47. package/dist/nutrient-viewer-lib/gdpicture-worker.js +1 -1
  48. package/dist/nutrient-viewer-lib/{nutrient-viewer-1.10.0-4857393.css → nutrient-viewer-1.10.0-f767c1d.css} +1 -1
  49. package/dist/nutrient-viewer-lib/nutrient-viewer-9303291e7f6b26aa.wasm.js +1 -1
  50. package/dist/nutrient-viewer-lib/{nutrient-viewer-a50830153c31e08f.wasm → nutrient-viewer-f824f16c3255182d.wasm} +0 -0
  51. package/dist/nutrient-viewer-lib/offscreen-render-worker.js +1 -1
  52. package/dist/nutrient-viewer.js +2 -2
  53. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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([[11],{37979:(t,e,n)=>{n.d(e,{default:()=>a});var o=n(55512),r=n.n(o);function a(){return r()('/*!\n * Nutrient Web SDK 1.10.0-4857393 (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";const t=function t(e){let n;return n=e instanceof Error?e:new Error(e),Object.setPrototypeOf(n,t.prototype),n};t.prototype=Object.create(Error.prototype,{name:{value:"PSPDFKitError",enumerable:!1}});const e=t;function n(t,n){if(!t)throw new e(`Assertion failed: ${n||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}["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;async function o(t){const n=(await async function(t){try{const n=await fetch(t).catch((n=>{throw new e(`Error fetching dynamic fonts file ${t}. ${n}`)}));if(200!==n.status)throw new e(`Error fetching dynamic fonts file ${t}. Status code: ${n.status}`);return n}catch(t){throw t}}(t)).json().catch((n=>{throw new e(`Error parsing dynamic fonts file ${t}. ${n}`)}));return n}let r=function(t){return t[t.pdf_a_1a=0]="pdf_a_1a",t[t.pdf_a_1b=1]="pdf_a_1b",t[t.pdf_a_2a=2]="pdf_a_2a",t[t.pdf_a_2u=3]="pdf_a_2u",t[t.pdf_a_2b=4]="pdf_a_2b",t[t.pdf_a_3a=5]="pdf_a_3a",t[t.pdf_a_3u=6]="pdf_a_3u",t[t.pdf_a_3b=7]="pdf_a_3b",t[t.pdf_a_4=8]="pdf_a_4",t[t.pdf_a_4e=9]="pdf_a_4e",t[t.pdf_a_4f=10]="pdf_a_4f",t}({});const a="/create.pdf",i="/save.pdf",s="/create.docx",c="/save.docx",l="/templateData.json",f="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope;let d=null,u=null;function p(t){let e;n(u,"GdPicture WebAssembly is not loaded.");for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];for(const t of r)e=Object.assign(r[0],t);const i=JSON.stringify({type:t,...e}),s=JSON.parse(u.CommandHandler(i));if(!s.success)throw new Error(s.errorReason+": "+s.errorMessage+"\\n"+s.error);return s}const m={allMarkup:0,simpleMarkup:1,noMarkup:2,original:3},y=m.noMarkup,_={documentMarkupMode:y};function w(t){if(!t)return _;if(!t.documentMarkupMode)return{...t,documentMarkupMode:y};if(!(t.documentMarkupMode in m))throw new Error(`Invalid documentMarkupMode value: ${t.documentMarkupMode}. Allowed values are: ${Object.keys(m).join(", ")}`);return{...t,documentMarkupMode:m[t.documentMarkupMode]}}const b={"application/msword":"doc","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.ms-excel":"xls","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/vnd.ms-powerpoint":"ppt","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","text/plain":"txt"},g=new class{_mountCustomFonts(t,e){n(d,"WebAssembly module not loaded."),d.FS.mkdir(e);{const n=f?d.FS.filesystems.WORKERFS:d.FS.filesystems.MEMFS;d.FS.mount(n,{blobs:t},e)}}async loadModule(t,e,n,r,a,i,s){const{Assemblies:c,Module:l}=await async function(t,e){if("string"==typeof t){const n="nutrient-viewer-lib/",o=`${n}gdpicture-aa63976b/jit`,r=`${n}gdpicture-aa63976b/aot`;let a,i;e?(a=`${t}${r}/initDotnet.js`,i=`${t}${r}`):(a=`${t}${o}/initDotnet.js`,i=`${t}${o}`);const{initDotnet:s}=await import(a);return s(i,((t,e,n,o,r)=>"blazor.boot.json"===e?fetch(n,{credentials:"same-origin"}):null))}throw new Error("GdPicture WASM loader not implemented")}(t,e);u=c.GdPictureWasm.API,d=l,p("gdpicture/setLicense",{origin:n},{licenseKey:r||"DEMO_PSPDFKIT_WEB"});const f=a?"/fonts":"";if(a&&!d.FS.analyzePath(f).exists&&(this._mountCustomFonts(a,f),p("gdpicture/setFonts",{fontPaths:[f]})),i){const t=await o(i);p("gdpicture/setDynamicFontLoading",{baseUrl:i.split("/").slice(0,-1).join("/"),allowedFonts:t.availableFonts,v:1})}s&&p("gdpicture/setFontSubstitutions",{fontSubstitutions:s})}toPdf(t,e,n,o,s){let c=a;if(s&&"pdf"!==s)c+=`.${s}`;else if(o&&"application/pdf"!==o){const t=o.toLowerCase(),e=b.hasOwnProperty(t)&&b[t];e&&(c+=`.${e}`)}d.FS.writeFile(c,new Uint8Array(t));const l={file:i,format:"pdf",conformance:e&&e in r?e:void 0,officeConversionSettings:w(n)};try{return p("gdpicture/process",{input:{file:c},output:l}),d.FS.readFile(i).buffer}finally{try{d.FS.unlink(i),d.FS.unlink(c)}catch(t){}}}toOffice(t,e){d.FS.writeFile(a,new Uint8Array(t));const n=`/save.${e}`;try{return p("gdpicture/process",{input:{file:a},output:{file:n,format:e}}),d.FS.readFile(n).buffer}finally{try{d.FS.unlink(n),d.FS.unlink(a)}catch(t){console.log(t.message)}}}async populateDocumentTemplate(t,e){let n;d.FS.writeFile(s,new Uint8Array(t));try{n=JSON.stringify(e,null,2)}catch(t){throw new Error("Invalid config data")}d.FS.writeFile(l,n);try{return p("gdpicture/process-office-template",{inputFile:s,modelAndConfigFile:l,outputFile:c}),d.FS.readFile(c).buffer}finally{try{d.FS.unlink(c),d.FS.unlink(l),d.FS.unlink(s)}catch(t){console.log(t.message)}}}},F=self;F.global=F,F.module={},F.onmessage=async t=>{let e,n,{data:o}=t;try{const t=await g[o.action](...o.args);if(e={id:o.id,result:t},Array.isArray(t)){const e=t.filter((t=>t instanceof ArrayBuffer));e.length>0&&(n=e)}t instanceof ArrayBuffer&&(n=[t])}catch(t){const r=[...o.args].filter((t=>t instanceof ArrayBuffer));r.length>0&&(n=r),e={id:o.id,error:t.message||t.toString(),callArgs:o.args}}F.postMessage(e,n)}})();',"Worker",void 0,void 0)}},55512:t=>{t.exports=function(t,e,n,o){var r=self||window;try{try{var a;try{a=new r.Blob([t])}catch(e){(a=new(r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder)).append(t),a=a.getBlob()}var i=r.URL||r.webkitURL,s=i.createObjectURL(a),c=new r[e](s,n);return i.revokeObjectURL(s),c}catch(o){return new r[e]("data:application/javascript,".concat(encodeURIComponent(t)),n)}}catch(t){if(!o)throw Error("Inline worker is not supported");return new r[e](o,n)}}}}]);
13
+ "use strict";(globalThis.webpackChunkNutrientViewer=globalThis.webpackChunkNutrientViewer||[]).push([[11],{37979:(t,e,n)=>{n.d(e,{default:()=>a});var o=n(55512),r=n.n(o);function a(){return r()('/*!\n * Nutrient Web SDK 1.10.0-f767c1d (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";const t=function t(e){let n;return n=e instanceof Error?e:new Error(e),Object.setPrototypeOf(n,t.prototype),n};t.prototype=Object.create(Error.prototype,{name:{value:"PSPDFKitError",enumerable:!1}});const e=t;function n(t,n){if(!t)throw new e(`Assertion failed: ${n||"Condition not met"}\\n\\nFor further assistance, please go to: https://www.nutrient.io/support/request`)}["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;async function o(t){const n=(await async function(t){try{const n=await fetch(t).catch((n=>{throw new e(`Error fetching dynamic fonts file ${t}. ${n}`)}));if(200!==n.status)throw new e(`Error fetching dynamic fonts file ${t}. Status code: ${n.status}`);return n}catch(t){throw t}}(t)).json().catch((n=>{throw new e(`Error parsing dynamic fonts file ${t}. ${n}`)}));return n}let r=function(t){return t[t.pdf_a_1a=0]="pdf_a_1a",t[t.pdf_a_1b=1]="pdf_a_1b",t[t.pdf_a_2a=2]="pdf_a_2a",t[t.pdf_a_2u=3]="pdf_a_2u",t[t.pdf_a_2b=4]="pdf_a_2b",t[t.pdf_a_3a=5]="pdf_a_3a",t[t.pdf_a_3u=6]="pdf_a_3u",t[t.pdf_a_3b=7]="pdf_a_3b",t[t.pdf_a_4=8]="pdf_a_4",t[t.pdf_a_4e=9]="pdf_a_4e",t[t.pdf_a_4f=10]="pdf_a_4f",t}({});const a="/create.pdf",i="/save.pdf",s="/create.docx",c="/save.docx",l="/templateData.json",f="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope;let d=null,u=null;function p(t){let e;n(u,"GdPicture WebAssembly is not loaded.");for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];for(const t of r)e=Object.assign(r[0],t);const i=JSON.stringify({type:t,...e}),s=JSON.parse(u.CommandHandler(i));if(!s.success)throw new Error(s.errorReason+": "+s.errorMessage+"\\n"+s.error);return s}const m={allMarkup:0,simpleMarkup:1,noMarkup:2,original:3},y=m.noMarkup,_={documentMarkupMode:y};function w(t){if(!t)return _;if(!t.documentMarkupMode)return{...t,documentMarkupMode:y};if(!(t.documentMarkupMode in m))throw new Error(`Invalid documentMarkupMode value: ${t.documentMarkupMode}. Allowed values are: ${Object.keys(m).join(", ")}`);return{...t,documentMarkupMode:m[t.documentMarkupMode]}}const b={"application/msword":"doc","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.ms-excel":"xls","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/vnd.ms-powerpoint":"ppt","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","text/plain":"txt"},g=new class{_mountCustomFonts(t,e){n(d,"WebAssembly module not loaded."),d.FS.mkdir(e);{const n=f?d.FS.filesystems.WORKERFS:d.FS.filesystems.MEMFS;d.FS.mount(n,{blobs:t},e)}}async loadModule(t,e,n,r,a,i,s){const{Assemblies:c,Module:l}=await async function(t,e){if("string"==typeof t){const n="nutrient-viewer-lib/",o=`${n}gdpicture-aa63976b/jit`,r=`${n}gdpicture-aa63976b/aot`;let a,i;e?(a=`${t}${r}/initDotnet.js`,i=`${t}${r}`):(a=`${t}${o}/initDotnet.js`,i=`${t}${o}`);const{initDotnet:s}=await import(a);return s(i,((t,e,n,o,r)=>"blazor.boot.json"===e?fetch(n,{credentials:"same-origin"}):null))}throw new Error("GdPicture WASM loader not implemented")}(t,e);u=c.GdPictureWasm.API,d=l,p("gdpicture/setLicense",{origin:n},{licenseKey:r||"DEMO_PSPDFKIT_WEB"});const f=a?"/fonts":"";if(a&&!d.FS.analyzePath(f).exists&&(this._mountCustomFonts(a,f),p("gdpicture/setFonts",{fontPaths:[f]})),i){const t=await o(i);p("gdpicture/setDynamicFontLoading",{baseUrl:i.split("/").slice(0,-1).join("/"),allowedFonts:t.availableFonts,v:1})}s&&p("gdpicture/setFontSubstitutions",{fontSubstitutions:s})}toPdf(t,e,n,o,s){let c=a;if(s&&"pdf"!==s)c+=`.${s}`;else if(o&&"application/pdf"!==o){const t=o.toLowerCase(),e=b.hasOwnProperty(t)&&b[t];e&&(c+=`.${e}`)}d.FS.writeFile(c,new Uint8Array(t));const l={file:i,format:"pdf",conformance:e&&e in r?e:void 0,officeConversionSettings:w(n)};try{return p("gdpicture/process",{input:{file:c},output:l}),d.FS.readFile(i).buffer}finally{try{d.FS.unlink(i),d.FS.unlink(c)}catch(t){}}}toOffice(t,e){d.FS.writeFile(a,new Uint8Array(t));const n=`/save.${e}`;try{return p("gdpicture/process",{input:{file:a},output:{file:n,format:e}}),d.FS.readFile(n).buffer}finally{try{d.FS.unlink(n),d.FS.unlink(a)}catch(t){console.log(t.message)}}}async populateDocumentTemplate(t,e){let n;d.FS.writeFile(s,new Uint8Array(t));try{n=JSON.stringify(e,null,2)}catch(t){throw new Error("Invalid config data")}d.FS.writeFile(l,n);try{return p("gdpicture/process-office-template",{inputFile:s,modelAndConfigFile:l,outputFile:c}),d.FS.readFile(c).buffer}finally{try{d.FS.unlink(c),d.FS.unlink(l),d.FS.unlink(s)}catch(t){console.log(t.message)}}}},F=self;F.global=F,F.module={},F.onmessage=async t=>{let e,n,{data:o}=t;try{const t=await g[o.action](...o.args);if(e={id:o.id,result:t},Array.isArray(t)){const e=t.filter((t=>t instanceof ArrayBuffer));e.length>0&&(n=e)}t instanceof ArrayBuffer&&(n=[t])}catch(t){const r=[...o.args].filter((t=>t instanceof ArrayBuffer));r.length>0&&(n=r),e={id:o.id,error:t.message||t.toString(),callArgs:o.args}}F.postMessage(e,n)}})();',"Worker",void 0,void 0)}},55512:t=>{t.exports=function(t,e,n,o){var r=self||window;try{try{var a;try{a=new r.Blob([t])}catch(e){(a=new(r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder)).append(t),a=a.getBlob()}var i=r.URL||r.webkitURL,s=i.createObjectURL(a),c=new r[e](s,n);return i.revokeObjectURL(s),c}catch(o){return new r[e]("data:application/javascript,".concat(encodeURIComponent(t)),n)}}catch(t){if(!o)throw Error("Inline worker is not supported");return new r[e](o,n)}}}}]);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Nutrient Web SDK 1.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (https://www.nutrient.io/sdk/web)
2
+ * Nutrient Web SDK 1.10.0-f767c1d (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.10.0-4857393 (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.10.0-f767c1d (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)}}}}]);