@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,182 @@
|
|
|
1
|
+
//#region src/layout-engine/section-breaks.ts
|
|
2
|
+
/**
|
|
3
|
+
* Default single-column layout.
|
|
4
|
+
*/
|
|
5
|
+
const DEFAULT_COLUMNS = {
|
|
6
|
+
count: 1,
|
|
7
|
+
gap: 0
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Create initial section state from default options.
|
|
11
|
+
*/
|
|
12
|
+
function createInitialSectionState(margins, pageSize, columns) {
|
|
13
|
+
return {
|
|
14
|
+
activeTopMargin: margins.top,
|
|
15
|
+
activeBottomMargin: margins.bottom,
|
|
16
|
+
activeLeftMargin: margins.left,
|
|
17
|
+
activeRightMargin: margins.right,
|
|
18
|
+
pendingTopMargin: null,
|
|
19
|
+
pendingBottomMargin: null,
|
|
20
|
+
pendingLeftMargin: null,
|
|
21
|
+
pendingRightMargin: null,
|
|
22
|
+
activePageSize: { ...pageSize },
|
|
23
|
+
pendingPageSize: null,
|
|
24
|
+
activeColumns: columns ? { ...columns } : { ...DEFAULT_COLUMNS },
|
|
25
|
+
pendingColumns: null,
|
|
26
|
+
activeOrientation: null,
|
|
27
|
+
pendingOrientation: null,
|
|
28
|
+
hasAnyPages: false
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if column configuration is changing.
|
|
33
|
+
*/
|
|
34
|
+
function isColumnsChanging(newColumns, activeColumns) {
|
|
35
|
+
if (newColumns) return newColumns.count !== activeColumns.count || newColumns.gap !== activeColumns.gap;
|
|
36
|
+
return activeColumns.count > 1;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get column configuration, defaulting to single column if not specified.
|
|
40
|
+
*/
|
|
41
|
+
function getColumnConfig(columns) {
|
|
42
|
+
return columns ? {
|
|
43
|
+
count: columns.count,
|
|
44
|
+
gap: columns.gap
|
|
45
|
+
} : { ...DEFAULT_COLUMNS };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Schedule section break effects by analyzing the break type and updating state.
|
|
49
|
+
*
|
|
50
|
+
* This determines what layout changes should occur (page break, column changes)
|
|
51
|
+
* and schedules the new section properties to be applied at the appropriate boundary.
|
|
52
|
+
*/
|
|
53
|
+
function scheduleSectionBreak(block, state, _baseMargins) {
|
|
54
|
+
const next = { ...state };
|
|
55
|
+
const sectionType = block.type ?? "continuous";
|
|
56
|
+
const sectionMargins = block.margins;
|
|
57
|
+
const sectionPageSize = block.pageSize;
|
|
58
|
+
const sectionOrientation = block.orientation;
|
|
59
|
+
if (sectionMargins) {
|
|
60
|
+
if (typeof sectionMargins.top === "number") next.pendingTopMargin = Math.max(0, sectionMargins.top);
|
|
61
|
+
if (typeof sectionMargins.bottom === "number") next.pendingBottomMargin = Math.max(0, sectionMargins.bottom);
|
|
62
|
+
if (typeof sectionMargins.left === "number") next.pendingLeftMargin = Math.max(0, sectionMargins.left);
|
|
63
|
+
if (typeof sectionMargins.right === "number") next.pendingRightMargin = Math.max(0, sectionMargins.right);
|
|
64
|
+
}
|
|
65
|
+
if (sectionPageSize) next.pendingPageSize = {
|
|
66
|
+
w: sectionPageSize.w,
|
|
67
|
+
h: sectionPageSize.h
|
|
68
|
+
};
|
|
69
|
+
if (sectionOrientation) next.pendingOrientation = sectionOrientation;
|
|
70
|
+
const columnsChanging = isColumnsChanging(void 0, next.activeColumns);
|
|
71
|
+
switch (sectionType) {
|
|
72
|
+
case "nextPage":
|
|
73
|
+
next.pendingColumns = getColumnConfig();
|
|
74
|
+
return {
|
|
75
|
+
decision: {
|
|
76
|
+
forcePageBreak: true,
|
|
77
|
+
forceMidPageRegion: false
|
|
78
|
+
},
|
|
79
|
+
state: next
|
|
80
|
+
};
|
|
81
|
+
case "evenPage":
|
|
82
|
+
next.pendingColumns = getColumnConfig();
|
|
83
|
+
return {
|
|
84
|
+
decision: {
|
|
85
|
+
forcePageBreak: true,
|
|
86
|
+
forceMidPageRegion: false,
|
|
87
|
+
requiredParity: "even"
|
|
88
|
+
},
|
|
89
|
+
state: next
|
|
90
|
+
};
|
|
91
|
+
case "oddPage":
|
|
92
|
+
next.pendingColumns = getColumnConfig();
|
|
93
|
+
return {
|
|
94
|
+
decision: {
|
|
95
|
+
forcePageBreak: true,
|
|
96
|
+
forceMidPageRegion: false,
|
|
97
|
+
requiredParity: "odd"
|
|
98
|
+
},
|
|
99
|
+
state: next
|
|
100
|
+
};
|
|
101
|
+
default:
|
|
102
|
+
if (columnsChanging) {
|
|
103
|
+
next.pendingColumns = getColumnConfig();
|
|
104
|
+
return {
|
|
105
|
+
decision: {
|
|
106
|
+
forcePageBreak: false,
|
|
107
|
+
forceMidPageRegion: true
|
|
108
|
+
},
|
|
109
|
+
state: next
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
decision: {
|
|
114
|
+
forcePageBreak: false,
|
|
115
|
+
forceMidPageRegion: false
|
|
116
|
+
},
|
|
117
|
+
state: next
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Apply pending section state to active state at a page boundary.
|
|
123
|
+
* Transfers all pending values to active and clears pending.
|
|
124
|
+
*/
|
|
125
|
+
function applyPendingToActive(state) {
|
|
126
|
+
const next = { ...state };
|
|
127
|
+
if (next.pendingTopMargin !== null) {
|
|
128
|
+
next.activeTopMargin = next.pendingTopMargin;
|
|
129
|
+
next.pendingTopMargin = null;
|
|
130
|
+
}
|
|
131
|
+
if (next.pendingBottomMargin !== null) {
|
|
132
|
+
next.activeBottomMargin = next.pendingBottomMargin;
|
|
133
|
+
next.pendingBottomMargin = null;
|
|
134
|
+
}
|
|
135
|
+
if (next.pendingLeftMargin !== null) {
|
|
136
|
+
next.activeLeftMargin = next.pendingLeftMargin;
|
|
137
|
+
next.pendingLeftMargin = null;
|
|
138
|
+
}
|
|
139
|
+
if (next.pendingRightMargin !== null) {
|
|
140
|
+
next.activeRightMargin = next.pendingRightMargin;
|
|
141
|
+
next.pendingRightMargin = null;
|
|
142
|
+
}
|
|
143
|
+
if (next.pendingPageSize !== null) {
|
|
144
|
+
next.activePageSize = next.pendingPageSize;
|
|
145
|
+
next.pendingPageSize = null;
|
|
146
|
+
}
|
|
147
|
+
if (next.pendingColumns !== null) {
|
|
148
|
+
next.activeColumns = next.pendingColumns;
|
|
149
|
+
next.pendingColumns = null;
|
|
150
|
+
}
|
|
151
|
+
if (next.pendingOrientation !== null) {
|
|
152
|
+
next.activeOrientation = next.pendingOrientation;
|
|
153
|
+
next.pendingOrientation = null;
|
|
154
|
+
}
|
|
155
|
+
return next;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get the effective margins for the current section state.
|
|
159
|
+
* Returns active margins, or pending if scheduled.
|
|
160
|
+
*/
|
|
161
|
+
function getEffectiveMargins(state) {
|
|
162
|
+
return {
|
|
163
|
+
top: state.pendingTopMargin ?? state.activeTopMargin,
|
|
164
|
+
bottom: state.pendingBottomMargin ?? state.activeBottomMargin,
|
|
165
|
+
left: state.pendingLeftMargin ?? state.activeLeftMargin,
|
|
166
|
+
right: state.pendingRightMargin ?? state.activeRightMargin
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the effective page size for the current section state.
|
|
171
|
+
*/
|
|
172
|
+
function getEffectivePageSize(state) {
|
|
173
|
+
return state.pendingPageSize ?? state.activePageSize;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get the effective columns for the current section state.
|
|
177
|
+
*/
|
|
178
|
+
function getEffectiveColumns(state) {
|
|
179
|
+
return state.pendingColumns ?? state.activeColumns;
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
export { applyPendingToActive, createInitialSectionState, getEffectiveColumns, getEffectiveMargins, getEffectivePageSize, scheduleSectionBreak };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TableBlock, TableMeasure } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/layout-engine/tableRowBreak.d.ts
|
|
4
|
+
/** Precomputed break geometry for a table. */
|
|
5
|
+
type TableRowBreakInfo = {
|
|
6
|
+
/** Cumulative y of the top of each row; `rowTops[rows.length]` is the table height. */rowTops: number[];
|
|
7
|
+
/**
|
|
8
|
+
* Per-row sorted, de-duplicated line-bottom offsets (relative to the row top)
|
|
9
|
+
* at which a break is clean. Always includes the row's full height as the
|
|
10
|
+
* final boundary.
|
|
11
|
+
*/
|
|
12
|
+
breakOffsets: number[][];
|
|
13
|
+
};
|
|
14
|
+
/** Build break geometry for a table from its block + measure. */
|
|
15
|
+
declare function buildTableRowBreakInfo(block: TableBlock, measure: TableMeasure): TableRowBreakInfo;
|
|
16
|
+
/**
|
|
17
|
+
* Given a row and how much of it has already been placed (`fromOffset`), return
|
|
18
|
+
* how many more px can be placed ending on a whole line, without exceeding
|
|
19
|
+
* `maxSlice`. Returns 0 when not even the first line fits.
|
|
20
|
+
*/
|
|
21
|
+
declare function snapRowBreak(info: TableRowBreakInfo, rowIndex: number, fromOffset: number, maxSlice: number): number;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { TableRowBreakInfo, buildTableRowBreakInfo, snapRowBreak };
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { measureParagraph } from "./measure/measureParagraph.js";
|
|
2
|
+
import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "./measure/tableCellFloating.js";
|
|
3
|
+
//#region src/layout-engine/tableRowBreak.ts
|
|
4
|
+
/**
|
|
5
|
+
* Table row-break geometry. Ported from eigenpal/docx-editor#698 (folio subset).
|
|
6
|
+
*
|
|
7
|
+
* Word lets a table row break across a page boundary ("allow row to break
|
|
8
|
+
* across pages", on by default). When a row is taller than a whole page it
|
|
9
|
+
* cannot fit anywhere, so the portion that fits stays and the rest continues on
|
|
10
|
+
* the next page — broken between whole text lines, never through a glyph.
|
|
11
|
+
* Without this folio forced the oversized row onto one page and the overflow
|
|
12
|
+
* was clipped (content lost; upstream #570).
|
|
13
|
+
*
|
|
14
|
+
* This computes, per row, the safe break offsets (the y of every line bottom in
|
|
15
|
+
* the row's cells) so the paginator can snap a break to the deepest whole line
|
|
16
|
+
* that still fits. Vertically-merged cells that span into a row are not modeled
|
|
17
|
+
* here yet (a separate follow-up); each row uses its own cells' content.
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_TABLE_CELL_PADDING_TOP = 1;
|
|
20
|
+
function getAtomicBlockHeight(measure) {
|
|
21
|
+
if ("totalHeight" in measure) return measure.totalHeight;
|
|
22
|
+
if ("height" in measure) return measure.height;
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
function isInsideRange(offset, range) {
|
|
26
|
+
return offset > range.top && offset < range.bottom;
|
|
27
|
+
}
|
|
28
|
+
function getVerticalAlignmentOffset(cell, measure, rowHeight) {
|
|
29
|
+
const spareHeight = Math.max(0, rowHeight - measure.height);
|
|
30
|
+
if (cell?.verticalAlign === "bottom") return spareHeight;
|
|
31
|
+
if (cell?.verticalAlign === "center") return spareHeight / 2;
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
function shiftCellGeometry(geometry, offset) {
|
|
35
|
+
if (offset <= 0) return geometry;
|
|
36
|
+
return {
|
|
37
|
+
bottoms: geometry.bottoms.map((bottom) => bottom + offset),
|
|
38
|
+
unsafeRanges: geometry.unsafeRanges.map((range) => ({
|
|
39
|
+
top: range.top + offset,
|
|
40
|
+
bottom: range.bottom + offset
|
|
41
|
+
}))
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Cumulative break geometry within a single cell's content. */
|
|
45
|
+
function cellBreakGeometry(cell, measure) {
|
|
46
|
+
const bottoms = [];
|
|
47
|
+
const unsafeRanges = [];
|
|
48
|
+
const cellBlocks = cell?.blocks;
|
|
49
|
+
const blockMeasures = measure.blocks;
|
|
50
|
+
const padTop = cell?.padding?.top ?? DEFAULT_TABLE_CELL_PADDING_TOP;
|
|
51
|
+
const contentWidth = getTableCellContentWidth(cell, measure);
|
|
52
|
+
const floatingZones = buildTableCellFloatingZones(cell !== void 0 ? getTableCellFloatingImages(cell, measure, contentWidth) : [], contentWidth);
|
|
53
|
+
let y = padTop;
|
|
54
|
+
let paragraphY = 0;
|
|
55
|
+
for (let i = 0; i < blockMeasures.length; i++) {
|
|
56
|
+
let blockMeasure = blockMeasures[i];
|
|
57
|
+
if (blockMeasure?.kind === "paragraph") {
|
|
58
|
+
const block = cellBlocks?.[i];
|
|
59
|
+
if (block?.kind === "paragraph" && floatingZones.length > 0) blockMeasure = measureParagraph(block, contentWidth, {
|
|
60
|
+
floatingZones,
|
|
61
|
+
paragraphYOffset: paragraphY
|
|
62
|
+
});
|
|
63
|
+
const blockTop = y;
|
|
64
|
+
for (const line of blockMeasure.lines) {
|
|
65
|
+
y += line.floatSkipBefore ?? 0;
|
|
66
|
+
const top = y;
|
|
67
|
+
y += line.lineHeight;
|
|
68
|
+
unsafeRanges.push({
|
|
69
|
+
top,
|
|
70
|
+
bottom: y
|
|
71
|
+
});
|
|
72
|
+
bottoms.push(y);
|
|
73
|
+
}
|
|
74
|
+
y = blockTop + blockMeasure.totalHeight;
|
|
75
|
+
paragraphY += blockMeasure.totalHeight;
|
|
76
|
+
} else if (blockMeasure) {
|
|
77
|
+
const blockHeight = getAtomicBlockHeight(blockMeasure);
|
|
78
|
+
if (blockHeight > 0) {
|
|
79
|
+
const top = y;
|
|
80
|
+
y += blockHeight;
|
|
81
|
+
paragraphY += blockHeight;
|
|
82
|
+
unsafeRanges.push({
|
|
83
|
+
top,
|
|
84
|
+
bottom: y
|
|
85
|
+
});
|
|
86
|
+
bottoms.push(y);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
bottoms,
|
|
92
|
+
unsafeRanges
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** Build break geometry for a table from its block + measure. */
|
|
96
|
+
function buildTableRowBreakInfo(block, measure) {
|
|
97
|
+
const rowCount = measure.rows.length;
|
|
98
|
+
const rowTops = [];
|
|
99
|
+
let acc = 0;
|
|
100
|
+
for (let r = 0; r < rowCount; r++) {
|
|
101
|
+
rowTops.push(acc);
|
|
102
|
+
acc += measure.rows[r]?.height ?? 0;
|
|
103
|
+
}
|
|
104
|
+
rowTops.push(acc);
|
|
105
|
+
const breakOffsets = [];
|
|
106
|
+
for (let r = 0; r < rowCount; r++) {
|
|
107
|
+
const rowHeight = measure.rows[r]?.height ?? 0;
|
|
108
|
+
const offsets = /* @__PURE__ */ new Set();
|
|
109
|
+
offsets.add(rowHeight);
|
|
110
|
+
const sourceCells = block.rows[r]?.cells ?? [];
|
|
111
|
+
const measuredCells = measure.rows[r]?.cells ?? [];
|
|
112
|
+
const cellGeometries = [];
|
|
113
|
+
for (let c = 0; c < measuredCells.length; c++) {
|
|
114
|
+
const measuredCell = measuredCells[c];
|
|
115
|
+
if (!measuredCell) continue;
|
|
116
|
+
const sourceCell = sourceCells[c];
|
|
117
|
+
const geometry = shiftCellGeometry(cellBreakGeometry(sourceCell, measuredCell), getVerticalAlignmentOffset(sourceCell, measuredCell, rowHeight));
|
|
118
|
+
cellGeometries.push(geometry);
|
|
119
|
+
for (const b of geometry.bottoms) if (b > 0 && b < rowHeight) offsets.add(b);
|
|
120
|
+
}
|
|
121
|
+
const safeOffsets = [...offsets].filter((offset) => offset === rowHeight || cellGeometries.every((geometry) => geometry.unsafeRanges.every((range) => !isInsideRange(offset, range))));
|
|
122
|
+
breakOffsets.push(safeOffsets.sort((a, b) => a - b));
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
rowTops,
|
|
126
|
+
breakOffsets
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Given a row and how much of it has already been placed (`fromOffset`), return
|
|
131
|
+
* how many more px can be placed ending on a whole line, without exceeding
|
|
132
|
+
* `maxSlice`. Returns 0 when not even the first line fits.
|
|
133
|
+
*/
|
|
134
|
+
function snapRowBreak(info, rowIndex, fromOffset, maxSlice) {
|
|
135
|
+
const offsets = info.breakOffsets[rowIndex];
|
|
136
|
+
if (!offsets || offsets.length === 0) return 0;
|
|
137
|
+
const limit = fromOffset + maxSlice;
|
|
138
|
+
let best = 0;
|
|
139
|
+
for (const off of offsets) {
|
|
140
|
+
if (off <= fromOffset) continue;
|
|
141
|
+
if (off <= limit) best = off - fromOffset;
|
|
142
|
+
else break;
|
|
143
|
+
}
|
|
144
|
+
return best;
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { buildTableRowBreakInfo, snapRowBreak };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ImageRunPosition } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/layout-engine/textBoxFlow.d.ts
|
|
4
|
+
type VerticalRelativeTo = NonNullable<ImageRunPosition["vertical"]>["relativeTo"];
|
|
5
|
+
/**
|
|
6
|
+
* `true` when a vertical anchor pins the box to a fixed position on the page
|
|
7
|
+
* (page body, text margin, or a margin strip) rather than to the surrounding
|
|
8
|
+
* text flow. A `topAndBottom` box with such an anchor reserves a full-width
|
|
9
|
+
* band; `paragraph`/`line` anchors keep folio's in-flow handling. Exhaustive
|
|
10
|
+
* over the OOXML `ST_RelFromV` set so a new relativeFrom value forces a decision
|
|
11
|
+
* here instead of silently falling through. eigenpal #694.
|
|
12
|
+
*/
|
|
13
|
+
declare function isPageFrameRelativeAnchor(relativeTo: VerticalRelativeTo): boolean;
|
|
14
|
+
/** Page geometry needed to resolve a band box's vertical anchor. */
|
|
15
|
+
type BandVerticalGeometry = {
|
|
16
|
+
pageHeight: number;
|
|
17
|
+
marginTop: number;
|
|
18
|
+
marginBottom: number;
|
|
19
|
+
boxHeight: number;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Content-area top Y (px) of a `topAndBottom` band box's reserved band, resolved
|
|
23
|
+
* from its OOXML vertical anchor. Shared by the measure pass
|
|
24
|
+
* (`extractFloatingZones`) and the layout pass (`layoutTextBox`) so the reserved
|
|
25
|
+
* band and the painted box land at the same Y. Within the anchor's frame an
|
|
26
|
+
* explicit `posOffset` wins, then `align` (top/center/bottom/inside/outside);
|
|
27
|
+
* otherwise the box sits at the frame top. The result is content-relative
|
|
28
|
+
* (0 = content top), so a page/margin-strip frame is converted by subtracting
|
|
29
|
+
* the top margin. Ported from eigenpal #694.
|
|
30
|
+
*/
|
|
31
|
+
declare function bandTopContentY(vertical: ImageRunPosition["vertical"], geometry: BandVerticalGeometry): number;
|
|
32
|
+
/** Page geometry needed to resolve a band box's horizontal anchor. */
|
|
33
|
+
type BandHorizontalGeometry = {
|
|
34
|
+
pageWidth: number;
|
|
35
|
+
marginLeft: number;
|
|
36
|
+
marginRight: number;
|
|
37
|
+
boxWidth: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Page-absolute left X (px) of a `topAndBottom` band box, resolved from its
|
|
41
|
+
* OOXML horizontal anchor. Picks the anchor's frame (page, content box, or a
|
|
42
|
+
* left/right margin strip), then within it an explicit `posOffset` wins, else
|
|
43
|
+
* `align` (left/center/right/inside/outside); otherwise the box sits at the
|
|
44
|
+
* frame's left edge. The band itself is always full-width, so this only shifts
|
|
45
|
+
* where the box paints, not the reserved vertical space. Ported from eigenpal
|
|
46
|
+
* #694.
|
|
47
|
+
*/
|
|
48
|
+
declare function bandFragmentX(horizontal: ImageRunPosition["horizontal"], geometry: BandHorizontalGeometry): number;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { BandHorizontalGeometry, BandVerticalGeometry, bandFragmentX, bandTopContentY, isPageFrameRelativeAnchor };
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { emuToPixels } from "../utils/units.js";
|
|
2
|
+
//#region src/layout-engine/textBoxFlow.ts
|
|
3
|
+
/**
|
|
4
|
+
* Floating text-box band geometry. Ported from eigenpal docx-editor #474/#694.
|
|
5
|
+
*
|
|
6
|
+
* The floating-box predicates (`isFloatingTextBoxBlock`,
|
|
7
|
+
* `floatingTextBoxWrapsText`, `floatingTextBoxReservesBand`) and the
|
|
8
|
+
* `TextBoxFlowAttrs` type are pure data and live in the model layer
|
|
9
|
+
* (`./types`); this module holds the page-anchor band geometry that depends on
|
|
10
|
+
* pixel/EMU unit conversion.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* `true` when a vertical anchor pins the box to a fixed position on the page
|
|
14
|
+
* (page body, text margin, or a margin strip) rather than to the surrounding
|
|
15
|
+
* text flow. A `topAndBottom` box with such an anchor reserves a full-width
|
|
16
|
+
* band; `paragraph`/`line` anchors keep folio's in-flow handling. Exhaustive
|
|
17
|
+
* over the OOXML `ST_RelFromV` set so a new relativeFrom value forces a decision
|
|
18
|
+
* here instead of silently falling through. eigenpal #694.
|
|
19
|
+
*/
|
|
20
|
+
function isPageFrameRelativeAnchor(relativeTo) {
|
|
21
|
+
switch (relativeTo) {
|
|
22
|
+
case "page":
|
|
23
|
+
case "margin":
|
|
24
|
+
case "topMargin":
|
|
25
|
+
case "bottomMargin":
|
|
26
|
+
case "insideMargin":
|
|
27
|
+
case "outsideMargin": return true;
|
|
28
|
+
case "paragraph":
|
|
29
|
+
case "line":
|
|
30
|
+
case void 0: return false;
|
|
31
|
+
default: return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Page-absolute `[top, bottom]` (px) of the frame a vertical anchor positions
|
|
36
|
+
* within. `insideMargin`/`outsideMargin` map to the top/bottom margin strips
|
|
37
|
+
* (vertical page parity is not modelled); flow-relative anchors fall back to the
|
|
38
|
+
* content box, which is also where a page-pinned band with no usable anchor
|
|
39
|
+
* sits. eigenpal #694.
|
|
40
|
+
*/
|
|
41
|
+
function bandVerticalFrame(relativeTo, geometry) {
|
|
42
|
+
const { pageHeight, marginTop, marginBottom } = geometry;
|
|
43
|
+
switch (relativeTo) {
|
|
44
|
+
case "page": return {
|
|
45
|
+
top: 0,
|
|
46
|
+
bottom: pageHeight
|
|
47
|
+
};
|
|
48
|
+
case "topMargin":
|
|
49
|
+
case "insideMargin": return {
|
|
50
|
+
top: 0,
|
|
51
|
+
bottom: marginTop
|
|
52
|
+
};
|
|
53
|
+
case "bottomMargin":
|
|
54
|
+
case "outsideMargin": return {
|
|
55
|
+
top: pageHeight - marginBottom,
|
|
56
|
+
bottom: pageHeight
|
|
57
|
+
};
|
|
58
|
+
case "margin":
|
|
59
|
+
case "paragraph":
|
|
60
|
+
case "line":
|
|
61
|
+
case void 0: return {
|
|
62
|
+
top: marginTop,
|
|
63
|
+
bottom: pageHeight - marginBottom
|
|
64
|
+
};
|
|
65
|
+
default: return {
|
|
66
|
+
top: marginTop,
|
|
67
|
+
bottom: pageHeight - marginBottom
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Page-absolute top Y (px) of the box within its frame for a bare `align`. */
|
|
72
|
+
function alignedFrameTop(align, frame, boxHeight) {
|
|
73
|
+
switch (align) {
|
|
74
|
+
case "center": return frame.top + (frame.bottom - frame.top - boxHeight) / 2;
|
|
75
|
+
case "bottom":
|
|
76
|
+
case "outside": return frame.bottom - boxHeight;
|
|
77
|
+
case "top":
|
|
78
|
+
case "inside":
|
|
79
|
+
case void 0: return frame.top;
|
|
80
|
+
default: return frame.top;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Content-area top Y (px) of a `topAndBottom` band box's reserved band, resolved
|
|
85
|
+
* from its OOXML vertical anchor. Shared by the measure pass
|
|
86
|
+
* (`extractFloatingZones`) and the layout pass (`layoutTextBox`) so the reserved
|
|
87
|
+
* band and the painted box land at the same Y. Within the anchor's frame an
|
|
88
|
+
* explicit `posOffset` wins, then `align` (top/center/bottom/inside/outside);
|
|
89
|
+
* otherwise the box sits at the frame top. The result is content-relative
|
|
90
|
+
* (0 = content top), so a page/margin-strip frame is converted by subtracting
|
|
91
|
+
* the top margin. Ported from eigenpal #694.
|
|
92
|
+
*/
|
|
93
|
+
function bandTopContentY(vertical, geometry) {
|
|
94
|
+
const frame = bandVerticalFrame(vertical?.relativeTo, geometry);
|
|
95
|
+
return (vertical?.posOffset !== void 0 ? frame.top + emuToPixels(vertical.posOffset) : alignedFrameTop(vertical?.align, frame, geometry.boxHeight)) - geometry.marginTop;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Page-absolute `[left, right]` (px) of the frame a horizontal anchor positions
|
|
99
|
+
* within. `inside`/`outsideMargin` map to the left/right margin strips (page
|
|
100
|
+
* parity is not modelled); `column`/`character` fall back to the content box
|
|
101
|
+
* (folio has no per-column/character X here). eigenpal #694.
|
|
102
|
+
*/
|
|
103
|
+
function bandHorizontalFrame(relativeTo, geometry) {
|
|
104
|
+
const { pageWidth, marginLeft, marginRight } = geometry;
|
|
105
|
+
switch (relativeTo) {
|
|
106
|
+
case "page": return {
|
|
107
|
+
left: 0,
|
|
108
|
+
right: pageWidth
|
|
109
|
+
};
|
|
110
|
+
case "leftMargin":
|
|
111
|
+
case "insideMargin": return {
|
|
112
|
+
left: 0,
|
|
113
|
+
right: marginLeft
|
|
114
|
+
};
|
|
115
|
+
case "rightMargin":
|
|
116
|
+
case "outsideMargin": return {
|
|
117
|
+
left: pageWidth - marginRight,
|
|
118
|
+
right: pageWidth
|
|
119
|
+
};
|
|
120
|
+
case "margin":
|
|
121
|
+
case "column":
|
|
122
|
+
case "character":
|
|
123
|
+
case void 0: return {
|
|
124
|
+
left: marginLeft,
|
|
125
|
+
right: pageWidth - marginRight
|
|
126
|
+
};
|
|
127
|
+
default: return {
|
|
128
|
+
left: marginLeft,
|
|
129
|
+
right: pageWidth - marginRight
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Page-absolute left X (px) of the box within its frame for a bare `align`. */
|
|
134
|
+
function alignedFrameLeft(align, frame, boxWidth) {
|
|
135
|
+
switch (align) {
|
|
136
|
+
case "center": return frame.left + (frame.right - frame.left - boxWidth) / 2;
|
|
137
|
+
case "right":
|
|
138
|
+
case "outside": return frame.right - boxWidth;
|
|
139
|
+
case "left":
|
|
140
|
+
case "inside":
|
|
141
|
+
case void 0: return frame.left;
|
|
142
|
+
default: return frame.left;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Page-absolute left X (px) of a `topAndBottom` band box, resolved from its
|
|
147
|
+
* OOXML horizontal anchor. Picks the anchor's frame (page, content box, or a
|
|
148
|
+
* left/right margin strip), then within it an explicit `posOffset` wins, else
|
|
149
|
+
* `align` (left/center/right/inside/outside); otherwise the box sits at the
|
|
150
|
+
* frame's left edge. The band itself is always full-width, so this only shifts
|
|
151
|
+
* where the box paints, not the reserved vertical space. Ported from eigenpal
|
|
152
|
+
* #694.
|
|
153
|
+
*/
|
|
154
|
+
function bandFragmentX(horizontal, geometry) {
|
|
155
|
+
const frame = bandHorizontalFrame(horizontal?.relativeTo, geometry);
|
|
156
|
+
if (horizontal?.posOffset !== void 0) return frame.left + emuToPixels(horizontal.posOffset);
|
|
157
|
+
return alignedFrameLeft(horizontal?.align, frame, geometry.boxWidth);
|
|
158
|
+
}
|
|
159
|
+
//#endregion
|
|
160
|
+
export { bandFragmentX, bandTopContentY, isPageFrameRelativeAnchor };
|