roosterjs-content-model-plugins 9.0.1 → 9.2.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/lib/autoFormat/AutoFormatPlugin.d.ts +19 -4
- package/lib/autoFormat/AutoFormatPlugin.js +61 -6
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib/autoFormat/hyphen/transformHyphen.js +35 -0
- package/lib/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib/autoFormat/link/createLink.js +8 -6
- package/lib/autoFormat/link/createLink.js.map +1 -1
- package/lib/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib/autoFormat/link/createLinkAfterSpace.js +17 -34
- package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib/autoFormat/link/unlink.js +4 -5
- package/lib/autoFormat/link/unlink.js.map +1 -1
- package/lib/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib/autoFormat/list/keyboardListTrigger.js +9 -19
- package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib/autoFormat/numbers/transformFraction.d.ts +5 -0
- package/lib/autoFormat/numbers/transformFraction.js +27 -0
- package/lib/autoFormat/numbers/transformFraction.js.map +1 -0
- package/lib/autoFormat/numbers/transformOrdinals.d.ts +5 -0
- package/lib/autoFormat/numbers/transformOrdinals.js +32 -0
- package/lib/autoFormat/numbers/transformOrdinals.js.map +1 -0
- package/lib/customReplace/CustomReplacePlugin.d.ts +61 -0
- package/lib/customReplace/CustomReplacePlugin.js +87 -0
- package/lib/customReplace/CustomReplacePlugin.js.map +1 -0
- package/lib/edit/EditPlugin.js +19 -1
- package/lib/edit/EditPlugin.js.map +1 -1
- package/lib/edit/deleteSteps/deleteList.js +13 -7
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.js +9 -2
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib/edit/keyboardDelete.js +2 -2
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardTab.js +28 -12
- package/lib/edit/keyboardTab.js.map +1 -1
- package/lib/edit/tabUtils/handleTabOnList.d.ts +2 -2
- package/lib/edit/tabUtils/handleTabOnList.js +3 -3
- package/lib/edit/tabUtils/handleTabOnList.js.map +1 -1
- package/lib/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
- package/lib/edit/tabUtils/handleTabOnParagraph.js +2 -2
- package/lib/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
- package/lib/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib/edit/tabUtils/handleTabOnTable.js +25 -0
- package/lib/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.js +40 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib/hyperlink/HyperlinkPlugin.js +141 -0
- package/lib/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib/hyperlink/HyperlinkToolTip.js +3 -0
- package/lib/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib/index.d.ts +9 -1
- package/lib/index.js +10 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib/markdown/MarkdownPlugin.js +31 -12
- package/lib/markdown/MarkdownPlugin.js.map +1 -1
- package/lib/markdown/utils/setFormat.d.ts +2 -2
- package/lib/markdown/utils/setFormat.js +21 -29
- package/lib/markdown/utils/setFormat.js.map +1 -1
- package/lib/picker/PickerHandler.d.ts +112 -0
- package/lib/picker/PickerHandler.js +3 -0
- package/lib/picker/PickerHandler.js.map +1 -0
- package/lib/picker/PickerHelper.d.ts +22 -0
- package/lib/picker/PickerHelper.js +3 -0
- package/lib/picker/PickerHelper.js.map +1 -0
- package/lib/picker/PickerHelperImpl.d.ts +25 -0
- package/lib/picker/PickerHelperImpl.js +54 -0
- package/lib/picker/PickerHelperImpl.js.map +1 -0
- package/lib/picker/PickerPlugin.d.ts +54 -0
- package/lib/picker/PickerPlugin.js +217 -0
- package/lib/picker/PickerPlugin.js.map +1 -0
- package/lib/picker/getQueryString.d.ts +5 -0
- package/lib/picker/getQueryString.js +36 -0
- package/lib/picker/getQueryString.js.map +1 -0
- package/lib/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
- package/lib/pluginUtils/Rect/getDOMInsertPointRect.js +57 -0
- package/lib/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
- package/lib/shortcut/ShortcutPlugin.js +1 -0
- package/lib/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib/shortcut/shortcuts.d.ts +10 -3
- package/lib/shortcut/shortcuts.js +21 -4
- package/lib/shortcut/shortcuts.js.map +1 -1
- package/lib/shortcut/utils/setShortcutIndentationCommand.js +2 -2
- package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
- package/lib/tableEdit/OnTableEditorCreatedCallback.js +3 -0
- package/lib/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
- package/lib/tableEdit/TableEditPlugin.d.ts +4 -1
- package/lib/tableEdit/TableEditPlugin.js +5 -2
- package/lib/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib/tableEdit/editors/TableEditor.d.ts +4 -1
- package/lib/tableEdit/editors/TableEditor.js +23 -7
- package/lib/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib/tableEdit/editors/features/TableEditFeature.js +3 -3
- package/lib/tableEdit/editors/features/TableEditFeature.js.map +1 -1
- package/lib/tableEdit/editors/features/TableInserter.d.ts +2 -1
- package/lib/tableEdit/editors/features/TableInserter.js +7 -9
- package/lib/tableEdit/editors/features/TableInserter.js.map +1 -1
- package/lib/tableEdit/editors/features/TableMover.d.ts +2 -1
- package/lib/tableEdit/editors/features/TableMover.js +8 -11
- package/lib/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib/tableEdit/editors/features/TableResizer.d.ts +2 -1
- package/lib/tableEdit/editors/features/TableResizer.js +19 -3
- package/lib/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +19 -4
- package/lib-amd/autoFormat/AutoFormatPlugin.js +57 -7
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib-amd/autoFormat/hyphen/transformHyphen.js +36 -0
- package/lib-amd/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib-amd/autoFormat/link/createLink.js +8 -6
- package/lib-amd/autoFormat/link/createLink.js.map +1 -1
- package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js +18 -34
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-amd/autoFormat/link/unlink.js +4 -5
- package/lib-amd/autoFormat/link/unlink.js.map +1 -1
- package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib-amd/autoFormat/list/keyboardListTrigger.js +10 -19
- package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-amd/autoFormat/numbers/transformFraction.d.ts +5 -0
- package/lib-amd/autoFormat/numbers/transformFraction.js +28 -0
- package/lib-amd/autoFormat/numbers/transformFraction.js.map +1 -0
- package/lib-amd/autoFormat/numbers/transformOrdinals.d.ts +5 -0
- package/lib-amd/autoFormat/numbers/transformOrdinals.js +33 -0
- package/lib-amd/autoFormat/numbers/transformOrdinals.js.map +1 -0
- package/lib-amd/customReplace/CustomReplacePlugin.d.ts +61 -0
- package/lib-amd/customReplace/CustomReplacePlugin.js +88 -0
- package/lib-amd/customReplace/CustomReplacePlugin.js.map +1 -0
- package/lib-amd/edit/EditPlugin.js +19 -1
- package/lib-amd/edit/EditPlugin.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteList.js +13 -7
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +9 -3
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-amd/edit/keyboardDelete.js +2 -2
- package/lib-amd/edit/keyboardDelete.js.map +1 -1
- package/lib-amd/edit/keyboardTab.js +27 -13
- package/lib-amd/edit/keyboardTab.js.map +1 -1
- package/lib-amd/edit/tabUtils/handleTabOnList.d.ts +2 -2
- package/lib-amd/edit/tabUtils/handleTabOnList.js +3 -3
- package/lib-amd/edit/tabUtils/handleTabOnList.js.map +1 -1
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.js +2 -2
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
- package/lib-amd/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib-amd/edit/tabUtils/handleTabOnTable.js +25 -0
- package/lib-amd/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.js +40 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.js +142 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.js +5 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib-amd/index.d.ts +9 -1
- package/lib-amd/index.js +7 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib-amd/markdown/MarkdownPlugin.js +31 -12
- package/lib-amd/markdown/MarkdownPlugin.js.map +1 -1
- package/lib-amd/markdown/utils/setFormat.d.ts +2 -2
- package/lib-amd/markdown/utils/setFormat.js +21 -29
- package/lib-amd/markdown/utils/setFormat.js.map +1 -1
- package/lib-amd/picker/PickerHandler.d.ts +112 -0
- package/lib-amd/picker/PickerHandler.js +5 -0
- package/lib-amd/picker/PickerHandler.js.map +1 -0
- package/lib-amd/picker/PickerHelper.d.ts +22 -0
- package/lib-amd/picker/PickerHelper.js +5 -0
- package/lib-amd/picker/PickerHelper.js.map +1 -0
- package/lib-amd/picker/PickerHelperImpl.d.ts +25 -0
- package/lib-amd/picker/PickerHelperImpl.js +53 -0
- package/lib-amd/picker/PickerHelperImpl.js.map +1 -0
- package/lib-amd/picker/PickerPlugin.d.ts +54 -0
- package/lib-amd/picker/PickerPlugin.js +215 -0
- package/lib-amd/picker/PickerPlugin.js.map +1 -0
- package/lib-amd/picker/getQueryString.d.ts +5 -0
- package/lib-amd/picker/getQueryString.js +37 -0
- package/lib-amd/picker/getQueryString.js.map +1 -0
- package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
- package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.js +58 -0
- package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
- package/lib-amd/shortcut/ShortcutPlugin.js +1 -0
- package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib-amd/shortcut/shortcuts.d.ts +10 -3
- package/lib-amd/shortcut/shortcuts.js +21 -4
- package/lib-amd/shortcut/shortcuts.js.map +1 -1
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +2 -2
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib-amd/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
- package/lib-amd/tableEdit/OnTableEditorCreatedCallback.js +5 -0
- package/lib-amd/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
- package/lib-amd/tableEdit/TableEditPlugin.d.ts +4 -1
- package/lib-amd/tableEdit/TableEditPlugin.js +5 -2
- package/lib-amd/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib-amd/tableEdit/editors/TableEditor.d.ts +4 -1
- package/lib-amd/tableEdit/editors/TableEditor.js +23 -7
- package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableEditFeature.js +3 -3
- package/lib-amd/tableEdit/editors/features/TableEditFeature.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableInserter.d.ts +2 -1
- package/lib-amd/tableEdit/editors/features/TableInserter.js +7 -9
- package/lib-amd/tableEdit/editors/features/TableInserter.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableMover.d.ts +2 -1
- package/lib-amd/tableEdit/editors/features/TableMover.js +8 -11
- package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableResizer.d.ts +2 -1
- package/lib-amd/tableEdit/editors/features/TableResizer.js +19 -4
- package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +19 -4
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +61 -6
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js +31 -0
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib-mjs/autoFormat/link/createLink.js +9 -7
- package/lib-mjs/autoFormat/link/createLink.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +17 -34
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-mjs/autoFormat/link/unlink.js +4 -5
- package/lib-mjs/autoFormat/link/unlink.js.map +1 -1
- package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js +9 -19
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-mjs/autoFormat/numbers/transformFraction.d.ts +5 -0
- package/lib-mjs/autoFormat/numbers/transformFraction.js +23 -0
- package/lib-mjs/autoFormat/numbers/transformFraction.js.map +1 -0
- package/lib-mjs/autoFormat/numbers/transformOrdinals.d.ts +5 -0
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js +28 -0
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js.map +1 -0
- package/lib-mjs/customReplace/CustomReplacePlugin.d.ts +61 -0
- package/lib-mjs/customReplace/CustomReplacePlugin.js +84 -0
- package/lib-mjs/customReplace/CustomReplacePlugin.js.map +1 -0
- package/lib-mjs/edit/EditPlugin.js +19 -1
- package/lib-mjs/edit/EditPlugin.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteList.js +13 -7
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +9 -2
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-mjs/edit/keyboardDelete.js +2 -2
- package/lib-mjs/edit/keyboardDelete.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.js +28 -12
- package/lib-mjs/edit/keyboardTab.js.map +1 -1
- package/lib-mjs/edit/tabUtils/handleTabOnList.d.ts +2 -2
- package/lib-mjs/edit/tabUtils/handleTabOnList.js +3 -3
- package/lib-mjs/edit/tabUtils/handleTabOnList.js.map +1 -1
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js +2 -2
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
- package/lib-mjs/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTable.js +21 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js +36 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.js +138 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.js +2 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib-mjs/index.d.ts +9 -1
- package/lib-mjs/index.js +5 -1
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib-mjs/markdown/MarkdownPlugin.js +31 -12
- package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -1
- package/lib-mjs/markdown/utils/setFormat.d.ts +2 -2
- package/lib-mjs/markdown/utils/setFormat.js +21 -29
- package/lib-mjs/markdown/utils/setFormat.js.map +1 -1
- package/lib-mjs/picker/PickerHandler.d.ts +112 -0
- package/lib-mjs/picker/PickerHandler.js +2 -0
- package/lib-mjs/picker/PickerHandler.js.map +1 -0
- package/lib-mjs/picker/PickerHelper.d.ts +22 -0
- package/lib-mjs/picker/PickerHelper.js +2 -0
- package/lib-mjs/picker/PickerHelper.js.map +1 -0
- package/lib-mjs/picker/PickerHelperImpl.d.ts +25 -0
- package/lib-mjs/picker/PickerHelperImpl.js +51 -0
- package/lib-mjs/picker/PickerHelperImpl.js.map +1 -0
- package/lib-mjs/picker/PickerPlugin.d.ts +54 -0
- package/lib-mjs/picker/PickerPlugin.js +214 -0
- package/lib-mjs/picker/PickerPlugin.js.map +1 -0
- package/lib-mjs/picker/getQueryString.d.ts +5 -0
- package/lib-mjs/picker/getQueryString.js +32 -0
- package/lib-mjs/picker/getQueryString.js.map +1 -0
- package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
- package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.js +53 -0
- package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
- package/lib-mjs/shortcut/ShortcutPlugin.js +2 -1
- package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib-mjs/shortcut/shortcuts.d.ts +10 -3
- package/lib-mjs/shortcut/shortcuts.js +20 -3
- package/lib-mjs/shortcut/shortcuts.js.map +1 -1
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +2 -2
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
- package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.js +2 -0
- package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
- package/lib-mjs/tableEdit/TableEditPlugin.d.ts +4 -1
- package/lib-mjs/tableEdit/TableEditPlugin.js +5 -2
- package/lib-mjs/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib-mjs/tableEdit/editors/TableEditor.d.ts +4 -1
- package/lib-mjs/tableEdit/editors/TableEditor.js +24 -8
- package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableEditFeature.js +3 -3
- package/lib-mjs/tableEdit/editors/features/TableEditFeature.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableInserter.d.ts +2 -1
- package/lib-mjs/tableEdit/editors/features/TableInserter.js +7 -9
- package/lib-mjs/tableEdit/editors/features/TableInserter.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableMover.d.ts +2 -1
- package/lib-mjs/tableEdit/editors/features/TableMover.js +8 -11
- package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableResizer.d.ts +2 -1
- package/lib-mjs/tableEdit/editors/features/TableResizer.js +19 -3
- package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/package.json +5 -5
- package/lib/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib/autoFormat/link/getLinkSegment.js +0 -27
- package/lib/autoFormat/link/getLinkSegment.js.map +0 -1
- package/lib-amd/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib-amd/autoFormat/link/getLinkSegment.js +0 -27
- package/lib-amd/autoFormat/link/getLinkSegment.js.map +0 -1
- package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib-mjs/autoFormat/link/getLinkSegment.js +0 -23
- package/lib-mjs/autoFormat/link/getLinkSegment.js.map +0 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-api", "./getQueryString", "./PickerHelperImpl"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_api_1, getQueryString_1, PickerHelperImpl_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PickerPlugin = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* PickerPlugin represents a plugin of editor which can handle picker related behaviors, including
|
|
7
|
+
* - Show picker when special trigger key is pressed
|
|
8
|
+
* - Hide picker
|
|
9
|
+
* - Change selection in picker by Up/Down/Left/Right
|
|
10
|
+
* - Apply selected item in picker
|
|
11
|
+
*
|
|
12
|
+
* PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.
|
|
13
|
+
*/
|
|
14
|
+
var PickerPlugin = /** @class */ (function () {
|
|
15
|
+
/**
|
|
16
|
+
* Construct a new instance of PickerPlugin class
|
|
17
|
+
* @param triggerCharacter The character to trigger a picker to be shown
|
|
18
|
+
* @param handler Picker handler for receiving picker state change events
|
|
19
|
+
*/
|
|
20
|
+
function PickerPlugin(triggerCharacter, handler) {
|
|
21
|
+
this.triggerCharacter = triggerCharacter;
|
|
22
|
+
this.handler = handler;
|
|
23
|
+
this.isMac = false;
|
|
24
|
+
this.lastQueryString = '';
|
|
25
|
+
this.helper = null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get a friendly name
|
|
29
|
+
*/
|
|
30
|
+
PickerPlugin.prototype.getName = function () {
|
|
31
|
+
return 'Picker';
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Initialize this plugin. This should only be called from Editor
|
|
35
|
+
* @param editor Editor instance
|
|
36
|
+
*/
|
|
37
|
+
PickerPlugin.prototype.initialize = function (editor) {
|
|
38
|
+
this.isMac = !!editor.getEnvironment().isMac;
|
|
39
|
+
this.helper = new PickerHelperImpl_1.PickerHelperImpl(editor, this.handler, this.triggerCharacter);
|
|
40
|
+
this.handler.onInitialize(this.helper);
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Dispose this plugin
|
|
44
|
+
*/
|
|
45
|
+
PickerPlugin.prototype.dispose = function () {
|
|
46
|
+
this.handler.onDispose();
|
|
47
|
+
this.helper = null;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Check if the plugin should handle the given event exclusively.
|
|
51
|
+
* Handle an event exclusively means other plugin will not receive this event in
|
|
52
|
+
* onPluginEvent method.
|
|
53
|
+
* If two plugins will return true in willHandleEventExclusively() for the same event,
|
|
54
|
+
* the final result depends on the order of the plugins are added into editor
|
|
55
|
+
* @param event The event to check
|
|
56
|
+
*/
|
|
57
|
+
PickerPlugin.prototype.willHandleEventExclusively = function (event) {
|
|
58
|
+
var _a;
|
|
59
|
+
return (!!((_a = this.helper) === null || _a === void 0 ? void 0 : _a.direction) &&
|
|
60
|
+
event.eventType == 'keyDown' &&
|
|
61
|
+
((0, roosterjs_content_model_dom_1.isCursorMovingKey)(event.rawEvent) ||
|
|
62
|
+
event.rawEvent.key == 'Enter' ||
|
|
63
|
+
event.rawEvent.key == 'Tab' ||
|
|
64
|
+
event.rawEvent.key == 'Escape'));
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Handle events triggered from editor
|
|
68
|
+
* @param event PluginEvent object
|
|
69
|
+
*/
|
|
70
|
+
PickerPlugin.prototype.onPluginEvent = function (event) {
|
|
71
|
+
if (!this.helper) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
switch (event.eventType) {
|
|
75
|
+
case 'contentChanged':
|
|
76
|
+
if (this.helper.direction) {
|
|
77
|
+
if (event.source == roosterjs_content_model_dom_1.ChangeSource.SetContent) {
|
|
78
|
+
this.helper.closePicker();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.onSuggestingInput(this.helper);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
case 'keyDown':
|
|
86
|
+
if (this.helper.direction) {
|
|
87
|
+
this.onSuggestingKeyDown(this.helper, event.rawEvent);
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case 'input':
|
|
91
|
+
if (this.helper.direction) {
|
|
92
|
+
this.onSuggestingInput(this.helper);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.onInput(this.helper, event.rawEvent);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
case 'mouseUp':
|
|
99
|
+
if (this.helper.direction) {
|
|
100
|
+
this.helper.closePicker();
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
PickerPlugin.prototype.onSuggestingKeyDown = function (helper, event) {
|
|
106
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
107
|
+
switch (event.key) {
|
|
108
|
+
case 'ArrowLeft':
|
|
109
|
+
case 'ArrowRight':
|
|
110
|
+
if (helper.direction == 'horizontal' || helper.direction == 'both') {
|
|
111
|
+
var isIncrement = event.key == 'ArrowRight';
|
|
112
|
+
if (helper.editor.getDOMHelper().isRightToLeft()) {
|
|
113
|
+
isIncrement = !isIncrement;
|
|
114
|
+
}
|
|
115
|
+
(_b = (_a = this.handler).onSelectionChanged) === null || _b === void 0 ? void 0 : _b.call(_a, isIncrement ? 'next' : 'previous');
|
|
116
|
+
}
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
break;
|
|
119
|
+
case 'ArrowUp':
|
|
120
|
+
case 'ArrowDown':
|
|
121
|
+
{
|
|
122
|
+
var isIncrement = event.key == 'ArrowDown';
|
|
123
|
+
if (helper.direction != 'horizontal') {
|
|
124
|
+
(_d = (_c = this.handler).onSelectionChanged) === null || _d === void 0 ? void 0 : _d.call(_c, helper.direction == 'both'
|
|
125
|
+
? isIncrement
|
|
126
|
+
? 'nextRow'
|
|
127
|
+
: 'previousRow'
|
|
128
|
+
: isIncrement
|
|
129
|
+
? 'next'
|
|
130
|
+
: 'previous');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
break;
|
|
135
|
+
case 'PageUp':
|
|
136
|
+
case 'PageDown':
|
|
137
|
+
(_f = (_e = this.handler).onSelectionChanged) === null || _f === void 0 ? void 0 : _f.call(_e, event.key == 'PageDown' ? 'nextPage' : 'previousPage');
|
|
138
|
+
event.preventDefault();
|
|
139
|
+
break;
|
|
140
|
+
case 'Home':
|
|
141
|
+
case 'End':
|
|
142
|
+
var hasCtrl = this.isMac ? event.metaKey : event.ctrlKey;
|
|
143
|
+
(_h = (_g = this.handler).onSelectionChanged) === null || _h === void 0 ? void 0 : _h.call(_g, event.key == 'Home'
|
|
144
|
+
? hasCtrl
|
|
145
|
+
? 'first'
|
|
146
|
+
: 'firstInRow'
|
|
147
|
+
: hasCtrl
|
|
148
|
+
? 'last'
|
|
149
|
+
: 'lastInRow');
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
break;
|
|
152
|
+
case 'Escape':
|
|
153
|
+
helper.closePicker();
|
|
154
|
+
event.preventDefault();
|
|
155
|
+
break;
|
|
156
|
+
case 'Enter':
|
|
157
|
+
case 'Tab':
|
|
158
|
+
(_k = (_j = this.handler).onSelect) === null || _k === void 0 ? void 0 : _k.call(_j);
|
|
159
|
+
event.preventDefault();
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
PickerPlugin.prototype.onSuggestingInput = function (helper) {
|
|
164
|
+
var _this = this;
|
|
165
|
+
if (!(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(helper.editor, function (_, segment, paragraph) {
|
|
166
|
+
var _a, _b;
|
|
167
|
+
var newQueryString = (0, getQueryString_1.getQueryString)(_this.triggerCharacter, paragraph, segment).replace(/[\u0020\u00A0]/g, ' ');
|
|
168
|
+
var oldQueryString = _this.lastQueryString;
|
|
169
|
+
if (newQueryString &&
|
|
170
|
+
((newQueryString.length >= oldQueryString.length &&
|
|
171
|
+
newQueryString.indexOf(oldQueryString) == 0) ||
|
|
172
|
+
(newQueryString.length < oldQueryString.length &&
|
|
173
|
+
oldQueryString.indexOf(newQueryString) == 0))) {
|
|
174
|
+
_this.lastQueryString = newQueryString;
|
|
175
|
+
(_b = (_a = _this.handler).onQueryStringChanged) === null || _b === void 0 ? void 0 : _b.call(_a, newQueryString);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
helper.closePicker();
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
})) {
|
|
182
|
+
helper.closePicker();
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
PickerPlugin.prototype.onInput = function (helper, event) {
|
|
186
|
+
var _this = this;
|
|
187
|
+
if (event.inputType == 'insertText' && event.data == this.triggerCharacter) {
|
|
188
|
+
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(helper.editor, function (_, segment) {
|
|
189
|
+
if (segment.text.endsWith(_this.triggerCharacter)) {
|
|
190
|
+
var charBeforeTrigger = segment.text[segment.text.length - 2];
|
|
191
|
+
if (!charBeforeTrigger ||
|
|
192
|
+
!charBeforeTrigger.trim() ||
|
|
193
|
+
(0, roosterjs_content_model_dom_1.isPunctuation)(charBeforeTrigger)) {
|
|
194
|
+
var selection = helper.editor.getDOMSelection();
|
|
195
|
+
var pos = (selection === null || selection === void 0 ? void 0 : selection.type) == 'range' && selection.range.collapsed
|
|
196
|
+
? {
|
|
197
|
+
node: selection.range.startContainer,
|
|
198
|
+
offset: selection.range.startOffset,
|
|
199
|
+
}
|
|
200
|
+
: null;
|
|
201
|
+
if (pos) {
|
|
202
|
+
_this.lastQueryString = _this.triggerCharacter;
|
|
203
|
+
helper.direction = _this.handler.onTrigger(_this.lastQueryString, pos);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return false;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
return PickerPlugin;
|
|
212
|
+
}());
|
|
213
|
+
exports.PickerPlugin = PickerPlugin;
|
|
214
|
+
});
|
|
215
|
+
//# sourceMappingURL=PickerPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PickerPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeSource, isCursorMovingKey, isPunctuation } from 'roosterjs-content-model-dom';\nimport { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';\nimport { getQueryString } from './getQueryString';\nimport { PickerHelperImpl } from './PickerHelperImpl';\nimport type { PickerHandler } from './PickerHandler';\nimport type {\n DOMInsertPoint,\n EditorPlugin,\n IEditor,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including\n * - Show picker when special trigger key is pressed\n * - Hide picker\n * - Change selection in picker by Up/Down/Left/Right\n * - Apply selected item in picker\n *\n * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.\n */\nexport class PickerPlugin implements EditorPlugin {\n private isMac: boolean = false;\n private lastQueryString = '';\n private helper: PickerHelperImpl | null = null;\n\n /**\n * Construct a new instance of PickerPlugin class\n * @param triggerCharacter The character to trigger a picker to be shown\n * @param handler Picker handler for receiving picker state change events\n */\n constructor(private triggerCharacter: string, private readonly handler: PickerHandler) {}\n\n /**\n * Get a friendly name\n */\n getName() {\n return 'Picker';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.isMac = !!editor.getEnvironment().isMac;\n this.helper = new PickerHelperImpl(editor, this.handler, this.triggerCharacter);\n this.handler.onInitialize(this.helper);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.handler.onDispose();\n this.helper = null;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n !!this.helper?.direction &&\n event.eventType == 'keyDown' &&\n (isCursorMovingKey(event.rawEvent) ||\n event.rawEvent.key == 'Enter' ||\n event.rawEvent.key == 'Tab' ||\n event.rawEvent.key == 'Escape')\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.helper) {\n return;\n }\n\n switch (event.eventType) {\n case 'contentChanged':\n if (this.helper.direction) {\n if (event.source == ChangeSource.SetContent) {\n this.helper.closePicker();\n } else {\n this.onSuggestingInput(this.helper);\n }\n }\n break;\n\n case 'keyDown':\n if (this.helper.direction) {\n this.onSuggestingKeyDown(this.helper, event.rawEvent);\n }\n break;\n\n case 'input':\n if (this.helper.direction) {\n this.onSuggestingInput(this.helper);\n } else {\n this.onInput(this.helper, event.rawEvent);\n }\n break;\n\n case 'mouseUp':\n if (this.helper.direction) {\n this.helper.closePicker();\n }\n break;\n }\n }\n\n private onSuggestingKeyDown(helper: PickerHelperImpl, event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n if (helper.direction == 'horizontal' || helper.direction == 'both') {\n let isIncrement = event.key == 'ArrowRight';\n\n if (helper.editor.getDOMHelper().isRightToLeft()) {\n isIncrement = !isIncrement;\n }\n\n this.handler.onSelectionChanged?.(isIncrement ? 'next' : 'previous');\n }\n\n event.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const isIncrement = event.key == 'ArrowDown';\n\n if (helper.direction != 'horizontal') {\n this.handler.onSelectionChanged?.(\n helper.direction == 'both'\n ? isIncrement\n ? 'nextRow'\n : 'previousRow'\n : isIncrement\n ? 'next'\n : 'previous'\n );\n }\n }\n\n event.preventDefault();\n break;\n case 'PageUp':\n case 'PageDown':\n this.handler.onSelectionChanged?.(\n event.key == 'PageDown' ? 'nextPage' : 'previousPage'\n );\n\n event.preventDefault();\n break;\n case 'Home':\n case 'End':\n const hasCtrl = this.isMac ? event.metaKey : event.ctrlKey;\n this.handler.onSelectionChanged?.(\n event.key == 'Home'\n ? hasCtrl\n ? 'first'\n : 'firstInRow'\n : hasCtrl\n ? 'last'\n : 'lastInRow'\n );\n\n event.preventDefault();\n break;\n case 'Escape':\n helper.closePicker();\n event.preventDefault();\n break;\n\n case 'Enter':\n case 'Tab':\n this.handler.onSelect?.();\n event.preventDefault();\n break;\n }\n }\n\n private onSuggestingInput(helper: PickerHelperImpl) {\n if (\n !formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment, paragraph) => {\n const newQueryString = getQueryString(\n this.triggerCharacter,\n paragraph,\n segment\n ).replace(/[\\u0020\\u00A0]/g, ' ');\n const oldQueryString = this.lastQueryString;\n\n if (\n newQueryString &&\n ((newQueryString.length >= oldQueryString.length &&\n newQueryString.indexOf(oldQueryString) == 0) ||\n (newQueryString.length < oldQueryString.length &&\n oldQueryString.indexOf(newQueryString) == 0))\n ) {\n this.lastQueryString = newQueryString;\n this.handler.onQueryStringChanged?.(newQueryString);\n } else {\n helper.closePicker();\n }\n\n return false;\n })\n ) {\n helper.closePicker();\n }\n }\n\n private onInput(helper: PickerHelperImpl, event: InputEvent) {\n if (event.inputType == 'insertText' && event.data == this.triggerCharacter) {\n formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment) => {\n if (segment.text.endsWith(this.triggerCharacter)) {\n const charBeforeTrigger = segment.text[segment.text.length - 2];\n\n if (\n !charBeforeTrigger ||\n !charBeforeTrigger.trim() ||\n isPunctuation(charBeforeTrigger)\n ) {\n const selection = helper.editor.getDOMSelection();\n const pos: DOMInsertPoint | null =\n selection?.type == 'range' && selection.range.collapsed\n ? {\n node: selection.range.startContainer,\n offset: selection.range.startOffset,\n }\n : null;\n\n if (pos) {\n this.lastQueryString = this.triggerCharacter;\n helper.direction = this.handler.onTrigger(this.lastQueryString, pos);\n }\n }\n }\n\n return false;\n });\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export declare function getQueryString(triggerCharacter: string, paragraph: ContentModelParagraph, previousSegment: ContentModelText, splittedSegmentResult?: ContentModelText[]): string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
define(["require", "exports", "../pluginUtils/splitTextSegment"], function (require, exports, splitTextSegment_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getQueryString = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
function getQueryString(triggerCharacter, paragraph, previousSegment, splittedSegmentResult) {
|
|
9
|
+
var result = '';
|
|
10
|
+
var i = paragraph.segments.indexOf(previousSegment);
|
|
11
|
+
for (; i >= 0; i--) {
|
|
12
|
+
var segment = paragraph.segments[i];
|
|
13
|
+
if (segment.segmentType != 'Text') {
|
|
14
|
+
result = '';
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
var index = segment.text.lastIndexOf(triggerCharacter);
|
|
18
|
+
if (index >= 0) {
|
|
19
|
+
result = segment.text.substring(index) + result;
|
|
20
|
+
splittedSegmentResult === null || splittedSegmentResult === void 0 ? void 0 : splittedSegmentResult.unshift(index > 0
|
|
21
|
+
? (0, splitTextSegment_1.splitTextSegment)(segment, paragraph, index, segment.text.length)
|
|
22
|
+
: segment);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
result = segment.text + result;
|
|
27
|
+
splittedSegmentResult === null || splittedSegmentResult === void 0 ? void 0 : splittedSegmentResult.unshift(segment);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (i < 0) {
|
|
31
|
+
result = '';
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.getQueryString = getQueryString;
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=getQueryString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getQueryString.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/getQueryString.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACH,SAAgB,cAAc,CAC1B,gBAAwB,EACxB,SAAgC,EAChC,eAAiC,EACjC,qBAA0C;QAE1C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEpD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAChB,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,EAAE;gBAC/B,MAAM,GAAG,EAAE,CAAC;gBACZ,MAAM;aACT;YAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEzD,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAEhD,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAC1B,KAAK,GAAG,CAAC;oBACL,CAAC,CAAC,IAAA,mCAAgB,EAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oBAClE,CAAC,CAAC,OAAO,CAChB,CAAC;gBAEF,MAAM;aACT;iBAAM;gBACH,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;gBAE/B,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,CAAC,GAAG,CAAC,EAAE;YACP,MAAM,GAAG,EAAE,CAAC;SACf;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAzCD,wCAyCC","sourcesContent":["import { splitTextSegment } from '../pluginUtils/splitTextSegment';\nimport type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getQueryString(\n triggerCharacter: string,\n paragraph: ContentModelParagraph,\n previousSegment: ContentModelText,\n splittedSegmentResult?: ContentModelText[]\n): string {\n let result = '';\n let i = paragraph.segments.indexOf(previousSegment);\n\n for (; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n if (segment.segmentType != 'Text') {\n result = '';\n break;\n }\n\n const index = segment.text.lastIndexOf(triggerCharacter);\n\n if (index >= 0) {\n result = segment.text.substring(index) + result;\n\n splittedSegmentResult?.unshift(\n index > 0\n ? splitTextSegment(segment, paragraph, index, segment.text.length)\n : segment\n );\n\n break;\n } else {\n result = segment.text + result;\n\n splittedSegmentResult?.unshift(segment);\n }\n }\n\n if (i < 0) {\n result = '';\n }\n\n return result;\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DOMInsertPoint, Rect } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* Get bounding rect of the given DOM insert point
|
|
4
|
+
* @param doc The document object
|
|
5
|
+
* @param pos The input DOM insert point
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDOMInsertPointRect(doc: Document, pos: DOMInsertPoint): Rect | null;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-dom"], function (require, exports, roosterjs_content_model_dom_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getDOMInsertPointRect = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* Get bounding rect of the given DOM insert point
|
|
7
|
+
* @param doc The document object
|
|
8
|
+
* @param pos The input DOM insert point
|
|
9
|
+
*/
|
|
10
|
+
function getDOMInsertPointRect(doc, pos) {
|
|
11
|
+
var _a;
|
|
12
|
+
var node = pos.node, offset = pos.offset;
|
|
13
|
+
var range = doc.createRange();
|
|
14
|
+
range.setStart(node, offset);
|
|
15
|
+
// 1) try to get rect using range.getBoundingClientRect()
|
|
16
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(range.getBoundingClientRect());
|
|
17
|
+
if (rect) {
|
|
18
|
+
return rect;
|
|
19
|
+
}
|
|
20
|
+
// 2) try to get rect using range.getClientRects
|
|
21
|
+
while (node.lastChild) {
|
|
22
|
+
if (offset == node.childNodes.length) {
|
|
23
|
+
node = node.lastChild;
|
|
24
|
+
offset = node.childNodes.length;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
node = node.childNodes[offset];
|
|
28
|
+
offset = 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
var rects = range.getClientRects && range.getClientRects();
|
|
32
|
+
rect = rects && rects.length == 1 ? (0, roosterjs_content_model_dom_1.normalizeRect)(rects[0]) : null;
|
|
33
|
+
if (rect) {
|
|
34
|
+
return rect;
|
|
35
|
+
}
|
|
36
|
+
// 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others
|
|
37
|
+
if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'TEXT_NODE')) {
|
|
38
|
+
var span = node.ownerDocument.createElement('span');
|
|
39
|
+
span.textContent = '\u200b';
|
|
40
|
+
range.insertNode(span);
|
|
41
|
+
rect = (0, roosterjs_content_model_dom_1.normalizeRect)(span.getBoundingClientRect());
|
|
42
|
+
(_a = span.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(span);
|
|
43
|
+
if (rect) {
|
|
44
|
+
return rect;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 4) try getBoundingClientRect on element
|
|
48
|
+
if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') && node.getBoundingClientRect) {
|
|
49
|
+
rect = (0, roosterjs_content_model_dom_1.normalizeRect)(node.getBoundingClientRect());
|
|
50
|
+
if (rect) {
|
|
51
|
+
return rect;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
exports.getDOMInsertPointRect = getDOMInsertPointRect;
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=getDOMInsertPointRect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDOMInsertPointRect.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts"],"names":[],"mappings":";;;;IAGA;;;;OAIG;IACH,SAAgB,qBAAqB,CAAC,GAAa,EAAE,GAAmB;;QAC9D,IAAA,IAAI,GAAa,GAAG,KAAhB,EAAE,MAAM,GAAK,GAAG,OAAR,CAAS;QAC3B,IAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAEhC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE7B,yDAAyD;QACzD,IAAI,IAAI,GAAG,IAAA,2CAAa,EAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAExD,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;QAED,gDAAgD;QAChD,OAAO,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAClC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBACtB,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;aACnC;iBAAM;gBACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,GAAG,CAAC,CAAC;aACd;SACJ;QAED,IAAM,KAAK,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC7D,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,2CAAa,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;QAED,oFAAoF;QACpF,IAAI,IAAA,0CAAY,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE;YACjC,IAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEtD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC5B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,GAAG,IAAA,2CAAa,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACnD,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,IAAI,EAAE;gBACN,OAAO,IAAI,CAAC;aACf;SACJ;QAED,0CAA0C;QAC1C,IAAI,IAAA,0CAAY,EAAC,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAClE,IAAI,GAAG,IAAA,2CAAa,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAEnD,IAAI,IAAI,EAAE;gBACN,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAtDD,sDAsDC","sourcesContent":["import { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport type { DOMInsertPoint, Rect } from 'roosterjs-content-model-types';\n\n/**\n * Get bounding rect of the given DOM insert point\n * @param doc The document object\n * @param pos The input DOM insert point\n */\nexport function getDOMInsertPointRect(doc: Document, pos: DOMInsertPoint): Rect | null {\n let { node, offset } = pos;\n const range = doc.createRange();\n\n range.setStart(node, offset);\n\n // 1) try to get rect using range.getBoundingClientRect()\n let rect = normalizeRect(range.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n\n // 2) try to get rect using range.getClientRects\n while (node.lastChild) {\n if (offset == node.childNodes.length) {\n node = node.lastChild;\n offset = node.childNodes.length;\n } else {\n node = node.childNodes[offset];\n offset = 0;\n }\n }\n\n const rects = range.getClientRects && range.getClientRects();\n rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;\n if (rect) {\n return rect;\n }\n\n // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others\n if (isNodeOfType(node, 'TEXT_NODE')) {\n const span = node.ownerDocument.createElement('span');\n\n span.textContent = '\\u200b';\n range.insertNode(span);\n rect = normalizeRect(span.getBoundingClientRect());\n span.parentNode?.removeChild(span);\n\n if (rect) {\n return rect;\n }\n }\n\n // 4) try getBoundingClientRect on element\n if (isNodeOfType(node, 'ELEMENT_NODE') && node.getBoundingClientRect) {\n rect = normalizeRect(node.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n }\n\n return null;\n}\n"]}
|
|
@@ -10,6 +10,7 @@ define(["require", "exports", "roosterjs-content-model-dom", "./shortcuts"], fun
|
|
|
10
10
|
shortcuts_1.ShortcutUndo,
|
|
11
11
|
shortcuts_1.ShortcutUndo2,
|
|
12
12
|
shortcuts_1.ShortcutRedo,
|
|
13
|
+
shortcuts_1.ShortcutRedoAlt,
|
|
13
14
|
shortcuts_1.ShortcutRedoMacOS,
|
|
14
15
|
shortcuts_1.ShortcutBullet,
|
|
15
16
|
shortcuts_1.ShortcutNumbering,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShortcutPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ShortcutPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts"],"names":[],"mappings":";;;;IA0BA,IAAM,gBAAgB,GAAsB;QACxC,wBAAY;QACZ,0BAAc;QACd,6BAAiB;QACjB,+BAAmB;QACnB,wBAAY;QACZ,yBAAa;QACb,wBAAY;QACZ,2BAAe;QACf,6BAAiB;QACjB,0BAAc;QACd,6BAAiB;QACjB,gCAAoB;QACpB,gCAAoB;QACpB,8BAAkB;QAClB,+BAAmB;KACtB,CAAC;IACF,IAAM,eAAe,GAAG,wBAAwB,CAAC;IAEjD;;OAEG;IACH;QAII;;;WAGG;QACH,wBAAoB,SAA+C;YAA/C,0BAAA,EAAA,4BAA+C;YAA/C,cAAS,GAAT,SAAS,CAAsC;YAP3D,WAAM,GAAmB,IAAI,CAAC;YAC9B,UAAK,GAAG,KAAK,CAAC;QAMgD,CAAC;QAEvE;;WAEG;QACH,gCAAO,GAAP;YACI,OAAO,UAAU,CAAC;QACtB,CAAC;QAED;;;;;WAKG;QACH,mCAAU,GAAV,UAAW,MAAe;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;QACtD,CAAC;QAED;;;;WAIG;QACH,gCAAO,GAAP;YACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED;;;;;;;WAOG;QACH,mDAA0B,GAA1B,UAA2B,KAAkB;YACzC,OAAO,CACH,KAAK,CAAC,SAAS,IAAI,SAAS;gBAC5B,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3E,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAChC,CAAC;QACN,CAAC;QAED;;;;;WAKG;QACH,sCAAa,GAAb,UAAc,KAAkB;YAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE;gBAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAE5C,IAAI,OAAO,EAAE;oBACT,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;iBACnC;aACJ;QACL,CAAC;QAEO,wCAAe,GAAvB,UAAwB,KAAmB;YAA3C,iBAaC;YAZG,OAAO,IAAA,+CAAiB,EAAC,KAAK,EAAE,eAAe,EAAE,UAAA,KAAK;gBAClD,IAAM,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC;gBAE3B,OAAO,CACH,MAAM;oBACN,KAAI,CAAC,SAAS,CAAC,MAAM,CACjB,UAAA,OAAO;wBACH,OAAA,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;4BACjC,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC;oBADvD,CACuD,CAC9D,CAAC,CAAC,CAAC,CACP,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;QAEO,gCAAO,GAAf,UAAgB,WAAsC;YAClD,QAAQ,WAAW,EAAE;gBACjB,KAAK,KAAK;oBACN,OAAO,IAAI,CAAC,KAAK,CAAC;gBAEtB,KAAK,QAAQ;oBACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAEvB;oBACI,OAAO,IAAI,CAAC;aACnB;QACL,CAAC;QAEO,sCAAa,GAArB,UAAsB,WAAkC,EAAE,KAAoB;YAClE,IAAA,OAAO,GAAuC,KAAK,QAA5C,EAAE,MAAM,GAA+B,KAAK,OAApC,EAAE,QAAQ,GAAqB,KAAK,SAA1B,EAAE,KAAK,GAAc,KAAK,MAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;YAC5D,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,IAAM,aAAa,GACf,CAAC,WAAW,CAAC,WAAW,IAAI,MAAM,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC;gBAC5D,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhE,OAAO,aAAa,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC;QAC3F,CAAC;QACL,qBAAC;IAAD,CAAC,AA3GD,IA2GC;IA3GY,wCAAc","sourcesContent":["import { cacheGetEventData } from 'roosterjs-content-model-dom';\nimport type { ShortcutCommand, ShortcutKeyDefinition } from './ShortcutCommand';\nimport {\n ShortcutBold,\n ShortcutBullet,\n ShortcutClearFormat,\n ShortcutDecreaseFont,\n ShortcutIncreaseFont,\n ShortcutIndentList,\n ShortcutItalic,\n ShortcutNumbering,\n ShortcutOutdentList,\n ShortcutRedo,\n ShortcutRedoAlt,\n ShortcutRedoMacOS,\n ShortcutUnderline,\n ShortcutUndo,\n ShortcutUndo2,\n} from './shortcuts';\nimport type {\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\nconst defaultShortcuts: ShortcutCommand[] = [\n ShortcutBold,\n ShortcutItalic,\n ShortcutUnderline,\n ShortcutClearFormat,\n ShortcutUndo,\n ShortcutUndo2,\n ShortcutRedo,\n ShortcutRedoAlt,\n ShortcutRedoMacOS,\n ShortcutBullet,\n ShortcutNumbering,\n ShortcutIncreaseFont,\n ShortcutDecreaseFont,\n ShortcutIndentList,\n ShortcutOutdentList,\n];\nconst CommandCacheKey = '__ShortcutCommandCache';\n\n/**\n * Shortcut plugin hook on the specified shortcut keys and trigger related format API\n */\nexport class ShortcutPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private isMac = false;\n\n /**\n * Create a new instance of ShortcutPlugin\n * @param [shortcuts=defaultShortcuts] Allowed commands\n */\n constructor(private shortcuts: ShortcutCommand[] = defaultShortcuts) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'Shortcut';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.isMac = !!this.editor.getEnvironment().isMac;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check:\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n event.eventType == 'keyDown' &&\n (event.rawEvent.ctrlKey || event.rawEvent.altKey || event.rawEvent.metaKey) &&\n !!this.cacheGetCommand(event)\n );\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == 'keyDown') {\n const command = this.cacheGetCommand(event);\n\n if (command) {\n command.onClick(this.editor);\n event.rawEvent.preventDefault();\n }\n }\n }\n\n private cacheGetCommand(event: KeyDownEvent) {\n return cacheGetEventData(event, CommandCacheKey, event => {\n const editor = this.editor;\n\n return (\n editor &&\n this.shortcuts.filter(\n command =>\n this.matchOS(command.environment) &&\n this.matchShortcut(command.shortcutKey, event.rawEvent)\n )[0]\n );\n });\n }\n\n private matchOS(environment?: 'all' | 'mac' | 'nonMac') {\n switch (environment) {\n case 'mac':\n return this.isMac;\n\n case 'nonMac':\n return !this.isMac;\n\n default:\n return true;\n }\n }\n\n private matchShortcut(shortcutKey: ShortcutKeyDefinition, event: KeyboardEvent) {\n const { ctrlKey, altKey, shiftKey, which, metaKey } = event;\n const ctrlOrMeta = this.isMac ? metaKey : ctrlKey;\n const matchModifier =\n (shortcutKey.modifierKey == 'ctrl' && ctrlOrMeta && !altKey) ||\n (shortcutKey.modifierKey == 'alt' && altKey && !ctrlOrMeta);\n\n return matchModifier && shiftKey == shortcutKey.shiftKey && shortcutKey.which == which;\n }\n}\n"]}
|
|
@@ -20,7 +20,7 @@ export declare const ShortcutUnderline: ShortcutCommand;
|
|
|
20
20
|
/**
|
|
21
21
|
* Shortcut command for Clear Format
|
|
22
22
|
* Windows: Ctrl + Space
|
|
23
|
-
* MacOS:
|
|
23
|
+
* MacOS: N/A
|
|
24
24
|
*/
|
|
25
25
|
export declare const ShortcutClearFormat: ShortcutCommand;
|
|
26
26
|
/**
|
|
@@ -42,11 +42,18 @@ export declare const ShortcutUndo2: ShortcutCommand;
|
|
|
42
42
|
*/
|
|
43
43
|
export declare const ShortcutRedo: ShortcutCommand;
|
|
44
44
|
/**
|
|
45
|
+
* @deprecated
|
|
45
46
|
* Shortcut command for Redo 2
|
|
46
47
|
* Windows: N/A
|
|
47
48
|
* MacOS: Meta + Shift + Z
|
|
48
49
|
*/
|
|
49
50
|
export declare const ShortcutRedoMacOS: ShortcutCommand;
|
|
51
|
+
/**
|
|
52
|
+
* Shortcut command for Redo 3
|
|
53
|
+
* Windows: Ctrl + Shift + Z
|
|
54
|
+
* MacOS: Meta + Shift + Z
|
|
55
|
+
*/
|
|
56
|
+
export declare const ShortcutRedoAlt: ShortcutCommand;
|
|
50
57
|
/**
|
|
51
58
|
* Shortcut command for Bullet List
|
|
52
59
|
* Windows: Ctrl + . (Period)
|
|
@@ -74,12 +81,12 @@ export declare const ShortcutDecreaseFont: ShortcutCommand;
|
|
|
74
81
|
/**
|
|
75
82
|
* Shortcut command for Intent list
|
|
76
83
|
* Windows: Alt + Shift + Arrow Right
|
|
77
|
-
* MacOS:
|
|
84
|
+
* MacOS: N/A
|
|
78
85
|
*/
|
|
79
86
|
export declare const ShortcutIndentList: ShortcutCommand;
|
|
80
87
|
/**
|
|
81
88
|
* Shortcut command for Outdent list
|
|
82
89
|
* Windows: Alt + Shift + Arrow Left
|
|
83
|
-
* MacOS:
|
|
90
|
+
* MacOS: N/A
|
|
84
91
|
*/
|
|
85
92
|
export declare const ShortcutOutdentList: ShortcutCommand;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortcutIndentationCommand", "roosterjs-content-model-api"], function (require, exports, roosterjs_content_model_core_1, setShortcutIndentationCommand_1, roosterjs_content_model_api_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoMacOS = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = void 0;
|
|
4
|
+
exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoAlt = exports.ShortcutRedoMacOS = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = void 0;
|
|
5
5
|
var Keys;
|
|
6
6
|
(function (Keys) {
|
|
7
7
|
Keys[Keys["BACKSPACE"] = 8] = "BACKSPACE";
|
|
@@ -59,7 +59,7 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
59
59
|
/**
|
|
60
60
|
* Shortcut command for Clear Format
|
|
61
61
|
* Windows: Ctrl + Space
|
|
62
|
-
* MacOS:
|
|
62
|
+
* MacOS: N/A
|
|
63
63
|
*/
|
|
64
64
|
exports.ShortcutClearFormat = {
|
|
65
65
|
shortcutKey: {
|
|
@@ -68,6 +68,7 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
68
68
|
which: 32 /* SPACE */,
|
|
69
69
|
},
|
|
70
70
|
onClick: function (editor) { return (0, roosterjs_content_model_api_1.clearFormat)(editor); },
|
|
71
|
+
environment: 'nonMac',
|
|
71
72
|
};
|
|
72
73
|
/**
|
|
73
74
|
* Shortcut command for Undo 1
|
|
@@ -111,6 +112,7 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
111
112
|
environment: 'nonMac',
|
|
112
113
|
};
|
|
113
114
|
/**
|
|
115
|
+
* @deprecated
|
|
114
116
|
* Shortcut command for Redo 2
|
|
115
117
|
* Windows: N/A
|
|
116
118
|
* MacOS: Meta + Shift + Z
|
|
@@ -124,6 +126,19 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
124
126
|
onClick: function (editor) { return (0, roosterjs_content_model_core_1.redo)(editor); },
|
|
125
127
|
environment: 'mac',
|
|
126
128
|
};
|
|
129
|
+
/**
|
|
130
|
+
* Shortcut command for Redo 3
|
|
131
|
+
* Windows: Ctrl + Shift + Z
|
|
132
|
+
* MacOS: Meta + Shift + Z
|
|
133
|
+
*/
|
|
134
|
+
exports.ShortcutRedoAlt = {
|
|
135
|
+
shortcutKey: {
|
|
136
|
+
modifierKey: 'ctrl',
|
|
137
|
+
shiftKey: true,
|
|
138
|
+
which: 90 /* Z */,
|
|
139
|
+
},
|
|
140
|
+
onClick: function (editor) { return (0, roosterjs_content_model_core_1.redo)(editor); },
|
|
141
|
+
};
|
|
127
142
|
/**
|
|
128
143
|
* Shortcut command for Bullet List
|
|
129
144
|
* Windows: Ctrl + . (Period)
|
|
@@ -179,7 +194,7 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
179
194
|
/**
|
|
180
195
|
* Shortcut command for Intent list
|
|
181
196
|
* Windows: Alt + Shift + Arrow Right
|
|
182
|
-
* MacOS:
|
|
197
|
+
* MacOS: N/A
|
|
183
198
|
*/
|
|
184
199
|
exports.ShortcutIndentList = {
|
|
185
200
|
shortcutKey: {
|
|
@@ -190,11 +205,12 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
190
205
|
onClick: function (editor) {
|
|
191
206
|
(0, setShortcutIndentationCommand_1.setShortcutIndentationCommand)(editor, 'indent');
|
|
192
207
|
},
|
|
208
|
+
environment: 'nonMac',
|
|
193
209
|
};
|
|
194
210
|
/**
|
|
195
211
|
* Shortcut command for Outdent list
|
|
196
212
|
* Windows: Alt + Shift + Arrow Left
|
|
197
|
-
* MacOS:
|
|
213
|
+
* MacOS: N/A
|
|
198
214
|
*/
|
|
199
215
|
exports.ShortcutOutdentList = {
|
|
200
216
|
shortcutKey: {
|
|
@@ -205,6 +221,7 @@ define(["require", "exports", "roosterjs-content-model-core", "./utils/setShortc
|
|
|
205
221
|
onClick: function (editor) {
|
|
206
222
|
(0, setShortcutIndentationCommand_1.setShortcutIndentationCommand)(editor, 'outdent');
|
|
207
223
|
},
|
|
224
|
+
environment: 'nonMac',
|
|
208
225
|
};
|
|
209
226
|
});
|
|
210
227
|
//# sourceMappingURL=shortcuts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":";;;;IAaA,IAAW,IAaV;IAbD,WAAW,IAAI;QACX,yCAAa,CAAA;QACb,kCAAU,CAAA;QACV,0BAAM,CAAA;QACN,0BAAM,CAAA;QACN,0BAAM,CAAA;QACN,0BAAM,CAAA;QACN,0BAAM,CAAA;QACN,mCAAW,CAAA;QACX,qCAAY,CAAA;QACZ,mDAAmB,CAAA;QACnB,4CAAe,CAAA;QACf,0CAAc,CAAA;IAClB,CAAC,EAbU,IAAI,KAAJ,IAAI,QAad;IAED;;;;OAIG;IACU,QAAA,YAAY,GAAoB;QACzC,WAAW,EAAE;YACT,WAAW,EAAE,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,KAAK,YAAQ;SAChB;QACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,IAAA,wCAAU,EAAC,MAAM,CAAC,EAAlB,CAAkB;KACxC,CAAC;IAEF;;;;OAIG;IACU,QAAA,cAAc,GAAoB;QAC3C,WAAW,EAAE;YACT,WAAW,EAAE,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,KAAK,YAAQ;SAChB;QACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,IAAA,0CAAY,EAAC,MAAM,CAAC,EAApB,CAAoB;KAC1C,CAAC;IAEF;;;;OAIG;IACU,QAAA,iBAAiB,GAAoB;QAC9C,WAAW,EAAE;YACT,WAAW,EAAE,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,KAAK,YAAQ;SAChB;QACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,IAAA,6CAAe,EAAC,MAAM,CAAC,EAAvB,CAAuB;KAC7C,CAAC;IAEF;;;;OAIG;IACU,QAAA,mBAAmB,GAAoB;QAChD,WAAW,EAAE;YACT,WAAW,EAAE,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,KAAK,gBAAY;SACpB;QACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,IAAA,yCAAW,EAAC,MAAM,CAAC,EAAnB,CAAmB;
|
|
1
|
+
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":"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","sourcesContent":["import { redo, undo } from 'roosterjs-content-model-core';\nimport { setShortcutIndentationCommand } from './utils/setShortcutIndentationCommand';\nimport {\n changeFontSize,\n clearFormat,\n toggleBold,\n toggleBullet,\n toggleItalic,\n toggleNumbering,\n toggleUnderline,\n} from 'roosterjs-content-model-api';\nimport type { ShortcutCommand } from './ShortcutCommand';\n\nconst enum Keys {\n BACKSPACE = 8,\n SPACE = 32,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n COMMA = 188,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n ArrowRight = 39,\n ArrowLeft = 37,\n}\n\n/**\n * Shortcut command for Bold\n * Windows: Ctrl + B\n * MacOS: Meta + B\n */\nexport const ShortcutBold: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.B,\n },\n onClick: editor => toggleBold(editor),\n};\n\n/**\n * Shortcut command for Italic\n * Windows: Ctrl + I\n * MacOS: Meta + I\n */\nexport const ShortcutItalic: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.I,\n },\n onClick: editor => toggleItalic(editor),\n};\n\n/**\n * Shortcut command for Underline\n * Windows: Ctrl + U\n * MacOS: Meta + U\n */\nexport const ShortcutUnderline: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.U,\n },\n onClick: editor => toggleUnderline(editor),\n};\n\n/**\n * Shortcut command for Clear Format\n * Windows: Ctrl + Space\n * MacOS: N/A\n */\nexport const ShortcutClearFormat: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.SPACE,\n },\n onClick: editor => clearFormat(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Undo 1\n * Windows: Ctrl + Z\n * MacOS: Meta + Z\n */\nexport const ShortcutUndo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Z,\n },\n onClick: editor => undo(editor),\n};\n\n/**\n * Shortcut command for Undo 2\n * Windows: Alt + Backspace\n * MacOS: N/A\n */\nexport const ShortcutUndo2: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: false,\n which: Keys.BACKSPACE,\n },\n onClick: editor => undo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 1\n * Windows: Ctrl + Y\n * MacOS: N/A\n */\nexport const ShortcutRedo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Y,\n },\n onClick: editor => redo(editor),\n environment: 'nonMac',\n};\n\n/**\n * @deprecated\n * Shortcut command for Redo 2\n * Windows: N/A\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoMacOS: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n environment: 'mac',\n};\n\n/**\n * Shortcut command for Redo 3\n * Windows: Ctrl + Shift + Z\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoAlt: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n};\n\n/**\n * Shortcut command for Bullet List\n * Windows: Ctrl + . (Period)\n * MacOS: Meta + . (Period)\n */\nexport const ShortcutBullet: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.PERIOD,\n },\n onClick: editor => toggleBullet(editor),\n};\n\n/**\n * Shortcut command for Numbering List\n * Windows: Ctrl + / (Forward slash)\n * MacOS: Meta + / (Forward slash)\n */\nexport const ShortcutNumbering: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.FORWARD_SLASH,\n },\n onClick: editor => toggleNumbering(editor),\n};\n\n/**\n * Shortcut command for Increase Font\n * Windows: Ctrl + Shift + . (Period)\n * MacOS: Meta + Shift + . (Period)\n */\nexport const ShortcutIncreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.PERIOD,\n },\n onClick: editor => changeFontSize(editor, 'increase'),\n};\n\n/**\n * Shortcut command for Decrease Font\n * Windows: Ctrl + Shift + , (Comma)\n * MacOS: Meta + Shift + , (Comma)\n */\nexport const ShortcutDecreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.COMMA,\n },\n onClick: editor => changeFontSize(editor, 'decrease'),\n};\n\n/**\n * Shortcut command for Intent list\n * Windows: Alt + Shift + Arrow Right\n * MacOS: N/A\n */\nexport const ShortcutIndentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowRight,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'indent');\n },\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Outdent list\n * Windows: Alt + Shift + Arrow Left\n * MacOS: N/A\n */\nexport const ShortcutOutdentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowLeft,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'outdent');\n },\n environment: 'nonMac',\n};\n"]}
|
|
@@ -6,12 +6,12 @@ define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
function setShortcutIndentationCommand(editor, operation) {
|
|
9
|
-
editor.formatContentModel(function (model) {
|
|
9
|
+
editor.formatContentModel(function (model, context) {
|
|
10
10
|
var listItem = (0, roosterjs_content_model_dom_1.getFirstSelectedListItem)(model);
|
|
11
11
|
if (listItem &&
|
|
12
12
|
listItem.blocks[0].blockType == 'Paragraph' &&
|
|
13
13
|
listItem.blocks[0].segments[0].segmentType == 'SelectionMarker') {
|
|
14
|
-
(0, roosterjs_content_model_api_1.setModelIndentation)(model, operation);
|
|
14
|
+
(0, roosterjs_content_model_api_1.setModelIndentation)(model, operation, undefined /*length*/, context);
|
|
15
15
|
return true;
|
|
16
16
|
}
|
|
17
17
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setShortcutIndentationCommand.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,6BAA6B,CAAC,MAAe,EAAE,SAA+B;QAC1F,MAAM,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"setShortcutIndentationCommand.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,6BAA6B,CAAC,MAAe,EAAE,SAA+B;QAC1F,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,OAAO;YACrC,IAAM,QAAQ,GAAG,IAAA,sDAAwB,EAAC,KAAK,CAAC,CAAC;YAEjD,IACI,QAAQ;gBACR,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,WAAW;gBAC3C,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,EACjE;gBACE,IAAA,iDAAmB,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAdD,sEAcC","sourcesContent":["import { getFirstSelectedListItem } from 'roosterjs-content-model-dom';\nimport { setModelIndentation } from 'roosterjs-content-model-api';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setShortcutIndentationCommand(editor: IEditor, operation: 'indent' | 'outdent') {\n editor.formatContentModel((model, context) => {\n const listItem = getFirstSelectedListItem(model);\n\n if (\n listItem &&\n listItem.blocks[0].blockType == 'Paragraph' &&\n listItem.blocks[0].segments[0].segmentType == 'SelectionMarker'\n ) {\n setModelIndentation(model, operation, undefined /*length*/, context);\n return true;\n }\n return false;\n });\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional callback when creating a TableEditPlugin, allows to customize the Selectors element as required.
|
|
3
|
+
*/
|
|
4
|
+
export declare type OnTableEditorCreatedCallback = (editorType: 'HorizontalTableInserter' | 'VerticalTableInserter' | 'TableMover' | 'TableResizer', element: HTMLElement) => () => void;
|