@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,159 @@
|
|
|
1
|
+
//#region src/prosemirror/extensions/features/pasteCleanup.ts
|
|
2
|
+
/**
|
|
3
|
+
* Office / web paste cleanup
|
|
4
|
+
*
|
|
5
|
+
* Content pasted from word processors and web pages arrives wrapped in a large
|
|
6
|
+
* amount of producer-specific cruft: conditional comments, XML processing
|
|
7
|
+
* instructions, namespaced markup (`<o:p>`, `<w:sdt>`, smart tags), `mso-*`
|
|
8
|
+
* style declarations, and empty spans. None of it maps to the editor schema,
|
|
9
|
+
* and some of it confuses the browser HTML parser that ProseMirror's clipboard
|
|
10
|
+
* pipeline relies on. Producer class names (`MsoNormal`, ...) are deliberately
|
|
11
|
+
* kept so the downstream style inliner can match `<style>` rules against them.
|
|
12
|
+
*
|
|
13
|
+
* `cleanPastedHtml` normalizes the raw clipboard HTML string into something the
|
|
14
|
+
* schema's `parseDOM` rules can read cleanly. It is a pure string transform so
|
|
15
|
+
* it runs in the editor and in tests without a DOM, and it is deliberately
|
|
16
|
+
* conservative: it strips producer metadata but never rewrites visible text
|
|
17
|
+
* (curly quotes, non-Latin scripts, and whitespace between words are left
|
|
18
|
+
* untouched, since this editor targets an international, typography-sensitive
|
|
19
|
+
* audience).
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Remove every HTML comment, including downlevel conditional comments
|
|
23
|
+
* (`<!--[if gte mso 9]> ... <![endif]-->`) that carry the Office `<xml>` island,
|
|
24
|
+
* while leaving the contents of `<style>` elements untouched.
|
|
25
|
+
*
|
|
26
|
+
* The `<style>` carve-out matters because legacy pasted HTML hides stylesheet
|
|
27
|
+
* CSS inside comment delimiters (`<style><!-- .c { ... } --></style>`, the old
|
|
28
|
+
* CDATA-hiding trick). This cleanup runs before the style inliner and must hand
|
|
29
|
+
* it an intact stylesheet, so a blanket comment strip would drop class rules
|
|
30
|
+
* that used to be inlined. Style blocks are copied through verbatim.
|
|
31
|
+
*
|
|
32
|
+
* A single linear scan rather than a regex: clipboard HTML is untrusted, and a
|
|
33
|
+
* lazy `<!--[\s\S]*?-->` against the multi-character `-->` terminator backtracks
|
|
34
|
+
* polynomially on hostile input. The scan also drops an unterminated comment
|
|
35
|
+
* through end-of-string so no stray `<!--` can survive.
|
|
36
|
+
*/
|
|
37
|
+
function stripHtmlComments(html) {
|
|
38
|
+
const lower = html.toLowerCase();
|
|
39
|
+
let result = "";
|
|
40
|
+
let cursor = 0;
|
|
41
|
+
while (cursor < html.length) {
|
|
42
|
+
const commentStart = html.indexOf("<!--", cursor);
|
|
43
|
+
if (commentStart === -1) {
|
|
44
|
+
result += html.slice(cursor);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
const styleStart = lower.indexOf("<style", cursor);
|
|
48
|
+
if (styleStart !== -1 && styleStart < commentStart) {
|
|
49
|
+
const openTagEnd = html.indexOf(">", styleStart);
|
|
50
|
+
const closeStart = openTagEnd === -1 ? -1 : lower.indexOf("</style", openTagEnd + 1);
|
|
51
|
+
const closeTagEnd = closeStart === -1 ? -1 : html.indexOf(">", closeStart);
|
|
52
|
+
if (closeTagEnd === -1) {
|
|
53
|
+
result += html.slice(cursor);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
result += html.slice(cursor, closeTagEnd + 1);
|
|
57
|
+
cursor = closeTagEnd + 1;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
result += html.slice(cursor, commentStart);
|
|
61
|
+
const commentEnd = html.indexOf("-->", commentStart + 4);
|
|
62
|
+
if (commentEnd === -1) break;
|
|
63
|
+
cursor = commentEnd + 3;
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Drop `mso-*` declarations from every inline `style` attribute while keeping
|
|
69
|
+
* legitimate CSS. Operates per attribute (bounded `[^"]*` / `[^']*` inside the
|
|
70
|
+
* quotes) so it can never run past the attribute into unrelated markup. An
|
|
71
|
+
* attribute left with no non-`mso-*` declarations is removed entirely.
|
|
72
|
+
*/
|
|
73
|
+
function stripMsoStyles(html) {
|
|
74
|
+
return html.replace(/(\s+)style=(?:"([^"]*)"|'([^']*)')/gi, (_match, ws, dq, sq) => {
|
|
75
|
+
const raw = dq ?? sq ?? "";
|
|
76
|
+
const quote = dq === void 0 ? "'" : "\"";
|
|
77
|
+
const kept = splitStyleDeclarations(raw).map((declaration) => declaration.trim()).filter((declaration) => declaration.length > 0 && !/^mso-/i.test(declaration)).join("; ");
|
|
78
|
+
return kept ? `${ws}style=${quote}${kept}${quote}` : "";
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Split a CSS `style` value into declarations on top-level `;` only.
|
|
83
|
+
*
|
|
84
|
+
* A naive `split(";")` corrupts values that legitimately contain a semicolon
|
|
85
|
+
* inside a function or a quoted string (e.g. `background:url("data:...;base64,...")`).
|
|
86
|
+
* This scan ignores `;` while inside parentheses or a quoted string, so such
|
|
87
|
+
* declarations stay intact.
|
|
88
|
+
*/
|
|
89
|
+
function splitStyleDeclarations(value) {
|
|
90
|
+
const declarations = [];
|
|
91
|
+
let current = "";
|
|
92
|
+
let parenDepth = 0;
|
|
93
|
+
let quote = null;
|
|
94
|
+
for (const char of value) {
|
|
95
|
+
if (quote !== null) {
|
|
96
|
+
current += char;
|
|
97
|
+
if (char === quote) quote = null;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (char === "\"" || char === "'") quote = char;
|
|
101
|
+
else if (char === "(") parenDepth++;
|
|
102
|
+
else if (char === ")") parenDepth = Math.max(0, parenDepth - 1);
|
|
103
|
+
else if (char === ";" && parenDepth === 0) {
|
|
104
|
+
declarations.push(current);
|
|
105
|
+
current = "";
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
current += char;
|
|
109
|
+
}
|
|
110
|
+
if (current) declarations.push(current);
|
|
111
|
+
return declarations;
|
|
112
|
+
}
|
|
113
|
+
const TAG_TAIL = `(?:"[^"]*"|'[^']*'|[^>"'])*`;
|
|
114
|
+
const NAMESPACED_TAG = new RegExp(`<\\/?(?:[owvm]|st\\d+):${TAG_TAIL}>`, "gi");
|
|
115
|
+
const XML_PROCESSING_INSTRUCTION = new RegExp(`<\\?xml${TAG_TAIL}>`, "gi");
|
|
116
|
+
const STRAY_XML_TAG = new RegExp(`<\\/?xml${TAG_TAIL}>`, "gi");
|
|
117
|
+
const NOISE_TAG = new RegExp(`<\\/?(?:font|meta|link)${TAG_TAIL}>`, "gi");
|
|
118
|
+
const EMPTY_SPAN = new RegExp(`<span(?:\\s${TAG_TAIL})?><\\/span>`, "gi");
|
|
119
|
+
const MAX_EMPTY_SPAN_PASSES = 5;
|
|
120
|
+
/**
|
|
121
|
+
* Remove empty spans left behind after stripping `mso-*` styles. Only truly
|
|
122
|
+
* empty spans are removed (whitespace-only spans are kept so word-separating
|
|
123
|
+
* spacer runs never collapse two words together). Repeated a bounded number of
|
|
124
|
+
* times to unwrap nested empties (`<span><span></span></span>`).
|
|
125
|
+
*/
|
|
126
|
+
function stripEmptySpans(html) {
|
|
127
|
+
let current = html;
|
|
128
|
+
for (let pass = 0; pass < MAX_EMPTY_SPAN_PASSES; pass++) {
|
|
129
|
+
const next = current.replace(EMPTY_SPAN, "");
|
|
130
|
+
if (next === current) break;
|
|
131
|
+
current = next;
|
|
132
|
+
}
|
|
133
|
+
return current;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Strip Office/web producer cruft from a raw clipboard HTML string.
|
|
137
|
+
*
|
|
138
|
+
* Best-effort and non-throwing: any unexpected failure returns the original
|
|
139
|
+
* markup so a paste degrades to the browser default rather than losing content.
|
|
140
|
+
* `<style>` blocks are intentionally left in place for the downstream style
|
|
141
|
+
* inliner, which resolves class-based CSS before the schema parser runs.
|
|
142
|
+
*/
|
|
143
|
+
function cleanPastedHtml(html) {
|
|
144
|
+
if (!html) return html;
|
|
145
|
+
try {
|
|
146
|
+
let cleaned = stripHtmlComments(html);
|
|
147
|
+
cleaned = cleaned.replace(XML_PROCESSING_INSTRUCTION, "");
|
|
148
|
+
cleaned = cleaned.replace(NAMESPACED_TAG, "");
|
|
149
|
+
cleaned = cleaned.replace(STRAY_XML_TAG, "");
|
|
150
|
+
cleaned = cleaned.replace(NOISE_TAG, "");
|
|
151
|
+
cleaned = stripMsoStyles(cleaned);
|
|
152
|
+
cleaned = stripEmptySpans(cleaned);
|
|
153
|
+
return cleaned.trim();
|
|
154
|
+
} catch {
|
|
155
|
+
return html;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//#endregion
|
|
159
|
+
export { cleanPastedHtml };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/AllCapsExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* All Caps Mark Extension (w:caps)
|
|
6
|
+
*/
|
|
7
|
+
declare const AllCapsExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AllCapsExtension };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createMarkExtension } from "../create.js";
|
|
2
|
+
//#region src/prosemirror/extensions/marks/AllCapsExtension.ts
|
|
3
|
+
/**
|
|
4
|
+
* All Caps Mark Extension (w:caps)
|
|
5
|
+
*/
|
|
6
|
+
const AllCapsExtension = createMarkExtension({
|
|
7
|
+
name: "allCaps",
|
|
8
|
+
schemaMarkName: "allCaps",
|
|
9
|
+
markSpec: {
|
|
10
|
+
parseDOM: [{
|
|
11
|
+
style: "text-transform",
|
|
12
|
+
getAttrs: (value) => value === "uppercase" ? {} : false
|
|
13
|
+
}],
|
|
14
|
+
toDOM() {
|
|
15
|
+
return [
|
|
16
|
+
"span",
|
|
17
|
+
{ style: "text-transform: uppercase" },
|
|
18
|
+
0
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { AllCapsExtension };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/BoldExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Bold Mark Extension
|
|
6
|
+
*/
|
|
7
|
+
declare const BoldExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { BoldExtension };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createMarkExtension } from "../create.js";
|
|
2
|
+
import { panic } from "better-result";
|
|
3
|
+
import { toggleMark } from "prosemirror-commands";
|
|
4
|
+
//#region src/prosemirror/extensions/marks/BoldExtension.ts
|
|
5
|
+
/**
|
|
6
|
+
* Bold Mark Extension
|
|
7
|
+
*/
|
|
8
|
+
const BoldExtension = createMarkExtension({
|
|
9
|
+
name: "bold",
|
|
10
|
+
schemaMarkName: "bold",
|
|
11
|
+
markSpec: {
|
|
12
|
+
parseDOM: [
|
|
13
|
+
{ tag: "strong" },
|
|
14
|
+
{
|
|
15
|
+
tag: "b",
|
|
16
|
+
getAttrs(dom) {
|
|
17
|
+
const fw = dom.style.fontWeight;
|
|
18
|
+
if (fw === "normal" || fw === "400") return false;
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
style: "font-weight",
|
|
24
|
+
getAttrs: (value) => /^(?:bold(?:er)?|[5-9]\d{2})$/u.test(value) ? null : false
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
toDOM() {
|
|
28
|
+
return ["strong", 0];
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
onSchemaReady(ctx) {
|
|
32
|
+
const boldType = ctx.schema.marks["bold"];
|
|
33
|
+
if (!boldType) panic("Missing mark type: bold");
|
|
34
|
+
return {
|
|
35
|
+
commands: { toggleBold: () => toggleMark(boldType) },
|
|
36
|
+
keyboardShortcuts: { "Mod-b": toggleMark(boldType) }
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { BoldExtension };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Character Spacing Mark Extension
|
|
6
|
+
*
|
|
7
|
+
* Handles: character spacing (w:spacing), position/raise-lower (w:position),
|
|
8
|
+
* horizontal scale (w:w), and kerning (w:kern).
|
|
9
|
+
*
|
|
10
|
+
* Single mark with multiple attributes to avoid mark explosion.
|
|
11
|
+
*/
|
|
12
|
+
declare const CharacterSpacingExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CharacterSpacingExtension };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { formatPx, twipsToPixels } from "../../../utils/units.js";
|
|
2
|
+
import { expectCharacterSpacingMarkAttrs } from "../../attrs/index.js";
|
|
3
|
+
import { createMarkExtension } from "../create.js";
|
|
4
|
+
//#region src/prosemirror/extensions/marks/CharacterSpacingExtension.ts
|
|
5
|
+
/**
|
|
6
|
+
* Character Spacing Mark Extension
|
|
7
|
+
*
|
|
8
|
+
* Handles: character spacing (w:spacing), position/raise-lower (w:position),
|
|
9
|
+
* horizontal scale (w:w), and kerning (w:kern).
|
|
10
|
+
*
|
|
11
|
+
* Single mark with multiple attributes to avoid mark explosion.
|
|
12
|
+
*/
|
|
13
|
+
function halfPointsToPixels(halfPoints) {
|
|
14
|
+
return halfPoints / 2 * (96 / 72);
|
|
15
|
+
}
|
|
16
|
+
const CharacterSpacingExtension = createMarkExtension({
|
|
17
|
+
name: "characterSpacing",
|
|
18
|
+
schemaMarkName: "characterSpacing",
|
|
19
|
+
markSpec: {
|
|
20
|
+
attrs: {
|
|
21
|
+
spacing: { default: null },
|
|
22
|
+
position: { default: null },
|
|
23
|
+
scale: { default: null },
|
|
24
|
+
kerning: { default: null }
|
|
25
|
+
},
|
|
26
|
+
parseDOM: [{
|
|
27
|
+
tag: "span.docx-char-spacing",
|
|
28
|
+
getAttrs: (dom) => ({
|
|
29
|
+
spacing: dom.dataset["spacing"] ? Number(dom.dataset["spacing"]) : null,
|
|
30
|
+
position: dom.dataset["position"] ? Number(dom.dataset["position"]) : null,
|
|
31
|
+
scale: dom.dataset["scale"] ? Number(dom.dataset["scale"]) : null,
|
|
32
|
+
kerning: dom.dataset["kerning"] ? Number(dom.dataset["kerning"]) : null
|
|
33
|
+
})
|
|
34
|
+
}],
|
|
35
|
+
toDOM(mark) {
|
|
36
|
+
const { spacing, position, scale, kerning } = expectCharacterSpacingMarkAttrs(mark);
|
|
37
|
+
const styles = [];
|
|
38
|
+
const dataAttrs = { class: "docx-char-spacing" };
|
|
39
|
+
if (spacing !== void 0 && spacing !== 0) {
|
|
40
|
+
styles.push(`letter-spacing: ${formatPx(twipsToPixels(spacing))}`);
|
|
41
|
+
dataAttrs["data-spacing"] = String(spacing);
|
|
42
|
+
}
|
|
43
|
+
if (position !== void 0 && position !== 0) {
|
|
44
|
+
const px = halfPointsToPixels(position);
|
|
45
|
+
styles.push(`vertical-align: ${formatPx(px)}`);
|
|
46
|
+
dataAttrs["data-position"] = String(position);
|
|
47
|
+
}
|
|
48
|
+
if (scale !== void 0 && scale !== 100) {
|
|
49
|
+
styles.push(`transform: scaleX(${scale / 100})`);
|
|
50
|
+
styles.push("display: inline-block");
|
|
51
|
+
dataAttrs["data-scale"] = String(scale);
|
|
52
|
+
}
|
|
53
|
+
if (kerning !== void 0) dataAttrs["data-kerning"] = String(kerning);
|
|
54
|
+
if (styles.length > 0) dataAttrs["style"] = styles.join("; ");
|
|
55
|
+
return [
|
|
56
|
+
"span",
|
|
57
|
+
dataAttrs,
|
|
58
|
+
0
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
//#endregion
|
|
64
|
+
export { CharacterSpacingExtension };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/CharacterStyleExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Character Style Mark Extension (w:rStyle)
|
|
6
|
+
*
|
|
7
|
+
* Carries a run's character style reference through ProseMirror so semantic
|
|
8
|
+
* styles (e.g. a house "DefinedTerm" style) survive the load → edit → save
|
|
9
|
+
* round-trip. The style's resolved formatting is flattened into the regular
|
|
10
|
+
* marks at load for rendering; this mark only preserves the reference plus a
|
|
11
|
+
* private snapshot of the style's own run properties (`_styleRPr`) that the
|
|
12
|
+
* serializer uses to avoid re-emitting style-provided values as direct
|
|
13
|
+
* formatting.
|
|
14
|
+
*
|
|
15
|
+
* The mark renders as an unstyled span with a `data-character-style`
|
|
16
|
+
* attribute. parseDOM restores the styleId (so copy/paste inside the editor
|
|
17
|
+
* keeps the reference) but not the snapshot — pasted content then serializes
|
|
18
|
+
* with the reference plus explicit formatting, which renders identically and
|
|
19
|
+
* degrades gracefully.
|
|
20
|
+
*/
|
|
21
|
+
declare const CharacterStyleExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { CharacterStyleExtension };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { expectCharacterStyleMarkAttrs } from "../../attrs/index.js";
|
|
2
|
+
import { createMarkExtension } from "../create.js";
|
|
3
|
+
//#region src/prosemirror/extensions/marks/CharacterStyleExtension.ts
|
|
4
|
+
/**
|
|
5
|
+
* Character Style Mark Extension (w:rStyle)
|
|
6
|
+
*
|
|
7
|
+
* Carries a run's character style reference through ProseMirror so semantic
|
|
8
|
+
* styles (e.g. a house "DefinedTerm" style) survive the load → edit → save
|
|
9
|
+
* round-trip. The style's resolved formatting is flattened into the regular
|
|
10
|
+
* marks at load for rendering; this mark only preserves the reference plus a
|
|
11
|
+
* private snapshot of the style's own run properties (`_styleRPr`) that the
|
|
12
|
+
* serializer uses to avoid re-emitting style-provided values as direct
|
|
13
|
+
* formatting.
|
|
14
|
+
*
|
|
15
|
+
* The mark renders as an unstyled span with a `data-character-style`
|
|
16
|
+
* attribute. parseDOM restores the styleId (so copy/paste inside the editor
|
|
17
|
+
* keeps the reference) but not the snapshot — pasted content then serializes
|
|
18
|
+
* with the reference plus explicit formatting, which renders identically and
|
|
19
|
+
* degrades gracefully.
|
|
20
|
+
*/
|
|
21
|
+
const CharacterStyleExtension = createMarkExtension({
|
|
22
|
+
name: "characterStyle",
|
|
23
|
+
schemaMarkName: "characterStyle",
|
|
24
|
+
markSpec: {
|
|
25
|
+
attrs: {
|
|
26
|
+
styleId: { default: "" },
|
|
27
|
+
_styleRPr: { default: null }
|
|
28
|
+
},
|
|
29
|
+
parseDOM: [{
|
|
30
|
+
tag: "span[data-character-style]",
|
|
31
|
+
getAttrs: (dom) => {
|
|
32
|
+
const styleId = dom.getAttribute("data-character-style");
|
|
33
|
+
return styleId ? { styleId } : false;
|
|
34
|
+
}
|
|
35
|
+
}],
|
|
36
|
+
toDOM(mark) {
|
|
37
|
+
const { styleId } = expectCharacterStyleMarkAttrs(mark);
|
|
38
|
+
return [
|
|
39
|
+
"span",
|
|
40
|
+
{ "data-character-style": styleId },
|
|
41
|
+
0
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//#endregion
|
|
47
|
+
export { CharacterStyleExtension };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/CommentExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Comment Mark Extension — highlights text that has comments
|
|
6
|
+
*
|
|
7
|
+
* Applied to text ranges between commentRangeStart and commentRangeEnd.
|
|
8
|
+
* The comment ID links to the Comment object in the document model.
|
|
9
|
+
*/
|
|
10
|
+
declare const CommentExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { CommentExtension };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { expectCommentMarkAttrs } from "../../attrs/index.js";
|
|
2
|
+
import { createMarkExtension } from "../create.js";
|
|
3
|
+
//#region src/prosemirror/extensions/marks/CommentExtension.ts
|
|
4
|
+
/**
|
|
5
|
+
* Comment Mark Extension — highlights text that has comments
|
|
6
|
+
*
|
|
7
|
+
* Applied to text ranges between commentRangeStart and commentRangeEnd.
|
|
8
|
+
* The comment ID links to the Comment object in the document model.
|
|
9
|
+
*/
|
|
10
|
+
const CommentExtension = createMarkExtension({
|
|
11
|
+
name: "comment",
|
|
12
|
+
schemaMarkName: "comment",
|
|
13
|
+
markSpec: {
|
|
14
|
+
attrs: {
|
|
15
|
+
/** Comment ID (matches Comment.id) */
|
|
16
|
+
commentId: { default: 0 } },
|
|
17
|
+
inclusive: false,
|
|
18
|
+
parseDOM: [{
|
|
19
|
+
tag: "span.docx-comment",
|
|
20
|
+
getAttrs(dom) {
|
|
21
|
+
return { commentId: Number.parseInt(dom.dataset["commentId"] ?? "0", 10) };
|
|
22
|
+
}
|
|
23
|
+
}],
|
|
24
|
+
toDOM(mark) {
|
|
25
|
+
const { commentId } = expectCommentMarkAttrs(mark);
|
|
26
|
+
return [
|
|
27
|
+
"span",
|
|
28
|
+
{
|
|
29
|
+
class: "docx-comment",
|
|
30
|
+
"data-comment-id": String(commentId)
|
|
31
|
+
},
|
|
32
|
+
0
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { CommentExtension };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/FontFamilyExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Font Family Mark Extension
|
|
6
|
+
*/
|
|
7
|
+
declare const FontFamilyExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { FontFamilyExtension };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { expectFontFamilyMarkAttrs } from "../../attrs/index.js";
|
|
2
|
+
import { createMarkExtension } from "../create.js";
|
|
3
|
+
import { removeMark, setMark } from "./markUtils.js";
|
|
4
|
+
import { panic } from "better-result";
|
|
5
|
+
//#region src/prosemirror/extensions/marks/FontFamilyExtension.ts
|
|
6
|
+
/**
|
|
7
|
+
* Font Family Mark Extension
|
|
8
|
+
*/
|
|
9
|
+
const FontFamilyExtension = createMarkExtension({
|
|
10
|
+
name: "fontFamily",
|
|
11
|
+
schemaMarkName: "fontFamily",
|
|
12
|
+
markSpec: {
|
|
13
|
+
attrs: {
|
|
14
|
+
ascii: { default: null },
|
|
15
|
+
hAnsi: { default: null },
|
|
16
|
+
eastAsia: { default: null },
|
|
17
|
+
cs: { default: null },
|
|
18
|
+
asciiTheme: { default: null },
|
|
19
|
+
hAnsiTheme: { default: null },
|
|
20
|
+
eastAsiaTheme: { default: null },
|
|
21
|
+
csTheme: { default: null }
|
|
22
|
+
},
|
|
23
|
+
parseDOM: [{
|
|
24
|
+
style: "font-family",
|
|
25
|
+
getAttrs: (value) => {
|
|
26
|
+
const firstFont = (value.split(",")[0] ?? "").trim().replace(/['"]/gu, "");
|
|
27
|
+
if (firstFont) return { ascii: firstFont };
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}],
|
|
31
|
+
toDOM(mark) {
|
|
32
|
+
const { ascii, hAnsi } = expectFontFamilyMarkAttrs(mark);
|
|
33
|
+
const fontName = ascii ?? hAnsi;
|
|
34
|
+
if (!fontName) return ["span", 0];
|
|
35
|
+
return [
|
|
36
|
+
"span",
|
|
37
|
+
{ style: `font-family: ${fontName.includes(" ") ? `"${fontName}"` : fontName}, "Noto Sans Arabic", sans-serif` },
|
|
38
|
+
0
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
onSchemaReady(ctx) {
|
|
43
|
+
const fontFamilyType = ctx.schema.marks["fontFamily"];
|
|
44
|
+
if (!fontFamilyType) panic("Missing mark type: fontFamily");
|
|
45
|
+
return { commands: {
|
|
46
|
+
setFontFamily: (fontName) => setMark(fontFamilyType, {
|
|
47
|
+
ascii: fontName,
|
|
48
|
+
hAnsi: fontName
|
|
49
|
+
}),
|
|
50
|
+
clearFontFamily: () => removeMark(fontFamilyType)
|
|
51
|
+
} };
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//#endregion
|
|
55
|
+
export { FontFamilyExtension };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/FontSizeExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Font Size Mark Extension
|
|
6
|
+
*/
|
|
7
|
+
declare const FontSizeExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { FontSizeExtension };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { expectFontSizeMarkAttrs } from "../../attrs/index.js";
|
|
2
|
+
import { createMarkExtension } from "../create.js";
|
|
3
|
+
import { removeMark, setMark } from "./markUtils.js";
|
|
4
|
+
import { panic } from "better-result";
|
|
5
|
+
//#region src/prosemirror/extensions/marks/FontSizeExtension.ts
|
|
6
|
+
/**
|
|
7
|
+
* Font Size Mark Extension
|
|
8
|
+
*/
|
|
9
|
+
const FontSizeExtension = createMarkExtension({
|
|
10
|
+
name: "fontSize",
|
|
11
|
+
schemaMarkName: "fontSize",
|
|
12
|
+
markSpec: {
|
|
13
|
+
attrs: { size: { default: 24 } },
|
|
14
|
+
parseDOM: [{
|
|
15
|
+
style: "font-size",
|
|
16
|
+
getAttrs: (value) => {
|
|
17
|
+
const pxMatch = /^(?<value>[\d.]+)px$/u.exec(value);
|
|
18
|
+
if (pxMatch) {
|
|
19
|
+
const pt = Number.parseFloat(pxMatch.groups?.["value"] ?? "0") * .75;
|
|
20
|
+
return { size: Math.round(pt * 2) };
|
|
21
|
+
}
|
|
22
|
+
const ptMatch = /^(?<value>[\d.]+)pt$/u.exec(value);
|
|
23
|
+
if (ptMatch) return { size: Math.round(Number.parseFloat(ptMatch.groups?.["value"] ?? "0") * 2) };
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}],
|
|
27
|
+
toDOM(mark) {
|
|
28
|
+
const { size } = expectFontSizeMarkAttrs(mark);
|
|
29
|
+
const pt = size / 2;
|
|
30
|
+
return [
|
|
31
|
+
"span",
|
|
32
|
+
{ style: `font-size: ${pt}pt; line-height: ${(pt * 1.15).toFixed(2)}pt` },
|
|
33
|
+
0
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
onSchemaReady(ctx) {
|
|
38
|
+
const fontSizeType = ctx.schema.marks["fontSize"];
|
|
39
|
+
if (!fontSizeType) panic("Missing mark type: fontSize");
|
|
40
|
+
return { commands: {
|
|
41
|
+
setFontSize: (size) => setMark(fontSizeType, { size }),
|
|
42
|
+
clearFontSize: () => removeMark(fontSizeType)
|
|
43
|
+
} };
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//#endregion
|
|
47
|
+
export { FontSizeExtension };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MarkExtension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/marks/FootnoteRefExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Footnote Reference Mark Extension
|
|
6
|
+
*
|
|
7
|
+
* Provides footnoteRef mark + insert/delete commands for footnotes and endnotes.
|
|
8
|
+
*/
|
|
9
|
+
declare const FootnoteRefExtension: (options?: Partial<Record<string, unknown>> | undefined) => MarkExtension;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { FootnoteRefExtension };
|