@stll/folio-core 0.0.1-placeholder.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE.md +29 -0
- package/README.md +41 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/ai-edits/apply.d.ts +35 -0
- package/dist/ai-edits/apply.js +683 -0
- package/dist/ai-edits/clean-text.d.ts +28 -0
- package/dist/ai-edits/clean-text.js +23 -0
- package/dist/ai-edits/headless.d.ts +225 -0
- package/dist/ai-edits/headless.js +513 -0
- package/dist/ai-edits/index.d.ts +6 -0
- package/dist/ai-edits/index.js +5 -0
- package/dist/ai-edits/inline-emphasis.d.ts +38 -0
- package/dist/ai-edits/inline-emphasis.js +78 -0
- package/dist/ai-edits/snapshot.d.ts +9 -0
- package/dist/ai-edits/snapshot.js +195 -0
- package/dist/ai-edits/types.d.ts +156 -0
- package/dist/ai-edits/types.js +0 -0
- package/dist/ai-edits/word-diff.d.ts +20 -0
- package/dist/ai-edits/word-diff.js +77 -0
- package/dist/ai-suggestions/apply.d.ts +17 -0
- package/dist/ai-suggestions/apply.js +64 -0
- package/dist/ai-suggestions/conflict.d.ts +22 -0
- package/dist/ai-suggestions/conflict.js +67 -0
- package/dist/ai-suggestions/text-positions.d.ts +21 -0
- package/dist/ai-suggestions/text-positions.js +48 -0
- package/dist/ai-suggestions/types.d.ts +199 -0
- package/dist/ai-suggestions/types.js +59 -0
- package/dist/content-controls/errors.d.ts +52 -0
- package/dist/content-controls/errors.js +36 -0
- package/dist/content-controls/findContentControls.d.ts +55 -0
- package/dist/content-controls/findContentControls.js +75 -0
- package/dist/content-controls/index.d.ts +4 -0
- package/dist/content-controls/index.js +4 -0
- package/dist/content-controls/mutateContentControls.d.ts +51 -0
- package/dist/content-controls/mutateContentControls.js +377 -0
- package/dist/controller/folioEditor.d.ts +21 -0
- package/dist/controller/folioEditor.js +29 -0
- package/dist/controller/folioEditorEvents.d.ts +23 -0
- package/dist/controller/folioEditorEvents.js +24 -0
- package/dist/controller/hiddenEditorApi.d.ts +35 -0
- package/dist/controller/hiddenEditorApi.js +112 -0
- package/dist/controller/hiddenEditorManager.d.ts +93 -0
- package/dist/controller/hiddenEditorManager.js +308 -0
- package/dist/controller/layoutPipeline.d.ts +63 -0
- package/dist/controller/layoutPipeline.js +406 -0
- package/dist/controller/layoutScheduler.d.ts +41 -0
- package/dist/controller/layoutScheduler.js +59 -0
- package/dist/controller/layoutSession.d.ts +24 -0
- package/dist/controller/layoutSession.js +13 -0
- package/dist/docx/blockContentParser.d.ts +13 -0
- package/dist/docx/blockContentParser.js +289 -0
- package/dist/docx/bookmarkParser.d.ts +178 -0
- package/dist/docx/bookmarkParser.js +246 -0
- package/dist/docx/bookmarkPlacement.d.ts +10 -0
- package/dist/docx/bookmarkPlacement.js +50 -0
- package/dist/docx/bulletMarkers.d.ts +4 -0
- package/dist/docx/bulletMarkers.js +42 -0
- package/dist/docx/commentParser.d.ts +34 -0
- package/dist/docx/commentParser.js +127 -0
- package/dist/docx/commentReferenceNormalization.d.ts +25 -0
- package/dist/docx/commentReferenceNormalization.js +97 -0
- package/dist/docx/commentReplyMarkers.d.ts +20 -0
- package/dist/docx/commentReplyMarkers.js +123 -0
- package/dist/docx/compatibility.d.ts +12 -0
- package/dist/docx/compatibility.js +77 -0
- package/dist/docx/documentParser.d.ts +65 -0
- package/dist/docx/documentParser.js +209 -0
- package/dist/docx/drawingUtils.d.ts +56 -0
- package/dist/docx/drawingUtils.js +305 -0
- package/dist/docx/fieldParser.d.ts +228 -0
- package/dist/docx/fieldParser.js +559 -0
- package/dist/docx/footnoteParser.d.ts +109 -0
- package/dist/docx/footnoteParser.js +270 -0
- package/dist/docx/headerFooterParser.d.ts +119 -0
- package/dist/docx/headerFooterParser.js +266 -0
- package/dist/docx/headerFooterRefParser.d.ts +22 -0
- package/dist/docx/headerFooterRefParser.js +52 -0
- package/dist/docx/headerFooterReferenceNormalization.d.ts +19 -0
- package/dist/docx/headerFooterReferenceNormalization.js +64 -0
- package/dist/docx/hyperlinkParser.d.ts +108 -0
- package/dist/docx/hyperlinkParser.js +230 -0
- package/dist/docx/imageParser.d.ts +93 -0
- package/dist/docx/imageParser.js +522 -0
- package/dist/docx/mathToMathml.d.ts +15 -0
- package/dist/docx/mathToMathml.js +357 -0
- package/dist/docx/modelValidation.d.ts +13 -0
- package/dist/docx/modelValidation.js +21 -0
- package/dist/docx/normalizeBaseDirection.d.ts +12 -0
- package/dist/docx/normalizeBaseDirection.js +81 -0
- package/dist/docx/notePropertiesParser.d.ts +16 -0
- package/dist/docx/notePropertiesParser.js +99 -0
- package/dist/docx/numberingParser.d.ts +86 -0
- package/dist/docx/numberingParser.js +735 -0
- package/dist/docx/numberingReferenceNormalization.d.ts +25 -0
- package/dist/docx/numberingReferenceNormalization.js +22 -0
- package/dist/docx/paragraphParser.d.ts +86 -0
- package/dist/docx/paragraphParser.js +1132 -0
- package/dist/docx/paragraphTraversal.d.ts +19 -0
- package/dist/docx/paragraphTraversal.js +76 -0
- package/dist/docx/parser.d.ts +67 -0
- package/dist/docx/parser.js +391 -0
- package/dist/docx/parserEnums.d.ts +45 -0
- package/dist/docx/parserEnums.js +70 -0
- package/dist/docx/relsParser.d.ts +160 -0
- package/dist/docx/relsParser.js +235 -0
- package/dist/docx/replyToComment.d.ts +29 -0
- package/dist/docx/replyToComment.js +73 -0
- package/dist/docx/rezip.d.ts +166 -0
- package/dist/docx/rezip.js +1194 -0
- package/dist/docx/runConsolidator.d.ts +57 -0
- package/dist/docx/runConsolidator.js +224 -0
- package/dist/docx/runParser.d.ts +78 -0
- package/dist/docx/runParser.js +661 -0
- package/dist/docx/sdtProperties.d.ts +15 -0
- package/dist/docx/sdtProperties.js +290 -0
- package/dist/docx/sdtPropertiesPatch.d.ts +16 -0
- package/dist/docx/sdtPropertiesPatch.js +144 -0
- package/dist/docx/sectionParser.d.ts +95 -0
- package/dist/docx/sectionParser.js +534 -0
- package/dist/docx/selectiveSave.d.ts +25 -0
- package/dist/docx/selectiveSave.js +247 -0
- package/dist/docx/selectiveSaveFlags.d.ts +33 -0
- package/dist/docx/selectiveSaveFlags.js +11 -0
- package/dist/docx/selectiveSaveTripwire.d.ts +33 -0
- package/dist/docx/selectiveSaveTripwire.js +79 -0
- package/dist/docx/selectiveXmlPatch.d.ts +103 -0
- package/dist/docx/selectiveXmlPatch.js +493 -0
- package/dist/docx/serializer/blockSdtSerializer.d.ts +6 -0
- package/dist/docx/serializer/blockSdtSerializer.js +88 -0
- package/dist/docx/serializer/borderSerializer.d.ts +25 -0
- package/dist/docx/serializer/borderSerializer.js +44 -0
- package/dist/docx/serializer/commentSerializer.d.ts +31 -0
- package/dist/docx/serializer/commentSerializer.js +184 -0
- package/dist/docx/serializer/documentSerializer.d.ts +65 -0
- package/dist/docx/serializer/documentSerializer.js +199 -0
- package/dist/docx/serializer/headerFooterSerializer.d.ts +12 -0
- package/dist/docx/serializer/headerFooterSerializer.js +84 -0
- package/dist/docx/serializer/noteSerializer.d.ts +19 -0
- package/dist/docx/serializer/noteSerializer.js +70 -0
- package/dist/docx/serializer/numberingSerializer.d.ts +12 -0
- package/dist/docx/serializer/numberingSerializer.js +93 -0
- package/dist/docx/serializer/paragraphSerializer.d.ts +48 -0
- package/dist/docx/serializer/paragraphSerializer.js +559 -0
- package/dist/docx/serializer/runSerializer.d.ts +56 -0
- package/dist/docx/serializer/runSerializer.js +621 -0
- package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +6 -0
- package/dist/docx/serializer/sectionPropertiesSerializer.js +187 -0
- package/dist/docx/serializer/tableSerializer.d.ts +79 -0
- package/dist/docx/serializer/tableSerializer.js +422 -0
- package/dist/docx/serializer/xmlUtils.d.ts +20 -0
- package/dist/docx/serializer/xmlUtils.js +25 -0
- package/dist/docx/settingsParser.d.ts +8 -0
- package/dist/docx/settingsParser.js +36 -0
- package/dist/docx/shapeParser.d.ts +20 -0
- package/dist/docx/shapeParser.js +272 -0
- package/dist/docx/styleParser.d.ts +50 -0
- package/dist/docx/styleParser.js +905 -0
- package/dist/docx/tableParser.d.ts +202 -0
- package/dist/docx/tableParser.js +811 -0
- package/dist/docx/textBoxParser.d.ts +117 -0
- package/dist/docx/textBoxParser.js +262 -0
- package/dist/docx/themeParser.d.ts +77 -0
- package/dist/docx/themeParser.js +330 -0
- package/dist/docx/trackedMoveRangeNormalization.d.ts +22 -0
- package/dist/docx/trackedMoveRangeNormalization.js +100 -0
- package/dist/docx/unzip.d.ts +118 -0
- package/dist/docx/unzip.js +383 -0
- package/dist/docx/vmlImageParser.d.ts +16 -0
- package/dist/docx/vmlImageParser.js +100 -0
- package/dist/docx/watermarkParser.d.ts +45 -0
- package/dist/docx/watermarkParser.js +348 -0
- package/dist/docx/wrapTypes.d.ts +29 -0
- package/dist/docx/wrapTypes.js +48 -0
- package/dist/docx/xmlParser.d.ts +297 -0
- package/dist/docx/xmlParser.js +527 -0
- package/dist/fields/bookmarkPages.d.ts +13 -0
- package/dist/fields/bookmarkPages.js +66 -0
- package/dist/fields/bookmarkText.d.ts +16 -0
- package/dist/fields/bookmarkText.js +61 -0
- package/dist/fields/evaluateField.d.ts +23 -0
- package/dist/fields/evaluateField.js +77 -0
- package/dist/fields/fieldContext.d.ts +21 -0
- package/dist/fields/fieldContext.js +0 -0
- package/dist/fields/resolveFieldValues.d.ts +44 -0
- package/dist/fields/resolveFieldValues.js +204 -0
- package/dist/fields/sectionPageCounts.d.ts +11 -0
- package/dist/fields/sectionPageCounts.js +16 -0
- package/dist/fields/seqValues.d.ts +14 -0
- package/dist/fields/seqValues.js +36 -0
- package/dist/fonts/embeddedFontTable.d.ts +42 -0
- package/dist/fonts/embeddedFontTable.js +80 -0
- package/dist/fonts/embeddedFonts.d.ts +46 -0
- package/dist/fonts/embeddedFonts.js +112 -0
- package/dist/fonts/fontDeobfuscation.d.ts +30 -0
- package/dist/fonts/fontDeobfuscation.js +57 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +23 -0
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +57 -0
- package/dist/layout-bridge/convert/footnoteLayout.js +316 -0
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +74 -0
- package/dist/layout-bridge/convert/headerFooterLayout.js +432 -0
- package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +36 -0
- package/dist/layout-bridge/convert/templatePreviewFlow.js +176 -0
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +65 -0
- package/dist/layout-bridge/convert/toFlowBlocks.js +1309 -0
- package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +17 -0
- package/dist/layout-bridge/convert/wrapEditorViewAsSurface.js +36 -0
- package/dist/layout-bridge/dom/clickToPositionDom.d.ts +66 -0
- package/dist/layout-bridge/dom/clickToPositionDom.js +304 -0
- package/dist/layout-bridge/dom/findBodyPmSpans.d.ts +7 -0
- package/dist/layout-bridge/dom/findBodyPmSpans.js +17 -0
- package/dist/layout-bridge/dom/findHfPmSpans.d.ts +62 -0
- package/dist/layout-bridge/dom/findHfPmSpans.js +197 -0
- package/dist/layout-bridge/engine/clickToPosition.d.ts +66 -0
- package/dist/layout-bridge/engine/clickToPosition.js +403 -0
- package/dist/layout-bridge/engine/hitTest.d.ts +135 -0
- package/dist/layout-bridge/engine/hitTest.js +375 -0
- package/dist/layout-bridge/engine/measuring/index.d.ts +10 -0
- package/dist/layout-bridge/engine/measuring/index.js +9 -0
- package/dist/layout-bridge/engine/selectionRects.d.ts +59 -0
- package/dist/layout-bridge/engine/selectionRects.js +485 -0
- package/dist/layout-bridge/engine/tableWidthUtils.d.ts +7 -0
- package/dist/layout-bridge/engine/tableWidthUtils.js +25 -0
- package/dist/layout-engine/index.d.ts +44 -0
- package/dist/layout-engine/index.js +691 -0
- package/dist/layout-engine/keep-together.d.ts +43 -0
- package/dist/layout-engine/keep-together.js +98 -0
- package/dist/layout-engine/layoutInstrumentation.d.ts +50 -0
- package/dist/layout-engine/layoutInstrumentation.js +43 -0
- package/dist/layout-engine/lineFlow.d.ts +8 -0
- package/dist/layout-engine/lineFlow.js +17 -0
- package/dist/layout-engine/measure/cache.d.ts +93 -0
- package/dist/layout-engine/measure/cache.js +245 -0
- package/dist/layout-engine/measure/clampFloatingWrapMargins.d.ts +20 -0
- package/dist/layout-engine/measure/clampFloatingWrapMargins.js +29 -0
- package/dist/layout-engine/measure/featureFlags.d.ts +44 -0
- package/dist/layout-engine/measure/featureFlags.js +19 -0
- package/dist/layout-engine/measure/floatingZones.d.ts +89 -0
- package/dist/layout-engine/measure/floatingZones.js +152 -0
- package/dist/layout-engine/measure/font-metrics.worker.d.ts +17 -0
- package/dist/layout-engine/measure/font-metrics.worker.js +104 -0
- package/dist/layout-engine/measure/index.d.ts +9 -0
- package/dist/layout-engine/measure/index.js +8 -0
- package/dist/layout-engine/measure/listMarkerWidth.d.ts +40 -0
- package/dist/layout-engine/measure/listMarkerWidth.js +76 -0
- package/dist/layout-engine/measure/measureBlocks.d.ts +25 -0
- package/dist/layout-engine/measure/measureBlocks.js +450 -0
- package/dist/layout-engine/measure/measureContainer.d.ts +24 -0
- package/dist/layout-engine/measure/measureContainer.js +280 -0
- package/dist/layout-engine/measure/measureHelpers.d.ts +82 -0
- package/dist/layout-engine/measure/measureHelpers.js +156 -0
- package/dist/layout-engine/measure/measureParagraph.d.ts +61 -0
- package/dist/layout-engine/measure/measureParagraph.js +724 -0
- package/dist/layout-engine/measure/measureProvider.d.ts +23 -0
- package/dist/layout-engine/measure/measureProvider.js +35 -0
- package/dist/layout-engine/measure/measureTypes.d.ts +61 -0
- package/dist/layout-engine/measure/measureTypes.js +0 -0
- package/dist/layout-engine/measure/measureWorker.d.ts +54 -0
- package/dist/layout-engine/measure/measureWorker.js +249 -0
- package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +88 -0
- package/dist/layout-engine/measure/measureWorkerProtocol.js +20 -0
- package/dist/layout-engine/measure/tableCellFloating.d.ts +26 -0
- package/dist/layout-engine/measure/tableCellFloating.js +99 -0
- package/dist/layout-engine/paginator.d.ts +84 -0
- package/dist/layout-engine/paginator.js +348 -0
- package/dist/layout-engine/paragraphFragmentRange.d.ts +9 -0
- package/dist/layout-engine/paragraphFragmentRange.js +40 -0
- package/dist/layout-engine/section-breaks.d.ts +78 -0
- package/dist/layout-engine/section-breaks.js +182 -0
- package/dist/layout-engine/tableRowBreak.d.ts +23 -0
- package/dist/layout-engine/tableRowBreak.js +147 -0
- package/dist/layout-engine/textBoxFlow.d.ts +50 -0
- package/dist/layout-engine/textBoxFlow.js +160 -0
- package/dist/layout-engine/types.d.ts +1031 -0
- package/dist/layout-engine/types.js +100 -0
- package/dist/layout-painter/documentColors.d.ts +4 -0
- package/dist/layout-painter/documentColors.js +40 -0
- package/dist/layout-painter/index.d.ts +110 -0
- package/dist/layout-painter/index.js +182 -0
- package/dist/layout-painter/registry/modules/image.d.ts +6 -0
- package/dist/layout-painter/registry/modules/image.js +17 -0
- package/dist/layout-painter/registry/modules/paragraph.d.ts +6 -0
- package/dist/layout-painter/registry/modules/paragraph.js +18 -0
- package/dist/layout-painter/registry/modules/table.d.ts +6 -0
- package/dist/layout-painter/registry/modules/table.js +16 -0
- package/dist/layout-painter/registry/modules/textBox.d.ts +6 -0
- package/dist/layout-painter/registry/modules/textBox.js +13 -0
- package/dist/layout-painter/registry/modules.d.ts +6 -0
- package/dist/layout-painter/registry/modules.js +26 -0
- package/dist/layout-painter/registry/registry.d.ts +24 -0
- package/dist/layout-painter/registry/registry.js +53 -0
- package/dist/layout-painter/registry/types.d.ts +61 -0
- package/dist/layout-painter/registry/types.js +0 -0
- package/dist/layout-painter/renderFragment.d.ts +32 -0
- package/dist/layout-painter/renderFragment.js +114 -0
- package/dist/layout-painter/renderImage.d.ts +88 -0
- package/dist/layout-painter/renderImage.js +130 -0
- package/dist/layout-painter/renderPage.d.ts +264 -0
- package/dist/layout-painter/renderPage.js +1795 -0
- package/dist/layout-painter/renderParagraph.d.ts +93 -0
- package/dist/layout-painter/renderParagraph.js +1300 -0
- package/dist/layout-painter/renderTable.d.ts +36 -0
- package/dist/layout-painter/renderTable.js +432 -0
- package/dist/layout-painter/renderTextBox.d.ts +22 -0
- package/dist/layout-painter/renderTextBox.js +67 -0
- package/dist/layout-painter/renderUtils.d.ts +42 -0
- package/dist/layout-painter/renderUtils.js +30 -0
- package/dist/layout-painter/renderWatermark.d.ts +16 -0
- package/dist/layout-painter/renderWatermark.js +61 -0
- package/dist/layout-painter/sdtBoundary.d.ts +6 -0
- package/dist/layout-painter/sdtBoundary.js +28 -0
- package/dist/managers/ContextMenuManager.d.ts +28 -0
- package/dist/managers/ContextMenuManager.js +48 -0
- package/dist/managers/DocumentLoaderManager.d.ts +47 -0
- package/dist/managers/DocumentLoaderManager.js +69 -0
- package/dist/managers/EditorModeManager.d.ts +28 -0
- package/dist/managers/EditorModeManager.js +50 -0
- package/dist/managers/ErrorManager.d.ts +26 -0
- package/dist/managers/ErrorManager.js +85 -0
- package/dist/managers/FindReplaceManager.d.ts +54 -0
- package/dist/managers/FindReplaceManager.js +104 -0
- package/dist/managers/HistoryManager.d.ts +92 -0
- package/dist/managers/HistoryManager.js +193 -0
- package/dist/managers/Subscribable.d.ts +34 -0
- package/dist/managers/Subscribable.js +46 -0
- package/dist/managers/TableSelectionManager.d.ts +74 -0
- package/dist/managers/TableSelectionManager.js +225 -0
- package/dist/managers/editorShortcuts.d.ts +42 -0
- package/dist/managers/editorShortcuts.js +60 -0
- package/dist/managers/types.d.ts +41 -0
- package/dist/managers/types.js +0 -0
- package/dist/markdown/annotations.d.ts +14 -0
- package/dist/markdown/annotations.js +42 -0
- package/dist/markdown/escape.d.ts +36 -0
- package/dist/markdown/escape.js +59 -0
- package/dist/markdown/fromMarkdown.d.ts +11 -0
- package/dist/markdown/fromMarkdown.js +223 -0
- package/dist/markdown/headings.d.ts +13 -0
- package/dist/markdown/headings.js +20 -0
- package/dist/markdown/images.d.ts +13 -0
- package/dist/markdown/images.js +63 -0
- package/dist/markdown/index.d.ts +18 -0
- package/dist/markdown/index.js +33 -0
- package/dist/markdown/internals.d.ts +15 -0
- package/dist/markdown/internals.js +35 -0
- package/dist/markdown/renderBlock.d.ts +7 -0
- package/dist/markdown/renderBlock.js +68 -0
- package/dist/markdown/renderParagraph.d.ts +11 -0
- package/dist/markdown/renderParagraph.js +64 -0
- package/dist/markdown/renderRuns.d.ts +11 -0
- package/dist/markdown/renderRuns.js +265 -0
- package/dist/markdown/renderTable.d.ts +8 -0
- package/dist/markdown/renderTable.js +229 -0
- package/dist/markdown/trailers.d.ts +13 -0
- package/dist/markdown/trailers.js +54 -0
- package/dist/markdown/types.d.ts +118 -0
- package/dist/markdown/types.js +0 -0
- package/dist/model.d.ts +13 -0
- package/dist/model.js +4 -0
- package/dist/paged-layout/LayoutSelectionGate.d.ts +80 -0
- package/dist/paged-layout/LayoutSelectionGate.js +131 -0
- package/dist/paged-layout/headerFooterMargins.d.ts +73 -0
- package/dist/paged-layout/headerFooterMargins.js +120 -0
- package/dist/paged-layout/hiddenEditorScroll.d.ts +4 -0
- package/dist/paged-layout/hiddenEditorScroll.js +4 -0
- package/dist/paged-layout/incrementalMeasure.d.ts +33 -0
- package/dist/paged-layout/incrementalMeasure.js +56 -0
- package/dist/paged-layout/rangeProjection.d.ts +51 -0
- package/dist/paged-layout/rangeProjection.js +153 -0
- package/dist/paged-layout/readOnlyEditAttempt.d.ts +5 -0
- package/dist/paged-layout/readOnlyEditAttempt.js +22 -0
- package/dist/paged-layout/scrollNavigation.d.ts +23 -0
- package/dist/paged-layout/scrollNavigation.js +31 -0
- package/dist/paged-layout/scrollPageInfo.d.ts +41 -0
- package/dist/paged-layout/scrollPageInfo.js +34 -0
- package/dist/paged-layout/scrollToPmPosition.d.ts +17 -0
- package/dist/paged-layout/scrollToPmPosition.js +95 -0
- package/dist/paged-layout/sectionBlockWidths.d.ts +35 -0
- package/dist/paged-layout/sectionBlockWidths.js +52 -0
- package/dist/paged-layout/sectionGeometry.d.ts +21 -0
- package/dist/paged-layout/sectionGeometry.js +36 -0
- package/dist/paged-layout/selectionViewportRect.d.ts +29 -0
- package/dist/paged-layout/selectionViewportRect.js +55 -0
- package/dist/paged-layout/tableColumnResize.d.ts +19 -0
- package/dist/paged-layout/tableColumnResize.js +28 -0
- package/dist/paged-layout/tableInsertButtonGeometry.d.ts +15 -0
- package/dist/paged-layout/tableInsertButtonGeometry.js +15 -0
- package/dist/paged-layout/transactionDirtyRange.d.ts +7 -0
- package/dist/paged-layout/transactionDirtyRange.js +27 -0
- package/dist/paged-layout/zoomScrollAnchor.d.ts +40 -0
- package/dist/paged-layout/zoomScrollAnchor.js +25 -0
- package/dist/prosemirror/attrs/index.d.ts +80 -0
- package/dist/prosemirror/attrs/index.js +1218 -0
- package/dist/prosemirror/autospacingBase.d.ts +11 -0
- package/dist/prosemirror/autospacingBase.js +16 -0
- package/dist/prosemirror/commands/comments.d.ts +93 -0
- package/dist/prosemirror/commands/comments.js +435 -0
- package/dist/prosemirror/commands/contentControls.d.ts +45 -0
- package/dist/prosemirror/commands/contentControls.js +294 -0
- package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +15 -0
- package/dist/prosemirror/commands/contentControlsBlockFill.js +19 -0
- package/dist/prosemirror/commands/formatPainter.d.ts +31 -0
- package/dist/prosemirror/commands/formatPainter.js +130 -0
- package/dist/prosemirror/commands/formatting.d.ts +32 -0
- package/dist/prosemirror/commands/formatting.js +45 -0
- package/dist/prosemirror/commands/hyperlink.d.ts +31 -0
- package/dist/prosemirror/commands/hyperlink.js +79 -0
- package/dist/prosemirror/commands/image.d.ts +59 -0
- package/dist/prosemirror/commands/image.js +219 -0
- package/dist/prosemirror/commands/index.d.ts +13 -0
- package/dist/prosemirror/commands/index.js +13 -0
- package/dist/prosemirror/commands/pageBreak.d.ts +10 -0
- package/dist/prosemirror/commands/pageBreak.js +47 -0
- package/dist/prosemirror/commands/paragraph.d.ts +39 -0
- package/dist/prosemirror/commands/paragraph.js +64 -0
- package/dist/prosemirror/commands/pastePlainText.d.ts +39 -0
- package/dist/prosemirror/commands/pastePlainText.js +67 -0
- package/dist/prosemirror/commands/table.d.ts +83 -0
- package/dist/prosemirror/commands/table.js +105 -0
- package/dist/prosemirror/conversion/fromProseDoc.d.ts +27 -0
- package/dist/prosemirror/conversion/fromProseDoc.js +1550 -0
- package/dist/prosemirror/conversion/index.d.ts +4 -0
- package/dist/prosemirror/conversion/index.js +4 -0
- package/dist/prosemirror/conversion/runShadingMark.d.ts +16 -0
- package/dist/prosemirror/conversion/runShadingMark.js +39 -0
- package/dist/prosemirror/conversion/toProseDoc.d.ts +39 -0
- package/dist/prosemirror/conversion/toProseDoc.js +1404 -0
- package/dist/prosemirror/extensions/ExtensionManager.d.ts +43 -0
- package/dist/prosemirror/extensions/ExtensionManager.js +86 -0
- package/dist/prosemirror/extensions/StarterKit.d.ts +16 -0
- package/dist/prosemirror/extensions/StarterKit.js +132 -0
- package/dist/prosemirror/extensions/core/DocExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/core/DocExtension.js +12 -0
- package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/core/HistoryExtension.js +28 -0
- package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +25 -0
- package/dist/prosemirror/extensions/core/ParagraphExtension.js +619 -0
- package/dist/prosemirror/extensions/core/TextExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/core/TextExtension.js +12 -0
- package/dist/prosemirror/extensions/create.d.ts +17 -0
- package/dist/prosemirror/extensions/create.js +129 -0
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +106 -0
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +8 -0
- package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +172 -0
- package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +16 -0
- package/dist/prosemirror/extensions/features/BidiShortcutExtension.js +38 -0
- package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +16 -0
- package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.js +21 -0
- package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/features/DropCursorExtension.js +20 -0
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +8 -0
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +44 -0
- package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +19 -0
- package/dist/prosemirror/extensions/features/GapCursorExtension.js +24 -0
- package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +15 -0
- package/dist/prosemirror/extensions/features/ImageDragExtension.js +66 -0
- package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/features/ImagePasteExtension.js +91 -0
- package/dist/prosemirror/extensions/features/ListExtension.d.ts +14 -0
- package/dist/prosemirror/extensions/features/ListExtension.js +340 -0
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +60 -0
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +35 -0
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +188 -0
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +20 -0
- package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +34 -0
- package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +20 -0
- package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.js +145 -0
- package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +10 -0
- package/dist/prosemirror/extensions/features/SelectionTrackerExtension.js +17 -0
- package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +31 -0
- package/dist/prosemirror/extensions/features/bidiShortcutController.js +27 -0
- package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +31 -0
- package/dist/prosemirror/extensions/features/pasteCleanup.js +159 -0
- package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/AllCapsExtension.js +24 -0
- package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/BoldExtension.js +41 -0
- package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +14 -0
- package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +64 -0
- package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/marks/CharacterStyleExtension.js +47 -0
- package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/marks/CommentExtension.js +38 -0
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +55 -0
- package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/FontSizeExtension.js +47 -0
- package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +11 -0
- package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +92 -0
- package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +23 -0
- package/dist/prosemirror/extensions/marks/HiddenTextExtension.js +35 -0
- package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +10 -0
- package/dist/prosemirror/extensions/marks/HighlightExtension.js +115 -0
- package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +146 -0
- package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/ItalicExtension.js +34 -0
- package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/RtlExtension.js +21 -0
- package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +11 -0
- package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.js +75 -0
- package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/RunShadingExtension.js +38 -0
- package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SmallCapsExtension.js +24 -0
- package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/StrikeExtension.js +33 -0
- package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SubscriptExtension.js +25 -0
- package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/SuperscriptExtension.js +25 -0
- package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/TextColorExtension.js +50 -0
- package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/marks/TextEffectExtension.js +35 -0
- package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +31 -0
- package/dist/prosemirror/extensions/marks/TextEffectsExtensions.js +134 -0
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +22 -0
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +113 -0
- package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/marks/UnderlineExtension.js +60 -0
- package/dist/prosemirror/extensions/marks/markUtils.d.ts +34 -0
- package/dist/prosemirror/extensions/marks/markUtils.js +233 -0
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +22 -0
- package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +122 -0
- package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/nodes/FieldExtension.js +87 -0
- package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/HardBreakExtension.js +38 -0
- package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.js +18 -0
- package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/ImageExtension.js +132 -0
- package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +13 -0
- package/dist/prosemirror/extensions/nodes/MathExtension.js +56 -0
- package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/PageBreakExtension.js +20 -0
- package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +12 -0
- package/dist/prosemirror/extensions/nodes/SdtExtension.js +107 -0
- package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +30 -0
- package/dist/prosemirror/extensions/nodes/ShapeExtension.js +502 -0
- package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +9 -0
- package/dist/prosemirror/extensions/nodes/TabExtension.js +27 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +34 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.js +1972 -0
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +34 -0
- package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +150 -0
- package/dist/prosemirror/extensions/types.d.ts +101 -0
- package/dist/prosemirror/extensions/types.js +10 -0
- package/dist/prosemirror/findReplaceSelection.d.ts +23 -0
- package/dist/prosemirror/findReplaceSelection.js +86 -0
- package/dist/prosemirror/index.d.ts +25 -0
- package/dist/prosemirror/index.js +23 -0
- package/dist/prosemirror/insertOperations.d.ts +12 -0
- package/dist/prosemirror/insertOperations.js +19 -0
- package/dist/prosemirror/paragraphDirection.d.ts +42 -0
- package/dist/prosemirror/paragraphDirection.js +33 -0
- package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +40 -0
- package/dist/prosemirror/plugins/aiCitationDecorations.js +90 -0
- package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +42 -0
- package/dist/prosemirror/plugins/aiSuggestionDecorations.js +135 -0
- package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +60 -0
- package/dist/prosemirror/plugins/anonymizationDecorations.js +120 -0
- package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +123 -0
- package/dist/prosemirror/plugins/autocompleteSuggestion.js +283 -0
- package/dist/prosemirror/plugins/contentControlWidgets.d.ts +56 -0
- package/dist/prosemirror/plugins/contentControlWidgets.js +192 -0
- package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +37 -0
- package/dist/prosemirror/plugins/createDocScanPlugin.js +55 -0
- package/dist/prosemirror/plugins/documentStyles.d.ts +18 -0
- package/dist/prosemirror/plugins/documentStyles.js +46 -0
- package/dist/prosemirror/plugins/index.d.ts +3 -0
- package/dist/prosemirror/plugins/index.js +3 -0
- package/dist/prosemirror/plugins/pmTextScan.d.ts +19 -0
- package/dist/prosemirror/plugins/pmTextScan.js +39 -0
- package/dist/prosemirror/plugins/selectionTracker.d.ts +43 -0
- package/dist/prosemirror/plugins/selectionTracker.js +179 -0
- package/dist/prosemirror/plugins/suggestionMode.d.ts +70 -0
- package/dist/prosemirror/plugins/suggestionMode.js +489 -0
- package/dist/prosemirror/plugins/templateDirectives.d.ts +25 -0
- package/dist/prosemirror/plugins/templateDirectives.js +67 -0
- package/dist/prosemirror/plugins/templatePreviewValues.d.ts +49 -0
- package/dist/prosemirror/plugins/templatePreviewValues.js +117 -0
- package/dist/prosemirror/plugins/templateSlashMenu.d.ts +57 -0
- package/dist/prosemirror/plugins/templateSlashMenu.js +184 -0
- package/dist/prosemirror/schema/index.d.ts +15 -0
- package/dist/prosemirror/schema/index.js +20 -0
- package/dist/prosemirror/schema/marks.d.ts +118 -0
- package/dist/prosemirror/schema/marks.js +0 -0
- package/dist/prosemirror/schema/nodes.d.ts +389 -0
- package/dist/prosemirror/schema/nodes.js +0 -0
- package/dist/prosemirror/selectionState.d.ts +23 -0
- package/dist/prosemirror/selectionState.js +111 -0
- package/dist/prosemirror/styles/index.d.ts +2 -0
- package/dist/prosemirror/styles/index.js +2 -0
- package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +32 -0
- package/dist/prosemirror/styles/resolvedStyleAttrs.js +108 -0
- package/dist/prosemirror/styles/styleResolver.d.ts +94 -0
- package/dist/prosemirror/styles/styleResolver.js +200 -0
- package/dist/prosemirror/utils/findParagraphByParaId.d.ts +26 -0
- package/dist/prosemirror/utils/findParagraphByParaId.js +37 -0
- package/dist/prosemirror/utils/tabCalculator.d.ts +110 -0
- package/dist/prosemirror/utils/tabCalculator.js +137 -0
- package/dist/prosemirror/validation.d.ts +20 -0
- package/dist/prosemirror/validation.js +177 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +6 -0
- package/dist/style-engine/index.d.ts +3 -0
- package/dist/style-engine/index.js +2 -0
- package/dist/style-engine/styleEngine.d.ts +67 -0
- package/dist/style-engine/styleEngine.js +70 -0
- package/dist/types/block-id.d.ts +58 -0
- package/dist/types/block-id.js +61 -0
- package/dist/types/colors.d.ts +2 -0
- package/dist/types/colors.js +0 -0
- package/dist/types/content.d.ts +2 -0
- package/dist/types/content.js +0 -0
- package/dist/types/document.d.ts +7 -0
- package/dist/types/document.js +0 -0
- package/dist/types/documentEnumValues.d.ts +89 -0
- package/dist/types/documentEnumValues.js +693 -0
- package/dist/types/formatting.d.ts +2 -0
- package/dist/types/formatting.js +0 -0
- package/dist/types/index.d.ts +107 -0
- package/dist/types/index.js +0 -0
- package/dist/utils/authorColors.d.ts +16 -0
- package/dist/utils/authorColors.js +30 -0
- package/dist/utils/baseDirection.d.ts +23 -0
- package/dist/utils/baseDirection.js +34 -0
- package/dist/utils/clipboard.d.ts +126 -0
- package/dist/utils/clipboard.js +622 -0
- package/dist/utils/colorResolver.d.ts +158 -0
- package/dist/utils/colorResolver.js +557 -0
- package/dist/utils/createDocument.d.ts +50 -0
- package/dist/utils/createDocument.js +262 -0
- package/dist/utils/documentLoaderBehavior.d.ts +22 -0
- package/dist/utils/documentLoaderBehavior.js +14 -0
- package/dist/utils/docxInput.d.ts +22 -0
- package/dist/utils/docxInput.js +16 -0
- package/dist/utils/domGuards.d.ts +59 -0
- package/dist/utils/domGuards.js +82 -0
- package/dist/utils/fontFamilyMerge.d.ts +7 -0
- package/dist/utils/fontFamilyMerge.js +31 -0
- package/dist/utils/fontLoader.d.ts +50 -0
- package/dist/utils/fontLoader.js +177 -0
- package/dist/utils/fontResolver.d.ts +61 -0
- package/dist/utils/fontResolver.js +651 -0
- package/dist/utils/fontWeights.d.ts +4 -0
- package/dist/utils/fontWeights.js +4 -0
- package/dist/utils/formatToStyle.d.ts +103 -0
- package/dist/utils/formatToStyle.js +289 -0
- package/dist/utils/headerFooter.d.ts +74 -0
- package/dist/utils/headerFooter.js +257 -0
- package/dist/utils/headingCollector.d.ts +22 -0
- package/dist/utils/headingCollector.js +36 -0
- package/dist/utils/hexId.d.ts +33 -0
- package/dist/utils/hexId.js +37 -0
- package/dist/utils/imageValidation.d.ts +5 -0
- package/dist/utils/imageValidation.js +31 -0
- package/dist/utils/paragraphFormattingMerge.d.ts +14 -0
- package/dist/utils/paragraphFormattingMerge.js +68 -0
- package/dist/utils/replaceText.d.ts +17 -0
- package/dist/utils/replaceText.js +161 -0
- package/dist/utils/rotationBoundingBox.d.ts +12 -0
- package/dist/utils/rotationBoundingBox.js +36 -0
- package/dist/utils/scriptSegments.d.ts +36 -0
- package/dist/utils/scriptSegments.js +52 -0
- package/dist/utils/tableOperations.d.ts +87 -0
- package/dist/utils/tableOperations.js +259 -0
- package/dist/utils/textFormattingMerge.d.ts +6 -0
- package/dist/utils/textFormattingMerge.js +31 -0
- package/dist/utils/tiffConverter.d.ts +18 -0
- package/dist/utils/tiffConverter.js +83 -0
- package/dist/utils/units.d.ts +99 -0
- package/dist/utils/units.js +139 -0
- package/dist/utils/urlSecurity.d.ts +7 -0
- package/dist/utils/urlSecurity.js +65 -0
- package/dist/watermark/index.d.ts +39 -0
- package/dist/watermark/index.js +149 -0
- package/package.json +122 -2
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { elementToXml, findChild, getAttributeAnyPrefix, getLocalName, parseBooleanElement } from "./xmlParser.js";
|
|
2
|
+
import { SdtLockSchema, narrowEnum } from "./parserEnums.js";
|
|
3
|
+
//#region src/docx/sdtProperties.ts
|
|
4
|
+
function parseListItems(el) {
|
|
5
|
+
const items = [];
|
|
6
|
+
for (const child of el.elements ?? []) if (child.type === "element" && (child.name === "w:listItem" || child.name?.endsWith(":listItem"))) {
|
|
7
|
+
const displayText = getAttributeAnyPrefix(child, "displayText");
|
|
8
|
+
const value = getAttributeAnyPrefix(child, "value");
|
|
9
|
+
if (displayText === null && value === null) continue;
|
|
10
|
+
items.push({
|
|
11
|
+
displayText: displayText ?? value ?? "",
|
|
12
|
+
value: value ?? displayText ?? ""
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return items;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Local names that always belong to one specific OOXML namespace. The
|
|
19
|
+
* serializer's document root only declares the canonical `w` / `w14` /
|
|
20
|
+
* `w15` prefixes, so any captured raw SDT child written under an
|
|
21
|
+
* alternate prefix would replay as an undefined-prefix element (Word
|
|
22
|
+
* refuses such files). We rewrite by element-local-name so an inherited
|
|
23
|
+
* `<x:checkbox>` / `<y:repeatingSection>` (where `x` / `y` are bound to
|
|
24
|
+
* the w14 / w15 URIs at the source's document root) always lands under
|
|
25
|
+
* the canonical prefix in our output regardless of the source's prefix
|
|
26
|
+
* choice.
|
|
27
|
+
*/
|
|
28
|
+
const W_LOCAL_NAMES = /* @__PURE__ */ new Set([
|
|
29
|
+
"alias",
|
|
30
|
+
"tag",
|
|
31
|
+
"id",
|
|
32
|
+
"lock",
|
|
33
|
+
"placeholder",
|
|
34
|
+
"docPart",
|
|
35
|
+
"showingPlcHdr",
|
|
36
|
+
"text",
|
|
37
|
+
"date",
|
|
38
|
+
"dateFormat",
|
|
39
|
+
"lid",
|
|
40
|
+
"calendar",
|
|
41
|
+
"storeMappedDataAs",
|
|
42
|
+
"dropDownList",
|
|
43
|
+
"listItem",
|
|
44
|
+
"comboBox",
|
|
45
|
+
"picture",
|
|
46
|
+
"docPartObj",
|
|
47
|
+
"docPartList",
|
|
48
|
+
"docPartCategory",
|
|
49
|
+
"docPartGallery",
|
|
50
|
+
"docPartUnique",
|
|
51
|
+
"group",
|
|
52
|
+
"equation",
|
|
53
|
+
"citation",
|
|
54
|
+
"bibliography",
|
|
55
|
+
"richText"
|
|
56
|
+
]);
|
|
57
|
+
const W14_LOCAL_NAMES = /* @__PURE__ */ new Set(["checkbox", "checked"]);
|
|
58
|
+
const W15_LOCAL_NAMES = /* @__PURE__ */ new Set(["repeatingSection", "repeatingSectionItem"]);
|
|
59
|
+
/**
|
|
60
|
+
* Rewrite the captured raw `<*:sdtPr>` / `<*:sdtEndPr>` snippet so every
|
|
61
|
+
* SDT-namespace element uses the canonical `w:` / `w14:` / `w15:`
|
|
62
|
+
* prefix on save. The blockSdtSerializer's document root declares only
|
|
63
|
+
* those three prefixes, so replaying a source snippet that uses an
|
|
64
|
+
* alternate prefix (`<ns0:sdtPr>` with `xmlns:ns0` declared on the
|
|
65
|
+
* source's `<w:document>`, or `<x:checkbox>` inside a canonical sdtPr)
|
|
66
|
+
* would produce invalid XML in the saved DOCX — Word refuses files
|
|
67
|
+
* with unresolved namespace prefixes.
|
|
68
|
+
*
|
|
69
|
+
* Heuristics, since fast-xml-parser does not surface namespace URIs in
|
|
70
|
+
* preserveOrder mode:
|
|
71
|
+
*
|
|
72
|
+
* 1. If the captured wrapper element itself uses a non-`w` prefix, that
|
|
73
|
+
* prefix is taken to be bound to the WP URI (the source DOCX would
|
|
74
|
+
* otherwise be invalid) and ALL occurrences of it inside the snippet
|
|
75
|
+
* are rewritten to `w:`.
|
|
76
|
+
* 2. After step 1, any remaining alt-prefix on an element whose local
|
|
77
|
+
* name is in W14_LOCAL_NAMES / W15_LOCAL_NAMES gets normalized to
|
|
78
|
+
* `w14:` / `w15:`. That handles a canonical `<w:sdtPr>` wrapper
|
|
79
|
+
* whose children inherit a non-`w14` / non-`w15` prefix from the
|
|
80
|
+
* source's document root.
|
|
81
|
+
*/
|
|
82
|
+
function normalizeWordPrefix(raw, source) {
|
|
83
|
+
let out = raw;
|
|
84
|
+
const name = source.name ?? "";
|
|
85
|
+
const colonIdx = name.indexOf(":");
|
|
86
|
+
if (colonIdx > 0) {
|
|
87
|
+
const sourcePrefix = name.slice(0, colonIdx);
|
|
88
|
+
if (sourcePrefix !== "w") out = rewritePrefix(out, sourcePrefix, "w");
|
|
89
|
+
}
|
|
90
|
+
out = normalizeChildrenForLocalNames(out, W_LOCAL_NAMES, "w");
|
|
91
|
+
out = normalizeChildrenForLocalNames(out, W14_LOCAL_NAMES, "w14");
|
|
92
|
+
out = normalizeChildrenForLocalNames(out, W15_LOCAL_NAMES, "w15");
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
function rewritePrefix(raw, from, to) {
|
|
96
|
+
const escaped = from.replaceAll(/[$()*+./?[\\\]^{|}]/gu, "\\$&");
|
|
97
|
+
const tagOpen = new RegExp(`<${escaped}:`, "gu");
|
|
98
|
+
const tagClose = new RegExp(`</${escaped}:`, "gu");
|
|
99
|
+
const attr = new RegExp(`(\\s)${escaped}:`, "gu");
|
|
100
|
+
return raw.replaceAll(tagOpen, `<${to}:`).replaceAll(tagClose, `</${to}:`).replaceAll(attr, `$1${to}:`);
|
|
101
|
+
}
|
|
102
|
+
function normalizeChildrenForLocalNames(raw, localNames, canonical) {
|
|
103
|
+
let out = raw;
|
|
104
|
+
for (const local of localNames) {
|
|
105
|
+
const escapedLocal = local.replaceAll(/[$()*+./?[\\\]^{|}]/gu, "\\$&");
|
|
106
|
+
const opener = new RegExp(`<(\\w+):${escapedLocal}\\b`, "gu");
|
|
107
|
+
const closer = new RegExp(`</(\\w+):${escapedLocal}\\b`, "gu");
|
|
108
|
+
out = out.replaceAll(opener, (_m, prefix) => prefix === canonical ? `<${prefix}:${local}` : `<${canonical}:${local}`);
|
|
109
|
+
out = out.replaceAll(closer, (_m, prefix) => prefix === canonical ? `</${prefix}:${local}` : `</${canonical}:${local}`);
|
|
110
|
+
out = rewriteOpenTagAttrPrefixes(out, canonical, local);
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Walk every `<canonical:local …>` open tag in `raw` and rewrite any
|
|
116
|
+
* attribute-name prefix that is not already `canonical` (and not `xmlns`) to
|
|
117
|
+
* `canonical`. Quoted attribute values are skipped so prefix-shaped substrings
|
|
118
|
+
* inside a value (OpenDoPE payloads in `w:tag w:val="…"`, namespace URIs in
|
|
119
|
+
* `xmlns:foo="…"`, etc.) are left untouched.
|
|
120
|
+
*/
|
|
121
|
+
function rewriteOpenTagAttrPrefixes(raw, canonical, local) {
|
|
122
|
+
const opener = `<${canonical}:${local}`;
|
|
123
|
+
const pieces = [];
|
|
124
|
+
let cursor = 0;
|
|
125
|
+
while (cursor < raw.length) {
|
|
126
|
+
const tagStart = raw.indexOf(opener, cursor);
|
|
127
|
+
if (tagStart === -1) {
|
|
128
|
+
pieces.push(raw.slice(cursor));
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
const afterOpener = raw.codePointAt(tagStart + opener.length);
|
|
132
|
+
if (!(afterOpener === void 0 || !(afterOpener >= 48 && afterOpener <= 57 || afterOpener >= 65 && afterOpener <= 90 || afterOpener >= 97 && afterOpener <= 122 || afterOpener === 95))) {
|
|
133
|
+
pieces.push(raw.slice(cursor, tagStart + opener.length));
|
|
134
|
+
cursor = tagStart + opener.length;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
pieces.push(raw.slice(cursor, tagStart + opener.length));
|
|
138
|
+
cursor = tagStart + opener.length;
|
|
139
|
+
let quote = null;
|
|
140
|
+
let atAttrNameBoundary = true;
|
|
141
|
+
while (cursor < raw.length) {
|
|
142
|
+
const ch = raw.charAt(cursor);
|
|
143
|
+
if (quote) {
|
|
144
|
+
pieces.push(ch);
|
|
145
|
+
cursor += 1;
|
|
146
|
+
if (ch === quote) {
|
|
147
|
+
quote = null;
|
|
148
|
+
atAttrNameBoundary = false;
|
|
149
|
+
}
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (ch === "\"" || ch === "'") {
|
|
153
|
+
quote = ch;
|
|
154
|
+
pieces.push(ch);
|
|
155
|
+
cursor += 1;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (ch === ">") {
|
|
159
|
+
pieces.push(ch);
|
|
160
|
+
cursor += 1;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
if (ch === " " || ch === " " || ch === "\n" || ch === "\r") {
|
|
164
|
+
pieces.push(ch);
|
|
165
|
+
cursor += 1;
|
|
166
|
+
atAttrNameBoundary = true;
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (atAttrNameBoundary) {
|
|
170
|
+
const tokenStart = cursor;
|
|
171
|
+
while (cursor < raw.length) {
|
|
172
|
+
const c = raw.charAt(cursor);
|
|
173
|
+
if (c === "=" || c === " " || c === " " || c === "\n" || c === "\r" || c === "/" || c === ">") break;
|
|
174
|
+
cursor += 1;
|
|
175
|
+
}
|
|
176
|
+
const token = raw.slice(tokenStart, cursor);
|
|
177
|
+
const colonIdx = token.indexOf(":");
|
|
178
|
+
if (colonIdx > 0) {
|
|
179
|
+
const prefix = token.slice(0, colonIdx);
|
|
180
|
+
const localAttr = token.slice(colonIdx + 1);
|
|
181
|
+
if (prefix !== canonical && prefix !== "xmlns" && /^\w+$/u.test(prefix) && localAttr.length > 0) pieces.push(`${canonical}:${localAttr}`);
|
|
182
|
+
else pieces.push(token);
|
|
183
|
+
} else pieces.push(token);
|
|
184
|
+
atAttrNameBoundary = false;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
pieces.push(ch);
|
|
188
|
+
cursor += 1;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return pieces.join("");
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Parse `<w:sdtPr>` (and optional `<w:sdtEndPr>`) into {@link SdtProperties}.
|
|
195
|
+
*
|
|
196
|
+
* Modeled fields drive addressing / template tooling; `rawPropertiesXml`
|
|
197
|
+
* and `rawEndPropertiesXml` carry the original bytes for the serializer to
|
|
198
|
+
* replay unchanged, so the projection only needs to handle what we
|
|
199
|
+
* actually consume — unmodeled markers are not silently dropped.
|
|
200
|
+
*/
|
|
201
|
+
function parseSdtProperties(sdtPr, sdtEndPr) {
|
|
202
|
+
const props = { sdtType: "richText" };
|
|
203
|
+
if (sdtPr) {
|
|
204
|
+
props.rawPropertiesXml = normalizeWordPrefix(elementToXml(sdtPr), sdtPr);
|
|
205
|
+
for (const el of sdtPr.elements ?? []) {
|
|
206
|
+
if (el.type !== "element") continue;
|
|
207
|
+
const name = el.name ? getLocalName(el.name) : "";
|
|
208
|
+
switch (name) {
|
|
209
|
+
case "id": {
|
|
210
|
+
const raw = getAttributeAnyPrefix(el, "val");
|
|
211
|
+
if (raw !== null) {
|
|
212
|
+
const n = Number.parseInt(raw, 10);
|
|
213
|
+
if (!Number.isNaN(n)) props.id = n;
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
case "alias": {
|
|
218
|
+
const aliasVal = getAttributeAnyPrefix(el, "val");
|
|
219
|
+
if (aliasVal !== null) props.alias = aliasVal;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
case "tag": {
|
|
223
|
+
const tagVal = getAttributeAnyPrefix(el, "val");
|
|
224
|
+
if (tagVal !== null) props.tag = tagVal;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
case "lock":
|
|
228
|
+
props.lock = narrowEnum(getAttributeAnyPrefix(el, "val"), SdtLockSchema) ?? "unlocked";
|
|
229
|
+
break;
|
|
230
|
+
case "placeholder": {
|
|
231
|
+
const docPart = findChild(el, "w", "docPart");
|
|
232
|
+
if (docPart) {
|
|
233
|
+
const phVal = getAttributeAnyPrefix(docPart, "val");
|
|
234
|
+
if (phVal !== null) props.placeholder = phVal;
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
case "showingPlcHdr":
|
|
239
|
+
props.showingPlaceholder = parseBooleanElement(el, "w");
|
|
240
|
+
break;
|
|
241
|
+
case "text":
|
|
242
|
+
props.sdtType = "plainText";
|
|
243
|
+
break;
|
|
244
|
+
case "date": {
|
|
245
|
+
props.sdtType = "date";
|
|
246
|
+
const dateFormatEl = findChild(el, "w", "dateFormat");
|
|
247
|
+
if (dateFormatEl) {
|
|
248
|
+
const fmt = getAttributeAnyPrefix(dateFormatEl, "val");
|
|
249
|
+
if (fmt !== null) props.dateFormat = fmt;
|
|
250
|
+
}
|
|
251
|
+
const fullDate = getAttributeAnyPrefix(el, "fullDate");
|
|
252
|
+
if (fullDate !== null) props.dateValueISO = fullDate;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case "dropDownList":
|
|
256
|
+
case "comboBox": {
|
|
257
|
+
props.sdtType = name === "dropDownList" ? "dropdown" : "comboBox";
|
|
258
|
+
props.listItems = parseListItems(el);
|
|
259
|
+
const lastValue = getAttributeAnyPrefix(el, "lastValue");
|
|
260
|
+
if (lastValue !== null) props.dropdownLastValue = lastValue;
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case "checkbox": {
|
|
264
|
+
props.sdtType = "checkbox";
|
|
265
|
+
const checked14 = findChild(el, "w14", "checked");
|
|
266
|
+
const checkedW = findChild(el, "w", "checked");
|
|
267
|
+
if (checked14) props.checked = parseBooleanElement(checked14, "w14");
|
|
268
|
+
else if (checkedW) props.checked = parseBooleanElement(checkedW, "w");
|
|
269
|
+
else props.checked = false;
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
case "picture":
|
|
273
|
+
props.sdtType = "picture";
|
|
274
|
+
break;
|
|
275
|
+
case "docPartObj":
|
|
276
|
+
case "docPartList":
|
|
277
|
+
props.sdtType = "buildingBlockGallery";
|
|
278
|
+
break;
|
|
279
|
+
case "group":
|
|
280
|
+
props.sdtType = "group";
|
|
281
|
+
break;
|
|
282
|
+
default: break;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (sdtEndPr) props.rawEndPropertiesXml = normalizeWordPrefix(elementToXml(sdtEndPr), sdtEndPr);
|
|
287
|
+
return props;
|
|
288
|
+
}
|
|
289
|
+
//#endregion
|
|
290
|
+
export { parseSdtProperties };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { document_d_exports } from "../types/document.js";
|
|
2
|
+
|
|
3
|
+
//#region src/docx/sdtPropertiesPatch.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Rewrite the relevant child elements of `<w:sdtPr>` so the modeled
|
|
6
|
+
* properties (checked / dateFormat / fullDate / lastValue / showingPlcHdr)
|
|
7
|
+
* agree with the raw XML before it is replayed by the serializer.
|
|
8
|
+
*
|
|
9
|
+
* Pure: returns a new string; the input is not modified.
|
|
10
|
+
*/
|
|
11
|
+
declare function reconcileRawSdtPr(raw: string, props: document_d_exports.SdtProperties, options?: {
|
|
12
|
+
dateFullDate?: string;
|
|
13
|
+
dropdownLastValue?: string;
|
|
14
|
+
}): string;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { reconcileRawSdtPr };
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
//#region src/docx/sdtPropertiesPatch.ts
|
|
2
|
+
const XML_ATTR_ESCAPES = {
|
|
3
|
+
"&": "&",
|
|
4
|
+
"<": "<",
|
|
5
|
+
">": ">",
|
|
6
|
+
"\"": """,
|
|
7
|
+
"'": "'"
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Escape a value for embedding in an XML attribute. Single-pass replace
|
|
11
|
+
* over the five XML metacharacters (incl. apostrophe so the function
|
|
12
|
+
* stays correct for `'`-delimited attributes even though this file always
|
|
13
|
+
* emits double-quoted ones). Output is XML written to a DOCX zip — no
|
|
14
|
+
* HTML / browser interpretation downstream.
|
|
15
|
+
*/
|
|
16
|
+
function escapeXmlAttr(value) {
|
|
17
|
+
return value.replace(/[&<>"']/gu, (ch) => XML_ATTR_ESCAPES[ch] ?? ch);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Drop any `*:lastValue="…"` attribute (any namespace prefix, or
|
|
21
|
+
* unprefixed) from an attribute-list string. We avoid a single greedy
|
|
22
|
+
* regex with `\s+` (which lint flags as backtracking-risky) and instead
|
|
23
|
+
* scan character-by-character against `lastValue=` while accepting any
|
|
24
|
+
* preceding `prefix:`. Without prefix tolerance, a source DOCX that
|
|
25
|
+
* binds the Word namespace under a non-`w` prefix
|
|
26
|
+
* (`<ns0:dropDownList ns0:lastValue="old">`) would keep the stale
|
|
27
|
+
* attribute alongside our freshly-emitted `w:lastValue` on save.
|
|
28
|
+
*/
|
|
29
|
+
function stripLastValueAttr(attrs) {
|
|
30
|
+
const SUFFIX = "lastValue=";
|
|
31
|
+
let out = attrs;
|
|
32
|
+
let searchFrom = 0;
|
|
33
|
+
while (searchFrom < out.length) {
|
|
34
|
+
const hitIdx = out.indexOf(SUFFIX, searchFrom);
|
|
35
|
+
if (hitIdx === -1) break;
|
|
36
|
+
let nameStart = hitIdx;
|
|
37
|
+
while (nameStart > 0 && /[A-Za-z0-9_-]/u.test(out[nameStart - 1] ?? "")) nameStart -= 1;
|
|
38
|
+
if (nameStart > 0 && out[nameStart - 1] === ":") {
|
|
39
|
+
nameStart -= 1;
|
|
40
|
+
while (nameStart > 0 && /[A-Za-z0-9_-]/u.test(out[nameStart - 1] ?? "")) nameStart -= 1;
|
|
41
|
+
}
|
|
42
|
+
if (nameStart === 0 || !/\s/u.test(out[nameStart - 1] ?? "")) {
|
|
43
|
+
searchFrom = hitIdx + 10;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const quoteIdx = hitIdx + 10;
|
|
47
|
+
const quote = out[quoteIdx];
|
|
48
|
+
if (quote !== "\"" && quote !== "'") {
|
|
49
|
+
searchFrom = hitIdx + 10;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const closeIdx = out.indexOf(quote, quoteIdx + 1);
|
|
53
|
+
if (closeIdx === -1) break;
|
|
54
|
+
out = `${out.slice(0, nameStart - 1)}${out.slice(closeIdx + 1)}`;
|
|
55
|
+
searchFrom = nameStart - 1;
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Replace or insert a child element inside `<w:sdtPr>...</w:sdtPr>`.
|
|
61
|
+
*
|
|
62
|
+
* - If a matching child already exists (by local name), the whole element
|
|
63
|
+
* is replaced verbatim by `replacement` (so attributes / payload come
|
|
64
|
+
* from the caller).
|
|
65
|
+
* - Otherwise `replacement` is injected just before `</w:sdtPr>` so the
|
|
66
|
+
* element ends up as a child of sdtPr, not after it.
|
|
67
|
+
*/
|
|
68
|
+
function upsertSdtPrChild(raw, localName, replacement) {
|
|
69
|
+
const escaped = localName.replaceAll(/[$()*+./?[\\\]^{|}]/gu, "\\$&");
|
|
70
|
+
const selfClosing = new RegExp(`<\\w+:${escaped}\\b[^>]*\\/>`, "iu");
|
|
71
|
+
const opened = new RegExp(`<\\w+:${escaped}\\b[^>]*>[\\s\\S]*?<\\/\\w+:${escaped}>`, "iu");
|
|
72
|
+
if (selfClosing.test(raw)) return raw.replace(selfClosing, replacement);
|
|
73
|
+
if (opened.test(raw)) return raw.replace(opened, replacement);
|
|
74
|
+
const closing = /<\/(?<prefix>\w+):sdtPr>/iu;
|
|
75
|
+
const closingMatch = closing.exec(raw);
|
|
76
|
+
if (closingMatch) {
|
|
77
|
+
const closingPrefix = closingMatch.groups?.["prefix"];
|
|
78
|
+
return raw.replace(closing, `${replacement}</${closingPrefix}:sdtPr>`);
|
|
79
|
+
}
|
|
80
|
+
const selfClosingPr = /<(?<prefix>\w+):sdtPr(?<attrs>[^/>]*)\/>/iu;
|
|
81
|
+
if (selfClosingPr.test(raw)) return raw.replace(selfClosingPr, (_match, prefix, attrs) => `<${prefix}:sdtPr${attrs}>${replacement}</${prefix}:sdtPr>`);
|
|
82
|
+
return raw;
|
|
83
|
+
}
|
|
84
|
+
function setOrRemove(raw, localName, replacementWhenSet) {
|
|
85
|
+
if (replacementWhenSet === null) {
|
|
86
|
+
const escaped = localName.replaceAll(/[$()*+./?[\\\]^{|}]/gu, "\\$&");
|
|
87
|
+
const selfClosing = new RegExp(`<\\w+:${escaped}\\b[^>]*\\/>`, "igu");
|
|
88
|
+
const opened = new RegExp(`<\\w+:${escaped}\\b[^>]*>[\\s\\S]*?<\\/\\w+:${escaped}>`, "igu");
|
|
89
|
+
return raw.replaceAll(selfClosing, "").replaceAll(opened, "");
|
|
90
|
+
}
|
|
91
|
+
return upsertSdtPrChild(raw, localName, replacementWhenSet);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Rewrite the relevant child elements of `<w:sdtPr>` so the modeled
|
|
95
|
+
* properties (checked / dateFormat / fullDate / lastValue / showingPlcHdr)
|
|
96
|
+
* agree with the raw XML before it is replayed by the serializer.
|
|
97
|
+
*
|
|
98
|
+
* Pure: returns a new string; the input is not modified.
|
|
99
|
+
*/
|
|
100
|
+
function reconcileRawSdtPr(raw, props, options = {}) {
|
|
101
|
+
let next = raw;
|
|
102
|
+
if (props.showingPlaceholder === true) next = setOrRemove(next, "showingPlcHdr", "<w:showingPlcHdr/>");
|
|
103
|
+
else if (props.showingPlaceholder === false) next = setOrRemove(next, "showingPlcHdr", null);
|
|
104
|
+
if (props.sdtType === "checkbox" && typeof props.checked === "boolean") {
|
|
105
|
+
const val = props.checked ? "1" : "0";
|
|
106
|
+
const checkedOpened = /<(?:\w+):checked\b[^>]*>[\s\S]*?<\/\w+:checked>/iu;
|
|
107
|
+
const checkedSelfClosing = /<(?:\w+):checked\b[^>]*\/>/iu;
|
|
108
|
+
if (checkedOpened.test(next)) next = next.replaceAll(/<(?<prefix>\w+):checked\b[^>]*>[\s\S]*?<\/\w+:checked>/giu, (_match, prefix) => `<${prefix}:checked ${prefix}:val="${val}"/>`);
|
|
109
|
+
else if (checkedSelfClosing.test(next)) next = next.replaceAll(/<(?<prefix>\w+):checked\b[^>]*\/>/giu, (_match, prefix) => `<${prefix}:checked ${prefix}:val="${val}"/>`);
|
|
110
|
+
else if (/<\w+:checkbox\b[^>]*>/iu.test(next)) next = next.replace(/<(?<prefix>\w+):checkbox\b[^>]*>/iu, (match, prefix) => `${match}<${prefix}:checked ${prefix}:val="${val}"/>`);
|
|
111
|
+
else next = upsertSdtPrChild(next, "checkbox", `<w14:checkbox><w14:checked w14:val="${val}"/></w14:checkbox>`);
|
|
112
|
+
}
|
|
113
|
+
if (props.sdtType === "date") {
|
|
114
|
+
const fullDate = options.dateFullDate;
|
|
115
|
+
const dateFormat = props.dateFormat;
|
|
116
|
+
if (fullDate !== void 0 || dateFormat !== void 0) {
|
|
117
|
+
const wDate = /<(?<prefix>\w+):date\b(?<attrs>[^>]*)>(?<inner>[\s\S]*?)<\/\w+:date>/iu;
|
|
118
|
+
const wDateSelf = /<(?<prefix>\w+):date\b(?<attrs>[^/>]*)\/>/iu;
|
|
119
|
+
const fullDateAttr = fullDate !== void 0 ? ` w:fullDate="${escapeXmlAttr(fullDate)}"` : "";
|
|
120
|
+
const formatChild = dateFormat !== void 0 ? `<w:dateFormat w:val="${escapeXmlAttr(dateFormat)}"/>` : "";
|
|
121
|
+
if (wDate.test(next)) next = next.replace(wDate, (_match, prefix, matchedAttrs, inner) => {
|
|
122
|
+
let body = inner.replaceAll(/<\w+:dateFormat\b[^>]*(?:\/>|>[\s\S]*?<\/\w+:dateFormat>)/giu, "");
|
|
123
|
+
if (formatChild) body = `${formatChild}${body}`;
|
|
124
|
+
return `<${prefix}:date${fullDate !== void 0 ? fullDateAttr : matchedAttrs}>${body}</${prefix}:date>`;
|
|
125
|
+
});
|
|
126
|
+
else if (wDateSelf.test(next)) next = next.replace(wDateSelf, (_match, prefix) => `<${prefix}:date${fullDateAttr}>${formatChild}</${prefix}:date>`);
|
|
127
|
+
else next = upsertSdtPrChild(next, "date", `<w:date${fullDateAttr}>${formatChild}</w:date>`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if ((props.sdtType === "dropdown" || props.sdtType === "comboBox") && options.dropdownLastValue !== void 0) {
|
|
131
|
+
const escapedValue = escapeXmlAttr(options.dropdownLastValue);
|
|
132
|
+
const opened = /<(?<prefix>\w+):(?<name>dropDownList|comboBox)\b(?<attrs>[^>]*)>(?<inner>[\s\S]*?)<\/\w+:(?:dropDownList|comboBox)>/iu;
|
|
133
|
+
const selfClosing = /<(?<prefix>\w+):(?<name>dropDownList|comboBox)\b(?<attrs>[^/>]*)\/>/iu;
|
|
134
|
+
if (opened.test(next)) next = next.replace(opened, (_match, prefix, name, attrs, inner) => {
|
|
135
|
+
return `<${prefix}:${name}${stripLastValueAttr(attrs)} ${prefix}:lastValue="${escapedValue}">${inner}</${prefix}:${name}>`;
|
|
136
|
+
});
|
|
137
|
+
else if (selfClosing.test(next)) next = next.replace(selfClosing, (_match, prefix, name, attrs) => {
|
|
138
|
+
return `<${prefix}:${name}${stripLastValueAttr(attrs)} ${prefix}:lastValue="${escapedValue}"/>`;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return next;
|
|
142
|
+
}
|
|
143
|
+
//#endregion
|
|
144
|
+
export { reconcileRawSdtPr };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { document_d_exports } from "../types/document.js";
|
|
2
|
+
import { XmlElement } from "./xmlParser.js";
|
|
3
|
+
|
|
4
|
+
//#region src/docx/sectionParser.d.ts
|
|
5
|
+
declare function getUnserializedSectionPropertyChildNames(props: document_d_exports.SectionProperties): readonly string[] | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Parse section properties (w:sectPr)
|
|
8
|
+
*
|
|
9
|
+
* @param sectPr - The w:sectPr element
|
|
10
|
+
* @returns SectionProperties object
|
|
11
|
+
*/
|
|
12
|
+
declare function parseSectionProperties(sectPr: XmlElement | null): document_d_exports.SectionProperties;
|
|
13
|
+
/**
|
|
14
|
+
* Get page width in pixels (96 DPI)
|
|
15
|
+
*
|
|
16
|
+
* @param props - Section properties
|
|
17
|
+
* @param defaultWidth - Default width in twips (default: 12240 = 8.5 inches)
|
|
18
|
+
* @returns Width in pixels
|
|
19
|
+
*/
|
|
20
|
+
declare function getPageWidthPixels(props: document_d_exports.SectionProperties, defaultWidth?: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Get page height in pixels (96 DPI)
|
|
23
|
+
*
|
|
24
|
+
* @param props - Section properties
|
|
25
|
+
* @param defaultHeight - Default height in twips (default: 15840 = 11 inches)
|
|
26
|
+
* @returns Height in pixels
|
|
27
|
+
*/
|
|
28
|
+
declare function getPageHeightPixels(props: document_d_exports.SectionProperties, defaultHeight?: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get content width (page width minus margins) in pixels
|
|
31
|
+
*
|
|
32
|
+
* @param props - Section properties
|
|
33
|
+
* @returns Content width in pixels
|
|
34
|
+
*/
|
|
35
|
+
declare function getContentWidthPixels(props: document_d_exports.SectionProperties): number;
|
|
36
|
+
/**
|
|
37
|
+
* Get content height (page height minus margins) in pixels
|
|
38
|
+
*
|
|
39
|
+
* @param props - Section properties
|
|
40
|
+
* @returns Content height in pixels
|
|
41
|
+
*/
|
|
42
|
+
declare function getContentHeightPixels(props: document_d_exports.SectionProperties): number;
|
|
43
|
+
/**
|
|
44
|
+
* Get margins in pixels
|
|
45
|
+
*
|
|
46
|
+
* @param props - Section properties
|
|
47
|
+
* @returns Object with all margins in pixels
|
|
48
|
+
*/
|
|
49
|
+
declare function getMarginsPixels(props: document_d_exports.SectionProperties): {
|
|
50
|
+
top: number;
|
|
51
|
+
bottom: number;
|
|
52
|
+
left: number;
|
|
53
|
+
right: number;
|
|
54
|
+
header: number;
|
|
55
|
+
footer: number;
|
|
56
|
+
gutter: number;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Check if section has different first page header/footer
|
|
60
|
+
*/
|
|
61
|
+
declare function hasDifferentFirstPage(props: document_d_exports.SectionProperties): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if section has different odd/even page headers/footers
|
|
64
|
+
*/
|
|
65
|
+
declare function hasDifferentOddEven(props: document_d_exports.SectionProperties): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get effective column count (minimum 1)
|
|
68
|
+
*/
|
|
69
|
+
declare function getColumnCount(props: document_d_exports.SectionProperties): number;
|
|
70
|
+
/**
|
|
71
|
+
* Check if section is landscape
|
|
72
|
+
*/
|
|
73
|
+
declare function isLandscape(props: document_d_exports.SectionProperties): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Check if section has page borders
|
|
76
|
+
*/
|
|
77
|
+
declare function hasPageBorders(props: document_d_exports.SectionProperties): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if section has line numbers
|
|
80
|
+
*/
|
|
81
|
+
declare function hasLineNumbers(props: document_d_exports.SectionProperties): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Get default section properties (US Letter size, 1 inch margins)
|
|
84
|
+
*/
|
|
85
|
+
declare function getDefaultSectionProperties(): document_d_exports.SectionProperties;
|
|
86
|
+
/**
|
|
87
|
+
* Merge section properties (later values override earlier)
|
|
88
|
+
*
|
|
89
|
+
* @param base - Base properties
|
|
90
|
+
* @param override - Override properties
|
|
91
|
+
* @returns Merged properties
|
|
92
|
+
*/
|
|
93
|
+
declare function mergeSectionProperties(base: document_d_exports.SectionProperties, override: document_d_exports.SectionProperties): document_d_exports.SectionProperties;
|
|
94
|
+
//#endregion
|
|
95
|
+
export { getColumnCount, getContentHeightPixels, getContentWidthPixels, getDefaultSectionProperties, getMarginsPixels, getPageHeightPixels, getPageWidthPixels, getUnserializedSectionPropertyChildNames, hasDifferentFirstPage, hasDifferentOddEven, hasLineNumbers, hasPageBorders, isLandscape, mergeSectionProperties, parseSectionProperties };
|