@stll/folio-core 0.46.0 → 0.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-edits/apply.d.ts +17 -1
- package/dist/ai-edits/apply.js +31 -27
- package/dist/ai-edits/headless.d.ts +9 -2
- package/dist/ai-edits/headless.js +5 -3
- package/dist/ai-edits/read.d.ts +1 -0
- package/dist/ai-edits/read.js +1 -0
- package/dist/ai-edits/snapshot.js +32 -27
- package/dist/ai-edits/table-cell-mutations.js +15 -7
- package/dist/ai-edits/table-geometry.js +21 -18
- package/dist/ai-edits/table-template.js +2 -2
- package/dist/compare/compare.js +2 -1
- package/dist/compare/content-alignment.js +192 -46
- package/dist/compare/content-types.d.ts +8 -2
- package/dist/compare/content.js +2 -11
- package/dist/compare/plan.js +7 -4
- package/dist/compare/section-boundary-properties.js +1 -2
- package/dist/content-controls/checkboxDisplay.d.ts +8 -2
- package/dist/content-controls/checkboxDisplay.js +11 -5
- package/dist/content-controls/mutateContentControls.js +41 -42
- package/dist/controller/layoutPipeline.js +8 -3
- package/dist/display-list/build/buildDisplayList.js +7 -7
- package/dist/display-list/build/imagePrimitives.d.ts +4 -4
- package/dist/display-list/build/imagePrimitives.js +38 -20
- package/dist/display-list/build/pageBorderPrimitives.js +2 -1
- package/dist/display-list/build/paragraphPrimitives.js +93 -13
- package/dist/display-list/build/previewPrimitives.d.ts +10 -0
- package/dist/display-list/build/previewPrimitives.js +89 -0
- package/dist/display-list/build/strokes.d.ts +177 -8
- package/dist/display-list/build/strokes.js +167 -47
- package/dist/display-list/build/tablePrimitives.js +4 -2
- package/dist/display-list/build/textBoxPrimitives.js +6 -4
- package/dist/display-list/build/textDecorations.d.ts +15 -1
- package/dist/display-list/build/textDecorations.js +15 -1
- package/dist/display-list/dom/renderDisplayListToDom.js +1 -19
- package/dist/display-list/primitives.d.ts +13 -2
- package/dist/display-list/primitives.js +36 -1
- package/dist/document-operations.d.ts +9 -2
- package/dist/document-operations.js +5 -3
- package/dist/docx/attributeRemainder.d.ts +34 -1
- package/dist/docx/attributeRemainder.js +49 -3
- package/dist/docx/blockContentParser.d.ts +2 -0
- package/dist/docx/blockContentParser.js +39 -67
- package/dist/docx/blockPlainText.js +3 -1
- package/dist/docx/borderParser.js +26 -11
- package/dist/docx/builtInStyles.d.ts +8 -16
- package/dist/docx/builtInStyles.js +54 -17
- package/dist/docx/commentAnchorIndex.js +1 -1
- package/dist/docx/commentParser.js +3 -3
- package/dist/docx/commentRangeIntegrity.js +1 -1
- package/dist/docx/commentRangeJoin.js +1 -1
- package/dist/docx/commentReferenceNormalization.js +3 -2
- package/dist/docx/commentReplyMarkers.js +1 -1
- package/dist/docx/compatibility.js +56 -42
- package/dist/docx/containerChildren.d.ts +110 -13
- package/dist/docx/containerChildren.gen.d.ts +16 -1
- package/dist/docx/containerChildren.gen.js +18 -1
- package/dist/docx/containerChildren.js +63 -13
- package/dist/docx/diagramPreview.d.ts +14 -2
- package/dist/docx/diagramPreview.js +81 -169
- package/dist/docx/documentParser.js +4 -1
- package/dist/docx/drawingAnchor.d.ts +87 -0
- package/dist/docx/drawingAnchor.js +201 -0
- package/dist/docx/drawingUtils.d.ts +43 -38
- package/dist/docx/drawingUtils.js +205 -118
- package/dist/docx/fontTableParser.js +102 -41
- package/dist/docx/footnoteParser.js +10 -6
- package/dist/docx/groupDrawingParser.js +4 -3
- package/dist/docx/headerFooterReferenceNormalization.js +1 -1
- package/dist/docx/hyperlinkParser.d.ts +45 -7
- package/dist/docx/hyperlinkParser.js +126 -57
- package/dist/docx/imageParser.js +127 -107
- package/dist/docx/index.d.ts +2 -1
- package/dist/docx/index.js +2 -1
- package/dist/docx/inlineContentRemovals.d.ts +28 -0
- package/dist/docx/inlineContentRemovals.js +46 -0
- package/dist/docx/inlineWrapperContent.d.ts +84 -3
- package/dist/docx/inlineWrapperContent.js +85 -4
- package/dist/docx/inlineWrapperParser.d.ts +11 -0
- package/dist/docx/inlineWrapperParser.js +60 -0
- package/dist/docx/nonVisualDrawingProps.d.ts +5 -13
- package/dist/docx/normalizeBaseDirection.js +4 -2
- package/dist/docx/numberingParser.d.ts +25 -2
- package/dist/docx/numberingParser.js +264 -361
- package/dist/docx/numberingReference.d.ts +9 -16
- package/dist/docx/numberingReference.js +17 -16
- package/dist/docx/numberingReferenceNormalization.js +7 -7
- package/dist/docx/ooxmlCounterFormatter.d.ts +1 -1
- package/dist/docx/ooxmlCounterFormatter.js +4 -1
- package/dist/docx/paraIdAttribute.d.ts +91 -1
- package/dist/docx/paraIdAttribute.js +79 -1
- package/dist/docx/paragraphParser.d.ts +9 -24
- package/dist/docx/paragraphParser.js +212 -396
- package/dist/docx/paragraphProperties.d.ts +23 -0
- package/dist/docx/paragraphProperties.js +279 -0
- package/dist/docx/paragraphPropertySource.js +2 -0
- package/dist/docx/paragraphTextBoxEnrichment.d.ts +2 -1
- package/dist/docx/paragraphTextBoxEnrichment.js +14 -7
- package/dist/docx/paragraphTraversal.d.ts +14 -10
- package/dist/docx/paragraphTraversal.js +47 -49
- package/dist/docx/parseWarningMessage.js +3 -0
- package/dist/docx/parserEnums.d.ts +6 -8
- package/dist/docx/parserEnums.js +4 -6
- package/dist/docx/preservedRunContent.js +16 -6
- package/dist/docx/previewBudget.d.ts +44 -23
- package/dist/docx/previewBudget.js +61 -30
- package/dist/docx/propertyElementAttributes.d.ts +178 -0
- package/dist/docx/propertyElementAttributes.js +114 -0
- package/dist/docx/renderedPageBreakNormalization.js +2 -2
- package/dist/docx/rezip.d.ts +28 -2
- package/dist/docx/rezip.js +78 -9
- package/dist/docx/runConsolidator.d.ts +42 -2
- package/dist/docx/runConsolidator.js +60 -6
- package/dist/docx/runParser.d.ts +54 -18
- package/dist/docx/runParser.js +379 -295
- package/dist/docx/runPayload.d.ts +5 -0
- package/dist/docx/runPayload.js +4 -0
- package/dist/docx/sdtProperties.d.ts +39 -5
- package/dist/docx/sdtProperties.js +205 -84
- package/dist/docx/sdtPropertiesPatch.d.ts +5 -9
- package/dist/docx/sdtPropertiesPatch.js +68 -112
- package/dist/docx/sectionParser.d.ts +1 -2
- package/dist/docx/sectionParser.js +236 -240
- package/dist/docx/selectiveSave.js +3 -2
- package/dist/docx/selectiveXmlPatch.d.ts +21 -2
- package/dist/docx/selectiveXmlPatch.js +195 -99
- package/dist/docx/serializer/blockSdtSerializer.js +2 -96
- package/dist/docx/serializer/borderSerializer.d.ts +5 -5
- package/dist/docx/serializer/borderSerializer.js +10 -8
- package/dist/docx/serializer/documentSerializer.js +3 -0
- package/dist/docx/serializer/fontTableSerializer.js +31 -3
- package/dist/docx/serializer/headerFooterSerializer.js +3 -0
- package/dist/docx/serializer/markupRangeAttributes.d.ts +9 -1
- package/dist/docx/serializer/markupRangeAttributes.js +9 -1
- package/dist/docx/serializer/noteSerializer.js +3 -0
- package/dist/docx/serializer/numberingSerializer.d.ts +1 -6
- package/dist/docx/serializer/numberingSerializer.js +81 -79
- package/dist/docx/serializer/paragraphSerializer.d.ts +1 -9
- package/dist/docx/serializer/paragraphSerializer.js +88 -188
- package/dist/docx/serializer/runSerializer.d.ts +1 -5
- package/dist/docx/serializer/runSerializer.js +109 -59
- package/dist/docx/serializer/sdtPropertiesSerializer.d.ts +26 -0
- package/dist/docx/serializer/sdtPropertiesSerializer.js +111 -0
- package/dist/docx/serializer/sectionPropertiesSerializer.js +34 -45
- package/dist/docx/serializer/settingsSerializer.js +6 -4
- package/dist/docx/serializer/stylesSerializer.js +8 -11
- package/dist/docx/serializer/tableSerializer.js +268 -100
- package/dist/docx/serializer/textFormattingSerializer.d.ts +28 -4
- package/dist/docx/serializer/textFormattingSerializer.js +111 -101
- package/dist/docx/serializer/xmlUtils.d.ts +1 -1
- package/dist/docx/serializer/xmlUtils.js +1 -1
- package/dist/docx/server/createBilingualDocument.js +18 -16
- package/dist/docx/server/migrateYjsAttrSchema.js +3 -3
- package/dist/docx/settingsParser.js +7 -4
- package/dist/docx/shadingParser.d.ts +2 -1
- package/dist/docx/shadingParser.js +43 -7
- package/dist/docx/shapeParser.js +8 -3
- package/dist/docx/strictNames.d.ts +11 -0
- package/dist/docx/strictNames.gen.d.ts +45 -0
- package/dist/docx/strictNames.gen.js +50 -0
- package/dist/docx/strictNames.js +43 -0
- package/dist/docx/strictValueEncodings.gen.js +133 -131
- package/dist/docx/styleParser.js +17 -349
- package/dist/docx/tableParser.d.ts +10 -1
- package/dist/docx/tableParser.js +505 -181
- package/dist/docx/textBoxParser.d.ts +3 -1
- package/dist/docx/textBoxParser.js +18 -8
- package/dist/docx/themeColorAttribute.d.ts +13 -0
- package/dist/docx/themeColorAttribute.js +24 -0
- package/dist/docx/trackedMoveRangeNormalization.js +2 -1
- package/dist/docx/vmlImageParser.d.ts +13 -4
- package/dist/docx/vmlImageParser.js +74 -31
- package/dist/docx/vmlPreview.js +2 -2
- package/dist/docx/wrapPolygon.d.ts +30 -0
- package/dist/docx/wrapPolygon.js +70 -0
- package/dist/docx/xmlParser.d.ts +14 -1
- package/dist/docx/xmlParser.js +18 -2
- package/dist/fonts/embeddedFonts.js +3 -3
- package/dist/headless-layout.js +2 -0
- package/dist/i18n/messages/catalogs.gen.d.ts +68 -0
- package/dist/i18n/messages/catalogs.gen.js +102 -34
- package/dist/i18n/messages/messages.gen.d.ts +4 -0
- package/dist/internal/headlessRevisionResolution.js +9 -0
- package/dist/internal/pageBreakRunSourceDescendantIndex.js +3 -1
- package/dist/internal/paragraphFormattingSerialization.d.ts +20 -9
- package/dist/internal/paragraphFormattingSerialization.js +118 -83
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +1 -0
- package/dist/layout-bridge/convert/footnoteLayout.js +1 -0
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +1 -0
- package/dist/layout-bridge/convert/headerFooterLayout.js +2 -0
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +17 -12
- package/dist/layout-bridge/convert/toFlowBlocks.js +177 -101
- package/dist/layout-engine/index.d.ts +2 -2
- package/dist/layout-engine/index.js +53 -17
- package/dist/layout-engine/measure/measureBlocks.d.ts +3 -0
- package/dist/layout-engine/measure/measureBlocks.js +6 -10
- package/dist/layout-engine/measure/tableCellGrid.js +2 -1
- package/dist/layout-engine/measure/tableFragmentBorderGeometry.js +2 -1
- package/dist/layout-engine/measure/tableInlinePlacement.js +2 -5
- package/dist/layout-engine/paragraphSequence.js +3 -2
- package/dist/layout-engine/renderedBreakReconciliation.js +2 -1
- package/dist/layout-engine/section-breaks.d.ts +49 -2
- package/dist/layout-engine/section-breaks.js +55 -4
- package/dist/layout-engine/types.d.ts +47 -17
- package/dist/layout-engine/types.js +16 -1
- package/dist/layout-painter/borderStroke.d.ts +18 -4
- package/dist/layout-painter/renderPage.js +6 -4
- package/dist/layout-painter/renderParagraph.d.ts +2 -1
- package/dist/layout-painter/renderParagraph.js +13 -26
- package/dist/layout-painter/renderTable.d.ts +4 -1
- package/dist/layout-painter/renderTable.js +22 -22
- package/dist/layout-painter/renderTextBox.js +5 -3
- package/dist/markdown/renderBlock.js +3 -1
- package/dist/markdown/renderRuns.js +7 -2
- package/dist/markdown/renderTable.js +2 -1
- package/dist/model.d.ts +3 -3
- package/dist/model.js +2 -2
- package/dist/paged-layout/sectionBlockWidths.d.ts +3 -0
- package/dist/paged-layout/sectionBlockWidths.js +26 -4
- package/dist/prosemirror/attrs/index.d.ts +22 -4
- package/dist/prosemirror/attrs/index.js +498 -60
- package/dist/prosemirror/bookmarkBoundaryAttrs.d.ts +9 -1
- package/dist/prosemirror/bookmarkBoundaryAttrs.js +22 -3
- package/dist/prosemirror/commands/comments.js +68 -53
- package/dist/prosemirror/commands/contentControls.js +24 -19
- package/dist/prosemirror/commands/image.d.ts +1 -1
- package/dist/prosemirror/commands/image.js +4 -1
- package/dist/prosemirror/commands/paragraph.d.ts +2 -1
- package/dist/prosemirror/commands/propertyChangeScope.d.ts +12 -4
- package/dist/prosemirror/commands/propertyChangeScope.js +22 -4
- package/dist/prosemirror/commands/sectionBreak.d.ts +33 -1
- package/dist/prosemirror/commands/sectionBreak.js +187 -11
- package/dist/prosemirror/conversion/fromProseDoc.d.ts +18 -2
- package/dist/prosemirror/conversion/fromProseDoc.js +330 -183
- package/dist/prosemirror/conversion/index.d.ts +2 -2
- package/dist/prosemirror/conversion/preservedSinkCarriers.d.ts +39 -0
- package/dist/prosemirror/conversion/preservedSinkCarriers.js +19 -0
- package/dist/prosemirror/conversion/runShadingMark.js +14 -1
- package/dist/prosemirror/conversion/sdtAttrs.d.ts +10 -1
- package/dist/prosemirror/conversion/sdtAttrs.js +19 -5
- package/dist/prosemirror/conversion/toProseDoc.js +371 -141
- package/dist/prosemirror/emptyRangeAnchor.d.ts +53 -0
- package/dist/prosemirror/emptyRangeAnchor.js +158 -0
- package/dist/prosemirror/extensions/StarterKit.js +8 -2
- package/dist/prosemirror/extensions/core/DocExtension.js +1 -1
- package/dist/prosemirror/extensions/core/ParagraphExtension.js +19 -15
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +3 -2
- package/dist/prosemirror/extensions/features/ListExtension.js +43 -24
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +4 -3
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +3 -3
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +5 -5
- package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +3 -1
- package/dist/prosemirror/extensions/features/pasteCleanup.js +56 -2
- package/dist/prosemirror/extensions/features/pastedHeadingStyles.js +5 -4
- package/dist/prosemirror/extensions/markRegistry.d.ts +26 -2
- package/dist/prosemirror/extensions/markRegistry.js +73 -10
- package/dist/prosemirror/extensions/marks/InlineWrapperExtension.js +17 -3
- package/dist/prosemirror/extensions/marks/RunIdentityExtension.d.ts +26 -0
- package/dist/prosemirror/extensions/marks/RunIdentityExtension.js +134 -0
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +2 -1
- package/dist/prosemirror/extensions/marks/UnderlineExtension.js +12 -18
- package/dist/prosemirror/extensions/marks/markUtils.js +2 -1
- package/dist/prosemirror/extensions/nodes/BlockBookmarkBoundaryExtension.d.ts +29 -0
- package/dist/prosemirror/extensions/nodes/BlockBookmarkBoundaryExtension.js +46 -0
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +4 -3
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +18 -13
- package/dist/prosemirror/extensions/nodes/BookmarkBoundaryExtension.js +28 -53
- package/dist/prosemirror/extensions/nodes/CommentReferenceExtension.js +10 -0
- package/dist/prosemirror/extensions/nodes/ImageExtension.js +8 -1
- package/dist/prosemirror/extensions/nodes/MoveRangeBoundaryExtension.d.ts +11 -0
- package/dist/prosemirror/extensions/nodes/MoveRangeBoundaryExtension.js +43 -0
- package/dist/prosemirror/extensions/nodes/RangeAnchorExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/nodes/RangeAnchorExtension.js +65 -0
- package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +3 -1
- package/dist/prosemirror/extensions/nodes/SdtExtension.js +22 -16
- package/dist/prosemirror/extensions/nodes/ShapeExtension.js +4 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.js +141 -123
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +4 -0
- package/dist/prosemirror/extensions/nodes/bookmarkBoundaryDom.d.ts +23 -0
- package/dist/prosemirror/extensions/nodes/bookmarkBoundaryDom.js +57 -0
- package/dist/prosemirror/extensions/types.d.ts +12 -3
- package/dist/prosemirror/index.d.ts +4 -2
- package/dist/prosemirror/index.js +2 -1
- package/dist/prosemirror/inlineWrapperStack.js +20 -3
- package/dist/prosemirror/listMarker.d.ts +2 -2
- package/dist/prosemirror/listMarker.js +7 -8
- package/dist/prosemirror/listRenderingAttrs.js +11 -1
- package/dist/prosemirror/listState.d.ts +62 -0
- package/dist/prosemirror/listState.js +49 -0
- package/dist/prosemirror/moveRangeBoundaryAttrs.d.ts +13 -0
- package/dist/prosemirror/moveRangeBoundaryAttrs.js +114 -0
- package/dist/prosemirror/numberedRefFields.js +4 -4
- package/dist/prosemirror/numberingAttr.d.ts +55 -0
- package/dist/prosemirror/numberingAttr.js +74 -0
- package/dist/prosemirror/outlineLevelAttr.d.ts +29 -0
- package/dist/prosemirror/outlineLevelAttr.js +42 -0
- package/dist/prosemirror/paragraphFormattingProvenance.d.ts +9 -0
- package/dist/prosemirror/paragraphFormattingProvenance.js +4 -1
- package/dist/prosemirror/plugins/selectionTracker.d.ts +3 -6
- package/dist/prosemirror/plugins/selectionTracker.js +3 -10
- package/dist/prosemirror/rangeAnchorAttrs.d.ts +14 -0
- package/dist/prosemirror/rangeAnchorAttrs.js +101 -0
- package/dist/prosemirror/replacedAnnotations.d.ts +1 -1
- package/dist/prosemirror/replacedAnnotations.js +24 -6
- package/dist/prosemirror/revisionCarriers.d.ts +86 -2
- package/dist/prosemirror/revisionCarriers.js +86 -60
- package/dist/prosemirror/runFormattingInlineCarriers.d.ts +2 -0
- package/dist/prosemirror/runFormattingInlineCarriers.js +2 -0
- package/dist/prosemirror/runIdentity.d.ts +28 -0
- package/dist/prosemirror/runIdentity.js +36 -0
- package/dist/prosemirror/runStyleFormatting.js +1 -1
- package/dist/prosemirror/schema/index.d.ts +2 -2
- package/dist/prosemirror/schema/marks.d.ts +23 -4
- package/dist/prosemirror/schema/nodes.d.ts +220 -24
- package/dist/prosemirror/sectionCarrier.d.ts +37 -0
- package/dist/prosemirror/sectionCarrier.js +40 -0
- package/dist/prosemirror/selectionState.d.ts +3 -0
- package/dist/prosemirror/selectionState.js +4 -1
- package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +5 -4
- package/dist/prosemirror/styles/resolvedStyleAttrs.js +15 -13
- package/dist/prosemirror/tableResize.js +5 -6
- package/dist/prosemirror/trackedRunInlineAtoms.d.ts +2 -0
- package/dist/prosemirror/trackedRunInlineAtoms.js +2 -0
- package/dist/prosemirror/utils/extractTrackedChanges.d.ts +10 -11
- package/dist/prosemirror/utils/extractTrackedChanges.js +109 -92
- package/dist/prosemirror/validation.js +17 -6
- package/dist/prosemirror/yjsDocumentMetadata.d.ts +2 -2
- package/dist/prosemirror/yjsDocumentMetadata.js +428 -7
- package/dist/prosemirror/zeroWidthAnchors.js +4 -0
- package/dist/style-sets/extract.js +4 -4
- package/dist/style-sets/stellaStyle.js +36 -23
- package/dist/types/colors.d.ts +2 -2
- package/dist/types/content.d.ts +2 -2
- package/dist/types/documentEnumValues.d.ts +53 -26
- package/dist/types/documentEnumValues.js +72 -174
- package/dist/types/formatting.d.ts +2 -2
- package/dist/types/index.d.ts +9 -2
- package/dist/utils/borderCss.d.ts +246 -0
- package/dist/utils/borderCss.js +325 -0
- package/dist/utils/colorResolver.d.ts +4 -3
- package/dist/utils/colorResolver.js +45 -76
- package/dist/utils/createDocument.js +24 -6
- package/dist/utils/findReplace.js +52 -10
- package/dist/utils/formatToStyle.d.ts +84 -2
- package/dist/utils/formatToStyle.js +133 -52
- package/dist/utils/headingCollector.js +3 -2
- package/dist/utils/mergeDocumentContent.js +5 -3
- package/dist/utils/paragraphFormattingMerge.js +27 -6
- package/dist/utils/replaceText.js +1 -1
- package/dist/utils/tableOperations.d.ts +5 -3
- package/dist/utils/tableOperations.js +14 -1
- package/dist/utils/tablePlacement.d.ts +7 -0
- package/dist/utils/tablePlacement.js +14 -0
- package/dist/utils/textDirectionFlow.d.ts +15 -0
- package/dist/utils/textDirectionFlow.js +38 -0
- package/dist/utils/textFormattingMerge.js +16 -4
- package/package.json +10 -10
- package/dist/ai-edits/__fixtures__/paragraphs.d.ts +0 -17
- package/dist/ai-edits/__fixtures__/paragraphs.js +0 -33
- package/dist/compare/__fixtures__/body-sequence.d.ts +0 -119
- package/dist/compare/__fixtures__/body-sequence.js +0 -225
- package/dist/compare/__fixtures__/nested-table.d.ts +0 -16
- package/dist/compare/__fixtures__/nested-table.js +0 -50
- package/dist/compare/__fixtures__/numbered-list.d.ts +0 -34
- package/dist/compare/__fixtures__/numbered-list.js +0 -85
- package/dist/docx/bookmarkPlacement.d.ts +0 -9
- package/dist/docx/bookmarkPlacement.js +0 -52
- package/dist/fonts/embeddedFontTable.d.ts +0 -45
- package/dist/fonts/embeddedFontTable.js +0 -80
- package/dist/prosemirror/extensions/marks/PageBreakRunOwnerExtension.d.ts +0 -13
- package/dist/prosemirror/extensions/marks/PageBreakRunOwnerExtension.js +0 -39
|
@@ -1,14 +1,192 @@
|
|
|
1
|
+
import { mintSectionProperties, sectionPropertiesOf } from "../sectionCarrier.js";
|
|
1
2
|
import { TextSelection } from "prosemirror-state";
|
|
2
3
|
//#region src/prosemirror/commands/sectionBreak.ts
|
|
4
|
+
const sectionEndingMarks = (doc) => {
|
|
5
|
+
const marks = [];
|
|
6
|
+
doc.descendants((node, position) => {
|
|
7
|
+
if (node.type.name !== "paragraph") return true;
|
|
8
|
+
const properties = sectionPropertiesOf(node);
|
|
9
|
+
if (properties) marks.push({
|
|
10
|
+
markPosition: position + node.nodeSize - 1,
|
|
11
|
+
properties
|
|
12
|
+
});
|
|
13
|
+
return false;
|
|
14
|
+
});
|
|
15
|
+
return marks;
|
|
16
|
+
};
|
|
17
|
+
const withSectionProperties = (attrs, properties) => {
|
|
18
|
+
const next = { ...attrs };
|
|
19
|
+
if (properties === null) {
|
|
20
|
+
delete next["_sectionProperties"];
|
|
21
|
+
return next;
|
|
22
|
+
}
|
|
23
|
+
next["_sectionProperties"] = properties;
|
|
24
|
+
return next;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Restate, over the whole document, which paragraph marks end a section.
|
|
28
|
+
*
|
|
29
|
+
* The rule is total in both directions, because a join is: it consumes one
|
|
30
|
+
* paragraph mark and keeps the other, so exactly the marks that survived the
|
|
31
|
+
* transaction still end the sections they ended before. ProseMirror keeps the
|
|
32
|
+
* *first* node's attrs when it joins, which gets both halves of the rule wrong
|
|
33
|
+
* on its own — the mark that survived a backward join loses a break it still
|
|
34
|
+
* owns, and the node that absorbed a section-ending predecessor keeps a break
|
|
35
|
+
* whose mark is gone.
|
|
36
|
+
*
|
|
37
|
+
* Word deletes the section break in the second case: with the caret at the
|
|
38
|
+
* start of the paragraph *after* a break, Backspace removes the break, and the
|
|
39
|
+
* paragraphs it governed join the following section, whose `w:sectPr` then
|
|
40
|
+
* governs them (ECMA-376 Part 1 §17.6.18: a paragraph's `w:sectPr` states the
|
|
41
|
+
* properties of the section ending at that paragraph, so content with no
|
|
42
|
+
* `w:sectPr` before it belongs to the next one).
|
|
43
|
+
*/
|
|
44
|
+
const reconcileSectionEndingMarks = (transaction, marks) => {
|
|
45
|
+
const survivors = /* @__PURE__ */ new Map();
|
|
46
|
+
for (const { markPosition, properties } of marks) {
|
|
47
|
+
const mapped = transaction.mapping.mapResult(markPosition, 1);
|
|
48
|
+
if (!mapped.deleted) survivors.set(mapped.pos, properties);
|
|
49
|
+
}
|
|
50
|
+
const corrections = [];
|
|
51
|
+
transaction.doc.descendants((node, position) => {
|
|
52
|
+
if (node.type.name !== "paragraph") return true;
|
|
53
|
+
const survived = survivors.get(position + node.nodeSize - 1) ?? null;
|
|
54
|
+
if (survived !== sectionPropertiesOf(node)) corrections.push({
|
|
55
|
+
position,
|
|
56
|
+
properties: survived
|
|
57
|
+
});
|
|
58
|
+
return false;
|
|
59
|
+
});
|
|
60
|
+
for (const { position, properties } of corrections) {
|
|
61
|
+
const paragraph = transaction.doc.nodeAt(position);
|
|
62
|
+
if (paragraph) transaction.setNodeMarkup(position, void 0, withSectionProperties(paragraph.attrs, properties));
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Run a command, keeping every section break on the paragraph whose mark
|
|
67
|
+
* survived it.
|
|
68
|
+
*
|
|
69
|
+
* A section break is a property of a paragraph *mark*. The transfer is keyed on
|
|
70
|
+
* the mark's position surviving the transaction, not on which command ran, so
|
|
71
|
+
* deleting a section-ending paragraph outright still removes its section: that
|
|
72
|
+
* mark is gone, and nothing inherits it.
|
|
73
|
+
*/
|
|
74
|
+
const keepSectionBreaksOnSurvivingMarks = (command) => (state, dispatch, view) => {
|
|
75
|
+
if (!dispatch) return command(state, void 0, view);
|
|
76
|
+
const marks = sectionEndingMarks(state.doc);
|
|
77
|
+
if (marks.length === 0) return command(state, dispatch, view);
|
|
78
|
+
let captured = null;
|
|
79
|
+
const capture = (transaction) => {
|
|
80
|
+
captured = transaction;
|
|
81
|
+
};
|
|
82
|
+
if (!command(state, capture, view)) return false;
|
|
83
|
+
const transaction = captured;
|
|
84
|
+
if (transaction === null) return true;
|
|
85
|
+
reconcileSectionEndingMarks(transaction, marks);
|
|
86
|
+
dispatch(transaction);
|
|
87
|
+
return true;
|
|
88
|
+
};
|
|
89
|
+
const selectedParagraphs = (state) => {
|
|
90
|
+
const paragraphs = [];
|
|
91
|
+
const { $from, $to } = state.selection;
|
|
92
|
+
state.doc.nodesBetween($from.pos, $to.pos, (node, position) => {
|
|
93
|
+
if (node.type.name !== "paragraph") return true;
|
|
94
|
+
paragraphs.push({
|
|
95
|
+
position,
|
|
96
|
+
node
|
|
97
|
+
});
|
|
98
|
+
return false;
|
|
99
|
+
});
|
|
100
|
+
return paragraphs;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Rewrite the section record of every paragraph the selection touches.
|
|
104
|
+
*
|
|
105
|
+
* A record is rewritten once and the replacement applied to every paragraph
|
|
106
|
+
* holding it, wherever in the document it sits. A split leaves two halves over
|
|
107
|
+
* one object until the save leg decides which of them ends the section;
|
|
108
|
+
* rewriting them apart would turn that one section into two, and leaving a
|
|
109
|
+
* sharer outside the selection behind would do the same.
|
|
110
|
+
*
|
|
111
|
+
* A paragraph that holds no record is asked on its own, so two break-less
|
|
112
|
+
* paragraphs in one selection author two sections rather than share one.
|
|
113
|
+
*/
|
|
114
|
+
const rewriteSelectedSectionRecords = (rewrite) => (state, dispatch) => {
|
|
115
|
+
const selected = selectedParagraphs(state);
|
|
116
|
+
if (selected.length === 0) return false;
|
|
117
|
+
const replacements = /* @__PURE__ */ new Map();
|
|
118
|
+
for (const { node } of selected) {
|
|
119
|
+
const current = sectionPropertiesOf(node);
|
|
120
|
+
if (current !== null && !replacements.has(current)) replacements.set(current, rewrite(current));
|
|
121
|
+
}
|
|
122
|
+
const selectedPositions = new Set(selected.map(({ position }) => position));
|
|
123
|
+
const corrections = [];
|
|
124
|
+
state.doc.descendants((node, position) => {
|
|
125
|
+
if (node.type.name !== "paragraph") return true;
|
|
126
|
+
const current = sectionPropertiesOf(node);
|
|
127
|
+
if (current === null) {
|
|
128
|
+
if (selectedPositions.has(position)) {
|
|
129
|
+
const minted = rewrite(null);
|
|
130
|
+
if (minted !== null) corrections.push({
|
|
131
|
+
position,
|
|
132
|
+
properties: minted
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
if (replacements.has(current)) {
|
|
138
|
+
const replacement = replacements.get(current) ?? null;
|
|
139
|
+
if (replacement !== current) corrections.push({
|
|
140
|
+
position,
|
|
141
|
+
properties: replacement
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
});
|
|
146
|
+
if (corrections.length === 0) return false;
|
|
147
|
+
if (dispatch) {
|
|
148
|
+
const transaction = state.tr;
|
|
149
|
+
for (const { position, properties } of corrections) {
|
|
150
|
+
const paragraph = transaction.doc.nodeAt(position);
|
|
151
|
+
if (paragraph) transaction.setNodeMarkup(position, void 0, withSectionProperties(paragraph.attrs, properties));
|
|
152
|
+
}
|
|
153
|
+
dispatch(transaction.scrollIntoView());
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* End the selection's sections with `breakType`.
|
|
159
|
+
*
|
|
160
|
+
* A paragraph that already ends a section keeps its page size, margins,
|
|
161
|
+
* columns and header references and changes only `w:type` (§17.6.22), which is
|
|
162
|
+
* the one field the type names; a paragraph that ends none mints a record
|
|
163
|
+
* stating that type alone, and inherits the rest from the section that follows
|
|
164
|
+
* it.
|
|
165
|
+
*/
|
|
166
|
+
const setSectionBreakType = (breakType) => rewriteSelectedSectionRecords((current) => current === null ? mintSectionProperties(breakType) : {
|
|
167
|
+
...current,
|
|
168
|
+
sectionStart: breakType
|
|
169
|
+
});
|
|
170
|
+
/**
|
|
171
|
+
* Remove the section break the selection's paragraphs carry.
|
|
172
|
+
*
|
|
173
|
+
* The record goes, and with it the section boundary: the paragraphs it
|
|
174
|
+
* governed become part of the section that follows, whose `w:sectPr` governs
|
|
175
|
+
* them from then on. That is Word's own rule for deleting a section break, and
|
|
176
|
+
* it is what §17.6.18 says a paragraph with no `w:sectPr` means — nothing has
|
|
177
|
+
* to be merged into the following record, because the following record already
|
|
178
|
+
* states the whole of the section it heads.
|
|
179
|
+
*/
|
|
180
|
+
const removeSectionBreakAtSelection = rewriteSelectedSectionRecords(() => null);
|
|
3
181
|
/**
|
|
4
182
|
* Insert a section break at the current cursor position.
|
|
5
183
|
*
|
|
6
184
|
* In OOXML a section break is the `sectPr` carried by the *last* paragraph of a
|
|
7
|
-
* section. So we split the current paragraph at the cursor,
|
|
8
|
-
*
|
|
9
|
-
* the second half (the first paragraph of the new
|
|
10
|
-
* cursor therefore flows into the new section —
|
|
11
|
-
* or in place for `continuous`.
|
|
185
|
+
* section (§17.6.18). So we split the current paragraph at the cursor, give the
|
|
186
|
+
* first half the one record this insertion mints (it becomes the section end),
|
|
187
|
+
* and leave the cursor in the second half (the first paragraph of the new
|
|
188
|
+
* section). Content after the cursor therefore flows into the new section —
|
|
189
|
+
* onto a new page for `nextPage`, or in place for `continuous`.
|
|
12
190
|
*/
|
|
13
191
|
function insertSectionBreakAtCursor(breakType) {
|
|
14
192
|
return (state, dispatch) => {
|
|
@@ -19,19 +197,17 @@ function insertSectionBreakAtCursor(breakType) {
|
|
|
19
197
|
if (!($from.parent.isTextblock ? state.doc.resolve($from.before()).depth === 0 : $from.depth === 0)) return false;
|
|
20
198
|
if (dispatch) {
|
|
21
199
|
const tr = state.tr;
|
|
200
|
+
const sectionProperties = mintSectionProperties(breakType);
|
|
22
201
|
let cursorPos;
|
|
23
202
|
if ($from.parent.isTextblock) {
|
|
24
203
|
const paraPos = $from.before();
|
|
25
204
|
tr.split($from.pos);
|
|
26
205
|
const firstPara = tr.doc.nodeAt(paraPos);
|
|
27
|
-
if (firstPara) tr.setNodeMarkup(paraPos, void 0,
|
|
28
|
-
...firstPara.attrs,
|
|
29
|
-
sectionBreakType: breakType
|
|
30
|
-
});
|
|
206
|
+
if (firstPara) tr.setNodeMarkup(paraPos, void 0, withSectionProperties(firstPara.attrs, sectionProperties));
|
|
31
207
|
cursorPos = tr.mapping.map($from.pos);
|
|
32
208
|
} else {
|
|
33
209
|
const pos = $from.pos;
|
|
34
|
-
tr.insert(pos, paragraphType.create({
|
|
210
|
+
tr.insert(pos, paragraphType.create({ _sectionProperties: sectionProperties }));
|
|
35
211
|
cursorPos = pos + 1;
|
|
36
212
|
}
|
|
37
213
|
tr.setSelection(TextSelection.create(tr.doc, cursorPos));
|
|
@@ -51,4 +227,4 @@ const insertSectionBreakNextPage = insertSectionBreakAtCursor("nextPage");
|
|
|
51
227
|
*/
|
|
52
228
|
const insertSectionBreakContinuous = insertSectionBreakAtCursor("continuous");
|
|
53
229
|
//#endregion
|
|
54
|
-
export { insertSectionBreakContinuous, insertSectionBreakNextPage };
|
|
230
|
+
export { insertSectionBreakContinuous, insertSectionBreakNextPage, keepSectionBreaksOnSurvivingMarks, removeSectionBreakAtSelection, setSectionBreakType };
|
|
@@ -3,8 +3,24 @@ import { TableAttrs, TableCellAttrs, TableRowAttrs } from "../schema/nodes.js";
|
|
|
3
3
|
import { RunStyleResolver } from "../runStyleFormatting.js";
|
|
4
4
|
import { Mark, Node } from "prosemirror-model";
|
|
5
5
|
//#region src/prosemirror/conversion/fromProseDoc.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Whether a record the editor did not change may come back from the base
|
|
8
|
+
* document by reference.
|
|
9
|
+
*
|
|
10
|
+
* `"none"` rebuilds every record out of ProseMirror, which is what folio does
|
|
11
|
+
* today. `"matched"` is the merge against a matched base record; it is declared
|
|
12
|
+
* here because the measurement that tells the two apart has to exist before the
|
|
13
|
+
* merge does, and it panics until it is implemented. An accepted-but-inert
|
|
14
|
+
* value would let a caller believe it had asked for a merge and get a rebuild.
|
|
15
|
+
*/
|
|
16
|
+
type ProjectionReuse = "none" | "matched";
|
|
17
|
+
/** How the conversion treats records the editor did not change. */
|
|
18
|
+
type FromProseDocOptions = {
|
|
19
|
+
/** Defaults to `"none"`, the only value implemented. */
|
|
20
|
+
reuse?: ProjectionReuse;
|
|
21
|
+
};
|
|
6
22
|
/** Convert a ProseMirror document to the document model. */
|
|
7
|
-
declare function fromProseDoc(pmDoc: Node, baseDocument?: document_d_exports.Document): document_d_exports.Document;
|
|
23
|
+
declare function fromProseDoc(pmDoc: Node, baseDocument?: document_d_exports.Document, { reuse }?: FromProseDocOptions): document_d_exports.Document;
|
|
8
24
|
/**
|
|
9
25
|
* Convert ProseMirror marks to TextFormatting
|
|
10
26
|
*/
|
|
@@ -37,4 +53,4 @@ declare function updateDocumentContent(originalDocument: document_d_exports.Docu
|
|
|
37
53
|
*/
|
|
38
54
|
declare function proseDocToBlocks(pmDoc: Node, baseContent?: document_d_exports.BlockContent[], styles?: NonNullable<document_d_exports.Document["package"]>["styles"]): document_d_exports.BlockContent[];
|
|
39
55
|
//#endregion
|
|
40
|
-
export { fromProseDoc, marksToTextFormatting, proseDocToBlocks, standaloneTableCellFromProseMirror, tableAttrsToFormatting, tableCellAttrsToFormatting, tableRowAttrsToFormatting, updateDocumentContent };
|
|
56
|
+
export { FromProseDocOptions, ProjectionReuse, fromProseDoc, marksToTextFormatting, proseDocToBlocks, standaloneTableCellFromProseMirror, tableAttrsToFormatting, tableCellAttrsToFormatting, tableRowAttrsToFormatting, updateDocumentContent };
|