@bbodek/internal-ui 0.0.62 → 0.0.63
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/dist/{FilterCalendarPanel-CwRJdhW3.js → FilterCalendarPanel-BNRUfDdZ.js} +2 -2
- package/dist/FilterCalendarPanel-BNRUfDdZ.js.map +1 -0
- package/dist/{FilterMultiSelectPanel-q7cF7xQ9.js → FilterMultiSelectPanel-Du69rnYG.js} +2 -2
- package/dist/FilterMultiSelectPanel-Du69rnYG.js.map +1 -0
- package/dist/FilterSelectOptionPanel-DBbNbJMz.js +2 -0
- package/dist/FilterSelectOptionPanel-DBbNbJMz.js.map +1 -0
- package/dist/ImageErrorBoundary-CAFEpeUM.js +2 -0
- package/dist/ImageErrorBoundary-CAFEpeUM.js.map +1 -0
- package/dist/PreviewImage-DBthN54T.js +2 -0
- package/dist/PreviewImage-DBthN54T.js.map +1 -0
- package/dist/PreviewImageViewer-CyAg1mTT.js +2 -0
- package/dist/PreviewImageViewer-CyAg1mTT.js.map +1 -0
- package/dist/PreviewInlineViewer-Oz3Wez1y.js +2 -0
- package/dist/PreviewInlineViewer-Oz3Wez1y.js.map +1 -0
- package/dist/PreviewLoadingRenderer-BcQJp9EF.js +2 -0
- package/dist/PreviewLoadingRenderer-BcQJp9EF.js.map +1 -0
- package/dist/PreviewMultiController-CzTvnJ_4.js +2 -0
- package/dist/PreviewMultiController-CzTvnJ_4.js.map +1 -0
- package/dist/PreviewMultiDesktop-2dyr7Xx7.js +2 -0
- package/dist/PreviewMultiDesktop-2dyr7Xx7.js.map +1 -0
- package/dist/PreviewMultiDesktopViewer-DlcdKjBU.js +2 -0
- package/dist/PreviewMultiDesktopViewer-DlcdKjBU.js.map +1 -0
- package/dist/PreviewMultiMobile-Dp5Ou8D5.js +2 -0
- package/dist/PreviewMultiMobile-Dp5Ou8D5.js.map +1 -0
- package/dist/PreviewMultiMobileViewer-fDjmo51Q.js +2 -0
- package/dist/PreviewMultiMobileViewer-fDjmo51Q.js.map +1 -0
- package/dist/PreviewOverlayWrapper-DxUlbhpR.js +2 -0
- package/dist/PreviewOverlayWrapper-DxUlbhpR.js.map +1 -0
- package/dist/PreviewPdfViewer-B6T7WJdJ.js +2 -0
- package/dist/PreviewPdfViewer-B6T7WJdJ.js.map +1 -0
- package/dist/PreviewPdfViewerImage-CCygga_7.js +2 -0
- package/dist/PreviewPdfViewerImage-CCygga_7.js.map +1 -0
- package/dist/PreviewSingleDesktop-BiUot5dJ.js +2 -0
- package/dist/PreviewSingleDesktop-BiUot5dJ.js.map +1 -0
- package/dist/PreviewSingleMobile-Pnj_sotj.js +2 -0
- package/dist/PreviewSingleMobile-Pnj_sotj.js.map +1 -0
- package/dist/PreviewThumbnailImage-DINrCoM7.js +2 -0
- package/dist/PreviewThumbnailImage-DINrCoM7.js.map +1 -0
- package/dist/PreviewThumbnailLoading-CnTiRnzQ.js +2 -0
- package/dist/PreviewThumbnailLoading-CnTiRnzQ.js.map +1 -0
- package/dist/PreviewThumbnailNotSupport-C8E2oR0p.js +2 -0
- package/dist/PreviewThumbnailNotSupport-C8E2oR0p.js.map +1 -0
- package/dist/PreviewThumbnailPdf-DJb08nz0.js +2 -0
- package/dist/PreviewThumbnailPdf-DJb08nz0.js.map +1 -0
- package/dist/PreviewThumbnailViewer-BaRk-J-K.js +2 -0
- package/dist/PreviewThumbnailViewer-BaRk-J-K.js.map +1 -0
- package/dist/PreviewToolbar-CV_QkfX6.js +2 -0
- package/dist/PreviewToolbar-CV_QkfX6.js.map +1 -0
- package/dist/{StepDialogConfirmModal-Dwd5QdwE.js → StepDialogConfirmModal-5tnqZ00i.js} +2 -2
- package/dist/StepDialogConfirmModal-5tnqZ00i.js.map +1 -0
- package/dist/{StepFullScreenDialogConfirmBottomSheet--YQ4TBVo.js → StepFullScreenDialogConfirmBottomSheet-BM8E6bFE.js} +2 -2
- package/dist/StepFullScreenDialogConfirmBottomSheet-BM8E6bFE.js.map +1 -0
- package/dist/components/Button/IconButton/constants/index.d.ts +1 -0
- package/dist/components/Button/IconButton/constants/index.d.ts.map +1 -1
- package/dist/components/Input/shared/hooks/useInputChange.d.ts.map +1 -1
- package/dist/components/Preview/PreviewInline/PreviewInline.d.ts +4 -0
- package/dist/components/Preview/PreviewInline/PreviewInline.d.ts.map +1 -0
- package/dist/components/Preview/PreviewInline/PreviewInlineViewer.d.ts +5 -0
- package/dist/components/Preview/PreviewInline/PreviewInlineViewer.d.ts.map +1 -0
- package/dist/components/Preview/PreviewInline/index.d.ts +3 -0
- package/dist/components/Preview/PreviewInline/index.d.ts.map +1 -0
- package/dist/components/Preview/PreviewInline/types.d.ts +6 -0
- package/dist/components/Preview/PreviewInline/types.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/PreviewMulti.d.ts +4 -0
- package/dist/components/Preview/PreviewMulti/PreviewMulti.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiDesktop.d.ts +4 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiDesktop.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiDesktopViewer.d.ts +5 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiDesktopViewer.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiMobile.d.ts +4 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiMobile.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiMobileViewer.d.ts +5 -0
- package/dist/components/Preview/PreviewMulti/PreviewMultiMobileViewer.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/index.d.ts +3 -0
- package/dist/components/Preview/PreviewMulti/index.d.ts.map +1 -0
- package/dist/components/Preview/PreviewMulti/types.d.ts +5 -0
- package/dist/components/Preview/PreviewMulti/types.d.ts.map +1 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingle.d.ts +4 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingle.d.ts.map +1 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingleDesktop.d.ts +4 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingleDesktop.d.ts.map +1 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingleMobile.d.ts +4 -0
- package/dist/components/Preview/PreviewSingle/PreviewSingleMobile.d.ts.map +1 -0
- package/dist/components/Preview/PreviewSingle/index.d.ts +3 -0
- package/dist/components/Preview/PreviewSingle/index.d.ts.map +1 -0
- package/dist/components/Preview/PreviewSingle/types.d.ts +5 -0
- package/dist/components/Preview/PreviewSingle/types.d.ts.map +1 -0
- package/dist/components/Preview/index.d.ts +6 -0
- package/dist/components/Preview/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewImage.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewImage.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewImageViewer.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewImageViewer.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewLoading.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewLoading.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewLoadingRenderer.d.ts +5 -0
- package/dist/components/Preview/shared/components/Preview/PreviewLoadingRenderer.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewNotSupport.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewNotSupport.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewPdfViewer.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewPdfViewer.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewPdfViewerImage.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewPdfViewerImage.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewViewer.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/PreviewViewer.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/PreviewViewerWrapper.d.ts +5 -0
- package/dist/components/Preview/shared/components/Preview/PreviewViewerWrapper.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/constants/index.d.ts +85 -0
- package/dist/components/Preview/shared/components/Preview/constants/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/index.d.ts +3 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/index.d.ts +2 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/types.d.ts +14 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/usePreviewPdfImageUrlsEffect.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewPdfImageUrlsEffect/usePreviewPdfImageUrlsEffect.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/index.d.ts +2 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/types.d.ts +6 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/usePreviewViewerSizeEffect.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/hooks/effects/usePreviewViewerSizeEffect/usePreviewViewerSizeEffect.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/index.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/hooks/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/types.d.ts +23 -0
- package/dist/components/Preview/shared/components/Preview/hooks/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/hooks/usePreview.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/hooks/usePreview.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/index.d.ts +7 -0
- package/dist/components/Preview/shared/components/Preview/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/types/index.d.ts +58 -0
- package/dist/components/Preview/shared/components/Preview/types/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/calculatePreviewTransformValue.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/calculatePreviewTransformValue.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/constants.d.ts +9 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/constants.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/index.d.ts +4 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/types.d.ts +11 -0
- package/dist/components/Preview/shared/components/Preview/utils/calculatePreviewTransformValue/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/Preview/utils/index.d.ts +2 -0
- package/dist/components/Preview/shared/components/Preview/utils/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewHeader.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewHeader.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewMultiController/PreviewMultiController.d.ts +5 -0
- package/dist/components/Preview/shared/components/PreviewMultiController/PreviewMultiController.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewMultiController/index.d.ts +2 -0
- package/dist/components/Preview/shared/components/PreviewMultiController/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewOverlayWrapper.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewOverlayWrapper.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnail.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnail.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailImage.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailImage.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailLoading.d.ts +3 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailLoading.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailNotSupport.d.ts +3 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailNotSupport.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailOverlay.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailOverlay.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailPdf.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailPdf.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailViewer.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnailViewer.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnails.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/PreviewThumbnails.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/constants.d.ts +2 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/constants.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/effects/index.d.ts +2 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/effects/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/effects/usePreviewThumbnailPdfUrlEffect.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/effects/usePreviewThumbnailPdfUrlEffect.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/index.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/types.d.ts +11 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/usePreviewThumbnailPdf.d.ts +6 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/hooks/usePreviewThumbnailPdf.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/index.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/types/index.d.ts +20 -0
- package/dist/components/Preview/shared/components/PreviewThumbnails/types/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewToolbar.d.ts +4 -0
- package/dist/components/Preview/shared/components/PreviewToolbar.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/PreviewWrapper.d.ts +5 -0
- package/dist/components/Preview/shared/components/PreviewWrapper.d.ts.map +1 -0
- package/dist/components/Preview/shared/components/index.d.ts +8 -0
- package/dist/components/Preview/shared/components/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/effects/index.d.ts +3 -0
- package/dist/components/Preview/shared/hooks/effects/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/effects/types.d.ts +6 -0
- package/dist/components/Preview/shared/hooks/effects/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/effects/useFileDataCleanUpEffect.d.ts +4 -0
- package/dist/components/Preview/shared/hooks/effects/useFileDataCleanUpEffect.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/effects/usePreviewMultiInitialFileEffect.d.ts +4 -0
- package/dist/components/Preview/shared/hooks/effects/usePreviewMultiInitialFileEffect.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/index.d.ts +4 -0
- package/dist/components/Preview/shared/hooks/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/index.d.ts +3 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/types.d.ts +18 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/usePreviewImage.d.ts +4 -0
- package/dist/components/Preview/shared/hooks/usePreviewImage/usePreviewImage.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/index.d.ts +2 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/types.d.ts +14 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/usePreviewMulti.d.ts +5 -0
- package/dist/components/Preview/shared/hooks/usePreviewMulti/usePreviewMulti.d.ts.map +1 -0
- package/dist/components/Preview/shared/index.d.ts +5 -0
- package/dist/components/Preview/shared/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/types.d.ts +14 -0
- package/dist/components/Preview/shared/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/getPdfImageUrl.d.ts +4 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/getPdfImageUrl.d.ts.map +1 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/index.d.ts +2 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/types.d.ts +13 -0
- package/dist/components/Preview/shared/utils/getPdfImageUrl/types.d.ts.map +1 -0
- package/dist/components/Preview/shared/utils/index.d.ts +3 -0
- package/dist/components/Preview/shared/utils/index.d.ts.map +1 -0
- package/dist/components/Preview/shared/utils/isSupportFileType.d.ts +4 -0
- package/dist/components/Preview/shared/utils/isSupportFileType.d.ts.map +1 -0
- package/dist/components/Preview/utils/convertUrlToFileData.d.ts +4 -0
- package/dist/components/Preview/utils/convertUrlToFileData.d.ts.map +1 -0
- package/dist/components/Preview/utils/index.d.ts +4 -0
- package/dist/components/Preview/utils/index.d.ts.map +1 -0
- package/dist/components/Preview/utils/isFileData.d.ts +4 -0
- package/dist/components/Preview/utils/isFileData.d.ts.map +1 -0
- package/dist/components/Preview/utils/types.d.ts +4 -0
- package/dist/components/Preview/utils/types.d.ts.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/shared/components/ImageErrorBoundary/ImageErrorBoundary.d.ts +5 -0
- package/dist/components/shared/components/ImageErrorBoundary/ImageErrorBoundary.d.ts.map +1 -0
- package/dist/components/shared/components/ImageErrorBoundary/index.d.ts +3 -0
- package/dist/components/shared/components/ImageErrorBoundary/index.d.ts.map +1 -0
- package/dist/components/shared/components/ImageErrorBoundary/types.d.ts +6 -0
- package/dist/components/shared/components/ImageErrorBoundary/types.d.ts.map +1 -0
- package/dist/components/shared/components/index.d.ts +1 -0
- package/dist/components/shared/components/index.d.ts.map +1 -1
- package/dist/components/shared/types/index.d.ts +3 -0
- package/dist/components/shared/types/index.d.ts.map +1 -1
- package/dist/constants-Z-hZrYYq.js +2 -0
- package/dist/constants-Z-hZrYYq.js.map +1 -0
- package/dist/getPdfImageUrl-BnL71c8W.js +2 -0
- package/dist/getPdfImageUrl-BnL71c8W.js.map +1 -0
- package/dist/index-BEC8-Z8h.js +2 -0
- package/dist/{index-BV4_X60X.js.map → index-BEC8-Z8h.js.map} +1 -1
- package/dist/index-Di19adS0.js +2 -0
- package/dist/index-Di19adS0.js.map +1 -0
- package/dist/index.es.js +1 -1
- package/dist/{useFilterSelectOptionPanel-Dccx9YTY.js → useFilterSelectOptionPanel-VOy57C44.js} +2 -2
- package/dist/useFilterSelectOptionPanel-VOy57C44.js.map +1 -0
- package/package.json +9 -7
- package/src/styles/theme.css +3 -3
- package/dist/FilterCalendarPanel-CwRJdhW3.js.map +0 -1
- package/dist/FilterMultiSelectPanel-q7cF7xQ9.js.map +0 -1
- package/dist/FilterSelectOptionPanel-ChYsD3tW.js +0 -2
- package/dist/FilterSelectOptionPanel-ChYsD3tW.js.map +0 -1
- package/dist/StepDialogConfirmModal-Dwd5QdwE.js.map +0 -1
- package/dist/StepFullScreenDialogConfirmBottomSheet--YQ4TBVo.js.map +0 -1
- package/dist/index-BV4_X60X.js +0 -2
- package/dist/useFilterSelectOptionPanel-Dccx9YTY.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Di19adS0.js","sources":["../../../node_modules/.pnpm/pdfjs-dist@5.4.296/node_modules/pdfjs-dist/build/pdf.mjs","../../../node_modules/.pnpm/warning@4.0.3/node_modules/warning/warning.js","../../../node_modules/.pnpm/react-pdf@10.3.0_@types+react@19.2.7_react-dom@19.2.1_react@19.2.1__react@19.2.1/node_modules/react-pdf/dist/shared/utils.js","../../../node_modules/.pnpm/react-pdf@10.3.0_@types+react@19.2.7_react-dom@19.2.1_react@19.2.1__react@19.2.1/node_modules/react-pdf/dist/index.js"],"sourcesContent":["/**\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/**\n * pdfjsVersion = 5.4.296\n * pdfjsBuild = f56dc8601\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__ = {};\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 FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\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 POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\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_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n closePath: 3\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.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`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 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 ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\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 ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\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 isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\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 domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\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 multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\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(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\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 pointBoundingBox(x, y, minMax) {\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 rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\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 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 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 }\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, keepEscapeSequence = false) {\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 (keepEscapeSequence || !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 (!keepEscapeSequence && 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 if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\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}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\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/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/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\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 getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return 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 const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\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(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `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 {\n pixelRatio\n } = OutputScale;\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 limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.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 fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstChild.classList.add(\"richText\", className);\n container.append(fragment);\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 #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = 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 signature: \"pdfjs-editor-remove-signature-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 if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\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 return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\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 return true;\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 this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\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.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n this.addColorPicker(tool);\n break;\n case \"altText\":\n await this.addAltText(tool);\n break;\n case \"editSignature\":\n await this.addEditSignatureButton(tool);\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n this.addComment(tool);\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\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 const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\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 #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\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}\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 warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = 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 #viewerAlert = 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, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\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 window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\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.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\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 => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\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 const editor = 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 if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\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.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\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 a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.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.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.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 if (this.#isPointerDown) {\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 } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\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 case \"commentSelection\":\n this.commentSelection(\"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, mustEnterInEditMode = false, editComment = 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.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\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 (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\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.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\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(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\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 if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = 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 for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\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 if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.id\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\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 isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\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 setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\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.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-edit-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\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 this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || 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 get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\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 this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\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 if (!this.isInEditMode()) {\n return;\n }\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 _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\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 createAltText() {\n if (!this.#altText) {\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 }\n return this.#altText;\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 focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.#comment ||= new Comment(this);\n }\n addStandaloneCommentButton() {\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\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 focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\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 if (this.hasComment) {\n this._uiManager.toggleComment(this, false, false);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.id\n });\n }\n getElementForAltText() {\n return this.div;\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 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 updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\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 #editorsMap = 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 const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\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) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\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 let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\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 if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\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 updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\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 disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!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 return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\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 #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\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 getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\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}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\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 `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm 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 wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\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\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\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 isModifyingCurrentTransform() {\n return false;\n }\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[6];\n this._background = IR[7];\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 isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\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, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\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.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\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 scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[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, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\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 Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\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 {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\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, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\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 () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (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 (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 () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (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}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[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.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[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, dependencyTracker) {\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.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 this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\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, operationsFilter) {\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, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, 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 }\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(opIdx, 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 this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\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 minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\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, opIdx) : 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 this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\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(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\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(opIdx) {\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 const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\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 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 = backdrop;\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 = backdrop;\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(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n const path2d = data[0] = new Path2D();\n for (let i = 0, ii = path.length; i < ii;) {\n switch (path[i++]) {\n case DrawOPS.moveTo:\n path2d.moveTo(path[i++], path[i++]);\n break;\n case DrawOPS.lineTo:\n path2d.lineTo(path[i++], path[i++]);\n break;\n case DrawOPS.curveTo:\n path2d.bezierCurveTo(path[i++], path[i++], path[i++], path[i++], path[i++], path[i++]);\n break;\n case DrawOPS.closePath:\n path2d.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n break;\n }\n }\n path = path2d;\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, 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 const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, 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 const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\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(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\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(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\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 if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\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 let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.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 this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, 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 if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\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 } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, 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(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\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 = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\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 let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\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 }\n if (!group.smask || this.dependencyTracker) {\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.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, 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 this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\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 Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\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(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\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(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, 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(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\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 ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\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(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : 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 this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, 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(opIdx, 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(opIdx, 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(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\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 this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx);\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 this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\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(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, 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(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\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(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\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.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\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/shared/obj-bin-transform.js\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\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 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 [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(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\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\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 * OutputScale.pixelRatio;\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 * OutputScale.pixelRatio;\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) {\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, style, 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(--total-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, style, 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 const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\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\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\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 : 2 ** 16;\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 = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\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 && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.296\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\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 const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\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, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\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 }\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.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.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 getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\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 #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._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\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 recordOperations = false,\n operationsFilter = null\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 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 recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\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 canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\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 enableHWA: this._transport.enableHWA,\n operationsFilter\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 return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\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 _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();\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();\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 PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\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 this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\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 if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.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\", () => {});\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, 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.#capability.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.#capability.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.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - 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(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n 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, enableHWA) {\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.wasmFactory = factory.wasmFactory;\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.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n 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 fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\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 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(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.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 getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\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}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\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 enableHWA = false,\n operationsFilter = 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.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\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 viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\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 error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\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, this._operationsFilter);\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 = \"5.4.296\";\nconst build = \"f56dc8601\";\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 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.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || 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.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\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.ariaHidden = \"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.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"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.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\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.ariaSelected = 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: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\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 this.#button.ariaExpanded = \"true\";\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.#button.ariaExpanded = \"false\";\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.ariaSelected = i.next().value === color.toUpperCase();\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}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n colorValue\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = colorValue || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\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}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\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/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\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.enableComment = parameters.enableComment;\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 contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\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 point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\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 style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / 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) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\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 } = this;\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(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-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 let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\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 svg.role = \"none\";\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(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n if (!this.parent._commentManager) {\n this.parent.div.append(popup.render());\n }\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\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 mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n this.extraPopupElement.popup.renderCommentButton();\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.container.remove();\n this.container = null;\n this.removePopup();\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, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\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, overlaidText = \"\") {\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 if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\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, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\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 (data.overlaidText) {\n link.title = data.overlaidText;\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(--total-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 = this.data.password ? \"password\" : \"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 = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\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 (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\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 if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\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 const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\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 target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\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(--total-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 = 0;\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 = 0;\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 = 0;\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 parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\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 commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\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 #commentManager = null;\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 #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\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 commentManager = null\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.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (commentManager) {\n this.renderCommentButton();\n } else {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = !!this.#firstElement.extraPopupElement;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n this.renderCommentButton();\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n this.renderCommentButton();\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\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 popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"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 modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\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(--total-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 #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 popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\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 remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\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 if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\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.#commentManager) {\n return;\n }\n this.#addEventListeners();\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 if (this.#commentManager) {\n return false;\n }\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 {\n data,\n width,\n height\n } = this;\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 {\n data,\n width,\n height\n } = this;\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 {\n data,\n width,\n height\n } = this;\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 width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\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 #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id, popupElements) {\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 if (popupElements) {\n popupElements.at(-1).container.after(element);\n } else {\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\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: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\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 if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\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, elementParams.elements);\n element.extraPopupElement?.popup?.renderCommentButton();\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n await this.#appendElement(rendered, data.id, null);\n }\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 const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = 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 addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n const htmlElement = element.render();\n div.append(htmlElement);\n this.#accessibilityManager?.moveElementInDOM(div, htmlElement, htmlElement, false);\n element.createOrUpdatePopup();\n return element;\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\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 if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\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 get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-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 onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\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 (!super.enableEditMode()) {\n return false;\n }\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 return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\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 return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n 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 get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\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(--total-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 if (this._isCopy || this.annotationElementId) {\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._moveAfterPaste(baseX, baseY);\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 = Math.sumPrecise(bufferBefore.map(line => line.length));\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 getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\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._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\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 color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\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.hasEditedComment || 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 (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-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 annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -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 Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\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, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/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 #firstPoint = null;\n #lastPoint = null;\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 this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\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 if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_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 get commentButtonPosition() {\n return this.#firstPoint;\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_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 onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\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.getNonHCMColorName(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 get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims(this.width, this.height);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims(this.width, this.height);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\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 color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\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 this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\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 prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\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 #missingCanvas = false;\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 this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\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.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\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 = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\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._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\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 (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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 (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else 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 if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\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 = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = 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 serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].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(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\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 this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n editor.updateFakeAnnotationElement(annotationLayer);\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 const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\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 async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.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 get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\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(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","import invariant from 'tiny-invariant';\nimport warning from 'warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof window !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n const [headersString = '', dataString = ''] = dataURI.split(',');\n const headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return (isBrowser && window.devicePixelRatio) || 1;\n}\nconst allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, `Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask === null || runningTask === void 0 ? void 0 : runningTask.cancel)\n runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get() {\n return this.getViewport({ scale }).width;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'height', {\n get() {\n return this.getViewport({ scale }).height;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalWidth', {\n get() {\n return this.getViewport({ scale: 1 }).width;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalHeight', {\n get() {\n return this.getViewport({ scale: 1 }).height;\n },\n configurable: true,\n });\n return page;\n}\nexport function isAbortException(error) {\n return error.name === 'AbortException' || error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (!reader.result) {\n return reject(new Error('Error while reading a file.'));\n }\n resolve(reader.result);\n };\n reader.onerror = (event) => {\n if (!event.target) {\n return reject(new Error('Error while reading a file.'));\n }\n const { error } = event.target;\n if (!error) {\n return reject(new Error('Error while reading a file.'));\n }\n switch (error.code) {\n case error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n });\n}\n","import * as pdfjs from 'pdfjs-dist';\nimport Document from './Document.js';\nimport Outline from './Outline.js';\nimport Page from './Page.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport Thumbnail from './Thumbnail.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useOutlineContext from './shared/hooks/useOutlineContext.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport { displayWorkerWarning } from './shared/utils.js';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = 'pdf.worker.mjs';\nexport { pdfjs, Document, Outline, Page, Thumbnail, useDocumentContext, useOutlineContext, usePageContext, PasswordResponses, };\n"],"names":["isNodeJS","process","versions","nw","electron","type","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","POPUP","SIGNATURE","COMMENT","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","unreachable","msg","Error","assert","cond","createValidAbsoluteUrl","url","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","URL","parse","protocol","_isValidProtocol","updateUrlHash","hash","allowRel","res","href","split","shadow","obj","prop","value","nonSerializable","Object","defineProperty","enumerable","configurable","writable","BaseException","message","name","this","prototype","constructor","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","buffer","isEvalSupported","Function","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","userAgent","navigator","isAndroid","includes","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","globalThis","CSS","supports","hexNumbers","Array","from","keys","n","toString","padStart","Util","makeHexColor","r","g","b","domMatrixToTransform","dm","a","c","d","e","f","scaleMinMax","minMax","temp","m1","m2","multiplyByDOMMatrix","m","md","applyTransform","p","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","max","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","slice","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","x","y","rectBoundingBox","x0","y0","x1","y1","getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","getExtremum","abs","delta","sqrtDelta","bezierBoundingBox","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","p2","normalize","get","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","MathClamp","v","toBase64Util","arr","toBase64","btoa","Promise","try","fn","args","resolve","sumPrecise","numbers","reduce","XfaText","textContent","xfa","items","styles","create","walk","node","shouldBuildText","attributes","children","child","XfaLayer","setupStorage","html","id","element","storage","intent","storedData","getValue","addEventListener","event","setValue","target","xfaOn","setAttribute","xfaOff","removeAttribute","checked","getAttribute","option","selected","hasOwnProperty","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","key","entries","assign","style","addLinkAttributes","newWindow","dataId","render","parameters","annotationStorage","root","xfaHtml","rootHtml","document","createElement","isNotForRichText","rootDiv","div","append","viewport","textDivs","createTextNode","stack","parent","at","pop","childHtml","xmlns","createElementNS","el","querySelectorAll","update","hidden","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","arrayBuffer","blob","json","text","reject","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","rawDims","dims","pageWidth","pageHeight","pageX","pageY","clone","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","toLowerCase","isPdfFile","filename","test","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","getURL","decode","decoded","pdfRegex","pathname","searchParams","size","values","reverse","hashFilename","exec","StatTimer","started","times","time","Date","now","timeEnd","start","end","outBuf","longest","padEnd","noContextMenu","preventDefault","stopEvent","stopPropagation","PDFDateString","toDateObject","input","regex","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","map","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","Infinity","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","ceil","window","screen","availWidth","availHeight","SupportedImageMimeTypes","ColorScheme","isDarkMode","matchMedia","CSSConstants","commentForegroundColor","classList","add","display","body","getComputedStyle","remove","applyOpacity","opacity","white","round","RGBToHSL","rgb","l","HSLToRGB","hsl","s","floor","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","Float32Array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","set","renderRichText","dir","className","container","fragment","createDocumentFragment","lines","line","firstChild","EditorToolbar","toolbar","colorPicker","editor","buttons","altText","comment","commentButtonDivider","signatureDescriptionButton","l10nRemove","freeze","freetext","highlight","ink","stamp","signature","editToolbar","signal","_uiManager","_signal","AbortSignal","aborted","pointerDown","position","toolbarPosition","direction","insetInlineEnd","top","focusIn","_focusEventsAllowed","focusOut","addListenersToElement","bind","capture","hide","hideDropdown","show","shown","addDeleteButton","editorType","button","tabIndex","delete","divider","addAltText","addComment","beforeElement","renderForToolbar","insertBefore","addColorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","removeButton","removeToolbarCommentButton","addButton","tool","addButtonBefore","beforeSelector","querySelector","updateEditSignatureButton","description","title","destroy","FloatingToolbar","uiManager","hasCommentManager","makeButton","commentSelection","highlightSelection","getLastPoint","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","span","bindEvents","names","IdManager","ImageManager","baseId","cache","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","src","then","drawImage","getImageData","data","rawData","bitmap","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","result","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","close","isValidId","CommandManager","commands","locked","maxSize","cmd","undo","post","mustExec","NaN","overwriteIfSameType","keepUndo","next","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","Set","callback","isMacKey","serialize","altKey","ctrlKey","metaKey","shiftKey","self","has","info","bubbles","checker","ColorManager","_colors","colors","visibility","colorScheme","computedColor","getColorValues","convert","RGB","every","_colorsMapping","getHexCode","AnnotationEditorUIManager","abortController","AbortController","activeEditor","allEditableAnnotations","allEditors","allLayers","altTextManager","changedExistingAnnotations","commandManager","commentManager","copyPasteAC","currentDrawingSession","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorTypes","editorsToRescale","_editorUndoBar","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","filterFactory","focusMainContainerTimeoutId","focusManagerAC","highlightColors","highlightWhenShiftUp","floatingToolbar","idManager","isEnabled","isPointerDown","isWaiting","keyboardManagerAC","lastActiveElement","mainHighlightColorPicker","missingCanvases","mlManager","mode","selectedEditors","selectedTextNode","pageColors","showAllStates","pdfDocument","previousStates","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","translation","translationTimeoutId","viewer","viewerAlert","updateModeCapability","_keyboardManager","proto","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","eventBus","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","addSelectionListener","addDragAndDropListeners","addKeyboardManager","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","setSidebarUiManager","abort","layer","clear","clearTimeout","combinedSignal","ac","any","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","_highlightColors","pair","toUpperCase","hasHCM","isNameForHCM","endsWith","replace","highlightColorNames","getNonHCMColor","colorName","getNonHCMColorName","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","editComment","posX","posY","showDialog","selectComment","pageIndex","uid","getEditorByUID","toggleComment","updateComment","getData","updatePopupColor","removeComment","removeComments","isSelected","toggleCommentPopup","makeCommentColor","getCommentDialogElement","dialogElement","waitForEditorsRendered","pageNumber","promise","withResolvers","onEditorsRendered","_off","on","getSignature","switchToMode","once","dispatch","source","setPreference","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","getAnchorElementForSelection","anchorNode","nodeType","Node","TEXT_NODE","parentElement","getLayerForTextLayer","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","displayFloatingToolbar","getAndRemoveDataFromAnnotationStorage","annotationId","storedValue","getRawValue","addToAnnotationStorage","a11yAlert","messageId","JSON","stringify","selectionChange","dispatchUpdateStates","activeLayer","toggleDrawing","pointerup","onSelectEnd","addFocusManager","blur","removeFocusManager","hasSelection","lastEditor","keydown","keyup","removeKeyboardManager","addCopyPasteListeners","copy","cut","paste","removeCopyPasteListeners","dragOver","drop","addEditListeners","removeEditListeners","dataTransfer","isHandlingMimeForPasting","dropEffect","item","editors","serialized","clipboardData","setData","ex","isArray","newEditors","deserializedEditor","deserialize","addEditorToLayer","selectEditors","addCommands","isEditorHandlingKeyboard","some","dispatchUpdateUI","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","mustEnterInEditMode","hideSidebar","destroyPopup","disableAll","hideStandaloneCommentButton","addStandaloneCommentButton","loadSignatures","enableAll","getAnnotationsByType","editorClass","_editorType","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","showSidebar","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","all","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","lastSelectedEditor","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","firstSelectedEditor","params","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","isEditingMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","range","collapsed","getClientRects","renderAnnotationElement","editorId","hasBeenModified","setMissingCanvas","setCanvas","addMissingCanvas","AltText","altTextDecorative","altTextButton","altTextButtonLabel","altTextTooltip","altTextTooltipTimeout","altTextWasFromKeyBoard","badge","guessedText","textWithDisclaimer","l10nNewButton","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","setState","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","isForCopying","decorative","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","parentNode","getElementForAltText","Comment","commentStandaloneButton","commentToolbarButton","commentWasFromKeyBoard","initialText","richText","date","popupPosition","renderForStandalone","commentButtonPosition","commentButtonColor","backgroundColor","focusButton","onUpdatedColor","commentButtonWidth","boundingClientRect","commentPopupPositionInLayer","parentX","parentY","hasDefaultPopupPosition","removeStandaloneCommentButton","setCommentButtonStates","hasPopup","ariaExpanded","isStandalone","ariaHasPopup","ariaControls","ariaControlsElements","edit","parentDimensions","isDeleted","hasBeenEdited","setInitialText","TouchManager","isPinching","isPinchingStopped","isPinchingDisabled","onPinchStart","onPinching","onPinchEnd","pointerDownAC","touchInfo","touchManagerAC","touchMoveAC","onTouchStart","passive","MIN_TOUCH_DISTANCE_TO_PINCH","touches","opts","cancelPointerDown","pointerType","opt","onTouchMove","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","accessibilityData","allResizerDivs","dragPointerId","dragPointerType","resizersDiv","lastPointerCoords","savedDimensions","fakeAnnotation","focusAC","focusedResizerName","hasBeenClicked","initialRect","isInEditMode","isResizerEnabledForKeyboard","moveInDOMTimeout","prevDragX","prevDragY","telemetryTimeouts","touchManager","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","isDraggable","zIndex","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","_willKeepAspectRatio","isCentered","_structTreeParentId","creationDate","modificationDate","pageRotation","pageDimensions","pageTranslation","isAttachedToDOM","getPrototypeOf","_type","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","setInForeground","setParent","stopResizing","focusin","focusout","relatedTarget","isMultipleSelection","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","translate","_onTranslating","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","rotatePoint","angle","pageTranslationToScreen","getRotationMatrix","parentScale","setDims","getInitialTranslation","createResizers","classes","resizerPointerdown","prepend","savedDraggable","togglePointerEvents","resizerPointermove","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","addResizeToUndoStack","_onResized","newWidth","newHeight","_round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","deltaX","deltaY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","toolbarButtons","addEditToolbar","addCommentButton","addCommentButtonInToolbar","removeCommentButtonFromToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","createAltText","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","focusCommentButton","setCommentData","updateFromAnnotationLayer","hasEditedComment","hasDeletedComment","setSelectedCommentButton","setSelectedButton","DEFAULT_POPUP_WIDTH","DEFAULT_POPUP_HEIGHT","trY","blX","blY","trX","popup","contents","parentBoundingClientRect","defaultL10nId","addFocusListeners","maxWidth","maxHeight","isResizable","touchPinchStartCallback","touchPinchCallback","touchPinchEndCallback","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","selectOnPointerEvent","hasDraggingStarted","cancelDrag","_onStopDragging","clientX","clientY","pointerId","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","getPDFRect","onceAdded","enableEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","context","annotationType","structTreeParentId","isCopy","timeout","makeResizable","commentButtonPositionInPage","commentPopupPosition","elementBeforePopup","boundResizerKeydown","resizerKeydown","boundResizerBlur","resizerBlur","resizerFocus","firstPosition","nextFirstPosition","lastChild","setResizerTabIndex","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","nodeName","contentDiv","telemetryInitialData","telemetryFinalData","_telemetryTimeout","updateFakeAnnotationElement","annotationLayer","updateEdited","addFakeAnnotation","content","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","ArrayBuffer","isView","byteLength","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","transfer","AnnotationStorage","modified","modifiedIds","editorsMap","onSetModified","onResetModified","onAnnotationEditor","defaultValue","resetModified","entry","val","setModified","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","isCommentDeleted","counters","count","comments","edited","computeTelemetryFinalData","resetModifiedIds","updateEditor","ids","Symbol","iterator","structuredClone","FontLoader","systemFonts","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","done","complete","otherRequest","shift","_loadTestFont","atob","int32","offset","spliceString","insert","called","XXXX_VALUE","checksum","fontFamily","isFontReady","fillText","FontFaceObject","fontData","translatedData","inspectFont","extra","charProcOperatorList","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","path","Path2D","fontExtraProperties","black","bold","isInvalidPDFjsFont","isType3Font","italic","remeasure","vertical","ascent","defaultWidth","descent","bbox","fontMatrix","fallbackName","clearData","defaultVMetrics","getFactoryUrlProp","isRefProxy","num","gen","isValidExplicitDest","validRef","validName","dest","page","zoom","argsLen","allowNull","arg","LoopbackPort","listeners","deferred","postMessage","listener","call","rmAbort","onAbort","removeEventListener","terminate","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","messageAC","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","onMessage","stream","processStreamMessage","capability","reason","createStreamSink","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","error","onPull","onCancel","success","streamController","deleteStreamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","_cache","_defs","docId","_hcmCache","hcmCache","defs","contain","svg","createTables","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","createUrl","tableR","tableG","tableB","filter","createFilter","addTransferMapConversion","fgRGB","bgRGB","addGrayConversion","getSteps","tableA","addTransferMapAlphaConversion","addLuminosityConversion","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","k","j","feColorMatrix","appendFeFunc","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","fs","getBuiltinModule","readFile","NodeFilterFactory","NodeCanvasFactory","createRequire","require","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","expandBBox","index","minX","minY","maxX","maxY","EMPTY_BBOX","BBoxReader","bboxes","coords","ensureDebugMetadata","dependencies","isRenderingOperation","CanvasDependencyTracker","simple","__proto__","incremental","sameLineText","namedDependencies","savesStack","markedContentStack","baseTransformStack","clipBox","pendingBBox","Float64Array","pendingBBoxIdx","pendingDependencies","operations","fontBBoxTrustworthy","canvasWidth","canvasHeight","bboxesCoords","debugMetadata","operationsCount","recordDebugMetadata","initializeBBoxes","growOperationsCount","oldBBoxes","Uint8ClampedArray","opIdx","previous","lastSave","recordOpenMarker","idx","getOpenMarker","recordCloseMarker","pushBaseTransform","popBaseTransform","recordSimpleData","recordIncrementalData","resetIncrementalData","recordNamedData","recordSimpleDataFromNamed","depName","fallbackIdx","recordFutureForcedDependency","inheritSimpleDataAsFutureForcedDependencies","inheritPendingDependenciesAsFutureForcedDependencies","dep","resetBBox","recordClipBox","intersection","recordBBox","recordCharacterBBox","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","recordFullPageBBox","measure","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getSimpleIndex","dependencyName","recordDependencies","dependencyNames","forEach","recordNamedDependency","recordOperation","preserve","metadata","depIdx","saveIdx","recordShowTextOperation","deps","bboxToClipBoxDropOperation","_takePendingDependencies","_extractOperation","operation","_pushPendingDependencies","take","takeDebugMetadata","CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","nestingLevel","savesLevel","Dependencies","PathType","applyBoundingBox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","current","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p3","c1","c2","c3","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","preInit","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","kind","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","nextBreakPoint","breakIt","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","limit","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","op","outerExtraSize","path2d","_pathStartIdx","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","invTransf","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","typeface","browserFontSize","rise","getScaledPath","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","scaledPath","invPatternTransform","measureText","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","getSinglePixelWidth","chars","glyph","unicode","joinedChars","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","renderingOpIdx","_getPattern","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","CssFontInfo","view","decoder","write","encoder","TextEncoder","encodedStrings","stringsLength","strings","encoded","encode","DataView","setUint32","TextDecoder","readString","getUint32","SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","setUint8","guessFallback","transferToFixedLength","getUint8","styleLength","weightLength","FontInfo","bools","OFFSET_NUMBERS","OFFSET_BBOX","OFFSET_FONT_MATRIX","OFFSET_DEFAULT_VMETRICS","readBoolean","byteOffset","bitOffset","readNumber","getFloat64","getInt16","OFFSET_STRINGS","stringData","cssFontInfoLength","cssFontInfoData","systemFontInfoLength","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","setFloat64","coord","setInt16","metric","GlobalWorkerOptions","workerPort","port","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","isDisplay","isPrint","userSet","renderingIntent","usage","rbGroups","viewState","printState","_setVisible","internal","OptionalContentConfig","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","operator","state","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","indexOf","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","fatal","quotindex","extvalue","encodingend","charset","hex","getFilenameFromContentDispositionHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","method","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","NetworkManager","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","stat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","ensureObj","TextLayer","disableProcessItems","fontInspectorEnabled","FontInspector","lang","layoutTextParams","rootContainer","styleCache","textContentItemsStr","textContentSource","textDivProperties","WeakMap","ensureMinFontSizeComputed","finally","pendingTextLayers","fontFamilyMap","pump","processItems","onBefore","getCtx","layout","abortEx","appendText","geom","textDiv","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","getAscent","sin","cos","scaleFactorStr","divStyle","minFontSize","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","ensureCtxFont","cleanup","ascentCache","canvasContexts","alpha","canvasCtxFonts","cached","lineHeight","cachedAscent","metrics","fontBoundingBoxAscent","fontBoundingBoxDescent","ratio","getDocument","task","PDFDocumentLoadingTask","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","progressiveDoneListeners","progressiveReadListeners","progressListeners","rangeListeners","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","pageIndexesToSkip","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pendingCleanup","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","recordedBBoxes","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","recordForDebugger","Boolean","StepperManager","shouldRecordOperations","renderTasks","internalRenderTask","gfx","setOperatorBBoxes","tryCleanup","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","webWorker","isWorkerDisabled","_isSameOrigin","otherUrl","base","other","_createCDNWrapper","wrapper","createObjectURL","fromPort","workerPorts","initializeFromPort","mainThreadWorkerMessageHandler","setupFakeWorker","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","fakeWorkerId","workerHandler","setup","cachedPort","pdfjsWorker","import","loader","methodPromises","pageCache","pagePromises","pageRefCache","passwordCapability","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","isOpList","modifiedIdsHash","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","RenderTask","onContinue","form","rAF","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_canvasContext","_enableHWA","_dependencyTracker","_operationsFilter","canvasInUse","init","getNextBreakPoint","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","version","build","ColorPicker","buttonSwatch","defaultColor","dropdown","dropdownWasFromKeyboard","isMainColorPicker","openDropdownAC","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","l10nColor","blue","green","pink","red","yellow","openDropdown","keyDown","swatch","ariaHidden","renderMainDropdown","getDropdownRoot","ariaOrientation","ariaLabelledBy","role","ariaMultiSelectable","ariaSelected","colorSelect","updateColor","isDropdownVisible","nextSibling","previousSibling","detail","BasicColorPicker","colorType","colorValue","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","GetElementsByNameSet","TIMEZONE_OFFSET","getTimezoneOffset","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","updates","hasBorder","popupElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableComment","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","_isEditable","isEditable","hasPopupData","commentText","commentData","hasCommentButton","hasPopupElement","quadPoints","inkLists","inkList","_normalizePoint","removePopup","newPopup","setRectEdited","_createPopup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","colorArray","noView","noPrint","userName","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","clipPath","rectWidth","rectHeight","backgroundImage","popupData","titleObj","parentRect","elements","_commentManager","extraPopupElement","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","EditorAnnotationElement","createOrUpdatePopup","renderCommentButton","isTooltipOnly","link","isBound","_bindNamedAction","overlaidText","attachment","bindAttachment","attachmentDest","bindSetOCGState","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","getter","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","datetimeFormat","datetimeType","timeStep","hasDateOrTime","maxLength","defaultFieldValue","blurListener","scrollLeft","getHours","getMinutes","getSeconds","toISOString","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","valueOf","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","createPopup","PopupElement","boundKeyDown","boundHide","boundShow","boundToggle","dateObj","pinned","popupAbortController","commentButton","wasVisible","firstElement","trigger","flatMap","addEventListeners","setCommentButtonPosition","find","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","updateCommentButtonPosition","after","outlineColor","header","dateTime","makePopupContent","popupLines","popupContent","lineAttributes","setPosition","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","vertices","points","polylinesGroupElement","polylines","it","thickness","mark","underline","strikeout","download","AnnotationLayer","accessibilityManager","editableAnnotations","structTreeLayer","annotationEditorUIManager","_annotationEditorUIManager","hasEditableAnnotations","appendElement","popupElements","contentElement","ariaAttributes","getAriaAttributes","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","setAnnotationCanvasMap","addLinkAnnotations","_defaultBorderStyle","replaceWith","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","htmlElement","rawWidth","EOL_PATTERN","FreeTextEditor","editorDivId","editModeAC","_colorPicker","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","updateFontSize","setFontsize","editorDiv","setEditorDimensions","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","extractText","prevChild","childNodes","getNodeContent","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","setContent","nodeValue","deserializeContent","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","replaceChildren","serializeContent","padding","hasElementChanged","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","innerMargin","last","min_dist","scaleFactor","MIN_DIST","MIN_DIFF","MIN","getLastCoords","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","toSVGPathTwoPoints","toSVGPathEnd","toSVGPathStart","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","getOutlineTwoPoints","N","getOutlineEnd","getOutlineStart","firstPoint","lastPoint","computeMinMax","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","newOutliner","getNewOutline","outliner","HighlightOutliner","verticalEdges","intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","sort","outlineVerticalEdges","breakEdge","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","HighlightEditor","clipPathId","focusOutlines","highlightDiv","highlightOutlines","isFreeHighlight","outlineId","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","createFreeOutlines","addToDrawLayer","createOutlines","numberOfColors","outlinerForOutline","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","rotateBbox","updateThickness","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness","getRotation","addUndoableEditor","cleanDrawLayer","mustBeSelected","draw","pointerover","hovered","pointerleave","setCaret","serializeBoxes","serializeOutlines","startHighlighting","endHighlight","highlightMove","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","svgProperties","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","drawOutlines","mustBeCommitted","_drawId","_addOutlines","createDrawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","createDrawing","updateBbox","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","currentDraw","_currentDrawId","_updateProperty","savedValue","setter","getPathResizingSVGProperties","convertToDrawSpace","rotateBox","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","convertToParentSpace","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","currentPointerType","currentDrawingAC","currentPointerId","_endDraw","currentPointerIds","isCancellable","removeLastElement","_drawMove","timeStamp","currentMoveTimestamp","startNew","currentDrawingOptions","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","lastSVGPath","lastIndex","InkDrawOutline","normalizePoint","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","currentRotation","computeBbox","serializedLines","serializedPoints","getBBoxWithNoMargin","rescaleFn","newLines","len","getMarginComponents","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","neighborIndexToId","i0","j0","Int32Array","clockwiseNonZero","kk","neighborIdToIndex","counterClockwiseNonZero","findContours","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","shiftI","shiftJ","i1","j1","i3","j3","i4","j4","ij3","douglasPeuckerHelper","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","douglasPeucker","bilateralFilter","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","sum","norm","neighbour","getHistogram","toUint8","guessThreshold","M","L","spos","getGrayPixels","originalBitmap","PARAMETERS","prevWidth","prevHeight","log2","isteps","grayImage","extractContoursFromText","fontStyle","SCALE","uint8Buf","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","Int8Array","Int16Array","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","fromBase64","DecompressionStream","numberOfDrawings","diffsOffset","POINTS_PROPERTIES_NUMBER","SignatureOptions","DrawnSignatureOptions","SignatureEditor","isExtracted","signatureUUID","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","getSignaturePreview","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","bitmapFileName","missingCanvas","resizeTimeoutId","hasBeenAddedInUndoStack","pasteEditor","getAsFile","hasAltTextStats","getBitmapFetched","fromId","getBitmapDone","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","getBitmap","accept","files","click","drawBitmap","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","serializeBitmap","toUrl","toDataURL","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","allowClick","clickAC","editorFocusTimeoutId","hadPointerDown","isDisabling","isEnabling","drawingAC","focusedElement","textSelectionAC","textLayerDblClickAC","lastPointerDownTimestamp","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","allEditorsIterator","annotationElementIds","elementsFromPoint","changedAnnotations","resetAnnotations","editables","textLayerPointerDown","attach","detach","removePointerInTextLayer","currentEditorType","createNewEditor","getCenterPoint","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","mapping","toUpdate","_svgFactory","setBox","createSVG","createClipPath","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","ImageKind","warning","env","NODE_ENV","printWarning","format","arguments","argIndex","condition","concat","warning_1","isLocalFileSystem","pdfjs.GlobalWorkerOptions"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|