roosterjs-content-model-plugins 0.26.4 → 0.28.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 +11 -2
- package/lib/autoFormat/AutoFormatPlugin.js +24 -4
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/link/createLink.d.ts +5 -0
- package/lib/autoFormat/link/createLink.js +26 -0
- package/lib/autoFormat/link/createLink.js.map +1 -0
- package/lib/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
- package/lib/autoFormat/link/createLinkAfterSpace.js +39 -0
- package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -0
- package/lib/autoFormat/link/getLinkSegment.d.ts +5 -0
- package/lib/autoFormat/link/getLinkSegment.js +27 -0
- package/lib/autoFormat/link/getLinkSegment.js.map +1 -0
- package/lib/autoFormat/link/unlink.d.ts +5 -0
- package/lib/autoFormat/link/unlink.js +20 -0
- package/lib/autoFormat/link/unlink.js.map +1 -0
- package/lib/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
- package/lib/autoFormat/list/getIndex.js.map +1 -0
- package/lib/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
- package/lib/autoFormat/list/getListTypeStyle.js.map +1 -0
- package/lib/autoFormat/list/getNumberingListStyle.js.map +1 -0
- package/lib/autoFormat/list/keyboardListTrigger.d.ts +5 -0
- package/lib/autoFormat/{keyboardListTrigger.js → list/keyboardListTrigger.js} +17 -15
- package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -0
- package/lib/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
- package/lib/contextMenuBase/ContextMenuPluginBase.js +84 -0
- package/lib/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
- package/lib/edit/EditPlugin.d.ts +3 -3
- package/lib/edit/EditPlugin.js +1 -1
- package/lib/edit/EditPlugin.js.map +1 -1
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js +20 -1
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
- package/lib/edit/deleteSteps/deleteEmptyQuote.js +60 -0
- package/lib/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
- package/lib/edit/deleteSteps/deleteList.js +2 -1
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib/edit/handleKeyboardEventCommon.d.ts +2 -2
- package/lib/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.js +40 -10
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib/edit/keyboardDelete.d.ts +3 -3
- package/lib/edit/keyboardDelete.js +10 -2
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardInput.d.ts +2 -2
- package/lib/edit/keyboardInput.js +2 -1
- package/lib/edit/keyboardInput.js.map +1 -1
- package/lib/edit/keyboardTab.d.ts +2 -2
- package/lib/edit/keyboardTab.js +19 -11
- package/lib/edit/keyboardTab.js.map +1 -1
- package/lib/edit/tabUtils/handleTabOnList.d.ts +7 -0
- package/lib/edit/tabUtils/handleTabOnList.js +34 -0
- package/lib/edit/tabUtils/handleTabOnList.js.map +1 -0
- package/lib/edit/tabUtils/handleTabOnParagraph.d.ts +17 -0
- package/lib/edit/tabUtils/handleTabOnParagraph.js +81 -0
- package/lib/edit/tabUtils/handleTabOnParagraph.js.map +1 -0
- package/lib/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib/index.d.ts +5 -0
- package/lib/index.js +22 -1
- package/lib/index.js.map +1 -1
- package/lib/paste/Excel/processPastedContentFromExcel.js +1 -1
- package/lib/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/lib/paste/PastePlugin.d.ts +2 -3
- package/lib/paste/PastePlugin.js +6 -7
- package/lib/paste/PastePlugin.js.map +1 -1
- package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib/paste/WacComponents/constants.js.map +1 -1
- package/lib/paste/WacComponents/processPastedContentWacComponents.js +6 -6
- package/lib/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
- package/lib/paste/WordDesktop/getStyleMetadata.js +2 -1
- package/lib/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js +5 -17
- package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib/paste/utils/addParser.d.ts +1 -1
- package/lib/paste/utils/addParser.js +2 -1
- package/lib/paste/utils/addParser.js.map +1 -1
- package/lib/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib/paste/utils/getStyles.js.map +1 -1
- package/lib/paste/utils/linkParser.js.map +1 -1
- package/lib/paste/utils/setProcessor.js.map +1 -1
- package/lib/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
- package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib/pluginUtils/CreateElement/createElement.d.ts +2 -2
- package/lib/pluginUtils/CreateElement/createElement.js +2 -1
- package/lib/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib/pluginUtils/Disposable.d.ts +1 -1
- package/lib/pluginUtils/Disposable.js.map +1 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +2 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
- package/lib/pluginUtils/Rect/getIntersectedRect.js +4 -3
- package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib/shortcut/ShortcutCommand.d.ts +44 -0
- package/lib/shortcut/ShortcutCommand.js +3 -0
- package/lib/shortcut/ShortcutCommand.js.map +1 -0
- package/lib/shortcut/ShortcutPlugin.d.ts +51 -0
- package/lib/shortcut/ShortcutPlugin.js +120 -0
- package/lib/shortcut/ShortcutPlugin.js.map +1 -0
- package/lib/shortcut/shortcuts.d.ts +85 -0
- package/lib/shortcut/shortcuts.js +211 -0
- package/lib/shortcut/shortcuts.js.map +1 -0
- package/lib/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
- package/lib/shortcut/utils/setShortcutIndentationCommand.js +22 -0
- package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
- package/lib/tableEdit/TableEditPlugin.d.ts +47 -0
- package/lib/tableEdit/TableEditPlugin.js +156 -0
- package/lib/tableEdit/TableEditPlugin.js.map +1 -0
- package/lib/tableEdit/editors/TableEditor.d.ts +73 -0
- package/lib/tableEdit/editors/TableEditor.js +294 -0
- package/lib/tableEdit/editors/TableEditor.js.map +1 -0
- package/lib/tableEdit/editors/features/CellResizer.d.ts +6 -0
- package/lib/tableEdit/editors/features/CellResizer.js +169 -0
- package/lib/tableEdit/editors/features/CellResizer.js.map +1 -0
- package/lib/tableEdit/editors/features/TableEditFeature.d.ts +13 -0
- package/lib/tableEdit/editors/features/TableEditFeature.js +17 -0
- package/lib/tableEdit/editors/features/TableEditFeature.js.map +1 -0
- package/lib/tableEdit/editors/features/TableInserter.d.ts +6 -0
- package/lib/tableEdit/editors/features/TableInserter.js +113 -0
- package/lib/tableEdit/editors/features/TableInserter.js.map +1 -0
- package/lib/tableEdit/editors/features/TableMover.d.ts +8 -0
- package/lib/tableEdit/editors/features/TableMover.js +83 -0
- package/lib/tableEdit/editors/features/TableMover.js.map +1 -0
- package/lib/tableEdit/editors/features/TableResizer.d.ts +6 -0
- package/lib/tableEdit/editors/features/TableResizer.js +166 -0
- package/lib/tableEdit/editors/features/TableResizer.js.map +1 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +11 -2
- package/lib-amd/autoFormat/AutoFormatPlugin.js +21 -4
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/link/createLink.d.ts +5 -0
- package/lib-amd/autoFormat/link/createLink.js +26 -0
- package/lib-amd/autoFormat/link/createLink.js.map +1 -0
- package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js +38 -0
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -0
- package/lib-amd/autoFormat/link/getLinkSegment.d.ts +5 -0
- package/lib-amd/autoFormat/link/getLinkSegment.js +27 -0
- package/lib-amd/autoFormat/link/getLinkSegment.js.map +1 -0
- package/lib-amd/autoFormat/link/unlink.d.ts +5 -0
- package/lib-amd/autoFormat/link/unlink.js +21 -0
- package/lib-amd/autoFormat/link/unlink.js.map +1 -0
- package/lib-amd/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
- package/lib-amd/autoFormat/list/getIndex.js.map +1 -0
- package/lib-amd/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
- package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -0
- package/lib-amd/autoFormat/list/getNumberingListStyle.js.map +1 -0
- package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +5 -0
- package/lib-amd/autoFormat/list/keyboardListTrigger.js +46 -0
- package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -0
- package/lib-amd/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
- package/lib-amd/contextMenuBase/ContextMenuPluginBase.js +86 -0
- package/lib-amd/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
- package/lib-amd/edit/EditPlugin.d.ts +3 -3
- package/lib-amd/edit/EditPlugin.js +1 -1
- package/lib-amd/edit/EditPlugin.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +19 -1
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
- package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js +60 -0
- package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
- package/lib-amd/edit/deleteSteps/deleteList.js +2 -1
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-amd/edit/handleKeyboardEventCommon.d.ts +2 -2
- package/lib-amd/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +40 -10
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-amd/edit/keyboardDelete.d.ts +3 -3
- package/lib-amd/edit/keyboardDelete.js +10 -3
- package/lib-amd/edit/keyboardDelete.js.map +1 -1
- package/lib-amd/edit/keyboardInput.d.ts +2 -2
- package/lib-amd/edit/keyboardInput.js +2 -2
- package/lib-amd/edit/keyboardInput.js.map +1 -1
- package/lib-amd/edit/keyboardTab.d.ts +2 -2
- package/lib-amd/edit/keyboardTab.js +18 -12
- package/lib-amd/edit/keyboardTab.js.map +1 -1
- package/lib-amd/edit/tabUtils/handleTabOnList.d.ts +7 -0
- package/lib-amd/edit/tabUtils/handleTabOnList.js +34 -0
- package/lib-amd/edit/tabUtils/handleTabOnList.js.map +1 -0
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.d.ts +17 -0
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.js +81 -0
- package/lib-amd/edit/tabUtils/handleTabOnParagraph.js.map +1 -0
- package/lib-amd/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib-amd/index.d.ts +5 -0
- package/lib-amd/index.js +19 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/paste/Excel/processPastedContentFromExcel.js +1 -1
- package/lib-amd/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/lib-amd/paste/PastePlugin.d.ts +2 -3
- package/lib-amd/paste/PastePlugin.js +6 -7
- package/lib-amd/paste/PastePlugin.js.map +1 -1
- package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib-amd/paste/WacComponents/constants.js.map +1 -1
- package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js +6 -6
- package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib-amd/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib-amd/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
- package/lib-amd/paste/WordDesktop/getStyleMetadata.js +2 -1
- package/lib-amd/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js +5 -17
- package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib-amd/paste/utils/addParser.d.ts +1 -1
- package/lib-amd/paste/utils/addParser.js +2 -1
- package/lib-amd/paste/utils/addParser.js.map +1 -1
- package/lib-amd/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib-amd/paste/utils/getStyles.js.map +1 -1
- package/lib-amd/paste/utils/linkParser.js.map +1 -1
- package/lib-amd/paste/utils/setProcessor.js.map +1 -1
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +2 -2
- package/lib-amd/pluginUtils/CreateElement/createElement.js +2 -1
- package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib-amd/pluginUtils/Disposable.d.ts +1 -1
- package/lib-amd/pluginUtils/Disposable.js.map +1 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +2 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +4 -3
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib-amd/shortcut/ShortcutCommand.d.ts +44 -0
- package/lib-amd/shortcut/ShortcutCommand.js +5 -0
- package/lib-amd/shortcut/ShortcutCommand.js.map +1 -0
- package/lib-amd/shortcut/ShortcutPlugin.d.ts +51 -0
- package/lib-amd/shortcut/ShortcutPlugin.js +120 -0
- package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -0
- package/lib-amd/shortcut/shortcuts.d.ts +85 -0
- package/lib-amd/shortcut/shortcuts.js +210 -0
- package/lib-amd/shortcut/shortcuts.js.map +1 -0
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +22 -0
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
- package/lib-amd/tableEdit/TableEditPlugin.d.ts +47 -0
- package/lib-amd/tableEdit/TableEditPlugin.js +156 -0
- package/lib-amd/tableEdit/TableEditPlugin.js.map +1 -0
- package/lib-amd/tableEdit/editors/TableEditor.d.ts +73 -0
- package/lib-amd/tableEdit/editors/TableEditor.js +290 -0
- package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -0
- package/lib-amd/tableEdit/editors/features/CellResizer.d.ts +6 -0
- package/lib-amd/tableEdit/editors/features/CellResizer.js +166 -0
- package/lib-amd/tableEdit/editors/features/CellResizer.js.map +1 -0
- package/lib-amd/tableEdit/editors/features/TableEditFeature.d.ts +13 -0
- package/lib-amd/tableEdit/editors/features/TableEditFeature.js +19 -0
- package/lib-amd/tableEdit/editors/features/TableEditFeature.js.map +1 -0
- package/lib-amd/tableEdit/editors/features/TableInserter.d.ts +6 -0
- package/lib-amd/tableEdit/editors/features/TableInserter.js +111 -0
- package/lib-amd/tableEdit/editors/features/TableInserter.js.map +1 -0
- package/lib-amd/tableEdit/editors/features/TableMover.d.ts +8 -0
- package/lib-amd/tableEdit/editors/features/TableMover.js +81 -0
- package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -0
- package/lib-amd/tableEdit/editors/features/TableResizer.d.ts +6 -0
- package/lib-amd/tableEdit/editors/features/TableResizer.js +164 -0
- package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +11 -2
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +24 -4
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLink.d.ts +5 -0
- package/lib-mjs/autoFormat/link/createLink.js +22 -0
- package/lib-mjs/autoFormat/link/createLink.js.map +1 -0
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +35 -0
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -0
- package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +5 -0
- package/lib-mjs/autoFormat/link/getLinkSegment.js +23 -0
- package/lib-mjs/autoFormat/link/getLinkSegment.js.map +1 -0
- package/lib-mjs/autoFormat/link/unlink.d.ts +5 -0
- package/lib-mjs/autoFormat/link/unlink.js +16 -0
- package/lib-mjs/autoFormat/link/unlink.js.map +1 -0
- package/lib-mjs/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
- package/lib-mjs/autoFormat/list/getIndex.js.map +1 -0
- package/lib-mjs/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
- package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -0
- package/lib-mjs/autoFormat/list/getNumberingListStyle.js.map +1 -0
- package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +5 -0
- package/lib-mjs/autoFormat/{keyboardListTrigger.js → list/keyboardListTrigger.js} +17 -15
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -0
- package/lib-mjs/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
- package/lib-mjs/contextMenuBase/ContextMenuPluginBase.js +81 -0
- package/lib-mjs/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
- package/lib-mjs/edit/EditPlugin.d.ts +3 -3
- package/lib-mjs/edit/EditPlugin.js +1 -1
- package/lib-mjs/edit/EditPlugin.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +20 -1
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
- package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js +56 -0
- package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
- package/lib-mjs/edit/deleteSteps/deleteList.js +2 -1
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-mjs/edit/handleKeyboardEventCommon.d.ts +2 -2
- package/lib-mjs/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +42 -12
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-mjs/edit/keyboardDelete.d.ts +3 -3
- package/lib-mjs/edit/keyboardDelete.js +10 -2
- package/lib-mjs/edit/keyboardDelete.js.map +1 -1
- package/lib-mjs/edit/keyboardInput.d.ts +2 -2
- package/lib-mjs/edit/keyboardInput.js +2 -1
- package/lib-mjs/edit/keyboardInput.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.d.ts +2 -2
- package/lib-mjs/edit/keyboardTab.js +19 -11
- package/lib-mjs/edit/keyboardTab.js.map +1 -1
- package/lib-mjs/edit/tabUtils/handleTabOnList.d.ts +7 -0
- package/lib-mjs/edit/tabUtils/handleTabOnList.js +30 -0
- package/lib-mjs/edit/tabUtils/handleTabOnList.js.map +1 -0
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.d.ts +17 -0
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js +77 -0
- package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js.map +1 -0
- package/lib-mjs/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib-mjs/index.d.ts +5 -0
- package/lib-mjs/index.js +4 -0
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/paste/Excel/processPastedContentFromExcel.js +1 -1
- package/lib-mjs/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/lib-mjs/paste/PastePlugin.d.ts +2 -3
- package/lib-mjs/paste/PastePlugin.js +1 -2
- package/lib-mjs/paste/PastePlugin.js.map +1 -1
- package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib-mjs/paste/WacComponents/constants.js.map +1 -1
- package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js +1 -1
- package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.js +1 -1
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js +2 -14
- package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib-mjs/paste/utils/addParser.d.ts +1 -1
- package/lib-mjs/paste/utils/addParser.js +1 -1
- package/lib-mjs/paste/utils/addParser.js.map +1 -1
- package/lib-mjs/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib-mjs/paste/utils/getStyles.js.map +1 -1
- package/lib-mjs/paste/utils/linkParser.js.map +1 -1
- package/lib-mjs/paste/utils/setProcessor.js.map +1 -1
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +2 -2
- package/lib-mjs/pluginUtils/CreateElement/createElement.js +1 -1
- package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib-mjs/pluginUtils/Disposable.d.ts +1 -1
- package/lib-mjs/pluginUtils/Disposable.js.map +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +2 -2
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib-mjs/shortcut/ShortcutCommand.d.ts +44 -0
- package/lib-mjs/shortcut/ShortcutCommand.js +2 -0
- package/lib-mjs/shortcut/ShortcutCommand.js.map +1 -0
- package/lib-mjs/shortcut/ShortcutPlugin.d.ts +51 -0
- package/lib-mjs/shortcut/ShortcutPlugin.js +117 -0
- package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -0
- package/lib-mjs/shortcut/shortcuts.d.ts +85 -0
- package/lib-mjs/shortcut/shortcuts.js +208 -0
- package/lib-mjs/shortcut/shortcuts.js.map +1 -0
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +18 -0
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
- package/lib-mjs/tableEdit/TableEditPlugin.d.ts +47 -0
- package/lib-mjs/tableEdit/TableEditPlugin.js +153 -0
- package/lib-mjs/tableEdit/TableEditPlugin.js.map +1 -0
- package/lib-mjs/tableEdit/editors/TableEditor.d.ts +73 -0
- package/lib-mjs/tableEdit/editors/TableEditor.js +291 -0
- package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -0
- package/lib-mjs/tableEdit/editors/features/CellResizer.d.ts +6 -0
- package/lib-mjs/tableEdit/editors/features/CellResizer.js +165 -0
- package/lib-mjs/tableEdit/editors/features/CellResizer.js.map +1 -0
- package/lib-mjs/tableEdit/editors/features/TableEditFeature.d.ts +13 -0
- package/lib-mjs/tableEdit/editors/features/TableEditFeature.js +13 -0
- package/lib-mjs/tableEdit/editors/features/TableEditFeature.js.map +1 -0
- package/lib-mjs/tableEdit/editors/features/TableInserter.d.ts +6 -0
- package/lib-mjs/tableEdit/editors/features/TableInserter.js +109 -0
- package/lib-mjs/tableEdit/editors/features/TableInserter.js.map +1 -0
- package/lib-mjs/tableEdit/editors/features/TableMover.d.ts +8 -0
- package/lib-mjs/tableEdit/editors/features/TableMover.js +79 -0
- package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -0
- package/lib-mjs/tableEdit/editors/features/TableResizer.d.ts +6 -0
- package/lib-mjs/tableEdit/editors/features/TableResizer.js +162 -0
- package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -0
- package/package.json +5 -5
- package/lib/autoFormat/keyboardListTrigger.d.ts +0 -5
- package/lib/autoFormat/keyboardListTrigger.js.map +0 -1
- package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
- package/lib/autoFormat/utils/getIndex.js.map +0 -1
- package/lib/autoFormat/utils/getListTypeStyle.js.map +0 -1
- package/lib/autoFormat/utils/getNumberingListStyle.js.map +0 -1
- package/lib/pluginUtils/Rect/normalizeRect.d.ts +0 -7
- package/lib/pluginUtils/Rect/normalizeRect.js +0 -20
- package/lib/pluginUtils/Rect/normalizeRect.js.map +0 -1
- package/lib-amd/autoFormat/keyboardListTrigger.d.ts +0 -5
- package/lib-amd/autoFormat/keyboardListTrigger.js +0 -44
- package/lib-amd/autoFormat/keyboardListTrigger.js.map +0 -1
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
- package/lib-amd/autoFormat/utils/getIndex.js.map +0 -1
- package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +0 -1
- package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +0 -1
- package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +0 -7
- package/lib-amd/pluginUtils/Rect/normalizeRect.js +0 -22
- package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +0 -1
- package/lib-mjs/autoFormat/keyboardListTrigger.d.ts +0 -5
- package/lib-mjs/autoFormat/keyboardListTrigger.js.map +0 -1
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
- package/lib-mjs/autoFormat/utils/getIndex.js.map +0 -1
- package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +0 -1
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +0 -1
- package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +0 -7
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js +0 -17
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +0 -1
- /package/lib/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
- /package/lib/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
- /package/lib/autoFormat/{utils → list}/getIndex.d.ts +0 -0
- /package/lib/autoFormat/{utils → list}/getIndex.js +0 -0
- /package/lib/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
- /package/lib/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
- /package/lib/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
- /package/lib-amd/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
- /package/lib-amd/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
- /package/lib-amd/autoFormat/{utils → list}/getIndex.d.ts +0 -0
- /package/lib-amd/autoFormat/{utils → list}/getIndex.js +0 -0
- /package/lib-amd/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
- /package/lib-amd/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
- /package/lib-amd/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/getIndex.d.ts +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/getIndex.js +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
- /package/lib-mjs/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "roosterjs-content-model-dom", "roosterjs-content-model-core"], function (require, exports, tslib_1, createElement_1, DragAndDropHelper_1, roosterjs_content_model_dom_1, roosterjs_content_model_core_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createCellResizer = void 0;
|
|
5
|
+
var CELL_RESIZER_WIDTH = 4;
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
function createCellResizer(editor, td, table, isRTL, isHorizontal, onStart, onEnd, anchorContainer) {
|
|
10
|
+
var document = td.ownerDocument;
|
|
11
|
+
var createElementData = {
|
|
12
|
+
tag: 'div',
|
|
13
|
+
style: "position: fixed; cursor: " + (isHorizontal ? 'row' : 'col') + "-resize; user-select: none",
|
|
14
|
+
};
|
|
15
|
+
var zoomScale = editor.getDOMHelper().calculateZoomScale();
|
|
16
|
+
var div = (0, createElement_1.createElement)(createElementData, document);
|
|
17
|
+
(anchorContainer || document.body).appendChild(div);
|
|
18
|
+
var context = { editor: editor, td: td, table: table, isRTL: isRTL, zoomScale: zoomScale, onStart: onStart };
|
|
19
|
+
var setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;
|
|
20
|
+
setPosition(context, div);
|
|
21
|
+
var handler = {
|
|
22
|
+
onDragStart: onDragStart,
|
|
23
|
+
// Horizontal modifies row height, vertical modifies column width
|
|
24
|
+
onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,
|
|
25
|
+
onDragEnd: onEnd,
|
|
26
|
+
};
|
|
27
|
+
var featureHandler = new DragAndDropHelper_1.DragAndDropHelper(div, context, setPosition, handler, zoomScale, editor.getEnvironment().isMobileOrTablet);
|
|
28
|
+
return { node: td, div: div, featureHandler: featureHandler };
|
|
29
|
+
}
|
|
30
|
+
exports.createCellResizer = createCellResizer;
|
|
31
|
+
function onDragStart(context, event) {
|
|
32
|
+
var td = context.td, onStart = context.onStart;
|
|
33
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
34
|
+
// Get cell coordinates
|
|
35
|
+
var columnIndex = td.cellIndex;
|
|
36
|
+
var row = td.parentElement && (0, roosterjs_content_model_dom_1.isElementOfType)(td.parentElement, 'tr') ? td.parentElement : undefined;
|
|
37
|
+
var rowIndex = row === null || row === void 0 ? void 0 : row.rowIndex;
|
|
38
|
+
if (rowIndex == undefined) {
|
|
39
|
+
return {
|
|
40
|
+
cmTable: undefined,
|
|
41
|
+
anchorColumn: undefined,
|
|
42
|
+
anchorRow: undefined,
|
|
43
|
+
anchorRowHeight: -1,
|
|
44
|
+
allWidths: [],
|
|
45
|
+
}; // Just a fallback
|
|
46
|
+
}
|
|
47
|
+
var editor = context.editor, table = context.table;
|
|
48
|
+
// Get current selection
|
|
49
|
+
var selection = editor.getDOMSelection();
|
|
50
|
+
// Select first cell of the table
|
|
51
|
+
editor.setDOMSelection({
|
|
52
|
+
type: 'table',
|
|
53
|
+
firstColumn: 0,
|
|
54
|
+
firstRow: 0,
|
|
55
|
+
lastColumn: 0,
|
|
56
|
+
lastRow: 0,
|
|
57
|
+
table: table,
|
|
58
|
+
});
|
|
59
|
+
// Get the table content model
|
|
60
|
+
var cmTable = (0, roosterjs_content_model_core_1.getFirstSelectedTable)(editor.getContentModelCopy('disconnected'))[0];
|
|
61
|
+
// Restore selection
|
|
62
|
+
editor.setDOMSelection(selection);
|
|
63
|
+
if (rect && cmTable) {
|
|
64
|
+
onStart();
|
|
65
|
+
return {
|
|
66
|
+
cmTable: cmTable,
|
|
67
|
+
anchorColumn: columnIndex,
|
|
68
|
+
anchorRow: rowIndex,
|
|
69
|
+
anchorRowHeight: cmTable.rows[rowIndex].height,
|
|
70
|
+
allWidths: (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(cmTable.widths), false),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return {
|
|
75
|
+
cmTable: cmTable,
|
|
76
|
+
anchorColumn: undefined,
|
|
77
|
+
anchorRow: undefined,
|
|
78
|
+
anchorRowHeight: -1,
|
|
79
|
+
allWidths: [],
|
|
80
|
+
}; // Just a fallback
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function onDraggingHorizontal(context, event, initValue, deltaX, deltaY) {
|
|
84
|
+
var table = context.table;
|
|
85
|
+
var cmTable = initValue.cmTable, anchorRow = initValue.anchorRow, anchorRowHeight = initValue.anchorRowHeight;
|
|
86
|
+
// Assign new widths and heights to the CM table
|
|
87
|
+
if (cmTable && anchorRow != undefined) {
|
|
88
|
+
// Modify the CM Table size
|
|
89
|
+
cmTable.rows[anchorRow].height = (anchorRowHeight !== null && anchorRowHeight !== void 0 ? anchorRowHeight : 0) + deltaY;
|
|
90
|
+
// Normalize the table
|
|
91
|
+
(0, roosterjs_content_model_core_1.normalizeTable)(cmTable);
|
|
92
|
+
// Writeback CM Table size changes to DOM Table
|
|
93
|
+
var tableRow = table.rows[anchorRow];
|
|
94
|
+
for (var col = 0; col < tableRow.cells.length; col++) {
|
|
95
|
+
var td = tableRow.cells[col];
|
|
96
|
+
td.style.height = cmTable.rows[anchorRow].height + 'px';
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function onDraggingVertical(context, event, initValue, deltaX) {
|
|
105
|
+
var table = context.table, isRTL = context.isRTL;
|
|
106
|
+
var cmTable = initValue.cmTable, anchorColumn = initValue.anchorColumn, allWidths = initValue.allWidths;
|
|
107
|
+
// Assign new widths and heights to the CM table
|
|
108
|
+
if (cmTable && anchorColumn != undefined) {
|
|
109
|
+
// Modify the CM Table size
|
|
110
|
+
var lastColumn = anchorColumn == cmTable.widths.length - 1;
|
|
111
|
+
var change = deltaX * (isRTL ? -1 : 1);
|
|
112
|
+
// This is the last column
|
|
113
|
+
if (lastColumn) {
|
|
114
|
+
// Only the last column changes
|
|
115
|
+
cmTable.widths[anchorColumn] = allWidths[anchorColumn] + change;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// Any other two columns
|
|
119
|
+
var anchorChange = allWidths[anchorColumn] + change;
|
|
120
|
+
var nextAnchorChange = allWidths[anchorColumn + 1] - change;
|
|
121
|
+
if (anchorChange < roosterjs_content_model_core_1.MIN_ALLOWED_TABLE_CELL_WIDTH ||
|
|
122
|
+
nextAnchorChange < roosterjs_content_model_core_1.MIN_ALLOWED_TABLE_CELL_WIDTH) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
cmTable.widths[anchorColumn] = anchorChange;
|
|
126
|
+
cmTable.widths[anchorColumn + 1] = nextAnchorChange;
|
|
127
|
+
}
|
|
128
|
+
// Normalize the table
|
|
129
|
+
(0, roosterjs_content_model_core_1.normalizeTable)(cmTable);
|
|
130
|
+
// Writeback CM Table size changes to DOM Table
|
|
131
|
+
for (var row = 0; row < table.rows.length; row++) {
|
|
132
|
+
var tableRow = table.rows[row];
|
|
133
|
+
for (var col = 0; col < tableRow.cells.length; col++) {
|
|
134
|
+
tableRow.cells[col].style.width = cmTable.widths[col] + 'px';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function setHorizontalPosition(context, trigger) {
|
|
144
|
+
var td = context.td;
|
|
145
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
146
|
+
if (rect) {
|
|
147
|
+
trigger.id = 'horizontalResizer';
|
|
148
|
+
trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';
|
|
149
|
+
trigger.style.left = rect.left + 'px';
|
|
150
|
+
trigger.style.width = rect.right - rect.left + 'px';
|
|
151
|
+
trigger.style.height = CELL_RESIZER_WIDTH + 'px';
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function setVerticalPosition(context, trigger) {
|
|
155
|
+
var td = context.td, isRTL = context.isRTL;
|
|
156
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
157
|
+
if (rect) {
|
|
158
|
+
trigger.id = 'verticalResizer';
|
|
159
|
+
trigger.style.top = rect.top + 'px';
|
|
160
|
+
trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';
|
|
161
|
+
trigger.style.width = CELL_RESIZER_WIDTH + 'px';
|
|
162
|
+
trigger.style.height = rect.bottom - rect.top + 'px';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=CellResizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CellResizer.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { DragAndDropHelper } from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport { isElementOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport {\n getFirstSelectedTable,\n MIN_ALLOWED_TABLE_CELL_WIDTH,\n normalizeTable,\n} from 'roosterjs-content-model-core';\nimport type { DragAndDropHandler } from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { ContentModelTable, IEditor } from 'roosterjs-content-model-types';\nimport type { TableEditFeature } from './TableEditFeature';\n\nconst CELL_RESIZER_WIDTH = 4;\n\n/**\n * @internal\n */\nexport function createCellResizer(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onStart: () => void,\n onEnd: () => false,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const document = td.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${isHorizontal ? 'row' : 'col'}-resize; user-select: none`,\n };\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = { editor, td, table, isRTL, zoomScale, onStart };\n const setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;\n setPosition(context, div);\n\n const handler: DragAndDropHandler<DragAndDropContext, DragAndDropInitValue> = {\n onDragStart,\n // Horizontal modifies row height, vertical modifies column width\n onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,\n onDragEnd: onEnd,\n };\n\n const featureHandler = new DragAndDropHelper<DragAndDropContext, DragAndDropInitValue>(\n div,\n context,\n setPosition,\n handler,\n zoomScale,\n editor.getEnvironment().isMobileOrTablet\n );\n\n return { node: td, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n editor: IEditor;\n td: HTMLTableCellElement;\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n}\n\ninterface DragAndDropInitValue {\n cmTable: ContentModelTable | undefined;\n anchorColumn: number | undefined;\n anchorRow: number | undefined;\n anchorRowHeight: number;\n allWidths: number[];\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent): DragAndDropInitValue {\n const { td, onStart } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n\n // Get cell coordinates\n const columnIndex = td.cellIndex;\n const row =\n td.parentElement && isElementOfType(td.parentElement, 'tr') ? td.parentElement : undefined;\n const rowIndex = row?.rowIndex;\n\n if (rowIndex == undefined) {\n return {\n cmTable: undefined,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n\n const { editor, table } = context;\n\n // Get current selection\n const selection = editor.getDOMSelection();\n\n // Select first cell of the table\n editor.setDOMSelection({\n type: 'table',\n firstColumn: 0,\n firstRow: 0,\n lastColumn: 0,\n lastRow: 0,\n table: table,\n });\n\n // Get the table content model\n const cmTable = getFirstSelectedTable(editor.getContentModelCopy('disconnected'))[0];\n\n // Restore selection\n editor.setDOMSelection(selection);\n\n if (rect && cmTable) {\n onStart();\n\n return {\n cmTable,\n anchorColumn: columnIndex,\n anchorRow: rowIndex,\n anchorRowHeight: cmTable.rows[rowIndex].height,\n allWidths: [...cmTable.widths],\n };\n } else {\n return {\n cmTable,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n}\n\nfunction onDraggingHorizontal(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { table } = context;\n const { cmTable, anchorRow, anchorRowHeight } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorRow != undefined) {\n // Modify the CM Table size\n cmTable.rows[anchorRow].height = (anchorRowHeight ?? 0) + deltaY;\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n const tableRow = table.rows[anchorRow];\n for (let col = 0; col < tableRow.cells.length; col++) {\n const td = tableRow.cells[col];\n td.style.height = cmTable.rows[anchorRow].height + 'px';\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDraggingVertical(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number\n) {\n const { table, isRTL } = context;\n const { cmTable, anchorColumn, allWidths } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorColumn != undefined) {\n // Modify the CM Table size\n const lastColumn = anchorColumn == cmTable.widths.length - 1;\n const change = deltaX * (isRTL ? -1 : 1);\n // This is the last column\n if (lastColumn) {\n // Only the last column changes\n cmTable.widths[anchorColumn] = allWidths[anchorColumn] + change;\n } else {\n // Any other two columns\n const anchorChange = allWidths[anchorColumn] + change;\n const nextAnchorChange = allWidths[anchorColumn + 1] - change;\n if (\n anchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH ||\n nextAnchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH\n ) {\n return false;\n }\n cmTable.widths[anchorColumn] = anchorChange;\n cmTable.widths[anchorColumn + 1] = nextAnchorChange;\n }\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n for (let col = 0; col < tableRow.cells.length; col++) {\n tableRow.cells[col].style.width = cmTable.widths[col] + 'px';\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction setHorizontalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'horizontalResizer';\n trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';\n trigger.style.left = rect.left + 'px';\n trigger.style.width = rect.right - rect.left + 'px';\n trigger.style.height = CELL_RESIZER_WIDTH + 'px';\n }\n}\n\nfunction setVerticalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td, isRTL } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'verticalResizer';\n trigger.style.top = rect.top + 'px';\n trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';\n trigger.style.width = CELL_RESIZER_WIDTH + 'px';\n trigger.style.height = rect.bottom - rect.top + 'px';\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Disposable } from '../../../pluginUtils/Disposable';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export interface TableEditFeature {
|
|
6
|
+
node: Node;
|
|
7
|
+
div: HTMLDivElement | null;
|
|
8
|
+
featureHandler: Disposable | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function disposeTableEditFeature(resizer: TableEditFeature | null): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
define(["require", "exports"], function (require, exports) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.disposeTableEditFeature = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
function disposeTableEditFeature(resizer) {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
if (resizer) {
|
|
11
|
+
(_b = (_a = resizer.div) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(resizer.div);
|
|
12
|
+
resizer.div = null;
|
|
13
|
+
(_c = resizer.featureHandler) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
14
|
+
resizer.featureHandler = null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.disposeTableEditFeature = disposeTableEditFeature;
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=TableEditFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableEditFeature.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts"],"names":[],"mappings":";;;;IAWA;;OAEG;IACH,SAAgB,uBAAuB,CAAC,OAAgC;;QACpE,IAAI,OAAO,EAAE;YACT,MAAA,MAAA,OAAO,CAAC,GAAG,0CAAE,UAAU,0CAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YACnB,MAAA,OAAO,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;SACjC;IACL,CAAC;IAPD,0DAOC","sourcesContent":["import type { Disposable } from '../../../pluginUtils/Disposable';\n\n/**\n * @internal\n */\nexport interface TableEditFeature {\n node: Node;\n div: HTMLDivElement | null;\n featureHandler: Disposable | null;\n}\n\n/**\n * @internal\n */\nexport function disposeTableEditFeature(resizer: TableEditFeature | null) {\n if (resizer) {\n resizer.div?.parentNode?.removeChild(resizer.div);\n resizer.div = null;\n resizer.featureHandler?.dispose();\n resizer.featureHandler = null;\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TableEditFeature } from './TableEditFeature';
|
|
2
|
+
import type { IEditor } from 'roosterjs-content-model-types';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function createTableInserter(editor: IEditor, td: HTMLTableCellElement, table: HTMLTableElement, isRTL: boolean, isHorizontal: boolean, onInsert: () => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, anchorContainer?: HTMLElement): TableEditFeature | null;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
define(["require", "exports", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/Rect/getIntersectedRect", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, createElement_1, getIntersectedRect_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createTableInserter = void 0;
|
|
5
|
+
var INSERTER_COLOR = '#4A4A4A';
|
|
6
|
+
var INSERTER_COLOR_DARK_MODE = 'white';
|
|
7
|
+
var INSERTER_SIDE_LENGTH = 12;
|
|
8
|
+
var INSERTER_BORDER_SIZE = 1;
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
function createTableInserter(editor, td, table, isRTL, isHorizontal, onInsert, getOnMouseOut, anchorContainer) {
|
|
13
|
+
var tdRect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
14
|
+
var viewPort = editor.getVisibleViewport();
|
|
15
|
+
var tableRect = table && viewPort ? (0, getIntersectedRect_1.getIntersectedRect)([table], [viewPort]) : null;
|
|
16
|
+
// set inserter position
|
|
17
|
+
if (tdRect && tableRect) {
|
|
18
|
+
var document_1 = td.ownerDocument;
|
|
19
|
+
var createElementData = getInsertElementData(isHorizontal, editor.isDarkMode(), isRTL, editor.getDOMHelper().getDomStyle('backgroundColor') || 'white');
|
|
20
|
+
var div = (0, createElement_1.createElement)(createElementData, document_1);
|
|
21
|
+
if (isHorizontal) {
|
|
22
|
+
// tableRect.left/right is used because the Inserter is always intended to be on the side
|
|
23
|
+
div.id = 'horizontalInserter';
|
|
24
|
+
div.style.left = (isRTL
|
|
25
|
+
? tableRect.right
|
|
26
|
+
: tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)) + "px";
|
|
27
|
+
div.style.top = tdRect.bottom - 8 + "px";
|
|
28
|
+
div.firstChild.style.width = tableRect.right - tableRect.left + "px";
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
div.id = 'verticalInserter';
|
|
32
|
+
div.style.left = (isRTL ? tdRect.left - 8 : tdRect.right - 8) + "px";
|
|
33
|
+
// tableRect.top is used because the Inserter is always intended to be on top
|
|
34
|
+
div.style.top = tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE) + "px";
|
|
35
|
+
div.firstChild.style.height = tableRect.bottom - tableRect.top + "px";
|
|
36
|
+
}
|
|
37
|
+
(anchorContainer || document_1.body).appendChild(div);
|
|
38
|
+
var handler = new TableInsertHandler(div, td, table, isHorizontal, editor, onInsert, getOnMouseOut);
|
|
39
|
+
return { div: div, featureHandler: handler, node: td };
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
exports.createTableInserter = createTableInserter;
|
|
44
|
+
var TableInsertHandler = /** @class */ (function () {
|
|
45
|
+
function TableInsertHandler(div, td, table, isHorizontal, editor, onInsert, getOnMouseOut) {
|
|
46
|
+
var _this = this;
|
|
47
|
+
this.div = div;
|
|
48
|
+
this.td = td;
|
|
49
|
+
this.table = table;
|
|
50
|
+
this.isHorizontal = isHorizontal;
|
|
51
|
+
this.editor = editor;
|
|
52
|
+
this.onInsert = onInsert;
|
|
53
|
+
this.insertTd = function () {
|
|
54
|
+
// Get cell coordinates
|
|
55
|
+
var columnIndex = _this.td.cellIndex;
|
|
56
|
+
var row = _this.td.parentElement && (0, roosterjs_content_model_dom_1.isElementOfType)(_this.td.parentElement, 'tr')
|
|
57
|
+
? _this.td.parentElement
|
|
58
|
+
: undefined;
|
|
59
|
+
var rowIndex = row && row.rowIndex;
|
|
60
|
+
if ((row === null || row === void 0 ? void 0 : row.cells) == undefined || rowIndex == undefined) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Insert row or column
|
|
64
|
+
(0, roosterjs_content_model_api_1.formatTableWithContentModel)(_this.editor, 'editTablePlugin', function (tableModel) {
|
|
65
|
+
_this.isHorizontal
|
|
66
|
+
? (0, roosterjs_content_model_api_1.insertTableRow)(tableModel, 'insertBelow')
|
|
67
|
+
: (0, roosterjs_content_model_api_1.insertTableColumn)(tableModel, 'insertRight');
|
|
68
|
+
}, // Select cell to make insertion
|
|
69
|
+
{
|
|
70
|
+
type: 'table',
|
|
71
|
+
firstColumn: columnIndex,
|
|
72
|
+
firstRow: rowIndex,
|
|
73
|
+
lastColumn: columnIndex,
|
|
74
|
+
lastRow: rowIndex,
|
|
75
|
+
table: _this.table,
|
|
76
|
+
});
|
|
77
|
+
_this.onInsert();
|
|
78
|
+
};
|
|
79
|
+
this.div.addEventListener('click', this.insertTd);
|
|
80
|
+
this.onMouseOutEvent = getOnMouseOut(div);
|
|
81
|
+
this.div.addEventListener('mouseout', this.onMouseOutEvent);
|
|
82
|
+
}
|
|
83
|
+
TableInsertHandler.prototype.dispose = function () {
|
|
84
|
+
this.div.removeEventListener('click', this.insertTd);
|
|
85
|
+
if (this.onMouseOutEvent) {
|
|
86
|
+
this.div.removeEventListener('mouseout', this.onMouseOutEvent);
|
|
87
|
+
}
|
|
88
|
+
this.onMouseOutEvent = null;
|
|
89
|
+
};
|
|
90
|
+
return TableInsertHandler;
|
|
91
|
+
}());
|
|
92
|
+
function getInsertElementData(isHorizontal, isDark, isRTL, backgroundColor) {
|
|
93
|
+
var inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;
|
|
94
|
+
var outerDivStyle = "position: fixed; width: " + INSERTER_SIDE_LENGTH + "px; height: " + INSERTER_SIDE_LENGTH + "px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid " + INSERTER_BORDER_SIZE + "px " + inserterColor + "; border-radius: 50%; background-color: " + backgroundColor;
|
|
95
|
+
var leftOrRight = isRTL ? 'right' : 'left';
|
|
96
|
+
var childBaseStyles = "position: absolute; box-sizing: border-box; background-color: " + backgroundColor + ";";
|
|
97
|
+
var childInfo = {
|
|
98
|
+
tag: 'div',
|
|
99
|
+
style: childBaseStyles +
|
|
100
|
+
(isHorizontal
|
|
101
|
+
? leftOrRight + ": 12px; top: 5px; height: 3px; border-top: 1px solid " + inserterColor + "; border-bottom: 1px solid " + inserterColor + "; border-right: 1px solid " + inserterColor + "; border-left: 0px;"
|
|
102
|
+
: "left: 5px; top: 12px; width: 3px; border-left: 1px solid " + inserterColor + "; border-right: 1px solid " + inserterColor + "; border-bottom: 1px solid " + inserterColor + "; border-top: 0px;"),
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
tag: 'div',
|
|
106
|
+
style: outerDivStyle,
|
|
107
|
+
children: [childInfo, '+'],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=TableInserter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableInserter.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { getIntersectedRect } from '../../../pluginUtils/Rect/getIntersectedRect';\nimport { isElementOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport {\n formatTableWithContentModel,\n insertTableColumn,\n insertTableRow,\n} from 'roosterjs-content-model-api';\nimport type { CreateElementData } from '../../../pluginUtils/CreateElement/CreateElementData';\nimport type { Disposable } from '../../../pluginUtils/Disposable';\nimport type { TableEditFeature } from './TableEditFeature';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\nconst INSERTER_COLOR = '#4A4A4A';\nconst INSERTER_COLOR_DARK_MODE = 'white';\nconst INSERTER_SIDE_LENGTH = 12;\nconst INSERTER_BORDER_SIZE = 1;\n\n/**\n * @internal\n */\nexport function createTableInserter(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const tdRect = normalizeRect(td.getBoundingClientRect());\n const viewPort = editor.getVisibleViewport();\n const tableRect = table && viewPort ? getIntersectedRect([table], [viewPort]) : null;\n\n // set inserter position\n if (tdRect && tableRect) {\n const document = td.ownerDocument;\n const createElementData = getInsertElementData(\n isHorizontal,\n editor.isDarkMode(),\n isRTL,\n editor.getDOMHelper().getDomStyle('backgroundColor') || 'white'\n );\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n if (isHorizontal) {\n // tableRect.left/right is used because the Inserter is always intended to be on the side\n div.id = 'horizontalInserter';\n div.style.left = `${\n isRTL\n ? tableRect.right\n : tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n div.style.top = `${tdRect.bottom - 8}px`;\n (div.firstChild as HTMLElement).style.width = `${tableRect.right - tableRect.left}px`;\n } else {\n div.id = 'verticalInserter';\n div.style.left = `${isRTL ? tdRect.left - 8 : tdRect.right - 8}px`;\n // tableRect.top is used because the Inserter is always intended to be on top\n div.style.top = `${\n tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n (div.firstChild as HTMLElement).style.height = `${tableRect.bottom - tableRect.top}px`;\n }\n\n (anchorContainer || document.body).appendChild(div);\n\n const handler = new TableInsertHandler(\n div,\n td,\n table,\n isHorizontal,\n editor,\n onInsert,\n getOnMouseOut\n );\n\n return { div, featureHandler: handler, node: td };\n }\n\n return null;\n}\n\nclass TableInsertHandler implements Disposable {\n private onMouseOutEvent: null | ((ev: MouseEvent) => void);\n constructor(\n private div: HTMLDivElement,\n private td: HTMLTableCellElement,\n private table: HTMLTableElement,\n private isHorizontal: boolean,\n private editor: IEditor,\n private onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void\n ) {\n this.div.addEventListener('click', this.insertTd);\n this.onMouseOutEvent = getOnMouseOut(div);\n this.div.addEventListener('mouseout', this.onMouseOutEvent);\n }\n\n dispose() {\n this.div.removeEventListener('click', this.insertTd);\n\n if (this.onMouseOutEvent) {\n this.div.removeEventListener('mouseout', this.onMouseOutEvent);\n }\n\n this.onMouseOutEvent = null;\n }\n\n private insertTd = () => {\n // Get cell coordinates\n const columnIndex = this.td.cellIndex;\n const row =\n this.td.parentElement && isElementOfType(this.td.parentElement, 'tr')\n ? this.td.parentElement\n : undefined;\n const rowIndex = row && row.rowIndex;\n\n if (row?.cells == undefined || rowIndex == undefined) {\n return;\n }\n\n // Insert row or column\n formatTableWithContentModel(\n this.editor,\n 'editTablePlugin',\n tableModel => {\n this.isHorizontal\n ? insertTableRow(tableModel, 'insertBelow')\n : insertTableColumn(tableModel, 'insertRight');\n }, // Select cell to make insertion\n {\n type: 'table',\n firstColumn: columnIndex,\n firstRow: rowIndex,\n lastColumn: columnIndex,\n lastRow: rowIndex,\n table: this.table,\n }\n );\n\n this.onInsert();\n };\n}\n\nfunction getInsertElementData(\n isHorizontal: boolean,\n isDark: boolean,\n isRTL: boolean,\n backgroundColor: string\n): CreateElementData {\n const inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;\n const outerDivStyle = `position: fixed; width: ${INSERTER_SIDE_LENGTH}px; height: ${INSERTER_SIDE_LENGTH}px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid ${INSERTER_BORDER_SIZE}px ${inserterColor}; border-radius: 50%; background-color: ${backgroundColor}`;\n const leftOrRight = isRTL ? 'right' : 'left';\n const childBaseStyles = `position: absolute; box-sizing: border-box; background-color: ${backgroundColor};`;\n const childInfo: CreateElementData = {\n tag: 'div',\n style:\n childBaseStyles +\n (isHorizontal\n ? `${leftOrRight}: 12px; top: 5px; height: 3px; border-top: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-left: 0px;`\n : `left: 5px; top: 12px; width: 3px; border-left: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-top: 0px;`),\n };\n\n return {\n tag: 'div',\n style: outerDivStyle,\n children: [childInfo, '+'],\n };\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IEditor } from 'roosterjs-content-model-types';
|
|
2
|
+
import type { TableEditFeature } from './TableEditFeature';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
* Contains the function to select whole table
|
|
6
|
+
* Moving behavior not implemented yet
|
|
7
|
+
*/
|
|
8
|
+
export declare function createTableMover(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onFinishDragging: (table: HTMLTableElement) => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditFeature | null;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "roosterjs-content-model-dom"], function (require, exports, tslib_1, createElement_1, DragAndDropHelper_1, roosterjs_content_model_dom_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createTableMover = void 0;
|
|
5
|
+
var TABLE_MOVER_LENGTH = 12;
|
|
6
|
+
var TABLE_MOVER_ID = '_Table_Mover';
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
* Contains the function to select whole table
|
|
10
|
+
* Moving behavior not implemented yet
|
|
11
|
+
*/
|
|
12
|
+
function createTableMover(table, editor, isRTL, onFinishDragging, getOnMouseOut, contentDiv, anchorContainer) {
|
|
13
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(table.getBoundingClientRect());
|
|
14
|
+
if (!isTableTopVisible(editor, rect, contentDiv)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
var zoomScale = editor.getDOMHelper().calculateZoomScale();
|
|
18
|
+
var document = table.ownerDocument;
|
|
19
|
+
var createElementData = {
|
|
20
|
+
tag: 'div',
|
|
21
|
+
style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',
|
|
22
|
+
};
|
|
23
|
+
var div = (0, createElement_1.createElement)(createElementData, document);
|
|
24
|
+
div.id = TABLE_MOVER_ID;
|
|
25
|
+
div.style.width = TABLE_MOVER_LENGTH + "px";
|
|
26
|
+
div.style.height = TABLE_MOVER_LENGTH + "px";
|
|
27
|
+
(anchorContainer || document.body).appendChild(div);
|
|
28
|
+
var context = {
|
|
29
|
+
table: table,
|
|
30
|
+
zoomScale: zoomScale,
|
|
31
|
+
rect: rect,
|
|
32
|
+
isRTL: isRTL,
|
|
33
|
+
};
|
|
34
|
+
setDivPosition(context, div);
|
|
35
|
+
var onDragEnd = function (context, event) {
|
|
36
|
+
if (event.target == div) {
|
|
37
|
+
onFinishDragging(context.table);
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
};
|
|
41
|
+
var featureHandler = new TableMoverFeature(div, context, setDivPosition, {
|
|
42
|
+
onDragEnd: onDragEnd,
|
|
43
|
+
}, context.zoomScale, getOnMouseOut);
|
|
44
|
+
return { div: div, featureHandler: featureHandler, node: table };
|
|
45
|
+
}
|
|
46
|
+
exports.createTableMover = createTableMover;
|
|
47
|
+
var TableMoverFeature = /** @class */ (function (_super) {
|
|
48
|
+
(0, tslib_1.__extends)(TableMoverFeature, _super);
|
|
49
|
+
function TableMoverFeature(div, context, onSubmit, handler, zoomScale, getOnMouseOut, forceMobile, container) {
|
|
50
|
+
var _this = _super.call(this, div, context, onSubmit, handler, zoomScale, forceMobile) || this;
|
|
51
|
+
_this.div = div;
|
|
52
|
+
_this.onMouseOut = getOnMouseOut(div);
|
|
53
|
+
div.addEventListener('mouseout', _this.onMouseOut);
|
|
54
|
+
return _this;
|
|
55
|
+
}
|
|
56
|
+
TableMoverFeature.prototype.dispose = function () {
|
|
57
|
+
_super.prototype.dispose.call(this);
|
|
58
|
+
if (this.onMouseOut) {
|
|
59
|
+
this.div.removeEventListener('mouseout', this.onMouseOut);
|
|
60
|
+
}
|
|
61
|
+
this.onMouseOut = null;
|
|
62
|
+
};
|
|
63
|
+
return TableMoverFeature;
|
|
64
|
+
}(DragAndDropHelper_1.DragAndDropHelper));
|
|
65
|
+
function setDivPosition(context, trigger) {
|
|
66
|
+
var rect = context.rect;
|
|
67
|
+
if (rect) {
|
|
68
|
+
trigger.style.top = rect.top - TABLE_MOVER_LENGTH + "px";
|
|
69
|
+
trigger.style.left = rect.left - TABLE_MOVER_LENGTH - 2 + "px";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function isTableTopVisible(editor, rect, contentDiv) {
|
|
73
|
+
var visibleViewport = editor.getVisibleViewport();
|
|
74
|
+
if ((0, roosterjs_content_model_dom_1.isNodeOfType)(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {
|
|
75
|
+
var containerRect = (0, roosterjs_content_model_dom_1.normalizeRect)(contentDiv.getBoundingClientRect());
|
|
76
|
+
return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=TableMover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableMover.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { DragAndDropHelper } from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport type { DragAndDropHandler } from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { IEditor, Rect } from 'roosterjs-content-model-types';\nimport type { TableEditFeature } from './TableEditFeature';\n\nconst TABLE_MOVER_LENGTH = 12;\nconst TABLE_MOVER_ID = '_Table_Mover';\n\n/**\n * @internal\n * Contains the function to select whole table\n * Moving behavior not implemented yet\n */\nexport function createTableMover(\n table: HTMLTableElement,\n editor: IEditor,\n isRTL: boolean,\n onFinishDragging: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableTopVisible(editor, rect, contentDiv as Node)) {\n return null;\n }\n\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n const document = table.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n };\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_MOVER_ID;\n div.style.width = `${TABLE_MOVER_LENGTH}px`;\n div.style.height = `${TABLE_MOVER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: TableMoverContext = {\n table,\n zoomScale,\n rect,\n isRTL,\n };\n\n setDivPosition(context, div);\n\n const onDragEnd = (context: TableMoverContext, event: MouseEvent): false => {\n if (event.target == div) {\n onFinishDragging(context.table);\n }\n return false;\n };\n\n const featureHandler = new TableMoverFeature(\n div,\n context,\n setDivPosition,\n {\n onDragEnd,\n },\n context.zoomScale,\n getOnMouseOut\n );\n\n return { div, featureHandler, node: table };\n}\n\ninterface TableMoverContext {\n table: HTMLTableElement;\n zoomScale: number;\n rect: Rect | null;\n isRTL: boolean;\n}\n\ninterface TableMoverInitValue {\n event: MouseEvent;\n}\n\nclass TableMoverFeature extends DragAndDropHelper<TableMoverContext, TableMoverInitValue> {\n private onMouseOut: ((ev: MouseEvent) => void) | null;\n\n constructor(\n private div: HTMLElement,\n context: TableMoverContext,\n onSubmit: (\n context: TableMoverContext,\n trigger: HTMLElement,\n container?: HTMLElement\n ) => void,\n handler: DragAndDropHandler<TableMoverContext, TableMoverInitValue>,\n zoomScale: number,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n forceMobile?: boolean | undefined,\n container?: HTMLElement\n ) {\n super(div, context, onSubmit, handler, zoomScale, forceMobile);\n this.onMouseOut = getOnMouseOut(div);\n div.addEventListener('mouseout', this.onMouseOut);\n }\n\n dispose(): void {\n super.dispose();\n if (this.onMouseOut) {\n this.div.removeEventListener('mouseout', this.onMouseOut);\n }\n this.onMouseOut = null;\n }\n}\n\nfunction setDivPosition(context: TableMoverContext, trigger: HTMLElement) {\n const { rect } = context;\n if (rect) {\n trigger.style.top = `${rect.top - TABLE_MOVER_LENGTH}px`;\n trigger.style.left = `${rect.left - TABLE_MOVER_LENGTH - 2}px`;\n }\n}\n\nfunction isTableTopVisible(editor: IEditor, rect: Rect | null, contentDiv?: Node | null): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (isNodeOfType(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;\n }\n\n return true;\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IEditor } from 'roosterjs-content-model-types';
|
|
2
|
+
import type { TableEditFeature } from './TableEditFeature';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function createTableResizer(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onStart: () => void, onEnd: () => false, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditFeature | null;
|