@stll/folio-core 0.15.0 → 0.15.2
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 +2 -2
- package/dist/ai-edits/blockRange.d.ts +3 -17
- package/dist/ai-edits/clean-text.d.ts +0 -1
- package/dist/ai-edits/headless.d.ts +23 -19
- package/dist/ai-edits/read.d.ts +8 -5
- package/dist/ai-edits/scoped-reading.d.ts +0 -1
- package/dist/ai-edits/snapshot.d.ts +1 -7
- package/dist/ai-edits/table-cell-mutations.d.ts +4 -31
- package/dist/ai-edits/table-row-column-mutations.d.ts +9 -39
- package/dist/ai-edits/table-targets.d.ts +0 -1
- package/dist/ai-edits/types.d.ts +32 -17
- package/dist/ai-suggestions/apply.d.ts +0 -1
- package/dist/ai-suggestions/conflict.d.ts +0 -1
- package/dist/ai-suggestions/text-positions.d.ts +2 -2
- package/dist/ai-suggestions/types.d.ts +27 -13
- package/dist/content-controls/errors.d.ts +0 -1
- package/dist/content-controls/findContentControls.d.ts +6 -4
- package/dist/content-controls/mutateContentControls.d.ts +0 -1
- package/dist/controller/activeEditorStory.d.ts +1 -6
- package/dist/controller/collaborationModules.d.ts +0 -1
- package/dist/controller/contentControlWidgetController.d.ts +0 -1
- package/dist/controller/folioEditor.d.ts +2 -2
- package/dist/controller/folioEditorEvents.d.ts +5 -3
- package/dist/controller/fontReadiness.d.ts +0 -1
- package/dist/controller/headerFooterEditorManager.d.ts +1 -5
- package/dist/controller/hiddenEditorApi.d.ts +35 -18
- package/dist/controller/hiddenEditorManager.d.ts +5 -3
- package/dist/controller/latestRequestGate.d.ts +3 -1
- package/dist/controller/layoutPipeline.d.ts +1 -1
- package/dist/controller/layoutScheduler.d.ts +8 -5
- package/dist/controller/layoutSession.d.ts +0 -1
- package/dist/controller/noteEditorManager.d.ts +0 -1
- package/dist/document-operations.d.ts +5 -12
- package/dist/document-stories.d.ts +0 -1
- package/dist/docx/blockContentParser.d.ts +0 -1
- package/dist/docx/blockContentParser.js +1 -0
- package/dist/docx/bookmarkParser.d.ts +5 -3
- package/dist/docx/bookmarkPlacement.d.ts +0 -1
- package/dist/docx/commentParser.d.ts +0 -1
- package/dist/docx/commentParser.js +30 -2
- package/dist/docx/commentRangeIntegrity.d.ts +0 -1
- package/dist/docx/commentReferenceNormalization.d.ts +1 -9
- package/dist/docx/commentReplyMarkers.d.ts +0 -1
- package/dist/docx/compatibility.d.ts +0 -1
- package/dist/docx/conformance.d.ts +0 -1
- package/dist/docx/corePropertiesParser.d.ts +0 -1
- package/dist/docx/documentParser.d.ts +0 -1
- package/dist/docx/documentParser.js +3 -1
- package/dist/docx/drawingIdNormalization.d.ts +5 -0
- package/dist/docx/drawingIdNormalization.js +35 -0
- package/dist/docx/drawingUtils.d.ts +24 -3
- package/dist/docx/drawingUtils.js +134 -28
- package/dist/docx/encryption/agileDecryption.d.ts +0 -1
- package/dist/docx/encryption/cryptoBytes.js +4 -1
- package/dist/docx/encryption/openEncryptedDocx.d.ts +5 -2
- package/dist/docx/ensureParaIds.d.ts +7 -3
- package/dist/docx/fieldParser.d.ts +23 -11
- package/dist/docx/fontTableParser.d.ts +0 -1
- package/dist/docx/footnoteParser.d.ts +26 -13
- package/dist/docx/footnoteParser.js +4 -2
- package/dist/docx/groupDrawingParser.d.ts +0 -1
- package/dist/docx/headerFooterParser.d.ts +9 -5
- package/dist/docx/headerFooterRefParser.d.ts +0 -1
- package/dist/docx/headerFooterReferenceNormalization.d.ts +1 -6
- package/dist/docx/headerFooterVerbatim.d.ts +4 -3
- package/dist/docx/headerFooterVerbatim.js +6 -1
- package/dist/docx/hyperlinkParser.d.ts +0 -1
- package/dist/docx/hyperlinkParser.js +1 -9
- package/dist/docx/imageParser.d.ts +0 -1
- package/dist/docx/imageParser.js +15 -7
- package/dist/docx/mathToMathml.d.ts +0 -1
- package/dist/docx/metadataPrivacy.d.ts +1 -3
- package/dist/docx/modelValidation.d.ts +0 -1
- package/dist/docx/newImage.d.ts +11 -0
- package/dist/docx/newImage.js +11 -0
- package/dist/docx/normalizeBaseDirection.d.ts +0 -1
- package/dist/docx/notePropertiesParser.d.ts +0 -1
- package/dist/docx/numberingParser.d.ts +10 -6
- package/dist/docx/numberingParser.js +4 -2
- package/dist/docx/numberingReferenceNormalization.d.ts +1 -9
- package/dist/docx/paragraphParser.d.ts +0 -1
- package/dist/docx/paragraphParser.js +31 -15
- package/dist/docx/paragraphTextBoxEnrichment.d.ts +0 -1
- package/dist/docx/paragraphTextBoxEnrichment.js +2 -1
- package/dist/docx/paragraphTraversal.d.ts +5 -10
- package/dist/docx/paragraphTraversal.js +20 -13
- package/dist/docx/parser.d.ts +15 -8
- package/dist/docx/parser.js +22 -1
- package/dist/docx/parserEnums.d.ts +5 -2
- package/dist/docx/parserEnums.js +6 -2
- package/dist/docx/relsParser.d.ts +1 -0
- package/dist/docx/renderedPageBreakNormalization.d.ts +12 -0
- package/dist/docx/renderedPageBreakNormalization.js +59 -0
- package/dist/docx/replyToComment.d.ts +2 -2
- package/dist/docx/rezip.d.ts +6 -7
- package/dist/docx/rezip.js +136 -102
- package/dist/docx/runConsolidator.d.ts +0 -1
- package/dist/docx/runConsolidator.js +0 -1
- package/dist/docx/runParser.d.ts +0 -1
- package/dist/docx/runParser.js +25 -12
- package/dist/docx/sdtProperties.d.ts +0 -1
- package/dist/docx/sdtPropertiesPatch.d.ts +0 -1
- package/dist/docx/sectionParser.d.ts +0 -1
- package/dist/docx/selectiveSave.d.ts +5 -3
- package/dist/docx/selectiveSave.js +2 -2
- package/dist/docx/selectiveSaveFlags.d.ts +4 -2
- package/dist/docx/selectiveXmlPatch.js +20 -8
- package/dist/docx/serializer/blockSdtSerializer.d.ts +0 -1
- package/dist/docx/serializer/blockSdtSerializer.js +2 -1
- package/dist/docx/serializer/borderSerializer.d.ts +0 -1
- package/dist/docx/serializer/commentSerializer.d.ts +0 -1
- package/dist/docx/serializer/commentSerializer.js +19 -40
- package/dist/docx/serializer/documentSerializer.d.ts +0 -1
- package/dist/docx/serializer/documentSerializer.js +1 -1
- package/dist/docx/serializer/fontTableSerializer.d.ts +0 -1
- package/dist/docx/serializer/headerFooterSerializer.d.ts +0 -1
- package/dist/docx/serializer/headerFooterSerializer.js +1 -1
- package/dist/docx/serializer/noteSerializer.d.ts +0 -1
- package/dist/docx/serializer/noteSerializer.js +1 -1
- package/dist/docx/serializer/numberingSerializer.d.ts +0 -1
- package/dist/docx/serializer/paragraphSerializer.d.ts +0 -1
- package/dist/docx/serializer/paragraphSerializer.js +10 -23
- package/dist/docx/serializer/runSerializer.d.ts +0 -1
- package/dist/docx/serializer/runSerializer.js +53 -32
- package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +0 -1
- package/dist/docx/serializer/sectionPropertiesSerializer.js +7 -5
- package/dist/docx/serializer/settingsSerializer.d.ts +0 -1
- package/dist/docx/serializer/stylesSerializer.d.ts +0 -1
- package/dist/docx/serializer/tableSerializer.d.ts +0 -1
- package/dist/docx/serializer/tableSerializer.js +2 -0
- package/dist/docx/serializer/themeSerializer.d.ts +0 -1
- package/dist/docx/serializer/xmlUtils.js +10 -1
- package/dist/docx/server/applyDocxXmlPatchProposal.d.ts +3 -10
- package/dist/docx/server/docxToMarkdown.d.ts +0 -1
- package/dist/docx/server/evaluateDocxXmlPatchProposal.d.ts +3 -9
- package/dist/docx/server/inspectDocxPackage.d.ts +3 -8
- package/dist/docx/server/validateDocxConformance.d.ts +0 -1
- package/dist/docx/settingsParser.d.ts +2 -2
- package/dist/docx/shapeParser.d.ts +0 -1
- package/dist/docx/shapeParser.js +16 -123
- package/dist/docx/streamingXmlParser.d.ts +16 -0
- package/dist/docx/streamingXmlParser.js +248 -0
- package/dist/docx/styleParser.d.ts +0 -1
- package/dist/docx/styleParser.js +6 -4
- package/dist/docx/tableParser.d.ts +1 -2
- package/dist/docx/tableParser.js +11 -12
- package/dist/docx/textBoxParser.d.ts +1 -2
- package/dist/docx/textBoxParser.js +5 -2
- package/dist/docx/textWhitespace.d.ts +4 -0
- package/dist/docx/textWhitespace.js +4 -0
- package/dist/docx/themeParser.d.ts +0 -1
- package/dist/docx/trackedMoveRangeNormalization.d.ts +1 -8
- package/dist/docx/unzip.d.ts +6 -3
- package/dist/docx/unzip.js +96 -40
- package/dist/docx/vmlImageParser.d.ts +0 -1
- package/dist/docx/vmlImageParser.js +3 -1
- package/dist/docx/watermarkParser.d.ts +0 -1
- package/dist/docx/xmlParser.d.ts +21 -8
- package/dist/docx/xmlParser.js +126 -43
- package/dist/fields/bookmarkPages.d.ts +0 -1
- package/dist/fields/bookmarkText.d.ts +0 -1
- package/dist/fields/evaluateField.d.ts +5 -3
- package/dist/fields/fieldContext.d.ts +11 -5
- package/dist/fields/resolveFieldValues.d.ts +4 -3
- package/dist/fields/sectionPageCounts.d.ts +0 -1
- package/dist/fields/seqValues.d.ts +0 -1
- package/dist/fonts/embeddedFontTable.d.ts +5 -2
- package/dist/fonts/embeddedFonts.d.ts +15 -7
- package/dist/index.d.ts +1 -0
- package/dist/layout-bridge/cellSelectionHighlight.d.ts +0 -1
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +5 -3
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +2 -2
- package/dist/layout-bridge/convert/paragraphFrames.d.ts +0 -1
- package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +8 -8
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +25 -13
- package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +3 -2
- package/dist/layout-bridge/dom/findHfPmSpans.d.ts +2 -1
- package/dist/layout-bridge/dom/noteStoryDom.d.ts +0 -1
- package/dist/layout-bridge/engine/clickToPosition.d.ts +5 -3
- package/dist/layout-bridge/engine/hitTest.d.ts +40 -19
- package/dist/layout-bridge/engine/selectionRects.d.ts +16 -8
- package/dist/layout-bridge/engine/tableWidthUtils.d.ts +0 -1
- package/dist/layout-bridge/headerFooterLayout.d.ts +0 -1
- package/dist/layout-bridge/sectionColumns.d.ts +0 -1
- package/dist/layout-bridge/tableInsertHover.d.ts +8 -4
- package/dist/layout-engine/headerFooterRefs.d.ts +0 -1
- package/dist/layout-engine/index.d.ts +0 -1
- package/dist/layout-engine/justificationCompatibility.d.ts +0 -1
- package/dist/layout-engine/keep-together.d.ts +7 -4
- package/dist/layout-engine/layoutInstrumentation.d.ts +0 -1
- package/dist/layout-engine/lineFlow.d.ts +0 -1
- package/dist/layout-engine/measure/cache.d.ts +0 -1
- package/dist/layout-engine/measure/effectiveLineBreakPolicy.d.ts +6 -7
- package/dist/layout-engine/measure/floatingTablePosition.d.ts +0 -1
- package/dist/layout-engine/measure/floatingZones.d.ts +14 -6
- package/dist/layout-engine/measure/font-metrics.worker.d.ts +0 -1
- package/dist/layout-engine/measure/lineBreakProvider.d.ts +20 -9
- package/dist/layout-engine/measure/lineBreaks.d.ts +0 -1
- package/dist/layout-engine/measure/listMarkerWidth.d.ts +0 -1
- package/dist/layout-engine/measure/measureBlocks.d.ts +1 -0
- package/dist/layout-engine/measure/measureContainer.d.ts +0 -1
- package/dist/layout-engine/measure/measureHelpers.d.ts +0 -1
- package/dist/layout-engine/measure/measureParagraph.d.ts +3 -2
- package/dist/layout-engine/measure/measureParagraph.js +23 -3
- package/dist/layout-engine/measure/measureProvider.d.ts +0 -1
- package/dist/layout-engine/measure/measureTypes.d.ts +4 -2
- package/dist/layout-engine/measure/measureWorker.d.ts +0 -1
- package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +0 -1
- package/dist/layout-engine/measure/tableCellFloating.d.ts +0 -1
- package/dist/layout-engine/measure/tableCellFlow.d.ts +0 -1
- package/dist/layout-engine/measure/tableCellGrid.d.ts +0 -1
- package/dist/layout-engine/measure/textBoxParagraphLayout.d.ts +0 -1
- package/dist/layout-engine/measure/textMeasurementPolicy.d.ts +0 -1
- package/dist/layout-engine/paginator.d.ts +66 -33
- package/dist/layout-engine/paragraphFragmentRange.d.ts +0 -1
- package/dist/layout-engine/paragraphFrame.d.ts +0 -1
- package/dist/layout-engine/paragraphSequence.d.ts +0 -1
- package/dist/layout-engine/paragraphSpacing.d.ts +1 -5
- package/dist/layout-engine/pmPageIndex.d.ts +0 -1
- package/dist/layout-engine/renderedBreakReconciliation.d.ts +2 -17
- package/dist/layout-engine/section-breaks.d.ts +34 -17
- package/dist/layout-engine/tableRowBreak.d.ts +4 -3
- package/dist/layout-engine/textBoxFlow.d.ts +0 -1
- package/dist/layout-engine/textBoxGroup.d.ts +0 -1
- package/dist/layout-engine/types.d.ts +382 -189
- package/dist/layout-painter/anchoredImagePosition.d.ts +0 -1
- package/dist/layout-painter/borderStroke.d.ts +0 -1
- package/dist/layout-painter/imageLayout.d.ts +14 -7
- package/dist/layout-painter/index.d.ts +9 -5
- package/dist/layout-painter/registry/modules/image.d.ts +0 -1
- package/dist/layout-painter/registry/modules/paragraph.d.ts +0 -1
- package/dist/layout-painter/registry/modules/table.d.ts +0 -1
- package/dist/layout-painter/registry/modules/textBox.d.ts +0 -1
- package/dist/layout-painter/registry/modules.d.ts +0 -1
- package/dist/layout-painter/registry/registry.d.ts +0 -1
- package/dist/layout-painter/registry/types.d.ts +0 -1
- package/dist/layout-painter/renderFragment.d.ts +2 -2
- package/dist/layout-painter/renderImage.d.ts +0 -1
- package/dist/layout-painter/renderPage.d.ts +71 -42
- package/dist/layout-painter/renderParagraph.d.ts +28 -14
- package/dist/layout-painter/renderParagraph.js +6 -2
- package/dist/layout-painter/renderTable.d.ts +0 -1
- package/dist/layout-painter/renderTextBox.d.ts +0 -1
- package/dist/layout-painter/renderUtils.d.ts +17 -9
- package/dist/layout-painter/renderWatermark.d.ts +2 -2
- package/dist/layout-painter/sdtBoundary.d.ts +0 -1
- package/dist/managers/AutoSaveManager.d.ts +22 -11
- package/dist/managers/ClipboardManager.d.ts +0 -1
- package/dist/managers/ContextMenuManager.d.ts +5 -8
- package/dist/managers/DocumentLoaderManager.d.ts +12 -6
- package/dist/managers/EditorModeManager.d.ts +3 -2
- package/dist/managers/ErrorManager.d.ts +0 -1
- package/dist/managers/FindReplaceManager.d.ts +0 -1
- package/dist/managers/HistoryManager.d.ts +19 -9
- package/dist/managers/TableSelectionManager.d.ts +0 -1
- package/dist/managers/editorShortcuts.d.ts +4 -6
- package/dist/markdown/annotations.d.ts +0 -1
- package/dist/markdown/fromMarkdown.d.ts +0 -1
- package/dist/markdown/images.d.ts +0 -1
- package/dist/markdown/index.d.ts +0 -1
- package/dist/markdown/internals.d.ts +0 -1
- package/dist/markdown/renderBlock.d.ts +0 -1
- package/dist/markdown/renderParagraph.d.ts +0 -1
- package/dist/markdown/renderRuns.d.ts +0 -1
- package/dist/markdown/renderTable.d.ts +0 -1
- package/dist/markdown/trailers.d.ts +0 -1
- package/dist/markdown/types.d.ts +39 -18
- package/dist/model.d.ts +3 -5
- package/dist/model.js +2 -2
- package/dist/paged-layout/incrementalMeasure.d.ts +1 -10
- package/dist/paged-layout/pageText.d.ts +1 -1
- package/dist/paged-layout/paragraphFlash.d.ts +0 -1
- package/dist/paged-layout/paragraphFlashTypes.d.ts +5 -2
- package/dist/paged-layout/rangeProjection.d.ts +10 -5
- package/dist/paged-layout/scrollNavigation.d.ts +0 -1
- package/dist/paged-layout/scrollPageInfo.d.ts +12 -13
- package/dist/paged-layout/scrollToPmPosition.d.ts +0 -1
- package/dist/paged-layout/sectionBlockWidths.d.ts +2 -11
- package/dist/paged-layout/sectionGeometry.d.ts +0 -1
- package/dist/paged-layout/selectionViewportRect.d.ts +0 -1
- package/dist/paged-layout/transactionDirtyRange.d.ts +0 -1
- package/dist/paged-layout/zoomScrollAnchor.d.ts +2 -12
- package/dist/prosemirror/attrs/index.d.ts +6 -4
- package/dist/prosemirror/attrs/index.js +22 -2
- package/dist/prosemirror/autospacingBase.d.ts +0 -1
- package/dist/prosemirror/cellDragSelection.d.ts +6 -4
- package/dist/prosemirror/commands/comments.d.ts +6 -4
- package/dist/prosemirror/commands/contentControls.d.ts +5 -3
- package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +1 -1
- package/dist/prosemirror/commands/formatPainter.d.ts +0 -1
- package/dist/prosemirror/commands/formatting.d.ts +1 -1
- package/dist/prosemirror/commands/hyperlink.d.ts +4 -9
- package/dist/prosemirror/commands/image.d.ts +0 -1
- package/dist/prosemirror/commands/pageBreak.d.ts +0 -1
- package/dist/prosemirror/commands/paragraph.d.ts +0 -1
- package/dist/prosemirror/commands/pastePlainText.d.ts +0 -1
- package/dist/prosemirror/commands/propertyChangeScope.d.ts +0 -1
- package/dist/prosemirror/commands/sectionBreak.d.ts +0 -1
- package/dist/prosemirror/commands/table.d.ts +0 -1
- package/dist/prosemirror/commands/tableCellMergeResolution.d.ts +0 -1
- package/dist/prosemirror/commentIdAllocator.d.ts +2 -2
- package/dist/prosemirror/commentOps.d.ts +0 -1
- package/dist/prosemirror/conversion/effectiveTableCellFormatting.d.ts +1 -10
- package/dist/prosemirror/conversion/fromProseDoc.d.ts +0 -1
- package/dist/prosemirror/conversion/fromProseDoc.js +17 -10
- package/dist/prosemirror/conversion/runShadingMark.d.ts +0 -1
- package/dist/prosemirror/conversion/sdtAttrs.d.ts +0 -1
- package/dist/prosemirror/conversion/toProseDoc.d.ts +3 -2
- package/dist/prosemirror/conversion/toProseDoc.js +17 -3
- package/dist/prosemirror/extensions/ExtensionManager.d.ts +0 -1
- package/dist/prosemirror/extensions/StarterKit.d.ts +7 -4
- package/dist/prosemirror/extensions/core/DocExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/core/TextExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/create.d.ts +0 -1
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ListExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +7 -4
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +3 -1
- package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +1 -0
- package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/LanguageExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/markUtils.d.ts +0 -1
- package/dist/prosemirror/extensions/marks/markUtils.js +4 -1
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/ImageExtension.js +2 -0
- package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/RenderedPageBreakExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/ShapeExtension.js +2 -0
- package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/TabExtension.js +32 -9
- package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +4 -3
- package/dist/prosemirror/extensions/nodes/TextBoxAnchorExtension.d.ts +0 -1
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +53 -27
- package/dist/prosemirror/extensions/types.d.ts +0 -1
- package/dist/prosemirror/findReplaceSelection.d.ts +5 -3
- package/dist/prosemirror/imageCommit.d.ts +0 -1
- package/dist/prosemirror/index.d.ts +4 -0
- package/dist/prosemirror/insertOperations.d.ts +0 -1
- package/dist/prosemirror/paraText.d.ts +0 -1
- package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +2 -2
- package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +0 -1
- package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +9 -7
- package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +2 -2
- package/dist/prosemirror/plugins/contentControlWidgets.d.ts +4 -7
- package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +3 -8
- package/dist/prosemirror/plugins/documentStyles.d.ts +0 -1
- package/dist/prosemirror/plugins/pmTextScan.d.ts +2 -2
- package/dist/prosemirror/plugins/revisionIds.d.ts +0 -1
- package/dist/prosemirror/plugins/selectionTracker.d.ts +23 -12
- package/dist/prosemirror/plugins/suggestionMode.d.ts +0 -1
- package/dist/prosemirror/plugins/templateDirectives.d.ts +10 -8
- package/dist/prosemirror/plugins/templatePreviewValues.d.ts +10 -5
- package/dist/prosemirror/plugins/templateSlashMenu.d.ts +2 -2
- package/dist/prosemirror/queries.d.ts +0 -1
- package/dist/prosemirror/schema/index.d.ts +2 -3
- package/dist/prosemirror/schema/marks.d.ts +8 -5
- package/dist/prosemirror/schema/nodes.d.ts +344 -164
- package/dist/prosemirror/selectionState.d.ts +13 -7
- package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +0 -1
- package/dist/prosemirror/styles/styleResolver.d.ts +3 -2
- package/dist/prosemirror/tableCellMergeRevision.d.ts +0 -1
- package/dist/prosemirror/tableResize.d.ts +0 -1
- package/dist/prosemirror/textBoxAnchorAttrs.d.ts +0 -1
- package/dist/prosemirror/utils/extractTrackedChanges.d.ts +8 -5
- package/dist/prosemirror/utils/findParagraphByParaId.d.ts +0 -1
- package/dist/prosemirror/utils/tabCalculator.d.ts +18 -7
- package/dist/prosemirror/utils/visualLineNavigation.d.ts +0 -1
- package/dist/prosemirror/validation.d.ts +0 -1
- package/dist/prosemirror/validation.js +5 -3
- package/dist/redline.d.ts +16 -8
- package/dist/render-dom/BodySelectionOverlay.d.ts +1 -9
- package/dist/render-dom/HeaderFooterSelectionOverlay.d.ts +0 -1
- package/dist/render-dom/RemoteSelectionOverlay.d.ts +1 -8
- package/dist/render-dom/resolveSidebarItemPositions.d.ts +1 -9
- package/dist/style-engine/styleEngine.d.ts +21 -11
- package/dist/style-sets/extract.d.ts +4 -3
- package/dist/style-sets/stellaStyle.d.ts +0 -1
- package/dist/style-sets/types.d.ts +0 -1
- package/dist/symbols.d.ts +6 -2
- package/dist/types/block-id.d.ts +3 -6
- package/dist/types/content.d.ts +2 -2
- package/dist/types/document.d.ts +0 -3
- package/dist/types/documentEnumValues.d.ts +5 -1
- package/dist/types/documentEnumValues.js +19 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/utils/clipboard.d.ts +17 -8
- package/dist/utils/colorResolver.d.ts +9 -5
- package/dist/utils/createDocument.d.ts +19 -10
- package/dist/utils/documentLoaderBehavior.d.ts +1 -5
- package/dist/utils/docxInput.js +1 -0
- package/dist/utils/findReplace.d.ts +0 -1
- package/dist/utils/fontFamilyMerge.d.ts +0 -1
- package/dist/utils/fontResolver.d.ts +10 -4
- package/dist/utils/formatToStyle.d.ts +0 -1
- package/dist/utils/headerFooter.d.ts +8 -16
- package/dist/utils/headingCollector.d.ts +7 -4
- package/dist/utils/mergeDocumentContent.d.ts +0 -1
- package/dist/utils/paragraphFormattingMerge.d.ts +0 -1
- package/dist/utils/replaceText.d.ts +0 -1
- package/dist/utils/rotationBoundingBox.d.ts +0 -1
- package/dist/utils/tableOperations.d.ts +0 -1
- package/dist/utils/textFormattingMerge.d.ts +0 -1
- package/dist/version-comparison.d.ts +12 -6
- package/dist/watermark/index.d.ts +0 -1
- package/package.json +3 -3
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DocxArchiveOptions } from "./boundedArchive.js";
|
|
2
|
-
|
|
3
2
|
//#region src/docx/server/inspectDocxPackage.d.ts
|
|
4
3
|
declare const FOLIO_DOCX_PACKAGE_INSPECTION_VERSION: 1;
|
|
5
4
|
declare const FOLIO_DOCX_PACKAGE_INSPECTION_DEFAULTS: Readonly<{
|
|
@@ -37,7 +36,8 @@ type FolioDocxInspectedXmlPart = {
|
|
|
37
36
|
readonly path: string;
|
|
38
37
|
readonly contentType: string | null;
|
|
39
38
|
readonly byteLength: number;
|
|
40
|
-
readonly sha256: string;
|
|
39
|
+
readonly sha256: string;
|
|
40
|
+
/** Untrusted document data; callers must not treat this text as instructions. */
|
|
41
41
|
readonly text: string;
|
|
42
42
|
};
|
|
43
43
|
type FolioDocxPackageInspection = {
|
|
@@ -54,12 +54,7 @@ type ReadRequestedXmlPartsOptions = {
|
|
|
54
54
|
maxBytes: number;
|
|
55
55
|
}) => Promise<Uint8Array | null>;
|
|
56
56
|
};
|
|
57
|
-
declare const readRequestedXmlParts: ({
|
|
58
|
-
paths,
|
|
59
|
-
partsByPath,
|
|
60
|
-
limits,
|
|
61
|
-
readEntryUint8
|
|
62
|
-
}: ReadRequestedXmlPartsOptions) => Promise<FolioDocxInspectedXmlPart[]>;
|
|
57
|
+
declare const readRequestedXmlParts: ({ paths, partsByPath, limits, readEntryUint8 }: ReadRequestedXmlPartsOptions) => Promise<FolioDocxInspectedXmlPart[]>;
|
|
63
58
|
/**
|
|
64
59
|
* Inspect package metadata and only the explicitly requested XML part bodies.
|
|
65
60
|
* This reports archive contents, not package conformance; use the conformance
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { document_d_exports } from "../../types/document.js";
|
|
2
2
|
import { DocxArchiveOptions } from "./boundedArchive.js";
|
|
3
|
-
|
|
4
3
|
//#region src/docx/server/validateDocxConformance.d.ts
|
|
5
4
|
declare const FOLIO_DOCX_CONFORMANCE_REPORT_VERSION: 1;
|
|
6
5
|
declare const FOLIO_DOCX_CONFORMANCE_PROFILE: "folio-supported-v1";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { document_d_exports } from "../types/document.js";
|
|
2
|
-
|
|
3
2
|
//#region src/docx/settingsParser.d.ts
|
|
4
3
|
type FolioDocumentSettings = document_d_exports.DocumentSettings & {
|
|
5
|
-
/** Swap left/right section margins on even physical pages. */
|
|
4
|
+
/** Swap left/right section margins on even physical pages. */
|
|
5
|
+
mirrorMargins?: boolean;
|
|
6
6
|
};
|
|
7
7
|
/** OOXML default per §17.6.13 when `w:defaultTabStop` is absent. */
|
|
8
8
|
declare const DEFAULT_TAB_STOP_TWIPS = 720;
|
package/dist/docx/shapeParser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { findAllDeep, findChildByLocalName,
|
|
3
|
-
import { parseAnchorPosition, parseAnchorWrap,
|
|
1
|
+
import { ShapeTypeSchema, narrowEnum } from "./parserEnums.js";
|
|
2
|
+
import { findAllDeep, findChildByLocalName, getAttribute, parseNumericAttribute } from "./xmlParser.js";
|
|
3
|
+
import { parseAnchorPosition, parseAnchorWrap, parseFill, parseOutline } from "./drawingUtils.js";
|
|
4
4
|
//#region src/docx/shapeParser.ts
|
|
5
5
|
/** Convert OOXML rotation (1/60000ths of a degree) to degrees. */
|
|
6
6
|
function rotToDegrees(rot) {
|
|
@@ -13,115 +13,7 @@ function rotToDegrees(rot) {
|
|
|
13
13
|
* Falls through to `drawingUtils.parseFill` for solid / none cases.
|
|
14
14
|
*/
|
|
15
15
|
function parseShapeFill(spPr) {
|
|
16
|
-
|
|
17
|
-
if (base?.type !== "gradient" || !spPr) return base;
|
|
18
|
-
const gradFill = findChildByLocalName(spPr, "gradFill");
|
|
19
|
-
if (!gradFill) return base;
|
|
20
|
-
return parseGradientFill(gradFill);
|
|
21
|
-
}
|
|
22
|
-
function parseGradientFill(gradFill) {
|
|
23
|
-
let gradientType = "linear";
|
|
24
|
-
let angle;
|
|
25
|
-
const lin = findChildByLocalName(gradFill, "lin");
|
|
26
|
-
if (lin) {
|
|
27
|
-
gradientType = "linear";
|
|
28
|
-
const ang = getAttribute(lin, null, "ang");
|
|
29
|
-
if (ang) {
|
|
30
|
-
const parsed = Number.parseInt(ang, 10);
|
|
31
|
-
angle = Number.isNaN(parsed) ? void 0 : parsed / 6e4;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const path = findChildByLocalName(gradFill, "path");
|
|
35
|
-
if (path) {
|
|
36
|
-
const pathType = getAttribute(path, null, "path");
|
|
37
|
-
if (pathType === "circle") gradientType = "radial";
|
|
38
|
-
else if (pathType === "rect") gradientType = "rectangular";
|
|
39
|
-
else gradientType = "path";
|
|
40
|
-
}
|
|
41
|
-
const stops = [];
|
|
42
|
-
const gsLst = findChildByLocalName(gradFill, "gsLst");
|
|
43
|
-
if (gsLst) for (const gs of findChildrenByLocalName(gsLst, "gs")) {
|
|
44
|
-
const pos = getAttribute(gs, null, "pos");
|
|
45
|
-
const position = pos ? Number.parseInt(pos, 10) : 0;
|
|
46
|
-
const color = parseColorElement(gs);
|
|
47
|
-
if (color) stops.push({
|
|
48
|
-
position: Number.isNaN(position) ? 0 : position,
|
|
49
|
-
color
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
type: "gradient",
|
|
54
|
-
gradient: {
|
|
55
|
-
type: gradientType,
|
|
56
|
-
...angle !== void 0 ? { angle } : {},
|
|
57
|
-
stops
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
const LINE_END_TYPES = /* @__PURE__ */ new Set([
|
|
62
|
-
"none",
|
|
63
|
-
"triangle",
|
|
64
|
-
"stealth",
|
|
65
|
-
"diamond",
|
|
66
|
-
"oval",
|
|
67
|
-
"arrow"
|
|
68
|
-
]);
|
|
69
|
-
function narrowLineEndType(value) {
|
|
70
|
-
if (value === null || value === void 0) return "none";
|
|
71
|
-
for (const allowed of LINE_END_TYPES) if (allowed === value) return allowed;
|
|
72
|
-
return "none";
|
|
73
|
-
}
|
|
74
|
-
function narrowLineEndSize(value) {
|
|
75
|
-
if (value === "sm" || value === "med" || value === "lg") return value;
|
|
76
|
-
}
|
|
77
|
-
function parseLineEnd(element) {
|
|
78
|
-
const type = narrowLineEndType(getAttribute(element, null, "type"));
|
|
79
|
-
const width = narrowLineEndSize(getAttribute(element, null, "w"));
|
|
80
|
-
const length = narrowLineEndSize(getAttribute(element, null, "len"));
|
|
81
|
-
return {
|
|
82
|
-
type,
|
|
83
|
-
...width !== void 0 ? { width } : {},
|
|
84
|
-
...length !== void 0 ? { length } : {}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Parse a shape outline with cap, join, and arrow end fidelity. Returns
|
|
89
|
-
* `undefined` when the spPr has no `<a:ln>`, an explicit `<a:noFill/>`,
|
|
90
|
-
* or no usable attributes.
|
|
91
|
-
*/
|
|
92
|
-
function parseShapeOutline(spPr) {
|
|
93
|
-
const ln = findChildByLocalName(spPr, "ln");
|
|
94
|
-
if (!ln) return;
|
|
95
|
-
if (findChildByLocalName(ln, "noFill")) return;
|
|
96
|
-
const outline = {};
|
|
97
|
-
const w = getAttribute(ln, null, "w");
|
|
98
|
-
if (w) {
|
|
99
|
-
const parsed = Number.parseInt(w, 10);
|
|
100
|
-
if (!Number.isNaN(parsed)) outline.width = parsed;
|
|
101
|
-
}
|
|
102
|
-
const cap = getAttribute(ln, null, "cap");
|
|
103
|
-
if (cap === "flat") outline.cap = "flat";
|
|
104
|
-
else if (cap === "rnd") outline.cap = "round";
|
|
105
|
-
else if (cap === "sq") outline.cap = "square";
|
|
106
|
-
if (findChildByLocalName(ln, "bevel")) outline.join = "bevel";
|
|
107
|
-
else if (findChildByLocalName(ln, "round")) outline.join = "round";
|
|
108
|
-
else if (findChildByLocalName(ln, "miter")) outline.join = "miter";
|
|
109
|
-
const solidFill = findChildByLocalName(ln, "solidFill");
|
|
110
|
-
if (solidFill) {
|
|
111
|
-
const color = parseColorElement(solidFill);
|
|
112
|
-
if (color) outline.color = color;
|
|
113
|
-
}
|
|
114
|
-
const prstDash = findChildByLocalName(ln, "prstDash");
|
|
115
|
-
if (prstDash) {
|
|
116
|
-
const narrowed = narrowEnum(getAttribute(prstDash, null, "val"), ShapeOutlineStyleSchema);
|
|
117
|
-
if (narrowed !== void 0) outline.style = narrowed;
|
|
118
|
-
}
|
|
119
|
-
const headEnd = findChildByLocalName(ln, "headEnd");
|
|
120
|
-
if (headEnd) outline.headEnd = parseLineEnd(headEnd);
|
|
121
|
-
const tailEnd = findChildByLocalName(ln, "tailEnd");
|
|
122
|
-
if (tailEnd) outline.tailEnd = parseLineEnd(tailEnd);
|
|
123
|
-
if (outline.width === void 0 && outline.color === void 0 && outline.cap === void 0 && outline.join === void 0 && outline.style === void 0 && outline.headEnd === void 0 && outline.tailEnd === void 0) return;
|
|
124
|
-
return outline;
|
|
16
|
+
return parseFill(spPr);
|
|
125
17
|
}
|
|
126
18
|
function parseTransform(xfrm) {
|
|
127
19
|
if (!xfrm) return { size: {
|
|
@@ -179,13 +71,10 @@ function colorNeedsRawPreservation(color) {
|
|
|
179
71
|
}
|
|
180
72
|
function fillNeedsRawPreservation(fill) {
|
|
181
73
|
if (!fill) return false;
|
|
182
|
-
if (fill.type === "solid") return
|
|
74
|
+
if (fill.type === "solid") return false;
|
|
183
75
|
if (fill.type === "gradient") return fill.gradient?.stops.some((stop) => colorNeedsRawPreservation(stop.color)) ?? false;
|
|
184
76
|
return false;
|
|
185
77
|
}
|
|
186
|
-
function outlineNeedsRawPreservation(outline) {
|
|
187
|
-
return colorNeedsRawPreservation(outline?.color);
|
|
188
|
-
}
|
|
189
78
|
/**
|
|
190
79
|
* Parse a `<wps:wsp>` element into a Shape model. Does NOT pick up the
|
|
191
80
|
* extent / position / wrap fields — those live on the wrapping
|
|
@@ -197,7 +86,7 @@ function parseShape(node) {
|
|
|
197
86
|
const shapeType = parseShapeType(spPr);
|
|
198
87
|
const { size, transform } = parseTransform(findChildByLocalName(spPr, "xfrm"));
|
|
199
88
|
const fill = parseShapeFill(spPr);
|
|
200
|
-
const outline =
|
|
89
|
+
const outline = parseOutline(spPr);
|
|
201
90
|
const id = cNvPr ? getAttribute(cNvPr, null, "id") ?? void 0 : void 0;
|
|
202
91
|
const name = cNvPr ? getAttribute(cNvPr, null, "name") ?? void 0 : void 0;
|
|
203
92
|
const shape = {
|
|
@@ -231,13 +120,17 @@ function parseShapeFromDrawing(drawingEl) {
|
|
|
231
120
|
if (!wsp) return null;
|
|
232
121
|
if (findChildByLocalName(wsp, "txbx") !== null) return null;
|
|
233
122
|
const spPr = findChildByLocalName(wsp, "spPr");
|
|
234
|
-
if (hasUnsupportedGeometry(spPr) || hasUnsupportedRgbColorModifiers(spPr) || hasUnmodeledFill(spPr) || fillNeedsRawPreservation(parseShapeFill(spPr))
|
|
123
|
+
if (hasUnsupportedGeometry(spPr) || hasUnsupportedRgbColorModifiers(spPr) || hasUnmodeledFill(spPr) || fillNeedsRawPreservation(parseShapeFill(spPr))) return null;
|
|
235
124
|
const shape = parseShape(wsp);
|
|
236
125
|
const extent = findChildByLocalName(container, "extent");
|
|
237
|
-
if (extent)
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
126
|
+
if (extent) {
|
|
127
|
+
const outerWidth = parseNumericAttribute(extent, null, "cx");
|
|
128
|
+
const outerHeight = parseNumericAttribute(extent, null, "cy");
|
|
129
|
+
shape.size = {
|
|
130
|
+
width: outerWidth !== void 0 && (outerWidth > 0 || shape.size.width === 0) ? outerWidth : shape.size.width,
|
|
131
|
+
height: outerHeight !== void 0 && (outerHeight > 0 || shape.size.height === 0) ? outerHeight : shape.size.height
|
|
132
|
+
};
|
|
133
|
+
}
|
|
241
134
|
if (container === anchor) {
|
|
242
135
|
const position = parseAnchorPosition(container);
|
|
243
136
|
if (position) shape.position = position;
|
|
@@ -266,7 +159,7 @@ function shouldPreserveRawShapeDrawing(drawingEl) {
|
|
|
266
159
|
if (hasUnsupportedGeometry(spPr)) return true;
|
|
267
160
|
if (hasUnsupportedRgbColorModifiers(spPr)) return true;
|
|
268
161
|
if (hasUnmodeledFill(spPr)) return true;
|
|
269
|
-
return fillNeedsRawPreservation(parseShapeFill(spPr))
|
|
162
|
+
return fillNeedsRawPreservation(parseShapeFill(spPr));
|
|
270
163
|
}
|
|
271
164
|
//#endregion
|
|
272
165
|
export { parseShape, parseShapeFromDrawing, shouldPreserveRawShapeDrawing };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { XmlElement } from "./xmlParser.js";
|
|
2
|
+
//#region src/docx/streamingXmlParser.d.ts
|
|
3
|
+
type ParseXmlResult = {
|
|
4
|
+
status: "parsed";
|
|
5
|
+
value: XmlElement;
|
|
6
|
+
} | {
|
|
7
|
+
status: "unsupported";
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Parse ordinary OOXML into Folio's existing element representation in one
|
|
11
|
+
* pass. Unsupported or malformed constructs return a sentinel so callers can
|
|
12
|
+
* retain the general-purpose parser as a compatibility fallback.
|
|
13
|
+
*/
|
|
14
|
+
declare const parseStreamingXml: (xml: string) => ParseXmlResult;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { parseStreamingXml };
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
//#region src/docx/streamingXmlParser.ts
|
|
2
|
+
const BUILT_IN_ENTITIES = {
|
|
3
|
+
amp: "&",
|
|
4
|
+
apos: "'",
|
|
5
|
+
gt: ">",
|
|
6
|
+
lt: "<",
|
|
7
|
+
quot: "\""
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Parse ordinary OOXML into Folio's existing element representation in one
|
|
11
|
+
* pass. Unsupported or malformed constructs return a sentinel so callers can
|
|
12
|
+
* retain the general-purpose parser as a compatibility fallback.
|
|
13
|
+
*/
|
|
14
|
+
const parseStreamingXml = (xml) => {
|
|
15
|
+
const root = { elements: [] };
|
|
16
|
+
const stack = [];
|
|
17
|
+
let cursor = 0;
|
|
18
|
+
let mergeAdjacentText = false;
|
|
19
|
+
while (cursor < xml.length) {
|
|
20
|
+
const open = xml.indexOf("<", cursor);
|
|
21
|
+
if (open === -1) {
|
|
22
|
+
if (!appendText(xml.slice(cursor), stack, mergeAdjacentText)) return { status: "unsupported" };
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
if (open > cursor && !appendText(xml.slice(cursor, open), stack, mergeAdjacentText)) return { status: "unsupported" };
|
|
26
|
+
if (open > cursor) mergeAdjacentText = true;
|
|
27
|
+
if (xml.startsWith("<!--", open)) {
|
|
28
|
+
const close = xml.indexOf("-->", open + 4);
|
|
29
|
+
if (close === -1) return { status: "unsupported" };
|
|
30
|
+
cursor = close + 3;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (xml.startsWith("<![CDATA[", open)) {
|
|
34
|
+
const close = xml.indexOf("]]>", open + 9);
|
|
35
|
+
if (close === -1 || !appendRawText(normalizeLineEndings(xml.slice(open + 9, close)), stack)) return { status: "unsupported" };
|
|
36
|
+
cursor = close + 3;
|
|
37
|
+
mergeAdjacentText = false;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (xml.startsWith("<?", open)) {
|
|
41
|
+
const close = xml.indexOf("?>", open + 2);
|
|
42
|
+
if (close === -1) return { status: "unsupported" };
|
|
43
|
+
cursor = close + 2;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (xml.startsWith("<!", open)) return { status: "unsupported" };
|
|
47
|
+
const close = findTagClose(xml, open + 1);
|
|
48
|
+
if (close === -1) return { status: "unsupported" };
|
|
49
|
+
if (xml.charCodeAt(open + 1) === 47) {
|
|
50
|
+
const name = xml.slice(open + 2, close).trim();
|
|
51
|
+
const frame = stack.pop();
|
|
52
|
+
if (!frame || frame.name !== name) return { status: "unsupported" };
|
|
53
|
+
cursor = close + 1;
|
|
54
|
+
mergeAdjacentText = false;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const parsedTag = parseOpenTag(xml, open + 1, close);
|
|
58
|
+
if (parsedTag.status === "unsupported") return parsedTag;
|
|
59
|
+
const parent = stack.at(-1)?.element ?? root;
|
|
60
|
+
appendElement(parent, parsedTag.element);
|
|
61
|
+
if (!parsedTag.selfClosing) {
|
|
62
|
+
if (stack.length >= 100) return { status: "unsupported" };
|
|
63
|
+
stack.push({
|
|
64
|
+
element: parsedTag.element,
|
|
65
|
+
name: parsedTag.name
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
cursor = close + 1;
|
|
69
|
+
mergeAdjacentText = false;
|
|
70
|
+
}
|
|
71
|
+
if (stack.length > 0) return { status: "unsupported" };
|
|
72
|
+
return {
|
|
73
|
+
status: "parsed",
|
|
74
|
+
value: root
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
const parseOpenTag = (xml, start, close) => {
|
|
78
|
+
let cursor = skipWhitespace(xml, start, close);
|
|
79
|
+
const nameStart = cursor;
|
|
80
|
+
cursor = scanName(xml, cursor, close);
|
|
81
|
+
if (cursor === nameStart) return { status: "unsupported" };
|
|
82
|
+
const name = xml.slice(nameStart, cursor);
|
|
83
|
+
if (isUnsafePropertyName(name)) return { status: "unsupported" };
|
|
84
|
+
let attributes;
|
|
85
|
+
let selfClosing = false;
|
|
86
|
+
while (cursor < close) {
|
|
87
|
+
cursor = skipWhitespace(xml, cursor, close);
|
|
88
|
+
if (cursor >= close) break;
|
|
89
|
+
if (xml.charCodeAt(cursor) === 47) {
|
|
90
|
+
selfClosing = true;
|
|
91
|
+
cursor = skipWhitespace(xml, cursor + 1, close);
|
|
92
|
+
if (cursor !== close) return { status: "unsupported" };
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
const attributeNameStart = cursor;
|
|
96
|
+
cursor = scanName(xml, cursor, close);
|
|
97
|
+
if (cursor === attributeNameStart) return { status: "unsupported" };
|
|
98
|
+
const attributeName = xml.slice(attributeNameStart, cursor);
|
|
99
|
+
if (isUnsafePropertyName(attributeName)) return { status: "unsupported" };
|
|
100
|
+
cursor = skipWhitespace(xml, cursor, close);
|
|
101
|
+
if (xml.charCodeAt(cursor) !== 61) return { status: "unsupported" };
|
|
102
|
+
cursor = skipWhitespace(xml, cursor + 1, close);
|
|
103
|
+
const quote = xml.charCodeAt(cursor);
|
|
104
|
+
if (quote !== 34 && quote !== 39) return { status: "unsupported" };
|
|
105
|
+
const valueStart = cursor + 1;
|
|
106
|
+
cursor = xml.indexOf(quote === 34 ? "\"" : "'", valueStart);
|
|
107
|
+
if (cursor === -1 || cursor > close) return { status: "unsupported" };
|
|
108
|
+
const decoded = decodeXmlEntities(normalizeLineEndings(xml.slice(valueStart, cursor)));
|
|
109
|
+
if (decoded === null) return { status: "unsupported" };
|
|
110
|
+
attributes ??= {};
|
|
111
|
+
attributes[attributeName] = decoded;
|
|
112
|
+
cursor += 1;
|
|
113
|
+
}
|
|
114
|
+
const element = {
|
|
115
|
+
type: "element",
|
|
116
|
+
name
|
|
117
|
+
};
|
|
118
|
+
if (attributes) element.attributes = attributes;
|
|
119
|
+
return {
|
|
120
|
+
status: "parsed",
|
|
121
|
+
element,
|
|
122
|
+
name,
|
|
123
|
+
selfClosing
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
const appendElement = (parent, child) => {
|
|
127
|
+
parent.elements ??= [];
|
|
128
|
+
parent.elements.push(child);
|
|
129
|
+
};
|
|
130
|
+
const appendText = (text, stack, mergeAdjacentText) => {
|
|
131
|
+
if (text.length === 0) return true;
|
|
132
|
+
const decoded = decodeXmlEntities(normalizeLineEndings(text));
|
|
133
|
+
if (decoded === null) return false;
|
|
134
|
+
const parent = stack.at(-1)?.element;
|
|
135
|
+
const previous = mergeAdjacentText ? parent?.elements?.at(-1) : void 0;
|
|
136
|
+
if (previous?.type === "text" && typeof previous.text === "string") {
|
|
137
|
+
previous.text += decoded;
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return appendRawText(decoded, stack);
|
|
141
|
+
};
|
|
142
|
+
const appendRawText = (text, stack) => {
|
|
143
|
+
const parent = stack.at(-1)?.element;
|
|
144
|
+
if (!parent) return text.trim().length === 0;
|
|
145
|
+
appendElement(parent, {
|
|
146
|
+
type: "text",
|
|
147
|
+
text
|
|
148
|
+
});
|
|
149
|
+
return true;
|
|
150
|
+
};
|
|
151
|
+
const findTagClose = (xml, start) => {
|
|
152
|
+
let quote = 0;
|
|
153
|
+
for (let cursor = start; cursor < xml.length; cursor += 1) {
|
|
154
|
+
const code = xml.charCodeAt(cursor);
|
|
155
|
+
if (quote !== 0) {
|
|
156
|
+
if (code === quote) quote = 0;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (code === 34 || code === 39) {
|
|
160
|
+
quote = code;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (code === 62) return cursor;
|
|
164
|
+
}
|
|
165
|
+
return -1;
|
|
166
|
+
};
|
|
167
|
+
const skipWhitespace = (xml, start, limit) => {
|
|
168
|
+
let cursor = start;
|
|
169
|
+
while (cursor < limit) {
|
|
170
|
+
const code = xml.charCodeAt(cursor);
|
|
171
|
+
if (code !== 9 && code !== 10 && code !== 13 && code !== 32) break;
|
|
172
|
+
cursor += 1;
|
|
173
|
+
}
|
|
174
|
+
return cursor;
|
|
175
|
+
};
|
|
176
|
+
const scanName = (xml, start, limit) => {
|
|
177
|
+
let cursor = start;
|
|
178
|
+
while (cursor < limit) {
|
|
179
|
+
const code = xml.charCodeAt(cursor);
|
|
180
|
+
if (code === 9 || code === 10 || code === 13 || code === 32 || code === 47 || code === 61 || code === 62) break;
|
|
181
|
+
cursor += 1;
|
|
182
|
+
}
|
|
183
|
+
return cursor;
|
|
184
|
+
};
|
|
185
|
+
const decodeXmlEntities = (value) => {
|
|
186
|
+
const firstEntity = value.indexOf("&");
|
|
187
|
+
if (firstEntity === -1) return value;
|
|
188
|
+
const parts = [];
|
|
189
|
+
let cursor = 0;
|
|
190
|
+
let entityStart = firstEntity;
|
|
191
|
+
while (entityStart !== -1) {
|
|
192
|
+
parts.push(value.slice(cursor, entityStart));
|
|
193
|
+
const entityEnd = value.indexOf(";", entityStart + 1);
|
|
194
|
+
if (entityEnd === -1) return null;
|
|
195
|
+
const entity = value.slice(entityStart + 1, entityEnd);
|
|
196
|
+
const decoded = decodeXmlEntity(entity);
|
|
197
|
+
if (decoded === null) return null;
|
|
198
|
+
parts.push(decoded);
|
|
199
|
+
cursor = entityEnd + 1;
|
|
200
|
+
entityStart = value.indexOf("&", cursor);
|
|
201
|
+
}
|
|
202
|
+
parts.push(value.slice(cursor));
|
|
203
|
+
return parts.join("");
|
|
204
|
+
};
|
|
205
|
+
const normalizeLineEndings = (value) => {
|
|
206
|
+
if (!value.includes("\r")) return value;
|
|
207
|
+
return value.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
|
|
208
|
+
};
|
|
209
|
+
const decodeXmlEntity = (entity) => {
|
|
210
|
+
switch (entity) {
|
|
211
|
+
case "amp": return BUILT_IN_ENTITIES.amp;
|
|
212
|
+
case "apos": return BUILT_IN_ENTITIES.apos;
|
|
213
|
+
case "gt": return BUILT_IN_ENTITIES.gt;
|
|
214
|
+
case "lt": return BUILT_IN_ENTITIES.lt;
|
|
215
|
+
case "quot": return BUILT_IN_ENTITIES.quot;
|
|
216
|
+
}
|
|
217
|
+
if (entity.charCodeAt(0) !== 35) return null;
|
|
218
|
+
const hexadecimal = entity.charCodeAt(1) === 120 || entity.charCodeAt(1) === 88;
|
|
219
|
+
const digits = entity.slice(hexadecimal ? 2 : 1);
|
|
220
|
+
if (digits.length === 0 || !hasOnlyDigits(digits, hexadecimal)) return null;
|
|
221
|
+
const codePoint = Number.parseInt(digits, hexadecimal ? 16 : 10);
|
|
222
|
+
if (!Number.isInteger(codePoint) || codePoint <= 0 || codePoint > 1114111 || codePoint >= 55296 && codePoint <= 57343) return null;
|
|
223
|
+
return String.fromCodePoint(codePoint);
|
|
224
|
+
};
|
|
225
|
+
const hasOnlyDigits = (value, hexadecimal) => {
|
|
226
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
227
|
+
const code = value.charCodeAt(index);
|
|
228
|
+
if (!(code >= 48 && code <= 57) && !(hexadecimal && code >= 97 && code <= 102) && !(hexadecimal && code >= 65 && code <= 70)) return false;
|
|
229
|
+
}
|
|
230
|
+
return true;
|
|
231
|
+
};
|
|
232
|
+
const isUnsafePropertyName = (name) => {
|
|
233
|
+
switch (name) {
|
|
234
|
+
case "__defineGetter__":
|
|
235
|
+
case "__defineSetter__":
|
|
236
|
+
case "__lookupGetter__":
|
|
237
|
+
case "__lookupSetter__":
|
|
238
|
+
case "__proto__":
|
|
239
|
+
case "constructor":
|
|
240
|
+
case "hasOwnProperty":
|
|
241
|
+
case "prototype":
|
|
242
|
+
case "toString":
|
|
243
|
+
case "valueOf": return true;
|
|
244
|
+
default: return false;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
//#endregion
|
|
248
|
+
export { parseStreamingXml };
|
package/dist/docx/styleParser.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BorderStyleSchema, ConditionalStyleTypeSchema, EmphasisMarkSchema, FontThemeSchema, HighlightColorSchema, LineSpacingRuleSchema, ParagraphAlignmentSchema, ShadingPatternSchema, StyleTypeSchema, TabLeaderSchema, TabStopAlignmentSchema, TableCellTextDirectionSchema, TableRowHeightRuleSchema, TableWidthTypeSchema, TextEffectSchema, ThemeColorSlotSchema, UnderlineStyleSchema, narrowEnum } from "./parserEnums.js";
|
|
2
|
-
import { findChild, findChildren, getAttribute, getLocalName, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue, parseXmlDocument } from "./xmlParser.js";
|
|
1
|
+
import { BorderStyleSchema, ConditionalStyleTypeSchema, EmphasisMarkSchema, FontHintSchema, FontThemeSchema, HighlightColorSchema, LineSpacingRuleSchema, ParagraphAlignmentSchema, ShadingPatternSchema, StyleTypeSchema, TabLeaderSchema, TabStopAlignmentSchema, TableCellTextDirectionSchema, TableRowHeightRuleSchema, TableWidthTypeSchema, TextEffectSchema, ThemeColorSlotSchema, UnderlineStyleSchema, narrowEnum } from "./parserEnums.js";
|
|
2
|
+
import { findChild, findChildren, getAttribute, getLocalName, parseBooleanElement, parseNumberingLevelAttribute, parseNumericAttribute, parseTableMeasurementValue, parseXmlDocument } from "./xmlParser.js";
|
|
3
3
|
import { mergeTextFormatting } from "../utils/textFormattingMerge.js";
|
|
4
4
|
import { mergeParagraphFormatting } from "../utils/paragraphFormattingMerge.js";
|
|
5
5
|
import { resolveThemeFontRef } from "./themeParser.js";
|
|
@@ -76,6 +76,8 @@ function parseRunProperties(rPr, theme) {
|
|
|
76
76
|
if (eastAsia) fontFamily.eastAsia = eastAsia;
|
|
77
77
|
const csFont = getAttribute(rFonts, "w", "cs");
|
|
78
78
|
if (csFont) fontFamily.cs = csFont;
|
|
79
|
+
const hint = narrowEnum(getAttribute(rFonts, "w", "hint"), FontHintSchema);
|
|
80
|
+
if (hint) fontFamily.hint = hint;
|
|
79
81
|
const asciiTheme = narrowEnum(getAttribute(rFonts, "w", "asciiTheme"), FontThemeSchema);
|
|
80
82
|
if (asciiTheme) {
|
|
81
83
|
fontFamily.asciiTheme = asciiTheme;
|
|
@@ -244,7 +246,7 @@ function parseTabStops(tabs) {
|
|
|
244
246
|
alignment
|
|
245
247
|
};
|
|
246
248
|
const leader = narrowEnum(getAttribute(tab, "w", "leader"), TabLeaderSchema);
|
|
247
|
-
if (leader) tabStop.leader = leader;
|
|
249
|
+
if (leader && leader !== "none") tabStop.leader = leader;
|
|
248
250
|
result.push(tabStop);
|
|
249
251
|
}
|
|
250
252
|
}
|
|
@@ -342,7 +344,7 @@ function parseParagraphProperties(pPr, theme) {
|
|
|
342
344
|
if (val !== void 0) formatting.numPr.numId = val;
|
|
343
345
|
}
|
|
344
346
|
if (ilvl) {
|
|
345
|
-
const val =
|
|
347
|
+
const val = parseNumberingLevelAttribute(ilvl);
|
|
346
348
|
if (val !== void 0) formatting.numPr.ilvl = val;
|
|
347
349
|
}
|
|
348
350
|
}
|
|
@@ -2,7 +2,6 @@ import { document_d_exports } from "../types/document.js";
|
|
|
2
2
|
import { NumberingMap } from "./numberingParser.js";
|
|
3
3
|
import { StyleMap } from "./styleParser.js";
|
|
4
4
|
import { XmlElement } from "./xmlParser.js";
|
|
5
|
-
|
|
6
5
|
//#region src/docx/tableParser.d.ts
|
|
7
6
|
/**
|
|
8
7
|
* Sanity cap on `w:gridSpan` (and the derived table column count). Word's
|
|
@@ -139,7 +138,7 @@ declare function parseTableGrid(tblGridElement: XmlElement | null): number[] | u
|
|
|
139
138
|
declare function parseTable(tblElement: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null, options?: {
|
|
140
139
|
inHeaderFooter?: boolean;
|
|
141
140
|
rootXmlns?: Record<string, string>;
|
|
142
|
-
}): document_d_exports.Table;
|
|
141
|
+
}): document_d_exports.Table | undefined;
|
|
143
142
|
/**
|
|
144
143
|
* Get the number of columns in a table
|
|
145
144
|
*
|
package/dist/docx/tableParser.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BorderStyleSchema, FloatingTableXSpecSchema, FloatingTableYSpecSchema, ShadingPatternSchema, TableCellTextDirectionSchema, ThemeColorSlotSchema, narrowEnum } from "./parserEnums.js";
|
|
2
|
-
import { findChild, findChildByLocalName, findChildren, getAttribute, getChildElements, mergeXmlnsDeclarations, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue } from "./xmlParser.js";
|
|
2
|
+
import { findChild, findChildByLocalName, findChildren, getAttribute, getChildElements, getLocalName, mergeXmlnsDeclarations, parseBooleanElement, parseNumericAttribute, parseTableMeasurementValue } from "./xmlParser.js";
|
|
3
3
|
import { parseBookmarkEnd, parseBookmarkStart } from "./bookmarkParser.js";
|
|
4
4
|
import { parseParagraph } from "./paragraphParser.js";
|
|
5
5
|
import { appendBookmarkMarkerToLastParagraphInBlocks, appendBookmarkMarkerToLastParagraphInCells, prependBookmarkMarkersToFirstParagraphInBlocks, prependBookmarkMarkersToFirstParagraphInCell } from "./bookmarkPlacement.js";
|
|
@@ -394,12 +394,14 @@ function parseTableRowProperties(trPrElement) {
|
|
|
394
394
|
const heightElement = findChild(trPrElement, "w", "trHeight");
|
|
395
395
|
if (heightElement) {
|
|
396
396
|
const heightVal = parseNumericAttribute(heightElement, "w", "val");
|
|
397
|
-
if (heightVal !== void 0 && heightVal > 0)
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
397
|
+
if (heightVal !== void 0 && heightVal > 0) {
|
|
398
|
+
formatting.height = {
|
|
399
|
+
value: heightVal,
|
|
400
|
+
type: "dxa"
|
|
401
|
+
};
|
|
402
|
+
const hRule = getAttribute(heightElement, "w", "hRule");
|
|
403
|
+
if (hRule === "auto" || hRule === "atLeast" || hRule === "exact") formatting.heightRule = hRule;
|
|
404
|
+
}
|
|
403
405
|
}
|
|
404
406
|
if (parseBooleanElement(findChild(trPrElement, "w", "tblHeader"))) formatting.header = true;
|
|
405
407
|
if (parseBooleanElement(findChild(trPrElement, "w", "cantSplit"))) formatting.cantSplit = true;
|
|
@@ -536,6 +538,7 @@ function parseCellContent(tcElement, styles, theme, numbering, rels, media, opti
|
|
|
536
538
|
}
|
|
537
539
|
if (localName === "tbl") {
|
|
538
540
|
const table = parseTable(child, styles, theme, numbering, rels, media, options);
|
|
541
|
+
if (!table) return;
|
|
539
542
|
if (prependBookmarkMarkersToFirstParagraphInBlocks([table], pendingBookmarkMarkers)) pendingBookmarkMarkers.length = 0;
|
|
540
543
|
content.push(table);
|
|
541
544
|
return;
|
|
@@ -635,11 +638,6 @@ function parseTableRow(trElement, styles, theme, numbering, rels, media, options
|
|
|
635
638
|
if (pendingBookmarkMarkers.length > 0) appendBookmarkMarkersToLastCell(row, pendingBookmarkMarkers);
|
|
636
639
|
return row;
|
|
637
640
|
}
|
|
638
|
-
function getLocalName(name) {
|
|
639
|
-
if (!name) return "";
|
|
640
|
-
const colonIndex = name.indexOf(":");
|
|
641
|
-
return colonIndex === -1 ? name : name.slice(colonIndex + 1);
|
|
642
|
-
}
|
|
643
641
|
function parseBookmarkMarker(child, localName) {
|
|
644
642
|
if (localName === "bookmarkStart") return parseBookmarkStart(child);
|
|
645
643
|
return parseBookmarkEnd(child);
|
|
@@ -751,6 +749,7 @@ function parseTable(tblElement, styles, theme, numbering, rels, media, options)
|
|
|
751
749
|
for (const sdtChild of getChildElements(sdtContent)) parseTableChild(sdtChild);
|
|
752
750
|
};
|
|
753
751
|
for (const child of getChildElements(tblElement)) parseTableChild(child);
|
|
752
|
+
if (table.rows.length === 0) return;
|
|
754
753
|
inferImplicitSingleCellRowSpans(table, rowsWithGridOffsets);
|
|
755
754
|
return table;
|
|
756
755
|
}
|
|
@@ -2,7 +2,6 @@ import { document_d_exports } from "../types/document.js";
|
|
|
2
2
|
import { NumberingMap } from "./numberingParser.js";
|
|
3
3
|
import { StyleMap } from "./styleParser.js";
|
|
4
4
|
import { XmlElement } from "./xmlParser.js";
|
|
5
|
-
|
|
6
5
|
//#region src/docx/textBoxParser.d.ts
|
|
7
6
|
/**
|
|
8
7
|
* Extract raw paragraph elements from w:txbxContent
|
|
@@ -19,7 +18,7 @@ type ParagraphParserFn = (node: XmlElement, styles: StyleMap | null, theme: docu
|
|
|
19
18
|
/**
|
|
20
19
|
* Type for the table parser function to avoid circular imports
|
|
21
20
|
*/
|
|
22
|
-
type TableParserFn = (node: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null) => document_d_exports.Table;
|
|
21
|
+
type TableParserFn = (node: XmlElement, styles: StyleMap | null, theme: document_d_exports.Theme | null, numbering: NumberingMap | null, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null) => document_d_exports.Table | undefined;
|
|
23
22
|
/**
|
|
24
23
|
* Parse text box content with provided parser functions
|
|
25
24
|
* This avoids circular dependencies by accepting parser functions as parameters
|
|
@@ -55,7 +55,10 @@ function parseTextBoxContent(txbxContent, parseParagraph, parseTable, styles, th
|
|
|
55
55
|
if (localName === "p") {
|
|
56
56
|
const paragraph = parseParagraph(child, styles, theme, numbering, rels, media);
|
|
57
57
|
blocks.push(paragraph);
|
|
58
|
-
} else if (localName === "tbl" && parseTable)
|
|
58
|
+
} else if (localName === "tbl" && parseTable) {
|
|
59
|
+
const table = parseTable(child, styles, theme, numbering, rels, media);
|
|
60
|
+
if (table) blocks.push(table);
|
|
61
|
+
}
|
|
59
62
|
}
|
|
60
63
|
return blocks;
|
|
61
64
|
}
|
|
@@ -130,7 +133,7 @@ function parseTextBox(drawingEl) {
|
|
|
130
133
|
if (position) textBox.position = position;
|
|
131
134
|
const wrap = parseAnchorWrap(container);
|
|
132
135
|
if (wrap) textBox.wrap = wrap;
|
|
133
|
-
}
|
|
136
|
+
} else textBox.wrap = { type: "inline" };
|
|
134
137
|
return textBox;
|
|
135
138
|
}
|
|
136
139
|
/**
|