@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,100 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { isFloatingWrapType, isWrapNone } from "../docx/wrapTypes.js";
|
|
3
|
+
//#region src/layout-engine/types.ts
|
|
4
|
+
var types_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
+
DEFAULT_TEXTBOX_MARGINS: () => DEFAULT_TEXTBOX_MARGINS,
|
|
6
|
+
DEFAULT_TEXTBOX_WIDTH: () => 200,
|
|
7
|
+
FOOTNOTE_ENTRY_MARGIN_BOTTOM: () => 0,
|
|
8
|
+
FOOTNOTE_FALLBACK_LINE_HEIGHT: () => 13,
|
|
9
|
+
FOOTNOTE_SEPARATOR_HEIGHT: () => 12,
|
|
10
|
+
floatingTextBoxReservesBand: () => floatingTextBoxReservesBand,
|
|
11
|
+
floatingTextBoxWrapsText: () => floatingTextBoxWrapsText,
|
|
12
|
+
isFloatingImageRun: () => isFloatingImageRun,
|
|
13
|
+
isFloatingTextBoxBlock: () => isFloatingTextBoxBlock,
|
|
14
|
+
isTextWrappingFloatingImageRun: () => isTextWrappingFloatingImageRun
|
|
15
|
+
});
|
|
16
|
+
/** Default internal margins for text boxes (OOXML defaults in pixels) */
|
|
17
|
+
const DEFAULT_TEXTBOX_MARGINS = {
|
|
18
|
+
top: 4,
|
|
19
|
+
bottom: 4,
|
|
20
|
+
left: 7,
|
|
21
|
+
right: 7
|
|
22
|
+
};
|
|
23
|
+
/** Default text box width in pixels when no width is specified */
|
|
24
|
+
const DEFAULT_TEXTBOX_WIDTH = 200;
|
|
25
|
+
/**
|
|
26
|
+
* Height of the horizontal separator line drawn above the footnote stack.
|
|
27
|
+
* Used by the paginator when reserving space and by the painter when laying
|
|
28
|
+
* out the stack at the bottom of the page.
|
|
29
|
+
*/
|
|
30
|
+
const FOOTNOTE_SEPARATOR_HEIGHT = 12;
|
|
31
|
+
/**
|
|
32
|
+
* Extra bottom margin applied to every rendered footnote entry, in CSS pixels.
|
|
33
|
+
*
|
|
34
|
+
* Word footnotes are separate paragraphs in the footnote story, so their
|
|
35
|
+
* own paragraph spacing already describes the vertical gap between notes.
|
|
36
|
+
* Keep the wrapper margin at zero to avoid adding whitespace that is not
|
|
37
|
+
* present in the source DOCX.
|
|
38
|
+
*/
|
|
39
|
+
const FOOTNOTE_ENTRY_MARGIN_BOTTOM = 0;
|
|
40
|
+
/**
|
|
41
|
+
* Line height used when a footnote entry has no measured line height yet.
|
|
42
|
+
* Conservative fallback so a missing measure does not collapse the entry.
|
|
43
|
+
*/
|
|
44
|
+
const FOOTNOTE_FALLBACK_LINE_HEIGHT = 13;
|
|
45
|
+
/**
|
|
46
|
+
* `true` when the image run is anchored at page-level coordinates instead of
|
|
47
|
+
* participating in inline flow. Covers the OOXML floating wrap types
|
|
48
|
+
* (`square`, `tight`, `through`, `behind`, `inFront`) and the legacy
|
|
49
|
+
* `displayMode === "float"` escape hatch used by ProseMirror nodes that
|
|
50
|
+
* pre-date the wrap-type round-trip.
|
|
51
|
+
*
|
|
52
|
+
* Pure predicate over `ImageRun` — no DOM, no measurement state. Lives here
|
|
53
|
+
* so the bridge can call it without importing from the painter.
|
|
54
|
+
*/
|
|
55
|
+
const isFloatingImageRun = (run) => {
|
|
56
|
+
const wrapType = run.wrapType;
|
|
57
|
+
if (wrapType === "square" || wrapType === "tight" || wrapType === "through" || wrapType === "behind" || wrapType === "inFront") return true;
|
|
58
|
+
return run.displayMode === "float";
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* `true` when a floating image should also shrink surrounding line widths.
|
|
62
|
+
* `behind` / `inFront` (wrapNone) and `topAndBottom` do not — text either
|
|
63
|
+
* paints over/under them or flows above/below as a block — only
|
|
64
|
+
* `square` / `tight` / `through` carve a horizontal exclusion. The legacy
|
|
65
|
+
* `displayMode === "float"` path is treated as wrapping when a CSS float
|
|
66
|
+
* direction is set.
|
|
67
|
+
*/
|
|
68
|
+
const isTextWrappingFloatingImageRun = (run) => {
|
|
69
|
+
const wrapType = run.wrapType;
|
|
70
|
+
if (wrapType === "behind" || wrapType === "inFront" || wrapType === "topAndBottom") return false;
|
|
71
|
+
if (wrapType === "square" || wrapType === "tight" || wrapType === "through") return true;
|
|
72
|
+
return run.displayMode === "float" && run.cssFloat !== "none";
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* `true` when the text box is anchored outside normal block flow — either
|
|
76
|
+
* via the `float` display mode or via an OOXML floating wrap type (which
|
|
77
|
+
* includes `topAndBottom`; see {@link floatingTextBoxReservesBand}).
|
|
78
|
+
*/
|
|
79
|
+
function isFloatingTextBoxBlock(block) {
|
|
80
|
+
return block.displayMode === "float" || isFloatingWrapType(block.wrapType);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `true` when a floating text box should also reduce surrounding text
|
|
84
|
+
* line widths. Excludes wrapNone (`behind`/`inFront`) and `topAndBottom`
|
|
85
|
+
* which are positioned floats but do not carve a horizontal exclusion.
|
|
86
|
+
*/
|
|
87
|
+
function floatingTextBoxWrapsText(block) {
|
|
88
|
+
return isFloatingTextBoxBlock(block) && !isWrapNone(block.wrapType) && block.wrapType !== "topAndBottom";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* `true` when a floating text box reserves a full-width vertical band rather
|
|
92
|
+
* than a side exclusion. `topAndBottom` boxes break the text above and below
|
|
93
|
+
* the box (no text beside it), so surrounding lines flow past the band.
|
|
94
|
+
* Ported from eigenpal #694.
|
|
95
|
+
*/
|
|
96
|
+
function floatingTextBoxReservesBand(block) {
|
|
97
|
+
return isFloatingTextBoxBlock(block) && block.wrapType === "topAndBottom";
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { DEFAULT_TEXTBOX_MARGINS, DEFAULT_TEXTBOX_WIDTH, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, floatingTextBoxReservesBand, floatingTextBoxWrapsText, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun, types_exports };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/layout-painter/documentColors.ts
|
|
2
|
+
const HEX_COLOR_RE = /^#?[0-9a-f]{6}$/iu;
|
|
3
|
+
const BLACK_TEXT_COLOR = "#000000";
|
|
4
|
+
const WHITE_TEXT_COLOR = "#FFFFFF";
|
|
5
|
+
const BLACK_LUMINANCE = 0;
|
|
6
|
+
const WHITE_LUMINANCE = 1;
|
|
7
|
+
const CONTRAST_OFFSET = .05;
|
|
8
|
+
function normalizeHexColor(color) {
|
|
9
|
+
const trimmed = color.trim();
|
|
10
|
+
if (!HEX_COLOR_RE.test(trimmed)) return null;
|
|
11
|
+
return `#${trimmed.replace(/^#/u, "").toUpperCase()}`;
|
|
12
|
+
}
|
|
13
|
+
function relativeLuminance(hexColor) {
|
|
14
|
+
const normalized = normalizeHexColor(hexColor);
|
|
15
|
+
if (!normalized) return null;
|
|
16
|
+
const hex = normalized.slice(1);
|
|
17
|
+
const [red, green, blue] = [
|
|
18
|
+
0,
|
|
19
|
+
2,
|
|
20
|
+
4
|
|
21
|
+
].map((offset) => {
|
|
22
|
+
const value = Number.parseInt(hex.slice(offset, offset + 2), 16) / 255;
|
|
23
|
+
return value <= .03928 ? value / 12.92 : ((value + .055) / 1.055) ** 2.4;
|
|
24
|
+
});
|
|
25
|
+
if (red === void 0 || green === void 0 || blue === void 0) return null;
|
|
26
|
+
return .2126 * red + .7152 * green + .0722 * blue;
|
|
27
|
+
}
|
|
28
|
+
function contrastRatio(luminanceA, luminanceB) {
|
|
29
|
+
const lighter = Math.max(luminanceA, luminanceB);
|
|
30
|
+
const darker = Math.min(luminanceA, luminanceB);
|
|
31
|
+
return (lighter + CONTRAST_OFFSET) / (darker + CONTRAST_OFFSET);
|
|
32
|
+
}
|
|
33
|
+
function getAutomaticTextColorForBackground(backgroundColor) {
|
|
34
|
+
if (!backgroundColor) return;
|
|
35
|
+
const luminance = relativeLuminance(backgroundColor);
|
|
36
|
+
if (luminance === null) return;
|
|
37
|
+
return contrastRatio(luminance, BLACK_LUMINANCE) >= contrastRatio(luminance, WHITE_LUMINANCE) ? BLACK_TEXT_COLOR : WHITE_TEXT_COLOR;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { getAutomaticTextColorForBackground };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { FlowBlock, Layout, Measure } from "../layout-engine/types.js";
|
|
2
|
+
import { RenderContext } from "./renderUtils.js";
|
|
3
|
+
import { BlockFor, FeatureDispatchInput, FeatureFallback, FeatureModule, FeatureRenderInput, FragmentFor, MeasureFor } from "./registry/types.js";
|
|
4
|
+
import { FeatureRegistry, createFeatureRegistry } from "./registry/registry.js";
|
|
5
|
+
import { FRAGMENT_CLASS_NAMES, renderFragment } from "./renderFragment.js";
|
|
6
|
+
import { IMAGE_CLASS_NAMES, renderImageFragment } from "./renderImage.js";
|
|
7
|
+
import { renderPage, renderPages } from "./renderPage.js";
|
|
8
|
+
import { renderLine, renderParagraphFragment, sliceRunsForLine } from "./renderParagraph.js";
|
|
9
|
+
import { TABLE_CLASS_NAMES, renderTableFragment } from "./renderTable.js";
|
|
10
|
+
import { TEXTBOX_CLASS_NAMES, renderTextBoxFragment } from "./renderTextBox.js";
|
|
11
|
+
import { createDefaultRegistry } from "./registry/modules.js";
|
|
12
|
+
|
|
13
|
+
//#region src/layout-painter/index.d.ts
|
|
14
|
+
/**
|
|
15
|
+
* Block lookup entry for painter
|
|
16
|
+
*/
|
|
17
|
+
type BlockLookupEntry = {
|
|
18
|
+
block: FlowBlock;
|
|
19
|
+
measure: Measure;
|
|
20
|
+
version?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Block lookup map type
|
|
24
|
+
*/
|
|
25
|
+
type BlockLookup = Map<string, BlockLookupEntry>;
|
|
26
|
+
/**
|
|
27
|
+
* Painter options
|
|
28
|
+
*/
|
|
29
|
+
type PainterOptions = {
|
|
30
|
+
/** Document to create elements in */document?: Document; /** Gap between pages in pixels */
|
|
31
|
+
pageGap?: number; /** Show page shadows */
|
|
32
|
+
showShadow?: boolean; /** Background color for pages */
|
|
33
|
+
pageBackground?: string; /** Container background color */
|
|
34
|
+
containerBackground?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Optional custom feature registry. Defaults to `createDefaultRegistry()`.
|
|
37
|
+
* Pass a custom registry to swap or extend renderers without subclassing
|
|
38
|
+
* `LayoutPainter`.
|
|
39
|
+
*/
|
|
40
|
+
registry?: FeatureRegistry;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Layout Painter class
|
|
44
|
+
*
|
|
45
|
+
* Renders Layout data to DOM with efficient reconciliation.
|
|
46
|
+
* Only updates changed pages and fragments for better performance.
|
|
47
|
+
*/
|
|
48
|
+
declare class LayoutPainter {
|
|
49
|
+
private container;
|
|
50
|
+
private blockLookup;
|
|
51
|
+
private pageStates;
|
|
52
|
+
private totalPages;
|
|
53
|
+
private readonly options;
|
|
54
|
+
private readonly doc;
|
|
55
|
+
private readonly registry;
|
|
56
|
+
constructor(options?: PainterOptions);
|
|
57
|
+
/**
|
|
58
|
+
* Set the block lookup map for rendering fragments
|
|
59
|
+
*/
|
|
60
|
+
setBlockLookup(lookup: BlockLookup): void;
|
|
61
|
+
/**
|
|
62
|
+
* Mount the painter to a container element
|
|
63
|
+
*/
|
|
64
|
+
mount(container: HTMLElement): void;
|
|
65
|
+
/**
|
|
66
|
+
* Unmount the painter
|
|
67
|
+
*/
|
|
68
|
+
unmount(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Apply styles to the container
|
|
71
|
+
*/
|
|
72
|
+
private applyContainerStyles;
|
|
73
|
+
/**
|
|
74
|
+
* Paint a layout to the container
|
|
75
|
+
*/
|
|
76
|
+
paint(layout: Layout): void;
|
|
77
|
+
/**
|
|
78
|
+
* Render a page using block lookup for full fragment rendering
|
|
79
|
+
*/
|
|
80
|
+
private renderPageWithLookup;
|
|
81
|
+
/**
|
|
82
|
+
* Render a fragment via the feature-module registry. Dispatch is O(1)
|
|
83
|
+
* keyed on `fragment.kind`; modules supply the actual render. Fragments
|
|
84
|
+
* without a resolved block/measure or with an unregistered kind fall
|
|
85
|
+
* back to the placeholder renderer (`renderFragment`).
|
|
86
|
+
*/
|
|
87
|
+
private renderFragmentWithLookup;
|
|
88
|
+
/**
|
|
89
|
+
* Apply positioning styles to a fragment element
|
|
90
|
+
*/
|
|
91
|
+
private applyFragmentPosition;
|
|
92
|
+
/**
|
|
93
|
+
* Get the current page count
|
|
94
|
+
*/
|
|
95
|
+
getPageCount(): number;
|
|
96
|
+
/**
|
|
97
|
+
* Get a page element by index
|
|
98
|
+
*/
|
|
99
|
+
getPageElement(index: number): HTMLElement | null;
|
|
100
|
+
/**
|
|
101
|
+
* Scroll to a specific page
|
|
102
|
+
*/
|
|
103
|
+
scrollToPage(pageNumber: number): void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create a new LayoutPainter instance
|
|
107
|
+
*/
|
|
108
|
+
declare function createPainter(options?: PainterOptions): LayoutPainter;
|
|
109
|
+
//#endregion
|
|
110
|
+
export { type BlockFor, BlockLookup, BlockLookupEntry, FRAGMENT_CLASS_NAMES, type FeatureDispatchInput, type FeatureFallback, type FeatureModule, type FeatureRegistry, type FeatureRenderInput, type FragmentFor, IMAGE_CLASS_NAMES, LayoutPainter, type MeasureFor, PainterOptions, type RenderContext, TABLE_CLASS_NAMES, TEXTBOX_CLASS_NAMES, createDefaultRegistry, createFeatureRegistry, createPainter, renderFragment, renderImageFragment, renderLine, renderPage, renderPages, renderParagraphFragment, renderTableFragment, renderTextBoxFragment, sliceRunsForLine };
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { FRAGMENT_CLASS_NAMES, renderFragment } from "./renderFragment.js";
|
|
2
|
+
import { IMAGE_CLASS_NAMES, renderImageFragment } from "./renderImage.js";
|
|
3
|
+
import { renderLine, renderParagraphFragment, sliceRunsForLine } from "./renderParagraph.js";
|
|
4
|
+
import { TABLE_CLASS_NAMES, renderTableFragment } from "./renderTable.js";
|
|
5
|
+
import { TEXTBOX_CLASS_NAMES, renderTextBoxFragment } from "./renderTextBox.js";
|
|
6
|
+
import { renderPage, renderPages } from "./renderPage.js";
|
|
7
|
+
import { prefersReducedMotionBehavior } from "../paged-layout/scrollNavigation.js";
|
|
8
|
+
import { createFeatureRegistry } from "./registry/registry.js";
|
|
9
|
+
import { createDefaultRegistry } from "./registry/modules.js";
|
|
10
|
+
import { panic } from "better-result";
|
|
11
|
+
//#region src/layout-painter/index.ts
|
|
12
|
+
/**
|
|
13
|
+
* Layout Painter
|
|
14
|
+
*
|
|
15
|
+
* Main entry point for rendering Layout data to DOM.
|
|
16
|
+
* Provides reconciliation for efficient incremental updates.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Layout Painter class
|
|
20
|
+
*
|
|
21
|
+
* Renders Layout data to DOM with efficient reconciliation.
|
|
22
|
+
* Only updates changed pages and fragments for better performance.
|
|
23
|
+
*/
|
|
24
|
+
var LayoutPainter = class {
|
|
25
|
+
container = null;
|
|
26
|
+
blockLookup = /* @__PURE__ */ new Map();
|
|
27
|
+
pageStates = [];
|
|
28
|
+
totalPages = 0;
|
|
29
|
+
options;
|
|
30
|
+
doc;
|
|
31
|
+
registry;
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
this.options = options;
|
|
34
|
+
this.doc = options.document ?? document;
|
|
35
|
+
this.registry = options.registry ?? createDefaultRegistry();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the block lookup map for rendering fragments
|
|
39
|
+
*/
|
|
40
|
+
setBlockLookup(lookup) {
|
|
41
|
+
this.blockLookup = lookup;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Mount the painter to a container element
|
|
45
|
+
*/
|
|
46
|
+
mount(container) {
|
|
47
|
+
this.container = container;
|
|
48
|
+
this.applyContainerStyles();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Unmount the painter
|
|
52
|
+
*/
|
|
53
|
+
unmount() {
|
|
54
|
+
if (this.container) this.container.innerHTML = "";
|
|
55
|
+
this.container = null;
|
|
56
|
+
this.pageStates = [];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Apply styles to the container
|
|
60
|
+
*/
|
|
61
|
+
applyContainerStyles() {
|
|
62
|
+
if (!this.container) return;
|
|
63
|
+
const pageGap = this.options.pageGap ?? 24;
|
|
64
|
+
this.container.style.display = "flex";
|
|
65
|
+
this.container.style.flexDirection = "column";
|
|
66
|
+
this.container.style.alignItems = "center";
|
|
67
|
+
this.container.style.gap = `${pageGap}px`;
|
|
68
|
+
this.container.style.padding = `${pageGap}px`;
|
|
69
|
+
this.container.style.backgroundColor = this.options.containerBackground ?? "var(--doc-bg, #f8f9fa)";
|
|
70
|
+
this.container.style.minHeight = "100%";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Paint a layout to the container
|
|
74
|
+
*/
|
|
75
|
+
paint(layout) {
|
|
76
|
+
if (!this.container) panic("LayoutPainter: not mounted");
|
|
77
|
+
const { pages } = layout;
|
|
78
|
+
this.totalPages = pages.length;
|
|
79
|
+
this.container.innerHTML = "";
|
|
80
|
+
this.pageStates = [];
|
|
81
|
+
for (const i_item of pages) {
|
|
82
|
+
const page = i_item;
|
|
83
|
+
const context = {
|
|
84
|
+
pageNumber: page.number,
|
|
85
|
+
totalPages: this.totalPages,
|
|
86
|
+
section: "body"
|
|
87
|
+
};
|
|
88
|
+
const pageEl = this.renderPageWithLookup(page, context);
|
|
89
|
+
this.container.append(pageEl);
|
|
90
|
+
this.pageStates.push({
|
|
91
|
+
element: pageEl,
|
|
92
|
+
pageNumber: page.number,
|
|
93
|
+
fragmentCount: page.fragments.length
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Render a page using block lookup for full fragment rendering
|
|
99
|
+
*/
|
|
100
|
+
renderPageWithLookup(page, context) {
|
|
101
|
+
const pageEl = this.doc.createElement("div");
|
|
102
|
+
pageEl.className = "layout-page";
|
|
103
|
+
pageEl.dataset["pageNumber"] = String(page.number);
|
|
104
|
+
pageEl.style.position = "relative";
|
|
105
|
+
pageEl.style.width = `${page.size.w}px`;
|
|
106
|
+
pageEl.style.height = `${page.size.h}px`;
|
|
107
|
+
pageEl.style.backgroundColor = this.options.pageBackground ?? "var(--doc-canvas, #ffffff)";
|
|
108
|
+
pageEl.style.color = "var(--doc-canvas-text, #1f2937)";
|
|
109
|
+
pageEl.style.overflow = "hidden";
|
|
110
|
+
const contentEl = this.doc.createElement("div");
|
|
111
|
+
contentEl.className = "layout-page-content";
|
|
112
|
+
contentEl.style.position = "absolute";
|
|
113
|
+
contentEl.style.top = `${page.margins.top}px`;
|
|
114
|
+
contentEl.style.left = `${page.margins.left}px`;
|
|
115
|
+
contentEl.style.right = `${page.margins.right}px`;
|
|
116
|
+
contentEl.style.bottom = `${page.margins.bottom}px`;
|
|
117
|
+
contentEl.style.overflow = "visible";
|
|
118
|
+
for (const fragment of page.fragments) {
|
|
119
|
+
const fragmentEl = this.renderFragmentWithLookup(fragment, context);
|
|
120
|
+
this.applyFragmentPosition(fragmentEl, fragment);
|
|
121
|
+
contentEl.append(fragmentEl);
|
|
122
|
+
}
|
|
123
|
+
pageEl.append(contentEl);
|
|
124
|
+
return pageEl;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Render a fragment via the feature-module registry. Dispatch is O(1)
|
|
128
|
+
* keyed on `fragment.kind`; modules supply the actual render. Fragments
|
|
129
|
+
* without a resolved block/measure or with an unregistered kind fall
|
|
130
|
+
* back to the placeholder renderer (`renderFragment`).
|
|
131
|
+
*/
|
|
132
|
+
renderFragmentWithLookup(fragment, context) {
|
|
133
|
+
const lookup = this.blockLookup.get(String(fragment.blockId));
|
|
134
|
+
return this.registry.render({
|
|
135
|
+
fragment,
|
|
136
|
+
block: lookup?.block,
|
|
137
|
+
measure: lookup?.measure,
|
|
138
|
+
context,
|
|
139
|
+
doc: this.doc
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Apply positioning styles to a fragment element
|
|
144
|
+
*/
|
|
145
|
+
applyFragmentPosition(element, fragment) {
|
|
146
|
+
element.style.position = "absolute";
|
|
147
|
+
element.style.left = `${fragment.x}px`;
|
|
148
|
+
element.style.top = `${fragment.y}px`;
|
|
149
|
+
element.style.width = `${fragment.width}px`;
|
|
150
|
+
element.style.height = `${fragment.height}px`;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get the current page count
|
|
154
|
+
*/
|
|
155
|
+
getPageCount() {
|
|
156
|
+
return this.totalPages;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get a page element by index
|
|
160
|
+
*/
|
|
161
|
+
getPageElement(index) {
|
|
162
|
+
return this.pageStates[index]?.element ?? null;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Scroll to a specific page
|
|
166
|
+
*/
|
|
167
|
+
scrollToPage(pageNumber) {
|
|
168
|
+
const state = this.pageStates.find((s) => s.pageNumber === pageNumber);
|
|
169
|
+
if (state?.element) state.element.scrollIntoView({
|
|
170
|
+
behavior: prefersReducedMotionBehavior(),
|
|
171
|
+
block: "start"
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Create a new LayoutPainter instance
|
|
177
|
+
*/
|
|
178
|
+
function createPainter(options) {
|
|
179
|
+
return new LayoutPainter(options);
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
export { FRAGMENT_CLASS_NAMES, IMAGE_CLASS_NAMES, LayoutPainter, TABLE_CLASS_NAMES, TEXTBOX_CLASS_NAMES, createDefaultRegistry, createFeatureRegistry, createPainter, renderFragment, renderImageFragment, renderLine, renderPage, renderPages, renderParagraphFragment, renderTableFragment, renderTextBoxFragment, sliceRunsForLine };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { renderImageFragment } from "../../renderImage.js";
|
|
2
|
+
//#region src/layout-painter/registry/modules/image.ts
|
|
3
|
+
/**
|
|
4
|
+
* Image feature module — renders `ImageFragment`.
|
|
5
|
+
*
|
|
6
|
+
* Thin wrapper over `renderImageFragment`. Kept as a module so the
|
|
7
|
+
* registry can dispatch image fragments uniformly and so future
|
|
8
|
+
* variants (e.g. SVG, EMF preview) can plug in alongside.
|
|
9
|
+
*/
|
|
10
|
+
const imageModule = {
|
|
11
|
+
kind: "image",
|
|
12
|
+
render({ fragment, block, measure, context, doc }) {
|
|
13
|
+
return renderImageFragment(fragment, block, measure, context, { document: doc });
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { imageModule };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { renderParagraphFragment } from "../../renderParagraph.js";
|
|
2
|
+
//#region src/layout-painter/registry/modules/paragraph.ts
|
|
3
|
+
/**
|
|
4
|
+
* Paragraph feature module — wraps `renderParagraphFragment`.
|
|
5
|
+
*
|
|
6
|
+
* The paragraph orchestrator is intentionally still monolithic: it dispatches
|
|
7
|
+
* paragraph-internal kinds (runs, fields, inline images, hyperlinks). Future
|
|
8
|
+
* work can split that into a sub-registry without changing this module's
|
|
9
|
+
* external contract.
|
|
10
|
+
*/
|
|
11
|
+
const paragraphModule = {
|
|
12
|
+
kind: "paragraph",
|
|
13
|
+
render({ fragment, block, measure, context, doc }) {
|
|
14
|
+
return renderParagraphFragment(fragment, block, measure, context, { document: doc });
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { paragraphModule };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { renderTableFragment } from "../../renderTable.js";
|
|
2
|
+
//#region src/layout-painter/registry/modules/table.ts
|
|
3
|
+
/**
|
|
4
|
+
* Table feature module — wraps `renderTableFragment`.
|
|
5
|
+
*
|
|
6
|
+
* Like paragraph, the table orchestrator still owns row/cell rendering.
|
|
7
|
+
* Splitting cell-level renderers into a sub-registry is future work.
|
|
8
|
+
*/
|
|
9
|
+
const tableModule = {
|
|
10
|
+
kind: "table",
|
|
11
|
+
render({ fragment, block, measure, context, doc }) {
|
|
12
|
+
return renderTableFragment(fragment, block, measure, context, { document: doc });
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { tableModule };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { renderTextBoxFragment } from "../../renderTextBox.js";
|
|
2
|
+
//#region src/layout-painter/registry/modules/textBox.ts
|
|
3
|
+
/**
|
|
4
|
+
* Text-box feature module — renders `TextBoxFragment`.
|
|
5
|
+
*/
|
|
6
|
+
const textBoxModule = {
|
|
7
|
+
kind: "textBox",
|
|
8
|
+
render({ fragment, block, measure, context, doc }) {
|
|
9
|
+
return renderTextBoxFragment(fragment, block, measure, context, { document: doc });
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { textBoxModule };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { imageModule } from "./modules/image.js";
|
|
2
|
+
import { paragraphModule } from "./modules/paragraph.js";
|
|
3
|
+
import { tableModule } from "./modules/table.js";
|
|
4
|
+
import { textBoxModule } from "./modules/textBox.js";
|
|
5
|
+
import { createFeatureRegistry } from "./registry.js";
|
|
6
|
+
//#region src/layout-painter/registry/modules.ts
|
|
7
|
+
/**
|
|
8
|
+
* Default feature-module registry.
|
|
9
|
+
*
|
|
10
|
+
* To add a new OOXML renderer:
|
|
11
|
+
* 1. Create `modules/<kind>.ts` exporting a `FeatureModule<"...">`.
|
|
12
|
+
* 2. Add one import + `register(...)` line below.
|
|
13
|
+
*
|
|
14
|
+
* Discovery is explicit (not glob-based) so register lines are greppable
|
|
15
|
+
* and tree-shaking stays deterministic.
|
|
16
|
+
*/
|
|
17
|
+
function createDefaultRegistry() {
|
|
18
|
+
const registry = createFeatureRegistry();
|
|
19
|
+
registry.register(paragraphModule);
|
|
20
|
+
registry.register(tableModule);
|
|
21
|
+
registry.register(imageModule);
|
|
22
|
+
registry.register(textBoxModule);
|
|
23
|
+
return registry;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { createDefaultRegistry };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Fragment } from "../../layout-engine/types.js";
|
|
2
|
+
import { FeatureDispatchInput, FeatureFallback, FeatureModule } from "./types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/layout-painter/registry/registry.d.ts
|
|
5
|
+
type FeatureRegistry = {
|
|
6
|
+
register: <TKind extends Fragment["kind"]>(mod: FeatureModule<TKind>) => void;
|
|
7
|
+
get: <TKind extends Fragment["kind"]>(kind: TKind) => FeatureModule<TKind> | undefined;
|
|
8
|
+
has: (kind: Fragment["kind"]) => boolean;
|
|
9
|
+
render: (input: FeatureDispatchInput) => HTMLElement;
|
|
10
|
+
};
|
|
11
|
+
type CreateFeatureRegistryOptions = {
|
|
12
|
+
/**
|
|
13
|
+
* Hook for unknown kinds and fragments with no resolved block/measure.
|
|
14
|
+
* Defaults to the placeholder renderer in `renderFragment.ts`.
|
|
15
|
+
*/
|
|
16
|
+
fallback?: FeatureFallback;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Build a new feature registry. Callers register modules, then dispatch via
|
|
20
|
+
* `render()`. The registry never mutates module objects.
|
|
21
|
+
*/
|
|
22
|
+
declare function createFeatureRegistry(options?: CreateFeatureRegistryOptions): FeatureRegistry;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { CreateFeatureRegistryOptions, FeatureRegistry, createFeatureRegistry };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { renderFragment } from "../renderFragment.js";
|
|
2
|
+
import { panic } from "better-result";
|
|
3
|
+
//#region src/layout-painter/registry/registry.ts
|
|
4
|
+
/**
|
|
5
|
+
* Feature-module registry for the layout painter.
|
|
6
|
+
*
|
|
7
|
+
* O(1) dispatch keyed on `Fragment["kind"]`. Modules self-describe their
|
|
8
|
+
* kind; the registry routes each fragment to its module's `render()`. A
|
|
9
|
+
* fallback closes the loop for unknown kinds and for fragments arriving
|
|
10
|
+
* without a resolved block/measure.
|
|
11
|
+
*/
|
|
12
|
+
const defaultFallback = ({ fragment, context, doc }) => renderFragment(fragment, context, { document: doc });
|
|
13
|
+
/**
|
|
14
|
+
* Build a new feature registry. Callers register modules, then dispatch via
|
|
15
|
+
* `render()`. The registry never mutates module objects.
|
|
16
|
+
*/
|
|
17
|
+
function createFeatureRegistry(options = {}) {
|
|
18
|
+
const modules = /* @__PURE__ */ new Map();
|
|
19
|
+
const fallback = options.fallback ?? defaultFallback;
|
|
20
|
+
const register = (mod) => {
|
|
21
|
+
if (modules.has(mod.kind)) panic(`FeatureRegistry: module for kind "${mod.kind}" is already registered`);
|
|
22
|
+
modules.set(mod.kind, mod);
|
|
23
|
+
};
|
|
24
|
+
const get = (kind) => {
|
|
25
|
+
const found = modules.get(kind);
|
|
26
|
+
if (!found) return;
|
|
27
|
+
return found;
|
|
28
|
+
};
|
|
29
|
+
const has = (kind) => modules.has(kind);
|
|
30
|
+
const render = ({ fragment, block, measure, context, doc }) => {
|
|
31
|
+
const mod = modules.get(fragment.kind);
|
|
32
|
+
if (!mod || !block || !measure) return fallback({
|
|
33
|
+
fragment,
|
|
34
|
+
context,
|
|
35
|
+
doc
|
|
36
|
+
});
|
|
37
|
+
return mod.render({
|
|
38
|
+
fragment,
|
|
39
|
+
block,
|
|
40
|
+
measure,
|
|
41
|
+
context,
|
|
42
|
+
doc
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
register,
|
|
47
|
+
get,
|
|
48
|
+
has,
|
|
49
|
+
render
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { createFeatureRegistry };
|