@stll/folio-core 0.0.1-placeholder.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +66 -0
- package/dist/types/block-id.js +73 -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,129 @@
|
|
|
1
|
+
import { Priority } from "./types.js";
|
|
2
|
+
//#region src/prosemirror/extensions/create.ts
|
|
3
|
+
/**
|
|
4
|
+
* Extension Factory Functions
|
|
5
|
+
*
|
|
6
|
+
* Creates extension instances from definitions.
|
|
7
|
+
* Each factory returns a function that accepts options and returns an extension instance.
|
|
8
|
+
*/
|
|
9
|
+
const copyOptions = (options) => ({ ...options });
|
|
10
|
+
const mergeDefaultOptions = (defaultOptions, options) => ({
|
|
11
|
+
...defaultOptions,
|
|
12
|
+
...options
|
|
13
|
+
});
|
|
14
|
+
const extensionHasDefaultOptions = (def) => def.defaultOptions !== void 0;
|
|
15
|
+
const nodeExtensionHasDefaultOptions = (def) => def.defaultOptions !== void 0;
|
|
16
|
+
const markExtensionHasDefaultOptions = (def) => def.defaultOptions !== void 0;
|
|
17
|
+
/**
|
|
18
|
+
* Create a generic extension (plugins, commands, keymaps — no schema contribution)
|
|
19
|
+
*/
|
|
20
|
+
function createExtension(def) {
|
|
21
|
+
return (options) => {
|
|
22
|
+
if (extensionHasDefaultOptions(def)) {
|
|
23
|
+
const mergedOptions = mergeDefaultOptions(def.defaultOptions, options);
|
|
24
|
+
return {
|
|
25
|
+
type: "extension",
|
|
26
|
+
config: {
|
|
27
|
+
name: def.name,
|
|
28
|
+
priority: def.priority ?? Priority.Default,
|
|
29
|
+
options: copyOptions(mergedOptions)
|
|
30
|
+
},
|
|
31
|
+
onSchemaReady(ctx) {
|
|
32
|
+
return def.onSchemaReady(ctx, mergedOptions);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const mergedOptions = options ?? {};
|
|
37
|
+
return {
|
|
38
|
+
type: "extension",
|
|
39
|
+
config: {
|
|
40
|
+
name: def.name,
|
|
41
|
+
priority: def.priority ?? Priority.Default,
|
|
42
|
+
options: copyOptions(mergedOptions)
|
|
43
|
+
},
|
|
44
|
+
onSchemaReady(ctx) {
|
|
45
|
+
return def.onSchemaReady(ctx, mergedOptions);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a node extension (contributes a NodeSpec to the schema)
|
|
52
|
+
*/
|
|
53
|
+
function createNodeExtension(def) {
|
|
54
|
+
return (options) => {
|
|
55
|
+
if (nodeExtensionHasDefaultOptions(def)) {
|
|
56
|
+
const mergedOptions = mergeDefaultOptions(def.defaultOptions, options);
|
|
57
|
+
const nodeSpec = typeof def.nodeSpec === "function" ? def.nodeSpec(mergedOptions) : def.nodeSpec;
|
|
58
|
+
return {
|
|
59
|
+
type: "node",
|
|
60
|
+
config: {
|
|
61
|
+
name: def.name,
|
|
62
|
+
priority: def.priority ?? Priority.Default,
|
|
63
|
+
options: copyOptions(mergedOptions),
|
|
64
|
+
schemaNodeName: def.schemaNodeName,
|
|
65
|
+
nodeSpec
|
|
66
|
+
},
|
|
67
|
+
onSchemaReady(ctx) {
|
|
68
|
+
return def.onSchemaReady?.(ctx, mergedOptions) ?? {};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const mergedOptions = options ?? {};
|
|
73
|
+
const nodeSpec = typeof def.nodeSpec === "function" ? def.nodeSpec(mergedOptions) : def.nodeSpec;
|
|
74
|
+
return {
|
|
75
|
+
type: "node",
|
|
76
|
+
config: {
|
|
77
|
+
name: def.name,
|
|
78
|
+
priority: def.priority ?? Priority.Default,
|
|
79
|
+
options: copyOptions(mergedOptions),
|
|
80
|
+
schemaNodeName: def.schemaNodeName,
|
|
81
|
+
nodeSpec
|
|
82
|
+
},
|
|
83
|
+
onSchemaReady(ctx) {
|
|
84
|
+
return def.onSchemaReady?.(ctx, mergedOptions) ?? {};
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a mark extension (contributes a MarkSpec to the schema)
|
|
91
|
+
*/
|
|
92
|
+
function createMarkExtension(def) {
|
|
93
|
+
return (options) => {
|
|
94
|
+
if (markExtensionHasDefaultOptions(def)) {
|
|
95
|
+
const mergedOptions = mergeDefaultOptions(def.defaultOptions, options);
|
|
96
|
+
const markSpec = typeof def.markSpec === "function" ? def.markSpec(mergedOptions) : def.markSpec;
|
|
97
|
+
return {
|
|
98
|
+
type: "mark",
|
|
99
|
+
config: {
|
|
100
|
+
name: def.name,
|
|
101
|
+
priority: def.priority ?? Priority.Default,
|
|
102
|
+
options: copyOptions(mergedOptions),
|
|
103
|
+
schemaMarkName: def.schemaMarkName,
|
|
104
|
+
markSpec
|
|
105
|
+
},
|
|
106
|
+
onSchemaReady(ctx) {
|
|
107
|
+
return def.onSchemaReady?.(ctx, mergedOptions) ?? {};
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const mergedOptions = options ?? {};
|
|
112
|
+
const markSpec = typeof def.markSpec === "function" ? def.markSpec(mergedOptions) : def.markSpec;
|
|
113
|
+
return {
|
|
114
|
+
type: "mark",
|
|
115
|
+
config: {
|
|
116
|
+
name: def.name,
|
|
117
|
+
priority: def.priority ?? Priority.Default,
|
|
118
|
+
options: copyOptions(mergedOptions),
|
|
119
|
+
schemaMarkName: def.schemaMarkName,
|
|
120
|
+
markSpec
|
|
121
|
+
},
|
|
122
|
+
onSchemaReady(ctx) {
|
|
123
|
+
return def.onSchemaReady?.(ctx, mergedOptions) ?? {};
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { createExtension, createMarkExtension, createNodeExtension };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
import { EditorState, PluginKey } from "prosemirror-state";
|
|
3
|
+
|
|
4
|
+
//#region src/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts
|
|
5
|
+
declare const autoBidiDetectionKey: PluginKey<any>;
|
|
6
|
+
/**
|
|
7
|
+
* Imperatively apply auto-bidi detection to a freshly built state (initial
|
|
8
|
+
* load: Markdown import, DOCX import, template). `appendTransaction` does not
|
|
9
|
+
* fire for the initial document, so seeded content needs this pass.
|
|
10
|
+
*
|
|
11
|
+
* Like the paraId allocator this is `ignoreTrackedChanges`, so a normalized
|
|
12
|
+
* paragraph the user never edits is not in `changedParaIds`. Full save (the
|
|
13
|
+
* default; and the only path for Markdown/template/new docs, which have no
|
|
14
|
+
* original buffer) serializes the whole PM doc, so the flag is written. The
|
|
15
|
+
* selective-save path (dark `selectiveSave` flag) intentionally preserves
|
|
16
|
+
* untouched original paragraphs byte-for-byte, so an imported DOCX whose Arabic
|
|
17
|
+
* arrived without `w:bidi` and is saved without any edit keeps the original
|
|
18
|
+
* bytes; editing the paragraph tracks it and the patch then includes `w:bidi`.
|
|
19
|
+
*/
|
|
20
|
+
declare const ensureBaseDirectionInState: (state: EditorState) => EditorState;
|
|
21
|
+
declare const AutoBidiDetectionExtension: (options?: Partial<{}> | undefined) => Extension;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { AutoBidiDetectionExtension, autoBidiDetectionKey, ensureBaseDirectionInState };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { detectBaseDirection } from "../../../utils/baseDirection.js";
|
|
2
|
+
import { directionIsAutoManaged } from "../../paragraphDirection.js";
|
|
3
|
+
import { createExtension } from "../create.js";
|
|
4
|
+
import { getTransactionDirtyRange } from "../../../paged-layout/transactionDirtyRange.js";
|
|
5
|
+
import { ignoreTrackedChanges } from "./ParagraphChangeTrackerExtension.js";
|
|
6
|
+
import { Plugin, PluginKey } from "prosemirror-state";
|
|
7
|
+
//#region src/prosemirror/extensions/features/AutoBidiDetectionExtension.ts
|
|
8
|
+
const autoBidiDetectionKey = new PluginKey("autoBidiDetection");
|
|
9
|
+
const paragraphDirectionalText = (node) => {
|
|
10
|
+
let text = "";
|
|
11
|
+
node.descendants((child) => {
|
|
12
|
+
if (child.isText) {
|
|
13
|
+
if (!child.marks.some((mark) => mark.type.name === "deletion")) text += child.text ?? "";
|
|
14
|
+
} else if (child.type.name === "field") {
|
|
15
|
+
const display = child.attrs["displayText"];
|
|
16
|
+
if (typeof display === "string") text += display;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
return text;
|
|
20
|
+
};
|
|
21
|
+
const evaluateParagraph = (node, pos) => {
|
|
22
|
+
const current = node.attrs["direction"];
|
|
23
|
+
if (!directionIsAutoManaged(current)) return null;
|
|
24
|
+
const wantRtl = detectBaseDirection(paragraphDirectionalText(node)) === "rtl";
|
|
25
|
+
if (current?.source === "auto" === wantRtl) return null;
|
|
26
|
+
const desired = wantRtl ? { source: "auto" } : null;
|
|
27
|
+
return {
|
|
28
|
+
pos,
|
|
29
|
+
attrs: {
|
|
30
|
+
...node.attrs,
|
|
31
|
+
direction: desired
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const collectBidiUpdates = (doc) => {
|
|
36
|
+
const updates = [];
|
|
37
|
+
doc.descendants((node, pos) => {
|
|
38
|
+
if (node.type.name !== "paragraph") return;
|
|
39
|
+
const update = evaluateParagraph(node, pos);
|
|
40
|
+
if (update) updates.push(update);
|
|
41
|
+
return false;
|
|
42
|
+
});
|
|
43
|
+
return updates;
|
|
44
|
+
};
|
|
45
|
+
const collectBidiUpdatesInRange = (doc, range) => {
|
|
46
|
+
const from = Math.max(0, Math.min(range.from, doc.content.size));
|
|
47
|
+
const to = Math.max(from, Math.min(range.to, doc.content.size));
|
|
48
|
+
const seen = /* @__PURE__ */ new Set();
|
|
49
|
+
const updates = [];
|
|
50
|
+
doc.nodesBetween(from, to, (node, pos) => {
|
|
51
|
+
if (node.type.name === "paragraph" && !seen.has(pos)) {
|
|
52
|
+
seen.add(pos);
|
|
53
|
+
const update = evaluateParagraph(node, pos);
|
|
54
|
+
if (update) updates.push(update);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return updates;
|
|
58
|
+
};
|
|
59
|
+
const applyBidiUpdates = (state, updates) => {
|
|
60
|
+
const tr = state.tr;
|
|
61
|
+
for (const update of updates) tr.setNodeMarkup(update.pos, void 0, update.attrs);
|
|
62
|
+
ignoreTrackedChanges(tr);
|
|
63
|
+
tr.setMeta(autoBidiDetectionKey, "applied");
|
|
64
|
+
tr.setMeta("addToHistory", false);
|
|
65
|
+
return tr;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Imperatively apply auto-bidi detection to a freshly built state (initial
|
|
69
|
+
* load: Markdown import, DOCX import, template). `appendTransaction` does not
|
|
70
|
+
* fire for the initial document, so seeded content needs this pass.
|
|
71
|
+
*
|
|
72
|
+
* Like the paraId allocator this is `ignoreTrackedChanges`, so a normalized
|
|
73
|
+
* paragraph the user never edits is not in `changedParaIds`. Full save (the
|
|
74
|
+
* default; and the only path for Markdown/template/new docs, which have no
|
|
75
|
+
* original buffer) serializes the whole PM doc, so the flag is written. The
|
|
76
|
+
* selective-save path (dark `selectiveSave` flag) intentionally preserves
|
|
77
|
+
* untouched original paragraphs byte-for-byte, so an imported DOCX whose Arabic
|
|
78
|
+
* arrived without `w:bidi` and is saved without any edit keeps the original
|
|
79
|
+
* bytes; editing the paragraph tracks it and the patch then includes `w:bidi`.
|
|
80
|
+
*/
|
|
81
|
+
const ensureBaseDirectionInState = (state) => {
|
|
82
|
+
if (!autoBidiDetectionKey.get(state)) return state;
|
|
83
|
+
const updates = collectBidiUpdates(state.doc);
|
|
84
|
+
if (updates.length === 0) return state;
|
|
85
|
+
return state.apply(applyBidiUpdates(state, updates));
|
|
86
|
+
};
|
|
87
|
+
const createAutoBidiDetectionPlugin = () => new Plugin({
|
|
88
|
+
key: autoBidiDetectionKey,
|
|
89
|
+
appendTransaction(transactions, _oldState, newState) {
|
|
90
|
+
if (!transactions.some((t) => t.docChanged)) return null;
|
|
91
|
+
const [first, ...rest] = transactions;
|
|
92
|
+
const range = first && rest.length === 0 ? getTransactionDirtyRange(first) : null;
|
|
93
|
+
const updates = range ? collectBidiUpdatesInRange(newState.doc, range) : collectBidiUpdates(newState.doc);
|
|
94
|
+
if (updates.length === 0) return null;
|
|
95
|
+
return applyBidiUpdates(newState, updates);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
const AutoBidiDetectionExtension = createExtension({
|
|
99
|
+
name: "autoBidiDetection",
|
|
100
|
+
defaultOptions: {},
|
|
101
|
+
onSchemaReady() {
|
|
102
|
+
return { plugins: [createAutoBidiDetectionPlugin()] };
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
//#endregion
|
|
106
|
+
export { AutoBidiDetectionExtension, autoBidiDetectionKey, ensureBaseDirectionInState };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
import { Command } from "prosemirror-state";
|
|
3
|
+
|
|
4
|
+
//#region src/prosemirror/extensions/features/BaseKeymapExtension.d.ts
|
|
5
|
+
declare const splitBlockClearBorders: Command;
|
|
6
|
+
declare const BaseKeymapExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { BaseKeymapExtension, splitBlockClearBorders };
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { mergeFontFamily } from "../../../utils/fontFamilyMerge.js";
|
|
2
|
+
import { Priority } from "../types.js";
|
|
3
|
+
import { createExtension } from "../create.js";
|
|
4
|
+
import { paragraphAttrsFromResolvedStyle } from "../../styles/resolvedStyleAttrs.js";
|
|
5
|
+
import { getDocumentStyleResolver } from "../../plugins/documentStyles.js";
|
|
6
|
+
import { textFormattingToMarks } from "../marks/markUtils.js";
|
|
7
|
+
import { baseKeymap, deleteSelection, joinBackward, joinForward, selectAll, selectParentNode, splitBlock } from "prosemirror-commands";
|
|
8
|
+
//#region src/prosemirror/extensions/features/BaseKeymapExtension.ts
|
|
9
|
+
/**
|
|
10
|
+
* Base Keymap Extension — wraps prosemirror-commands baseKeymap
|
|
11
|
+
*
|
|
12
|
+
* Priority: Low (150) — must be the last keymap so other extensions can override keys
|
|
13
|
+
*/
|
|
14
|
+
function chainCommands(...commands) {
|
|
15
|
+
return (state, dispatch, view) => {
|
|
16
|
+
for (const cmd of commands) if (cmd(state, dispatch, view)) return true;
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Backspace at the start of a paragraph clears first-line indent / hanging indent
|
|
22
|
+
* before joining with the previous paragraph (matches Word behavior).
|
|
23
|
+
*/
|
|
24
|
+
const clearIndentOnBackspace = (state, dispatch) => {
|
|
25
|
+
const { $cursor } = state.selection;
|
|
26
|
+
if (!$cursor) return false;
|
|
27
|
+
if ($cursor.parentOffset !== 0) return false;
|
|
28
|
+
if ($cursor.parent.type.name !== "paragraph") return false;
|
|
29
|
+
const attrs = $cursor.parent.attrs;
|
|
30
|
+
const hasFirstLine = attrs["indentFirstLine"] !== null && attrs["indentFirstLine"] > 0;
|
|
31
|
+
const hasHanging = !!attrs["hangingIndent"];
|
|
32
|
+
const hasIndentLeft = attrs["indentLeft"] !== null && attrs["indentLeft"] > 0;
|
|
33
|
+
if (!hasFirstLine && !hasHanging && !hasIndentLeft) return false;
|
|
34
|
+
if (dispatch) {
|
|
35
|
+
const pos = $cursor.before();
|
|
36
|
+
dispatch(state.tr.setNodeMarkup(pos, void 0, {
|
|
37
|
+
...attrs,
|
|
38
|
+
indentFirstLine: null,
|
|
39
|
+
hangingIndent: null,
|
|
40
|
+
indentLeft: null
|
|
41
|
+
}).scrollIntoView());
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Custom Enter handler: splits the block, inherits style-related attrs,
|
|
47
|
+
* clears paragraph borders, and preserves font marks on the new paragraph.
|
|
48
|
+
*
|
|
49
|
+
* splitBlock creates a new paragraph with default attrs (all null),
|
|
50
|
+
* so we must manually copy style-related attrs from the source paragraph.
|
|
51
|
+
* Word does NOT propagate paragraph borders (w:pBdr) on Enter.
|
|
52
|
+
*/
|
|
53
|
+
const INHERITED_PARA_ATTRS = [
|
|
54
|
+
"defaultTextFormatting",
|
|
55
|
+
"styleId",
|
|
56
|
+
"lineSpacing",
|
|
57
|
+
"lineSpacingRule",
|
|
58
|
+
"spaceAfter",
|
|
59
|
+
"spaceBefore",
|
|
60
|
+
"contextualSpacing"
|
|
61
|
+
];
|
|
62
|
+
/** Mark types that represent style-inherited formatting (font, size, color). */
|
|
63
|
+
const STYLE_MARK_NAMES = /* @__PURE__ */ new Set([
|
|
64
|
+
"fontFamily",
|
|
65
|
+
"fontSize",
|
|
66
|
+
"textColor"
|
|
67
|
+
]);
|
|
68
|
+
/**
|
|
69
|
+
* If `sourcePara`'s style defines a `w:next`, replace the empty `newPara`
|
|
70
|
+
* with that style's resolved attrs and seed stored marks from its run
|
|
71
|
+
* formatting. Returns true when a switch happened (caller should dispatch
|
|
72
|
+
* the transaction as-is), false when the source style has no `w:next` and
|
|
73
|
+
* the caller should fall back to the regular inheritance path.
|
|
74
|
+
*/
|
|
75
|
+
function applyNextParagraphStyle(tr, sourcePara, newPara, resolver) {
|
|
76
|
+
const nextStyleId = resolver.getNextStyleId(sourcePara.attrs["styleId"]);
|
|
77
|
+
if (!nextStyleId) return false;
|
|
78
|
+
const resolved = resolver.resolveParagraphStyle(nextStyleId);
|
|
79
|
+
const { $from } = tr.selection;
|
|
80
|
+
tr.setNodeMarkup($from.before(), void 0, {
|
|
81
|
+
...newPara.attrs,
|
|
82
|
+
styleId: nextStyleId,
|
|
83
|
+
...paragraphAttrsFromResolvedStyle(resolved)
|
|
84
|
+
});
|
|
85
|
+
tr.setStoredMarks(resolved.runFormatting ? textFormattingToMarks(resolved.runFormatting, tr.doc.type.schema) : []);
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
const splitBlockClearBorders = (state, dispatch, view) => {
|
|
89
|
+
const { $from: preSplitFrom } = state.selection;
|
|
90
|
+
const sourcePara = preSplitFrom.parent.type.name === "paragraph" ? preSplitFrom.parent : null;
|
|
91
|
+
const styleMarks = (state.storedMarks || preSplitFrom.marks()).filter((m) => STYLE_MARK_NAMES.has(m.type.name));
|
|
92
|
+
const splitResult = { tr: null };
|
|
93
|
+
if (!splitBlock(state, dispatch ? (tr) => {
|
|
94
|
+
splitResult.tr = tr;
|
|
95
|
+
} : void 0, view)) return false;
|
|
96
|
+
if (dispatch && splitResult.tr !== null) {
|
|
97
|
+
const tr = splitResult.tr;
|
|
98
|
+
const { $from } = tr.selection;
|
|
99
|
+
const newPara = $from.parent;
|
|
100
|
+
if (newPara.type.name === "paragraph") {
|
|
101
|
+
const resolver = getDocumentStyleResolver(state);
|
|
102
|
+
if (resolver !== null && sourcePara !== null && newPara.content.size === 0 && applyNextParagraphStyle(tr, sourcePara, newPara, resolver)) {
|
|
103
|
+
dispatch(tr.scrollIntoView());
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
const newAttrs = { ...newPara.attrs };
|
|
107
|
+
let attrsChanged = false;
|
|
108
|
+
if (sourcePara) for (const key of INHERITED_PARA_ATTRS) {
|
|
109
|
+
const srcVal = sourcePara.attrs[key];
|
|
110
|
+
if (srcVal !== null && newAttrs[key] === null) {
|
|
111
|
+
newAttrs[key] = srcVal;
|
|
112
|
+
attrsChanged = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (newAttrs["borders"]) {
|
|
116
|
+
newAttrs["borders"] = null;
|
|
117
|
+
attrsChanged = true;
|
|
118
|
+
}
|
|
119
|
+
if (attrsChanged) tr.setNodeMarkup($from.before(), void 0, newAttrs);
|
|
120
|
+
if (newPara.textContent.length === 0) {
|
|
121
|
+
let effectiveMarks = styleMarks;
|
|
122
|
+
if (effectiveMarks.length === 0 && sourcePara) {
|
|
123
|
+
const dtf = sourcePara.attrs["defaultTextFormatting"];
|
|
124
|
+
if (dtf) effectiveMarks = textFormattingToMarks(dtf, state.schema).filter((m) => STYLE_MARK_NAMES.has(m.type.name));
|
|
125
|
+
}
|
|
126
|
+
if (effectiveMarks.length > 0) {
|
|
127
|
+
const dtf = { ...newAttrs["defaultTextFormatting"] };
|
|
128
|
+
let dtfChanged = false;
|
|
129
|
+
for (const m of effectiveMarks) {
|
|
130
|
+
if (m.type.name === "fontSize" && m.attrs["size"] !== dtf.fontSize) {
|
|
131
|
+
dtf.fontSize = m.attrs["size"];
|
|
132
|
+
dtfChanged = true;
|
|
133
|
+
}
|
|
134
|
+
if (m.type.name === "fontFamily") {
|
|
135
|
+
const ascii = m.attrs["ascii"];
|
|
136
|
+
if (ascii && (!dtf.fontFamily || dtf.fontFamily.ascii !== ascii)) {
|
|
137
|
+
const nextFontFamily = { ascii };
|
|
138
|
+
const hAnsi = m.attrs["hAnsi"];
|
|
139
|
+
if (hAnsi !== void 0) nextFontFamily.hAnsi = hAnsi;
|
|
140
|
+
dtf.fontFamily = mergeFontFamily(dtf.fontFamily, nextFontFamily);
|
|
141
|
+
dtfChanged = true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (dtfChanged) tr.setNodeMarkup($from.before(), void 0, {
|
|
146
|
+
...newAttrs,
|
|
147
|
+
defaultTextFormatting: dtf
|
|
148
|
+
});
|
|
149
|
+
tr.setStoredMarks(effectiveMarks);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
dispatch(tr.scrollIntoView());
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
};
|
|
157
|
+
const BaseKeymapExtension = createExtension({
|
|
158
|
+
name: "baseKeymap",
|
|
159
|
+
priority: Priority.Low,
|
|
160
|
+
onSchemaReady(_ctx) {
|
|
161
|
+
return { keyboardShortcuts: {
|
|
162
|
+
...baseKeymap,
|
|
163
|
+
Enter: splitBlockClearBorders,
|
|
164
|
+
Backspace: chainCommands(deleteSelection, clearIndentOnBackspace, joinBackward),
|
|
165
|
+
Delete: chainCommands(deleteSelection, joinForward),
|
|
166
|
+
"Mod-a": selectAll,
|
|
167
|
+
Escape: selectParentNode
|
|
168
|
+
} };
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
//#endregion
|
|
172
|
+
export { BaseKeymapExtension, splitBlockClearBorders };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/features/BidiShortcutExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Bidi Shortcut Extension — Ctrl/Cmd+Left Shift → LTR, Ctrl/Cmd+Right Shift → RTL
|
|
6
|
+
*
|
|
7
|
+
* Uses KeyboardEvent.code to distinguish ShiftLeft vs ShiftRight, matching the
|
|
8
|
+
* standard Google Docs shortcut behavior. The keydown/keyup state machine lives
|
|
9
|
+
* in {@link createBidiShortcutController}; this module only wires it to the
|
|
10
|
+
* editor view and dispatches the schema command on keyup.
|
|
11
|
+
*
|
|
12
|
+
* Priority: High (50) — should intercept before other keymaps
|
|
13
|
+
*/
|
|
14
|
+
declare const BidiShortcutExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { BidiShortcutExtension };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Priority } from "../types.js";
|
|
2
|
+
import { createExtension } from "../create.js";
|
|
3
|
+
import { createBidiShortcutController } from "./bidiShortcutController.js";
|
|
4
|
+
import { singletonManager } from "../../schema/index.js";
|
|
5
|
+
import { Plugin } from "prosemirror-state";
|
|
6
|
+
//#region src/prosemirror/extensions/features/BidiShortcutExtension.ts
|
|
7
|
+
/**
|
|
8
|
+
* Bidi Shortcut Extension — Ctrl/Cmd+Left Shift → LTR, Ctrl/Cmd+Right Shift → RTL
|
|
9
|
+
*
|
|
10
|
+
* Uses KeyboardEvent.code to distinguish ShiftLeft vs ShiftRight, matching the
|
|
11
|
+
* standard Google Docs shortcut behavior. The keydown/keyup state machine lives
|
|
12
|
+
* in {@link createBidiShortcutController}; this module only wires it to the
|
|
13
|
+
* editor view and dispatches the schema command on keyup.
|
|
14
|
+
*
|
|
15
|
+
* Priority: High (50) — should intercept before other keymaps
|
|
16
|
+
*/
|
|
17
|
+
const BidiShortcutExtension = createExtension({
|
|
18
|
+
name: "bidiShortcut",
|
|
19
|
+
priority: Priority.High,
|
|
20
|
+
onSchemaReady(_ctx) {
|
|
21
|
+
const controller = createBidiShortcutController();
|
|
22
|
+
return { plugins: [new Plugin({ props: {
|
|
23
|
+
handleKeyDown(_view, event) {
|
|
24
|
+
controller.handleKeyDown(event);
|
|
25
|
+
return false;
|
|
26
|
+
},
|
|
27
|
+
handleDOMEvents: { keyup(view, event) {
|
|
28
|
+
const direction = controller.handleKeyUp(event);
|
|
29
|
+
if (!direction) return false;
|
|
30
|
+
const cmds = singletonManager.getCommands();
|
|
31
|
+
(direction === "ltr" ? cmds["setLtr"] : cmds["setRtl"])?.()(view.state, view.dispatch);
|
|
32
|
+
return false;
|
|
33
|
+
} }
|
|
34
|
+
} })] };
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { BidiShortcutExtension };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Content-Control Widgets Extension — wires the interactive widget plugin
|
|
6
|
+
* into the editor so clicking inside a typed content control invokes the
|
|
7
|
+
* appropriate transaction.
|
|
8
|
+
*
|
|
9
|
+
* The plugin owns checkbox toggling outright; dropdown / date picker chrome
|
|
10
|
+
* is delegated to the editor shell via the `onWidgetEvent` callback (the
|
|
11
|
+
* shell renders the menu / picker and dispatches via `dispatchDropdownPick`
|
|
12
|
+
* / `dispatchDatePick`).
|
|
13
|
+
*/
|
|
14
|
+
declare const ContentControlWidgetsExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ContentControlWidgetsExtension };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createExtension } from "../create.js";
|
|
2
|
+
import { createContentControlWidgetsPlugin } from "../../plugins/contentControlWidgets.js";
|
|
3
|
+
//#region src/prosemirror/extensions/features/ContentControlWidgetsExtension.ts
|
|
4
|
+
/**
|
|
5
|
+
* Content-Control Widgets Extension — wires the interactive widget plugin
|
|
6
|
+
* into the editor so clicking inside a typed content control invokes the
|
|
7
|
+
* appropriate transaction.
|
|
8
|
+
*
|
|
9
|
+
* The plugin owns checkbox toggling outright; dropdown / date picker chrome
|
|
10
|
+
* is delegated to the editor shell via the `onWidgetEvent` callback (the
|
|
11
|
+
* shell renders the menu / picker and dispatches via `dispatchDropdownPick`
|
|
12
|
+
* / `dispatchDatePick`).
|
|
13
|
+
*/
|
|
14
|
+
const ContentControlWidgetsExtension = createExtension({
|
|
15
|
+
name: "contentControlWidgets",
|
|
16
|
+
onSchemaReady(_ctx) {
|
|
17
|
+
return { plugins: [createContentControlWidgetsPlugin()] };
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
export { ContentControlWidgetsExtension };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/features/DropCursorExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Drop Cursor Extension — shows a visual indicator when dragging content
|
|
6
|
+
*
|
|
7
|
+
* Uses prosemirror-dropcursor to display a cursor line at the drop position
|
|
8
|
+
* when dragging images or other content within the editor.
|
|
9
|
+
*/
|
|
10
|
+
declare const DropCursorExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { DropCursorExtension };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createExtension } from "../create.js";
|
|
2
|
+
import { dropCursor } from "prosemirror-dropcursor";
|
|
3
|
+
//#region src/prosemirror/extensions/features/DropCursorExtension.ts
|
|
4
|
+
/**
|
|
5
|
+
* Drop Cursor Extension — shows a visual indicator when dragging content
|
|
6
|
+
*
|
|
7
|
+
* Uses prosemirror-dropcursor to display a cursor line at the drop position
|
|
8
|
+
* when dragging images or other content within the editor.
|
|
9
|
+
*/
|
|
10
|
+
const DropCursorExtension = createExtension({
|
|
11
|
+
name: "dropCursor",
|
|
12
|
+
onSchemaReady() {
|
|
13
|
+
return { plugins: [dropCursor({
|
|
14
|
+
color: "var(--doc-primary, #4285f4)",
|
|
15
|
+
width: 2
|
|
16
|
+
})] };
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
//#endregion
|
|
20
|
+
export { DropCursorExtension };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
import { PluginKey } from "prosemirror-state";
|
|
3
|
+
|
|
4
|
+
//#region src/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts
|
|
5
|
+
declare const emptyParagraphFormatKey: PluginKey<any>;
|
|
6
|
+
declare const EmptyParagraphFormatExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { EmptyParagraphFormatExtension, emptyParagraphFormatKey };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createExtension } from "../create.js";
|
|
2
|
+
import { textFormattingToMarks } from "../marks/markUtils.js";
|
|
3
|
+
import { Plugin, PluginKey } from "prosemirror-state";
|
|
4
|
+
//#region src/prosemirror/extensions/features/EmptyParagraphFormatExtension.ts
|
|
5
|
+
const emptyParagraphFormatKey = new PluginKey("emptyParagraphFormat");
|
|
6
|
+
/**
|
|
7
|
+
* Run-formatting properties the painter does NOT reproduce from
|
|
8
|
+
* `defaultTextFormatting` on its own (it forwards only font family + size).
|
|
9
|
+
* When an empty paragraph's defaults carry any of these, typed text must
|
|
10
|
+
* acquire real marks or it would render unstyled. Kept in sync with the
|
|
11
|
+
* properties `textFormattingToMarks` can turn into marks — listing one it
|
|
12
|
+
* can't (e.g. allCaps) would gate work that produces nothing.
|
|
13
|
+
*/
|
|
14
|
+
function hasNonFontDefaults(dtf) {
|
|
15
|
+
return !!(dtf.bold || dtf.italic || dtf.underline || dtf.strike || dtf.doubleStrike || dtf.color || dtf.highlight || dtf.vertAlign || dtf.rtl);
|
|
16
|
+
}
|
|
17
|
+
function createEmptyParagraphFormatPlugin(schema) {
|
|
18
|
+
return new Plugin({
|
|
19
|
+
key: emptyParagraphFormatKey,
|
|
20
|
+
appendTransaction(transactions, _oldState, newState) {
|
|
21
|
+
if (!transactions.some((t) => t.selectionSet || t.docChanged)) return null;
|
|
22
|
+
const { selection } = newState;
|
|
23
|
+
if (!selection.empty) return null;
|
|
24
|
+
if (newState.storedMarks !== null) return null;
|
|
25
|
+
const para = selection.$from.parent;
|
|
26
|
+
if (para.type.name !== "paragraph" || para.content.size !== 0) return null;
|
|
27
|
+
const dtf = para.attrs["defaultTextFormatting"];
|
|
28
|
+
if (!dtf || !hasNonFontDefaults(dtf)) return null;
|
|
29
|
+
const marks = textFormattingToMarks(dtf, schema);
|
|
30
|
+
if (marks.length === 0) return null;
|
|
31
|
+
const tr = newState.tr.setStoredMarks(marks);
|
|
32
|
+
tr.setMeta("addToHistory", false);
|
|
33
|
+
return tr;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const EmptyParagraphFormatExtension = createExtension({
|
|
38
|
+
name: "emptyParagraphFormat",
|
|
39
|
+
onSchemaReady(ctx) {
|
|
40
|
+
return { plugins: [createEmptyParagraphFormatPlugin(ctx.schema)] };
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//#endregion
|
|
44
|
+
export { EmptyParagraphFormatExtension, emptyParagraphFormatKey };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Extension } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/prosemirror/extensions/features/GapCursorExtension.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* GapCursor Extension — provides a caret slot before / between / after
|
|
6
|
+
* isolating block nodes (notably `blockSdt`).
|
|
7
|
+
*
|
|
8
|
+
* Without gapcursor, a user cannot place the caret before a doc-starting
|
|
9
|
+
* SDT, between two adjacent SDTs, or after a doc-final SDT — the
|
|
10
|
+
* `isolating` boundary makes regular text selections refuse those
|
|
11
|
+
* positions. The prosemirror-gapcursor plugin paints a thin "gap" caret
|
|
12
|
+
* at those slots so the document stays fully navigable.
|
|
13
|
+
*
|
|
14
|
+
* The plugin also exposes `Backspace` / `Delete` handlers that join the
|
|
15
|
+
* gap into the neighbour when sensible.
|
|
16
|
+
*/
|
|
17
|
+
declare const GapCursorExtension: (options?: Partial<Record<string, unknown>> | undefined) => Extension;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { GapCursorExtension };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createExtension } from "../create.js";
|
|
2
|
+
import { gapCursor } from "prosemirror-gapcursor";
|
|
3
|
+
//#region src/prosemirror/extensions/features/GapCursorExtension.ts
|
|
4
|
+
/**
|
|
5
|
+
* GapCursor Extension — provides a caret slot before / between / after
|
|
6
|
+
* isolating block nodes (notably `blockSdt`).
|
|
7
|
+
*
|
|
8
|
+
* Without gapcursor, a user cannot place the caret before a doc-starting
|
|
9
|
+
* SDT, between two adjacent SDTs, or after a doc-final SDT — the
|
|
10
|
+
* `isolating` boundary makes regular text selections refuse those
|
|
11
|
+
* positions. The prosemirror-gapcursor plugin paints a thin "gap" caret
|
|
12
|
+
* at those slots so the document stays fully navigable.
|
|
13
|
+
*
|
|
14
|
+
* The plugin also exposes `Backspace` / `Delete` handlers that join the
|
|
15
|
+
* gap into the neighbour when sensible.
|
|
16
|
+
*/
|
|
17
|
+
const GapCursorExtension = createExtension({
|
|
18
|
+
name: "gapCursor",
|
|
19
|
+
onSchemaReady(_ctx) {
|
|
20
|
+
return { plugins: [gapCursor()] };
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { GapCursorExtension };
|