@stll/folio-core 0.0.1-placeholder.0 → 0.1.0
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 +58 -0
- package/dist/types/block-id.js +61 -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,74 @@
|
|
|
1
|
+
import { document_d_exports } from "../../types/document.js";
|
|
2
|
+
import { FlowBlock, HeaderFooterContent, ImageRun, Measure, PageMargins } from "../../layout-engine/types.js";
|
|
3
|
+
import { MeasureBlocksFn } from "./footnoteLayout.js";
|
|
4
|
+
import { Node } from "prosemirror-model";
|
|
5
|
+
|
|
6
|
+
//#region src/layout-bridge/convert/headerFooterLayout.d.ts
|
|
7
|
+
type HeaderFooterMetrics = {
|
|
8
|
+
section: "header" | "footer";
|
|
9
|
+
pageSize: {
|
|
10
|
+
w: number;
|
|
11
|
+
h: number;
|
|
12
|
+
};
|
|
13
|
+
margins: PageMargins;
|
|
14
|
+
};
|
|
15
|
+
declare function normalizeHeaderFooterMeasureBlocks(blocks: FlowBlock[]): FlowBlock[];
|
|
16
|
+
declare function resolveHeaderFooterVisualTop(run: ImageRun, paragraphY: number, flowHeight: number, metrics: HeaderFooterMetrics): number;
|
|
17
|
+
declare function calculateHeaderFooterVisualBounds(blocks: FlowBlock[], measures: Measure[], flowHeight: number, metrics: HeaderFooterMetrics): {
|
|
18
|
+
visualTop: number;
|
|
19
|
+
visualBottom: number;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Compute the header/footer bounds used by `computeHeaderFooterMarginExtender`
|
|
23
|
+
* to push body margins clear of HF overflow. Excludes anchored/floating objects
|
|
24
|
+
* (full-page letterheads, watermarks): Word positions them on the page instead
|
|
25
|
+
* of in the header/footer flow, so they must not reserve body push-down. Keeping
|
|
26
|
+
* them in `visualBottom` is still correct for the renderer (and for the
|
|
27
|
+
* page-hash invalidation signal), but the margin extender needs the flow-only
|
|
28
|
+
* extent.
|
|
29
|
+
*/
|
|
30
|
+
declare function calculateHeaderFooterMarginPushBounds(blocks: FlowBlock[], measures: Measure[], flowHeight: number, metrics: HeaderFooterMetrics): {
|
|
31
|
+
top: number;
|
|
32
|
+
bottom: number;
|
|
33
|
+
};
|
|
34
|
+
type ConvertHeaderFooterOptions = {
|
|
35
|
+
styles?: document_d_exports.StyleDefinitions | null;
|
|
36
|
+
theme?: document_d_exports.Theme | null;
|
|
37
|
+
measureBlocks: MeasureBlocksFn; /** Document-wide `w:defaultTabStop` in twips — forwarded to toFlowBlocks. */
|
|
38
|
+
defaultTabStopTwips?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Relationship id of the source HF part. Stamped onto the returned
|
|
41
|
+
* `HeaderFooterContent.rId` so the painter can emit `data-rid` on the
|
|
42
|
+
* `.layout-page-header` / `.layout-page-footer` DOM node for the pointer
|
|
43
|
+
* pipeline (`HiddenHeaderFooterPMs` + `findHfPmSpans`).
|
|
44
|
+
*/
|
|
45
|
+
rId?: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Convert HeaderFooter (document type) to HeaderFooterContent (render type).
|
|
49
|
+
*
|
|
50
|
+
* Routes through the same pipeline as the body: HF.content ->
|
|
51
|
+
* headerFooterToProseDoc -> toFlowBlocks -> measureBlocks. The inline editor
|
|
52
|
+
* uses the same conversion chain, so block support (paragraph, table, image,
|
|
53
|
+
* textBox, fields) and the inline editor's content stay in lockstep.
|
|
54
|
+
*
|
|
55
|
+
* No result cache — typing in the body shouldn't recompute HF, but the
|
|
56
|
+
* upstream cache keyed on `HeaderFooter` identity went stale after inline
|
|
57
|
+
* edits. The HF pipeline runs at most four times per layout pass and the
|
|
58
|
+
* paragraph-level measurement cache one layer down covers most of the work.
|
|
59
|
+
*/
|
|
60
|
+
declare function convertHeaderFooterToContent(headerFooter: document_d_exports.HeaderFooter | null | undefined, contentWidth: number, metrics: HeaderFooterMetrics, options: ConvertHeaderFooterOptions): HeaderFooterContent | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Same as {@link convertHeaderFooterToContent}, but sourced from a live
|
|
63
|
+
* ProseMirror document instead of `HeaderFooter.content`. Used by the
|
|
64
|
+
* persistent hidden HF EditorView pipeline so the painter renders the PM's
|
|
65
|
+
* current state (Word-style WYSIWYG: every keystroke repaints).
|
|
66
|
+
*
|
|
67
|
+
* The pmDoc is expected to be a body-shaped PM doc (the result of
|
|
68
|
+
* `headerFooterToProseDoc` at mount, plus any user edits applied since).
|
|
69
|
+
* Theme + styles do NOT need to be threaded again — they only matter for the
|
|
70
|
+
* initial parse path; subsequent transformations are PM-internal.
|
|
71
|
+
*/
|
|
72
|
+
declare function convertHeaderFooterPmDocToContent(pmDoc: Node | null | undefined, contentWidth: number, metrics: HeaderFooterMetrics, options: Omit<ConvertHeaderFooterOptions, "styles">): HeaderFooterContent | undefined;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { ConvertHeaderFooterOptions, HeaderFooterMetrics, calculateHeaderFooterMarginPushBounds, calculateHeaderFooterVisualBounds, convertHeaderFooterPmDocToContent, convertHeaderFooterToContent, normalizeHeaderFooterMeasureBlocks, resolveHeaderFooterVisualTop };
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import { emuToPixels } from "../../utils/units.js";
|
|
2
|
+
import { isFloatingImageRun, isFloatingTextBoxBlock } from "../../layout-engine/types.js";
|
|
3
|
+
import { toFlowBlocks } from "./toFlowBlocks.js";
|
|
4
|
+
import { headerFooterToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
|
|
5
|
+
//#region src/layout-bridge/convert/headerFooterLayout.ts
|
|
6
|
+
function isAnchoredImageRun(run) {
|
|
7
|
+
if (run.kind !== "image") return false;
|
|
8
|
+
if (run.position) return true;
|
|
9
|
+
return isFloatingImageRun(run);
|
|
10
|
+
}
|
|
11
|
+
function hasAuthoredVisualContent(block) {
|
|
12
|
+
if (block.kind !== "paragraph") return false;
|
|
13
|
+
const attrs = block.attrs;
|
|
14
|
+
if (!attrs) return false;
|
|
15
|
+
if (attrs.borders?.top || attrs.borders?.bottom) return true;
|
|
16
|
+
if (attrs.spacingExplicit?.before || attrs.spacingExplicit?.after) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
function normalizeHeaderFooterMeasureBlocks(blocks) {
|
|
20
|
+
return normalizeFlowBlockArray(blocks);
|
|
21
|
+
}
|
|
22
|
+
function normalizeFlowBlockArray(blocks) {
|
|
23
|
+
const trailingEmptyAfterTable = /* @__PURE__ */ new Set();
|
|
24
|
+
const lastIndex = blocks.length - 1;
|
|
25
|
+
if (lastIndex > 0) {
|
|
26
|
+
const cur = blocks[lastIndex];
|
|
27
|
+
if (blocks[lastIndex - 1]?.kind === "table" && cur?.kind === "paragraph" && cur.runs.length === 0 && !hasAuthoredVisualContent(cur)) trailingEmptyAfterTable.add(lastIndex);
|
|
28
|
+
}
|
|
29
|
+
return blocks.map((block, index) => {
|
|
30
|
+
if (block.kind === "table") return normalizeTableBlock(block);
|
|
31
|
+
if (block.kind !== "paragraph") return block;
|
|
32
|
+
const isTrailingEmpty = trailingEmptyAfterTable.has(index);
|
|
33
|
+
const explicit = block.attrs?.spacingExplicit;
|
|
34
|
+
const hasResolvedBefore = block.attrs?.spacing?.before != null;
|
|
35
|
+
const hasResolvedAfter = block.attrs?.spacing?.after != null;
|
|
36
|
+
const beforeIsInherited = hasResolvedBefore && !explicit?.before;
|
|
37
|
+
const afterIsInherited = hasResolvedAfter && !explicit?.after;
|
|
38
|
+
const stripsSpacing = beforeIsInherited || afterIsInherited;
|
|
39
|
+
const stripsImages = block.runs.some(isAnchoredImageRun);
|
|
40
|
+
if (!stripsSpacing && !stripsImages && !isTrailingEmpty) return block;
|
|
41
|
+
let inlineRuns = block.runs;
|
|
42
|
+
if (stripsImages) {
|
|
43
|
+
inlineRuns = block.runs.filter((r) => !isAnchoredImageRun(r));
|
|
44
|
+
if (inlineRuns.length === 0) inlineRuns = [{
|
|
45
|
+
kind: "text",
|
|
46
|
+
text: ""
|
|
47
|
+
}];
|
|
48
|
+
}
|
|
49
|
+
let attrs = block.attrs;
|
|
50
|
+
if (stripsSpacing && attrs?.spacing) {
|
|
51
|
+
const newSpacing = { ...attrs.spacing };
|
|
52
|
+
if (!explicit?.before) delete newSpacing.before;
|
|
53
|
+
if (!explicit?.after) delete newSpacing.after;
|
|
54
|
+
attrs = {
|
|
55
|
+
...attrs,
|
|
56
|
+
spacing: newSpacing
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (isTrailingEmpty) attrs = {
|
|
60
|
+
...attrs,
|
|
61
|
+
suppressEmptyParagraphHeight: true
|
|
62
|
+
};
|
|
63
|
+
return attrs ? {
|
|
64
|
+
...block,
|
|
65
|
+
runs: inlineRuns,
|
|
66
|
+
attrs
|
|
67
|
+
} : {
|
|
68
|
+
...block,
|
|
69
|
+
runs: inlineRuns
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function normalizeTableBlock(block) {
|
|
74
|
+
const blockState = { changed: false };
|
|
75
|
+
const rows = block.rows.map((row) => {
|
|
76
|
+
const rowState = { changed: false };
|
|
77
|
+
const cells = row.cells.map((cell) => {
|
|
78
|
+
const normalizedBlocks = normalizeFlowBlockArray(cell.blocks);
|
|
79
|
+
if (!normalizedBlocks.some((normalizedBlock, idx) => normalizedBlock !== cell.blocks[idx])) return cell;
|
|
80
|
+
rowState.changed = true;
|
|
81
|
+
return {
|
|
82
|
+
...cell,
|
|
83
|
+
blocks: normalizedBlocks
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
if (!rowState.changed) return row;
|
|
87
|
+
blockState.changed = true;
|
|
88
|
+
return {
|
|
89
|
+
...row,
|
|
90
|
+
cells
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
return blockState.changed ? {
|
|
94
|
+
...block,
|
|
95
|
+
rows
|
|
96
|
+
} : block;
|
|
97
|
+
}
|
|
98
|
+
function getPositionAlignment(axis) {
|
|
99
|
+
return axis?.align ?? axis?.alignment;
|
|
100
|
+
}
|
|
101
|
+
function resolveHeaderFooterVisualTop(run, paragraphY, flowHeight, metrics) {
|
|
102
|
+
const flowTop = metrics.section === "header" ? metrics.margins.header ?? 48 : metrics.pageSize.h - (metrics.margins.footer ?? 48) - flowHeight;
|
|
103
|
+
const vertical = run.position?.vertical;
|
|
104
|
+
if (!vertical) return paragraphY;
|
|
105
|
+
const align = getPositionAlignment(vertical);
|
|
106
|
+
const offsetPx = vertical.posOffset !== void 0 ? emuToPixels(vertical.posOffset) : void 0;
|
|
107
|
+
if (vertical.relativeTo === "page") {
|
|
108
|
+
if (offsetPx !== void 0) return offsetPx - flowTop;
|
|
109
|
+
if (align === "top") return -flowTop;
|
|
110
|
+
if (align === "bottom") return metrics.pageSize.h - run.height - flowTop;
|
|
111
|
+
if (align === "center") return (metrics.pageSize.h - run.height) / 2 - flowTop;
|
|
112
|
+
}
|
|
113
|
+
if (vertical.relativeTo === "margin") {
|
|
114
|
+
const marginTop = metrics.margins.top;
|
|
115
|
+
const marginHeight = metrics.pageSize.h - metrics.margins.top - metrics.margins.bottom;
|
|
116
|
+
if (offsetPx !== void 0) return marginTop + offsetPx - flowTop;
|
|
117
|
+
if (align === "top") return marginTop - flowTop;
|
|
118
|
+
if (align === "bottom") return marginTop + marginHeight - run.height - flowTop;
|
|
119
|
+
if (align === "center") return marginTop + (marginHeight - run.height) / 2 - flowTop;
|
|
120
|
+
}
|
|
121
|
+
if (offsetPx !== void 0) return paragraphY + offsetPx;
|
|
122
|
+
return paragraphY;
|
|
123
|
+
}
|
|
124
|
+
function resolveHeaderFooterFloatingTableVisualTop(floating, measure, sourceY, flowHeight, metrics) {
|
|
125
|
+
const flowTop = metrics.section === "header" ? metrics.margins.header ?? 48 : metrics.pageSize.h - (metrics.margins.footer ?? 48) - flowHeight;
|
|
126
|
+
const vertAnchor = floating.vertAnchor ?? "margin";
|
|
127
|
+
const vertFrameHeight = vertAnchor === "page" ? metrics.pageSize.h : metrics.pageSize.h - metrics.margins.top - metrics.margins.bottom;
|
|
128
|
+
const vertFrameOffset = vertAnchor === "page" ? -flowTop : metrics.margins.top - flowTop;
|
|
129
|
+
if (floating.tblpYSpec === "top") return vertFrameOffset;
|
|
130
|
+
if (floating.tblpYSpec === "bottom") return vertFrameOffset + vertFrameHeight - measure.totalHeight;
|
|
131
|
+
if (floating.tblpYSpec === "center") return vertFrameOffset + (vertFrameHeight - measure.totalHeight) / 2;
|
|
132
|
+
if (floating.tblpY !== void 0) return vertFrameOffset + floating.tblpY;
|
|
133
|
+
return sourceY;
|
|
134
|
+
}
|
|
135
|
+
function isBehindDocImageBlock(block) {
|
|
136
|
+
return block.kind === "image" && block.anchor?.behindDoc === true;
|
|
137
|
+
}
|
|
138
|
+
function isPositionedHeaderFooterTextBoxBlock(block) {
|
|
139
|
+
if (block.displayMode === "block" || block.displayMode === "inline") return false;
|
|
140
|
+
return isFloatingTextBoxBlock(block);
|
|
141
|
+
}
|
|
142
|
+
function calculateHeaderFooterVisualBounds(blocks, measures, flowHeight, metrics) {
|
|
143
|
+
let visualTop = 0;
|
|
144
|
+
let visualBottom = flowHeight;
|
|
145
|
+
let cursorY = 0;
|
|
146
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
147
|
+
const block = blocks[i];
|
|
148
|
+
const measure = measures[i];
|
|
149
|
+
if (!block || !measure) continue;
|
|
150
|
+
if (block.kind === "paragraph" && measure.kind === "paragraph") {
|
|
151
|
+
const paragraphStartY = cursorY;
|
|
152
|
+
const paragraphBottomY = paragraphStartY + measure.totalHeight;
|
|
153
|
+
visualTop = Math.min(visualTop, paragraphStartY);
|
|
154
|
+
visualBottom = Math.max(visualBottom, paragraphBottomY);
|
|
155
|
+
for (const run of block.runs) {
|
|
156
|
+
if (run.kind !== "image") continue;
|
|
157
|
+
if (!run.position && !isFloatingImageRun(run)) continue;
|
|
158
|
+
const runTop = resolveHeaderFooterVisualTop(run, paragraphStartY, flowHeight, metrics);
|
|
159
|
+
visualTop = Math.min(visualTop, runTop);
|
|
160
|
+
visualBottom = Math.max(visualBottom, runTop + run.height);
|
|
161
|
+
}
|
|
162
|
+
cursorY = paragraphBottomY;
|
|
163
|
+
} else {
|
|
164
|
+
let blockHeight;
|
|
165
|
+
let advancesCursor = true;
|
|
166
|
+
if (block.kind === "table" && measure.kind === "table") {
|
|
167
|
+
blockHeight = measure.totalHeight;
|
|
168
|
+
if (block.floating) advancesCursor = false;
|
|
169
|
+
} else if (block.kind === "image" && measure.kind === "image") blockHeight = measure.height;
|
|
170
|
+
else if (block.kind === "textBox" && measure.kind === "textBox") {
|
|
171
|
+
blockHeight = measure.height;
|
|
172
|
+
if (isPositionedHeaderFooterTextBoxBlock(block)) advancesCursor = false;
|
|
173
|
+
} else continue;
|
|
174
|
+
if (advancesCursor) {
|
|
175
|
+
const blockBottomY = cursorY + blockHeight;
|
|
176
|
+
visualTop = Math.min(visualTop, cursorY);
|
|
177
|
+
visualBottom = Math.max(visualBottom, blockBottomY);
|
|
178
|
+
cursorY = blockBottomY;
|
|
179
|
+
} else if (block.kind === "table" && block.floating && measure.kind === "table") {
|
|
180
|
+
const blockTop = resolveHeaderFooterFloatingTableVisualTop(block.floating, measure, cursorY, flowHeight, metrics);
|
|
181
|
+
visualTop = Math.min(visualTop, blockTop);
|
|
182
|
+
visualBottom = Math.max(visualBottom, blockTop + blockHeight);
|
|
183
|
+
} else if (block.kind === "textBox" && isPositionedHeaderFooterTextBoxBlock(block) && measure.kind === "textBox") {
|
|
184
|
+
visualTop = Math.min(visualTop, cursorY);
|
|
185
|
+
visualBottom = Math.max(visualBottom, cursorY + measure.height);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
visualTop,
|
|
191
|
+
visualBottom
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Compute the header/footer bounds used by `computeHeaderFooterMarginExtender`
|
|
196
|
+
* to push body margins clear of HF overflow. Excludes anchored/floating objects
|
|
197
|
+
* (full-page letterheads, watermarks): Word positions them on the page instead
|
|
198
|
+
* of in the header/footer flow, so they must not reserve body push-down. Keeping
|
|
199
|
+
* them in `visualBottom` is still correct for the renderer (and for the
|
|
200
|
+
* page-hash invalidation signal), but the margin extender needs the flow-only
|
|
201
|
+
* extent.
|
|
202
|
+
*/
|
|
203
|
+
function calculateHeaderFooterMarginPushBounds(blocks, measures, flowHeight, metrics) {
|
|
204
|
+
let top = 0;
|
|
205
|
+
let bottom = 0;
|
|
206
|
+
let cursorY = 0;
|
|
207
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
208
|
+
const block = blocks[i];
|
|
209
|
+
const measure = measures[i];
|
|
210
|
+
if (!block || !measure) continue;
|
|
211
|
+
if (block.kind === "paragraph" && measure.kind === "paragraph") {
|
|
212
|
+
const paragraphBottomY = cursorY + measure.totalHeight;
|
|
213
|
+
top = Math.min(top, cursorY);
|
|
214
|
+
bottom = Math.max(bottom, paragraphBottomY);
|
|
215
|
+
cursorY = paragraphBottomY;
|
|
216
|
+
} else if (isBehindDocImageBlock(block)) continue;
|
|
217
|
+
else {
|
|
218
|
+
let blockHeight;
|
|
219
|
+
let advancesCursor = true;
|
|
220
|
+
if (block.kind === "table" && measure.kind === "table") {
|
|
221
|
+
blockHeight = measure.totalHeight;
|
|
222
|
+
if (block.floating) advancesCursor = false;
|
|
223
|
+
} else if (block.kind === "image" && measure.kind === "image") {
|
|
224
|
+
if (block.anchor?.isAnchored) continue;
|
|
225
|
+
blockHeight = measure.height;
|
|
226
|
+
} else if (block.kind === "textBox" && measure.kind === "textBox") {
|
|
227
|
+
if (isPositionedHeaderFooterTextBoxBlock(block)) continue;
|
|
228
|
+
blockHeight = measure.height;
|
|
229
|
+
} else continue;
|
|
230
|
+
if (advancesCursor) {
|
|
231
|
+
const blockBottomY = cursorY + blockHeight;
|
|
232
|
+
top = Math.min(top, cursorY);
|
|
233
|
+
bottom = Math.max(bottom, blockBottomY);
|
|
234
|
+
cursorY = blockBottomY;
|
|
235
|
+
} else if (block.kind === "table" && block.floating && measure.kind === "table") {
|
|
236
|
+
const blockTop = resolveHeaderFooterFloatingTableVisualTop(block.floating, measure, cursorY, flowHeight, metrics);
|
|
237
|
+
top = Math.min(top, blockTop);
|
|
238
|
+
bottom = Math.max(bottom, blockTop + blockHeight);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
top,
|
|
244
|
+
bottom
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Convert HeaderFooter (document type) to HeaderFooterContent (render type).
|
|
249
|
+
*
|
|
250
|
+
* Routes through the same pipeline as the body: HF.content ->
|
|
251
|
+
* headerFooterToProseDoc -> toFlowBlocks -> measureBlocks. The inline editor
|
|
252
|
+
* uses the same conversion chain, so block support (paragraph, table, image,
|
|
253
|
+
* textBox, fields) and the inline editor's content stay in lockstep.
|
|
254
|
+
*
|
|
255
|
+
* No result cache — typing in the body shouldn't recompute HF, but the
|
|
256
|
+
* upstream cache keyed on `HeaderFooter` identity went stale after inline
|
|
257
|
+
* edits. The HF pipeline runs at most four times per layout pass and the
|
|
258
|
+
* paragraph-level measurement cache one layer down covers most of the work.
|
|
259
|
+
*/
|
|
260
|
+
function convertHeaderFooterToContent(headerFooter, contentWidth, metrics, options) {
|
|
261
|
+
if (!headerFooter || headerFooter.content.length === 0) return;
|
|
262
|
+
const proseDocOptions = {};
|
|
263
|
+
if (options.styles) proseDocOptions.styles = options.styles;
|
|
264
|
+
if (options.theme !== void 0) proseDocOptions.theme = options.theme;
|
|
265
|
+
const pmDoc = headerFooterToProseDoc(headerFooter.content, proseDocOptions);
|
|
266
|
+
const flowOptions = {};
|
|
267
|
+
if (options.theme !== void 0) flowOptions.theme = options.theme;
|
|
268
|
+
if (options.defaultTabStopTwips !== void 0) flowOptions.defaultTabStopTwips = options.defaultTabStopTwips;
|
|
269
|
+
return finalizeHeaderFooterContent(toFlowBlocks(pmDoc, flowOptions), contentWidth, metrics, options);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Same as {@link convertHeaderFooterToContent}, but sourced from a live
|
|
273
|
+
* ProseMirror document instead of `HeaderFooter.content`. Used by the
|
|
274
|
+
* persistent hidden HF EditorView pipeline so the painter renders the PM's
|
|
275
|
+
* current state (Word-style WYSIWYG: every keystroke repaints).
|
|
276
|
+
*
|
|
277
|
+
* The pmDoc is expected to be a body-shaped PM doc (the result of
|
|
278
|
+
* `headerFooterToProseDoc` at mount, plus any user edits applied since).
|
|
279
|
+
* Theme + styles do NOT need to be threaded again — they only matter for the
|
|
280
|
+
* initial parse path; subsequent transformations are PM-internal.
|
|
281
|
+
*/
|
|
282
|
+
function convertHeaderFooterPmDocToContent(pmDoc, contentWidth, metrics, options) {
|
|
283
|
+
if (!pmDoc || pmDoc.content.size === 0) return;
|
|
284
|
+
const flowOptions = {};
|
|
285
|
+
if (options.theme !== void 0) flowOptions.theme = options.theme;
|
|
286
|
+
if (options.defaultTabStopTwips !== void 0) flowOptions.defaultTabStopTwips = options.defaultTabStopTwips;
|
|
287
|
+
return finalizeHeaderFooterContent(toFlowBlocks(pmDoc, flowOptions), contentWidth, metrics, options);
|
|
288
|
+
}
|
|
289
|
+
function finalizeHeaderFooterContent(blocks, contentWidth, metrics, options) {
|
|
290
|
+
if (blocks.length === 0) return;
|
|
291
|
+
const blocksForMeasure = normalizeHeaderFooterMeasureBlocks(blocks);
|
|
292
|
+
const measures = options.measureBlocks(blocksForMeasure, contentWidth);
|
|
293
|
+
let flowHeight = 0;
|
|
294
|
+
for (let i = 0; i < measures.length; i++) {
|
|
295
|
+
const m = measures[i];
|
|
296
|
+
const b = blocks[i];
|
|
297
|
+
if (!m || !b) continue;
|
|
298
|
+
flowHeight += getHeaderFooterFlowMeasureHeight(b, m);
|
|
299
|
+
}
|
|
300
|
+
const { visualTop, visualBottom } = calculateHeaderFooterVisualBounds(blocks, measures, flowHeight, metrics);
|
|
301
|
+
const { top: marginPushTop, bottom: marginPushBottom } = calculateHeaderFooterMarginPushBounds(blocks, measures, flowHeight, metrics);
|
|
302
|
+
return {
|
|
303
|
+
blocks,
|
|
304
|
+
measures,
|
|
305
|
+
height: flowHeight,
|
|
306
|
+
visualTop,
|
|
307
|
+
visualBottom,
|
|
308
|
+
marginPushTop,
|
|
309
|
+
marginPushBottom,
|
|
310
|
+
textSig: computeHeaderFooterTextSig(blocks),
|
|
311
|
+
...options.rId ? { rId: options.rId } : {}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function getHeaderFooterFlowMeasureHeight(block, measure) {
|
|
315
|
+
if (block.kind === "paragraph" && measure.kind === "paragraph") return measure.totalHeight;
|
|
316
|
+
if (block.kind === "table" && measure.kind === "table") {
|
|
317
|
+
if (block.floating) return 0;
|
|
318
|
+
return measure.totalHeight;
|
|
319
|
+
}
|
|
320
|
+
if (block.kind === "image" && measure.kind === "image") {
|
|
321
|
+
if (block.anchor?.isAnchored) return 0;
|
|
322
|
+
return measure.height;
|
|
323
|
+
}
|
|
324
|
+
if (block.kind === "textBox" && measure.kind === "textBox") {
|
|
325
|
+
if (isPositionedHeaderFooterTextBoxBlock(block)) return 0;
|
|
326
|
+
return measure.height;
|
|
327
|
+
}
|
|
328
|
+
return 0;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Cheap content fingerprint for the painter's incremental-render cache. The
|
|
332
|
+
* default fields hashed by `computeOptionsHash` (block count + flow height +
|
|
333
|
+
* visual bounds) miss same-height in-place edits — typing a replacement
|
|
334
|
+
* character, toggling bold, etc. — so the painter's incremental path then
|
|
335
|
+
* skips re-rendering page shells and the user's HF edits stay invisible
|
|
336
|
+
* until something else triggers a full repaint (Codex #487 P1 follow-up:
|
|
337
|
+
* 21:02 review; extended for run formatting + fields per 21:28 review).
|
|
338
|
+
*
|
|
339
|
+
* For each run carry text + every visual-affecting field: text characters,
|
|
340
|
+
* field type (PAGE / NUMPAGES / DATE / TIME), and the full RunFormatting
|
|
341
|
+
* record (bold, italic, color, underline, fontSize, font, etc.). Toggling
|
|
342
|
+
* bold or inserting a PAGE field on existing same-height content now
|
|
343
|
+
* differentiates the signature and forces a repaint. Tables, images, and
|
|
344
|
+
* text boxes are summarised by kind + dims so resize / image swap also
|
|
345
|
+
* invalidate. JSON.stringify is moderately expensive but folio HF is
|
|
346
|
+
* bounded (a handful of paragraphs, max).
|
|
347
|
+
*/
|
|
348
|
+
function computeHeaderFooterTextSig(blocks) {
|
|
349
|
+
return blocks.map(blockSig).join("|");
|
|
350
|
+
}
|
|
351
|
+
function blockSig(b) {
|
|
352
|
+
if (b.kind === "paragraph") {
|
|
353
|
+
let text = `p:${serializeParagraphAttrs(b.attrs)}|`;
|
|
354
|
+
for (const r of b.runs) if (r.kind === "text") text += `T:${r.text}|${serializeRunFmt(r)};`;
|
|
355
|
+
else if (r.kind === "tab") text += `\\t|${serializeRunFmt(r)};`;
|
|
356
|
+
else if (r.kind === "lineBreak") text += "\\n;";
|
|
357
|
+
else if (r.kind === "image") text += `[i${r.width}x${r.height}|${r.src}|${r.transform ?? ""}|${r.wrapType ?? ""}];`;
|
|
358
|
+
else if (r.kind === "math") text += `M:${r.display}|${r.ommlXml};`;
|
|
359
|
+
else text += `F:${r.fieldType}|${serializeRunFmt(r)};`;
|
|
360
|
+
return text;
|
|
361
|
+
}
|
|
362
|
+
if (b.kind === "table") {
|
|
363
|
+
const cellParts = [];
|
|
364
|
+
for (const row of b.rows) for (const cell of row.cells) cellParts.push(cell.blocks.map(blockSig).join(","));
|
|
365
|
+
return `t:${b.rows.length}:${cellParts.join("|")}`;
|
|
366
|
+
}
|
|
367
|
+
if (b.kind === "image") return `i:${b.width}x${b.height}|${b.src}|${b.transform ?? ""}|${b.anchor?.behindDoc ? "behind" : ""}`;
|
|
368
|
+
if (b.kind === "textBox") {
|
|
369
|
+
const inner = b.blocks;
|
|
370
|
+
if (Array.isArray(inner) && inner.length > 0) return `tb:${inner.map(blockSig).join(",")}`;
|
|
371
|
+
return "tb";
|
|
372
|
+
}
|
|
373
|
+
return "";
|
|
374
|
+
}
|
|
375
|
+
function serializeParagraphAttrs(attrs) {
|
|
376
|
+
if (!attrs) return "";
|
|
377
|
+
const keys = [
|
|
378
|
+
"alignment",
|
|
379
|
+
"bidi",
|
|
380
|
+
"indent",
|
|
381
|
+
"spacing",
|
|
382
|
+
"styleId",
|
|
383
|
+
"borders",
|
|
384
|
+
"shading",
|
|
385
|
+
"contextualSpacing",
|
|
386
|
+
"keepNext",
|
|
387
|
+
"keepLines",
|
|
388
|
+
"pageBreakBefore",
|
|
389
|
+
"numPr",
|
|
390
|
+
"listMarker",
|
|
391
|
+
"listIsBullet",
|
|
392
|
+
"listMarkerHidden",
|
|
393
|
+
"listMarkerSuffix",
|
|
394
|
+
"tabs"
|
|
395
|
+
];
|
|
396
|
+
const out = {};
|
|
397
|
+
for (const k of keys) {
|
|
398
|
+
const v = attrs[k];
|
|
399
|
+
if (v !== void 0 && v !== null) out[k] = v;
|
|
400
|
+
}
|
|
401
|
+
return JSON.stringify(out);
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Serialise the RunFormatting fields that actually drive the painter's
|
|
405
|
+
* visual output. The Run type spreads RunFormatting in place, so we project
|
|
406
|
+
* a small shape and JSON-stringify it; properties that are undefined are
|
|
407
|
+
* skipped so the resulting string stays compact for unstyled runs.
|
|
408
|
+
*/
|
|
409
|
+
function serializeRunFmt(run) {
|
|
410
|
+
const keys = [
|
|
411
|
+
"bold",
|
|
412
|
+
"italic",
|
|
413
|
+
"underline",
|
|
414
|
+
"strikethrough",
|
|
415
|
+
"color",
|
|
416
|
+
"highlightColor",
|
|
417
|
+
"fontSize",
|
|
418
|
+
"fontFamily",
|
|
419
|
+
"verticalAlign",
|
|
420
|
+
"letterSpacing",
|
|
421
|
+
"smallCaps",
|
|
422
|
+
"allCaps"
|
|
423
|
+
];
|
|
424
|
+
const out = {};
|
|
425
|
+
for (const k of keys) {
|
|
426
|
+
const v = run[k];
|
|
427
|
+
if (v !== void 0 && v !== null) out[k] = v;
|
|
428
|
+
}
|
|
429
|
+
return JSON.stringify(out);
|
|
430
|
+
}
|
|
431
|
+
//#endregion
|
|
432
|
+
export { calculateHeaderFooterMarginPushBounds, calculateHeaderFooterVisualBounds, convertHeaderFooterPmDocToContent, convertHeaderFooterToContent, normalizeHeaderFooterMeasureBlocks, resolveHeaderFooterVisualTop };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FlowBlock } from "../../layout-engine/types.js";
|
|
2
|
+
import { TemplatePreviewValue } from "../../prosemirror/plugins/templatePreviewValues.js";
|
|
3
|
+
|
|
4
|
+
//#region src/layout-bridge/convert/templatePreviewFlow.d.ts
|
|
5
|
+
/** One marker→value substitution, in PM doc positions. */
|
|
6
|
+
type TemplatePreviewFlowEntry = {
|
|
7
|
+
/** Inclusive PM doc position of the marker start. */from: number; /** Exclusive PM doc position of the marker end. */
|
|
8
|
+
to: number; /** The typed value displayed in place of the marker. */
|
|
9
|
+
value: TemplatePreviewValue;
|
|
10
|
+
};
|
|
11
|
+
type TemplatePreviewFlowOptions = {
|
|
12
|
+
entries: readonly TemplatePreviewFlowEntry[]; /** `highlighted` marks substituted runs for the accent-chip CSS. */
|
|
13
|
+
mode: "highlighted" | "plain";
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Replace each entry's marker range with its preview value across the given
|
|
17
|
+
* flow blocks (recursing into table cells and text boxes). Returns the input
|
|
18
|
+
* array unchanged when there is nothing to substitute.
|
|
19
|
+
*/
|
|
20
|
+
declare function applyTemplatePreviewToBlocks(blocks: FlowBlock[], {
|
|
21
|
+
entries,
|
|
22
|
+
mode
|
|
23
|
+
}: TemplatePreviewFlowOptions): FlowBlock[];
|
|
24
|
+
/**
|
|
25
|
+
* PM range covering every substitution that differs between two preview
|
|
26
|
+
* states (changed, added, or removed entries), or `null` when the
|
|
27
|
+
* substituted flow content is identical. Feeds the layout pipeline's
|
|
28
|
+
* dirty-range invalidation so typing a value re-measures only the blocks
|
|
29
|
+
* hosting the affected markers.
|
|
30
|
+
*/
|
|
31
|
+
declare function templatePreviewDirtyRange(previous: readonly TemplatePreviewFlowEntry[], next: readonly TemplatePreviewFlowEntry[]): {
|
|
32
|
+
from: number;
|
|
33
|
+
to: number;
|
|
34
|
+
} | null;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { TemplatePreviewFlowEntry, TemplatePreviewFlowOptions, applyTemplatePreviewToBlocks, templatePreviewDirtyRange };
|