@embedpdf/vue 0.0.0-stage → 3.0.0-next.15
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/LICENSE +192 -0
- package/README.md +258 -2
- package/dist/Anchored.vue_vue_type_script_setup_true_lang-BEImlFso.cjs +124 -0
- package/dist/Anchored.vue_vue_type_script_setup_true_lang-BEImlFso.cjs.map +1 -0
- package/dist/Anchored.vue_vue_type_script_setup_true_lang-Brhh5jyF.js +125 -0
- package/dist/Anchored.vue_vue_type_script_setup_true_lang-Brhh5jyF.js.map +1 -0
- package/dist/AnchoredScope.vue_vue_type_script_setup_true_lang-BwtHXw73.cjs +20 -0
- package/dist/AnchoredScope.vue_vue_type_script_setup_true_lang-BwtHXw73.cjs.map +1 -0
- package/dist/AnchoredScope.vue_vue_type_script_setup_true_lang-Ulkr3a6R.js +21 -0
- package/dist/AnchoredScope.vue_vue_type_script_setup_true_lang-Ulkr3a6R.js.map +1 -0
- package/dist/DocumentScope.vue_vue_type_script_setup_true_lang-CtTu1FGX.js +191 -0
- package/dist/DocumentScope.vue_vue_type_script_setup_true_lang-CtTu1FGX.js.map +1 -0
- package/dist/DocumentScope.vue_vue_type_script_setup_true_lang-loLSm4lV.cjs +190 -0
- package/dist/DocumentScope.vue_vue_type_script_setup_true_lang-loLSm4lV.cjs.map +1 -0
- package/dist/FormLayer.vue_vue_type_script_setup_true_lang-BA0_VwFc.cjs +682 -0
- package/dist/FormLayer.vue_vue_type_script_setup_true_lang-BA0_VwFc.cjs.map +1 -0
- package/dist/FormLayer.vue_vue_type_script_setup_true_lang-DUqft-xs.js +683 -0
- package/dist/FormLayer.vue_vue_type_script_setup_true_lang-DUqft-xs.js.map +1 -0
- package/dist/LinkLayer.vue_vue_type_script_setup_true_lang-C5-eQD34.cjs +174 -0
- package/dist/LinkLayer.vue_vue_type_script_setup_true_lang-C5-eQD34.cjs.map +1 -0
- package/dist/LinkLayer.vue_vue_type_script_setup_true_lang-EzLaOP3g.js +175 -0
- package/dist/LinkLayer.vue_vue_type_script_setup_true_lang-EzLaOP3g.js.map +1 -0
- package/dist/PagePointerSource.vue_vue_type_script_setup_true_lang-CJt3vdBW.js +33 -0
- package/dist/PagePointerSource.vue_vue_type_script_setup_true_lang-CJt3vdBW.js.map +1 -0
- package/dist/PagePointerSource.vue_vue_type_script_setup_true_lang-Cw29c8Oa.cjs +32 -0
- package/dist/PagePointerSource.vue_vue_type_script_setup_true_lang-Cw29c8Oa.cjs.map +1 -0
- package/dist/PageView.vue_vue_type_script_setup_true_lang-CjrpumX2.cjs +151 -0
- package/dist/PageView.vue_vue_type_script_setup_true_lang-CjrpumX2.cjs.map +1 -0
- package/dist/PageView.vue_vue_type_script_setup_true_lang-O4AFc0_R.js +152 -0
- package/dist/PageView.vue_vue_type_script_setup_true_lang-O4AFc0_R.js.map +1 -0
- package/dist/Scrollbar.vue_vue_type_script_setup_true_lang-DrOORC1H.cjs +480 -0
- package/dist/Scrollbar.vue_vue_type_script_setup_true_lang-DrOORC1H.cjs.map +1 -0
- package/dist/Scrollbar.vue_vue_type_script_setup_true_lang-HbCryx1B.js +481 -0
- package/dist/Scrollbar.vue_vue_type_script_setup_true_lang-HbCryx1B.js.map +1 -0
- package/dist/SearchLayer.vue_vue_type_script_setup_true_lang-BlLIPH1B.js +118 -0
- package/dist/SearchLayer.vue_vue_type_script_setup_true_lang-BlLIPH1B.js.map +1 -0
- package/dist/SearchLayer.vue_vue_type_script_setup_true_lang-CQozZCvB.cjs +117 -0
- package/dist/SearchLayer.vue_vue_type_script_setup_true_lang-CQozZCvB.cjs.map +1 -0
- package/dist/SelectionClipboard.vue_vue_type_script_setup_true_lang-C4TUDuyu.js +302 -0
- package/dist/SelectionClipboard.vue_vue_type_script_setup_true_lang-C4TUDuyu.js.map +1 -0
- package/dist/SelectionClipboard.vue_vue_type_script_setup_true_lang-C8T9q6Kb.cjs +301 -0
- package/dist/SelectionClipboard.vue_vue_type_script_setup_true_lang-C8T9q6Kb.cjs.map +1 -0
- package/dist/SvgShapes.vue_vue_type_script_setup_true_lang-D_c-wINF.cjs +38 -0
- package/dist/SvgShapes.vue_vue_type_script_setup_true_lang-D_c-wINF.cjs.map +1 -0
- package/dist/SvgShapes.vue_vue_type_script_setup_true_lang-fOTs4aqv.js +39 -0
- package/dist/SvgShapes.vue_vue_type_script_setup_true_lang-fOTs4aqv.js.map +1 -0
- package/dist/actions.cjs +42 -0
- package/dist/actions.cjs.map +1 -0
- package/dist/actions.d.cts +41 -0
- package/dist/actions.d.ts +41 -0
- package/dist/actions.js +37 -0
- package/dist/actions.js.map +1 -0
- package/dist/anchored/Anchored.vue.d.cts +40 -0
- package/dist/anchored/Anchored.vue.d.ts +40 -0
- package/dist/anchored/AnchoredScope.vue.d.cts +17 -0
- package/dist/anchored/AnchoredScope.vue.d.ts +17 -0
- package/dist/anchored/PlacedAnchored.vue.d.cts +19 -0
- package/dist/anchored/PlacedAnchored.vue.d.ts +19 -0
- package/dist/anchored/projector.d.cts +32 -0
- package/dist/anchored/projector.d.ts +32 -0
- package/dist/anchored.cjs +13 -0
- package/dist/anchored.cjs.map +1 -0
- package/dist/anchored.d.cts +15 -0
- package/dist/anchored.d.ts +15 -0
- package/dist/anchored.js +13 -0
- package/dist/anchored.js.map +1 -0
- package/dist/annotation/AnnotationChrome.vue.d.cts +20 -0
- package/dist/annotation/AnnotationChrome.vue.d.ts +20 -0
- package/dist/annotation/AnnotationDraftMenu.vue.d.cts +26 -0
- package/dist/annotation/AnnotationDraftMenu.vue.d.ts +26 -0
- package/dist/annotation/AnnotationFrame.vue.d.cts +25 -0
- package/dist/annotation/AnnotationFrame.vue.d.ts +25 -0
- package/dist/annotation/AnnotationLayer.vue.d.cts +23 -0
- package/dist/annotation/AnnotationLayer.vue.d.ts +23 -0
- package/dist/annotation/AnnotationLook.vue.d.cts +21 -0
- package/dist/annotation/AnnotationLook.vue.d.ts +21 -0
- package/dist/annotation/AnnotationMenu.vue.d.cts +23 -0
- package/dist/annotation/AnnotationMenu.vue.d.ts +23 -0
- package/dist/annotation/AnnotationRotationBadge.vue.d.cts +26 -0
- package/dist/annotation/AnnotationRotationBadge.vue.d.ts +26 -0
- package/dist/annotation/AnnotationScene.vue.d.cts +7 -0
- package/dist/annotation/AnnotationScene.vue.d.ts +7 -0
- package/dist/annotation/FreeTextBox.vue.d.cts +9 -0
- package/dist/annotation/FreeTextBox.vue.d.ts +9 -0
- package/dist/annotation/NativeDrawing.vue.d.cts +10 -0
- package/dist/annotation/NativeDrawing.vue.d.ts +10 -0
- package/dist/annotation/StampGhost.vue.d.cts +7 -0
- package/dist/annotation/StampGhost.vue.d.ts +7 -0
- package/dist/annotation/composables.d.cts +76 -0
- package/dist/annotation/composables.d.ts +76 -0
- package/dist/annotation/state.d.cts +19 -0
- package/dist/annotation/state.d.ts +19 -0
- package/dist/annotation/text-box.d.cts +27 -0
- package/dist/annotation/text-box.d.ts +27 -0
- package/dist/annotation/types.d.cts +154 -0
- package/dist/annotation/types.d.ts +154 -0
- package/dist/annotation.cjs +29 -0
- package/dist/annotation.cjs.map +1 -0
- package/dist/annotation.d.cts +35 -0
- package/dist/annotation.d.ts +35 -0
- package/dist/annotation.js +23 -0
- package/dist/annotation.js.map +1 -0
- package/dist/capabilities-C7YzgPCX.js +164 -0
- package/dist/capabilities-C7YzgPCX.js.map +1 -0
- package/dist/capabilities-DVNJmgy7.cjs +163 -0
- package/dist/capabilities-DVNJmgy7.cjs.map +1 -0
- package/dist/commands.cjs +81 -0
- package/dist/commands.cjs.map +1 -0
- package/dist/commands.d.cts +61 -0
- package/dist/commands.d.ts +61 -0
- package/dist/commands.js +76 -0
- package/dist/commands.js.map +1 -0
- package/dist/composables-BGBsNDf9.cjs +25 -0
- package/dist/composables-BGBsNDf9.cjs.map +1 -0
- package/dist/composables-BuHvnUlo.cjs +1003 -0
- package/dist/composables-BuHvnUlo.cjs.map +1 -0
- package/dist/composables-CIkhKwAg.js +1004 -0
- package/dist/composables-CIkhKwAg.js.map +1 -0
- package/dist/composables-DwsZdg06.js +26 -0
- package/dist/composables-DwsZdg06.js.map +1 -0
- package/dist/dev-CtMlvxjZ.js +17 -0
- package/dist/dev-CtMlvxjZ.js.map +1 -0
- package/dist/dev-eeIS2B4c.cjs +16 -0
- package/dist/dev-eeIS2B4c.cjs.map +1 -0
- package/dist/dev.d.cts +11 -0
- package/dist/dev.d.ts +11 -0
- package/dist/documents-DUu5H4yH.js +34 -0
- package/dist/documents-DUu5H4yH.js.map +1 -0
- package/dist/documents-TQ1fMdWI.cjs +33 -0
- package/dist/documents-TQ1fMdWI.cjs.map +1 -0
- package/dist/form/ButtonControl.vue.d.cts +11 -0
- package/dist/form/ButtonControl.vue.d.ts +11 -0
- package/dist/form/ComboControl.vue.d.cts +11 -0
- package/dist/form/ComboControl.vue.d.ts +11 -0
- package/dist/form/FieldPictures.vue.d.cts +3 -0
- package/dist/form/FieldPictures.vue.d.ts +3 -0
- package/dist/form/FormFocusRing.vue.d.cts +8 -0
- package/dist/form/FormFocusRing.vue.d.ts +8 -0
- package/dist/form/FormLayer.vue.d.cts +3 -0
- package/dist/form/FormLayer.vue.d.ts +3 -0
- package/dist/form/ListControl.vue.d.cts +11 -0
- package/dist/form/ListControl.vue.d.ts +11 -0
- package/dist/form/NativeListBox.vue.d.cts +27 -0
- package/dist/form/NativeListBox.vue.d.ts +27 -0
- package/dist/form/SignatureControl.vue.d.cts +11 -0
- package/dist/form/SignatureControl.vue.d.ts +11 -0
- package/dist/form/TextControl.vue.d.cts +11 -0
- package/dist/form/TextControl.vue.d.ts +11 -0
- package/dist/form/ToggleControl.vue.d.cts +11 -0
- package/dist/form/ToggleControl.vue.d.ts +11 -0
- package/dist/form/composables.d.cts +52 -0
- package/dist/form/composables.d.ts +52 -0
- package/dist/form/widget-box.d.cts +34 -0
- package/dist/form/widget-box.d.ts +34 -0
- package/dist/form.cjs +17 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.d.cts +12 -0
- package/dist/form.d.ts +12 -0
- package/dist/form.js +11 -0
- package/dist/form.js.map +1 -0
- package/dist/history.cjs +22 -0
- package/dist/history.cjs.map +1 -0
- package/dist/history.d.cts +31 -0
- package/dist/history.d.ts +31 -0
- package/dist/history.js +17 -0
- package/dist/history.js.map +1 -0
- package/dist/i18n.cjs +29 -0
- package/dist/i18n.cjs.map +1 -0
- package/dist/i18n.d.cts +36 -0
- package/dist/i18n.d.ts +36 -0
- package/dist/i18n.js +24 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.cjs +391 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +30 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +223 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/PagePointerSource.vue.d.cts +3 -0
- package/dist/interaction/PagePointerSource.vue.d.ts +3 -0
- package/dist/interaction.cjs +63 -0
- package/dist/interaction.cjs.map +1 -0
- package/dist/interaction.d.cts +40 -0
- package/dist/interaction.d.ts +40 -0
- package/dist/interaction.js +47 -0
- package/dist/interaction.js.map +1 -0
- package/dist/link/LinkAnchor.vue.d.cts +9 -0
- package/dist/link/LinkAnchor.vue.d.ts +9 -0
- package/dist/link/LinkLayer.vue.d.cts +22 -0
- package/dist/link/LinkLayer.vue.d.ts +22 -0
- package/dist/link/composables.d.cts +29 -0
- package/dist/link/composables.d.ts +29 -0
- package/dist/link.cjs +14 -0
- package/dist/link.cjs.map +1 -0
- package/dist/link.d.cts +11 -0
- package/dist/link.d.ts +11 -0
- package/dist/link.js +8 -0
- package/dist/link.js.map +1 -0
- package/dist/measurement.cjs +43 -0
- package/dist/measurement.cjs.map +1 -0
- package/dist/measurement.d.cts +51 -0
- package/dist/measurement.d.ts +51 -0
- package/dist/measurement.js +38 -0
- package/dist/measurement.js.map +1 -0
- package/dist/metadata.cjs +22 -0
- package/dist/metadata.cjs.map +1 -0
- package/dist/metadata.d.cts +31 -0
- package/dist/metadata.d.ts +31 -0
- package/dist/metadata.js +17 -0
- package/dist/metadata.js.map +1 -0
- package/dist/page-D9XIuLSj.js +16 -0
- package/dist/page-D9XIuLSj.js.map +1 -0
- package/dist/page-Doy4_Sdz.cjs +15 -0
- package/dist/page-Doy4_Sdz.cjs.map +1 -0
- package/dist/page-edit.cjs +15 -0
- package/dist/page-edit.cjs.map +1 -0
- package/dist/page-edit.d.cts +16 -0
- package/dist/page-edit.d.ts +16 -0
- package/dist/page-edit.js +10 -0
- package/dist/page-edit.js.map +1 -0
- package/dist/page-layers-c-CJYAUO.cjs +30 -0
- package/dist/page-layers-c-CJYAUO.cjs.map +1 -0
- package/dist/page-layers-rlh4-1qr.js +31 -0
- package/dist/page-layers-rlh4-1qr.js.map +1 -0
- package/dist/page-layers.d.cts +21 -0
- package/dist/page-layers.d.ts +21 -0
- package/dist/page-view/PageView.vue.d.cts +42 -0
- package/dist/page-view/PageView.vue.d.ts +42 -0
- package/dist/page-view.cjs +5 -0
- package/dist/page-view.cjs.map +1 -0
- package/dist/page-view.d.cts +10 -0
- package/dist/page-view.d.ts +10 -0
- package/dist/page-view.js +5 -0
- package/dist/page-view.js.map +1 -0
- package/dist/projector-CDZn1kh1.js +32 -0
- package/dist/projector-CDZn1kh1.js.map +1 -0
- package/dist/projector-Cf7879sx.cjs +31 -0
- package/dist/projector-Cf7879sx.cjs.map +1 -0
- package/dist/redaction.cjs +34 -0
- package/dist/redaction.cjs.map +1 -0
- package/dist/redaction.d.cts +44 -0
- package/dist/redaction.d.ts +44 -0
- package/dist/redaction.js +29 -0
- package/dist/redaction.js.map +1 -0
- package/dist/render/RenderLayer.vue.d.cts +23 -0
- package/dist/render/RenderLayer.vue.d.ts +23 -0
- package/dist/render/TileImage.vue.d.cts +13 -0
- package/dist/render/TileImage.vue.d.ts +13 -0
- package/dist/render/TilePlane.vue.d.cts +7 -0
- package/dist/render/TilePlane.vue.d.ts +7 -0
- package/dist/render.cjs +262 -0
- package/dist/render.cjs.map +1 -0
- package/dist/render.d.cts +16 -0
- package/dist/render.d.ts +16 -0
- package/dist/render.js +257 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime/DocumentGate.vue.d.cts +24 -0
- package/dist/runtime/DocumentGate.vue.d.ts +24 -0
- package/dist/runtime/DocumentScope.vue.d.cts +16 -0
- package/dist/runtime/DocumentScope.vue.d.ts +16 -0
- package/dist/runtime/KernelProvider.vue.d.cts +17 -0
- package/dist/runtime/KernelProvider.vue.d.ts +17 -0
- package/dist/runtime/SvgShapes.vue.d.cts +7 -0
- package/dist/runtime/SvgShapes.vue.d.ts +7 -0
- package/dist/runtime/Viewer.vue.d.cts +57 -0
- package/dist/runtime/Viewer.vue.d.ts +57 -0
- package/dist/runtime/capabilities.d.cts +52 -0
- package/dist/runtime/capabilities.d.ts +52 -0
- package/dist/runtime/documents.d.cts +42 -0
- package/dist/runtime/documents.d.ts +42 -0
- package/dist/runtime/kernel.d.cts +36 -0
- package/dist/runtime/kernel.d.ts +36 -0
- package/dist/runtime/page.d.cts +15 -0
- package/dist/runtime/page.d.ts +15 -0
- package/dist/runtime/refs.d.cts +12 -0
- package/dist/runtime/refs.d.ts +12 -0
- package/dist/runtime/surface-box.d.cts +12 -0
- package/dist/runtime/surface-box.d.ts +12 -0
- package/dist/runtime.cjs +53 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.cts +24 -0
- package/dist/runtime.d.ts +24 -0
- package/dist/runtime.js +38 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scope-BQA4toWB.cjs +17 -0
- package/dist/scope-BQA4toWB.cjs.map +1 -0
- package/dist/scope-BgdCqnYb.js +18 -0
- package/dist/scope-BgdCqnYb.js.map +1 -0
- package/dist/search/SearchLayer.vue.d.cts +17 -0
- package/dist/search/SearchLayer.vue.d.ts +17 -0
- package/dist/search/composables.d.cts +31 -0
- package/dist/search/composables.d.ts +31 -0
- package/dist/search.cjs +17 -0
- package/dist/search.cjs.map +1 -0
- package/dist/search.d.cts +10 -0
- package/dist/search.d.ts +10 -0
- package/dist/search.js +11 -0
- package/dist/search.js.map +1 -0
- package/dist/selection/SelectionClipboard.vue.d.cts +24 -0
- package/dist/selection/SelectionClipboard.vue.d.ts +24 -0
- package/dist/selection/SelectionHandles.vue.d.cts +8 -0
- package/dist/selection/SelectionHandles.vue.d.ts +8 -0
- package/dist/selection/SelectionLayer.vue.d.cts +3 -0
- package/dist/selection/SelectionLayer.vue.d.ts +3 -0
- package/dist/selection/SelectionMenu.vue.d.cts +23 -0
- package/dist/selection/SelectionMenu.vue.d.ts +23 -0
- package/dist/selection/composables.d.cts +24 -0
- package/dist/selection/composables.d.ts +24 -0
- package/dist/selection.cjs +24 -0
- package/dist/selection.cjs.map +1 -0
- package/dist/selection.d.cts +16 -0
- package/dist/selection.d.ts +16 -0
- package/dist/selection.js +15 -0
- package/dist/selection.js.map +1 -0
- package/dist/shell.cjs +72 -0
- package/dist/shell.cjs.map +1 -0
- package/dist/shell.d.cts +56 -0
- package/dist/shell.d.ts +56 -0
- package/dist/shell.js +67 -0
- package/dist/shell.js.map +1 -0
- package/dist/signature/composables.d.cts +39 -0
- package/dist/signature/composables.d.ts +39 -0
- package/dist/signature.cjs +16 -0
- package/dist/signature.cjs.map +1 -0
- package/dist/signature.d.cts +15 -0
- package/dist/signature.d.ts +15 -0
- package/dist/signature.js +10 -0
- package/dist/signature.js.map +1 -0
- package/dist/stage/PageSurface.vue.d.cts +29 -0
- package/dist/stage/PageSurface.vue.d.ts +29 -0
- package/dist/stage/Scrollbar.vue.d.cts +32 -0
- package/dist/stage/Scrollbar.vue.d.ts +32 -0
- package/dist/stage/Stage.vue.d.cts +44 -0
- package/dist/stage/Stage.vue.d.ts +44 -0
- package/dist/stage/StageScope.vue.d.cts +17 -0
- package/dist/stage/StageScope.vue.d.ts +17 -0
- package/dist/stage/composables.d.cts +41 -0
- package/dist/stage/composables.d.ts +41 -0
- package/dist/stage/scope.d.cts +12 -0
- package/dist/stage/scope.d.ts +12 -0
- package/dist/stage.cjs +21 -0
- package/dist/stage.cjs.map +1 -0
- package/dist/stage.d.cts +17 -0
- package/dist/stage.d.ts +17 -0
- package/dist/stage.js +15 -0
- package/dist/stage.js.map +1 -0
- package/dist/stamp.cjs +68 -0
- package/dist/stamp.cjs.map +1 -0
- package/dist/stamp.d.cts +61 -0
- package/dist/stamp.d.ts +61 -0
- package/dist/stamp.js +61 -0
- package/dist/stamp.js.map +1 -0
- package/dist/state-DZg8q3v6.js +52 -0
- package/dist/state-DZg8q3v6.js.map +1 -0
- package/dist/state-M22NDJQo.cjs +51 -0
- package/dist/state-M22NDJQo.cjs.map +1 -0
- package/dist/state.d.cts +32 -0
- package/dist/state.d.ts +32 -0
- package/dist/strip-BSDB39Xh.cjs +743 -0
- package/dist/strip-BSDB39Xh.cjs.map +1 -0
- package/dist/strip-C3wLonKB.js +744 -0
- package/dist/strip-C3wLonKB.js.map +1 -0
- package/dist/surface-box-B9oa4YoG.js +12 -0
- package/dist/surface-box-B9oa4YoG.js.map +1 -0
- package/dist/surface-box-C7EvUOXp.cjs +11 -0
- package/dist/surface-box-C7EvUOXp.cjs.map +1 -0
- package/dist/theme.d.cts +13 -0
- package/dist/theme.d.ts +13 -0
- package/dist/toolbar/DefaultCollapsed.vue.d.cts +9 -0
- package/dist/toolbar/DefaultCollapsed.vue.d.ts +9 -0
- package/dist/toolbar/DefaultCommand.vue.d.cts +8 -0
- package/dist/toolbar/DefaultCommand.vue.d.ts +8 -0
- package/dist/toolbar/DefaultGroupTrigger.vue.d.cts +9 -0
- package/dist/toolbar/DefaultGroupTrigger.vue.d.ts +9 -0
- package/dist/toolbar/DefaultOverflowMenu.vue.d.cts +9 -0
- package/dist/toolbar/DefaultOverflowMenu.vue.d.ts +9 -0
- package/dist/toolbar/DefaultOverflowTrigger.vue.d.cts +10 -0
- package/dist/toolbar/DefaultOverflowTrigger.vue.d.ts +10 -0
- package/dist/toolbar/Measured.vue.d.cts +21 -0
- package/dist/toolbar/Measured.vue.d.ts +21 -0
- package/dist/toolbar/NativeSlotSocket.vue.d.cts +22 -0
- package/dist/toolbar/NativeSlotSocket.vue.d.ts +22 -0
- package/dist/toolbar/Toolbar.vue.d.cts +82 -0
- package/dist/toolbar/Toolbar.vue.d.ts +82 -0
- package/dist/toolbar/ToolbarPart.vue.d.cts +42 -0
- package/dist/toolbar/ToolbarPart.vue.d.ts +42 -0
- package/dist/toolbar/paint.d.cts +3 -0
- package/dist/toolbar/paint.d.ts +3 -0
- package/dist/toolbar/strip.d.cts +14 -0
- package/dist/toolbar/strip.d.ts +14 -0
- package/dist/toolbar/views.d.cts +15 -0
- package/dist/toolbar/views.d.ts +15 -0
- package/dist/toolbar.cjs +27 -0
- package/dist/toolbar.cjs.map +1 -0
- package/dist/toolbar.d.cts +14 -0
- package/dist/toolbar.d.ts +14 -0
- package/dist/toolbar.js +12 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/view-manager.cjs +22 -0
- package/dist/view-manager.cjs.map +1 -0
- package/dist/view-manager.d.cts +24 -0
- package/dist/view-manager.d.ts +24 -0
- package/dist/view-manager.js +17 -0
- package/dist/view-manager.js.map +1 -0
- package/package.json +169 -3
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const vue = require("vue");
|
|
3
|
+
const core = require("@embedpdf/core");
|
|
4
|
+
const coreGeometry = require("@embedpdf/core-geometry");
|
|
5
|
+
const pluginStage = require("@embedpdf/plugin-stage");
|
|
6
|
+
const contract = require("@embedpdf/plugin-interaction/contract");
|
|
7
|
+
const host = require("@embedpdf/plugin-interaction/contract/host");
|
|
8
|
+
const web = require("@embedpdf/web");
|
|
9
|
+
const AnchoredScope_vue_vue_type_script_setup_true_lang = require("./AnchoredScope.vue_vue_type_script_setup_true_lang-BwtHXw73.cjs");
|
|
10
|
+
const capabilities = require("./capabilities-DVNJmgy7.cjs");
|
|
11
|
+
const documents = require("./documents-TQ1fMdWI.cjs");
|
|
12
|
+
const page = require("./page-Doy4_Sdz.cjs");
|
|
13
|
+
const surfaceBox = require("./surface-box-C7EvUOXp.cjs");
|
|
14
|
+
const scope = require("./scope-BQA4toWB.cjs");
|
|
15
|
+
const state = require("./state-M22NDJQo.cjs");
|
|
16
|
+
function useStage(token) {
|
|
17
|
+
return capabilities.useCapability(scope.useStageToken(token));
|
|
18
|
+
}
|
|
19
|
+
function useStageEvent(select, handler, token) {
|
|
20
|
+
capabilities.useCapabilityEvent(scope.useStageToken(token), select, handler);
|
|
21
|
+
}
|
|
22
|
+
function useStageState(select, token) {
|
|
23
|
+
const lens = scope.useStageToken(token);
|
|
24
|
+
const scope$1 = capabilities.useDocumentScope();
|
|
25
|
+
const value = capabilities.useKernelValue((kernel) => {
|
|
26
|
+
const stage = kernel.tryCapability(lens.value, scope$1.value ?? void 0);
|
|
27
|
+
const state2 = stage ? pluginStage.stageState.read(stage) : pluginStage.stageState.empty;
|
|
28
|
+
return select ? select(state2) : state2;
|
|
29
|
+
}, core.shallowEqual);
|
|
30
|
+
return select ? value : state.fieldRefs(value, Object.keys(pluginStage.stageState.empty));
|
|
31
|
+
}
|
|
32
|
+
function useStageSettings(select, token) {
|
|
33
|
+
const lens = scope.useStageToken(token);
|
|
34
|
+
const scope$1 = capabilities.useDocumentScope();
|
|
35
|
+
const value = capabilities.useKernelValue((kernel) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const settings = ((_a = kernel.tryCapability(lens.value, scope$1.value ?? void 0)) == null ? void 0 : _a.getSettings()) ?? pluginStage.DEFAULT_SETTINGS;
|
|
38
|
+
return select ? select(settings) : settings;
|
|
39
|
+
}, core.shallowEqual);
|
|
40
|
+
return select ? value : state.fieldRefs(value, Object.keys(pluginStage.DEFAULT_SETTINGS));
|
|
41
|
+
}
|
|
42
|
+
const NO_SCROLL = Object.freeze({
|
|
43
|
+
scrollLeft: 0,
|
|
44
|
+
scrollTop: 0,
|
|
45
|
+
scrollWidth: 0,
|
|
46
|
+
scrollHeight: 0,
|
|
47
|
+
clientWidth: 0,
|
|
48
|
+
clientHeight: 0,
|
|
49
|
+
scrollableX: false,
|
|
50
|
+
scrollableY: false
|
|
51
|
+
});
|
|
52
|
+
const asHost = (token) => token;
|
|
53
|
+
function useScrollMetricsValue(token) {
|
|
54
|
+
const lens = scope.useStageToken(token);
|
|
55
|
+
const scope$1 = capabilities.useDocumentScope();
|
|
56
|
+
return capabilities.useKernelValue(
|
|
57
|
+
(kernel) => {
|
|
58
|
+
var _a;
|
|
59
|
+
return ((_a = kernel.tryCapability(asHost(lens.value), scope$1.value ?? void 0)) == null ? void 0 : _a.getScrollMetrics()) ?? NO_SCROLL;
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
function useScrollMetrics(token) {
|
|
64
|
+
return state.fieldRefs(useScrollMetricsValue(token), Object.keys(NO_SCROLL));
|
|
65
|
+
}
|
|
66
|
+
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
67
|
+
__name: "PageSurface",
|
|
68
|
+
props: {
|
|
69
|
+
documentId: {},
|
|
70
|
+
page: {},
|
|
71
|
+
frame: {},
|
|
72
|
+
stage: {}
|
|
73
|
+
},
|
|
74
|
+
setup(__props) {
|
|
75
|
+
const props = __props;
|
|
76
|
+
const content = vue.ref(null);
|
|
77
|
+
const look = documents.useViewerSettings((settings) => settings.page);
|
|
78
|
+
const pageObjectNumber = vue.computed(() => props.page.ref.objectNumber);
|
|
79
|
+
const pageRef = vue.computed(() => core.toPageRef(pageObjectNumber.value));
|
|
80
|
+
let inputs = [];
|
|
81
|
+
const context = vue.computed((previous) => {
|
|
82
|
+
const { transform, pageIndex } = props.page;
|
|
83
|
+
const next = [props.documentId, pageRef.value, pageIndex, props.frame, transform, props.stage];
|
|
84
|
+
if (previous && next.every((value, index) => value === inputs[index])) return previous;
|
|
85
|
+
inputs = next;
|
|
86
|
+
const stage = props.stage;
|
|
87
|
+
const objectNumber = pageObjectNumber.value;
|
|
88
|
+
return web.makePageContext(
|
|
89
|
+
props.documentId,
|
|
90
|
+
// The hosting lens: per-view raster planning keys its tiles by it.
|
|
91
|
+
stage.getLensId(),
|
|
92
|
+
pageRef.value,
|
|
93
|
+
pageIndex,
|
|
94
|
+
props.frame,
|
|
95
|
+
transform,
|
|
96
|
+
() => content.value.getBoundingClientRect(),
|
|
97
|
+
// A pull: the stage's live visibility at call time. Off screen is a zero
|
|
98
|
+
// rect ("want nothing").
|
|
99
|
+
() => web.stagePageDemand(stage, objectNumber, transform.deviceWidth)
|
|
100
|
+
);
|
|
101
|
+
});
|
|
102
|
+
page.providePage(context);
|
|
103
|
+
const boxes = vue.computed(() => {
|
|
104
|
+
const { transform, screenX, screenY } = props.page;
|
|
105
|
+
const layout = web.pageSurfaceLayout(transform, props.frame, { x: screenX, y: screenY });
|
|
106
|
+
return {
|
|
107
|
+
outer: { position: "absolute", ...surfaceBox.pixelBox(layout.outer) },
|
|
108
|
+
// The drop shadow only: axis-aligned at the footprint, transparent, so it
|
|
109
|
+
// never peeks out behind the picture and stays put when the page turns.
|
|
110
|
+
shadow: {
|
|
111
|
+
position: "absolute",
|
|
112
|
+
...surfaceBox.pixelBox(layout.shadow),
|
|
113
|
+
boxShadow: web.paint("page-shadow", look.value.shadow)
|
|
114
|
+
},
|
|
115
|
+
// The page: backing and picture as one box, the only thing rotation turns.
|
|
116
|
+
content: {
|
|
117
|
+
position: "absolute",
|
|
118
|
+
...surfaceBox.pixelBox(layout.content),
|
|
119
|
+
background: web.paint("page-background", look.value.background),
|
|
120
|
+
transform: layout.turn ?? void 0,
|
|
121
|
+
// Selection highlights are drawn by the layers: no native text or image
|
|
122
|
+
// selection (or double-click image grab) on the page.
|
|
123
|
+
userSelect: "none",
|
|
124
|
+
WebkitUserSelect: "none"
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
return (_ctx, _cache) => {
|
|
129
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
130
|
+
style: vue.normalizeStyle(boxes.value.outer)
|
|
131
|
+
}, [
|
|
132
|
+
vue.createElementVNode("div", {
|
|
133
|
+
style: vue.normalizeStyle(boxes.value.shadow)
|
|
134
|
+
}, null, 4),
|
|
135
|
+
vue.createElementVNode("div", {
|
|
136
|
+
ref_key: "content",
|
|
137
|
+
ref: content,
|
|
138
|
+
style: vue.normalizeStyle(boxes.value.content)
|
|
139
|
+
}, [
|
|
140
|
+
vue.renderSlot(_ctx.$slots, "default", { page: context.value })
|
|
141
|
+
], 4),
|
|
142
|
+
vue.renderSlot(_ctx.$slots, "chrome", { page: context.value })
|
|
143
|
+
], 4);
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
148
|
+
__name: "Stage",
|
|
149
|
+
props: {
|
|
150
|
+
token: {},
|
|
151
|
+
page: {},
|
|
152
|
+
zoom: {},
|
|
153
|
+
tool: {}
|
|
154
|
+
},
|
|
155
|
+
emits: ["update:page", "update:zoom", "update:tool"],
|
|
156
|
+
setup(__props, { emit: __emit }) {
|
|
157
|
+
const props = __props;
|
|
158
|
+
const emit = __emit;
|
|
159
|
+
const token = scope.useStageToken(() => props.token);
|
|
160
|
+
const hostToken = vue.computed(() => asHost(token.value));
|
|
161
|
+
const stage = capabilities.useOptionalCapability(hostToken);
|
|
162
|
+
const interaction = capabilities.useOptionalCapability(host.InteractionToken);
|
|
163
|
+
const documentId = capabilities.useDocumentId();
|
|
164
|
+
scope.provideStageToken(token);
|
|
165
|
+
const NO_PAGES = Object.freeze([]);
|
|
166
|
+
const pages = capabilities.useOptionalSelector(hostToken, (lens) => lens.listVisiblePages(), NO_PAGES);
|
|
167
|
+
const sameFrame = (left, right) => left.top === right.top && left.right === right.right && left.bottom === right.bottom && left.left === right.left;
|
|
168
|
+
const frame = capabilities.useOptionalSelector(
|
|
169
|
+
hostToken,
|
|
170
|
+
(lens) => lens.getSettings().pageFrame,
|
|
171
|
+
coreGeometry.NO_FRAME,
|
|
172
|
+
sameFrame
|
|
173
|
+
);
|
|
174
|
+
const DEFAULT_INPUT = { interaction: true, panFallback: true, zoomGestures: true };
|
|
175
|
+
const input = capabilities.useOptionalSelector(
|
|
176
|
+
hostToken,
|
|
177
|
+
(lens) => {
|
|
178
|
+
const { interaction: routed, panFallback, zoomGestures } = lens.getSettings();
|
|
179
|
+
return { interaction: routed, panFallback, zoomGestures };
|
|
180
|
+
},
|
|
181
|
+
DEFAULT_INPUT,
|
|
182
|
+
core.shallowEqual
|
|
183
|
+
);
|
|
184
|
+
const routesToHub = vue.computed(() => input.value.interaction && interaction.value !== null);
|
|
185
|
+
const hubCursor = capabilities.useKernelValue(() => {
|
|
186
|
+
var _a;
|
|
187
|
+
return ((_a = interaction.value) == null ? void 0 : _a.getCursor()) ?? "default";
|
|
188
|
+
});
|
|
189
|
+
const element = vue.ref(null);
|
|
190
|
+
vue.watch(
|
|
191
|
+
[
|
|
192
|
+
element,
|
|
193
|
+
stage,
|
|
194
|
+
interaction,
|
|
195
|
+
routesToHub,
|
|
196
|
+
() => input.value.zoomGestures,
|
|
197
|
+
() => input.value.panFallback
|
|
198
|
+
],
|
|
199
|
+
([viewport, lens, hub, routed, zoomGestures, panFallback], _previous, onCleanup) => {
|
|
200
|
+
if (!viewport || !lens) return;
|
|
201
|
+
const detachSurface = web.createStageSurface(viewport, lens, {
|
|
202
|
+
hub: routed ? hub : null,
|
|
203
|
+
source: lens.getLensId(),
|
|
204
|
+
zoomGestures
|
|
205
|
+
});
|
|
206
|
+
const offScroll = routed && hub ? hub.registerHandler(pluginStage.createScrollHandler(lens, hub, { panFallback }), {
|
|
207
|
+
source: lens.getLensId()
|
|
208
|
+
}) : null;
|
|
209
|
+
onCleanup(() => {
|
|
210
|
+
offScroll == null ? void 0 : offScroll();
|
|
211
|
+
detachSurface();
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
{ immediate: true, flush: "post" }
|
|
215
|
+
);
|
|
216
|
+
vue.watch(
|
|
217
|
+
[() => props.tool, interaction],
|
|
218
|
+
([tool, hub]) => {
|
|
219
|
+
if (tool === void 0 || !hub) return;
|
|
220
|
+
if (hub.getActiveToolId() !== tool) hub.activateTool(tool);
|
|
221
|
+
},
|
|
222
|
+
{ immediate: true }
|
|
223
|
+
);
|
|
224
|
+
capabilities.useCapabilityEvent(
|
|
225
|
+
contract.InteractionToken,
|
|
226
|
+
(hub) => hub.onToolChanged,
|
|
227
|
+
(event) => emit("update:tool", event.toolId)
|
|
228
|
+
);
|
|
229
|
+
let reportedPage;
|
|
230
|
+
vue.watch(
|
|
231
|
+
() => props.page,
|
|
232
|
+
(pageIndex) => {
|
|
233
|
+
const lens = stage.value;
|
|
234
|
+
if (pageIndex === void 0 || !lens || pageIndex === reportedPage) return;
|
|
235
|
+
if (lens.getCurrentPageIndex() !== pageIndex) lens.goToPage(pageIndex);
|
|
236
|
+
},
|
|
237
|
+
{ immediate: true }
|
|
238
|
+
);
|
|
239
|
+
capabilities.useCapabilityEvent(
|
|
240
|
+
hostToken,
|
|
241
|
+
(lens) => lens.onPageChanged,
|
|
242
|
+
({ pageIndex }) => {
|
|
243
|
+
reportedPage = pageIndex;
|
|
244
|
+
emit("update:page", pageIndex);
|
|
245
|
+
}
|
|
246
|
+
);
|
|
247
|
+
let reportedZoom;
|
|
248
|
+
vue.watch(
|
|
249
|
+
() => props.zoom,
|
|
250
|
+
(level) => {
|
|
251
|
+
const lens = stage.value;
|
|
252
|
+
if (level === void 0 || !lens || level === reportedZoom) return;
|
|
253
|
+
if (lens.getZoomLevel() !== level) lens.zoomTo(level);
|
|
254
|
+
},
|
|
255
|
+
{ immediate: true }
|
|
256
|
+
);
|
|
257
|
+
capabilities.useCapabilityEvent(
|
|
258
|
+
hostToken,
|
|
259
|
+
(lens) => lens.onZoomChanged,
|
|
260
|
+
({ level }) => {
|
|
261
|
+
reportedZoom = level;
|
|
262
|
+
emit("update:zoom", level);
|
|
263
|
+
}
|
|
264
|
+
);
|
|
265
|
+
const projector = vue.computed(() => {
|
|
266
|
+
const lens = stage.value;
|
|
267
|
+
return lens ? web.stageViewProjector(() => lens) : null;
|
|
268
|
+
});
|
|
269
|
+
const projectorBinding = vue.computed(
|
|
270
|
+
() => projector.value ? { projector: projector.value, revision: pages.value } : null
|
|
271
|
+
);
|
|
272
|
+
let shownKey = "";
|
|
273
|
+
const shownPages = vue.computed((previous) => {
|
|
274
|
+
const key = pages.value.map((visiblePage) => visiblePage.ref.objectNumber).join(",");
|
|
275
|
+
if (previous && key === shownKey) return previous;
|
|
276
|
+
shownKey = key;
|
|
277
|
+
return new Set(pages.value.map((visiblePage) => visiblePage.ref.objectNumber));
|
|
278
|
+
});
|
|
279
|
+
return (_ctx, _cache) => {
|
|
280
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
281
|
+
ref_key: "element",
|
|
282
|
+
ref: element,
|
|
283
|
+
style: vue.normalizeStyle({
|
|
284
|
+
position: "relative",
|
|
285
|
+
overflow: "hidden",
|
|
286
|
+
touchAction: "none",
|
|
287
|
+
cursor: routesToHub.value ? vue.unref(hubCursor) : void 0
|
|
288
|
+
})
|
|
289
|
+
}, [
|
|
290
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(pages), (visiblePage) => {
|
|
291
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$3, {
|
|
292
|
+
key: visiblePage.ref.objectNumber,
|
|
293
|
+
"document-id": vue.unref(documentId) ?? "",
|
|
294
|
+
page: visiblePage,
|
|
295
|
+
frame: vue.unref(frame),
|
|
296
|
+
stage: vue.unref(stage)
|
|
297
|
+
}, vue.createSlots({
|
|
298
|
+
default: vue.withCtx(({ page: page2 }) => [
|
|
299
|
+
vue.renderSlot(_ctx.$slots, "page", { page: page2 })
|
|
300
|
+
]),
|
|
301
|
+
_: 2
|
|
302
|
+
}, [
|
|
303
|
+
_ctx.$slots["page-chrome"] ? {
|
|
304
|
+
name: "chrome",
|
|
305
|
+
fn: vue.withCtx(({ page: page2 }) => [
|
|
306
|
+
vue.renderSlot(_ctx.$slots, "page-chrome", { page: page2 })
|
|
307
|
+
]),
|
|
308
|
+
key: "0"
|
|
309
|
+
} : void 0
|
|
310
|
+
]), 1032, ["document-id", "page", "frame", "stage"]);
|
|
311
|
+
}), 128)),
|
|
312
|
+
projectorBinding.value && _ctx.$slots.overlay ? (vue.openBlock(), vue.createBlock(AnchoredScope_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
313
|
+
key: 0,
|
|
314
|
+
binding: projectorBinding.value,
|
|
315
|
+
shown: shownPages.value
|
|
316
|
+
}, {
|
|
317
|
+
default: vue.withCtx(() => [
|
|
318
|
+
vue.renderSlot(_ctx.$slots, "overlay")
|
|
319
|
+
]),
|
|
320
|
+
_: 3
|
|
321
|
+
}, 8, ["binding", "shown"])) : vue.createCommentVNode("", true)
|
|
322
|
+
], 4);
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
327
|
+
__name: "StageScope",
|
|
328
|
+
props: {
|
|
329
|
+
token: {}
|
|
330
|
+
},
|
|
331
|
+
setup(__props) {
|
|
332
|
+
const props = __props;
|
|
333
|
+
scope.provideStageToken(() => props.token);
|
|
334
|
+
return (_ctx, _cache) => {
|
|
335
|
+
return vue.renderSlot(_ctx.$slots, "default");
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
const _hoisted_1 = ["aria-orientation", "aria-valuemax", "aria-valuenow", "data-axis", "data-state", "data-dragging"];
|
|
340
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
341
|
+
__name: "Scrollbar",
|
|
342
|
+
props: {
|
|
343
|
+
axis: {},
|
|
344
|
+
token: {},
|
|
345
|
+
autoHide: { type: [Number, Boolean], default: 1200 },
|
|
346
|
+
minThumbSize: { default: 24 },
|
|
347
|
+
trackPress: { default: "page" },
|
|
348
|
+
thumbClass: {},
|
|
349
|
+
thumbStyle: { type: [Boolean, null, String, Object, Array] }
|
|
350
|
+
},
|
|
351
|
+
setup(__props) {
|
|
352
|
+
const props = __props;
|
|
353
|
+
const token = scope.useStageToken(() => props.token);
|
|
354
|
+
const stage = capabilities.useCapabilityRef(vue.computed(() => asHost(token.value)));
|
|
355
|
+
const metrics = useScrollMetricsValue(token);
|
|
356
|
+
const vertical = vue.computed(() => props.axis === "y");
|
|
357
|
+
const scrollable = vue.computed(
|
|
358
|
+
() => vertical.value ? metrics.value.scrollableY : metrics.value.scrollableX
|
|
359
|
+
);
|
|
360
|
+
const track = vue.ref(null);
|
|
361
|
+
const trackPx = vue.ref(0);
|
|
362
|
+
const dragging = vue.ref(false);
|
|
363
|
+
const hovered = vue.ref(false);
|
|
364
|
+
const active = vue.ref(true);
|
|
365
|
+
const layout = vue.computed(
|
|
366
|
+
() => web.scrollbarLayout(metrics.value, vertical.value, trackPx.value, props.minThumbSize)
|
|
367
|
+
);
|
|
368
|
+
const hideAfter = vue.computed(() => props.autoHide === false ? 0 : props.autoHide);
|
|
369
|
+
vue.watch(
|
|
370
|
+
[metrics, hideAfter],
|
|
371
|
+
([, delay], _previous, onCleanup) => {
|
|
372
|
+
if (!delay) return;
|
|
373
|
+
active.value = true;
|
|
374
|
+
const timer = setTimeout(() => active.value = false, delay);
|
|
375
|
+
onCleanup(() => clearTimeout(timer));
|
|
376
|
+
},
|
|
377
|
+
{ immediate: true }
|
|
378
|
+
);
|
|
379
|
+
const shown = vue.computed(() => !hideAfter.value || active.value || hovered.value || dragging.value);
|
|
380
|
+
vue.watch(
|
|
381
|
+
[track, vertical],
|
|
382
|
+
([element, isVertical], _previous, onCleanup) => {
|
|
383
|
+
if (!element) return;
|
|
384
|
+
const measure = () => {
|
|
385
|
+
trackPx.value = isVertical ? element.clientHeight : element.clientWidth;
|
|
386
|
+
};
|
|
387
|
+
const observer = new ResizeObserver(measure);
|
|
388
|
+
observer.observe(element);
|
|
389
|
+
measure();
|
|
390
|
+
onCleanup(() => observer.disconnect());
|
|
391
|
+
},
|
|
392
|
+
{ immediate: true, flush: "post" }
|
|
393
|
+
);
|
|
394
|
+
const presses = web.createScrollbarPresses((value) => dragging.value = value);
|
|
395
|
+
const pressedTrack = () => ({
|
|
396
|
+
stage: stage.value,
|
|
397
|
+
vertical: vertical.value,
|
|
398
|
+
element: track.value,
|
|
399
|
+
layout: layout.value,
|
|
400
|
+
// Fresh geometry for paging steps: read from the capability, never a stale render.
|
|
401
|
+
liveLayout: () => web.scrollbarLayout(
|
|
402
|
+
stage.value.getScrollMetrics(),
|
|
403
|
+
vertical.value,
|
|
404
|
+
trackPx.value,
|
|
405
|
+
props.minThumbSize
|
|
406
|
+
)
|
|
407
|
+
});
|
|
408
|
+
vue.onUnmounted(() => presses.release());
|
|
409
|
+
const trackStyle = vue.computed(
|
|
410
|
+
() => ({
|
|
411
|
+
...vertical.value ? { position: "absolute", top: 0, right: 0, bottom: 0, width: "12px" } : { position: "absolute", left: 0, right: 0, bottom: 0, height: "12px" },
|
|
412
|
+
touchAction: "none",
|
|
413
|
+
userSelect: "none",
|
|
414
|
+
opacity: shown.value ? 1 : 0,
|
|
415
|
+
transition: "opacity 200ms",
|
|
416
|
+
// A hidden overlay bar must not eat the clicks under it.
|
|
417
|
+
pointerEvents: shown.value ? "auto" : "none"
|
|
418
|
+
})
|
|
419
|
+
);
|
|
420
|
+
const thumbDefaults = vue.computed(() => {
|
|
421
|
+
const { thumbPosition, thumbLength } = layout.value;
|
|
422
|
+
return {
|
|
423
|
+
...vertical.value ? {
|
|
424
|
+
position: "absolute",
|
|
425
|
+
left: "2px",
|
|
426
|
+
right: "2px",
|
|
427
|
+
top: `${thumbPosition}px`,
|
|
428
|
+
height: `${thumbLength}px`
|
|
429
|
+
} : {
|
|
430
|
+
position: "absolute",
|
|
431
|
+
top: "2px",
|
|
432
|
+
bottom: "2px",
|
|
433
|
+
left: `${thumbPosition}px`,
|
|
434
|
+
width: `${thumbLength}px`
|
|
435
|
+
},
|
|
436
|
+
borderRadius: "6px",
|
|
437
|
+
background: web.paintDefault("scrollbar-thumb")
|
|
438
|
+
};
|
|
439
|
+
});
|
|
440
|
+
return (_ctx, _cache) => {
|
|
441
|
+
return scrollable.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
442
|
+
key: 0,
|
|
443
|
+
ref_key: "track",
|
|
444
|
+
ref: track,
|
|
445
|
+
role: "scrollbar",
|
|
446
|
+
"aria-orientation": vertical.value ? "vertical" : "horizontal",
|
|
447
|
+
"aria-valuemin": 0,
|
|
448
|
+
"aria-valuemax": Math.round(layout.value.maxOffset),
|
|
449
|
+
"aria-valuenow": Math.round(layout.value.offset),
|
|
450
|
+
"data-embedpdf-scrollbar": "",
|
|
451
|
+
"data-axis": __props.axis,
|
|
452
|
+
"data-state": shown.value ? "visible" : "hidden",
|
|
453
|
+
"data-dragging": dragging.value ? "" : void 0,
|
|
454
|
+
style: vue.normalizeStyle(trackStyle.value),
|
|
455
|
+
onPointerdown: _cache[1] || (_cache[1] = ($event) => vue.unref(presses).pressTrack($event, pressedTrack(), __props.trackPress)),
|
|
456
|
+
onPointermove: _cache[2] || (_cache[2] = ($event) => vue.unref(presses).move($event, pressedTrack())),
|
|
457
|
+
onPointerup: _cache[3] || (_cache[3] = ($event) => vue.unref(presses).release()),
|
|
458
|
+
onPointercancel: _cache[4] || (_cache[4] = ($event) => vue.unref(presses).release()),
|
|
459
|
+
onPointerenter: _cache[5] || (_cache[5] = ($event) => hovered.value = true),
|
|
460
|
+
onPointerleave: _cache[6] || (_cache[6] = ($event) => hovered.value = false)
|
|
461
|
+
}, [
|
|
462
|
+
vue.createElementVNode("div", {
|
|
463
|
+
"data-embedpdf-scrollbar-thumb": "",
|
|
464
|
+
class: vue.normalizeClass(__props.thumbClass),
|
|
465
|
+
style: vue.normalizeStyle([thumbDefaults.value, __props.thumbStyle]),
|
|
466
|
+
onPointerdown: _cache[0] || (_cache[0] = ($event) => vue.unref(presses).pressThumb($event, pressedTrack()))
|
|
467
|
+
}, null, 38)
|
|
468
|
+
], 44, _hoisted_1)) : vue.createCommentVNode("", true);
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
exports._sfc_main = _sfc_main;
|
|
473
|
+
exports._sfc_main$1 = _sfc_main$2;
|
|
474
|
+
exports._sfc_main$2 = _sfc_main$1;
|
|
475
|
+
exports.useScrollMetrics = useScrollMetrics;
|
|
476
|
+
exports.useStage = useStage;
|
|
477
|
+
exports.useStageEvent = useStageEvent;
|
|
478
|
+
exports.useStageSettings = useStageSettings;
|
|
479
|
+
exports.useStageState = useStageState;
|
|
480
|
+
//# sourceMappingURL=Scrollbar.vue_vue_type_script_setup_true_lang-DrOORC1H.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scrollbar.vue_vue_type_script_setup_true_lang-DrOORC1H.cjs","sources":["../src/stage/composables.ts","../src/stage/PageSurface.vue","../src/stage/Stage.vue","../src/stage/StageScope.vue","../src/stage/Scrollbar.vue"],"sourcesContent":["/**\n * The Stage's composables: `useStage()` (the API), `useStageState()`,\n * `useStageEvent()`, `useStageSettings()`, and `useScrollMetrics()` for scroll\n * UI of your own. Each takes an optional token after its other arguments;\n * without one it binds to the nearest `<StageScope>` / `<Stage>`, else the\n * main view.\n */\nimport { shallowEqual } from '@embedpdf/core';\nimport type { CapabilityToken, EventHook } from '@embedpdf/core';\nimport { DEFAULT_SETTINGS, stageState } from '@embedpdf/plugin-stage';\nimport type { StageCapability, StageSettings } from '@embedpdf/plugin-stage';\nimport type { ScrollMetrics, StageHostCapability } from '@embedpdf/plugin-stage/contract/host';\nimport type { MaybeRefOrGetter, Ref } from 'vue';\nimport { useCapability, useCapabilityEvent } from '../runtime/capabilities';\nimport { useDocumentScope, useKernelValue } from '../runtime/kernel';\nimport { fieldRefs } from '../runtime/refs';\nimport type { FieldRefs } from '../runtime/refs';\nimport { useStageToken } from './scope';\nimport type { StageTokenProp } from './scope';\n\n/** A stage token, or a ref or getter of one: for a view chosen by a prop. */\nexport type StageTokenSource = MaybeRefOrGetter<StageTokenProp | undefined>;\n\n/** What `useStageState()` reads: the Stage page's State table. */\nexport type StageStateValue = (typeof stageState)['empty'];\n\n/** The Stage's API (zoom, navigation, reveal, settings), for app chrome. The object never changes. */\nexport function useStage(token?: StageTokenSource): StageCapability {\n return useCapability(useStageToken(token));\n}\n\n/** Subscribe to one stage event while the component lives: `useStageEvent((stage) => stage.onZoomChanged, handler)`. */\nexport function useStageEvent<Event>(\n select: (stage: StageCapability) => EventHook<Event>,\n handler: (event: Event) => void,\n token?: StageTokenSource,\n): void {\n useCapabilityEvent(useStageToken(token), select, handler);\n}\n\n/**\n * The view's state as refs: the zoom, the current page, the page count, the\n * view rotation and the responsive rules that apply (the page's State table,\n * declared once in `stageState`). With a selector, one ref for the value it\n * picks, which updates only when that value changes. Without a document it\n * reads `stageState.empty`.\n */\nexport function useStageState(\n select?: undefined,\n token?: StageTokenSource,\n): FieldRefs<StageStateValue>;\nexport function useStageState<Selected>(\n select: (state: StageStateValue) => Selected,\n token?: StageTokenSource,\n): Readonly<Ref<Selected>>;\nexport function useStageState<Selected>(\n select?: (state: StageStateValue) => Selected,\n token?: StageTokenSource,\n) {\n const lens = useStageToken(token);\n const scope = useDocumentScope();\n // Resolved on every read: a document that closes reads as `empty`, never\n // through its closed capability.\n const value = useKernelValue((kernel) => {\n const stage = kernel.tryCapability(lens.value, scope.value ?? undefined);\n const state = stage ? stageState.read(stage) : stageState.empty;\n return select ? select(state) : state;\n }, shallowEqual);\n return select\n ? value\n : fieldRefs(value as Readonly<Ref<StageStateValue>>, Object.keys(stageState.empty));\n}\n\n/**\n * The view's settings as refs, or one ref for the value `select` picks. They\n * belong to the view, so without a document there is none yet and this reads\n * the defaults. Change them with `useStage().updateSettings()`.\n */\nexport function useStageSettings(\n select?: undefined,\n token?: StageTokenSource,\n): FieldRefs<StageSettings>;\nexport function useStageSettings<Selected>(\n select: (settings: StageSettings) => Selected,\n token?: StageTokenSource,\n): Readonly<Ref<Selected>>;\nexport function useStageSettings<Selected>(\n select?: (settings: StageSettings) => Selected,\n token?: StageTokenSource,\n) {\n const lens = useStageToken(token);\n const scope = useDocumentScope();\n const value = useKernelValue((kernel) => {\n const settings =\n kernel.tryCapability(lens.value, scope.value ?? undefined)?.getSettings() ??\n DEFAULT_SETTINGS;\n return select ? select(settings) : settings;\n }, shallowEqual);\n return select\n ? value\n : fieldRefs(value as Readonly<Ref<StageSettings>>, Object.keys(DEFAULT_SETTINGS));\n}\n\n/** What a view with nothing to scroll measures: no document, or not placed yet. */\nconst NO_SCROLL: ScrollMetrics = Object.freeze({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n clientWidth: 0,\n clientHeight: 0,\n scrollableX: false,\n scrollableY: false,\n});\n\n// Scroll metrics live on the host lens (the same runtime token, typed wider):\n// a scrollbar is chrome that drives the camera, not a document-level consumer.\nexport const asHost = (token: CapabilityToken<StageCapability>) =>\n token as unknown as CapabilityToken<StageHostCapability>;\n\n/** The metrics of a lens, as one ref: for the `<Scrollbar>` and the field refs below. */\nexport function useScrollMetricsValue(token?: StageTokenSource): Readonly<Ref<ScrollMetrics>> {\n const lens = useStageToken(token);\n const scope = useDocumentScope();\n // The capability keeps the same metrics object until a number moves.\n return useKernelValue(\n (kernel) =>\n kernel.tryCapability(asHost(lens.value), scope.value ?? undefined)?.getScrollMetrics() ??\n NO_SCROLL,\n );\n}\n\n/**\n * The view's scroll position as a scrolling element has it, as refs:\n * `scrollTop`, `scrollHeight`, `clientHeight` and their horizontal twins, in\n * screen pixels. The raw material for scroll UI of your own; all zero without\n * a document.\n */\nexport function useScrollMetrics(token?: StageTokenSource): FieldRefs<ScrollMetrics> {\n return fieldRefs(useScrollMetricsValue(token), Object.keys(NO_SCROLL));\n}\n","<!--\n One page of a <Stage>, placed where the camera puts it. It provides the page\n context to the layers in its default slot (page space: they turn with the\n page) and to its chrome slot (the page's box and its reserved frame, never\n turned).\n-->\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport { toPageRef } from '@embedpdf/core';\nimport type { PageFrame } from '@embedpdf/core-geometry';\nimport type { VisiblePage } from '@embedpdf/plugin-stage';\nimport type { StageHostCapability } from '@embedpdf/plugin-stage/contract/host';\nimport { makePageContext, pageSurfaceLayout, paint, stagePageDemand } from '@embedpdf/web';\nimport { useViewerSettings } from '../runtime/documents';\nimport { providePage } from '../runtime/page';\nimport type { PageContextValue } from '../runtime/page';\nimport { pixelBox } from '../runtime/surface-box';\n\nconst props = defineProps<{\n documentId: string;\n page: VisiblePage;\n /** Reserved chrome bands around the page (screen px); the layout reserved the space. */\n frame: PageFrame;\n /** The stage lens: the page's view demand reads its visibility live. */\n stage: StageHostCapability;\n}>();\n\ndefineSlots<{\n default?(props: { page: PageContextValue }): unknown;\n chrome?(props: { page: PageContextValue }): unknown;\n}>();\n\nconst content = ref<HTMLDivElement | null>(null);\n// The viewer's `page` settings; `--epdf-page-*` CSS variables win over them.\nconst look = useViewerSettings((settings) => settings.page);\n\n// The stage rebuilds `VisiblePage.ref` every camera frame; the page's address\n// is kept by its number, so layers can watch it.\nconst pageObjectNumber = computed(() => props.page.ref.objectNumber);\nconst pageRef = computed(() => toPageRef(pageObjectNumber.value));\n\n/**\n * The page context, a new value only when what it carries changes: a pan moves\n * the page but keeps its transform, so the layers don't update for it.\n */\nlet inputs: readonly unknown[] = [];\nconst context = computed((previous?: PageContextValue): PageContextValue => {\n const { transform, pageIndex } = props.page;\n const next = [props.documentId, pageRef.value, pageIndex, props.frame, transform, props.stage];\n if (previous && next.every((value, index) => value === inputs[index])) return previous;\n inputs = next;\n const stage = props.stage;\n const objectNumber = pageObjectNumber.value;\n return makePageContext(\n props.documentId,\n // The hosting lens: per-view raster planning keys its tiles by it.\n stage.getLensId(),\n pageRef.value,\n pageIndex,\n props.frame,\n transform,\n () => content.value!.getBoundingClientRect(),\n // A pull: the stage's live visibility at call time. Off screen is a zero\n // rect (\"want nothing\").\n () => stagePageDemand(stage, objectNumber, transform.deviceWidth),\n );\n});\nprovidePage(context);\n\n/**\n * The outer box (the footprint and the reserved frame), the shadow and the\n * turned content box, all from the transform (`@embedpdf/web`'s layout, the\n * same in every framework).\n */\nconst boxes = computed(() => {\n const { transform, screenX, screenY } = props.page;\n const layout = pageSurfaceLayout(transform, props.frame, { x: screenX, y: screenY });\n return {\n outer: { position: 'absolute', ...pixelBox(layout.outer) },\n // The drop shadow only: axis-aligned at the footprint, transparent, so it\n // never peeks out behind the picture and stays put when the page turns.\n shadow: {\n position: 'absolute',\n ...pixelBox(layout.shadow),\n boxShadow: paint('page-shadow', look.value.shadow),\n },\n // The page: backing and picture as one box, the only thing rotation turns.\n content: {\n position: 'absolute',\n ...pixelBox(layout.content),\n background: paint('page-background', look.value.background),\n transform: layout.turn ?? undefined,\n // Selection highlights are drawn by the layers: no native text or image\n // selection (or double-click image grab) on the page.\n userSelect: 'none',\n WebkitUserSelect: 'none',\n },\n } satisfies Record<string, CSSProperties>;\n});\n</script>\n\n<template>\n <div :style=\"boxes.outer\">\n <div :style=\"boxes.shadow\" />\n <div ref=\"content\" :style=\"boxes.content\">\n <slot :page=\"context\" />\n </div>\n <!-- Box-space chrome (labels, a selection border, per-page buttons) fills the outer box. -->\n <slot name=\"chrome\" :page=\"context\" />\n </div>\n</template>\n","<!--\n <Stage>: lays out the pages by the camera, mounts only the visible ones, and\n handles scrolling, zoom and page navigation with the mouse, the keyboard and\n touch. Three slots, three coordinate spaces: `#page` draws a page's content\n (it turns with the page), `#page-chrome` its box and reserved frame (never\n turned), and `#overlay` the view (menus, controls, scrollbars).\n `v-model:page`, `v-model:zoom` and `v-model:tool` keep a value of yours in\n step with the view.\n-->\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { shallowEqual } from '@embedpdf/core';\nimport { NO_FRAME } from '@embedpdf/core-geometry';\nimport type { PageFrame } from '@embedpdf/core-geometry';\nimport { createScrollHandler } from '@embedpdf/plugin-stage';\nimport type { VisiblePage } from '@embedpdf/plugin-stage';\nimport { InteractionToken as InteractionPublicToken } from '@embedpdf/plugin-interaction/contract';\nimport { InteractionToken } from '@embedpdf/plugin-interaction/contract/host';\nimport { createStageSurface, stageViewProjector } from '@embedpdf/web';\nimport type { ViewProjector } from '@embedpdf/web';\nimport AnchoredScope from '../anchored/AnchoredScope.vue';\nimport type { ProjectorBinding, ShownPages } from '../anchored/projector';\nimport {\n useCapabilityEvent,\n useOptionalCapability,\n useOptionalSelector,\n} from '../runtime/capabilities';\nimport { useDocumentId, useKernelValue } from '../runtime/kernel';\nimport type { PageContextValue } from '../runtime/page';\nimport { asHost } from './composables';\nimport PageSurface from './PageSurface.vue';\nimport { provideStageToken, useStageToken } from './scope';\nimport type { StageTokenProp } from './scope';\n\nconst props = defineProps<{\n /** The stage lens to drive: the nearest `<StageScope>`'s, else the main `StageToken`. */\n token?: StageTokenProp;\n /** `v-model:page`: the current page's index, from 0. Setting it goes to that page. */\n page?: number;\n /** `v-model:zoom`: the zoom level, `1` is 100%. Setting it zooms there. */\n zoom?: number;\n /**\n * `v-model:tool`: while set, the active tool follows it (again when the\n * document changes), and every tool change is reported back.\n */\n tool?: string;\n}>();\n\nconst emit = defineEmits<{\n 'update:page': [pageIndex: number];\n 'update:zoom': [level: number];\n 'update:tool': [toolId: string];\n}>();\n\ndefineSlots<{\n /** A visible page's content: layers in page coordinates, turned with the page. */\n page(props: { page: PageContextValue }): unknown;\n /** A visible page's chrome: its box and the reserved `pageFrame`, never turned. */\n 'page-chrome'?(props: { page: PageContextValue }): unknown;\n /** The view: menus, controls and `<Anchored>` UI above the pages. */\n overlay?(): unknown;\n}>();\n\nconst token = useStageToken(() => props.token);\n// The surface is a host of the lens: it reports the viewport, drives gestures\n// and reads the lens id. The host contract is the same runtime token, typed wider.\nconst hostToken = computed(() => asHost(token.value));\nconst stage = useOptionalCapability(hostToken);\nconst interaction = useOptionalCapability(InteractionToken);\nconst documentId = useDocumentId();\n\n// Everything inside binds to this lens: a `useStageState()` in a page's chrome\n// or a `<Scrollbar>` in the overlay needs no token.\nprovideStageToken(token);\n\n// ── the pages ──────────────────────────────────────────────────────────────\n\nconst NO_PAGES: readonly VisiblePage[] = Object.freeze([]);\n// The visible pages already fold in the camera (each carries its snapped\n// screen position and transform), so a pan is a new list.\nconst pages = useOptionalSelector(hostToken, (lens) => lens.listVisiblePages(), NO_PAGES);\nconst sameFrame = (left: PageFrame, right: PageFrame) =>\n left.top === right.top &&\n left.right === right.right &&\n left.bottom === right.bottom &&\n left.left === right.left;\n// Reserved chrome bands (screen px), the same for every page.\nconst frame = useOptionalSelector(\n hostToken,\n (lens) => lens.getSettings().pageFrame,\n NO_FRAME,\n sameFrame,\n);\n\n// ── pointer input ──────────────────────────────────────────────────────────\n\nconst DEFAULT_INPUT = { interaction: true, panFallback: true, zoomGestures: true };\n// How this view takes pointer input is its own settings: a change rebinds the surface.\nconst input = useOptionalSelector(\n hostToken,\n (lens) => {\n const { interaction: routed, panFallback, zoomGestures } = lens.getSettings();\n return { interaction: routed, panFallback, zoomGestures };\n },\n DEFAULT_INPUT,\n shallowEqual,\n);\n// Routing pointer input to the interaction hub also registers this view's\n// pan-scroll handler with it, scoped to the view, so two Stages on one document\n// never pan each other. Without the hub the Stage pans by itself.\nconst routesToHub = computed(() => input.value.interaction && interaction.value !== null);\n// The hub's cursor (text, grab, …), shown on the view while it routes there.\nconst hubCursor = useKernelValue(() => interaction.value?.getCursor() ?? 'default');\n\nconst element = ref<HTMLDivElement | null>(null);\nwatch(\n [\n element,\n stage,\n interaction,\n routesToHub,\n () => input.value.zoomGestures,\n () => input.value.panFallback,\n ],\n ([viewport, lens, hub, routed, zoomGestures, panFallback], _previous, onCleanup) => {\n if (!viewport || !lens) return;\n // The whole browser binding (viewport and pixel-ratio reports, sample\n // normalization, gestures) is the shared `@embedpdf/web` surface, so every\n // framework has one feel.\n const detachSurface = createStageSurface(viewport, lens, {\n hub: routed ? hub : null,\n source: lens.getLensId(),\n zoomGestures,\n });\n const offScroll =\n routed && hub\n ? hub.registerHandler(createScrollHandler(lens, hub, { panFallback }), {\n source: lens.getLensId(),\n })\n : null;\n onCleanup(() => {\n offScroll?.();\n detachSurface();\n });\n },\n { immediate: true, flush: 'post' },\n);\n\n// ── v-model:tool ───────────────────────────────────────────────────────────\n\nwatch(\n [() => props.tool, interaction],\n ([tool, hub]) => {\n if (tool === undefined || !hub) return;\n if (hub.getActiveToolId() !== tool) hub.activateTool(tool);\n },\n { immediate: true },\n);\nuseCapabilityEvent(\n InteractionPublicToken,\n (hub) => hub.onToolChanged,\n (event) => emit('update:tool', event.toolId),\n);\n\n// ── v-model:page and v-model:zoom ──────────────────────────────────────────\n// A value the view reported comes back as the prop: it is the view's own, so\n// it is not applied again (that would fight a glide still under way).\n\nlet reportedPage: number | undefined;\nwatch(\n () => props.page,\n (pageIndex) => {\n const lens = stage.value;\n if (pageIndex === undefined || !lens || pageIndex === reportedPage) return;\n if (lens.getCurrentPageIndex() !== pageIndex) lens.goToPage(pageIndex);\n },\n { immediate: true },\n);\nuseCapabilityEvent(\n hostToken,\n (lens) => lens.onPageChanged,\n ({ pageIndex }) => {\n reportedPage = pageIndex;\n emit('update:page', pageIndex);\n },\n);\n\nlet reportedZoom: number | undefined;\nwatch(\n () => props.zoom,\n (level) => {\n const lens = stage.value;\n if (level === undefined || !lens || level === reportedZoom) return;\n if (lens.getZoomLevel() !== level) lens.zoomTo(level);\n },\n { immediate: true },\n);\nuseCapabilityEvent(\n hostToken,\n (lens) => lens.onZoomChanged,\n ({ level }) => {\n reportedZoom = level;\n emit('update:zoom', level);\n },\n);\n\n// ── the overlay ────────────────────────────────────────────────────────────\n\n/**\n * The Stage's projector: anchored UI positions through the camera, from state\n * alone (no DOM reads). The visible pages are the binding's revision, so a\n * camera move updates the pages and every anchored element in the same render.\n */\nconst projector = computed((): ViewProjector | null => {\n const lens = stage.value;\n return lens ? stageViewProjector(() => lens) : null;\n});\nconst projectorBinding = computed((): ProjectorBinding | null =>\n projector.value ? { projector: projector.value, revision: pages.value } : null,\n);\n// The pages on screen, a new value only when a page comes or goes, so anchored\n// UI on the other pages sits out every camera frame.\nlet shownKey = '';\nconst shownPages = computed((previous?: ShownPages): ShownPages => {\n const key = pages.value.map((visiblePage) => visiblePage.ref.objectNumber).join(',');\n if (previous && key === shownKey) return previous;\n shownKey = key;\n return new Set(pages.value.map((visiblePage) => visiblePage.ref.objectNumber));\n});\n</script>\n\n<template>\n <div\n ref=\"element\"\n :style=\"{\n position: 'relative',\n overflow: 'hidden',\n touchAction: 'none',\n cursor: routesToHub ? hubCursor : undefined,\n }\"\n >\n <PageSurface\n v-for=\"visiblePage in pages\"\n :key=\"visiblePage.ref.objectNumber\"\n :document-id=\"documentId ?? ''\"\n :page=\"visiblePage\"\n :frame=\"frame\"\n :stage=\"stage!\"\n >\n <template #default=\"{ page }\">\n <slot name=\"page\" :page=\"page\" />\n </template>\n <template v-if=\"$slots['page-chrome']\" #chrome=\"{ page }\">\n <slot name=\"page-chrome\" :page=\"page\" />\n </template>\n </PageSurface>\n <!-- Anchored UI mounts here: its absolute coordinates are the view's. -->\n <AnchoredScope\n v-if=\"projectorBinding && $slots.overlay\"\n :binding=\"projectorBinding\"\n :shown=\"shownPages\"\n >\n <slot name=\"overlay\" />\n </AnchoredScope>\n </div>\n</template>\n","<!--\n <StageScope :token>: binds its content to a stage lens, so the stage\n composables and stage chrome inside use `token` unless they are handed one.\n-->\n<script setup lang=\"ts\">\nimport { provideStageToken } from './scope';\nimport type { StageTokenProp } from './scope';\n\nconst props = defineProps<{\n /** The lens: a second view's token, from `createCapabilityToken`. */\n token: StageTokenProp;\n}>();\n\ndefineSlots<{ default?(): unknown }>();\n\nprovideStageToken(() => props.token);\n</script>\n\n<template>\n <slot />\n</template>\n","<!--\n <Scrollbar>: a headless scrollbar for a Stage lens, a view of the lens's\n scroll metrics (the native scroller contract: scrollTop, scrollHeight,\n clientHeight, in screen px). Thumb drag with pointer capture and a kept grab\n point, track paging with press-and-hold repeat that stops at the pointer, a\n minimum thumb length on long documents, and overlay auto-hide. On an unbounded\n stage the range is the union of content and view, so the bar shrinks as you\n pan away; the mapping is frozen during a thumb drag so the thumb never chases\n itself.\n\n Geometry and behavior live here; looks live in your CSS, against\n [data-embedpdf-scrollbar][data-axis=\"y\"][data-state=\"visible|hidden\"]\n [data-embedpdf-scrollbar][data-dragging]\n [data-embedpdf-scrollbar-thumb]\n `class` and `style` go on the track, `thumb-class` and `thumb-style` on the\n thumb. Unstyled, it is a transparent track pinned to the view's edge with a\n `var(--epdf-scrollbar-thumb, …)` pill.\n-->\n<script setup lang=\"ts\">\nimport { computed, onUnmounted, ref, watch } from 'vue';\nimport type { CSSProperties, StyleValue } from 'vue';\nimport { createScrollbarPresses, paintDefault, scrollbarLayout } from '@embedpdf/web';\nimport type { ScrollbarTrack } from '@embedpdf/web';\nimport { useCapabilityRef } from '../runtime/capabilities';\nimport { asHost, useScrollMetricsValue } from './composables';\nimport { useStageToken } from './scope';\nimport type { StageTokenProp } from './scope';\n\nconst props = withDefaults(\n defineProps<{\n axis: 'x' | 'y';\n /** The stage lens to scroll: the nearest `<StageScope>` / `<Stage>`'s, else the main StageToken. */\n token?: StageTokenProp;\n /**\n * Overlay auto-hide: fade this many ms after the view stops moving (drags\n * and hover keep it visible; a hidden bar ignores the pointer, like macOS).\n * `false` keeps it visible. Published as `data-state=\"visible|hidden\"`.\n */\n autoHide?: number | false;\n /** Minimum thumb length in px, so the bar never vanishes on long documents. */\n minThumbSize?: number;\n /**\n * Pressing the track: 'page' steps by 90% of a view toward the pointer,\n * repeats while held, and stops when the thumb reaches the pointer; 'jump'\n * centres the thumb at the pointer and hands off to a drag.\n */\n trackPress?: 'page' | 'jump';\n /** The thumb's class. */\n thumbClass?: string;\n /** The thumb's style, over its defaults. */\n thumbStyle?: StyleValue;\n }>(),\n { autoHide: 1200, minThumbSize: 24, trackPress: 'page' },\n);\n\nconst token = useStageToken(() => props.token);\nconst stage = useCapabilityRef(computed(() => asHost(token.value)));\nconst metrics = useScrollMetricsValue(token);\nconst vertical = computed(() => props.axis === 'y');\nconst scrollable = computed(() =>\n vertical.value ? metrics.value.scrollableY : metrics.value.scrollableX,\n);\n\nconst track = ref<HTMLDivElement | null>(null);\nconst trackPx = ref(0);\nconst dragging = ref(false);\nconst hovered = ref(false);\n// The view moved recently.\nconst active = ref(true);\n\n// The thumb along the track: one formula for drawing, dragging and paging, shared with every framework.\nconst layout = computed(() =>\n scrollbarLayout(metrics.value, vertical.value, trackPx.value, props.minThumbSize),\n);\n\n// ── overlay auto-hide: any metrics change re-arms the fade ─────────────────\nconst hideAfter = computed(() => (props.autoHide === false ? 0 : props.autoHide));\nwatch(\n [metrics, hideAfter],\n ([, delay], _previous, onCleanup) => {\n if (!delay) return;\n active.value = true;\n const timer = setTimeout(() => (active.value = false), delay);\n onCleanup(() => clearTimeout(timer));\n },\n { immediate: true },\n);\nconst shown = computed(() => !hideAfter.value || active.value || hovered.value || dragging.value);\n\n// ── track measurement: the px mapping needs real geometry ─────────────────\nwatch(\n [track, vertical],\n ([element, isVertical], _previous, onCleanup) => {\n if (!element) return;\n const measure = () => {\n trackPx.value = isVertical ? element.clientHeight : element.clientWidth;\n };\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n measure();\n onCleanup(() => observer.disconnect());\n },\n { immediate: true, flush: 'post' },\n);\n\n// ── interactions: `@embedpdf/web`'s press handling (thumb drags, track paging\n// and jumps), handed the bar as it is now on every event. ──────────────────\nconst presses = createScrollbarPresses((value) => (dragging.value = value));\nconst pressedTrack = (): ScrollbarTrack => ({\n stage: stage.value,\n vertical: vertical.value,\n element: track.value!,\n layout: layout.value,\n // Fresh geometry for paging steps: read from the capability, never a stale render.\n liveLayout: () =>\n scrollbarLayout(\n stage.value.getScrollMetrics(),\n vertical.value,\n trackPx.value,\n props.minThumbSize,\n ),\n});\n\n// No repeat timer outlives the bar.\nonUnmounted(() => presses.release());\n\nconst trackStyle = computed(\n (): CSSProperties => ({\n ...(vertical.value\n ? { position: 'absolute', top: 0, right: 0, bottom: 0, width: '12px' }\n : { position: 'absolute', left: 0, right: 0, bottom: 0, height: '12px' }),\n touchAction: 'none',\n userSelect: 'none',\n opacity: shown.value ? 1 : 0,\n transition: 'opacity 200ms',\n // A hidden overlay bar must not eat the clicks under it.\n pointerEvents: shown.value ? 'auto' : 'none',\n }),\n);\nconst thumbDefaults = computed((): CSSProperties => {\n const { thumbPosition, thumbLength } = layout.value;\n return {\n ...(vertical.value\n ? {\n position: 'absolute',\n left: '2px',\n right: '2px',\n top: `${thumbPosition}px`,\n height: `${thumbLength}px`,\n }\n : {\n position: 'absolute',\n top: '2px',\n bottom: '2px',\n left: `${thumbPosition}px`,\n width: `${thumbLength}px`,\n }),\n borderRadius: '6px',\n background: paintDefault('scrollbar-thumb'),\n };\n});\n</script>\n\n<template>\n <div\n v-if=\"scrollable\"\n ref=\"track\"\n role=\"scrollbar\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"Math.round(layout.maxOffset)\"\n :aria-valuenow=\"Math.round(layout.offset)\"\n data-embedpdf-scrollbar=\"\"\n :data-axis=\"axis\"\n :data-state=\"shown ? 'visible' : 'hidden'\"\n :data-dragging=\"dragging ? '' : undefined\"\n :style=\"trackStyle\"\n @pointerdown=\"presses.pressTrack($event, pressedTrack(), trackPress)\"\n @pointermove=\"presses.move($event, pressedTrack())\"\n @pointerup=\"presses.release()\"\n @pointercancel=\"presses.release()\"\n @pointerenter=\"hovered = true\"\n @pointerleave=\"hovered = false\"\n >\n <div\n data-embedpdf-scrollbar-thumb=\"\"\n :class=\"thumbClass\"\n :style=\"[thumbDefaults, thumbStyle]\"\n @pointerdown=\"presses.pressThumb($event, pressedTrack())\"\n />\n </div>\n</template>\n"],"names":["useCapability","useStageToken","useCapabilityEvent","scope","useDocumentScope","useKernelValue","state","stageState","shallowEqual","fieldRefs","DEFAULT_SETTINGS","ref","useViewerSettings","computed","toPageRef","makePageContext","stagePageDemand","providePage","pageSurfaceLayout","pixelBox","paint","_createElementBlock","_normalizeStyle","_createElementVNode","_renderSlot","useOptionalCapability","InteractionToken","useDocumentId","provideStageToken","useOptionalSelector","NO_FRAME","watch","createStageSurface","createScrollHandler","InteractionPublicToken","stageViewProjector","_unref","_Fragment","_renderList","_createBlock","PageSurface","_withCtx","page","$slots","AnchoredScope","useCapabilityRef","scrollbarLayout","createScrollbarPresses","onUnmounted","paintDefault"],"mappings":"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"}
|