@eternalheart/vue-file-preview 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/FilePreviewContent.vue.d.ts +21 -0
- package/lib/FilePreviewContent.vue.d.ts.map +1 -0
- package/lib/FilePreviewEmbed.vue.d.ts +23 -0
- package/lib/FilePreviewEmbed.vue.d.ts.map +1 -0
- package/lib/FilePreviewModal.vue.d.ts +19 -0
- package/lib/FilePreviewModal.vue.d.ts.map +1 -0
- package/lib/__vite-browser-external-BcPniuRQ.cjs +2 -0
- package/lib/__vite-browser-external-BcPniuRQ.cjs.map +1 -0
- package/lib/__vite-browser-external-DYxpcVy9.js +5 -0
- package/lib/__vite-browser-external-DYxpcVy9.js.map +1 -0
- package/lib/composables/useAudioPlayer.d.ts +25 -0
- package/lib/composables/useAudioPlayer.d.ts.map +1 -0
- package/lib/composables/useScrollLock.d.ts +8 -0
- package/lib/composables/useScrollLock.d.ts.map +1 -0
- package/lib/index.cjs +30 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.css +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.mjs +16260 -0
- package/lib/index.mjs.map +1 -0
- package/lib/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/78-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/78-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/lib/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/lib/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/lib/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/lib/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/lib/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/lib/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/lib/pdfjs/cmaps/LICENSE +36 -0
- package/lib/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/Roman.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/lib/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/lib/pdfjs/cmaps/V.bcmap +0 -0
- package/lib/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/lib/pdfjs/pdf.worker.min.mjs +21 -0
- package/lib/renderers/AudioRenderer.vue.d.ts +7 -0
- package/lib/renderers/AudioRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/DocxRenderer.vue.d.ts +6 -0
- package/lib/renderers/DocxRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/EpubRenderer.vue.d.ts +17 -0
- package/lib/renderers/EpubRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/ImageRenderer.vue.d.ts +18 -0
- package/lib/renderers/ImageRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/MarkdownRenderer.vue.d.ts +6 -0
- package/lib/renderers/MarkdownRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/MsgRenderer.vue.d.ts +6 -0
- package/lib/renderers/MsgRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/PdfRenderer.vue.d.ts +16 -0
- package/lib/renderers/PdfRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/PptxRenderer.vue.d.ts +9 -0
- package/lib/renderers/PptxRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/TextRenderer.vue.d.ts +7 -0
- package/lib/renderers/TextRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/UnsupportedRenderer.vue.d.ts +11 -0
- package/lib/renderers/UnsupportedRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/VideoRenderer.vue.d.ts +7 -0
- package/lib/renderers/VideoRenderer.vue.d.ts.map +1 -0
- package/lib/renderers/XlsxRenderer.vue.d.ts +6 -0
- package/lib/renderers/XlsxRenderer.vue.d.ts.map +1 -0
- package/lib/types.d.ts +23 -0
- package/lib/types.d.ts.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/renderers/ImageRenderer.vue","../../../node_modules/.pnpm/pdfjs-dist@4.8.69/node_modules/pdfjs-dist/build/pdf.mjs","../src/renderers/PdfRenderer.vue","../src/renderers/DocxRenderer.vue","../src/renderers/XlsxRenderer.vue","../src/renderers/PptxRenderer.vue","../src/renderers/MsgRenderer.vue","../src/renderers/EpubRenderer.vue","../src/renderers/VideoRenderer.vue","../src/composables/useAudioPlayer.ts","../src/renderers/AudioRenderer.vue","../src/renderers/MarkdownRenderer.vue","../src/renderers/TextRenderer.vue","../src/renderers/UnsupportedRenderer.vue","../src/FilePreviewContent.vue","../src/composables/useScrollLock.ts","../src/FilePreviewModal.vue","../src/FilePreviewEmbed.vue","../src/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount, computed } from 'vue';\nimport { formatFileSize } from '@eternalheart/file-preview-core';\n\nconst props = defineProps<{\n url: string;\n zoom: number;\n rotation: number;\n resetKey?: number;\n fileSize?: number;\n}>();\n\nconst emit = defineEmits<{\n (e: 'zoomChange', zoom: number): void;\n (e: 'naturalWidthChange', width: number): void;\n (e: 'naturalHeightChange', height: number): void;\n}>();\n\nconst loaded = ref(false);\nconst error = ref<string | null>(null);\nconst position = ref({ x: 0, y: 0 });\nconst isDragging = ref(false);\nlet dragStart = { x: 0, y: 0 };\nconst internalZoom = ref(1);\nconst naturalSize = ref({ width: 0, height: 0 });\n\nconst imgRef = ref<HTMLImageElement | null>(null);\nconst containerRef = ref<HTMLDivElement | null>(null);\n\nwatch(\n () => props.url,\n () => {\n loaded.value = false;\n error.value = null;\n position.value = { x: 0, y: 0 };\n internalZoom.value = 1;\n }\n);\n\nwatch(\n () => props.zoom,\n (z) => {\n internalZoom.value = z;\n }\n);\n\nwatch(\n () => props.resetKey,\n () => {\n position.value = { x: 0, y: 0 };\n }\n);\n\nconst clampPosition = (pos: { x: number; y: number }, currentZoom: number) => {\n const container = containerRef.value;\n if (!container || naturalSize.value.width === 0) return pos;\n\n const containerW = container.clientWidth;\n const containerH = container.clientHeight;\n const imgW = naturalSize.value.width * currentZoom;\n const imgH = naturalSize.value.height * currentZoom;\n\n const margin = Math.min(80, containerW * 0.15, containerH * 0.15);\n const rangeX = (containerW + imgW) / 2 - margin;\n const rangeY = (containerH + imgH) / 2 - margin;\n\n return {\n x: rangeX > 0 ? Math.max(-rangeX, Math.min(rangeX, pos.x)) : 0,\n y: rangeY > 0 ? Math.max(-rangeY, Math.min(rangeY, pos.y)) : 0,\n };\n};\n\nconst handleLoad = (e: Event) => {\n loaded.value = true;\n const img = e.currentTarget as HTMLImageElement;\n naturalSize.value = { width: img.naturalWidth, height: img.naturalHeight };\n emit('naturalWidthChange', img.naturalWidth);\n emit('naturalHeightChange', img.naturalHeight);\n};\n\nconst handleError = () => {\n error.value = '图片加载失败';\n loaded.value = true;\n};\n\nconst handleDoubleClick = () => {\n position.value = { x: 0, y: 0 };\n internalZoom.value = 1;\n emit('zoomChange', 1);\n};\n\n// 鼠标滚轮缩放\nconst handleWheelNative = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const container = containerRef.value;\n if (!container) return;\n\n const rect = container.getBoundingClientRect();\n const mouseX = e.clientX - rect.left - rect.width / 2;\n const mouseY = e.clientY - rect.top - rect.height / 2;\n\n const delta = e.deltaY > 0 ? -0.05 : 0.05;\n const prev = internalZoom.value;\n const newZoom = Math.max(0.01, Math.min(10, prev + delta));\n const scale = newZoom / prev;\n\n position.value = clampPosition(\n {\n x: mouseX - scale * (mouseX - position.value.x),\n y: mouseY - scale * (mouseY - position.value.y),\n },\n newZoom\n );\n\n internalZoom.value = newZoom;\n emit('zoomChange', newZoom);\n};\n\nonMounted(() => {\n const container = containerRef.value;\n if (container) {\n container.addEventListener('wheel', handleWheelNative, { passive: false });\n }\n});\n\nonBeforeUnmount(() => {\n const container = containerRef.value;\n if (container) {\n container.removeEventListener('wheel', handleWheelNative);\n }\n});\n\nconst handleMouseDown = (e: MouseEvent) => {\n if (e.button !== 0) return;\n isDragging.value = true;\n dragStart = {\n x: e.clientX - position.value.x,\n y: e.clientY - position.value.y,\n };\n};\n\nconst handleMouseMove = (e: MouseEvent) => {\n if (!isDragging.value) return;\n position.value = clampPosition(\n {\n x: e.clientX - dragStart.x,\n y: e.clientY - dragStart.y,\n },\n internalZoom.value\n );\n};\n\nconst handleMouseUp = () => {\n isDragging.value = false;\n};\n\nconst transformStyle = computed(() => ({\n transform: `translate(${position.value.x}px, ${position.value.y}px) scale(${internalZoom.value}) rotate(${props.rotation}deg)`,\n transformOrigin: 'center',\n transition: isDragging.value ? 'none' : 'transform 0.3s ease-out',\n opacity: loaded.value ? 1 : 0,\n}));\n\nconst sizeText = computed(() => {\n if (props.fileSize == null) return '';\n return ` · ${formatFileSize(props.fileSize)}`;\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"vfp-relative vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full vfp-overflow-hidden\"\n :style=\"{ cursor: isDragging ? 'grabbing' : 'grab' }\"\n @mousedown=\"handleMouseDown\"\n @mousemove=\"handleMouseMove\"\n @mouseup=\"handleMouseUp\"\n @mouseleave=\"handleMouseUp\"\n >\n <div v-if=\"!loaded && !error\" class=\"vfp-flex vfp-items-center vfp-justify-center\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-if=\"error\" class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n\n <img\n ref=\"imgRef\"\n :src=\"url\"\n alt=\"Preview\"\n :class=\"['vfp-max-w-none vfp-select-none', !loaded && 'vfp-hidden']\"\n :style=\"transformStyle\"\n :draggable=\"false\"\n @load=\"handleLoad\"\n @error=\"handleError\"\n @dblclick=\"handleDoubleClick\"\n />\n\n <div\n v-if=\"loaded && !error && naturalSize.width > 0\"\n class=\"vfp-absolute vfp-bottom-2 vfp-right-3 vfp-text-[10px] vfp-text-white/30 hover:vfp-text-white/80 vfp-transition-colors vfp-pointer-events-auto vfp-select-none vfp-cursor-default\"\n >\n {{ naturalSize.width }} × {{ naturalSize.height }}{{ sizeText }}\n </div>\n </div>\n</template>\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this.#updateModeCapability.resolve();\n return;\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n get isSelected() {\n return this._uiManager.isSelected(this);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n if (isSelected) {\n this.div.classList.add(\"moving\");\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n const pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, {\n passive: true,\n capture: true,\n signal\n });\n }\n const pointerUpCallback = () => {\n ac.abort();\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\nif (isNodeJS) {\n var packageCapability = Promise.withResolvers();\n var packageMap = null;\n const loadPackages = async () => {\n const fs = await import(/*webpackIgnore: true*/\"fs\"),\n http = await import(/*webpackIgnore: true*/\"http\"),\n https = await import(/*webpackIgnore: true*/\"https\"),\n url = await import(/*webpackIgnore: true*/\"url\");\n let canvas, path2d;\n return new Map(Object.entries({\n fs,\n http,\n https,\n url,\n canvas,\n path2d\n }));\n };\n loadPackages().then(map => {\n packageMap = map;\n packageCapability.resolve();\n }, reason => {\n warn(`loadPackages: ${reason}`);\n packageMap = new Map();\n packageCapability.resolve();\n });\n}\nclass NodePackages {\n static get promise() {\n return packageCapability.promise;\n }\n static get(name) {\n return packageMap?.get(name);\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = NodePackages.get(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const canvas = NodePackages.get(\"canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n const backdropRGB = Util.makeHexColor(...backdrop);\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdropRGB;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdropRGB;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const responseHeaders = new Headers(fullRequestXhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }));\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = NodePackages.get(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nfunction createRequest(url, headers, callback) {\n if (url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n return http.request(url, {\n headers\n }, callback);\n }\n const https = NodePackages.get(\"https\");\n return https.request(url, {\n headers\n }, callback);\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const responseHeaders = new Headers(this._readableStream.headers);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n headers.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isChrome = typeof src.isChrome === \"boolean\" ? src.isChrome : !util_FeatureTest.platform.isFirefox && typeof window !== \"undefined\" && !!window?.chrome;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n if (src.canvasFactory) {\n deprecated(\"`canvasFactory`-instance option, please use `CanvasFactory` instead.\");\n }\n if (src.filterFactory) {\n deprecated(\"`filterFactory`-instance option, please use `FilterFactory` instead.\");\n }\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n })\n };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.8.69\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isChrome,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n let NetworkStream;\n if (isNodeJS) {\n const isFetchSupported = typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n NetworkStream = isFetchSupported && isValidFetchUrl(url) ? PDFFetchStream : PDFNodeStream;\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n if (isNodeJS) {\n return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n }\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.cMapReaderFactory) {\n throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.standardFontDataFactory) {\n throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.8.69\";\nconst build = \"3634dab10\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of inkLists) {\n let points = [];\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n const x = inkList[i] - rect[0];\n const y = rect[3] - inkList[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n get classNamesForDrawing() {\n unreachable(\"Abstract getter `classNamesForDrawing` must be implemented.\");\n }\n get classNamesForOutlining() {\n unreachable(\"Abstract getter `classNamesForOutlining` must be implemented.\");\n }\n get mustRemoveSelfIntersections() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n get mustRemoveSelfIntersections() {\n return true;\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForDrawing() {\n return [\"highlight\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\", \"free\"];\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.drawOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n this.#opacity = opa;\n this.parent?.drawLayer.changeOpacity(this.#id, opa);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.drawOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y - height) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", pointerDown, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(outliner, editor.color, editor._defaultOpacity, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #drawingAC = null;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #pointerdownAC = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer?.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.#addPointerdownListener();\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.#removePointerdownListener();\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this._uiManager._signal\n });\n this.#removePointerdownListener();\n this.#drawingAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#drawingAC);\n this.canvas.addEventListener(\"pointerleave\", this.canvasPointerleave.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointermove\", this.canvasPointermove.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointerup\", this.canvasPointerup.bind(this), {\n signal\n });\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n #addPointerdownListener() {\n if (this.#pointerdownAC) {\n return;\n }\n this.#pointerdownAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#pointerdownAC);\n this.canvas.addEventListener(\"pointerdown\", this.canvasPointerdown.bind(this), {\n signal\n });\n }\n #removePointerdownListener() {\n this.pointerdownAC?.abort();\n this.pointerdownAC = null;\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.#drawingAC?.abort();\n this.#drawingAC = null;\n this.#addPointerdownListener();\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static async deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.div.setAttribute(\"role\", \"figure\");\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width && !this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * outputScale.sx);\n const scaledHeight = Math.ceil(height * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n const canvas = container.querySelector(\"canvas\");\n const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n canvas.remove();\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: imageData.id,\n bitmap: imageData.bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n rect,\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSameRect = serialized.rect.every((x, i) => Math.abs(x - rect[i]) < 1);\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: isSameRect && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n draw(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForDrawing);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForOutlining);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n getSVGRoot(id) {\n return this.#mapping.get(id);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.8.69\";\nconst pdfjsBuild = \"3634dab10\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount, nextTick } from 'vue';\nimport { configurePdfWorker } from '@eternalheart/file-preview-core';\n// @ts-ignore - pdfjs-dist 类型路径\nimport * as pdfjsLib from 'pdfjs-dist/build/pdf.mjs';\n\n// 在模块加载时配置 PDF.js worker(默认走 CDN)\nconfigurePdfWorker(pdfjsLib);\n\ninterface PdfPageProxy {\n getViewport(opts: { scale: number }): { width: number; height: number };\n render(opts: { canvasContext: CanvasRenderingContext2D; viewport: { width: number; height: number } }): {\n promise: Promise<void>;\n };\n}\n\ninterface PdfDocumentProxy {\n numPages: number;\n getPage(pageNumber: number): Promise<PdfPageProxy>;\n destroy(): void;\n}\n\nconst props = defineProps<{\n url: string;\n zoom: number;\n currentPage: number;\n}>();\n\nconst emit = defineEmits<{\n (e: 'pageChange', page: number): void;\n (e: 'totalPagesChange', total: number): void;\n (e: 'pageWidthChange', width: number): void;\n}>();\n\nconst numPages = ref(0);\nconst error = ref<string | null>(null);\nconst containerRef = ref<HTMLDivElement | null>(null);\nlet pdfDoc: PdfDocumentProxy | null = null;\nconst pageElements: HTMLDivElement[] = [];\n\nconst renderPage = async (pageNumber: number, scale: number, container: HTMLDivElement) => {\n if (!pdfDoc) return;\n const page = await pdfDoc.getPage(pageNumber);\n const viewport = page.getViewport({ scale });\n\n const canvas = document.createElement('canvas');\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n canvas.style.maxWidth = '100%';\n canvas.style.height = 'auto';\n canvas.style.borderRadius = '8px';\n canvas.style.display = 'block';\n canvas.style.boxShadow = '0 25px 50px -12px rgba(0,0,0,0.25)';\n canvas.style.filter = 'brightness(0.95) contrast(1.05)';\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n await page.render({ canvasContext: ctx, viewport }).promise;\n\n // 上报第一页原始宽度\n if (pageNumber === 1) {\n const baseViewport = page.getViewport({ scale: 1 });\n emit('pageWidthChange', baseViewport.width);\n }\n\n container.innerHTML = '';\n container.appendChild(canvas);\n\n // 页码标签\n const label = document.createElement('div');\n label.textContent = String(pageNumber);\n label.style.cssText =\n 'position:absolute;top:8px;right:8px;background:rgba(0,0,0,0.6);backdrop-filter:blur(4px);color:white;font-size:12px;padding:4px 12px;border-radius:9999px;';\n container.appendChild(label);\n};\n\nconst renderAll = async () => {\n if (!pdfDoc || !containerRef.value) return;\n const wrapper = containerRef.value.querySelector('.pdf-pages') as HTMLDivElement | null;\n if (!wrapper) return;\n wrapper.innerHTML = '';\n pageElements.length = 0;\n\n for (let i = 1; i <= numPages.value; i++) {\n const pageDiv = document.createElement('div');\n pageDiv.style.cssText = 'position:relative;display:flex;justify-content:center;';\n wrapper.appendChild(pageDiv);\n pageElements.push(pageDiv);\n // eslint-disable-next-line no-await-in-loop\n await renderPage(i, props.zoom, pageDiv);\n }\n};\n\nconst loadPdf = async () => {\n error.value = null;\n numPages.value = 0;\n if (pdfDoc) {\n try {\n pdfDoc.destroy();\n } catch {\n // ignore\n }\n pdfDoc = null;\n }\n\n try {\n const loadingTask = pdfjsLib.getDocument({ url: props.url });\n pdfDoc = (await loadingTask.promise) as PdfDocumentProxy;\n numPages.value = pdfDoc.numPages;\n emit('totalPagesChange', pdfDoc.numPages);\n emit('pageChange', 1);\n await nextTick();\n await renderAll();\n } catch (err) {\n console.error('PDF 加载错误:', err);\n error.value = 'PDF 文件加载失败';\n }\n};\n\nconst handleScroll = () => {\n if (!containerRef.value) return;\n\n const container = containerRef.value;\n const scrollTop = container.scrollTop;\n const containerHeight = container.clientHeight;\n const scrollCenter = scrollTop + containerHeight / 2;\n\n let currentVisiblePage = 1;\n let minDistance = Infinity;\n\n pageElements.forEach((pageEl, idx) => {\n const pageNumber = idx + 1;\n const rect = pageEl.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const pageCenter = rect.top - containerRect.top + rect.height / 2 + scrollTop;\n const distance = Math.abs(pageCenter - scrollCenter);\n\n if (distance < minDistance) {\n minDistance = distance;\n currentVisiblePage = pageNumber;\n }\n });\n\n if (currentVisiblePage !== props.currentPage) {\n emit('pageChange', currentVisiblePage);\n }\n};\n\nonMounted(() => {\n loadPdf();\n if (containerRef.value) {\n containerRef.value.addEventListener('scroll', handleScroll);\n }\n});\n\nwatch(\n () => props.url,\n () => {\n loadPdf();\n }\n);\n\nwatch(\n () => props.zoom,\n () => {\n renderAll();\n }\n);\n\nonBeforeUnmount(() => {\n if (containerRef.value) {\n containerRef.value.removeEventListener('scroll', handleScroll);\n }\n if (pdfDoc) {\n try {\n pdfDoc.destroy();\n } catch {\n // ignore\n }\n pdfDoc = null;\n }\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"vfp-flex vfp-flex-col vfp-items-center vfp-w-full vfp-h-full vfp-overflow-auto vfp-py-4 md:vfp-py-8 vfp-px-2 md:vfp-px-4\"\n >\n <div v-if=\"error\" class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n\n <div v-if=\"!error && numPages === 0\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-min-h-screen\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-show=\"!error && numPages > 0\" class=\"pdf-pages vfp-flex vfp-flex-col vfp-gap-4\" />\n\n <div\n v-if=\"numPages > 0\"\n class=\"vfp-sticky vfp-bottom-2 md:vfp-bottom-4 vfp-mt-4 md:vfp-mt-8 vfp-bg-black/60 vfp-backdrop-blur-xl vfp-text-white vfp-px-4 vfp-py-2 md:vfp-px-6 md:vfp-py-3 vfp-rounded-full vfp-text-xs md:vfp-text-sm vfp-font-medium vfp-shadow-2xl vfp-border vfp-border-white/10\"\n >\n 第 {{ currentPage }} 页 / 共 {{ numPages }} 页\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch, nextTick } from 'vue';\nimport mammoth from 'mammoth';\n\nconst PAGE_HEIGHT = 1123;\nconst PAGE_PADDING_Y = 60;\nconst PAGE_PADDING_X = 50;\nconst PAGE_CONTENT_HEIGHT = PAGE_HEIGHT - PAGE_PADDING_Y * 2;\nconst PAGE_GAP = 24;\n\nconst props = defineProps<{\n url: string;\n}>();\n\nconst html = ref('');\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst pages = ref<string[]>([]);\nconst measureRef = ref<HTMLDivElement | null>(null);\n\nconst loadDocx = async () => {\n loading.value = true;\n error.value = null;\n html.value = '';\n pages.value = [];\n\n try {\n const response = await fetch(props.url);\n if (!response.ok) throw new Error('文件加载失败');\n const arrayBuffer = await response.arrayBuffer();\n const result = await mammoth.convertToHtml({ arrayBuffer });\n html.value = result.value;\n } catch (err) {\n console.error('Docx 解析错误:', err);\n error.value = 'Word 文档解析失败';\n } finally {\n loading.value = false;\n }\n};\n\nconst paginate = () => {\n const container = measureRef.value;\n if (!container || !html.value) return;\n\n const children = Array.from(container.children) as HTMLElement[];\n if (children.length === 0) {\n pages.value = [html.value];\n return;\n }\n\n const result: string[][] = [[]];\n let currentPageUsed = 0;\n\n for (const child of children) {\n const h = child.offsetHeight;\n\n if (currentPageUsed > 0 && currentPageUsed + h > PAGE_CONTENT_HEIGHT) {\n result.push([]);\n currentPageUsed = 0;\n }\n\n result[result.length - 1].push(child.outerHTML);\n currentPageUsed += h;\n }\n\n if (result.length === 0) result.push([]);\n\n pages.value = result.map((blocks) => blocks.join(''));\n};\n\nwatch(() => props.url, loadDocx, { immediate: true });\n\nwatch(html, async () => {\n if (!html.value) return;\n await nextTick();\n requestAnimationFrame(() => paginate());\n});\n\nconst contentStyle = {\n fontFamily: 'system-ui, -apple-system, sans-serif',\n lineHeight: '1.8',\n color: '#333',\n};\n\nconst measureStyle = {\n ...contentStyle,\n position: 'absolute' as const,\n visibility: 'hidden' as const,\n width: `${794 - PAGE_PADDING_X * 2}px`,\n pointerEvents: 'none' as const,\n};\n\nconst pageStyle = {\n width: '100%',\n maxWidth: '794px',\n minHeight: `${PAGE_HEIGHT}px`,\n background: 'white',\n boxShadow: '0 2px 12px rgba(0, 0, 0, 0.15)',\n flexShrink: 0,\n padding: `${PAGE_PADDING_Y}px ${PAGE_PADDING_X}px`,\n};\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-else-if=\"error\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n </div>\n\n <div v-else class=\"vfp-w-full vfp-h-full vfp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <!-- 隐藏测量区 -->\n <div ref=\"measureRef\" :style=\"measureStyle\" v-html=\"html\" />\n\n <!-- 实际页面 -->\n <div\n class=\"vfp-py-6 md:vfp-py-10 vfp-flex vfp-flex-col vfp-items-center\"\n :style=\"{ gap: `${PAGE_GAP}px` }\"\n >\n <div v-for=\"(pageHtml, i) in pages.length > 0 ? pages : ['']\" :key=\"i\" :style=\"pageStyle\">\n <div :style=\"contentStyle\" v-html=\"pageHtml\" />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount } from 'vue';\nimport { FileSpreadsheet } from 'lucide-vue-next';\nimport ExcelJS from 'exceljs';\nimport Spreadsheet from 'x-data-spreadsheet';\nimport { convertWorkbookToSpreadsheetData } from '@eternalheart/file-preview-core';\n\nconst props = defineProps<{\n url: string;\n}>();\n\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst containerRef = ref<HTMLDivElement | null>(null);\nlet sheetData: Record<string, unknown>[] | null = null;\nlet resizeObserver: ResizeObserver | null = null;\nlet resizeTimeout: number | null = null;\nlet lastDimensions = { width: 0, height: 0 };\n\nconst calculateDimensions = () => {\n if (!containerRef.value) return { width: 800, height: 600 };\n const rawWidth = containerRef.value.clientWidth;\n const rawHeight = containerRef.value.clientHeight;\n const width = rawWidth > 100 ? rawWidth : 800;\n const height = rawHeight > 100 ? rawHeight : 600;\n return { width, height };\n};\n\nconst mountSpreadsheet = () => {\n if (!containerRef.value || !sheetData) return;\n\n containerRef.value.innerHTML = '';\n\n const { width, height } = calculateDimensions();\n const isMobile = width < 640;\n\n const s = new Spreadsheet(containerRef.value, {\n mode: 'read',\n showToolbar: false,\n showContextmenu: false,\n showGrid: true,\n row: {\n len: 100,\n height: 25,\n },\n col: {\n len: 26,\n width: isMobile ? 80 : 100,\n indexWidth: isMobile ? 40 : 60,\n minWidth: isMobile ? 40 : 60,\n },\n view: {\n height: () => height,\n width: () => width,\n },\n });\n\n s.loadData(sheetData as unknown as Record<string, unknown>);\n};\n\nconst loadExcel = async () => {\n if (!containerRef.value) return;\n\n loading.value = true;\n error.value = null;\n\n try {\n const response = await fetch(props.url, {\n mode: 'cors',\n credentials: 'omit',\n redirect: 'follow',\n });\n\n if (!response.ok) {\n if (response.status === 404) throw new Error('Excel 文件不存在');\n if (response.status === 403) throw new Error('无权限访问此文件');\n throw new Error(`文件加载失败 (${response.status})`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n\n if (arrayBuffer.byteLength === 0) {\n throw new Error('文件为空');\n }\n\n const workbook = new ExcelJS.Workbook();\n await workbook.xlsx.load(arrayBuffer);\n const data = convertWorkbookToSpreadsheetData(workbook);\n\n sheetData = data as unknown as Record<string, unknown>[];\n mountSpreadsheet();\n loading.value = false;\n } catch (err) {\n console.error('Excel 解析错误:', err);\n let errorMsg = 'Excel 文件解析失败';\n if (err instanceof Error) errorMsg = err.message;\n error.value = errorMsg;\n loading.value = false;\n }\n};\n\nonMounted(() => {\n if (!containerRef.value) return;\n\n let isInitialRender = true;\n\n resizeObserver = new ResizeObserver(() => {\n if (isInitialRender) {\n isInitialRender = false;\n lastDimensions = calculateDimensions();\n return;\n }\n\n const newDimensions = calculateDimensions();\n const widthDiff = Math.abs(lastDimensions.width - newDimensions.width);\n const heightDiff = Math.abs(lastDimensions.height - newDimensions.height);\n\n if (widthDiff < 10 && heightDiff < 10) return;\n\n lastDimensions = newDimensions;\n\n if (resizeTimeout !== null) clearTimeout(resizeTimeout);\n\n resizeTimeout = window.setTimeout(() => {\n if (sheetData) mountSpreadsheet();\n }, 500);\n });\n\n resizeObserver.observe(containerRef.value);\n\n setTimeout(() => {\n requestAnimationFrame(() => loadExcel());\n }, 100);\n});\n\nwatch(\n () => props.url,\n () => {\n loadExcel();\n }\n);\n\nonBeforeUnmount(() => {\n if (resizeObserver) resizeObserver.disconnect();\n if (resizeTimeout !== null) clearTimeout(resizeTimeout);\n sheetData = null;\n if (containerRef.value) containerRef.value.innerHTML = '';\n});\n</script>\n\n<template>\n <div class=\"vfp-relative vfp-flex vfp-flex-col vfp-items-center vfp-w-full vfp-h-full\">\n <div\n v-if=\"loading\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/50 vfp-backdrop-blur-sm vfp-z-10 vfp-rounded-xl md:vfp-rounded-2xl\"\n >\n <div class=\"vfp-text-center\">\n <div\n class=\"vfp-w-10 vfp-h-10 md:vfp-w-12 md:vfp-h-12 vfp-mx-auto vfp-mb-3 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n <p class=\"vfp-text-xs md:vfp-text-sm vfp-text-white/70 vfp-font-medium\">加载 Excel 中...</p>\n </div>\n </div>\n\n <div\n v-if=\"error && !loading\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/50 vfp-backdrop-blur-sm vfp-z-10 vfp-rounded-xl md:vfp-rounded-2xl\"\n >\n <div class=\"vfp-text-center vfp-max-w-sm md:vfp-max-w-md vfp-px-4\">\n <div\n class=\"vfp-w-24 vfp-h-24 md:vfp-w-32 md:vfp-h-32 vfp-mx-auto vfp-mb-4 md:vfp-mb-6 vfp-rounded-2xl md:vfp-rounded-3xl vfp-bg-gradient-to-br vfp-from-green-500 vfp-via-emerald-500 vfp-to-teal-500 vfp-flex vfp-items-center vfp-justify-center vfp-shadow-2xl\"\n >\n <FileSpreadsheet class=\"vfp-w-12 vfp-h-12 md:vfp-w-16 md:vfp-h-16 vfp-text-white\" />\n </div>\n <p class=\"vfp-text-lg md:vfp-text-xl vfp-text-white/90 vfp-mb-2 md:vfp-mb-3 vfp-font-medium\">\n Excel 加载失败\n </p>\n <p class=\"vfp-text-xs md:vfp-text-sm vfp-text-white/60 vfp-mb-4 md:vfp-mb-6\">{{ error }}</p>\n <a\n :href=\"url\"\n download\n class=\"vfp-inline-flex vfp-items-center vfp-gap-2 vfp-px-4 vfp-py-2 md:vfp-px-6 md:vfp-py-3 vfp-bg-gradient-to-r vfp-from-purple-500 vfp-to-pink-500 vfp-text-white vfp-text-sm md:vfp-text-base vfp-rounded-lg md:vfp-rounded-xl hover:vfp-scale-105 vfp-transition-all vfp-shadow-lg\"\n >\n 下载文件\n </a>\n <p class=\"vfp-text-xs vfp-text-white/40 vfp-mt-3 md:vfp-mt-4\">提示:可以使用 Microsoft Excel 或 WPS 打开</p>\n </div>\n </div>\n\n <div\n v-if=\"!error\"\n ref=\"containerRef\"\n class=\"xlsx-spreadsheet-container vfp-w-full vfp-h-full\"\n :style=\"{ opacity: loading ? 0 : 1 }\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount } from 'vue';\nimport { Presentation } from 'lucide-vue-next';\nimport { init } from 'pptx-preview';\n\nconst props = withDefaults(\n defineProps<{\n url: string;\n tiled?: boolean;\n }>(),\n { tiled: true }\n);\n\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst slideCount = ref(0);\nconst containerRef = ref<HTMLDivElement | null>(null);\nlet previewer: ReturnType<typeof init> | null = null;\nlet resizeObserver: ResizeObserver | null = null;\nlet arrayBufferRef: ArrayBuffer | null = null;\nlet resizeTimeout: number | null = null;\nlet lastDimensions = { width: 0, height: 0 };\n\nconst calculateDimensions = () => {\n if (!containerRef.value) return { width: 960, height: 540 };\n const rawWidth = containerRef.value.clientWidth;\n const parentWidth = containerRef.value.parentElement?.clientWidth || 0;\n const containerWidth = rawWidth > 100 ? rawWidth : parentWidth > 100 ? parentWidth : 300;\n const height = Math.floor((containerWidth * 9) / 16);\n return { width: containerWidth, height };\n};\n\nconst reinitializePreviewer = async () => {\n if (!containerRef.value || !arrayBufferRef || slideCount.value === 0) return;\n\n try {\n if (previewer) {\n try {\n previewer.destroy();\n } catch {\n // ignore\n }\n }\n\n containerRef.value.innerHTML = '';\n\n const currentDimensions = calculateDimensions();\n previewer = init(containerRef.value, {\n width: currentDimensions.width,\n height: props.tiled ? currentDimensions.height * slideCount.value : currentDimensions.height,\n mode: props.tiled ? 'list' : 'slide',\n });\n\n await previewer.preview(arrayBufferRef);\n } catch {\n // 静默处理\n }\n};\n\nconst loadPptx = async () => {\n if (!containerRef.value) return;\n\n loading.value = true;\n error.value = null;\n\n let timeoutId: number | null = window.setTimeout(() => {\n error.value = '加载超时,请检查网络或稍后重试';\n loading.value = false;\n }, 30000);\n\n try {\n const response = await fetch(props.url, {\n mode: 'cors',\n credentials: 'omit',\n redirect: 'follow',\n });\n\n if (!response.ok) {\n if (response.status === 404) throw new Error('PPT 文件不存在');\n if (response.status === 403) throw new Error('无权限访问此文件');\n if (response.status >= 500) throw new Error('服务器错误,请稍后重试');\n throw new Error(`文件加载失败 (${response.status})`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n if (arrayBuffer.byteLength === 0) throw new Error('文件为空');\n\n arrayBufferRef = arrayBuffer;\n\n // 步骤 1: 创建隐藏容器获取 slideCount\n const hiddenContainer = document.createElement('div');\n hiddenContainer.style.cssText = 'position:absolute;left:-9999px;top:-9999px;visibility:hidden';\n document.body.appendChild(hiddenContainer);\n\n try {\n const tempPreviewer = init(hiddenContainer, {\n width: 100,\n height: 100,\n mode: 'slide',\n });\n\n try {\n await tempPreviewer.preview(arrayBuffer);\n } catch {\n throw new Error('PPT 文件格式错误或已损坏');\n }\n\n const count = tempPreviewer.slideCount;\n if (!count || count === 0) throw new Error('PPT 文件无有效页面');\n\n tempPreviewer.destroy();\n\n slideCount.value = count;\n\n if (containerRef.value) {\n containerRef.value.innerHTML = '';\n }\n\n const currentDimensions = calculateDimensions();\n previewer = init(containerRef.value, {\n width: currentDimensions.width,\n height: props.tiled ? currentDimensions.height * count : currentDimensions.height,\n mode: props.tiled ? 'list' : 'slide',\n });\n\n await previewer.preview(arrayBuffer);\n\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n\n loading.value = false;\n } finally {\n if (document.body.contains(hiddenContainer)) {\n document.body.removeChild(hiddenContainer);\n }\n }\n } catch (err) {\n if (timeoutId !== null) clearTimeout(timeoutId);\n let errorMsg = 'PPT 文件解析失败';\n if (err instanceof Error) errorMsg = err.message;\n else if (typeof err === 'string') errorMsg = err;\n error.value = errorMsg;\n loading.value = false;\n }\n};\n\nonMounted(() => {\n if (!containerRef.value) return;\n\n let isInitialRender = true;\n\n resizeObserver = new ResizeObserver(() => {\n if (isInitialRender) {\n isInitialRender = false;\n lastDimensions = calculateDimensions();\n return;\n }\n\n const newDimensions = calculateDimensions();\n const widthDiff = Math.abs(lastDimensions.width - newDimensions.width);\n const heightDiff = Math.abs(lastDimensions.height - newDimensions.height);\n\n if (widthDiff < 10 && heightDiff < 10) return;\n\n lastDimensions = newDimensions;\n\n if (resizeTimeout !== null) clearTimeout(resizeTimeout);\n\n resizeTimeout = window.setTimeout(() => {\n if (previewer && arrayBufferRef) reinitializePreviewer();\n }, 800);\n });\n\n resizeObserver.observe(containerRef.value);\n\n setTimeout(() => {\n requestAnimationFrame(() => requestAnimationFrame(() => loadPptx()));\n }, 150);\n});\n\nwatch(\n () => props.url,\n () => {\n loadPptx();\n }\n);\n\nonBeforeUnmount(() => {\n if (resizeObserver) resizeObserver.disconnect();\n if (resizeTimeout !== null) clearTimeout(resizeTimeout);\n arrayBufferRef = null;\n slideCount.value = 0;\n if (previewer) {\n try {\n previewer.destroy();\n } catch {\n // ignore\n }\n }\n previewer = null;\n});\n</script>\n\n<template>\n <div class=\"vfp-relative vfp-flex vfp-flex-col vfp-items-center vfp-w-full vfp-h-full\">\n <div\n v-if=\"loading\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/50 vfp-backdrop-blur-sm vfp-z-10 vfp-rounded-xl md:vfp-rounded-2xl\"\n >\n <div class=\"vfp-text-center\">\n <div\n class=\"vfp-w-10 vfp-h-10 md:vfp-w-12 md:vfp-h-12 vfp-mx-auto vfp-mb-3 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n <p class=\"vfp-text-xs md:vfp-text-sm vfp-text-white/70 vfp-font-medium\">加载 PPT 中...</p>\n </div>\n </div>\n\n <div\n v-if=\"error && !loading\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/50 vfp-backdrop-blur-sm vfp-z-10 vfp-rounded-xl md:vfp-rounded-2xl\"\n >\n <div class=\"vfp-text-center vfp-max-w-sm md:vfp-max-w-md vfp-px-4\">\n <div\n class=\"vfp-w-24 vfp-h-24 md:vfp-w-32 md:vfp-h-32 vfp-mx-auto vfp-mb-4 md:vfp-mb-6 vfp-rounded-2xl md:vfp-rounded-3xl vfp-bg-gradient-to-br vfp-from-orange-500 vfp-via-red-500 vfp-to-pink-500 vfp-flex vfp-items-center vfp-justify-center vfp-shadow-2xl\"\n >\n <Presentation class=\"vfp-w-12 vfp-h-12 md:vfp-w-16 md:vfp-h-16 vfp-text-white\" />\n </div>\n <p class=\"vfp-text-lg md:vfp-text-xl vfp-text-white/90 vfp-mb-2 md:vfp-mb-3 vfp-font-medium\">\n PPT 加载失败\n </p>\n <p class=\"vfp-text-xs md:vfp-text-sm vfp-text-white/60 vfp-mb-4 md:vfp-mb-6\">{{ error }}</p>\n <a\n :href=\"url\"\n download\n class=\"vfp-inline-flex vfp-items-center vfp-gap-2 vfp-px-4 vfp-py-2 md:vfp-px-6 md:vfp-py-3 vfp-bg-gradient-to-r vfp-from-purple-500 vfp-to-pink-500 vfp-text-white vfp-text-sm md:vfp-text-base vfp-rounded-lg md:vfp-rounded-xl hover:vfp-scale-105 vfp-transition-all vfp-shadow-lg\"\n >\n 下载文件\n </a>\n <p class=\"vfp-text-xs vfp-text-white/40 vfp-mt-3 md:vfp-mt-4\">\n 提示:可以使用 Microsoft PowerPoint 或 WPS 打开\n </p>\n </div>\n </div>\n\n <div\n v-if=\"!error\"\n ref=\"containerRef\"\n class=\"pptx-wrapper vfp-w-full vfp-max-w-full md:vfp-max-w-6xl\"\n :style=\"{ opacity: loading ? 0 : 1 }\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue';\nimport MsgReader from '@kenjiuno/msgreader';\nimport type { FieldsData } from '@kenjiuno/msgreader';\nimport { User, Users, Paperclip, Calendar, Mail, Tag, Clock, Hash } from 'lucide-vue-next';\n\nconst props = defineProps<{\n url: string;\n}>();\n\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst fields = ref<FieldsData | null>(null);\n\nfunction formatRecipients(recipients: FieldsData[] | undefined, type: 'to' | 'cc' | 'bcc'): string {\n if (!recipients) return '';\n return recipients\n .filter((r) => r.recipType === type)\n .map((r) => {\n const name = r.name || '';\n const email = r.smtpAddress || r.email || '';\n if (name && email && name !== email) return `${name} <${email}>`;\n return name || email;\n })\n .filter(Boolean)\n .join('; ');\n}\n\nfunction formatDate(dateStr: string | undefined): string {\n if (!dateStr) return '';\n try {\n const date = new Date(dateStr);\n if (isNaN(date.getTime())) return dateStr;\n return date.toLocaleString();\n } catch {\n return dateStr;\n }\n}\n\nfunction decodeHtmlBody(f: FieldsData): string {\n if (f.bodyHtml) return f.bodyHtml;\n if (f.html) {\n try {\n const decoder = new TextDecoder('utf-8');\n return decoder.decode(f.html);\n } catch {\n // fallback\n }\n }\n if (f.body) {\n return `<pre style=\"white-space: pre-wrap; word-wrap: break-word; font-family: system-ui, sans-serif;\">${f.body\n .replace(/&/g, '&')\n .replace(/\\x3c/g, '<')\n .replace(/>/g, '>')}</pre>`;\n }\n return '<p style=\"color: #999;\">(无邮件正文)</p>';\n}\n\nfunction formatMessageClass(messageClass: string | undefined): string {\n if (!messageClass) return '';\n const classMap: Record<string, string> = {\n 'IPM.Note': 'Email',\n 'IPM.Note.SMIME': 'Encrypted Email',\n 'IPM.Note.SMIME.MultipartSigned': 'Signed Email',\n 'IPM.Appointment': 'Appointment',\n 'IPM.Schedule.Meeting.Request': 'Meeting Request',\n 'IPM.Schedule.Meeting.Canceled': 'Meeting Cancellation',\n 'IPM.Contact': 'Contact',\n 'IPM.Task': 'Task',\n 'IPM.StickyNote': 'Sticky Note',\n };\n return classMap[messageClass] || messageClass;\n}\n\nconst loadMsg = async () => {\n loading.value = true;\n error.value = null;\n fields.value = null;\n\n try {\n const response = await fetch(props.url);\n if (!response.ok) throw new Error('文件加载失败');\n const arrayBuffer = await response.arrayBuffer();\n const msgReader = new MsgReader(arrayBuffer);\n fields.value = msgReader.getFileData();\n } catch (err) {\n console.error('MSG 解析错误:', err);\n error.value = 'Outlook 邮件解析失败';\n } finally {\n loading.value = false;\n }\n};\n\nwatch(() => props.url, loadMsg, { immediate: true });\n\nconst subject = computed(() => fields.value?.subject || '(无主题)');\nconst sender = computed(() => {\n if (!fields.value) return '';\n const senderName = fields.value.senderName || '';\n const senderEmail = fields.value.senderSmtpAddress || fields.value.senderEmail || '';\n if (senderName && senderEmail && senderName !== senderEmail) {\n return `${senderName} <${senderEmail}>`;\n }\n return senderName || senderEmail;\n});\nconst toStr = computed(() => formatRecipients(fields.value?.recipients, 'to'));\nconst ccStr = computed(() => formatRecipients(fields.value?.recipients, 'cc'));\nconst bccStr = computed(() => formatRecipients(fields.value?.recipients, 'bcc'));\nconst sentDate = computed(() => formatDate(fields.value?.clientSubmitTime));\nconst receivedDate = computed(() => formatDate(fields.value?.messageDeliveryTime));\nconst createdDate = computed(() => formatDate(fields.value?.creationTime));\nconst lastModified = computed(() => formatDate(fields.value?.lastModificationTime));\nconst attachments = computed(() => (fields.value?.attachments || []).filter((a) => !a.attachmentHidden));\nconst bodyHtml = computed(() => (fields.value ? decodeHtmlBody(fields.value) : ''));\nconst messageClass = computed(() => formatMessageClass(fields.value?.messageClass));\nconst messageId = computed(() => fields.value?.messageId || '');\n\nconst importance = computed(() => {\n const f = fields.value as (FieldsData & Record<string, unknown>) | null;\n return f && typeof f.importance === 'number' ? f.importance : undefined;\n});\nconst importanceLabel = computed(() => {\n if (importance.value === 2) return 'High';\n if (importance.value === 0) return 'Low';\n return '';\n});\n\nconst sensitivity = computed(() => {\n const f = fields.value as (FieldsData & Record<string, unknown>) | null;\n return f && typeof f.sensitivity === 'number' ? f.sensitivity : undefined;\n});\nconst sensitivityLabel = computed(() => {\n if (sensitivity.value === undefined || sensitivity.value === 0) return '';\n const labels: Record<number, string> = {\n 1: 'Personal',\n 2: 'Private',\n 3: 'Confidential',\n };\n return labels[sensitivity.value] || '';\n});\n\nconst formatAttachmentSize = (size: number | undefined) => {\n if (!size) return '';\n if (size > 1048576) return `${(size / 1048576).toFixed(1)} MB`;\n if (size > 1024) return `${(size / 1024).toFixed(0)} KB`;\n return `${size} B`;\n};\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-else-if=\"error || !fields\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error || '邮件解析失败' }}</p>\n </div>\n </div>\n\n <div v-else class=\"vfp-w-full vfp-h-full vfp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <div class=\"msg-container\">\n <!-- 邮件头部 -->\n <div class=\"msg-header\">\n <h2 class=\"msg-subject\">{{ subject }}</h2>\n\n <div class=\"msg-meta\">\n <div v-if=\"sender\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><User :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">From</span><span class=\"msg-value\">{{ sender }}</span></div>\n </div>\n\n <div v-if=\"toStr\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Users :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">To</span><span class=\"msg-value\">{{ toStr }}</span></div>\n </div>\n\n <div v-if=\"ccStr\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Users :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Cc</span><span class=\"msg-value\">{{ ccStr }}</span></div>\n </div>\n\n <div v-if=\"bccStr\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Users :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Bcc</span><span class=\"msg-value\">{{ bccStr }}</span></div>\n </div>\n\n <div v-if=\"sentDate\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Calendar :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sent</span><span class=\"msg-value\">{{ sentDate }}</span></div>\n </div>\n\n <div v-if=\"receivedDate && receivedDate !== sentDate\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Clock :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Received</span><span class=\"msg-value\">{{ receivedDate }}</span></div>\n </div>\n\n <div v-if=\"!sentDate && !receivedDate && createdDate\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Calendar :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Date</span><span class=\"msg-value\">{{ createdDate }}</span></div>\n </div>\n\n <div v-if=\"importanceLabel\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Tag :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Importance</span>\n <span class=\"msg-value\" :style=\"{ color: importance === 2 ? '#dc2626' : '#2563eb', fontWeight: 500 }\">\n {{ importanceLabel }}\n </span>\n </div>\n </div>\n\n <div v-if=\"sensitivityLabel\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Tag :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sensitivity</span><span class=\"msg-value\">{{ sensitivityLabel }}</span></div>\n </div>\n\n <div v-if=\"messageClass && messageClass !== 'Email'\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Mail :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Type</span><span class=\"msg-value\">{{ messageClass }}</span></div>\n </div>\n\n <div v-if=\"attachments.length > 0\" class=\"msg-row msg-row-bordered\">\n <span class=\"msg-icon-wrap\"><Paperclip :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Attachments</span>\n <div class=\"msg-value msg-attachments\">\n <span v-for=\"(a, i) in attachments\" :key=\"i\" class=\"msg-attachment\">\n {{ a.fileName || a.name || '未知文件' }}\n <span v-if=\"formatAttachmentSize(a.contentLength)\" class=\"msg-attachment-size\">\n ({{ formatAttachmentSize(a.contentLength) }})\n </span>\n </span>\n </div>\n </div>\n </div>\n\n <div v-if=\"messageId\" class=\"msg-row\" :class=\"{ 'msg-row-bordered': attachments.length === 0 }\">\n <span class=\"msg-icon-wrap\"><Hash :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Message-ID</span>\n <span class=\"msg-value msg-id\">{{ messageId }}</span>\n </div>\n </div>\n\n <div v-if=\"lastModified && lastModified !== sentDate && lastModified !== receivedDate\" class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><Clock :size=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Modified</span>\n <span class=\"msg-value msg-id\">{{ lastModified }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- 邮件正文 -->\n <div class=\"msg-body\" v-html=\"bodyHtml\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.msg-container {\n width: 100%;\n max-width: 900px;\n margin: 0 auto;\n background: white;\n min-height: 100%;\n box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);\n}\n.msg-header {\n border-bottom: 1px solid #e5e7eb;\n padding: clamp(12px, 3vw, 24px) clamp(16px, 3vw, 28px);\n background: #f9fafb;\n}\n.msg-subject {\n margin: 0 0 16px 0;\n font-size: clamp(16px, 2.5vw, 20px);\n font-weight: 600;\n color: #111827;\n line-height: 1.4;\n}\n.msg-meta {\n display: flex;\n flex-direction: column;\n font-size: clamp(12px, 1.8vw, 14px);\n color: #4b5563;\n}\n.msg-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 6px 0;\n}\n.msg-row-bordered {\n border-top: 1px solid #e5e7eb;\n margin-top: 4px;\n padding-top: 10px;\n}\n.msg-icon-wrap {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 1.4em;\n}\n.msg-icon {\n flex-shrink: 0;\n color: #9ca3af;\n}\n.msg-row-content {\n display: flex;\n flex: 1;\n}\n.msg-label {\n flex-shrink: 0;\n color: #6b7280;\n font-weight: 500;\n margin-right: 8px;\n white-space: nowrap;\n}\n.msg-value {\n color: #111827;\n word-break: break-word;\n flex: 1;\n}\n.msg-id {\n font-size: 12px;\n color: #9ca3af;\n font-family: monospace;\n}\n.msg-attachments {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n.msg-attachment {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: #f3f4f6;\n border-radius: 4px;\n font-size: 13px;\n color: #374151;\n border: 1px solid #e5e7eb;\n}\n.msg-attachment-size {\n color: #9ca3af;\n font-size: 12px;\n}\n.msg-body {\n padding: clamp(12px, 3vw, 24px) clamp(16px, 3vw, 28px);\n font-family: system-ui, -apple-system, sans-serif;\n line-height: 1.6;\n color: #333;\n overflow-x: auto;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount } from 'vue';\nimport ePub from '@likecoin/epub-ts';\nimport { X } from 'lucide-vue-next';\n\ninterface TocItem {\n label: string;\n href: string;\n subitems?: TocItem[];\n}\n\ninterface RenditionLike {\n display: (target?: string) => Promise<unknown>;\n next: () => Promise<unknown>;\n prev: () => Promise<unknown>;\n on: (event: string, cb: (...args: unknown[]) => void) => void;\n resize: (width: number, height: number) => void;\n currentLocation: () => unknown;\n destroy?: () => void;\n themes: {\n register: (name: string, styles: Record<string, unknown>) => void;\n select: (name: string) => void;\n };\n}\n\ninterface BookLike {\n ready: Promise<unknown>;\n loaded: { navigation: Promise<unknown> };\n locations: {\n generate: (chars: number) => Promise<string[]>;\n length: () => number;\n locationFromCfi: (cfi: string) => number;\n };\n renderTo: (el: HTMLElement, opts: Record<string, unknown>) => RenditionLike;\n destroy: () => void;\n}\n\nconst A4_WIDTH = 794;\n\nconst props = defineProps<{ url: string }>();\n\nconst emit = defineEmits<{\n (e: 'chapterChange', current: number, total: number): void;\n (e: 'fullWidthChange', isFullWidth: boolean): void;\n}>();\n\nconst viewerRef = ref<HTMLDivElement | null>(null);\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst isFullWidth = ref(false);\nconst toc = ref<TocItem[]>([]);\nconst showToc = ref(false);\nconst activeTocHref = ref('');\n\nlet book: BookLike | null = null;\nlet rendition: RenditionLike | null = null;\nlet totalLocations = 0;\nlet lastCfi: string | null = null;\n\nconst cleanup = () => {\n try { rendition?.destroy?.(); } catch { /* ignore */ }\n try { book?.destroy(); } catch { /* ignore */ }\n rendition = null;\n book = null;\n totalLocations = 0;\n lastCfi = null;\n};\n\nconst prevChapter = () => { rendition?.prev(); };\nconst nextChapter = () => { rendition?.next(); };\nconst toggleFullWidth = () => {\n isFullWidth.value = !isFullWidth.value;\n emit('fullWidthChange', isFullWidth.value);\n setTimeout(() => {\n if (viewerRef.value && rendition) {\n rendition.resize(viewerRef.value.offsetWidth, viewerRef.value.offsetHeight);\n if (lastCfi) {\n rendition.display(lastCfi);\n }\n // resize/display 可能重建 .epub-container,需要重新绑定滚动监听\n reattachScrollListener();\n }\n }, 350);\n};\nconst toggleToc = () => { showToc.value = !showToc.value; };\nconst handleTocClick = (href: string) => {\n activeTocHref.value = href;\n rendition?.display(href);\n showToc.value = false;\n};\n\nconst isActive = (href: string) => {\n return href === activeTocHref.value;\n};\n\ndefineExpose({ prevChapter, nextChapter, toggleFullWidth, toggleToc });\n\nconst loadEpub = async () => {\n if (!viewerRef.value) return;\n\n loading.value = true;\n error.value = null;\n toc.value = [];\n showToc.value = false;\n viewerRef.value.innerHTML = '';\n cleanup();\n\n try {\n let bookInput: string | ArrayBuffer = props.url;\n if (props.url.startsWith('blob:')) {\n const resp = await fetch(props.url);\n bookInput = await resp.arrayBuffer();\n }\n\n book = ePub(bookInput) as unknown as BookLike;\n\n rendition = book.renderTo(viewerRef.value, {\n manager: 'continuous',\n flow: 'scrolled',\n width: '100%',\n height: '100%',\n });\n\n rendition.themes.register('default', {\n body: {\n background: '#ffffff !important',\n color: '#1a1a1a !important',\n 'font-family': '\"Noto Serif SC\", \"Source Han Serif SC\", Georgia, \"Times New Roman\", serif !important',\n 'font-size': '16px !important',\n 'line-height': '2 !important',\n padding: '40px 60px !important',\n 'max-width': '100% !important',\n 'box-sizing': 'border-box !important',\n 'word-break': 'break-word !important',\n 'overflow-wrap': 'break-word !important',\n },\n p: { 'text-indent': '2em !important', margin: '0.8em 0 !important' },\n h1: { 'text-align': 'center !important', margin: '1.5em 0 1em !important' },\n h2: { margin: '1.2em 0 0.8em !important' },\n h3: { margin: '1em 0 0.6em !important' },\n img: { 'max-width': '100% !important', height: 'auto !important' },\n a: { color: '#2563eb !important', 'text-decoration': 'none !important' },\n });\n rendition.themes.select('default');\n\n await book.ready;\n\n // 异步生成 locations 索引\n book.locations.generate(1024).then(() => {\n if (!book) return;\n totalLocations = book.locations.length();\n const loc = rendition?.currentLocation() as { start?: { location?: number } } | undefined;\n const cur = loc?.start?.location ?? 0;\n emit('chapterChange', cur + 1, totalLocations);\n }).catch(() => { /* ignore */ });\n\n const nav = await book.loaded.navigation as { toc?: TocItem[] };\n if (Array.isArray(nav?.toc)) {\n toc.value = nav.toc;\n }\n\n await rendition.display();\n\n loading.value = false;\n emit('chapterChange', 1, totalLocations || 1);\n\n rendition.on('relocated', (location: unknown) => {\n const loc = location as { start?: { cfi?: string; location?: number; href?: string } };\n if (loc?.start?.cfi) {\n lastCfi = loc.start.cfi;\n }\n if (loc?.start?.href) {\n // 根据 spine href 查找匹配的 TOC 项\n const spineHref = loc.start.href;\n const matches: string[] = [];\n const collect = (items: TocItem[]) => {\n for (const item of items) {\n const base = item.href.split('#')[0];\n if (base && (spineHref === base || spineHref.endsWith('/' + base) || spineHref.endsWith(base))) {\n matches.push(item.href);\n }\n if (item.subitems) collect(item.subitems);\n }\n };\n collect(toc.value);\n if (matches.length === 1) {\n activeTocHref.value = matches[0];\n }\n // 多个匹配(同一文件不同 anchor)时保持当前选中(由点击设置)\n }\n const cur = loc?.start?.location;\n if (typeof cur === 'number' && totalLocations > 0) {\n emit('chapterChange', cur + 1, totalLocations);\n }\n });\n } catch (err) {\n console.error('EPUB 加载错误:', err);\n error.value = 'EPUB 文件加载失败';\n loading.value = false;\n }\n};\n\nconst onResize = () => {\n if (!viewerRef.value || !rendition) return;\n rendition.resize(viewerRef.value.offsetWidth, viewerRef.value.offsetHeight);\n};\n\n// 监听 epub-container 滚动,接近底部时强制加载后续 section\nlet scrollContainer: Element | null = null;\nconst onContainerScroll = () => {\n if (!scrollContainer) return;\n const el = scrollContainer as HTMLElement;\n if (el.scrollTop + el.clientHeight >= el.scrollHeight - 200) {\n try {\n const mgr = (rendition as unknown as { manager?: { check?: (t?: number, e?: number) => Promise<unknown> } })?.manager;\n // 传递垂直偏移量参数,让 check() 在接近底部时就触发加载下一节\n mgr?.check?.(500, 500);\n } catch { /* ignore */ }\n }\n};\n\nconst reattachScrollListener = () => {\n // 清理旧监听\n if (scrollContainer) {\n scrollContainer.removeEventListener('scroll', onContainerScroll);\n scrollContainer = null;\n }\n const tryAttach = () => {\n scrollContainer = viewerRef.value?.querySelector('.epub-container') ?? null;\n if (scrollContainer) {\n scrollContainer.addEventListener('scroll', onContainerScroll, { passive: true });\n } else {\n requestAnimationFrame(tryAttach);\n }\n };\n requestAnimationFrame(tryAttach);\n};\n\nonMounted(() => {\n loadEpub();\n window.addEventListener('resize', onResize);\n reattachScrollListener();\n});\n\nwatch(() => props.url, () => loadEpub());\n\nonBeforeUnmount(() => {\n window.removeEventListener('resize', onResize);\n scrollContainer?.removeEventListener('scroll', onContainerScroll);\n cleanup();\n});\n</script>\n\n<template>\n <div class=\"vfp-relative vfp-w-full vfp-h-full vfp-flex vfp-justify-center vfp-overflow-hidden\" style=\"background: #f5f5f0\">\n <div v-if=\"error\" class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n\n <div\n v-if=\"loading && !error\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-z-10\"\n >\n <div class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\" />\n </div>\n\n <!-- 目录侧栏 - 滑入动画 -->\n <div\n v-if=\"toc.length > 0\"\n class=\"vfp-absolute vfp-inset-0 vfp-z-20 vfp-flex\"\n :style=\"{ opacity: showToc ? 1 : 0, pointerEvents: showToc ? 'auto' : 'none', transition: 'opacity 0.3s' }\"\n >\n <div\n class=\"vfp-w-72 vfp-h-full vfp-flex vfp-flex-col\"\n :style=\"{\n maxWidth: '80%',\n background: 'rgba(0,0,0,0.9)',\n backdropFilter: 'blur(12px)',\n borderRight: '1px solid rgba(255,255,255,0.1)',\n boxShadow: '0 25px 50px -12px rgba(0,0,0,0.25)',\n transform: showToc ? 'translateX(0)' : 'translateX(-100%)',\n transition: 'transform 0.3s ease',\n }\"\n >\n <div class=\"vfp-flex vfp-items-center vfp-justify-between vfp-flex-shrink-0\" style=\"padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.1)\">\n <span style=\"color: white; font-weight: 500; font-size: 14px\">目录</span>\n <button style=\"color: rgba(255,255,255,0.6); background: none; border: none; cursor: pointer; padding: 4px\" @click=\"showToc = false\">\n <X style=\"width: 16px; height: 16px\" />\n </button>\n </div>\n <div class=\"vfp-flex-1 vfp-overflow-y-auto\" style=\"padding: 8px 4px\">\n <template v-for=\"(item, i) in toc\" :key=\"`${item.href}-${i}`\">\n <button\n :style=\"{\n width: '100%', textAlign: 'left', padding: '8px 12px', fontSize: '14px',\n color: isActive(item.href) ? 'white' : 'rgba(255,255,255,0.7)',\n fontWeight: isActive(item.href) ? '500' : '400',\n background: isActive(item.href) ? 'rgba(255,255,255,0.15)' : 'none',\n border: 'none', cursor: 'pointer', borderRadius: '4px',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'block',\n transition: 'all 0.15s',\n }\"\n :title=\"item.label\"\n @click=\"handleTocClick(item.href)\"\n @mouseenter=\"!isActive(item.href) && (($event.target as HTMLElement).style.background = 'rgba(255,255,255,0.1)')\"\n @mouseleave=\"!isActive(item.href) && (($event.target as HTMLElement).style.background = 'none')\"\n >\n {{ item.label.trim() }}\n </button>\n <template v-if=\"item.subitems && item.subitems.length > 0\">\n <button\n v-for=\"(sub, j) in item.subitems\"\n :key=\"`${sub.href}-${j}`\"\n :style=\"{\n width: '100%', textAlign: 'left', padding: '8px 12px 8px 28px', fontSize: '13px',\n color: isActive(sub.href) ? 'white' : 'rgba(255,255,255,0.6)',\n fontWeight: isActive(sub.href) ? '500' : '400',\n background: isActive(sub.href) ? 'rgba(255,255,255,0.15)' : 'none',\n border: 'none', cursor: 'pointer', borderRadius: '4px',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'block',\n transition: 'all 0.15s',\n }\"\n :title=\"sub.label\"\n @click=\"handleTocClick(sub.href)\"\n @mouseenter=\"!isActive(sub.href) && (($event.target as HTMLElement).style.background = 'rgba(255,255,255,0.1)')\"\n @mouseleave=\"!isActive(sub.href) && (($event.target as HTMLElement).style.background = 'none')\"\n >\n {{ sub.label.trim() }}\n </button>\n </template>\n </template>\n </div>\n </div>\n <div\n class=\"vfp-flex-1\"\n :style=\"{ background: showToc ? 'rgba(0,0,0,0.3)' : 'transparent', transition: 'background 0.3s' }\"\n @click=\"showToc = false\"\n />\n </div>\n\n <div\n v-if=\"!error\"\n ref=\"viewerRef\"\n class=\"vfp-h-full vfp-bg-white\"\n :style=\"{\n width: isFullWidth ? '100%' : `${A4_WIDTH}px`,\n maxWidth: '100%',\n transition: 'width 0.3s ease',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12)',\n overflow: 'hidden',\n }\"\n />\n </div>\n</template>\n\n<style>\n.epub-container { overflow-y: auto !important; scrollbar-width: thin; }\n.epub-container::-webkit-scrollbar { width: 8px; }\n.epub-container::-webkit-scrollbar-track { background: transparent; }\n.epub-container::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 4px; }\n.epub-container::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.3); }\n.epub-view > iframe { background: white; }\n</style>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount, watch } from 'vue';\nimport videojs from 'video.js';\nimport 'video.js/dist/video-js.css';\nimport { getVideoMimeType } from '@eternalheart/file-preview-core';\n\ntype VideoJsPlayer = ReturnType<typeof videojs>;\n\nconst props = defineProps<{\n url: string;\n}>();\n\nconst error = ref<string | null>(null);\nconst isLoading = ref(true);\nconst videoContainerRef = ref<HTMLDivElement | null>(null);\nlet player: VideoJsPlayer | null = null;\n\nconst initPlayer = () => {\n if (!videoContainerRef.value || player) return;\n\n const videoElement = document.createElement('video-js');\n videoElement.classList.add('vjs-big-play-centered', 'vjs-theme-apple');\n videoContainerRef.value.appendChild(videoElement);\n\n const videoType = getVideoMimeType(props.url);\n\n const sources =\n videoType === 'video/quicktime'\n ? [\n { src: props.url, type: 'video/quicktime' },\n { src: props.url, type: 'video/mp4' },\n ]\n : [{ src: props.url, type: videoType }];\n\n player = videojs(videoElement, {\n controls: true,\n fill: true,\n preload: 'auto',\n controlBar: {\n children: [\n 'playToggle',\n 'volumePanel',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'remainingTimeDisplay',\n 'fullscreenToggle',\n ],\n volumePanel: {\n inline: false,\n },\n },\n html5: {\n vhs: {\n overrideNative: true,\n },\n nativeVideoTracks: false,\n nativeAudioTracks: false,\n nativeTextTracks: false,\n },\n sources,\n });\n\n const videoEl = player.el().querySelector('video');\n if (videoEl) {\n (videoEl as HTMLVideoElement).style.objectFit = 'contain';\n }\n\n player.on('loadeddata', () => {\n isLoading.value = false;\n });\n\n player.on('error', () => {\n const err = player?.error();\n console.error('Video.js error:', err);\n error.value = `视频加载失败: ${err?.message || '未知错误'}`;\n isLoading.value = false;\n });\n};\n\nonMounted(initPlayer);\n\nwatch(\n () => props.url,\n () => {\n if (player && !player.isDisposed()) {\n player.src({ src: props.url, type: getVideoMimeType(props.url) });\n }\n }\n);\n\nonBeforeUnmount(() => {\n if (player && !player.isDisposed()) {\n player.dispose();\n player = null;\n }\n});\n</script>\n\n<template>\n <div v-if=\"error\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-center\">\n <div\n class=\"vfp-w-16 vfp-h-16 vfp-mx-auto vfp-mb-4 vfp-rounded-full vfp-bg-red-500/10 vfp-flex vfp-items-center vfp-justify-center\"\n >\n <svg\n class=\"vfp-w-8 vfp-h-8 vfp-text-red-400\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n <p class=\"vfp-text-lg vfp-font-medium vfp-text-white/90 vfp-mb-2\">视频加载失败</p>\n <p class=\"vfp-text-sm vfp-text-white/60\">{{ error }}</p>\n </div>\n </div>\n\n <div v-else class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-w-full vfp-h-full vfp-relative\">\n <div\n v-if=\"isLoading\"\n class=\"vfp-absolute vfp-inset-0 vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/20 vfp-backdrop-blur-sm vfp-rounded-2xl vfp-z-10\"\n >\n <div class=\"vfp-text-center\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-mx-auto vfp-mb-3 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n <p class=\"vfp-text-sm vfp-text-white/70 vfp-font-medium\">加载视频中...</p>\n </div>\n </div>\n\n <div\n ref=\"videoContainerRef\"\n class=\"vfp-overflow-hidden vfp-w-full vfp-h-full\"\n style=\"box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.05)\"\n />\n </div>\n </div>\n</template>\n","import { ref, watch, onUnmounted, type Ref } from 'vue';\nimport { formatTime } from '@eternalheart/file-preview-core';\n\n/**\n * Vue 3 版本的音频播放器 composable\n * 与 React 版的 useAudioPlayer 行为对齐\n */\nexport function useAudioPlayer(url: Ref<string>) {\n const audioRef = ref<HTMLAudioElement | null>(null);\n const isPlaying = ref(false);\n const isLoading = ref(true);\n const currentTime = ref(0);\n const duration = ref(0);\n const volume = ref(1);\n const isMuted = ref(false);\n const isLoop = ref(false);\n const error = ref<string | null>(null);\n\n let cleanup: (() => void) | null = null;\n\n const bindEvents = () => {\n const audio = audioRef.value;\n if (!audio) return;\n\n isLoading.value = true;\n error.value = null;\n\n const onTimeUpdate = () => {\n if (!isNaN(audio.currentTime)) {\n currentTime.value = audio.currentTime;\n }\n };\n\n const onDurationChange = () => {\n if (!isNaN(audio.duration) && isFinite(audio.duration)) {\n duration.value = audio.duration;\n }\n };\n\n const onCanPlay = () => {\n isLoading.value = false;\n onDurationChange();\n };\n\n const onWaiting = () => {\n isLoading.value = true;\n };\n const onPlaying = () => {\n isLoading.value = false;\n isPlaying.value = true;\n };\n\n const onPlay = () => {\n isPlaying.value = true;\n };\n const onPause = () => {\n isPlaying.value = false;\n };\n const onEnded = () => {\n isPlaying.value = false;\n };\n\n const onError = () => {\n error.value = '音频加载失败';\n isLoading.value = false;\n };\n\n audio.addEventListener('timeupdate', onTimeUpdate);\n audio.addEventListener('loadedmetadata', onDurationChange);\n audio.addEventListener('durationchange', onDurationChange);\n audio.addEventListener('canplay', onCanPlay);\n audio.addEventListener('waiting', onWaiting);\n audio.addEventListener('playing', onPlaying);\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('error', onError);\n\n if (audio.readyState >= 3) {\n isLoading.value = false;\n onDurationChange();\n } else if (audio.readyState >= 1) {\n onDurationChange();\n }\n\n cleanup = () => {\n audio.removeEventListener('timeupdate', onTimeUpdate);\n audio.removeEventListener('loadedmetadata', onDurationChange);\n audio.removeEventListener('durationchange', onDurationChange);\n audio.removeEventListener('canplay', onCanPlay);\n audio.removeEventListener('waiting', onWaiting);\n audio.removeEventListener('playing', onPlaying);\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('error', onError);\n };\n };\n\n // url 变化时重新绑定\n watch(\n url,\n () => {\n cleanup?.();\n cleanup = null;\n // 等待 DOM 更新(audio src 变化)\n requestAnimationFrame(() => bindEvents());\n },\n { flush: 'post' }\n );\n\n // 在 audioRef 挂载后首次绑定\n watch(\n audioRef,\n (el) => {\n if (el) bindEvents();\n },\n { flush: 'post' }\n );\n\n onUnmounted(() => {\n cleanup?.();\n cleanup = null;\n });\n\n const togglePlay = () => {\n const audio = audioRef.value;\n if (!audio) return;\n if (audio.paused) {\n audio.play().catch(() => {});\n } else {\n audio.pause();\n }\n };\n\n const seek = (time: number) => {\n const audio = audioRef.value;\n if (!audio) return;\n audio.currentTime = time;\n currentTime.value = time;\n };\n\n const skip = (seconds: number) => {\n const audio = audioRef.value;\n if (!audio) return;\n audio.currentTime = Math.max(\n 0,\n Math.min(audio.currentTime + seconds, audio.duration || Infinity)\n );\n };\n\n const setVolume = (vol: number) => {\n const audio = audioRef.value;\n if (!audio) return;\n const clamped = Math.max(0, Math.min(1, vol));\n audio.volume = clamped;\n volume.value = clamped;\n if (clamped > 0) {\n audio.muted = false;\n isMuted.value = false;\n }\n };\n\n const toggleMute = () => {\n const audio = audioRef.value;\n if (!audio) return;\n audio.muted = !audio.muted;\n isMuted.value = audio.muted;\n };\n\n const toggleLoop = () => {\n const audio = audioRef.value;\n if (!audio) return;\n const next = !audio.loop;\n audio.loop = next;\n isLoop.value = next;\n };\n\n return {\n audioRef,\n isPlaying,\n isLoading,\n isLoop,\n currentTime,\n duration,\n volume,\n isMuted,\n error,\n togglePlay,\n seek,\n skip,\n setVolume,\n toggleMute,\n toggleLoop,\n formatTime,\n };\n}\n","<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, toRef } from 'vue';\nimport { Play, Pause, Volume2, VolumeX, Volume1, SkipBack, SkipForward, Repeat } from 'lucide-vue-next';\nimport { useAudioPlayer } from '../composables/useAudioPlayer';\n\nconst props = defineProps<{\n url: string;\n fileName: string;\n}>();\n\nconst urlRef = toRef(props, 'url');\n\nconst {\n audioRef,\n isPlaying,\n isLoop,\n currentTime,\n duration,\n volume,\n isMuted,\n error,\n togglePlay,\n seek,\n skip,\n setVolume,\n toggleMute,\n toggleLoop,\n formatTime,\n} = useAudioPlayer(urlRef);\n\nconst showVolume = ref(false);\nlet volumeHideTimer: number | null = null;\nconst volumeRef = ref<HTMLDivElement | null>(null);\n\nconst progress = computed(() => (duration.value > 0 ? currentTime.value / duration.value : 0));\n\nconst VolumeIcon = computed(() => {\n if (isMuted.value || volume.value === 0) return VolumeX;\n if (volume.value < 0.5) return Volume1;\n return Volume2;\n});\n\nconst handleClickOutside = (e: MouseEvent) => {\n if (volumeRef.value && !volumeRef.value.contains(e.target as Node)) {\n showVolume.value = false;\n }\n};\n\nonMounted(() => {\n document.addEventListener('mousedown', handleClickOutside);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', handleClickOutside);\n if (volumeHideTimer !== null) clearTimeout(volumeHideTimer);\n});\n\nconst handleVolumeEnter = () => {\n if (volumeHideTimer !== null) clearTimeout(volumeHideTimer);\n showVolume.value = true;\n};\n\nconst handleVolumeLeave = () => {\n volumeHideTimer = window.setTimeout(() => {\n showVolume.value = false;\n }, 300);\n};\n</script>\n\n<template>\n <div v-if=\"error\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n </div>\n\n <div\n v-else\n class=\"vfp-flex vfp-flex-col vfp-items-center vfp-justify-center vfp-w-full vfp-h-full vfp-p-4 md:vfp-p-8 vfp-gap-5 md:vfp-gap-8 vfp-select-none\"\n >\n <!-- 唱片机 -->\n <div class=\"vfp-relative\" style=\"width: 260px; height: 240px\">\n <!-- 外圈光晕 -->\n <div\n class=\"vfp-absolute vfp-rounded-full\"\n :style=\"{\n width: '220px',\n height: '220px',\n top: '18px',\n left: '8px',\n background: 'radial-gradient(circle, rgba(129,140,248,0.12) 0%, transparent 70%)',\n opacity: isPlaying ? 0.7 : 0.2,\n transition: 'opacity 0.5s',\n }\"\n />\n\n <!-- 唱片主体 -->\n <div\n class=\"vfp-absolute vfp-rounded-full vfp-overflow-hidden\"\n :style=\"{\n width: '200px',\n height: '200px',\n top: '28px',\n left: '18px',\n background: `\n radial-gradient(circle at center, transparent 95%, rgba(30,30,30,0.8) 95.5%, #111 97%),\n radial-gradient(circle at center, transparent 38%, rgba(50,50,50,0.5) 38.15%, transparent 38.4%),\n radial-gradient(circle at center, transparent 45%, rgba(50,50,50,0.3) 45.15%, transparent 45.4%),\n radial-gradient(circle at center, transparent 52%, rgba(50,50,50,0.5) 52.15%, transparent 52.4%),\n radial-gradient(circle at center, transparent 59%, rgba(50,50,50,0.3) 59.15%, transparent 59.4%),\n radial-gradient(circle at center, transparent 66%, rgba(50,50,50,0.5) 66.15%, transparent 66.4%),\n radial-gradient(circle at center, transparent 73%, rgba(50,50,50,0.3) 73.15%, transparent 73.4%),\n radial-gradient(circle at center, transparent 80%, rgba(50,50,50,0.4) 80.15%, transparent 80.4%),\n radial-gradient(circle at center, transparent 87%, rgba(50,50,50,0.3) 87.15%, transparent 87.4%),\n conic-gradient(from 0deg, #1c1c1c, #232323, #1a1a1a, #262626, #1c1c1c, #212121, #1a1a1a, #252525, #1c1c1c, #232323, #1a1a1a, #262626, #1c1c1c)\n `,\n boxShadow: isPlaying\n ? '0 0 36px rgba(129,140,248,0.1), 0 8px 32px rgba(0,0,0,0.4), inset 0 0 20px rgba(0,0,0,0.4)'\n : '0 8px 32px rgba(0,0,0,0.4), inset 0 0 20px rgba(0,0,0,0.4)',\n animation: 'vfp-vinyl-spin 8s linear infinite',\n animationPlayState: isPlaying ? 'running' : 'paused',\n }\"\n >\n <!-- 中心标签 -->\n <div\n class=\"vfp-absolute vfp-rounded-full\"\n :style=\"{\n width: '34%',\n height: '34%',\n top: '33%',\n left: '33%',\n background: 'radial-gradient(circle at 40% 38%, #818cf8, #6366f1, #4f46e5, #4338ca)',\n boxShadow: 'inset 0 1px 3px rgba(255,255,255,0.25), inset 0 -1px 3px rgba(0,0,0,0.3), 0 0 8px rgba(0,0,0,0.3)',\n }\"\n >\n <div\n class=\"vfp-absolute vfp-rounded-full\"\n :style=\"{\n width: '14%',\n height: '14%',\n top: '43%',\n left: '43%',\n background: 'radial-gradient(circle at 40% 40%, #333, #0d0d0d)',\n boxShadow: 'inset 0 1px 3px rgba(0,0,0,0.9), 0 0 2px rgba(0,0,0,0.5)',\n }\"\n />\n </div>\n </div>\n\n <!-- 唱臂 -->\n <div\n class=\"vfp-absolute\"\n :style=\"{\n top: '-6px',\n right: '2px',\n width: '100px',\n height: '120px',\n transformOrigin: '76px 16px',\n zIndex: 5,\n transform: isPlaying ? 'rotate(16deg)' : 'rotate(0deg)',\n transition: 'transform 0.8s cubic-bezier(0.4, 0, 0.2, 1)',\n }\"\n >\n <svg width=\"100\" height=\"120\" viewBox=\"0 0 100 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"76\" cy=\"16\" r=\"13\" fill=\"rgba(0,0,0,0.3)\" />\n <circle cx=\"76\" cy=\"16\" r=\"11\" fill=\"url(#vfp-baseGrad)\" />\n <circle cx=\"76\" cy=\"16\" r=\"6\" fill=\"url(#vfp-baseInnerGrad)\" />\n <circle cx=\"76\" cy=\"16\" r=\"2.5\" fill=\"#222\" stroke=\"#555\" stroke-width=\"0.5\" />\n <path d=\"M74 22 L56 88\" stroke=\"url(#vfp-armGrad)\" stroke-width=\"3.5\" stroke-linecap=\"round\" />\n <rect x=\"50\" y=\"86\" width=\"12\" height=\"7\" rx=\"1.5\" fill=\"url(#vfp-headGrad)\" />\n <rect x=\"52.5\" y=\"92\" width=\"7\" height=\"9\" rx=\"1\" fill=\"url(#vfp-cartridgeGrad)\" />\n <line x1=\"56\" y1=\"101\" x2=\"56\" y2=\"105\" stroke=\"#bbb\" stroke-width=\"1.2\" stroke-linecap=\"round\" />\n <circle cx=\"56\" cy=\"105.5\" r=\"0.8\" fill=\"#ddd\" />\n\n <defs>\n <radialGradient id=\"vfp-baseGrad\" cx=\"40%\" cy=\"35%\">\n <stop offset=\"0%\" stop-color=\"#555\" />\n <stop offset=\"100%\" stop-color=\"#1a1a1a\" />\n </radialGradient>\n <radialGradient id=\"vfp-baseInnerGrad\" cx=\"40%\" cy=\"35%\">\n <stop offset=\"0%\" stop-color=\"#666\" />\n <stop offset=\"100%\" stop-color=\"#333\" />\n </radialGradient>\n <linearGradient id=\"vfp-armGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"#555\" />\n <stop offset=\"50%\" stop-color=\"#444\" />\n <stop offset=\"100%\" stop-color=\"#333\" />\n </linearGradient>\n <linearGradient id=\"vfp-headGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"#555\" />\n <stop offset=\"100%\" stop-color=\"#333\" />\n </linearGradient>\n <linearGradient id=\"vfp-cartridgeGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"#444\" />\n <stop offset=\"100%\" stop-color=\"#222\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n\n <!-- 文件名 -->\n <div class=\"vfp-text-center vfp-max-w-sm md:vfp-max-w-md vfp-px-4\">\n <div class=\"vfp-text-lg md:vfp-text-xl vfp-font-medium vfp-mb-1 vfp-truncate\" style=\"color: #e0dff0\">\n {{ fileName }}\n </div>\n <p class=\"vfp-text-xs vfp-tracking-widest vfp-uppercase\" style=\"color: rgba(129,140,248,0.5)\">Audio</p>\n </div>\n\n <!-- 控制面板 -->\n <div\n class=\"vfp-w-full vfp-max-w-sm md:vfp-max-w-md vfp-rounded-2xl vfp-p-4 md:vfp-p-6 vfp-border\"\n :style=\"{\n background: 'rgba(255,255,255,0.04)',\n backdropFilter: 'blur(16px)',\n borderColor: 'rgba(129,140,248,0.12)',\n }\"\n >\n <!-- 进度条 -->\n <div class=\"vfp-mb-5\">\n <div class=\"vfp-relative vfp-h-4 vfp-flex vfp-items-center\">\n <div\n class=\"vfp-absolute vfp-w-full vfp-h-[5px] vfp-rounded-full\"\n style=\"background: rgba(255,255,255,0.08)\"\n />\n <div\n class=\"vfp-absolute vfp-h-[5px] vfp-rounded-full vfp-pointer-events-none\"\n :style=\"{\n width: `${progress * 100}%`,\n background: 'linear-gradient(90deg, #6366f1, #818cf8)',\n boxShadow: isPlaying ? '0 0 8px rgba(129,140,248,0.4)' : 'none',\n transition: 'width 0.1s linear',\n }\"\n />\n <input\n type=\"range\"\n min=\"0\"\n :max=\"duration > 0 ? duration : currentTime || 100\"\n step=\"any\"\n :value=\"currentTime\"\n :disabled=\"duration <= 0\"\n aria-label=\"播放进度\"\n class=\"audio-slider vfp-absolute vfp-w-full\"\n @input=\"(e) => seek(parseFloat((e.target as HTMLInputElement).value))\"\n />\n </div>\n <div\n class=\"vfp-flex vfp-justify-between vfp-text-xs vfp-mt-2.5\"\n style=\"color: rgba(129,140,248,0.5)\"\n >\n <span style=\"font-variant-numeric: tabular-nums\">{{ formatTime(currentTime) }}</span>\n <span style=\"font-variant-numeric: tabular-nums\">{{ duration > 0 ? formatTime(duration) : '--:--' }}</span>\n </div>\n </div>\n\n <!-- 控制按钮 -->\n <div class=\"vfp-flex vfp-items-center vfp-justify-center vfp-gap-3\">\n <!-- 循环 -->\n <button\n class=\"vfp-w-9 vfp-h-9 vfp-rounded-full vfp-flex vfp-items-center vfp-justify-center vfp-transition-colors\"\n :style=\"{\n background: isLoop ? 'rgba(129,140,248,0.15)' : 'rgba(255,255,255,0.06)',\n color: isLoop ? '#818cf8' : 'rgba(224,223,240,0.4)',\n border: 0,\n cursor: 'pointer',\n }\"\n :aria-label=\"isLoop ? '关闭循环' : '开启循环'\"\n @click=\"toggleLoop\"\n >\n <Repeat class=\"vfp-w-4 vfp-h-4\" />\n </button>\n\n <!-- 后退 -->\n <button\n class=\"vfp-w-10 vfp-h-10 vfp-rounded-full vfp-flex vfp-items-center vfp-justify-center vfp-transition-colors\"\n :style=\"{ background: 'rgba(255,255,255,0.06)', color: 'rgba(224,223,240,0.7)', border: 0, cursor: 'pointer' }\"\n aria-label=\"后退10秒\"\n @click=\"skip(-10)\"\n >\n <SkipBack class=\"vfp-w-[18px] vfp-h-[18px]\" />\n </button>\n\n <!-- 播放/暂停 -->\n <button\n class=\"vfp-w-14 vfp-h-14 vfp-rounded-full vfp-flex vfp-items-center vfp-justify-center\"\n :style=\"{\n background: 'linear-gradient(135deg, #818cf8, #6366f1)',\n color: '#fff',\n boxShadow: '0 4px 20px rgba(99,102,241,0.35)',\n border: 0,\n cursor: 'pointer',\n }\"\n :aria-label=\"isPlaying ? '暂停' : '播放'\"\n @click=\"togglePlay\"\n >\n <Pause v-if=\"isPlaying\" class=\"vfp-w-6 vfp-h-6\" />\n <Play v-else class=\"vfp-w-6 vfp-h-6 vfp-ml-0.5\" />\n </button>\n\n <!-- 前进 -->\n <button\n class=\"vfp-w-10 vfp-h-10 vfp-rounded-full vfp-flex vfp-items-center vfp-justify-center vfp-transition-colors\"\n :style=\"{ background: 'rgba(255,255,255,0.06)', color: 'rgba(224,223,240,0.7)', border: 0, cursor: 'pointer' }\"\n aria-label=\"前进10秒\"\n @click=\"skip(10)\"\n >\n <SkipForward class=\"vfp-w-[18px] vfp-h-[18px]\" />\n </button>\n\n <!-- 音量 -->\n <div ref=\"volumeRef\" class=\"vfp-relative\" @mouseenter=\"handleVolumeEnter\" @mouseleave=\"handleVolumeLeave\">\n <button\n class=\"vfp-w-9 vfp-h-9 vfp-rounded-full vfp-flex vfp-items-center vfp-justify-center vfp-transition-colors\"\n :style=\"{\n background: showVolume ? 'rgba(129,140,248,0.15)' : 'rgba(255,255,255,0.06)',\n color: 'rgba(129,140,248,0.6)',\n border: 0,\n cursor: 'pointer',\n }\"\n :aria-label=\"isMuted ? '取消静音' : '静音'\"\n @click=\"toggleMute\"\n >\n <component :is=\"VolumeIcon\" class=\"vfp-w-4 vfp-h-4\" />\n </button>\n\n <Transition name=\"vfp-fade\">\n <div\n v-if=\"showVolume\"\n class=\"vfp-absolute vfp-bottom-full vfp-mb-2 vfp-rounded-xl vfp-p-3 vfp-border\"\n :style=\"{\n left: '50%',\n marginLeft: '-27px',\n background: 'rgba(20,20,20,0.95)',\n backdropFilter: 'blur(16px)',\n borderColor: 'rgba(129,140,248,0.15)',\n }\"\n @mouseenter=\"handleVolumeEnter\"\n @mouseleave=\"handleVolumeLeave\"\n >\n <div class=\"vfp-flex vfp-flex-col vfp-items-center vfp-gap-2\" style=\"height: 100px\">\n <div\n class=\"vfp-relative vfp-flex vfp-items-center vfp-justify-center\"\n style=\"width: 24px; height: 80px\"\n >\n <div\n class=\"vfp-absolute vfp-rounded-full\"\n style=\"width: 3px; height: 100%; background: rgba(255,255,255,0.1)\"\n />\n <div\n class=\"vfp-absolute vfp-bottom-0 vfp-rounded-full vfp-pointer-events-none\"\n :style=\"{\n width: '3px',\n height: `${(isMuted ? 0 : volume) * 100}%`,\n background: '#818cf8',\n transition: 'height 0.1s linear',\n }\"\n />\n <input\n type=\"range\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n :value=\"isMuted ? 0 : volume\"\n aria-label=\"音量\"\n class=\"volume-slider-vertical vfp-absolute\"\n style=\"width: 80px; height: 24px; transform: rotate(-90deg); transform-origin: center center\"\n @input=\"(e) => setVolume(parseFloat((e.target as HTMLInputElement).value))\"\n />\n </div>\n <span class=\"vfp-text-[10px] vfp-tabular-nums\" style=\"color: rgba(129,140,248,0.5)\">\n {{ Math.round((isMuted ? 0 : volume) * 100) }}\n </span>\n </div>\n </div>\n </Transition>\n </div>\n </div>\n </div>\n\n <audio ref=\"audioRef\" :src=\"url\" class=\"vfp-hidden\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount, nextTick } from 'vue';\nimport MarkdownIt from 'markdown-it';\nimport { codeToHtml } from 'shiki';\n\nconst props = defineProps<{\n url: string;\n}>();\n\nconst content = ref('');\nconst html = ref('');\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst containerRef = ref<HTMLDivElement | null>(null);\n\n// 创建 markdown-it 实例(支持 GFM 表格、删除线、任务列表)\nconst md = new MarkdownIt({\n html: false,\n linkify: true,\n typographer: false,\n breaks: false,\n});\n\n// 自定义代码块渲染:包裹 code-block-wrapper + header\nmd.renderer.rules.fence = (tokens, idx) => {\n const token = tokens[idx];\n const info = token.info ? token.info.trim() : '';\n const lang = info || 'text';\n const code = token.content;\n // 将代码 base64 编码后存到 data 属性,稍后异步用 shiki 高亮\n const encoded = btoa(unescape(encodeURIComponent(code)));\n return `<div class=\"code-block-wrapper\">\n <div class=\"code-block-header\">\n <span>${lang}</span>\n <button class=\"code-copy-btn\" type=\"button\" data-code=\"${encoded}\" title=\"复制\">复制</button>\n </div>\n <pre data-shiki-pending=\"1\" data-lang=\"${lang}\"><code>${md.utils.escapeHtml(code)}</code></pre>\n </div>`;\n};\n\n// 表格添加包裹层(用于横向滚动)\nconst defaultTableOpen =\n md.renderer.rules.table_open ||\n ((tokens, idx, options, _env, self) => self.renderToken(tokens, idx, options));\nmd.renderer.rules.table_open = (tokens, idx, options, env, self) => {\n return '<div class=\"table-wrapper\">' + defaultTableOpen(tokens, idx, options, env, self);\n};\nconst defaultTableClose =\n md.renderer.rules.table_close ||\n ((tokens, idx, options, _env, self) => self.renderToken(tokens, idx, options));\nmd.renderer.rules.table_close = (tokens, idx, options, env, self) => {\n return defaultTableClose(tokens, idx, options, env, self) + '</div>';\n};\n\nconst loadMarkdown = async () => {\n loading.value = true;\n error.value = null;\n try {\n const response = await fetch(props.url);\n if (!response.ok) throw new Error('加载失败');\n const text = await response.text();\n content.value = text;\n html.value = md.render(text);\n } catch (err) {\n console.error(err);\n error.value = 'Markdown 文件加载失败';\n } finally {\n loading.value = false;\n }\n};\n\nconst highlightCodeBlocks = async () => {\n if (!containerRef.value) return;\n const pending = containerRef.value.querySelectorAll<HTMLPreElement>('pre[data-shiki-pending=\"1\"]');\n for (const pre of pending) {\n const lang = pre.getAttribute('data-lang') || 'text';\n const codeEl = pre.querySelector('code');\n const code = codeEl?.textContent || '';\n try {\n const highlighted = await codeToHtml(code, { lang, theme: 'github-light' });\n pre.outerHTML = highlighted;\n } catch {\n // 不支持的语言保持原样,移除 pending 标记\n pre.removeAttribute('data-shiki-pending');\n }\n }\n};\n\nconst handleCopyClick = async (e: MouseEvent) => {\n const target = (e.target as HTMLElement).closest('.code-copy-btn') as HTMLButtonElement | null;\n if (!target) return;\n e.preventDefault();\n const encoded = target.getAttribute('data-code') || '';\n try {\n const code = decodeURIComponent(escape(atob(encoded)));\n await navigator.clipboard.writeText(code);\n const original = target.textContent;\n target.textContent = '已复制';\n setTimeout(() => {\n target.textContent = original;\n }, 2000);\n } catch {\n // ignore\n }\n};\n\nonMounted(() => {\n document.addEventListener('click', handleCopyClick);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleCopyClick);\n});\n\nwatch(() => props.url, loadMarkdown, { immediate: true });\n\nwatch(html, async () => {\n if (!html.value) return;\n await nextTick();\n highlightCodeBlocks();\n});\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-else-if=\"error\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n </div>\n\n <div v-else class=\"vfp-w-full vfp-h-full vfp-overflow-auto vfp-p-4 md:vfp-p-8\">\n <div class=\"vfp-max-w-full md:vfp-max-w-4xl vfp-mx-auto vfp-bg-white\">\n <div ref=\"containerRef\" class=\"markdown-body vfp-p-6 md:vfp-p-10\" v-html=\"html\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.markdown-body :deep(.table-wrapper) {\n overflow-x: auto;\n margin: 1rem 0;\n border-radius: 0.375rem;\n border: 1px solid #e5e7eb;\n}\n.markdown-body :deep(.table-wrapper > table) {\n margin: 0;\n border: 0;\n border-radius: 0;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue';\nimport { FileText } from 'lucide-vue-next';\nimport { getLanguageFromFileName } from '@eternalheart/file-preview-core';\nimport { codeToHtml } from 'shiki';\n\nconst props = defineProps<{\n url: string;\n fileName: string;\n}>();\n\nconst content = ref<string>('');\nconst highlighted = ref<string>('');\nconst loading = ref(true);\nconst error = ref<string | null>(null);\n\nconst language = computed(() => getLanguageFromFileName(props.fileName));\n\nconst loadText = async () => {\n loading.value = true;\n error.value = null;\n try {\n const response = await fetch(props.url);\n if (!response.ok) throw new Error('加载失败');\n const text = await response.text();\n content.value = text;\n\n if (language.value !== 'text') {\n try {\n highlighted.value = await codeToHtml(text, {\n lang: language.value,\n theme: 'dark-plus',\n });\n } catch {\n // 不支持的语言或解析失败,降级为纯文本\n highlighted.value = '';\n }\n } else {\n highlighted.value = '';\n }\n } catch (err) {\n console.error(err);\n error.value = '文本文件加载失败';\n } finally {\n loading.value = false;\n }\n};\n\nwatch(() => props.url, loadText, { immediate: true });\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div\n class=\"vfp-w-12 vfp-h-12 vfp-border-4 vfp-border-white/20 vfp-border-t-white vfp-rounded-full vfp-animate-spin\"\n />\n </div>\n\n <div v-else-if=\"error\" class=\"vfp-flex vfp-items-center vfp-justify-center vfp-w-full vfp-h-full\">\n <div class=\"vfp-text-white/70 vfp-text-center\">\n <p class=\"vfp-text-lg\">{{ error }}</p>\n </div>\n </div>\n\n <div v-else class=\"vfp-w-full vfp-h-full vfp-overflow-auto vfp-p-4 md:vfp-p-8\">\n <div\n class=\"vfp-max-w-full md:vfp-max-w-6xl vfp-mx-auto vfp-bg-white/5 vfp-backdrop-blur-sm vfp-rounded-2xl vfp-border vfp-border-white/10 vfp-overflow-hidden\"\n >\n <div\n class=\"vfp-flex vfp-items-center vfp-gap-2 md:vfp-gap-3 vfp-px-4 vfp-py-3 md:vfp-px-6 md:vfp-py-4 vfp-bg-white/5 vfp-border-b vfp-border-white/10\"\n >\n <FileText class=\"vfp-w-4 vfp-h-4 md:vfp-w-5 md:vfp-h-5 vfp-text-white/70 vfp-flex-shrink-0\" />\n <span class=\"vfp-text-white vfp-font-medium vfp-text-sm md:vfp-text-base vfp-truncate\">{{ fileName }}</span>\n <span class=\"vfp-ml-auto vfp-text-xs vfp-text-white/50 vfp-uppercase vfp-flex-shrink-0\">{{ language }}</span>\n </div>\n\n <div class=\"vfp-text-sm\">\n <pre\n v-if=\"!highlighted\"\n class=\"vfp-p-6 vfp-text-white/90 vfp-font-mono vfp-whitespace-pre-wrap vfp-break-words\"\n >{{ content }}</pre\n >\n <div v-else class=\"shiki-wrapper\" v-html=\"highlighted\" />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.shiki-wrapper :deep(pre) {\n margin: 0;\n padding: 1.5rem;\n background: transparent !important;\n font-size: 0.875rem;\n overflow-x: auto;\n}\n.shiki-wrapper :deep(code) {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { FileQuestion, Download } from 'lucide-vue-next';\n\ndefineProps<{\n fileName: string;\n fileType: string;\n}>();\n\nconst emit = defineEmits<{\n (e: 'download'): void;\n}>();\n</script>\n\n<template>\n <div\n class=\"vfp-flex vfp-flex-col vfp-items-center vfp-justify-center vfp-w-full vfp-h-full vfp-p-8 vfp-gap-6\"\n >\n <div\n class=\"vfp-w-32 vfp-h-32 vfp-rounded-full vfp-bg-white/10 vfp-flex vfp-items-center vfp-justify-center\"\n >\n <FileQuestion class=\"vfp-w-16 vfp-h-16 vfp-text-white/70\" />\n </div>\n\n <div class=\"vfp-text-white vfp-text-center\">\n <p class=\"vfp-text-xl vfp-font-medium vfp-mb-2\">{{ fileName }}</p>\n <p class=\"vfp-text-white/70\">不支持预览此文件类型 ({{ fileType }})</p>\n </div>\n\n <button\n class=\"vfp-flex vfp-items-center vfp-gap-2 vfp-px-6 vfp-py-3 vfp-bg-white/10 hover:vfp-bg-white/20 vfp-backdrop-blur-sm vfp-rounded-lg vfp-text-white vfp-font-medium vfp-transition-all\"\n @click=\"emit('download')\"\n >\n <Download class=\"vfp-w-5 vfp-h-5\" />\n 下载文件查看\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onBeforeUnmount } from 'vue';\nimport {\n X,\n ZoomIn,\n ZoomOut,\n RotateCw,\n RotateCcw,\n Download,\n ChevronLeft,\n ChevronRight,\n Scan,\n RefreshCw,\n Maximize2,\n Minimize2,\n List,\n} from 'lucide-vue-next';\nimport {\n normalizeFiles,\n getFileType,\n type PreviewFileInput,\n} from '@eternalheart/file-preview-core';\nimport type { CustomRenderer } from './types';\nimport ImageRenderer from './renderers/ImageRenderer.vue';\nimport PdfRenderer from './renderers/PdfRenderer.vue';\nimport DocxRenderer from './renderers/DocxRenderer.vue';\nimport XlsxRenderer from './renderers/XlsxRenderer.vue';\nimport PptxRenderer from './renderers/PptxRenderer.vue';\nimport MsgRenderer from './renderers/MsgRenderer.vue';\nimport EpubRenderer from './renderers/EpubRenderer.vue';\nimport VideoRenderer from './renderers/VideoRenderer.vue';\nimport AudioRenderer from './renderers/AudioRenderer.vue';\nimport MarkdownRenderer from './renderers/MarkdownRenderer.vue';\nimport TextRenderer from './renderers/TextRenderer.vue';\nimport UnsupportedRenderer from './renderers/UnsupportedRenderer.vue';\n\ninterface Props {\n files: PreviewFileInput[];\n currentIndex: number;\n customRenderers?: CustomRenderer[];\n /** 运行模式: modal(弹窗) 或 embed(嵌入) */\n mode?: 'modal' | 'embed';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n customRenderers: () => [],\n mode: 'modal',\n});\n\nconst emit = defineEmits<{\n (e: 'navigate', index: number): void;\n (e: 'close'): void;\n}>();\n\nconst zoom = ref(1);\nconst rotation = ref(0);\nconst currentPage = ref(1);\nconst totalPages = ref(1);\nconst contentNaturalWidth = ref(0);\nconst contentNaturalHeight = ref(0);\nconst imageResetKey = ref(0);\n\nconst contentRef = ref<HTMLDivElement | null>(null);\nconst rootRef = ref<HTMLDivElement | null>(null);\n\n// 导航箭头自动隐藏\nconst navVisible = ref(true);\nlet navHideTimer: number | null = null;\nconst NAV_HIDE_DELAY = 2000;\n\nconst resetNavTimer = () => {\n navVisible.value = true;\n if (navHideTimer !== null) {\n clearTimeout(navHideTimer);\n }\n navHideTimer = window.setTimeout(() => {\n navVisible.value = false;\n }, NAV_HIDE_DELAY);\n};\n\nconst handleMouseMove = () => resetNavTimer();\n\n// 标准化文件输入\nconst normalizedFiles = computed(() => normalizeFiles(props.files));\n\nconst currentFile = computed(() => normalizedFiles.value[props.currentIndex]);\n\n// 自定义渲染器匹配\nconst customRenderer = computed(() => {\n if (!currentFile.value) return null;\n return props.customRenderers.find((r) => r.test(currentFile.value!)) || null;\n});\n\nconst customRendererComponent = computed(() => {\n if (!customRenderer.value || !currentFile.value) return null;\n return customRenderer.value.render(currentFile.value);\n});\n\nconst fileType = computed(() => (currentFile.value ? getFileType(currentFile.value) : 'unsupported'));\n\n// 重置状态当文件改变时\nwatch(\n () => props.currentIndex,\n () => {\n zoom.value = 1;\n rotation.value = 0;\n currentPage.value = 1;\n totalPages.value = 1;\n contentNaturalWidth.value = 0;\n contentNaturalHeight.value = 0;\n navVisible.value = true;\n if (navHideTimer !== null) {\n clearTimeout(navHideTimer);\n }\n }\n);\n\n// 图片加载后默认适应窗口\nwatch(\n [fileType, contentNaturalWidth, contentNaturalHeight],\n () => {\n if (\n fileType.value === 'image' &&\n contentNaturalWidth.value > 0 &&\n contentNaturalHeight.value > 0 &&\n contentRef.value\n ) {\n const containerWidth = contentRef.value.clientWidth;\n const containerHeight = contentRef.value.clientHeight;\n const scaleX = containerWidth / contentNaturalWidth.value;\n const scaleY = containerHeight / contentNaturalHeight.value;\n const newZoom = Math.min(scaleX, scaleY);\n zoom.value = Math.max(0.01, Math.min(10, newZoom));\n }\n }\n);\n\n// 导航箭头自动隐藏计时器\nwatch(\n () => normalizedFiles.value.length,\n (len) => {\n if (len > 1) resetNavTimer();\n },\n { immediate: true }\n);\n\n// 键盘导航\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && props.mode === 'modal') {\n emit('close');\n } else if (e.key === 'ArrowLeft' && props.currentIndex > 0) {\n emit('navigate', props.currentIndex - 1);\n } else if (e.key === 'ArrowRight' && props.currentIndex < normalizedFiles.value.length - 1) {\n emit('navigate', props.currentIndex + 1);\n }\n};\n\nonMounted(() => {\n if (props.mode === 'modal') {\n window.addEventListener('keydown', handleKeyDown);\n } else if (rootRef.value) {\n rootRef.value.addEventListener('keydown', handleKeyDown as EventListener);\n }\n});\n\nonBeforeUnmount(() => {\n if (navHideTimer !== null) clearTimeout(navHideTimer);\n if (props.mode === 'modal') {\n window.removeEventListener('keydown', handleKeyDown);\n } else if (rootRef.value) {\n rootRef.value.removeEventListener('keydown', handleKeyDown as EventListener);\n }\n});\n\nconst handleZoomIn = () => {\n zoom.value = Math.min(zoom.value + 0.1, 10);\n};\nconst handleZoomOut = () => {\n zoom.value = Math.max(zoom.value - 0.1, 0.01);\n};\nconst handleRotate = () => {\n rotation.value = rotation.value + 90;\n};\nconst handleRotateLeft = () => {\n rotation.value = rotation.value - 90;\n};\n\nconst handleFitToWidth = () => {\n if (contentRef.value && contentNaturalWidth.value > 0 && contentNaturalHeight.value > 0) {\n const containerWidth = contentRef.value.clientWidth;\n const containerHeight = contentRef.value.clientHeight;\n const scaleX = containerWidth / contentNaturalWidth.value;\n const scaleY = containerHeight / contentNaturalHeight.value;\n const newZoom = Math.min(scaleX, scaleY);\n zoom.value = Math.max(0.01, Math.min(10, newZoom));\n } else {\n zoom.value = 1;\n }\n rotation.value = 0;\n imageResetKey.value++;\n};\n\nconst handleOriginalSize = () => {\n zoom.value = 1;\n rotation.value = 0;\n imageResetKey.value++;\n};\n\nconst handleZoomChange = (newZoom: number) => {\n zoom.value = newZoom;\n};\n\nconst handleReset = () => {\n zoom.value = 1;\n rotation.value = 0;\n imageResetKey.value++;\n};\n\nconst handleDownload = () => {\n if (!currentFile.value) return;\n const link = document.createElement('a');\n link.href = currentFile.value.url;\n link.download = currentFile.value.name;\n link.click();\n};\n\nconst showZoomControls = computed(() => fileType.value === 'image' || fileType.value === 'pdf');\nconst showRotateControl = computed(() => fileType.value === 'image');\nconst showEpubControls = computed(() => fileType.value === 'epub');\nconst showCloseButton = computed(() => props.mode === 'modal');\n\nconst epubRef = ref<{ prevChapter: () => void; nextChapter: () => void; toggleFullWidth: () => void; toggleToc: () => void } | null>(null);\nconst epubCurrent = ref(0);\nconst epubTotal = ref(0);\nconst epubFullWidth = ref(false);\n\nconst handleEpubChapterChange = (current: number, total: number) => {\n epubCurrent.value = current;\n epubTotal.value = total;\n};\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :tabindex=\"mode === 'embed' ? 0 : -1\"\n class=\"vfp-relative vfp-w-full vfp-h-full vfp-flex vfp-flex-col vfp-overflow-hidden vfp-outline-none\"\n >\n <!-- 顶部工具栏 -->\n <div\n class=\"vfp-flex-shrink-0 vfp-z-10 vfp-bg-black/50 vfp-backdrop-blur-md vfp-border-b vfp-border-white/10\"\n style=\"padding-top: env(safe-area-inset-top, 0px)\"\n >\n <!-- 第一行: 文件名 + 桌面端工具按钮 -->\n <div class=\"vfp-flex vfp-items-center vfp-justify-between vfp-px-3 md:vfp-px-5 vfp-py-1.5 md:vfp-py-2.5\">\n <!-- 左侧: 文件名 + 分页 -->\n <div class=\"vfp-flex vfp-items-center vfp-flex-1 vfp-min-w-0 vfp-mr-2 md:vfp-mr-3\">\n <h2 class=\"vfp-text-white/90 vfp-font-medium vfp-text-xs md:vfp-text-sm vfp-truncate\">\n {{ currentFile?.name }}\n </h2>\n <span class=\"vfp-text-white/40 vfp-text-xs vfp-ml-2 vfp-flex-shrink-0\">\n {{ currentIndex + 1 }}/{{ normalizedFiles.length }}\n </span>\n </div>\n\n <!-- 移动端: 仅下载 + 关闭 -->\n <div class=\"vfp-flex vfp-items-center vfp-gap-1 md:vfp-hidden vfp-flex-shrink-0\">\n <button class=\"toolbar-btn\" title=\"下载\" @click=\"handleDownload\">\n <Download class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button v-if=\"showCloseButton\" class=\"toolbar-btn\" title=\"关闭\" @click=\"emit('close')\">\n <X class=\"vfp-w-4 vfp-h-4\" />\n </button>\n </div>\n\n <!-- 桌面端: 完整工具按钮 -->\n <div class=\"vfp-hidden md:vfp-flex vfp-items-center vfp-gap-1 vfp-flex-shrink-0\">\n <template v-if=\"showZoomControls\">\n <button class=\"toolbar-btn\" :disabled=\"zoom <= 0.01\" title=\"缩小\" @click=\"handleZoomOut\">\n <ZoomOut class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <span\n class=\"vfp-text-white/60 vfp-text-xs vfp-min-w-[3rem] vfp-text-center vfp-font-medium vfp-tabular-nums\"\n >\n {{ Math.round(zoom * 100) }}%\n </span>\n <button class=\"toolbar-btn\" :disabled=\"zoom >= 10\" title=\"放大\" @click=\"handleZoomIn\">\n <ZoomIn class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n\n <template v-if=\"fileType === 'image'\">\n <button class=\"toolbar-btn\" title=\"适应窗口\" @click=\"handleFitToWidth\">\n <Scan class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" title=\"原始尺寸\" @click=\"handleOriginalSize\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"vfp-w-4 vfp-h-4\"\n >\n <text\n x=\"12\"\n y=\"17.5\"\n text-anchor=\"middle\"\n font-size=\"20\"\n font-weight=\"bold\"\n fill=\"currentColor\"\n stroke=\"none\"\n >\n 1:1\n </text>\n </svg>\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n </template>\n </template>\n\n <template v-if=\"showRotateControl\">\n <button class=\"toolbar-btn\" title=\"向左旋转\" @click=\"handleRotateLeft\">\n <RotateCcw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" title=\"向右旋转\" @click=\"handleRotate\">\n <RotateCw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n </template>\n\n <template v-if=\"showZoomControls || showRotateControl\">\n <button class=\"toolbar-btn\" title=\"复原\" @click=\"handleReset\">\n <RefreshCw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n </template>\n\n <template v-if=\"showEpubControls\">\n <button class=\"toolbar-btn\" title=\"目录\" @click=\"epubRef?.toggleToc()\">\n <List class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n <button class=\"toolbar-btn\" title=\"上一章\" @click=\"epubRef?.prevChapter()\">\n <ChevronLeft class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <span\n class=\"vfp-text-white/60 vfp-text-xs vfp-min-w-[4rem] vfp-text-center vfp-font-medium vfp-tabular-nums\"\n >\n {{ epubCurrent }} / {{ epubTotal }}\n </span>\n <button class=\"toolbar-btn\" title=\"下一章\" @click=\"epubRef?.nextChapter()\">\n <ChevronRight class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n <button class=\"toolbar-btn\" :title=\"epubFullWidth ? '正常宽度' : '全屏宽度'\" @click=\"epubRef?.toggleFullWidth()\">\n <Minimize2 v-if=\"epubFullWidth\" class=\"vfp-w-4 vfp-h-4\" />\n <Maximize2 v-else class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-1\" />\n </template>\n\n <button class=\"toolbar-btn\" title=\"下载\" @click=\"handleDownload\">\n <Download class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button v-if=\"showCloseButton\" class=\"toolbar-btn\" title=\"关闭\" @click=\"emit('close')\">\n <X class=\"vfp-w-4 vfp-h-4\" />\n </button>\n </div>\n </div>\n\n <!-- 移动端第二行工具按钮 -->\n <div\n v-if=\"showZoomControls || showRotateControl || showEpubControls\"\n class=\"vfp-flex vfp-items-center vfp-gap-1 vfp-px-3 vfp-pb-1.5 vfp-overflow-x-auto scrollbar-hide md:vfp-hidden\"\n >\n <template v-if=\"showZoomControls\">\n <button class=\"toolbar-btn\" :disabled=\"zoom <= 0.01\" title=\"缩小\" @click=\"handleZoomOut\">\n <ZoomOut class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <span\n class=\"vfp-text-white/60 vfp-text-xs vfp-min-w-[3rem] vfp-text-center vfp-font-medium vfp-tabular-nums\"\n >\n {{ Math.round(zoom * 100) }}%\n </span>\n <button class=\"toolbar-btn\" :disabled=\"zoom >= 10\" title=\"放大\" @click=\"handleZoomIn\">\n <ZoomIn class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-0.5\" />\n <template v-if=\"fileType === 'image'\">\n <button class=\"toolbar-btn\" title=\"适应窗口\" @click=\"handleFitToWidth\">\n <Scan class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" title=\"原始尺寸\" @click=\"handleOriginalSize\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"vfp-w-4 vfp-h-4\"\n >\n <text\n x=\"12\"\n y=\"17.5\"\n text-anchor=\"middle\"\n font-size=\"20\"\n font-weight=\"bold\"\n fill=\"currentColor\"\n stroke=\"none\"\n >\n 1:1\n </text>\n </svg>\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-0.5\" />\n </template>\n </template>\n\n <template v-if=\"showRotateControl\">\n <button class=\"toolbar-btn\" title=\"向左旋转\" @click=\"handleRotateLeft\">\n <RotateCcw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" title=\"向右旋转\" @click=\"handleRotate\">\n <RotateCw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-0.5\" />\n </template>\n\n <button class=\"toolbar-btn\" title=\"复原\" @click=\"handleReset\">\n <RefreshCw class=\"vfp-w-4 vfp-h-4\" />\n </button>\n\n <template v-if=\"showEpubControls\">\n <div class=\"vfp-w-px vfp-h-4 vfp-bg-white/10 vfp-mx-0.5\" />\n <button class=\"toolbar-btn\" title=\"目录\" @click=\"epubRef?.toggleToc()\">\n <List class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" title=\"上一章\" @click=\"epubRef?.prevChapter()\">\n <ChevronLeft class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <span\n class=\"vfp-text-white/60 vfp-text-xs vfp-min-w-[4rem] vfp-text-center vfp-font-medium vfp-tabular-nums\"\n >\n {{ epubCurrent }} / {{ epubTotal }}\n </span>\n <button class=\"toolbar-btn\" title=\"下一章\" @click=\"epubRef?.nextChapter()\">\n <ChevronRight class=\"vfp-w-4 vfp-h-4\" />\n </button>\n <button class=\"toolbar-btn\" :title=\"epubFullWidth ? '正常宽度' : '全屏宽度'\" @click=\"epubRef?.toggleFullWidth()\">\n <Minimize2 v-if=\"epubFullWidth\" class=\"vfp-w-4 vfp-h-4\" />\n <Maximize2 v-else class=\"vfp-w-4 vfp-h-4\" />\n </button>\n </template>\n </div>\n </div>\n\n <!-- 内容区域 -->\n <div\n ref=\"contentRef\"\n class=\"vfp-flex-1 vfp-flex vfp-items-center vfp-justify-center vfp-overflow-auto\"\n @mousemove=\"handleMouseMove\"\n >\n <template v-if=\"currentFile\">\n <component :is=\"customRendererComponent\" v-if=\"customRendererComponent\" :file=\"currentFile\" />\n <template v-else>\n <ImageRenderer\n v-if=\"fileType === 'image'\"\n :url=\"currentFile.url\"\n :zoom=\"zoom\"\n :rotation=\"rotation\"\n :reset-key=\"imageResetKey\"\n :file-size=\"currentFile.size\"\n @zoom-change=\"handleZoomChange\"\n @natural-width-change=\"(w: number) => (contentNaturalWidth = w)\"\n @natural-height-change=\"(h: number) => (contentNaturalHeight = h)\"\n />\n <PdfRenderer\n v-else-if=\"fileType === 'pdf'\"\n :url=\"currentFile.url\"\n :zoom=\"zoom\"\n :current-page=\"currentPage\"\n @page-change=\"(p: number) => (currentPage = p)\"\n @total-pages-change=\"(t: number) => (totalPages = t)\"\n @page-width-change=\"(w: number) => (contentNaturalWidth = w)\"\n />\n <DocxRenderer v-else-if=\"fileType === 'docx'\" :url=\"currentFile.url\" />\n <XlsxRenderer v-else-if=\"fileType === 'xlsx'\" :url=\"currentFile.url\" />\n <PptxRenderer v-else-if=\"fileType === 'pptx'\" :url=\"currentFile.url\" />\n <MsgRenderer v-else-if=\"fileType === 'msg'\" :url=\"currentFile.url\" />\n <EpubRenderer\n v-else-if=\"fileType === 'epub'\"\n ref=\"epubRef\"\n :url=\"currentFile.url\"\n @chapter-change=\"handleEpubChapterChange\"\n @full-width-change=\"(v: boolean) => (epubFullWidth = v)\"\n />\n <VideoRenderer v-else-if=\"fileType === 'video'\" :url=\"currentFile.url\" />\n <AudioRenderer\n v-else-if=\"fileType === 'audio'\"\n :url=\"currentFile.url\"\n :file-name=\"currentFile.name\"\n />\n <MarkdownRenderer v-else-if=\"fileType === 'markdown'\" :url=\"currentFile.url\" />\n <TextRenderer\n v-else-if=\"fileType === 'text'\"\n :url=\"currentFile.url\"\n :file-name=\"currentFile.name\"\n />\n <UnsupportedRenderer\n v-else\n :file-name=\"currentFile.name\"\n :file-type=\"currentFile.type\"\n @download=\"handleDownload\"\n />\n </template>\n </template>\n </div>\n\n <!-- 左右导航箭头 -->\n <template v-if=\"normalizedFiles.length > 1\">\n <button\n v-if=\"currentIndex > 0\"\n :style=\"{\n opacity: navVisible ? 1 : 0,\n transform: navVisible ? 'translateY(-50%)' : 'translateY(-50%) translateX(-20px)',\n pointerEvents: navVisible ? 'auto' : 'none',\n transition: 'opacity 0.2s, transform 0.2s',\n }\"\n class=\"vfp-absolute vfp-z-20 vfp-left-2 md:vfp-left-4 vfp-top-1/2 vfp-w-10 vfp-h-10 md:vfp-w-12 md:vfp-h-12 vfp-rounded-full vfp-bg-black/40 vfp-backdrop-blur-xl vfp-border vfp-border-white/10 vfp-flex vfp-items-center vfp-justify-center vfp-text-white hover:vfp-bg-black/60 vfp-transition-colors vfp-shadow-2xl\"\n @click=\"emit('navigate', currentIndex - 1)\"\n @mouseenter=\"navVisible = true\"\n >\n <ChevronLeft class=\"vfp-w-5 vfp-h-5 md:vfp-w-6 md:vfp-h-6\" />\n </button>\n\n <button\n v-if=\"currentIndex < normalizedFiles.length - 1\"\n :style=\"{\n opacity: navVisible ? 1 : 0,\n transform: navVisible ? 'translateY(-50%)' : 'translateY(-50%) translateX(20px)',\n pointerEvents: navVisible ? 'auto' : 'none',\n transition: 'opacity 0.2s, transform 0.2s',\n }\"\n class=\"vfp-absolute vfp-z-20 vfp-right-2 md:vfp-right-4 vfp-top-1/2 vfp-w-10 vfp-h-10 md:vfp-w-12 md:vfp-h-12 vfp-rounded-full vfp-bg-black/40 vfp-backdrop-blur-xl vfp-border vfp-border-white/10 vfp-flex vfp-items-center vfp-justify-center vfp-text-white hover:vfp-bg-black/60 vfp-transition-colors vfp-shadow-2xl\"\n @click=\"emit('navigate', currentIndex + 1)\"\n @mouseenter=\"navVisible = true\"\n >\n <ChevronRight class=\"vfp-w-5 vfp-h-5 md:vfp-w-6 md:vfp-h-6\" />\n </button>\n </template>\n </div>\n</template>\n\n<style scoped>\n.toolbar-btn {\n padding: 0.5rem;\n border-radius: 0.375rem;\n transition: all 0.15s;\n user-select: none;\n color: white;\n background: transparent;\n border: 0;\n cursor: pointer;\n}\n@media (min-width: 768px) {\n .toolbar-btn {\n padding: 0.375rem;\n }\n}\n.toolbar-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n.toolbar-btn:active {\n background: rgba(255, 255, 255, 0.2);\n}\n.toolbar-btn:disabled {\n color: rgba(255, 255, 255, 0.3);\n cursor: not-allowed;\n}\n</style>\n","import { onMounted, onUnmounted } from 'vue';\n\n/**\n * 锁定 body 滚动 (用于 Modal)\n */\nexport function useScrollLock(enabled: () => boolean) {\n let originalOverflow = '';\n let originalPaddingRight = '';\n let locked = false;\n\n const lock = () => {\n if (locked || typeof document === 'undefined') return;\n originalOverflow = document.body.style.overflow;\n originalPaddingRight = document.body.style.paddingRight;\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n document.body.style.overflow = 'hidden';\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`;\n }\n locked = true;\n };\n\n const unlock = () => {\n if (!locked || typeof document === 'undefined') return;\n document.body.style.overflow = originalOverflow;\n document.body.style.paddingRight = originalPaddingRight;\n locked = false;\n };\n\n onMounted(() => {\n if (enabled()) lock();\n });\n\n onUnmounted(() => {\n unlock();\n });\n\n return { lock, unlock };\n}\n","<script setup lang=\"ts\">\nimport { watch } from 'vue';\nimport type { PreviewFileInput } from '@eternalheart/file-preview-core';\nimport type { CustomRenderer } from './types';\nimport FilePreviewContent from './FilePreviewContent.vue';\nimport { useScrollLock } from './composables/useScrollLock';\n\ninterface Props {\n files: PreviewFileInput[];\n currentIndex: number;\n isOpen: boolean;\n customRenderers?: CustomRenderer[];\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n customRenderers: () => [],\n});\n\nconst emit = defineEmits<{\n (e: 'close'): void;\n (e: 'navigate', index: number): void;\n}>();\n\nconst { lock, unlock } = useScrollLock(() => props.isOpen);\n\nwatch(\n () => props.isOpen,\n (open) => {\n if (open) lock();\n else unlock();\n }\n);\n\nconst handleBackdropClick = () => emit('close');\nconst handleContentClick = (e: MouseEvent) => e.stopPropagation();\nconst handleWheel = (e: WheelEvent) => e.stopPropagation();\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition name=\"vfp-fade\">\n <div v-if=\"isOpen\" class=\"vfp-root\">\n <div\n class=\"vfp-fixed vfp-inset-0 vfp-z-[9999] vfp-flex vfp-items-center vfp-justify-center vfp-bg-black/80 vfp-backdrop-blur-md vfp-overflow-hidden\"\n @click=\"handleBackdropClick\"\n @wheel=\"handleWheel\"\n >\n <div class=\"vfp-relative vfp-w-full vfp-h-full\" @click=\"handleContentClick\">\n <FilePreviewContent\n mode=\"modal\"\n :files=\"files\"\n :current-index=\"currentIndex\"\n :custom-renderers=\"customRenderers\"\n @close=\"emit('close')\"\n @navigate=\"(i) => emit('navigate', i)\"\n />\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n","<script setup lang=\"ts\">\nimport type { CSSProperties } from 'vue';\nimport type { PreviewFileInput } from '@eternalheart/file-preview-core';\nimport type { CustomRenderer } from './types';\nimport FilePreviewContent from './FilePreviewContent.vue';\n\ninterface Props {\n files: PreviewFileInput[];\n currentIndex?: number;\n customRenderers?: CustomRenderer[];\n /** 宽度,默认 100% 填充父容器 */\n width?: number | string;\n /** 高度,默认 100% 填充父容器 */\n height?: number | string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n currentIndex: 0,\n customRenderers: () => [],\n width: '100%',\n height: '100%',\n});\n\nconst emit = defineEmits<{\n (e: 'navigate', index: number): void;\n}>();\n\nconst wrapperStyle: CSSProperties = {\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\n height: typeof props.height === 'number' ? `${props.height}px` : props.height,\n};\n</script>\n\n<template>\n <div class=\"vfp-root\" :style=\"wrapperStyle\">\n <div class=\"vfp-relative vfp-w-full vfp-h-full vfp-overflow-hidden vfp-bg-black/80\">\n <FilePreviewContent\n mode=\"embed\"\n :files=\"files\"\n :current-index=\"currentIndex\"\n :custom-renderers=\"customRenderers\"\n @navigate=\"(i) => emit('navigate', i)\"\n />\n </div>\n </div>\n</template>\n","// 导入样式\nimport './index.css';\n\n// 导入版本号\nimport packageJson from '../package.json';\n\n// 导出版本号\nexport const VERSION = packageJson.version;\n\n// 导出主组件\nexport { default as FilePreviewModal } from './FilePreviewModal.vue';\nexport { default as FilePreviewEmbed } from './FilePreviewEmbed.vue';\nexport { default as FilePreviewContent } from './FilePreviewContent.vue';\n\n// 导出类型定义\nexport type {\n PreviewFile,\n PreviewFileLink,\n PreviewFileInput,\n FileType,\n PreviewState,\n ToolbarAction,\n CustomRenderer,\n} from './types';\n\n// 导出工具函数\nexport {\n normalizeFile,\n normalizeFiles,\n getFileType,\n configurePdfWorker,\n} from '@eternalheart/file-preview-core';\n\nexport type { PdfWorkerOptions } from '@eternalheart/file-preview-core';\n"],"names":["props","__props","emit","__emit","loaded","ref","error","position","isDragging","dragStart","internalZoom","naturalSize","imgRef","containerRef","watch","z","clampPosition","pos","currentZoom","container","containerW","containerH","imgW","imgH","margin","rangeX","rangeY","handleLoad","e","img","handleError","handleDoubleClick","handleWheelNative","rect","mouseX","mouseY","delta","prev","newZoom","scale","onMounted","onBeforeUnmount","handleMouseDown","handleMouseMove","handleMouseUp","transformStyle","computed","sizeText","formatFileSize","_createElementBlock","_openBlock","_hoisted_1","_cache","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_5","__webpack_require__","exports","definition","key","obj","prop","__webpack_exports__","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","ColorPicker","DOMSVGFactory","DrawLayer","util_FeatureTest","GlobalWorkerOptions","util_ImageKind","InvalidPDFException","MissingPDFException","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","version","isNodeJS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","RenderingIntentFlag","AnnotationEditorPrefix","TextRenderingMode","AnnotationType","AnnotationBorderStyleType","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","baseUrl","options","dots","stringToUTF8String","absoluteUrl","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","status","FormatError","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","str","i","string32","objectFromMap","map","isLittleEndian","buffer8","isEvalSupported","_b","_a","hexNumbers","n","r","g","b","transform","minMax","temp","m1","m2","p","m","xt","yt","d","p1","p2","p3","p4","transpose","a","c","first","second","sx","sy","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_Util_static","getExtremum_fn","getExtremumOnCurve_fn","t","mt","tt","ttt","x","y","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","_","getUuid","buf","AnnotationPrefix","FontRenderOps","toBase64Util","arr","SVG_NS","_PixelsPerInch","__publicField","type","isValidFetchUrl","response","resolve","reject","request","PageViewport","viewBox","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","topLeft","bottomRight","extraDelay","ii","filename","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","protocol","deprecated","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","w","widthStr","heightStr","pixelRatio","_EditorToolbar","editor","_EditorToolbar_instances","_toolbar","_colorPicker","_editor","_buttons","_altText","_l10nRemove","editToolbar","signal","_EditorToolbar_static","pointerDown_fn","buttons","addDeleteButton_fn","altText","button","addListenersToElement_fn","divider_get","colorPicker","focusIn_fn","focusOut_fn","element","editorType","_uiManager","divider","EditorToolbar","HighlightToolbar","uiManager","_HighlightToolbar_instances","parent","boxes","isLTR","getLastPoint_fn","render_fn","addHighlightButton_fn","lastY","lastX","box","bindEvents","names","opacityToHex","opacity","IdManager","_id","__privateWrapper","_ImageManager","_ImageManager_instances","_baseId","svg","image","promise","file","lastModified","size","get_fn","id","blobPromise","blob","data","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","_KeyboardManager_instances","isMac","keys","callback","isMacKey","self","event","serialize_fn","bubbles","args","checker","_ColorManager","rgb","RGB","ColorManager","_AnnotationEditorUIManager","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","_AnnotationEditorUIManager_instances","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_highlightToolbar","_idManager","_isEnabled","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_mlManager","_mode","_selectedEditors","_selectedTextNode","_pageColors","_showAllStates","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","el","small","big","layer","_c","_d","ac","pair","firstTime","mode","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","addCopyPasteListeners_fn","removeKeyboardManager_fn","removeCopyPasteListeners_fn","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","types","dispatchUpdateUI_fn","pageIndex","editId","isFromKeyboard","disableAll_fn","enableAll_fn","visible","updateButton","mustWait","annotationElementId","lastSelectedEditor_get","ed","params","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","h","range","annotation","editorId","currentLayer","displayHighlightToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","_AltText","_AltText_instances","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_AnnotationEditor","parameters","_AnnotationEditor_instances","_accessibilityData","_allResizerDivs","_disabled","_keepAspectRatio","_resizersDiv","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialPosition","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","target","translate_fn","bx","by","_borderLineWidth","_AnnotationEditor_static","rotatePoint_fn","parentScale","widthPercent","heightPercent","editToolbarDiv","addFocusListeners_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","_angle","context","timeout","createResizers_fn","children","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","child","setResizerTabIndex_fn","resizerPointermove_fn","_e","aspectRatio","action","content","firstChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedWidth","savedHeight","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","newWidth","newHeight","minWidth","minHeight","round","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","oldDiag","isSelected","pointerMoveCallback","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_AnnotationStorage_instances","_modified","_modifiedIds","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","_inspectFont","loadedName","src","fontFace","font","hasFonts","supported","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","s","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","disableFontFace","inspectFont","css","objs","character","cmds","commands","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","reason","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_DOMFilterFactory_instances","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","filter","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","k","j","mapR","buffer","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","packageCapability","packageMap","fs","http","https","path2d","NodePackages","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","colorStop","owner","inverse","pathType","pattern","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","current","cssColor","matrix","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","max","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","mask","sum","steps","path","p0","pp","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_CanvasGraphics_instances","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","intent","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","clip","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","strokeColor","needRestore","paths","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternTransform","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","lineWidth","chars","glyph","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","objId","inv","group","currentCtx","bounds","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","tag","clipBox","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","op","_port","_src","CallbackKind","StreamKind","wrapReason","MessageHandler","sourceName","targetName","comObj","_MessageHandler_instances","_messageAC","onMessage_fn","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","processStreamMessage_fn","result","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","Metadata","parsedData","_metadataMap","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","view","internal","userSet","OptionalContentConfig","_OptionalContentConfig_instances","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","state","operator","array","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","total","found","rangeReader","reader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","stream","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","parts","quotindex","extvalue","encodingend","charset","hex","createHeaders","isHttp","httpHeaders","headers","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","listeners","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","urlRegex","parseUrlOrPath","sourceUrl","createRequest","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","readableStream","BaseRangeReader","handleResponse","stat","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","_TextLayer","textContentSource","_TextLayer_instances","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_TextLayer_static","ensureMinFontSizeComputed_fn","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","items","textDivs","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","getAscent_fn","left","top","scaleFactorStr","divStyle","shouldScaleText","absScaleX","absScaleY","br","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","pixels","XfaText","xfa","output","walk","node","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","getUrlProp","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isChrome","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","isRefProxy","_PDFDocumentLoadingTask","listener","PDFDocumentProxy","pdfInfo","keepLoadedFonts","PDFPageProxy","pageInfo","_PDFPageProxy_instances","_delayedCleanupTimeout","_pendingCleanup","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","abortDelayedCleanup_fn","intentState","intentPrint","complete","internalRenderTask","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","delayed","renderTasks","LoopbackPort","_listeners","_deferred","rmAbort","onAbort","_PDFWorker","port","_PDFWorker_instances","_workerPorts","resolve_fn","_isWorkerDisabled","_PDFWorker_static","mainThreadWorkerMessageHandler_get","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","_fakeWorkerId","workerHandler","cachedPort","otherUrl","base","other","wrapper","loadingTask","factory","_WorkerTransport_instances","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","page","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","exception","updatePassword","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","results","refStr","INITIAL_DATA","_PDFObjects_instances","_objs","ensureObj_fn","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","html","storage","storedData","option","linkService","attributes","isHTMLAnchorElement","root","rootHtml","isNotForRichText","rootDiv","stack","childHtml","DEFAULT_TAB_INDEX","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_AnnotationElement_instances","_updates","_hasBorder","_popupElement","titleObj","contentsObj","richText","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","elementWidth","elementHeight","setColor","jsName","styleName","colorType","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","_LinkAnnotationElement_instances","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","values","index","displayValue","selectChild","indices","change","elements","PopupElement","elementIds","modificationDate","parentRect","open","_PopupElement_instances","_boundKeyDown","keyDown_fn","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","baseColor","header","title","html_get","contents","dir","lines","line","popupContent","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","lineAttributes","setPosition_fn","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_polylines","inkLists","inkList","_FileAttachmentAnnotationElement_instances","_trigger","trigger","download_fn","accessibilityManager","annotationEditorUIManager","structTreeLayer","_AnnotationLayer_instances","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","appendElement_fn","setAnnotationCanvasMap_fn","contentElement","annotationId","ariaAttributes","EOL_PATTERN","_FreeTextEditor","_FreeTextEditor_instances","_content","_editorDivId","_editModeAC","_fontSize","updateFontSize_fn","updateColor_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","baseX","baseY","posX","posY","paste","_FreeTextEditor_static","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","getNodeContent_fn","newRange","beforeLength","acc","textPosition","padding","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","_FreeDrawOutliner","scaleFactor","thickness","innerMargin","_FreeDrawOutliner_instances","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","bottom","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","N","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_FreeDrawOutline_instances","_outline","computeMinMax_fn","rescale_fn","rescaleAndSwap_fn","outliner","lastPointX","lastPointY","ltrCallback","HighlightOutliner","_HighlightOutliner_instances","_verticalEdges","_intervals","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_ColorPicker","_ColorPicker_instances","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","_HighlightEditor","_HighlightEditor_instances","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_lastPoint","_opacity","_outlineId","_text","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","toolbar","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_HighlightEditor_static","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","pointerDown","endHighlight_fn","highlightMove_fn","clipPathId","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","_InkEditor","_InkEditor_instances","_baseHeight","_baseWidth","_canvasContextMenuTimeoutId","_currentPath2D","_disableEditing","_drawingAC","_hasSomethingToDraw","_isCanvasInitialized","_observer","_pointerdownAC","_realWidth","_realHeight","_requestFrameCallback","updateOpacity_fn","createCanvas_fn","createObserver_fn","setCanvasDims_fn","fitToContent_fn","addPointerdownListener_fn","removePointerdownListener_fn","startDrawing_fn","draw_fn","endDrawing_fn","getInitialBBox_fn","redraw_fn","roundedWidth","roundedHeight","setScaleFactor_fn","bezier","_InkEditor_static","fromPDFCoordinates_fn","p10","p11","p20","p21","p30","p31","path2D","buildPath2D_fn","getBbox_fn","serializePaths_fn","setOpacity","parentRotation","setStroke_fn","drawPoints_fn","currentPath","makeBezierCurve_fn","endPath_fn","stopDrawing_fn","generateBezierPoints_fn","xy","lastPoints","bezierPoints","control1","control2","updateTransform_fn","entries","getPadding_fn","scaleFactorW","scaleFactorH","toPDFCoordinates_fn","p40","p41","xMin","xMax","yMin","yMax","prevTranslationX","prevTranslationY","unscaledPadding","InkEditor","_StampEditor","_StampEditor_instances","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","structParent","bitmapUrl","bitmapId","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","factor","drawBitmap_fn","setDimensions_fn","prevWidth","prevHeight","toUrl","isSameRect","isSamePageIndex","isSameAltText","StampEditor","_AnnotationEditorLayer","annotationLayer","_AnnotationEditorLayer_instances","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isCleaningUp","_isDisabling","_textLayer","_textSelectionAC","editorTypes","cleanup_fn","classList","isCommitting","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","oldRotation","_DrawLayer","_DrawLayer_instances","_mapping","_toUpdate","isPathUpdatable","createSVG_fn","pathId","createClipPath_fn","use","maskId","use1","use2","_DrawLayer_static","setBox_fn","className","clipPathUse","__webpack_exports__AbortException","__webpack_exports__AnnotationEditorLayer","__webpack_exports__AnnotationEditorParamsType","__webpack_exports__AnnotationEditorType","__webpack_exports__AnnotationEditorUIManager","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__ColorPicker","__webpack_exports__DOMSVGFactory","__webpack_exports__DrawLayer","__webpack_exports__FeatureTest","__webpack_exports__GlobalWorkerOptions","__webpack_exports__ImageKind","__webpack_exports__InvalidPDFException","__webpack_exports__MissingPDFException","__webpack_exports__OPS","__webpack_exports__OutputScale","__webpack_exports__PDFDataRangeTransport","__webpack_exports__PDFDateString","__webpack_exports__PDFWorker","__webpack_exports__PasswordResponses","__webpack_exports__PermissionFlag","__webpack_exports__PixelsPerInch","__webpack_exports__RenderingCancelledException","__webpack_exports__TextLayer","__webpack_exports__UnexpectedResponseException","__webpack_exports__Util","__webpack_exports__VerbosityLevel","__webpack_exports__XfaLayer","__webpack_exports__build","__webpack_exports__createValidAbsoluteUrl","__webpack_exports__fetchData","__webpack_exports__getDocument","__webpack_exports__getFilenameFromUrl","__webpack_exports__getPdfFilenameFromUrl","__webpack_exports__getXfaPageViewport","__webpack_exports__isDataScheme","__webpack_exports__isPdfFile","__webpack_exports__noContextMenu","__webpack_exports__normalizeUnicode","__webpack_exports__setLayerDimensions","__webpack_exports__shadow","__webpack_exports__version","configurePdfWorker","pdfjsLib","numPages","pdfDoc","pageElements","renderPage","baseViewport","renderAll","pageDiv","loadPdf","pdfjsLib.getDocument","nextTick","err","handleScroll","scrollTop","containerHeight","scrollCenter","currentVisiblePage","minDistance","pageEl","idx","containerRect","pageCenter","distance","_withDirectives","_hoisted_4","_vShow","PAGE_HEIGHT","PAGE_PADDING_Y","PAGE_PADDING_X","PAGE_GAP","PAGE_CONTENT_HEIGHT","loading","pages","measureRef","loadDocx","arrayBuffer","mammoth","paginate","currentPageUsed","blocks","contentStyle","measureStyle","pageStyle","_Fragment","_renderList","pageHtml","sheetData","resizeObserver","resizeTimeout","lastDimensions","calculateDimensions","rawWidth","rawHeight","mountSpreadsheet","isMobile","Spreadsheet","loadExcel","workbook","ExcelJS","convertWorkbookToSpreadsheetData","errorMsg","isInitialRender","newDimensions","widthDiff","heightDiff","_createVNode","_unref","FileSpreadsheet","_hoisted_6","_hoisted_7","slideCount","previewer","arrayBufferRef","containerWidth","reinitializePreviewer","currentDimensions","init","loadPptx","timeoutId","hiddenContainer","tempPreviewer","Presentation","formatRecipients","recipients","email","formatDate","dateStr","date","decodeHtmlBody","formatMessageClass","messageClass","msgReader","MsgReader","subject","sender","senderName","senderEmail","toStr","ccStr","bccStr","sentDate","receivedDate","createdDate","attachments","bodyHtml","messageId","importance","importanceLabel","sensitivity","sensitivityLabel","formatAttachmentSize","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","User","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","Users","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","Calendar","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","Clock","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","Tag","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","Mail","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","Paperclip","_hoisted_51","_hoisted_52","_createTextVNode","_hoisted_53","_normalizeClass","_hoisted_54","Hash","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","A4_WIDTH","viewerRef","isFullWidth","toc","showToc","activeTocHref","book","rendition","totalLocations","lastCfi","cleanup","prevChapter","nextChapter","toggleFullWidth","reattachScrollListener","toggleToc","handleTocClick","href","isActive","__expose","loadEpub","bookInput","ePub","loc","cur","nav","location","spineHref","collect","onResize","scrollContainer","onContainerScroll","mgr","tryAttach","_normalizeStyle","X","$event","sub","isLoading","videoContainerRef","player","videoElement","videoType","getVideoMimeType","sources","videojs","videoEl","useAudioPlayer","audioRef","isPlaying","currentTime","duration","volume","isMuted","isLoop","audio","onTimeUpdate","onDurationChange","onCanPlay","onWaiting","onPlaying","onPlay","onPause","onEnded","onError","onUnmounted","time","seconds","vol","clamped","formatTime","urlRef","toRef","togglePlay","seek","skip","setVolume","toggleMute","toggleLoop","showVolume","volumeHideTimer","volumeRef","progress","VolumeIcon","VolumeX","Volume1","Volume2","handleClickOutside","handleVolumeEnter","handleVolumeLeave","Repeat","SkipBack","_createBlock","Pause","Play","SkipForward","_resolveDynamicComponent","_Transition","md","MarkdownIt","tokens","token","encoded","defaultTableOpen","_env","env","defaultTableClose","loadMarkdown","highlightCodeBlocks","pending","pre","codeEl","highlighted","codeToHtml","handleCopyClick","original","language","getLanguageFromFileName","FileText","FileQuestion","Download","NAV_HIDE_DELAY","zoom","currentPage","totalPages","contentNaturalWidth","contentNaturalHeight","imageResetKey","contentRef","rootRef","navVisible","navHideTimer","resetNavTimer","normalizedFiles","normalizeFiles","currentFile","customRenderer","customRendererComponent","fileType","getFileType","len","handleKeyDown","handleZoomIn","handleZoomOut","handleRotate","handleRotateLeft","handleFitToWidth","handleOriginalSize","handleZoomChange","handleReset","handleDownload","showZoomControls","showRotateControl","showEpubControls","showCloseButton","epubRef","epubCurrent","epubTotal","epubFullWidth","handleEpubChapterChange","ZoomOut","ZoomIn","Scan","RotateCcw","RotateCw","RefreshCw","List","ChevronLeft","ChevronRight","Minimize2","Maximize2","ImageRenderer","PdfRenderer","DocxRenderer","XlsxRenderer","PptxRenderer","MsgRenderer","EpubRenderer","v","VideoRenderer","AudioRenderer","MarkdownRenderer","TextRenderer","UnsupportedRenderer","useScrollLock","originalOverflow","originalPaddingRight","locked","lock","scrollbarWidth","unlock","handleBackdropClick","handleContentClick","handleWheel","_Teleport","FilePreviewContent","wrapperStyle","VERSION","packageJson"],"mappings":"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","x_google_ignoreList":[1]}
|