@stll/folio-core 0.0.1-placeholder.0 → 0.1.1
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 +202 -0
- package/NOTICE.md +29 -0
- package/README.md +41 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/ai-edits/apply.d.ts +35 -0
- package/dist/ai-edits/apply.js +683 -0
- package/dist/ai-edits/clean-text.d.ts +28 -0
- package/dist/ai-edits/clean-text.js +23 -0
- package/dist/ai-edits/headless.d.ts +225 -0
- package/dist/ai-edits/headless.js +513 -0
- package/dist/ai-edits/index.d.ts +6 -0
- package/dist/ai-edits/index.js +5 -0
- package/dist/ai-edits/inline-emphasis.d.ts +38 -0
- package/dist/ai-edits/inline-emphasis.js +78 -0
- package/dist/ai-edits/snapshot.d.ts +9 -0
- package/dist/ai-edits/snapshot.js +195 -0
- package/dist/ai-edits/types.d.ts +156 -0
- package/dist/ai-edits/types.js +0 -0
- package/dist/ai-edits/word-diff.d.ts +20 -0
- package/dist/ai-edits/word-diff.js +77 -0
- package/dist/ai-suggestions/apply.d.ts +17 -0
- package/dist/ai-suggestions/apply.js +64 -0
- package/dist/ai-suggestions/conflict.d.ts +22 -0
- package/dist/ai-suggestions/conflict.js +67 -0
- package/dist/ai-suggestions/text-positions.d.ts +21 -0
- package/dist/ai-suggestions/text-positions.js +48 -0
- package/dist/ai-suggestions/types.d.ts +199 -0
- package/dist/ai-suggestions/types.js +59 -0
- package/dist/content-controls/errors.d.ts +52 -0
- package/dist/content-controls/errors.js +36 -0
- package/dist/content-controls/findContentControls.d.ts +55 -0
- package/dist/content-controls/findContentControls.js +75 -0
- package/dist/content-controls/index.d.ts +4 -0
- package/dist/content-controls/index.js +4 -0
- package/dist/content-controls/mutateContentControls.d.ts +51 -0
- package/dist/content-controls/mutateContentControls.js +377 -0
- package/dist/controller/folioEditor.d.ts +21 -0
- package/dist/controller/folioEditor.js +29 -0
- package/dist/controller/folioEditorEvents.d.ts +23 -0
- package/dist/controller/folioEditorEvents.js +24 -0
- package/dist/controller/hiddenEditorApi.d.ts +35 -0
- package/dist/controller/hiddenEditorApi.js +112 -0
- package/dist/controller/hiddenEditorManager.d.ts +93 -0
- package/dist/controller/hiddenEditorManager.js +308 -0
- package/dist/controller/layoutPipeline.d.ts +63 -0
- package/dist/controller/layoutPipeline.js +406 -0
- package/dist/controller/layoutScheduler.d.ts +41 -0
- package/dist/controller/layoutScheduler.js +59 -0
- package/dist/controller/layoutSession.d.ts +24 -0
- package/dist/controller/layoutSession.js +13 -0
- package/dist/docx/blockContentParser.d.ts +13 -0
- package/dist/docx/blockContentParser.js +289 -0
- package/dist/docx/bookmarkParser.d.ts +178 -0
- package/dist/docx/bookmarkParser.js +246 -0
- package/dist/docx/bookmarkPlacement.d.ts +10 -0
- package/dist/docx/bookmarkPlacement.js +50 -0
- package/dist/docx/bulletMarkers.d.ts +4 -0
- package/dist/docx/bulletMarkers.js +42 -0
- package/dist/docx/commentParser.d.ts +34 -0
- package/dist/docx/commentParser.js +127 -0
- package/dist/docx/commentReferenceNormalization.d.ts +25 -0
- package/dist/docx/commentReferenceNormalization.js +97 -0
- package/dist/docx/commentReplyMarkers.d.ts +20 -0
- package/dist/docx/commentReplyMarkers.js +123 -0
- package/dist/docx/compatibility.d.ts +12 -0
- package/dist/docx/compatibility.js +77 -0
- package/dist/docx/documentParser.d.ts +65 -0
- package/dist/docx/documentParser.js +209 -0
- package/dist/docx/drawingUtils.d.ts +56 -0
- package/dist/docx/drawingUtils.js +305 -0
- package/dist/docx/fieldParser.d.ts +228 -0
- package/dist/docx/fieldParser.js +559 -0
- package/dist/docx/footnoteParser.d.ts +109 -0
- package/dist/docx/footnoteParser.js +270 -0
- package/dist/docx/headerFooterParser.d.ts +119 -0
- package/dist/docx/headerFooterParser.js +266 -0
- package/dist/docx/headerFooterRefParser.d.ts +22 -0
- package/dist/docx/headerFooterRefParser.js +52 -0
- package/dist/docx/headerFooterReferenceNormalization.d.ts +19 -0
- package/dist/docx/headerFooterReferenceNormalization.js +64 -0
- package/dist/docx/hyperlinkParser.d.ts +108 -0
- package/dist/docx/hyperlinkParser.js +230 -0
- package/dist/docx/imageParser.d.ts +93 -0
- package/dist/docx/imageParser.js +522 -0
- package/dist/docx/mathToMathml.d.ts +15 -0
- package/dist/docx/mathToMathml.js +357 -0
- package/dist/docx/modelValidation.d.ts +13 -0
- package/dist/docx/modelValidation.js +21 -0
- package/dist/docx/normalizeBaseDirection.d.ts +12 -0
- package/dist/docx/normalizeBaseDirection.js +81 -0
- package/dist/docx/notePropertiesParser.d.ts +16 -0
- package/dist/docx/notePropertiesParser.js +99 -0
- package/dist/docx/numberingParser.d.ts +86 -0
- package/dist/docx/numberingParser.js +735 -0
- package/dist/docx/numberingReferenceNormalization.d.ts +25 -0
- package/dist/docx/numberingReferenceNormalization.js +22 -0
- package/dist/docx/paragraphParser.d.ts +86 -0
- package/dist/docx/paragraphParser.js +1132 -0
- package/dist/docx/paragraphTraversal.d.ts +19 -0
- package/dist/docx/paragraphTraversal.js +76 -0
- package/dist/docx/parser.d.ts +67 -0
- package/dist/docx/parser.js +391 -0
- package/dist/docx/parserEnums.d.ts +45 -0
- package/dist/docx/parserEnums.js +70 -0
- package/dist/docx/relsParser.d.ts +160 -0
- package/dist/docx/relsParser.js +235 -0
- package/dist/docx/replyToComment.d.ts +29 -0
- package/dist/docx/replyToComment.js +73 -0
- package/dist/docx/rezip.d.ts +166 -0
- package/dist/docx/rezip.js +1194 -0
- package/dist/docx/runConsolidator.d.ts +57 -0
- package/dist/docx/runConsolidator.js +224 -0
- package/dist/docx/runParser.d.ts +78 -0
- package/dist/docx/runParser.js +661 -0
- package/dist/docx/sdtProperties.d.ts +15 -0
- package/dist/docx/sdtProperties.js +290 -0
- package/dist/docx/sdtPropertiesPatch.d.ts +16 -0
- package/dist/docx/sdtPropertiesPatch.js +144 -0
- package/dist/docx/sectionParser.d.ts +95 -0
- package/dist/docx/sectionParser.js +534 -0
- package/dist/docx/selectiveSave.d.ts +25 -0
- package/dist/docx/selectiveSave.js +247 -0
- package/dist/docx/selectiveSaveFlags.d.ts +33 -0
- package/dist/docx/selectiveSaveFlags.js +11 -0
- package/dist/docx/selectiveSaveTripwire.d.ts +33 -0
- package/dist/docx/selectiveSaveTripwire.js +79 -0
- package/dist/docx/selectiveXmlPatch.d.ts +103 -0
- package/dist/docx/selectiveXmlPatch.js +493 -0
- package/dist/docx/serializer/blockSdtSerializer.d.ts +6 -0
- package/dist/docx/serializer/blockSdtSerializer.js +88 -0
- package/dist/docx/serializer/borderSerializer.d.ts +25 -0
- package/dist/docx/serializer/borderSerializer.js +44 -0
- package/dist/docx/serializer/commentSerializer.d.ts +31 -0
- package/dist/docx/serializer/commentSerializer.js +184 -0
- package/dist/docx/serializer/documentSerializer.d.ts +65 -0
- package/dist/docx/serializer/documentSerializer.js +199 -0
- package/dist/docx/serializer/headerFooterSerializer.d.ts +12 -0
- package/dist/docx/serializer/headerFooterSerializer.js +84 -0
- package/dist/docx/serializer/noteSerializer.d.ts +19 -0
- package/dist/docx/serializer/noteSerializer.js +70 -0
- package/dist/docx/serializer/numberingSerializer.d.ts +12 -0
- package/dist/docx/serializer/numberingSerializer.js +93 -0
- package/dist/docx/serializer/paragraphSerializer.d.ts +48 -0
- package/dist/docx/serializer/paragraphSerializer.js +559 -0
- package/dist/docx/serializer/runSerializer.d.ts +56 -0
- package/dist/docx/serializer/runSerializer.js +621 -0
- package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +6 -0
- package/dist/docx/serializer/sectionPropertiesSerializer.js +187 -0
- package/dist/docx/serializer/tableSerializer.d.ts +79 -0
- package/dist/docx/serializer/tableSerializer.js +422 -0
- package/dist/docx/serializer/xmlUtils.d.ts +20 -0
- package/dist/docx/serializer/xmlUtils.js +25 -0
- package/dist/docx/settingsParser.d.ts +8 -0
- package/dist/docx/settingsParser.js +36 -0
- package/dist/docx/shapeParser.d.ts +20 -0
- package/dist/docx/shapeParser.js +272 -0
- package/dist/docx/styleParser.d.ts +50 -0
- package/dist/docx/styleParser.js +905 -0
- package/dist/docx/tableParser.d.ts +202 -0
- package/dist/docx/tableParser.js +811 -0
- package/dist/docx/textBoxParser.d.ts +117 -0
- package/dist/docx/textBoxParser.js +262 -0
- package/dist/docx/themeParser.d.ts +77 -0
- package/dist/docx/themeParser.js +330 -0
- package/dist/docx/trackedMoveRangeNormalization.d.ts +22 -0
- package/dist/docx/trackedMoveRangeNormalization.js +100 -0
- package/dist/docx/unzip.d.ts +118 -0
- package/dist/docx/unzip.js +383 -0
- package/dist/docx/vmlImageParser.d.ts +16 -0
- package/dist/docx/vmlImageParser.js +100 -0
- package/dist/docx/watermarkParser.d.ts +45 -0
- package/dist/docx/watermarkParser.js +348 -0
- package/dist/docx/wrapTypes.d.ts +29 -0
- package/dist/docx/wrapTypes.js +48 -0
- package/dist/docx/xmlParser.d.ts +297 -0
- package/dist/docx/xmlParser.js +527 -0
- package/dist/fields/bookmarkPages.d.ts +13 -0
- package/dist/fields/bookmarkPages.js +66 -0
- package/dist/fields/bookmarkText.d.ts +16 -0
- package/dist/fields/bookmarkText.js +61 -0
- package/dist/fields/evaluateField.d.ts +23 -0
- package/dist/fields/evaluateField.js +77 -0
- package/dist/fields/fieldContext.d.ts +21 -0
- package/dist/fields/fieldContext.js +0 -0
- package/dist/fields/resolveFieldValues.d.ts +44 -0
- package/dist/fields/resolveFieldValues.js +204 -0
- package/dist/fields/sectionPageCounts.d.ts +11 -0
- package/dist/fields/sectionPageCounts.js +16 -0
- package/dist/fields/seqValues.d.ts +14 -0
- package/dist/fields/seqValues.js +36 -0
- package/dist/fonts/embeddedFontTable.d.ts +42 -0
- package/dist/fonts/embeddedFontTable.js +80 -0
- package/dist/fonts/embeddedFonts.d.ts +46 -0
- package/dist/fonts/embeddedFonts.js +112 -0
- package/dist/fonts/fontDeobfuscation.d.ts +30 -0
- package/dist/fonts/fontDeobfuscation.js +57 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +23 -0
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +57 -0
- package/dist/layout-bridge/convert/footnoteLayout.js +316 -0
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +74 -0
- package/dist/layout-bridge/convert/headerFooterLayout.js +432 -0
- package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +36 -0
- package/dist/layout-bridge/convert/templatePreviewFlow.js +176 -0
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +65 -0
- package/dist/layout-bridge/convert/toFlowBlocks.js +1309 -0
- package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +17 -0
- package/dist/layout-bridge/convert/wrapEditorViewAsSurface.js +36 -0
- package/dist/layout-bridge/dom/clickToPositionDom.d.ts +66 -0
- package/dist/layout-bridge/dom/clickToPositionDom.js +304 -0
- package/dist/layout-bridge/dom/findBodyPmSpans.d.ts +7 -0
- package/dist/layout-bridge/dom/findBodyPmSpans.js +17 -0
- package/dist/layout-bridge/dom/findHfPmSpans.d.ts +62 -0
- package/dist/layout-bridge/dom/findHfPmSpans.js +197 -0
- package/dist/layout-bridge/engine/clickToPosition.d.ts +66 -0
- package/dist/layout-bridge/engine/clickToPosition.js +403 -0
- package/dist/layout-bridge/engine/hitTest.d.ts +135 -0
- package/dist/layout-bridge/engine/hitTest.js +375 -0
- package/dist/layout-bridge/engine/measuring/index.d.ts +10 -0
- package/dist/layout-bridge/engine/measuring/index.js +9 -0
- package/dist/layout-bridge/engine/selectionRects.d.ts +59 -0
- package/dist/layout-bridge/engine/selectionRects.js +485 -0
- package/dist/layout-bridge/engine/tableWidthUtils.d.ts +7 -0
- package/dist/layout-bridge/engine/tableWidthUtils.js +25 -0
- package/dist/layout-engine/index.d.ts +44 -0
- package/dist/layout-engine/index.js +691 -0
- package/dist/layout-engine/keep-together.d.ts +43 -0
- package/dist/layout-engine/keep-together.js +98 -0
- package/dist/layout-engine/layoutInstrumentation.d.ts +50 -0
- package/dist/layout-engine/layoutInstrumentation.js +43 -0
- package/dist/layout-engine/lineFlow.d.ts +8 -0
- package/dist/layout-engine/lineFlow.js +17 -0
- package/dist/layout-engine/measure/cache.d.ts +93 -0
- package/dist/layout-engine/measure/cache.js +245 -0
- package/dist/layout-engine/measure/clampFloatingWrapMargins.d.ts +20 -0
- package/dist/layout-engine/measure/clampFloatingWrapMargins.js +29 -0
- package/dist/layout-engine/measure/featureFlags.d.ts +44 -0
- package/dist/layout-engine/measure/featureFlags.js +19 -0
- package/dist/layout-engine/measure/floatingZones.d.ts +89 -0
- package/dist/layout-engine/measure/floatingZones.js +152 -0
- package/dist/layout-engine/measure/font-metrics.worker.d.ts +17 -0
- package/dist/layout-engine/measure/font-metrics.worker.js +104 -0
- package/dist/layout-engine/measure/index.d.ts +9 -0
- package/dist/layout-engine/measure/index.js +8 -0
- package/dist/layout-engine/measure/listMarkerWidth.d.ts +40 -0
- package/dist/layout-engine/measure/listMarkerWidth.js +76 -0
- package/dist/layout-engine/measure/measureBlocks.d.ts +25 -0
- package/dist/layout-engine/measure/measureBlocks.js +450 -0
- package/dist/layout-engine/measure/measureContainer.d.ts +24 -0
- package/dist/layout-engine/measure/measureContainer.js +280 -0
- package/dist/layout-engine/measure/measureHelpers.d.ts +82 -0
- package/dist/layout-engine/measure/measureHelpers.js +156 -0
- package/dist/layout-engine/measure/measureParagraph.d.ts +61 -0
- package/dist/layout-engine/measure/measureParagraph.js +724 -0
- package/dist/layout-engine/measure/measureProvider.d.ts +23 -0
- package/dist/layout-engine/measure/measureProvider.js +35 -0
- package/dist/layout-engine/measure/measureTypes.d.ts +61 -0
- package/dist/layout-engine/measure/measureTypes.js +0 -0
- package/dist/layout-engine/measure/measureWorker.d.ts +54 -0
- package/dist/layout-engine/measure/measureWorker.js +249 -0
- package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +88 -0
- package/dist/layout-engine/measure/measureWorkerProtocol.js +20 -0
- package/dist/layout-engine/measure/tableCellFloating.d.ts +26 -0
- package/dist/layout-engine/measure/tableCellFloating.js +99 -0
- package/dist/layout-engine/paginator.d.ts +84 -0
- package/dist/layout-engine/paginator.js +348 -0
- package/dist/layout-engine/paragraphFragmentRange.d.ts +9 -0
- package/dist/layout-engine/paragraphFragmentRange.js +40 -0
- package/dist/layout-engine/section-breaks.d.ts +78 -0
- package/dist/layout-engine/section-breaks.js +182 -0
- package/dist/layout-engine/tableRowBreak.d.ts +23 -0
- package/dist/layout-engine/tableRowBreak.js +147 -0
- package/dist/layout-engine/textBoxFlow.d.ts +50 -0
- package/dist/layout-engine/textBoxFlow.js +160 -0
- package/dist/layout-engine/types.d.ts +1031 -0
- package/dist/layout-engine/types.js +100 -0
- package/dist/layout-painter/documentColors.d.ts +4 -0
- package/dist/layout-painter/documentColors.js +40 -0
- package/dist/layout-painter/index.d.ts +110 -0
- package/dist/layout-painter/index.js +182 -0
- package/dist/layout-painter/registry/modules/image.d.ts +6 -0
- package/dist/layout-painter/registry/modules/image.js +17 -0
- package/dist/layout-painter/registry/modules/paragraph.d.ts +6 -0
- package/dist/layout-painter/registry/modules/paragraph.js +18 -0
- package/dist/layout-painter/registry/modules/table.d.ts +6 -0
- package/dist/layout-painter/registry/modules/table.js +16 -0
- package/dist/layout-painter/registry/modules/textBox.d.ts +6 -0
- package/dist/layout-painter/registry/modules/textBox.js +13 -0
- package/dist/layout-painter/registry/modules.d.ts +6 -0
- package/dist/layout-painter/registry/modules.js +26 -0
- package/dist/layout-painter/registry/registry.d.ts +24 -0
- package/dist/layout-painter/registry/registry.js +53 -0
- package/dist/layout-painter/registry/types.d.ts +61 -0
- package/dist/layout-painter/registry/types.js +0 -0
- package/dist/layout-painter/renderFragment.d.ts +32 -0
- package/dist/layout-painter/renderFragment.js +114 -0
- package/dist/layout-painter/renderImage.d.ts +88 -0
- package/dist/layout-painter/renderImage.js +130 -0
- package/dist/layout-painter/renderPage.d.ts +264 -0
- package/dist/layout-painter/renderPage.js +1795 -0
- package/dist/layout-painter/renderParagraph.d.ts +93 -0
- package/dist/layout-painter/renderParagraph.js +1300 -0
- package/dist/layout-painter/renderTable.d.ts +36 -0
- package/dist/layout-painter/renderTable.js +432 -0
- package/dist/layout-painter/renderTextBox.d.ts +22 -0
- package/dist/layout-painter/renderTextBox.js +67 -0
- package/dist/layout-painter/renderUtils.d.ts +42 -0
- package/dist/layout-painter/renderUtils.js +30 -0
- package/dist/layout-painter/renderWatermark.d.ts +16 -0
- package/dist/layout-painter/renderWatermark.js +61 -0
- package/dist/layout-painter/sdtBoundary.d.ts +6 -0
- package/dist/layout-painter/sdtBoundary.js +28 -0
- package/dist/managers/ContextMenuManager.d.ts +28 -0
- package/dist/managers/ContextMenuManager.js +48 -0
- package/dist/managers/DocumentLoaderManager.d.ts +47 -0
- package/dist/managers/DocumentLoaderManager.js +69 -0
- package/dist/managers/EditorModeManager.d.ts +28 -0
- package/dist/managers/EditorModeManager.js +50 -0
- package/dist/managers/ErrorManager.d.ts +26 -0
- package/dist/managers/ErrorManager.js +85 -0
- package/dist/managers/FindReplaceManager.d.ts +54 -0
- package/dist/managers/FindReplaceManager.js +104 -0
- package/dist/managers/HistoryManager.d.ts +92 -0
- package/dist/managers/HistoryManager.js +193 -0
- package/dist/managers/Subscribable.d.ts +34 -0
- package/dist/managers/Subscribable.js +46 -0
- package/dist/managers/TableSelectionManager.d.ts +74 -0
- package/dist/managers/TableSelectionManager.js +225 -0
- package/dist/managers/editorShortcuts.d.ts +42 -0
- package/dist/managers/editorShortcuts.js +60 -0
- package/dist/managers/types.d.ts +41 -0
- package/dist/managers/types.js +0 -0
- package/dist/markdown/annotations.d.ts +14 -0
- package/dist/markdown/annotations.js +42 -0
- package/dist/markdown/escape.d.ts +36 -0
- package/dist/markdown/escape.js +59 -0
- package/dist/markdown/fromMarkdown.d.ts +11 -0
- package/dist/markdown/fromMarkdown.js +223 -0
- package/dist/markdown/headings.d.ts +13 -0
- package/dist/markdown/headings.js +20 -0
- package/dist/markdown/images.d.ts +13 -0
- package/dist/markdown/images.js +63 -0
- package/dist/markdown/index.d.ts +18 -0
- package/dist/markdown/index.js +33 -0
- package/dist/markdown/internals.d.ts +15 -0
- package/dist/markdown/internals.js +35 -0
- package/dist/markdown/renderBlock.d.ts +7 -0
- package/dist/markdown/renderBlock.js +68 -0
- package/dist/markdown/renderParagraph.d.ts +11 -0
- package/dist/markdown/renderParagraph.js +64 -0
- package/dist/markdown/renderRuns.d.ts +11 -0
- package/dist/markdown/renderRuns.js +265 -0
- package/dist/markdown/renderTable.d.ts +8 -0
- package/dist/markdown/renderTable.js +229 -0
- package/dist/markdown/trailers.d.ts +13 -0
- package/dist/markdown/trailers.js +54 -0
- package/dist/markdown/types.d.ts +118 -0
- package/dist/markdown/types.js +0 -0
- package/dist/model.d.ts +13 -0
- package/dist/model.js +4 -0
- package/dist/paged-layout/LayoutSelectionGate.d.ts +80 -0
- package/dist/paged-layout/LayoutSelectionGate.js +131 -0
- package/dist/paged-layout/headerFooterMargins.d.ts +73 -0
- package/dist/paged-layout/headerFooterMargins.js +120 -0
- package/dist/paged-layout/hiddenEditorScroll.d.ts +4 -0
- package/dist/paged-layout/hiddenEditorScroll.js +4 -0
- package/dist/paged-layout/incrementalMeasure.d.ts +33 -0
- package/dist/paged-layout/incrementalMeasure.js +56 -0
- package/dist/paged-layout/rangeProjection.d.ts +51 -0
- package/dist/paged-layout/rangeProjection.js +153 -0
- package/dist/paged-layout/readOnlyEditAttempt.d.ts +5 -0
- package/dist/paged-layout/readOnlyEditAttempt.js +22 -0
- package/dist/paged-layout/scrollNavigation.d.ts +23 -0
- package/dist/paged-layout/scrollNavigation.js +31 -0
- package/dist/paged-layout/scrollPageInfo.d.ts +41 -0
- package/dist/paged-layout/scrollPageInfo.js +34 -0
- package/dist/paged-layout/scrollToPmPosition.d.ts +17 -0
- package/dist/paged-layout/scrollToPmPosition.js +95 -0
- package/dist/paged-layout/sectionBlockWidths.d.ts +35 -0
- package/dist/paged-layout/sectionBlockWidths.js +52 -0
- package/dist/paged-layout/sectionGeometry.d.ts +21 -0
- package/dist/paged-layout/sectionGeometry.js +36 -0
- package/dist/paged-layout/selectionViewportRect.d.ts +29 -0
- package/dist/paged-layout/selectionViewportRect.js +55 -0
- package/dist/paged-layout/tableColumnResize.d.ts +19 -0
- package/dist/paged-layout/tableColumnResize.js +28 -0
- package/dist/paged-layout/tableInsertButtonGeometry.d.ts +15 -0
- package/dist/paged-layout/tableInsertButtonGeometry.js +15 -0
- package/dist/paged-layout/transactionDirtyRange.d.ts +7 -0
- package/dist/paged-layout/transactionDirtyRange.js +27 -0
- package/dist/paged-layout/zoomScrollAnchor.d.ts +40 -0
- package/dist/paged-layout/zoomScrollAnchor.js +25 -0
- package/dist/prosemirror/attrs/index.d.ts +80 -0
- package/dist/prosemirror/attrs/index.js +1218 -0
- package/dist/prosemirror/autospacingBase.d.ts +11 -0
- package/dist/prosemirror/autospacingBase.js +16 -0
- package/dist/prosemirror/commands/comments.d.ts +93 -0
- package/dist/prosemirror/commands/comments.js +435 -0
- package/dist/prosemirror/commands/contentControls.d.ts +45 -0
- package/dist/prosemirror/commands/contentControls.js +294 -0
- package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +15 -0
- package/dist/prosemirror/commands/contentControlsBlockFill.js +19 -0
- package/dist/prosemirror/commands/formatPainter.d.ts +31 -0
- package/dist/prosemirror/commands/formatPainter.js +130 -0
- package/dist/prosemirror/commands/formatting.d.ts +32 -0
- package/dist/prosemirror/commands/formatting.js +45 -0
- package/dist/prosemirror/commands/hyperlink.d.ts +31 -0
- package/dist/prosemirror/commands/hyperlink.js +79 -0
- package/dist/prosemirror/commands/image.d.ts +59 -0
- package/dist/prosemirror/commands/image.js +219 -0
- package/dist/prosemirror/commands/index.d.ts +13 -0
- package/dist/prosemirror/commands/index.js +13 -0
- package/dist/prosemirror/commands/pageBreak.d.ts +10 -0
- package/dist/prosemirror/commands/pageBreak.js +47 -0
- package/dist/prosemirror/commands/paragraph.d.ts +39 -0
- package/dist/prosemirror/commands/paragraph.js +64 -0
- package/dist/prosemirror/commands/pastePlainText.d.ts +39 -0
- package/dist/prosemirror/commands/pastePlainText.js +67 -0
- package/dist/prosemirror/commands/table.d.ts +83 -0
- package/dist/prosemirror/commands/table.js +105 -0
- package/dist/prosemirror/conversion/fromProseDoc.d.ts +27 -0
- package/dist/prosemirror/conversion/fromProseDoc.js +1550 -0
- package/dist/prosemirror/conversion/index.d.ts +4 -0
- package/dist/prosemirror/conversion/index.js +4 -0
- package/dist/prosemirror/conversion/runShadingMark.d.ts +16 -0
- package/dist/prosemirror/conversion/runShadingMark.js +39 -0
- package/dist/prosemirror/conversion/toProseDoc.d.ts +39 -0
- package/dist/prosemirror/conversion/toProseDoc.js +1404 -0
- package/dist/prosemirror/extensions/ExtensionManager.d.ts +43 -0
- package/dist/prosemirror/extensions/ExtensionManager.js +86 -0
- package/dist/prosemirror/extensions/StarterKit.d.ts +16 -0
- package/dist/prosemirror/extensions/StarterKit.js +132 -0
- package/dist/prosemirror/extensions/core/DocExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/core/DocExtension.js +12 -0
- package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/core/HistoryExtension.js +28 -0
- package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +25 -0
- package/dist/prosemirror/extensions/core/ParagraphExtension.js +619 -0
- package/dist/prosemirror/extensions/core/TextExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/core/TextExtension.js +12 -0
- package/dist/prosemirror/extensions/create.d.ts +17 -0
- package/dist/prosemirror/extensions/create.js +129 -0
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +106 -0
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +8 -0
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +172 -0
- package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +16 -0
- package/dist/prosemirror/extensions/features/BidiShortcutExtension.js +38 -0
- package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +16 -0
- package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.js +21 -0
- package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/features/DropCursorExtension.js +20 -0
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +8 -0
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +44 -0
- package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +19 -0
- package/dist/prosemirror/extensions/features/GapCursorExtension.js +24 -0
- package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +15 -0
- package/dist/prosemirror/extensions/features/ImageDragExtension.js +66 -0
- package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/features/ImagePasteExtension.js +91 -0
- package/dist/prosemirror/extensions/features/ListExtension.d.ts +14 -0
- package/dist/prosemirror/extensions/features/ListExtension.js +340 -0
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +60 -0
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +35 -0
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +188 -0
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +20 -0
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +34 -0
- package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +20 -0
- package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.js +145 -0
- package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +10 -0
- package/dist/prosemirror/extensions/features/SelectionTrackerExtension.js +17 -0
- package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +31 -0
- package/dist/prosemirror/extensions/features/bidiShortcutController.js +27 -0
- package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +31 -0
- package/dist/prosemirror/extensions/features/pasteCleanup.js +159 -0
- package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/AllCapsExtension.js +24 -0
- package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/BoldExtension.js +41 -0
- package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +14 -0
- package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +64 -0
- package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/marks/CharacterStyleExtension.js +47 -0
- package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/marks/CommentExtension.js +38 -0
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +55 -0
- package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/FontSizeExtension.js +47 -0
- package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +11 -0
- package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +92 -0
- package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/marks/HiddenTextExtension.js +35 -0
- package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +10 -0
- package/dist/prosemirror/extensions/marks/HighlightExtension.js +115 -0
- package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +146 -0
- package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/ItalicExtension.js +34 -0
- package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/RtlExtension.js +21 -0
- package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +11 -0
- package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.js +75 -0
- package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/RunShadingExtension.js +38 -0
- package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SmallCapsExtension.js +24 -0
- package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/StrikeExtension.js +33 -0
- package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SubscriptExtension.js +25 -0
- package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SuperscriptExtension.js +25 -0
- package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/TextColorExtension.js +50 -0
- package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/TextEffectExtension.js +35 -0
- package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +31 -0
- package/dist/prosemirror/extensions/marks/TextEffectsExtensions.js +134 -0
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +22 -0
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +113 -0
- package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/UnderlineExtension.js +60 -0
- package/dist/prosemirror/extensions/marks/markUtils.d.ts +34 -0
- package/dist/prosemirror/extensions/marks/markUtils.js +233 -0
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +22 -0
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +122 -0
- package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/nodes/FieldExtension.js +87 -0
- package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/HardBreakExtension.js +38 -0
- package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.js +18 -0
- package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/ImageExtension.js +132 -0
- package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/nodes/MathExtension.js +56 -0
- package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/PageBreakExtension.js +20 -0
- package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/nodes/SdtExtension.js +107 -0
- package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +30 -0
- package/dist/prosemirror/extensions/nodes/ShapeExtension.js +502 -0
- package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/TabExtension.js +27 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +34 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.js +1972 -0
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +34 -0
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +150 -0
- package/dist/prosemirror/extensions/types.d.ts +101 -0
- package/dist/prosemirror/extensions/types.js +10 -0
- package/dist/prosemirror/findReplaceSelection.d.ts +23 -0
- package/dist/prosemirror/findReplaceSelection.js +86 -0
- package/dist/prosemirror/index.d.ts +25 -0
- package/dist/prosemirror/index.js +23 -0
- package/dist/prosemirror/insertOperations.d.ts +12 -0
- package/dist/prosemirror/insertOperations.js +19 -0
- package/dist/prosemirror/paragraphDirection.d.ts +42 -0
- package/dist/prosemirror/paragraphDirection.js +33 -0
- package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +40 -0
- package/dist/prosemirror/plugins/aiCitationDecorations.js +90 -0
- package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +42 -0
- package/dist/prosemirror/plugins/aiSuggestionDecorations.js +135 -0
- package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +60 -0
- package/dist/prosemirror/plugins/anonymizationDecorations.js +120 -0
- package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +123 -0
- package/dist/prosemirror/plugins/autocompleteSuggestion.js +283 -0
- package/dist/prosemirror/plugins/contentControlWidgets.d.ts +56 -0
- package/dist/prosemirror/plugins/contentControlWidgets.js +192 -0
- package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +37 -0
- package/dist/prosemirror/plugins/createDocScanPlugin.js +55 -0
- package/dist/prosemirror/plugins/documentStyles.d.ts +18 -0
- package/dist/prosemirror/plugins/documentStyles.js +46 -0
- package/dist/prosemirror/plugins/index.d.ts +3 -0
- package/dist/prosemirror/plugins/index.js +3 -0
- package/dist/prosemirror/plugins/pmTextScan.d.ts +19 -0
- package/dist/prosemirror/plugins/pmTextScan.js +39 -0
- package/dist/prosemirror/plugins/selectionTracker.d.ts +43 -0
- package/dist/prosemirror/plugins/selectionTracker.js +179 -0
- package/dist/prosemirror/plugins/suggestionMode.d.ts +70 -0
- package/dist/prosemirror/plugins/suggestionMode.js +489 -0
- package/dist/prosemirror/plugins/templateDirectives.d.ts +25 -0
- package/dist/prosemirror/plugins/templateDirectives.js +67 -0
- package/dist/prosemirror/plugins/templatePreviewValues.d.ts +49 -0
- package/dist/prosemirror/plugins/templatePreviewValues.js +117 -0
- package/dist/prosemirror/plugins/templateSlashMenu.d.ts +57 -0
- package/dist/prosemirror/plugins/templateSlashMenu.js +184 -0
- package/dist/prosemirror/schema/index.d.ts +15 -0
- package/dist/prosemirror/schema/index.js +20 -0
- package/dist/prosemirror/schema/marks.d.ts +118 -0
- package/dist/prosemirror/schema/marks.js +0 -0
- package/dist/prosemirror/schema/nodes.d.ts +389 -0
- package/dist/prosemirror/schema/nodes.js +0 -0
- package/dist/prosemirror/selectionState.d.ts +23 -0
- package/dist/prosemirror/selectionState.js +111 -0
- package/dist/prosemirror/styles/index.d.ts +2 -0
- package/dist/prosemirror/styles/index.js +2 -0
- package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +32 -0
- package/dist/prosemirror/styles/resolvedStyleAttrs.js +108 -0
- package/dist/prosemirror/styles/styleResolver.d.ts +94 -0
- package/dist/prosemirror/styles/styleResolver.js +200 -0
- package/dist/prosemirror/utils/findParagraphByParaId.d.ts +26 -0
- package/dist/prosemirror/utils/findParagraphByParaId.js +37 -0
- package/dist/prosemirror/utils/tabCalculator.d.ts +110 -0
- package/dist/prosemirror/utils/tabCalculator.js +137 -0
- package/dist/prosemirror/validation.d.ts +20 -0
- package/dist/prosemirror/validation.js +177 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +6 -0
- package/dist/style-engine/index.d.ts +3 -0
- package/dist/style-engine/index.js +2 -0
- package/dist/style-engine/styleEngine.d.ts +67 -0
- package/dist/style-engine/styleEngine.js +70 -0
- package/dist/types/block-id.d.ts +66 -0
- package/dist/types/block-id.js +73 -0
- package/dist/types/colors.d.ts +2 -0
- package/dist/types/colors.js +0 -0
- package/dist/types/content.d.ts +2 -0
- package/dist/types/content.js +0 -0
- package/dist/types/document.d.ts +7 -0
- package/dist/types/document.js +0 -0
- package/dist/types/documentEnumValues.d.ts +89 -0
- package/dist/types/documentEnumValues.js +693 -0
- package/dist/types/formatting.d.ts +2 -0
- package/dist/types/formatting.js +0 -0
- package/dist/types/index.d.ts +107 -0
- package/dist/types/index.js +0 -0
- package/dist/utils/authorColors.d.ts +16 -0
- package/dist/utils/authorColors.js +30 -0
- package/dist/utils/baseDirection.d.ts +23 -0
- package/dist/utils/baseDirection.js +34 -0
- package/dist/utils/clipboard.d.ts +126 -0
- package/dist/utils/clipboard.js +622 -0
- package/dist/utils/colorResolver.d.ts +158 -0
- package/dist/utils/colorResolver.js +557 -0
- package/dist/utils/createDocument.d.ts +50 -0
- package/dist/utils/createDocument.js +262 -0
- package/dist/utils/documentLoaderBehavior.d.ts +22 -0
- package/dist/utils/documentLoaderBehavior.js +14 -0
- package/dist/utils/docxInput.d.ts +22 -0
- package/dist/utils/docxInput.js +16 -0
- package/dist/utils/domGuards.d.ts +59 -0
- package/dist/utils/domGuards.js +82 -0
- package/dist/utils/fontFamilyMerge.d.ts +7 -0
- package/dist/utils/fontFamilyMerge.js +31 -0
- package/dist/utils/fontLoader.d.ts +50 -0
- package/dist/utils/fontLoader.js +177 -0
- package/dist/utils/fontResolver.d.ts +61 -0
- package/dist/utils/fontResolver.js +651 -0
- package/dist/utils/fontWeights.d.ts +4 -0
- package/dist/utils/fontWeights.js +4 -0
- package/dist/utils/formatToStyle.d.ts +103 -0
- package/dist/utils/formatToStyle.js +289 -0
- package/dist/utils/headerFooter.d.ts +74 -0
- package/dist/utils/headerFooter.js +257 -0
- package/dist/utils/headingCollector.d.ts +22 -0
- package/dist/utils/headingCollector.js +36 -0
- package/dist/utils/hexId.d.ts +33 -0
- package/dist/utils/hexId.js +37 -0
- package/dist/utils/imageValidation.d.ts +5 -0
- package/dist/utils/imageValidation.js +31 -0
- package/dist/utils/paragraphFormattingMerge.d.ts +14 -0
- package/dist/utils/paragraphFormattingMerge.js +68 -0
- package/dist/utils/replaceText.d.ts +17 -0
- package/dist/utils/replaceText.js +161 -0
- package/dist/utils/rotationBoundingBox.d.ts +12 -0
- package/dist/utils/rotationBoundingBox.js +36 -0
- package/dist/utils/scriptSegments.d.ts +36 -0
- package/dist/utils/scriptSegments.js +52 -0
- package/dist/utils/tableOperations.d.ts +87 -0
- package/dist/utils/tableOperations.js +259 -0
- package/dist/utils/textFormattingMerge.d.ts +6 -0
- package/dist/utils/textFormattingMerge.js +31 -0
- package/dist/utils/tiffConverter.d.ts +18 -0
- package/dist/utils/tiffConverter.js +83 -0
- package/dist/utils/units.d.ts +99 -0
- package/dist/utils/units.js +139 -0
- package/dist/utils/urlSecurity.d.ts +7 -0
- package/dist/utils/urlSecurity.js +65 -0
- package/dist/watermark/index.d.ts +39 -0
- package/dist/watermark/index.js +149 -0
- package/package.json +122 -2
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { resolveFontFamily } from "../utils/fontResolver.js";
|
|
2
|
+
//#region src/layout-painter/renderWatermark.ts
|
|
3
|
+
const WATERMARK_CLASS = "layout-page-watermark";
|
|
4
|
+
/**
|
|
5
|
+
* Build the watermark overlay element for a page. Returns `null` when
|
|
6
|
+
* the watermark is a picture without a resolved `imageSrc` (the
|
|
7
|
+
* relationship-id resolver lives outside the painter; without a src
|
|
8
|
+
* there's nothing visible to draw).
|
|
9
|
+
*/
|
|
10
|
+
function renderWatermarkLayer(watermark, page, doc, options = {}) {
|
|
11
|
+
if (watermark.kind === "picture" && !options.imageSrc) return null;
|
|
12
|
+
const layer = doc.createElement("div");
|
|
13
|
+
layer.className = WATERMARK_CLASS;
|
|
14
|
+
layer.style.position = "absolute";
|
|
15
|
+
layer.style.top = "0";
|
|
16
|
+
layer.style.left = "0";
|
|
17
|
+
layer.style.width = `${page.size.w}px`;
|
|
18
|
+
layer.style.height = `${page.size.h}px`;
|
|
19
|
+
layer.style.zIndex = "0";
|
|
20
|
+
layer.style.pointerEvents = "none";
|
|
21
|
+
layer.style.overflow = "hidden";
|
|
22
|
+
layer.style.display = "flex";
|
|
23
|
+
layer.style.alignItems = "center";
|
|
24
|
+
layer.style.justifyContent = "center";
|
|
25
|
+
if (watermark.kind === "text") layer.append(renderTextWatermark(watermark, doc));
|
|
26
|
+
else {
|
|
27
|
+
const imageSrc = options.imageSrc;
|
|
28
|
+
if (!imageSrc) return null;
|
|
29
|
+
layer.append(renderPictureWatermark(watermark, imageSrc, doc));
|
|
30
|
+
}
|
|
31
|
+
return layer;
|
|
32
|
+
}
|
|
33
|
+
function renderTextWatermark(watermark, doc) {
|
|
34
|
+
const el = doc.createElement("div");
|
|
35
|
+
el.textContent = watermark.text;
|
|
36
|
+
el.style.fontFamily = resolveFontFamily(watermark.font ?? "Calibri").cssFallback;
|
|
37
|
+
el.style.fontSize = "144px";
|
|
38
|
+
el.style.fontWeight = "bold";
|
|
39
|
+
el.style.whiteSpace = "nowrap";
|
|
40
|
+
const color = watermark.color && watermark.color !== "auto" ? `#${watermark.color}` : "#C0C0C0";
|
|
41
|
+
el.style.color = color;
|
|
42
|
+
el.style.opacity = String(watermark.opacity ?? .5);
|
|
43
|
+
const rotation = watermark.diagonal === false ? 0 : -45;
|
|
44
|
+
el.style.transform = `rotate(${rotation}deg)`;
|
|
45
|
+
el.style.transformOrigin = "center center";
|
|
46
|
+
return el;
|
|
47
|
+
}
|
|
48
|
+
function renderPictureWatermark(watermark, imageSrc, doc) {
|
|
49
|
+
const img = doc.createElement("img");
|
|
50
|
+
img.src = imageSrc;
|
|
51
|
+
img.alt = "";
|
|
52
|
+
img.setAttribute("aria-hidden", "true");
|
|
53
|
+
const scalePct = (watermark.scale ?? 1) * 100;
|
|
54
|
+
img.style.maxWidth = `${scalePct}%`;
|
|
55
|
+
img.style.maxHeight = `${scalePct}%`;
|
|
56
|
+
img.style.opacity = watermark.washout === false ? "1" : "0.4";
|
|
57
|
+
img.style.objectFit = "contain";
|
|
58
|
+
return img;
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { renderWatermarkLayer };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/layout-painter/sdtBoundary.ts
|
|
2
|
+
function applySdtDataAttrs(el, sdtGroups) {
|
|
3
|
+
if (!sdtGroups || sdtGroups.length === 0) return;
|
|
4
|
+
el.dataset["sdtBoundary"] = "true";
|
|
5
|
+
const innermost = sdtGroups.at(-1);
|
|
6
|
+
if (innermost) {
|
|
7
|
+
el.dataset["sdtId"] = innermost.id;
|
|
8
|
+
el.dataset["sdtPmPos"] = String(innermost.pmPos);
|
|
9
|
+
el.dataset["sdtType"] = innermost.sdtType;
|
|
10
|
+
if (innermost.position) el.dataset["sdtPosition"] = innermost.position;
|
|
11
|
+
if (innermost.alias) el.dataset["sdtAlias"] = innermost.alias;
|
|
12
|
+
if (innermost.tag) el.dataset["sdtTag"] = innermost.tag;
|
|
13
|
+
if (innermost.sdtId !== void 0) el.dataset["sdtOoxmlId"] = String(innermost.sdtId);
|
|
14
|
+
if (innermost.lock) el.dataset["sdtLock"] = innermost.lock;
|
|
15
|
+
if (innermost.showingPlaceholder) el.dataset["sdtShowingPlaceholder"] = "true";
|
|
16
|
+
if (innermost.checked !== void 0) el.dataset["sdtChecked"] = String(innermost.checked);
|
|
17
|
+
if (innermost.dateFormat) el.dataset["sdtDateFormat"] = innermost.dateFormat;
|
|
18
|
+
if (innermost.listItemsJson) el.dataset["sdtListItems"] = innermost.listItemsJson;
|
|
19
|
+
}
|
|
20
|
+
el.dataset["sdtStack"] = JSON.stringify(sdtGroups.map((g) => ({
|
|
21
|
+
id: g.id,
|
|
22
|
+
sdtType: g.sdtType,
|
|
23
|
+
tag: g.tag ?? null,
|
|
24
|
+
alias: g.alias ?? null
|
|
25
|
+
})));
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { applySdtDataAttrs };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Subscribable } from "./Subscribable.js";
|
|
2
|
+
import { ContextMenuAnchor, ContextMenuSnapshot } from "./types.js";
|
|
3
|
+
import { EditorState } from "prosemirror-state";
|
|
4
|
+
|
|
5
|
+
//#region src/managers/ContextMenuManager.d.ts
|
|
6
|
+
type OpenContextMenuOptions = {
|
|
7
|
+
/** Live editor state, or null when the editor view is not mounted. */state: EditorState | null;
|
|
8
|
+
/**
|
|
9
|
+
* For the PagedEditor child callback path, which already knows from a
|
|
10
|
+
* layout-overlay selection whether the user highlighted text. When omitted,
|
|
11
|
+
* `hasSelection` is derived from the ProseMirror selection.
|
|
12
|
+
*/
|
|
13
|
+
hasSelectionOverride?: boolean | undefined; /** Whether the cursor sits inside a tracked change (detected by the adapter). */
|
|
14
|
+
cursorInTrackedChange: boolean;
|
|
15
|
+
};
|
|
16
|
+
declare class ContextMenuManager extends Subscribable<ContextMenuSnapshot> {
|
|
17
|
+
constructor();
|
|
18
|
+
/** Open the menu at `anchor`, deriving menu flags from the editor state. */
|
|
19
|
+
openMenu(anchor: ContextMenuAnchor, {
|
|
20
|
+
state,
|
|
21
|
+
hasSelectionOverride,
|
|
22
|
+
cursorInTrackedChange
|
|
23
|
+
}: OpenContextMenuOptions): void;
|
|
24
|
+
/** Close the menu. */
|
|
25
|
+
closeMenu(): void;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { ContextMenuManager, OpenContextMenuOptions };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { isInTable as isInTableCell } from "../prosemirror/extensions/nodes/TableExtension.js";
|
|
2
|
+
import { Subscribable } from "./Subscribable.js";
|
|
3
|
+
//#region src/managers/ContextMenuManager.ts
|
|
4
|
+
const CLOSED_STATE = {
|
|
5
|
+
isOpen: false,
|
|
6
|
+
position: {
|
|
7
|
+
x: 0,
|
|
8
|
+
y: 0
|
|
9
|
+
},
|
|
10
|
+
hasSelection: false,
|
|
11
|
+
selectionRange: {
|
|
12
|
+
from: 0,
|
|
13
|
+
to: 0
|
|
14
|
+
},
|
|
15
|
+
cursorInTable: false,
|
|
16
|
+
cursorInTrackedChange: false
|
|
17
|
+
};
|
|
18
|
+
var ContextMenuManager = class extends Subscribable {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(CLOSED_STATE);
|
|
21
|
+
}
|
|
22
|
+
/** Open the menu at `anchor`, deriving menu flags from the editor state. */
|
|
23
|
+
openMenu(anchor, { state, hasSelectionOverride, cursorInTrackedChange }) {
|
|
24
|
+
const selection = state?.selection ?? {
|
|
25
|
+
from: 0,
|
|
26
|
+
to: 0
|
|
27
|
+
};
|
|
28
|
+
const hasSelection = hasSelectionOverride ?? selection.from !== selection.to;
|
|
29
|
+
const cursorInTable = state ? isInTableCell(state) : false;
|
|
30
|
+
this.setSnapshot({
|
|
31
|
+
isOpen: true,
|
|
32
|
+
position: anchor,
|
|
33
|
+
hasSelection,
|
|
34
|
+
selectionRange: {
|
|
35
|
+
from: selection.from,
|
|
36
|
+
to: selection.to
|
|
37
|
+
},
|
|
38
|
+
cursorInTable,
|
|
39
|
+
cursorInTrackedChange
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** Close the menu. */
|
|
43
|
+
closeMenu() {
|
|
44
|
+
this.setSnapshot(CLOSED_STATE);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { ContextMenuManager };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { document_d_exports } from "../types/document.js";
|
|
2
|
+
import { DocxCompatibility } from "../docx/compatibility.js";
|
|
3
|
+
import { DocxInput } from "../utils/docxInput.js";
|
|
4
|
+
|
|
5
|
+
//#region src/managers/DocumentLoaderManager.d.ts
|
|
6
|
+
type DocumentLoadState = {
|
|
7
|
+
status: "loading";
|
|
8
|
+
} | {
|
|
9
|
+
status: "ready";
|
|
10
|
+
} | {
|
|
11
|
+
status: "error";
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Minimal structural view of the editor history the loader drives. Declared
|
|
16
|
+
* here so core does not depend on the React `useHistory` return type.
|
|
17
|
+
*/
|
|
18
|
+
type DocumentLoaderHistory = {
|
|
19
|
+
/** The current document, or null before any load. */readonly state: document_d_exports.Document | null; /** Reset history to a freshly loaded document. */
|
|
20
|
+
reset: (document: document_d_exports.Document) => void;
|
|
21
|
+
};
|
|
22
|
+
type DocumentLoaderCallbacks = {
|
|
23
|
+
/** Editor history to reset/seed with the loaded document. */history: DocumentLoaderHistory; /** Called when an unrecoverable parse error occurs. */
|
|
24
|
+
onError: ((error: Error) => void) | undefined; /** Called after parsing to report whether editing can preserve fidelity. */
|
|
25
|
+
onCompatibilityChange: ((compatibility: DocxCompatibility) => void) | undefined; /** Clears UI state coupled to the previous document at the start of a load. */
|
|
26
|
+
onReset: () => void; /** Sets the document loading slice of editor state. */
|
|
27
|
+
setDocumentLoadState: (state: DocumentLoadState) => void;
|
|
28
|
+
};
|
|
29
|
+
declare class DocumentLoaderManager {
|
|
30
|
+
private loadGeneration;
|
|
31
|
+
private callbacks;
|
|
32
|
+
constructor(callbacks: DocumentLoaderCallbacks);
|
|
33
|
+
/** Re-bind the host callbacks (the adapter refreshes these every render). */
|
|
34
|
+
setCallbacks(callbacks: DocumentLoaderCallbacks): void;
|
|
35
|
+
/** Reset color/UI state coupled to the previous document. */
|
|
36
|
+
resetForNewDocument(): void;
|
|
37
|
+
/** Load an already-parsed document. */
|
|
38
|
+
loadParsedDocument(doc: document_d_exports.Document): void;
|
|
39
|
+
/**
|
|
40
|
+
* Parse and load a raw DOCX buffer. A monotonic generation counter discards
|
|
41
|
+
* the result (and any error) when a newer load started while this one was in
|
|
42
|
+
* flight.
|
|
43
|
+
*/
|
|
44
|
+
loadBuffer(buffer: DocxInput): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { DocumentLoadState, DocumentLoaderCallbacks, DocumentLoaderHistory, DocumentLoaderManager };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { resetAuthorColors } from "../utils/authorColors.js";
|
|
2
|
+
import { loadFontsWithMapping } from "../utils/fontLoader.js";
|
|
3
|
+
import { parseDocx } from "../docx/parser.js";
|
|
4
|
+
import { inspectDocxCompatibility } from "../docx/compatibility.js";
|
|
5
|
+
//#region src/managers/DocumentLoaderManager.ts
|
|
6
|
+
/**
|
|
7
|
+
* DocumentLoaderManager
|
|
8
|
+
*
|
|
9
|
+
* Framework-agnostic DOCX load/state orchestration, extracted from the React
|
|
10
|
+
* `useDocumentLoader` hook. Owns the monotonic load-generation counter that
|
|
11
|
+
* discards stale async loads and runs the parse → reset → history → fonts
|
|
12
|
+
* sequence. The pure load-source resolution lives in `documentLoaderBehavior`.
|
|
13
|
+
*
|
|
14
|
+
* The adapter keeps only React concerns: the prop-change effects, the original
|
|
15
|
+
* buffer ref, and the host callbacks (which it re-binds via `setCallbacks`).
|
|
16
|
+
*/
|
|
17
|
+
var DocumentLoaderManager = class {
|
|
18
|
+
loadGeneration = 0;
|
|
19
|
+
callbacks;
|
|
20
|
+
constructor(callbacks) {
|
|
21
|
+
this.callbacks = callbacks;
|
|
22
|
+
}
|
|
23
|
+
/** Re-bind the host callbacks (the adapter refreshes these every render). */
|
|
24
|
+
setCallbacks(callbacks) {
|
|
25
|
+
this.callbacks = callbacks;
|
|
26
|
+
}
|
|
27
|
+
/** Reset color/UI state coupled to the previous document. */
|
|
28
|
+
resetForNewDocument() {
|
|
29
|
+
resetAuthorColors();
|
|
30
|
+
this.callbacks.onReset();
|
|
31
|
+
}
|
|
32
|
+
/** Load an already-parsed document. */
|
|
33
|
+
loadParsedDocument(doc) {
|
|
34
|
+
const { history, onCompatibilityChange, setDocumentLoadState } = this.callbacks;
|
|
35
|
+
this.resetForNewDocument();
|
|
36
|
+
history.reset(doc);
|
|
37
|
+
onCompatibilityChange?.(inspectDocxCompatibility(doc));
|
|
38
|
+
setDocumentLoadState({ status: "ready" });
|
|
39
|
+
if (doc.requiredFonts && doc.requiredFonts.length > 0) loadFontsWithMapping(doc.requiredFonts).catch(() => void 0);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse and load a raw DOCX buffer. A monotonic generation counter discards
|
|
43
|
+
* the result (and any error) when a newer load started while this one was in
|
|
44
|
+
* flight.
|
|
45
|
+
*/
|
|
46
|
+
async loadBuffer(buffer) {
|
|
47
|
+
const { history, onError, setDocumentLoadState } = this.callbacks;
|
|
48
|
+
const generation = ++this.loadGeneration;
|
|
49
|
+
if (!(history.state !== null)) setDocumentLoadState({ status: "loading" });
|
|
50
|
+
try {
|
|
51
|
+
const doc = await parseDocx(buffer, {
|
|
52
|
+
detectVariables: false,
|
|
53
|
+
preloadFonts: false
|
|
54
|
+
});
|
|
55
|
+
if (this.loadGeneration !== generation) return;
|
|
56
|
+
this.loadParsedDocument(doc);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
if (this.loadGeneration !== generation) return;
|
|
59
|
+
const message = error instanceof Error ? error.message : "Failed to parse document";
|
|
60
|
+
setDocumentLoadState({
|
|
61
|
+
status: "error",
|
|
62
|
+
message
|
|
63
|
+
});
|
|
64
|
+
onError?.(error instanceof Error ? error : new Error(message));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { DocumentLoaderManager };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Subscribable } from "./Subscribable.js";
|
|
2
|
+
|
|
3
|
+
//#region src/managers/EditorModeManager.d.ts
|
|
4
|
+
/** Editor mode. Mirrors Google Docs editing/suggesting/viewing semantics. */
|
|
5
|
+
type EditorMode = "editing" | "suggesting" | "viewing";
|
|
6
|
+
/** How tracked changes render. Drives the display mode dropdown. */
|
|
7
|
+
declare const DISPLAY_MODES: readonly ["all-markup", "simple-markup", "no-markup", "original"];
|
|
8
|
+
type DisplayMode = (typeof DISPLAY_MODES)[number];
|
|
9
|
+
/** EditorModeManager snapshot. */
|
|
10
|
+
type EditorModeSnapshot = {
|
|
11
|
+
/** Uncontrolled internal editing mode (the host's controlled prop wins over this). */editingMode: EditorMode; /** Tracked-changes display mode (`all-markup` by default). */
|
|
12
|
+
displayMode: DisplayMode;
|
|
13
|
+
};
|
|
14
|
+
/** True when the host opts into read-only OR the mode is `"viewing"`. */
|
|
15
|
+
declare const isReadOnlyMode: (editingMode: EditorMode, readOnlyProp: boolean) => boolean;
|
|
16
|
+
/** True when the mode is `"suggesting"`. */
|
|
17
|
+
declare const isTrackChangesMode: (editingMode: EditorMode) => boolean;
|
|
18
|
+
/** The mode produced by toggling track changes between `"editing"` and `"suggesting"`. */
|
|
19
|
+
declare const toggledTrackChangesMode: (editingMode: EditorMode) => EditorMode;
|
|
20
|
+
declare class EditorModeManager extends Subscribable<EditorModeSnapshot> {
|
|
21
|
+
constructor(initialEditingMode: EditorMode);
|
|
22
|
+
/** Set the internal editing mode. */
|
|
23
|
+
setEditingMode(mode: EditorMode): void;
|
|
24
|
+
/** Set the tracked-changes display mode. */
|
|
25
|
+
setDisplayMode(mode: DisplayMode): void;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { DISPLAY_MODES, DisplayMode, EditorMode, EditorModeManager, EditorModeSnapshot, isReadOnlyMode, isTrackChangesMode, toggledTrackChangesMode };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Subscribable } from "./Subscribable.js";
|
|
2
|
+
//#region src/managers/EditorModeManager.ts
|
|
3
|
+
/**
|
|
4
|
+
* EditorModeManager
|
|
5
|
+
*
|
|
6
|
+
* Framework-agnostic store for the editor's mode state.
|
|
7
|
+
* Extracted from the React `useEditorMode` hook.
|
|
8
|
+
*
|
|
9
|
+
* Holds the uncontrolled internal editing mode and the tracked-changes display
|
|
10
|
+
* mode; the host adapter layers controlled-prop reconciliation on top. The
|
|
11
|
+
* mode derivations (read-only, track-changes, toggle target) are pure helpers
|
|
12
|
+
* so any adapter can compute them without the store.
|
|
13
|
+
*/
|
|
14
|
+
/** How tracked changes render. Drives the display mode dropdown. */
|
|
15
|
+
const DISPLAY_MODES = [
|
|
16
|
+
"all-markup",
|
|
17
|
+
"simple-markup",
|
|
18
|
+
"no-markup",
|
|
19
|
+
"original"
|
|
20
|
+
];
|
|
21
|
+
/** True when the host opts into read-only OR the mode is `"viewing"`. */
|
|
22
|
+
const isReadOnlyMode = (editingMode, readOnlyProp) => readOnlyProp || editingMode === "viewing";
|
|
23
|
+
/** True when the mode is `"suggesting"`. */
|
|
24
|
+
const isTrackChangesMode = (editingMode) => editingMode === "suggesting";
|
|
25
|
+
/** The mode produced by toggling track changes between `"editing"` and `"suggesting"`. */
|
|
26
|
+
const toggledTrackChangesMode = (editingMode) => isTrackChangesMode(editingMode) ? "editing" : "suggesting";
|
|
27
|
+
var EditorModeManager = class extends Subscribable {
|
|
28
|
+
constructor(initialEditingMode) {
|
|
29
|
+
super({
|
|
30
|
+
editingMode: initialEditingMode,
|
|
31
|
+
displayMode: "all-markup"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** Set the internal editing mode. */
|
|
35
|
+
setEditingMode(mode) {
|
|
36
|
+
this.setSnapshot({
|
|
37
|
+
...this.getSnapshot(),
|
|
38
|
+
editingMode: mode
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Set the tracked-changes display mode. */
|
|
42
|
+
setDisplayMode(mode) {
|
|
43
|
+
this.setSnapshot({
|
|
44
|
+
...this.getSnapshot(),
|
|
45
|
+
displayMode: mode
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
//#endregion
|
|
50
|
+
export { DISPLAY_MODES, EditorModeManager, isReadOnlyMode, isTrackChangesMode, toggledTrackChangesMode };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Subscribable } from "./Subscribable.js";
|
|
2
|
+
import { ErrorManagerSnapshot } from "./types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/managers/ErrorManager.d.ts
|
|
5
|
+
declare class ErrorManager extends Subscribable<ErrorManagerSnapshot> {
|
|
6
|
+
private notifications;
|
|
7
|
+
private idCounter;
|
|
8
|
+
private readonly timers;
|
|
9
|
+
constructor();
|
|
10
|
+
/** Show an error notification (persistent, not auto-dismissed). */
|
|
11
|
+
showError(message: string, details?: string): string;
|
|
12
|
+
/** Show a warning notification (auto-dismissed after 5s). */
|
|
13
|
+
showWarning(message: string, details?: string): string;
|
|
14
|
+
/** Show an info notification (auto-dismissed after 5s). */
|
|
15
|
+
showInfo(message: string, details?: string): string;
|
|
16
|
+
/** Dismiss a notification by ID. */
|
|
17
|
+
dismiss(id: string): void;
|
|
18
|
+
/** Clear all notifications and cancel pending timers. */
|
|
19
|
+
clearAll(): void;
|
|
20
|
+
/** Destroy the manager and clean up all timers. */
|
|
21
|
+
destroy(): void;
|
|
22
|
+
private addNotification;
|
|
23
|
+
private emitSnapshot;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ErrorManager };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Subscribable } from "./Subscribable.js";
|
|
2
|
+
//#region src/managers/ErrorManager.ts
|
|
3
|
+
/**
|
|
4
|
+
* ErrorManager
|
|
5
|
+
*
|
|
6
|
+
* Framework-agnostic pub/sub error notification system.
|
|
7
|
+
* Replaces React's `componentDidCatch` + context pattern for error notifications.
|
|
8
|
+
*
|
|
9
|
+
* Usage with React:
|
|
10
|
+
* ```ts
|
|
11
|
+
* const { notifications } = useSyncExternalStore(manager.subscribe, manager.getSnapshot);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
var ErrorManager = class extends Subscribable {
|
|
15
|
+
notifications = [];
|
|
16
|
+
idCounter = 0;
|
|
17
|
+
timers = /* @__PURE__ */ new Set();
|
|
18
|
+
constructor() {
|
|
19
|
+
super({ notifications: [] });
|
|
20
|
+
}
|
|
21
|
+
/** Show an error notification (persistent, not auto-dismissed). */
|
|
22
|
+
showError(message, details) {
|
|
23
|
+
return this.addNotification(message, "error", details);
|
|
24
|
+
}
|
|
25
|
+
/** Show a warning notification (auto-dismissed after 5s). */
|
|
26
|
+
showWarning(message, details) {
|
|
27
|
+
return this.addNotification(message, "warning", details);
|
|
28
|
+
}
|
|
29
|
+
/** Show an info notification (auto-dismissed after 5s). */
|
|
30
|
+
showInfo(message, details) {
|
|
31
|
+
return this.addNotification(message, "info", details);
|
|
32
|
+
}
|
|
33
|
+
/** Dismiss a notification by ID. */
|
|
34
|
+
dismiss(id) {
|
|
35
|
+
this.notifications = this.notifications.map((n) => n.id === id ? {
|
|
36
|
+
...n,
|
|
37
|
+
dismissed: true
|
|
38
|
+
} : n);
|
|
39
|
+
this.emitSnapshot();
|
|
40
|
+
const timer = setTimeout(() => {
|
|
41
|
+
this.timers.delete(timer);
|
|
42
|
+
this.notifications = this.notifications.filter((n) => n.id !== id);
|
|
43
|
+
this.emitSnapshot();
|
|
44
|
+
}, 300);
|
|
45
|
+
this.timers.add(timer);
|
|
46
|
+
}
|
|
47
|
+
/** Clear all notifications and cancel pending timers. */
|
|
48
|
+
clearAll() {
|
|
49
|
+
this.notifications = [];
|
|
50
|
+
for (const timer of this.timers) clearTimeout(timer);
|
|
51
|
+
this.timers.clear();
|
|
52
|
+
this.emitSnapshot();
|
|
53
|
+
}
|
|
54
|
+
/** Destroy the manager and clean up all timers. */
|
|
55
|
+
destroy() {
|
|
56
|
+
for (const timer of this.timers) clearTimeout(timer);
|
|
57
|
+
this.timers.clear();
|
|
58
|
+
this.notifications = [];
|
|
59
|
+
}
|
|
60
|
+
addNotification(message, severity, details) {
|
|
61
|
+
const id = `error-${++this.idCounter}-${Date.now()}`;
|
|
62
|
+
const notification = {
|
|
63
|
+
id,
|
|
64
|
+
message,
|
|
65
|
+
severity,
|
|
66
|
+
...details !== void 0 ? { details } : {},
|
|
67
|
+
timestamp: Date.now()
|
|
68
|
+
};
|
|
69
|
+
this.notifications = [...this.notifications, notification];
|
|
70
|
+
this.emitSnapshot();
|
|
71
|
+
if (severity !== "error") {
|
|
72
|
+
const timer = setTimeout(() => {
|
|
73
|
+
this.timers.delete(timer);
|
|
74
|
+
this.dismiss(id);
|
|
75
|
+
}, 5e3);
|
|
76
|
+
this.timers.add(timer);
|
|
77
|
+
}
|
|
78
|
+
return id;
|
|
79
|
+
}
|
|
80
|
+
emitSnapshot() {
|
|
81
|
+
this.setSnapshot({ notifications: this.notifications });
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
//#endregion
|
|
85
|
+
export { ErrorManager };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { document_d_exports } from "../types/document.js";
|
|
2
|
+
import { FindMatchPosition } from "../prosemirror/findReplaceSelection.js";
|
|
3
|
+
|
|
4
|
+
//#region src/managers/FindReplaceManager.d.ts
|
|
5
|
+
type FindDirection = "next" | "previous";
|
|
6
|
+
type FindReplaceResult<TMatch> = {
|
|
7
|
+
matches: TMatch[];
|
|
8
|
+
totalCount: number;
|
|
9
|
+
currentIndex: number;
|
|
10
|
+
};
|
|
11
|
+
type ReplaceAllOutcome = {
|
|
12
|
+
document: document_d_exports.Document;
|
|
13
|
+
replacedCount: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The cursor index after stepping `direction` over `totalCount` matches,
|
|
17
|
+
* wrapping at both ends. Returns 0 when there are no matches.
|
|
18
|
+
*/
|
|
19
|
+
declare const getAdjacentFindIndex: (currentIndex: number, totalCount: number, direction: FindDirection) => number;
|
|
20
|
+
declare class FindReplaceManager<TMatch extends FindMatchPosition> {
|
|
21
|
+
private result;
|
|
22
|
+
/** The active find result, or null when there is no active search. */
|
|
23
|
+
getResult(): FindReplaceResult<TMatch> | null;
|
|
24
|
+
/** Discard the active search. */
|
|
25
|
+
clear(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Store a fresh set of matches as the active result, with the cursor on the
|
|
28
|
+
* first match. The result is kept even when `matches` is empty so callers can
|
|
29
|
+
* surface a "no results" state.
|
|
30
|
+
*/
|
|
31
|
+
setMatches(matches: TMatch[]): FindReplaceResult<TMatch>;
|
|
32
|
+
/**
|
|
33
|
+
* Step the cursor and return the now-current match with its index, or null
|
|
34
|
+
* when there are no matches to navigate.
|
|
35
|
+
*/
|
|
36
|
+
navigate(direction: FindDirection): {
|
|
37
|
+
match: TMatch;
|
|
38
|
+
index: number;
|
|
39
|
+
} | null;
|
|
40
|
+
/**
|
|
41
|
+
* Replace the current match's text. Returns the new document, or null when
|
|
42
|
+
* there is no current match or the replace fails.
|
|
43
|
+
*/
|
|
44
|
+
replaceCurrent(document: document_d_exports.Document, replaceText: string): document_d_exports.Document | null;
|
|
45
|
+
/**
|
|
46
|
+
* Replace every match. Matches are replaced from the end of the document
|
|
47
|
+
* backwards so earlier offsets stay valid as the text shifts. Clears the
|
|
48
|
+
* active result and returns the new document plus the match count, or null
|
|
49
|
+
* when there is nothing to replace.
|
|
50
|
+
*/
|
|
51
|
+
replaceAll(document: document_d_exports.Document, matches: readonly TMatch[], replaceText: string): ReplaceAllOutcome | null;
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { FindDirection, FindReplaceManager, FindReplaceResult, ReplaceAllOutcome, getAdjacentFindIndex };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { replaceTextInDocument } from "../utils/replaceText.js";
|
|
2
|
+
//#region src/managers/FindReplaceManager.ts
|
|
3
|
+
/**
|
|
4
|
+
* The cursor index after stepping `direction` over `totalCount` matches,
|
|
5
|
+
* wrapping at both ends. Returns 0 when there are no matches.
|
|
6
|
+
*/
|
|
7
|
+
const getAdjacentFindIndex = (currentIndex, totalCount, direction) => {
|
|
8
|
+
if (totalCount <= 0) return 0;
|
|
9
|
+
if (direction === "previous") return currentIndex === 0 ? totalCount - 1 : currentIndex - 1;
|
|
10
|
+
return (currentIndex + 1) % totalCount;
|
|
11
|
+
};
|
|
12
|
+
const toReplaceRange = (match) => ({
|
|
13
|
+
start: {
|
|
14
|
+
paragraphIndex: match.paragraphIndex,
|
|
15
|
+
offset: match.startOffset
|
|
16
|
+
},
|
|
17
|
+
end: {
|
|
18
|
+
paragraphIndex: match.paragraphIndex,
|
|
19
|
+
offset: match.endOffset
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var FindReplaceManager = class {
|
|
23
|
+
result = null;
|
|
24
|
+
/** The active find result, or null when there is no active search. */
|
|
25
|
+
getResult() {
|
|
26
|
+
return this.result;
|
|
27
|
+
}
|
|
28
|
+
/** Discard the active search. */
|
|
29
|
+
clear() {
|
|
30
|
+
this.result = null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Store a fresh set of matches as the active result, with the cursor on the
|
|
34
|
+
* first match. The result is kept even when `matches` is empty so callers can
|
|
35
|
+
* surface a "no results" state.
|
|
36
|
+
*/
|
|
37
|
+
setMatches(matches) {
|
|
38
|
+
this.result = {
|
|
39
|
+
matches,
|
|
40
|
+
totalCount: matches.length,
|
|
41
|
+
currentIndex: 0
|
|
42
|
+
};
|
|
43
|
+
return this.result;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Step the cursor and return the now-current match with its index, or null
|
|
47
|
+
* when there are no matches to navigate.
|
|
48
|
+
*/
|
|
49
|
+
navigate(direction) {
|
|
50
|
+
const result = this.result;
|
|
51
|
+
if (!result || result.matches.length === 0) return null;
|
|
52
|
+
const index = getAdjacentFindIndex(result.currentIndex, result.matches.length, direction);
|
|
53
|
+
this.result = {
|
|
54
|
+
...result,
|
|
55
|
+
currentIndex: index
|
|
56
|
+
};
|
|
57
|
+
const match = result.matches[index];
|
|
58
|
+
return match ? {
|
|
59
|
+
match,
|
|
60
|
+
index
|
|
61
|
+
} : null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Replace the current match's text. Returns the new document, or null when
|
|
65
|
+
* there is no current match or the replace fails.
|
|
66
|
+
*/
|
|
67
|
+
replaceCurrent(document, replaceText) {
|
|
68
|
+
const result = this.result;
|
|
69
|
+
if (!result || result.matches.length === 0) return null;
|
|
70
|
+
const match = result.matches[result.currentIndex];
|
|
71
|
+
if (!match) return null;
|
|
72
|
+
try {
|
|
73
|
+
return replaceTextInDocument(document, toReplaceRange(match), replaceText);
|
|
74
|
+
} catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Replace every match. Matches are replaced from the end of the document
|
|
80
|
+
* backwards so earlier offsets stay valid as the text shifts. Clears the
|
|
81
|
+
* active result and returns the new document plus the match count, or null
|
|
82
|
+
* when there is nothing to replace.
|
|
83
|
+
*/
|
|
84
|
+
replaceAll(document, matches, replaceText) {
|
|
85
|
+
if (matches.length === 0) return null;
|
|
86
|
+
const sortedMatches = [...matches].toSorted((a, b) => {
|
|
87
|
+
if (a.paragraphIndex !== b.paragraphIndex) return b.paragraphIndex - a.paragraphIndex;
|
|
88
|
+
return b.startOffset - a.startOffset;
|
|
89
|
+
});
|
|
90
|
+
let nextDocument = document;
|
|
91
|
+
for (const match of sortedMatches) try {
|
|
92
|
+
nextDocument = replaceTextInDocument(nextDocument, toReplaceRange(match), replaceText);
|
|
93
|
+
} catch {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
this.result = null;
|
|
97
|
+
return {
|
|
98
|
+
document: nextDocument,
|
|
99
|
+
replacedCount: matches.length
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
export { FindReplaceManager, getAdjacentFindIndex };
|