roosterjs-content-model-plugins 0.24.0 → 0.26.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 +53 -0
- package/lib/autoFormat/AutoFormatPlugin.js +81 -0
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -0
- package/lib/autoFormat/keyboardListTrigger.d.ts +5 -0
- package/lib/autoFormat/keyboardListTrigger.js +46 -0
- package/lib/autoFormat/keyboardListTrigger.js.map +1 -0
- package/lib/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
- package/lib/autoFormat/utils/convertAlphaToDecimals.js +23 -0
- package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
- package/lib/autoFormat/utils/getIndex.d.ts +4 -0
- package/lib/autoFormat/utils/getIndex.js +14 -0
- package/lib/autoFormat/utils/getIndex.js.map +1 -0
- package/lib/autoFormat/utils/getListTypeStyle.d.ts +14 -0
- package/lib/autoFormat/utils/getListTypeStyle.js +88 -0
- package/lib/autoFormat/utils/getListTypeStyle.js.map +1 -0
- package/lib/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
- package/lib/autoFormat/utils/getNumberingListStyle.js +154 -0
- package/lib/autoFormat/utils/getNumberingListStyle.js.map +1 -0
- package/{lib-mjs/edit/ContentModelEditPlugin.d.ts → lib/edit/EditPlugin.d.ts} +39 -35
- package/lib/edit/EditPlugin.js +129 -0
- package/lib/edit/EditPlugin.js.map +1 -0
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.js +22 -22
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js +93 -93
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib/edit/deleteSteps/deleteList.d.ts +5 -5
- package/lib/edit/deleteSteps/deleteList.js +23 -23
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
- package/lib/edit/deleteSteps/deleteWordSelection.js +173 -173
- package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib/edit/handleKeyboardEventCommon.d.ts +14 -14
- package/lib/edit/handleKeyboardEventCommon.js +54 -54
- package/lib/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.d.ts +5 -0
- package/lib/edit/inputSteps/handleEnterOnList.js +68 -0
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -0
- package/lib/edit/keyboardDelete.d.ts +9 -8
- package/lib/edit/keyboardDelete.js +71 -74
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardInput.d.ts +5 -5
- package/lib/edit/keyboardInput.js +58 -50
- package/lib/edit/keyboardInput.js.map +1 -1
- package/lib/edit/keyboardTab.d.ts +5 -0
- package/lib/edit/keyboardTab.js +35 -0
- package/lib/edit/keyboardTab.js.map +1 -0
- package/lib/edit/utils/getLeafSiblingBlock.d.ts +23 -23
- package/lib/edit/utils/getLeafSiblingBlock.js +75 -75
- package/lib/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +9 -9
- package/lib/index.js.map +1 -1
- package/lib/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
- package/lib/paste/Excel/processPastedContentFromExcel.js +82 -82
- package/lib/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/{lib-mjs/paste/ContentModelPastePlugin.d.ts → lib/paste/PastePlugin.d.ts} +43 -43
- package/lib/paste/{ContentModelPastePlugin.js → PastePlugin.js} +131 -132
- package/lib/paste/PastePlugin.js.map +1 -0
- package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
- package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js +19 -19
- package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib/paste/WacComponents/constants.d.ts +48 -48
- package/lib/paste/WacComponents/constants.js +62 -62
- package/lib/paste/WacComponents/constants.js.map +1 -1
- package/lib/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
- package/lib/paste/WacComponents/processPastedContentWacComponents.js +188 -188
- package/lib/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib/paste/WordDesktop/WordMetadata.d.ts +9 -9
- package/lib/paste/WordDesktop/WordMetadata.js +2 -2
- package/lib/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
- package/lib/paste/WordDesktop/getStyleMetadata.js +78 -78
- package/lib/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
- package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js +58 -58
- package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib/paste/WordDesktop/processWordComments.d.ts +7 -7
- package/lib/paste/WordDesktop/processWordComments.js +21 -21
- package/lib/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib/paste/WordDesktop/processWordLists.d.ts +11 -11
- package/lib/paste/WordDesktop/processWordLists.js +179 -179
- package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
- package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js +13 -13
- package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib/paste/pasteSourceValidations/constants.d.ts +17 -17
- package/lib/paste/pasteSourceValidations/constants.js +20 -20
- package/lib/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/documentContainWacElements.js +15 -15
- package/lib/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
- package/lib/paste/pasteSourceValidations/getPasteSource.js +43 -43
- package/lib/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js +17 -17
- package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js +19 -19
- package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js +15 -15
- package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +15 -15
- package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
- package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js +19 -19
- package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
- package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js +18 -18
- package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib/paste/utils/addParser.d.ts +5 -5
- package/lib/paste/utils/addParser.js +16 -16
- package/lib/paste/utils/addParser.js.map +1 -1
- package/lib/paste/utils/deprecatedColorParser.d.ts +5 -5
- package/lib/paste/utils/deprecatedColorParser.js +19 -19
- package/lib/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib/paste/utils/getStyles.d.ts +6 -6
- package/lib/paste/utils/getStyles.js +22 -22
- package/lib/paste/utils/getStyles.js.map +1 -1
- package/lib/paste/utils/linkParser.d.ts +5 -5
- package/lib/paste/utils/linkParser.js +27 -27
- package/lib/paste/utils/linkParser.js.map +1 -1
- package/lib/paste/utils/setProcessor.d.ts +5 -5
- package/lib/paste/utils/setProcessor.js +13 -13
- package/lib/paste/utils/setProcessor.js.map +1 -1
- package/lib/pluginUtils/CreateElement/CreateElementData.d.ts +35 -0
- package/lib/pluginUtils/CreateElement/CreateElementData.js +3 -0
- package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
- package/lib/pluginUtils/CreateElement/createElement.d.ts +9 -0
- package/lib/pluginUtils/CreateElement/createElement.js +51 -0
- package/lib/pluginUtils/CreateElement/createElement.js.map +1 -0
- package/lib/pluginUtils/Disposable.d.ts +10 -0
- package/lib/pluginUtils/Disposable.js +3 -0
- package/lib/pluginUtils/Disposable.js.map +1 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js +3 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +120 -0
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
- package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
- package/lib/pluginUtils/Rect/getIntersectedRect.js +45 -0
- package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
- package/lib/pluginUtils/Rect/normalizeRect.d.ts +7 -0
- package/lib/pluginUtils/Rect/normalizeRect.js +20 -0
- package/lib/pluginUtils/Rect/normalizeRect.js.map +1 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +53 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.js +82 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -0
- package/lib-amd/autoFormat/keyboardListTrigger.d.ts +5 -0
- package/lib-amd/autoFormat/keyboardListTrigger.js +44 -0
- package/lib-amd/autoFormat/keyboardListTrigger.js.map +1 -0
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js +25 -0
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
- package/lib-amd/autoFormat/utils/getIndex.d.ts +4 -0
- package/lib-amd/autoFormat/utils/getIndex.js +15 -0
- package/lib-amd/autoFormat/utils/getIndex.js.map +1 -0
- package/lib-amd/autoFormat/utils/getListTypeStyle.d.ts +14 -0
- package/lib-amd/autoFormat/utils/getListTypeStyle.js +87 -0
- package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +1 -0
- package/lib-amd/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
- package/lib-amd/autoFormat/utils/getNumberingListStyle.js +154 -0
- package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +1 -0
- package/lib-amd/edit/{ContentModelEditPlugin.d.ts → EditPlugin.d.ts} +39 -35
- package/lib-amd/edit/EditPlugin.js +128 -0
- package/lib-amd/edit/EditPlugin.js.map +1 -0
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js +23 -23
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +92 -92
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteList.d.ts +5 -5
- package/lib-amd/edit/deleteSteps/deleteList.js +24 -24
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
- package/lib-amd/edit/deleteSteps/deleteWordSelection.js +172 -172
- package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-amd/edit/handleKeyboardEventCommon.d.ts +14 -14
- package/lib-amd/edit/handleKeyboardEventCommon.js +55 -55
- package/lib-amd/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.d.ts +5 -0
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +67 -0
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -0
- package/lib-amd/edit/keyboardDelete.d.ts +9 -8
- package/lib-amd/edit/keyboardDelete.js +66 -69
- package/lib-amd/edit/keyboardDelete.js.map +1 -1
- package/lib-amd/edit/keyboardInput.d.ts +5 -5
- package/lib-amd/edit/keyboardInput.js +57 -50
- package/lib-amd/edit/keyboardInput.js.map +1 -1
- package/lib-amd/edit/keyboardTab.d.ts +5 -0
- package/lib-amd/edit/keyboardTab.js +35 -0
- package/lib-amd/edit/keyboardTab.js.map +1 -0
- package/lib-amd/edit/utils/getLeafSiblingBlock.d.ts +23 -23
- package/lib-amd/edit/utils/getLeafSiblingBlock.js +75 -75
- package/lib-amd/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib-amd/index.d.ts +3 -3
- package/lib-amd/index.js +8 -8
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
- package/lib-amd/paste/Excel/processPastedContentFromExcel.js +80 -80
- package/lib-amd/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/{lib/paste/ContentModelPastePlugin.d.ts → lib-amd/paste/PastePlugin.d.ts} +43 -43
- package/lib-amd/paste/{ContentModelPastePlugin.js → PastePlugin.js} +123 -124
- package/lib-amd/paste/PastePlugin.js.map +1 -0
- package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
- package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js +20 -20
- package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib-amd/paste/WacComponents/constants.d.ts +48 -48
- package/lib-amd/paste/WacComponents/constants.js +63 -63
- package/lib-amd/paste/WacComponents/constants.js.map +1 -1
- package/lib-amd/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
- package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js +185 -185
- package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib-amd/paste/WordDesktop/WordMetadata.d.ts +9 -9
- package/lib-amd/paste/WordDesktop/WordMetadata.js +4 -4
- package/lib-amd/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib-amd/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
- package/lib-amd/paste/WordDesktop/getStyleMetadata.js +78 -78
- package/lib-amd/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
- package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js +53 -53
- package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processWordComments.d.ts +7 -7
- package/lib-amd/paste/WordDesktop/processWordComments.js +22 -22
- package/lib-amd/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib-amd/paste/WordDesktop/processWordLists.d.ts +11 -11
- package/lib-amd/paste/WordDesktop/processWordLists.js +177 -177
- package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
- package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js +15 -15
- package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/constants.d.ts +17 -17
- package/lib-amd/paste/pasteSourceValidations/constants.js +22 -22
- package/lib-amd/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js +16 -16
- package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
- package/lib-amd/paste/pasteSourceValidations/getPasteSource.js +38 -38
- package/lib-amd/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js +18 -18
- package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js +20 -20
- package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js +16 -16
- package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +16 -16
- package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
- package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js +20 -20
- package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
- package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js +20 -20
- package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib-amd/paste/utils/addParser.d.ts +5 -5
- package/lib-amd/paste/utils/addParser.js +18 -18
- package/lib-amd/paste/utils/addParser.js.map +1 -1
- package/lib-amd/paste/utils/deprecatedColorParser.d.ts +5 -5
- package/lib-amd/paste/utils/deprecatedColorParser.js +20 -20
- package/lib-amd/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib-amd/paste/utils/getStyles.d.ts +6 -6
- package/lib-amd/paste/utils/getStyles.js +24 -24
- package/lib-amd/paste/utils/getStyles.js.map +1 -1
- package/lib-amd/paste/utils/linkParser.d.ts +5 -5
- package/lib-amd/paste/utils/linkParser.js +28 -28
- package/lib-amd/paste/utils/linkParser.js.map +1 -1
- package/lib-amd/paste/utils/setProcessor.d.ts +5 -5
- package/lib-amd/paste/utils/setProcessor.js +15 -15
- package/lib-amd/paste/utils/setProcessor.js.map +1 -1
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.d.ts +35 -0
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.js +5 -0
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
- package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +9 -0
- package/lib-amd/pluginUtils/CreateElement/createElement.js +52 -0
- package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -0
- package/lib-amd/pluginUtils/Disposable.d.ts +10 -0
- package/lib-amd/pluginUtils/Disposable.js +5 -0
- package/lib-amd/pluginUtils/Disposable.js.map +1 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js +5 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +121 -0
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +45 -0
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
- package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +7 -0
- package/lib-amd/pluginUtils/Rect/normalizeRect.js +22 -0
- package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +1 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +53 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +78 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -0
- package/lib-mjs/autoFormat/keyboardListTrigger.d.ts +5 -0
- package/lib-mjs/autoFormat/keyboardListTrigger.js +42 -0
- package/lib-mjs/autoFormat/keyboardListTrigger.js.map +1 -0
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js +19 -0
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
- package/lib-mjs/autoFormat/utils/getIndex.d.ts +4 -0
- package/lib-mjs/autoFormat/utils/getIndex.js +10 -0
- package/lib-mjs/autoFormat/utils/getIndex.js.map +1 -0
- package/lib-mjs/autoFormat/utils/getListTypeStyle.d.ts +14 -0
- package/lib-mjs/autoFormat/utils/getListTypeStyle.js +84 -0
- package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +1 -0
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.js +150 -0
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +1 -0
- package/{lib/edit/ContentModelEditPlugin.d.ts → lib-mjs/edit/EditPlugin.d.ts} +39 -35
- package/lib-mjs/edit/EditPlugin.js +126 -0
- package/lib-mjs/edit/EditPlugin.js.map +1 -0
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js +18 -18
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +90 -90
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteList.d.ts +5 -5
- package/lib-mjs/edit/deleteSteps/deleteList.js +19 -19
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.js +170 -170
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-mjs/edit/handleKeyboardEventCommon.d.ts +14 -14
- package/lib-mjs/edit/handleKeyboardEventCommon.js +48 -48
- package/lib-mjs/edit/handleKeyboardEventCommon.js.map +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.d.ts +5 -0
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +64 -0
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -0
- package/lib-mjs/edit/keyboardDelete.d.ts +9 -8
- package/lib-mjs/edit/keyboardDelete.js +67 -70
- package/lib-mjs/edit/keyboardDelete.js.map +1 -1
- package/lib-mjs/edit/keyboardInput.d.ts +5 -5
- package/lib-mjs/edit/keyboardInput.js +54 -46
- package/lib-mjs/edit/keyboardInput.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.d.ts +5 -0
- package/lib-mjs/edit/keyboardTab.js +31 -0
- package/lib-mjs/edit/keyboardTab.js.map +1 -0
- package/lib-mjs/edit/utils/getLeafSiblingBlock.d.ts +23 -23
- package/lib-mjs/edit/utils/getLeafSiblingBlock.js +71 -71
- package/lib-mjs/edit/utils/getLeafSiblingBlock.js.map +1 -1
- package/lib-mjs/index.d.ts +3 -3
- package/lib-mjs/index.js +3 -3
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
- package/lib-mjs/paste/Excel/processPastedContentFromExcel.js +77 -77
- package/lib-mjs/paste/Excel/processPastedContentFromExcel.js.map +1 -1
- package/{lib-amd/paste/ContentModelPastePlugin.d.ts → lib-mjs/paste/PastePlugin.d.ts} +43 -43
- package/lib-mjs/paste/{ContentModelPastePlugin.js → PastePlugin.js} +128 -129
- package/lib-mjs/paste/PastePlugin.js.map +1 -0
- package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
- package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js +15 -15
- package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
- package/lib-mjs/paste/WacComponents/constants.d.ts +48 -48
- package/lib-mjs/paste/WacComponents/constants.js +59 -59
- package/lib-mjs/paste/WacComponents/constants.js.map +1 -1
- package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
- package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js +184 -184
- package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/WordMetadata.d.ts +9 -9
- package/lib-mjs/paste/WordDesktop/WordMetadata.js +1 -1
- package/lib-mjs/paste/WordDesktop/WordMetadata.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.js +75 -75
- package/lib-mjs/paste/WordDesktop/getStyleMetadata.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
- package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js +54 -54
- package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processWordComments.d.ts +7 -7
- package/lib-mjs/paste/WordDesktop/processWordComments.js +17 -17
- package/lib-mjs/paste/WordDesktop/processWordComments.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/processWordLists.d.ts +11 -11
- package/lib-mjs/paste/WordDesktop/processWordLists.js +175 -175
- package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
- package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js +9 -9
- package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/constants.d.ts +17 -17
- package/lib-mjs/paste/pasteSourceValidations/constants.js +17 -17
- package/lib-mjs/paste/pasteSourceValidations/constants.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js +11 -11
- package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
- package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js +39 -39
- package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js +13 -13
- package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js +15 -15
- package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js +11 -11
- package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +11 -11
- package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
- package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js +15 -15
- package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
- package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
- package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js +14 -14
- package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
- package/lib-mjs/paste/utils/addParser.d.ts +5 -5
- package/lib-mjs/paste/utils/addParser.js +13 -13
- package/lib-mjs/paste/utils/addParser.js.map +1 -1
- package/lib-mjs/paste/utils/deprecatedColorParser.d.ts +5 -5
- package/lib-mjs/paste/utils/deprecatedColorParser.js +15 -15
- package/lib-mjs/paste/utils/deprecatedColorParser.js.map +1 -1
- package/lib-mjs/paste/utils/getStyles.d.ts +6 -6
- package/lib-mjs/paste/utils/getStyles.js +18 -18
- package/lib-mjs/paste/utils/getStyles.js.map +1 -1
- package/lib-mjs/paste/utils/linkParser.d.ts +5 -5
- package/lib-mjs/paste/utils/linkParser.js +23 -23
- package/lib-mjs/paste/utils/linkParser.js.map +1 -1
- package/lib-mjs/paste/utils/setProcessor.d.ts +5 -5
- package/lib-mjs/paste/utils/setProcessor.js +9 -9
- package/lib-mjs/paste/utils/setProcessor.js.map +1 -1
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.d.ts +35 -0
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js +2 -0
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
- package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +9 -0
- package/lib-mjs/pluginUtils/CreateElement/createElement.js +48 -0
- package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -0
- package/lib-mjs/pluginUtils/Disposable.d.ts +10 -0
- package/lib-mjs/pluginUtils/Disposable.js +2 -0
- package/lib-mjs/pluginUtils/Disposable.js.map +1 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js +2 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +118 -0
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +42 -0
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
- package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +7 -0
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js +17 -0
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +1 -0
- package/package.json +5 -7
- package/lib/edit/ContentModelEditPlugin.js +0 -75
- package/lib/edit/ContentModelEditPlugin.js.map +0 -1
- package/lib/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
- package/lib/entityDelimiter/EntityDelimiterPlugin.js +0 -257
- package/lib/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
- package/lib/paste/ContentModelPastePlugin.js.map +0 -1
- package/lib-amd/edit/ContentModelEditPlugin.js +0 -75
- package/lib-amd/edit/ContentModelEditPlugin.js.map +0 -1
- package/lib-amd/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
- package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js +0 -256
- package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
- package/lib-amd/paste/ContentModelPastePlugin.js.map +0 -1
- package/lib-mjs/edit/ContentModelEditPlugin.js +0 -72
- package/lib-mjs/edit/ContentModelEditPlugin.js.map +0 -1
- package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
- package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js +0 -253
- package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
- package/lib-mjs/paste/ContentModelPastePlugin.js.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { EditorPlugin, IStandaloneEditor, PluginEvent } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* Options to customize the Content Model Auto Format Plugin
|
|
4
|
+
*/
|
|
5
|
+
export declare type AutoFormatOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true
|
|
8
|
+
*/
|
|
9
|
+
autoBullet: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true
|
|
12
|
+
*/
|
|
13
|
+
autoNumbering: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
|
|
17
|
+
* It can be customized with options to enable or disable auto list features.
|
|
18
|
+
*/
|
|
19
|
+
export declare class AutoFormatPlugin implements EditorPlugin {
|
|
20
|
+
private options;
|
|
21
|
+
private editor;
|
|
22
|
+
/**
|
|
23
|
+
* @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:
|
|
24
|
+
* - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.
|
|
25
|
+
* - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.
|
|
26
|
+
*/
|
|
27
|
+
constructor(options?: AutoFormatOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Get name of this plugin
|
|
30
|
+
*/
|
|
31
|
+
getName(): string;
|
|
32
|
+
/**
|
|
33
|
+
* The first method that editor will call to a plugin when editor is initializing.
|
|
34
|
+
* It will pass in the editor instance, plugin should take this chance to save the
|
|
35
|
+
* editor reference so that it can call to any editor method or format API later.
|
|
36
|
+
* @param editor The editor object
|
|
37
|
+
*/
|
|
38
|
+
initialize(editor: IStandaloneEditor): void;
|
|
39
|
+
/**
|
|
40
|
+
* The last method that editor will call to a plugin before it is disposed.
|
|
41
|
+
* Plugin can take this chance to clear the reference to editor. After this method is
|
|
42
|
+
* called, plugin should not call to any editor method since it will result in error.
|
|
43
|
+
*/
|
|
44
|
+
dispose(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Core method for a plugin. Once an event happens in editor, editor will call this
|
|
47
|
+
* method of each plugin to handle the event as long as the event is not handled
|
|
48
|
+
* exclusively by another plugin.
|
|
49
|
+
* @param event The event to handle:
|
|
50
|
+
*/
|
|
51
|
+
onPluginEvent(event: PluginEvent): void;
|
|
52
|
+
private handleKeyDownEvent;
|
|
53
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoFormatPlugin = void 0;
|
|
4
|
+
var keyboardListTrigger_1 = require("./keyboardListTrigger");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
var DefaultOptions = {
|
|
9
|
+
autoBullet: true,
|
|
10
|
+
autoNumbering: true,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
|
|
14
|
+
* It can be customized with options to enable or disable auto list features.
|
|
15
|
+
*/
|
|
16
|
+
var AutoFormatPlugin = /** @class */ (function () {
|
|
17
|
+
/**
|
|
18
|
+
* @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:
|
|
19
|
+
* - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.
|
|
20
|
+
* - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.
|
|
21
|
+
*/
|
|
22
|
+
function AutoFormatPlugin(options) {
|
|
23
|
+
if (options === void 0) { options = DefaultOptions; }
|
|
24
|
+
this.options = options;
|
|
25
|
+
this.editor = null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get name of this plugin
|
|
29
|
+
*/
|
|
30
|
+
AutoFormatPlugin.prototype.getName = function () {
|
|
31
|
+
return 'AutoFormat';
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The first method that editor will call to a plugin when editor is initializing.
|
|
35
|
+
* It will pass in the editor instance, plugin should take this chance to save the
|
|
36
|
+
* editor reference so that it can call to any editor method or format API later.
|
|
37
|
+
* @param editor The editor object
|
|
38
|
+
*/
|
|
39
|
+
AutoFormatPlugin.prototype.initialize = function (editor) {
|
|
40
|
+
this.editor = editor;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The last method that editor will call to a plugin before it is disposed.
|
|
44
|
+
* Plugin can take this chance to clear the reference to editor. After this method is
|
|
45
|
+
* called, plugin should not call to any editor method since it will result in error.
|
|
46
|
+
*/
|
|
47
|
+
AutoFormatPlugin.prototype.dispose = function () {
|
|
48
|
+
this.editor = null;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Core method for a plugin. Once an event happens in editor, editor will call this
|
|
52
|
+
* method of each plugin to handle the event as long as the event is not handled
|
|
53
|
+
* exclusively by another plugin.
|
|
54
|
+
* @param event The event to handle:
|
|
55
|
+
*/
|
|
56
|
+
AutoFormatPlugin.prototype.onPluginEvent = function (event) {
|
|
57
|
+
if (this.editor) {
|
|
58
|
+
switch (event.eventType) {
|
|
59
|
+
case 'keyDown':
|
|
60
|
+
this.handleKeyDownEvent(this.editor, event);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
AutoFormatPlugin.prototype.handleKeyDownEvent = function (editor, event) {
|
|
66
|
+
var rawEvent = event.rawEvent;
|
|
67
|
+
if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {
|
|
68
|
+
switch (rawEvent.key) {
|
|
69
|
+
case ' ':
|
|
70
|
+
var _a = this.options, autoBullet = _a.autoBullet, autoNumbering = _a.autoNumbering;
|
|
71
|
+
if (autoBullet || autoNumbering) {
|
|
72
|
+
(0, keyboardListTrigger_1.keyboardListTrigger)(editor, rawEvent, autoBullet, autoNumbering);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return AutoFormatPlugin;
|
|
79
|
+
}());
|
|
80
|
+
exports.AutoFormatPlugin = AutoFormatPlugin;
|
|
81
|
+
//# sourceMappingURL=AutoFormatPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAuB5D;;GAEG;AACH,IAAM,cAAc,GAAgC;IAChD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;CACtB,CAAC;AAEF;;;GAGG;AACH;IAGI;;;;OAIG;IACH,0BAAoB,OAA2C;QAA3C,wBAAA,EAAA,wBAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;QAPvD,WAAM,GAA6B,IAAI,CAAC;IAOkB,CAAC;IAEnE;;OAEG;IACH,kCAAO,GAAP;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,qCAAU,GAAV,UAAW,MAAyB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,kCAAO,GAAP;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,wCAAa,GAAb,UAAc,KAAkB;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,QAAQ,KAAK,CAAC,SAAS,EAAE;gBACrB,KAAK,SAAS;oBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5C,MAAM;aACb;SACJ;IACL,CAAC;IAEO,6CAAkB,GAA1B,UAA2B,MAAyB,EAAE,KAAmB;QACrE,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YAC3D,QAAQ,QAAQ,CAAC,GAAG,EAAE;gBAClB,KAAK,GAAG;oBACE,IAAA,KAAgC,IAAI,CAAC,OAAO,EAA1C,UAAU,gBAAA,EAAE,aAAa,mBAAiB,CAAC;oBACnD,IAAI,UAAU,IAAI,aAAa,EAAE;wBAC7B,IAAA,yCAAmB,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;qBACpE;oBACD,MAAM;aACb;SACJ;IACL,CAAC;IACL,uBAAC;AAAD,CAAC,AAjED,IAiEC;AAjEY,4CAAgB","sourcesContent":["import { keyboardListTrigger } from './keyboardListTrigger';\r\nimport type {\r\n EditorPlugin,\r\n IStandaloneEditor,\r\n KeyDownEvent,\r\n PluginEvent,\r\n} from 'roosterjs-content-model-types';\r\n\r\n/**\r\n * Options to customize the Content Model Auto Format Plugin\r\n */\r\nexport type AutoFormatOptions = {\r\n /**\r\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\r\n */\r\n autoBullet: boolean;\r\n\r\n /**\r\n * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true\r\n */\r\n autoNumbering: boolean;\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nconst DefaultOptions: Required<AutoFormatOptions> = {\r\n autoBullet: true,\r\n autoNumbering: true,\r\n};\r\n\r\n/**\r\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\r\n * It can be customized with options to enable or disable auto list features.\r\n */\r\nexport class AutoFormatPlugin implements EditorPlugin {\r\n private editor: IStandaloneEditor | null = null;\r\n\r\n /**\r\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\r\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.\r\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.\r\n */\r\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\r\n\r\n /**\r\n * Get name of this plugin\r\n */\r\n getName() {\r\n return 'AutoFormat';\r\n }\r\n\r\n /**\r\n * The first method that editor will call to a plugin when editor is initializing.\r\n * It will pass in the editor instance, plugin should take this chance to save the\r\n * editor reference so that it can call to any editor method or format API later.\r\n * @param editor The editor object\r\n */\r\n initialize(editor: IStandaloneEditor) {\r\n this.editor = editor;\r\n }\r\n\r\n /**\r\n * The last method that editor will call to a plugin before it is disposed.\r\n * Plugin can take this chance to clear the reference to editor. After this method is\r\n * called, plugin should not call to any editor method since it will result in error.\r\n */\r\n dispose() {\r\n this.editor = null;\r\n }\r\n\r\n /**\r\n * Core method for a plugin. Once an event happens in editor, editor will call this\r\n * method of each plugin to handle the event as long as the event is not handled\r\n * exclusively by another plugin.\r\n * @param event The event to handle:\r\n */\r\n onPluginEvent(event: PluginEvent) {\r\n if (this.editor) {\r\n switch (event.eventType) {\r\n case 'keyDown':\r\n this.handleKeyDownEvent(this.editor, event);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private handleKeyDownEvent(editor: IStandaloneEditor, event: KeyDownEvent) {\r\n const rawEvent = event.rawEvent;\r\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\r\n switch (rawEvent.key) {\r\n case ' ':\r\n const { autoBullet, autoNumbering } = this.options;\r\n if (autoBullet || autoNumbering) {\r\n keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.keyboardListTrigger = void 0;
|
|
4
|
+
var getListTypeStyle_1 = require("./utils/getListTypeStyle");
|
|
5
|
+
var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
|
|
6
|
+
var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
|
|
7
|
+
var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
function keyboardListTrigger(editor, rawEvent, shouldSearchForBullet, shouldSearchForNumbering) {
|
|
12
|
+
if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
|
|
13
|
+
if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
|
|
14
|
+
editor.formatContentModel(function (model, _context) {
|
|
15
|
+
var listStyleType = (0, getListTypeStyle_1.getListTypeStyle)(model, shouldSearchForBullet, shouldSearchForNumbering);
|
|
16
|
+
if (listStyleType) {
|
|
17
|
+
var segmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, false);
|
|
18
|
+
if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {
|
|
19
|
+
segmentsAndParagraphs[0][1].segments.splice(0, 1);
|
|
20
|
+
}
|
|
21
|
+
var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
|
|
22
|
+
triggerList(editor, model, listType, styleType, index);
|
|
23
|
+
rawEvent.preventDefault();
|
|
24
|
+
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
exports.keyboardListTrigger = keyboardListTrigger;
|
|
31
|
+
var triggerList = function (editor, model, listType, styleType, index) {
|
|
32
|
+
(0, roosterjs_content_model_api_1.setListType)(model, listType);
|
|
33
|
+
var isOrderedList = listType == 'OL';
|
|
34
|
+
// If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber
|
|
35
|
+
if (index && index > 1 && isOrderedList) {
|
|
36
|
+
(0, roosterjs_content_model_api_1.setListStartNumber)(editor, index);
|
|
37
|
+
}
|
|
38
|
+
(0, roosterjs_content_model_api_1.setListStyle)(editor, isOrderedList
|
|
39
|
+
? {
|
|
40
|
+
orderedStyleType: styleType,
|
|
41
|
+
}
|
|
42
|
+
: {
|
|
43
|
+
unorderedStyleType: styleType,
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=keyboardListTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/keyboardListTrigger.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAC5D,6EAAgF;AAChF,2EAAoE;AACpE,2EAA4F;AAI5F;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,MAAyB,EACzB,QAAuB,EACvB,qBAAqC,EACrC,wBAAwC;IADxC,sCAAA,EAAA,4BAAqC;IACrC,yCAAA,EAAA,+BAAwC;IAExC,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,QAAQ;QACtC,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAClC,KAAK,EACL,qBAAqB,EACrB,wBAAwB,CAC3B,CAAC;QACF,IAAI,aAAa,EAAE;YACf,IAAM,qBAAqB,GAAG,IAAA,+DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7E,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACrD;YACO,IAAA,QAAQ,GAAuB,aAAa,SAApC,EAAE,SAAS,GAAY,aAAa,UAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;YACrD,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAA,mDAAqB,EAAC,KAAK,CAAC,CAAC;YAE7B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AA1BD,kDA0BC;AAED,IAAM,WAAW,GAAG,UAChB,MAAyB,EACzB,KAA2B,EAC3B,QAAqB,EACrB,SAAiB,EACjB,KAAc;IAEd,IAAA,yCAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7B,IAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;IACvC,mGAAmG;IACnG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,aAAa,EAAE;QACrC,IAAA,gDAAkB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACrC;IACD,IAAA,0CAAY,EACR,MAAM,EACN,aAAa;QACT,CAAC,CAAC;YACI,gBAAgB,EAAE,SAAS;SAC9B;QACH,CAAC,CAAC;YACI,kBAAkB,EAAE,SAAS;SAChC,CACV,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { getListTypeStyle } from './utils/getListTypeStyle';\r\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-core';\r\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\r\nimport { setListStartNumber, setListStyle, setListType } from 'roosterjs-content-model-api';\r\n\r\nimport type { ContentModelDocument, IStandaloneEditor } from 'roosterjs-content-model-types';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function keyboardListTrigger(\r\n editor: IStandaloneEditor,\r\n rawEvent: KeyboardEvent,\r\n shouldSearchForBullet: boolean = true,\r\n shouldSearchForNumbering: boolean = true\r\n) {\r\n editor.formatContentModel((model, _context) => {\r\n const listStyleType = getListTypeStyle(\r\n model,\r\n shouldSearchForBullet,\r\n shouldSearchForNumbering\r\n );\r\n if (listStyleType) {\r\n const segmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false);\r\n if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {\r\n segmentsAndParagraphs[0][1].segments.splice(0, 1);\r\n }\r\n const { listType, styleType, index } = listStyleType;\r\n triggerList(editor, model, listType, styleType, index);\r\n rawEvent.preventDefault();\r\n normalizeContentModel(model);\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n}\r\n\r\nconst triggerList = (\r\n editor: IStandaloneEditor,\r\n model: ContentModelDocument,\r\n listType: 'OL' | 'UL',\r\n styleType: number,\r\n index?: number\r\n) => {\r\n setListType(model, listType);\r\n const isOrderedList = listType == 'OL';\r\n // If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber\r\n if (index && index > 1 && isOrderedList) {\r\n setListStartNumber(editor, index);\r\n }\r\n setListStyle(\r\n editor,\r\n isOrderedList\r\n ? {\r\n orderedStyleType: styleType,\r\n }\r\n : {\r\n unorderedStyleType: styleType,\r\n }\r\n );\r\n};\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertAlphaToDecimals = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* Convert english alphabet numbers into decimal numbers
|
|
7
|
+
* @param letter The letter that needs to be converted
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
function convertAlphaToDecimals(letter) {
|
|
11
|
+
var alpha = letter.toUpperCase();
|
|
12
|
+
if (alpha) {
|
|
13
|
+
var result = 0;
|
|
14
|
+
for (var i = 0; i < alpha.length; i++) {
|
|
15
|
+
var charCode = alpha.charCodeAt(i) - 65 + 1;
|
|
16
|
+
result = result * 26 + charCode;
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
exports.convertAlphaToDecimals = convertAlphaToDecimals;
|
|
23
|
+
//# sourceMappingURL=convertAlphaToDecimals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertAlphaToDecimals.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/convertAlphaToDecimals.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAAc;IACjD,IAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,EAAE;QACP,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;SACnC;QAED,OAAO,MAAM,CAAC;KACjB;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAZD,wDAYC","sourcesContent":["/**\r\n * @internal\r\n * Convert english alphabet numbers into decimal numbers\r\n * @param letter The letter that needs to be converted\r\n * @returns\r\n */\r\nexport function convertAlphaToDecimals(letter: string): number | undefined {\r\n const alpha = letter.toUpperCase();\r\n if (alpha) {\r\n let result = 0;\r\n for (let i = 0; i < alpha.length; i++) {\r\n const charCode = alpha.charCodeAt(i) - 65 + 1;\r\n result = result * 26 + charCode;\r\n }\r\n\r\n return result;\r\n }\r\n return undefined;\r\n}\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIndex = void 0;
|
|
4
|
+
var convertAlphaToDecimals_1 = require("./convertAlphaToDecimals");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
function getIndex(listIndex) {
|
|
9
|
+
var index = listIndex.replace(/[^a-zA-Z0-9 ]/g, '');
|
|
10
|
+
var indexNumber = parseInt(index);
|
|
11
|
+
return !isNaN(indexNumber) ? indexNumber : (0, convertAlphaToDecimals_1.convertAlphaToDecimals)(index);
|
|
12
|
+
}
|
|
13
|
+
exports.getIndex = getIndex;
|
|
14
|
+
//# sourceMappingURL=getIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIndex.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getIndex.ts"],"names":[],"mappings":";;;AAAA,mEAAkE;AAElE;;GAEG;AACH,SAAgB,QAAQ,CAAC,SAAiB;IACtC,IAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,IAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,+CAAsB,EAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAJD,4BAIC","sourcesContent":["import { convertAlphaToDecimals } from './convertAlphaToDecimals';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getIndex(listIndex: string) {\r\n const index = listIndex.replace(/[^a-zA-Z0-9 ]/g, '');\r\n const indexNumber = parseInt(index);\r\n return !isNaN(indexNumber) ? indexNumber : convertAlphaToDecimals(index);\r\n}\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ContentModelDocument } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
interface ListTypeStyle {
|
|
6
|
+
listType: 'UL' | 'OL';
|
|
7
|
+
styleType: number;
|
|
8
|
+
index?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function getListTypeStyle(model: ContentModelDocument, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): ListTypeStyle | undefined;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getListTypeStyle = void 0;
|
|
4
|
+
var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
|
|
5
|
+
var getNumberingListStyle_1 = require("./getNumberingListStyle");
|
|
6
|
+
var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNumbering) {
|
|
11
|
+
if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
|
|
12
|
+
if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
|
|
13
|
+
var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, true);
|
|
14
|
+
var marker = selectedSegmentsAndParagraphs[0][0];
|
|
15
|
+
var paragraph = selectedSegmentsAndParagraphs[0][1];
|
|
16
|
+
var listMarkerSegment = paragraph === null || paragraph === void 0 ? void 0 : paragraph.segments[0];
|
|
17
|
+
if (marker &&
|
|
18
|
+
marker.segmentType == 'SelectionMarker' &&
|
|
19
|
+
listMarkerSegment &&
|
|
20
|
+
listMarkerSegment.segmentType == 'Text') {
|
|
21
|
+
var listMarker = listMarkerSegment.text;
|
|
22
|
+
var bulletType = bulletListType[listMarker];
|
|
23
|
+
if (bulletType && shouldSearchForBullet) {
|
|
24
|
+
return { listType: 'UL', styleType: bulletType };
|
|
25
|
+
}
|
|
26
|
+
else if (shouldSearchForNumbering) {
|
|
27
|
+
var previousList = getPreviousListLevel(model, paragraph);
|
|
28
|
+
var previousIndex = getPreviousListIndex(model, previousList);
|
|
29
|
+
var previousListStyle = getPreviousListStyle(previousList);
|
|
30
|
+
var numberingType = (0, getNumberingListStyle_1.getNumberingListStyle)(listMarker, previousIndex, previousListStyle);
|
|
31
|
+
if (numberingType) {
|
|
32
|
+
return {
|
|
33
|
+
listType: 'OL',
|
|
34
|
+
styleType: numberingType,
|
|
35
|
+
index: !isNewList(listMarker) &&
|
|
36
|
+
previousListStyle === numberingType &&
|
|
37
|
+
previousIndex
|
|
38
|
+
? previousIndex + 1
|
|
39
|
+
: undefined,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
exports.getListTypeStyle = getListTypeStyle;
|
|
47
|
+
var getPreviousListIndex = function (model, previousListItem) {
|
|
48
|
+
return previousListItem ? (0, roosterjs_content_model_api_1.findListItemsInSameThread)(model, previousListItem).length : undefined;
|
|
49
|
+
};
|
|
50
|
+
var getPreviousListLevel = function (model, paragraph) {
|
|
51
|
+
var blocks = (0, roosterjs_content_model_core_1.getOperationalBlocks)(model, ['ListItem'], ['TableCell'])[0];
|
|
52
|
+
var listItem = undefined;
|
|
53
|
+
if (blocks) {
|
|
54
|
+
var listBlockIndex = blocks.parent.blocks.indexOf(paragraph);
|
|
55
|
+
if (listBlockIndex > -1) {
|
|
56
|
+
for (var i = listBlockIndex - 1; i > -1; i--) {
|
|
57
|
+
var item = blocks.parent.blocks[i];
|
|
58
|
+
if ((0, roosterjs_content_model_core_1.isBlockGroupOfType)(item, 'ListItem')) {
|
|
59
|
+
listItem = item;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return listItem;
|
|
66
|
+
};
|
|
67
|
+
var getPreviousListStyle = function (list) {
|
|
68
|
+
var _a;
|
|
69
|
+
if (list === null || list === void 0 ? void 0 : list.levels[0].dataset) {
|
|
70
|
+
return (_a = (0, roosterjs_content_model_core_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var bulletListType = {
|
|
74
|
+
'*': roosterjs_content_model_core_1.BulletListType.Disc,
|
|
75
|
+
'-': roosterjs_content_model_core_1.BulletListType.Dash,
|
|
76
|
+
'--': roosterjs_content_model_core_1.BulletListType.Square,
|
|
77
|
+
'->': roosterjs_content_model_core_1.BulletListType.LongArrow,
|
|
78
|
+
'-->': roosterjs_content_model_core_1.BulletListType.DoubleLongArrow,
|
|
79
|
+
'=>': roosterjs_content_model_core_1.BulletListType.UnfilledArrow,
|
|
80
|
+
'>': roosterjs_content_model_core_1.BulletListType.ShortArrow,
|
|
81
|
+
'—': roosterjs_content_model_core_1.BulletListType.Hyphen,
|
|
82
|
+
};
|
|
83
|
+
var isNewList = function (listMarker) {
|
|
84
|
+
var marker = listMarker.replace(/[^\w\s]/g, '');
|
|
85
|
+
var pattern = /^[1aAiI]$/;
|
|
86
|
+
return pattern.test(marker);
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=getListTypeStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getListTypeStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { findListItemsInSameThread } from 'roosterjs-content-model-api';\r\nimport { getNumberingListStyle } from './getNumberingListStyle';\r\nimport type {\r\n ContentModelDocument,\r\n ContentModelListItem,\r\n ContentModelParagraph,\r\n} from 'roosterjs-content-model-types';\r\nimport {\r\n BulletListType,\r\n isBlockGroupOfType,\r\n updateListMetadata,\r\n getOperationalBlocks,\r\n getSelectedSegmentsAndParagraphs,\r\n} from 'roosterjs-content-model-core';\r\n\r\n/**\r\n * @internal\r\n */\r\ninterface ListTypeStyle {\r\n listType: 'UL' | 'OL';\r\n styleType: number;\r\n index?: number;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getListTypeStyle(\r\n model: ContentModelDocument,\r\n shouldSearchForBullet: boolean = true,\r\n shouldSearchForNumbering: boolean = true\r\n): ListTypeStyle | undefined {\r\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, true);\r\n const marker = selectedSegmentsAndParagraphs[0][0];\r\n const paragraph = selectedSegmentsAndParagraphs[0][1];\r\n const listMarkerSegment = paragraph?.segments[0];\r\n\r\n if (\r\n marker &&\r\n marker.segmentType == 'SelectionMarker' &&\r\n listMarkerSegment &&\r\n listMarkerSegment.segmentType == 'Text'\r\n ) {\r\n const listMarker = listMarkerSegment.text;\r\n const bulletType = bulletListType[listMarker];\r\n\r\n if (bulletType && shouldSearchForBullet) {\r\n return { listType: 'UL', styleType: bulletType };\r\n } else if (shouldSearchForNumbering) {\r\n const previousList = getPreviousListLevel(model, paragraph);\r\n const previousIndex = getPreviousListIndex(model, previousList);\r\n const previousListStyle = getPreviousListStyle(previousList);\r\n const numberingType = getNumberingListStyle(\r\n listMarker,\r\n previousIndex,\r\n previousListStyle\r\n );\r\n if (numberingType) {\r\n return {\r\n listType: 'OL',\r\n styleType: numberingType,\r\n index:\r\n !isNewList(listMarker) &&\r\n previousListStyle === numberingType &&\r\n previousIndex\r\n ? previousIndex + 1\r\n : undefined,\r\n };\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nconst getPreviousListIndex = (\r\n model: ContentModelDocument,\r\n previousListItem?: ContentModelListItem\r\n) => {\r\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\r\n};\r\n\r\nconst getPreviousListLevel = (model: ContentModelDocument, paragraph: ContentModelParagraph) => {\r\n const blocks = getOperationalBlocks<ContentModelListItem>(\r\n model,\r\n ['ListItem'],\r\n ['TableCell']\r\n )[0];\r\n let listItem: ContentModelListItem | undefined = undefined;\r\n if (blocks) {\r\n const listBlockIndex = blocks.parent.blocks.indexOf(paragraph);\r\n\r\n if (listBlockIndex > -1) {\r\n for (let i = listBlockIndex - 1; i > -1; i--) {\r\n const item = blocks.parent.blocks[i];\r\n if (isBlockGroupOfType<ContentModelListItem>(item, 'ListItem')) {\r\n listItem = item;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return listItem;\r\n};\r\n\r\nconst getPreviousListStyle = (list?: ContentModelListItem) => {\r\n if (list?.levels[0].dataset) {\r\n return updateListMetadata(list.levels[0])?.orderedStyleType;\r\n }\r\n};\r\n\r\nconst bulletListType: Record<string, number> = {\r\n '*': BulletListType.Disc,\r\n '-': BulletListType.Dash,\r\n '--': BulletListType.Square,\r\n '->': BulletListType.LongArrow,\r\n '-->': BulletListType.DoubleLongArrow,\r\n '=>': BulletListType.UnfilledArrow,\r\n '>': BulletListType.ShortArrow,\r\n '—': BulletListType.Hyphen,\r\n};\r\n\r\nconst isNewList = (listMarker: string) => {\r\n const marker = listMarker.replace(/[^\\w\\s]/g, '');\r\n const pattern = /^[1aAiI]$/;\r\n return pattern.test(marker);\r\n};\r\n"]}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b, _c, _d, _e, _f;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getNumberingListStyle = void 0;
|
|
5
|
+
var getIndex_1 = require("./getIndex");
|
|
6
|
+
var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
|
|
7
|
+
var NumberingTypes;
|
|
8
|
+
(function (NumberingTypes) {
|
|
9
|
+
NumberingTypes[NumberingTypes["Decimal"] = 1] = "Decimal";
|
|
10
|
+
NumberingTypes[NumberingTypes["LowerAlpha"] = 2] = "LowerAlpha";
|
|
11
|
+
NumberingTypes[NumberingTypes["UpperAlpha"] = 3] = "UpperAlpha";
|
|
12
|
+
NumberingTypes[NumberingTypes["LowerRoman"] = 4] = "LowerRoman";
|
|
13
|
+
NumberingTypes[NumberingTypes["UpperRoman"] = 5] = "UpperRoman";
|
|
14
|
+
})(NumberingTypes || (NumberingTypes = {}));
|
|
15
|
+
var Character;
|
|
16
|
+
(function (Character) {
|
|
17
|
+
Character[Character["Dot"] = 1] = "Dot";
|
|
18
|
+
Character[Character["Dash"] = 2] = "Dash";
|
|
19
|
+
Character[Character["Parenthesis"] = 3] = "Parenthesis";
|
|
20
|
+
Character[Character["DoubleParenthesis"] = 4] = "DoubleParenthesis";
|
|
21
|
+
})(Character || (Character = {}));
|
|
22
|
+
var characters = {
|
|
23
|
+
'.': 1 /* Dot */,
|
|
24
|
+
'-': 2 /* Dash */,
|
|
25
|
+
')': 3 /* Parenthesis */,
|
|
26
|
+
};
|
|
27
|
+
var lowerRomanTypes = [
|
|
28
|
+
roosterjs_content_model_core_1.NumberingListType.LowerRoman,
|
|
29
|
+
roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
|
|
30
|
+
roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
|
|
31
|
+
roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
|
|
32
|
+
];
|
|
33
|
+
var upperRomanTypes = [
|
|
34
|
+
roosterjs_content_model_core_1.NumberingListType.UpperRoman,
|
|
35
|
+
roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
|
|
36
|
+
roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
|
|
37
|
+
roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
|
|
38
|
+
];
|
|
39
|
+
var numberingTriggers = ['1', 'a', 'A', 'I', 'i'];
|
|
40
|
+
var lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];
|
|
41
|
+
var upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];
|
|
42
|
+
var identifyNumberingType = function (text, previousListStyle) {
|
|
43
|
+
if (!isNaN(parseInt(text))) {
|
|
44
|
+
return 1 /* Decimal */;
|
|
45
|
+
}
|
|
46
|
+
else if (/[a-z]+/g.test(text)) {
|
|
47
|
+
if ((previousListStyle === 4 /* LowerRoman */ &&
|
|
48
|
+
lowerRomanTypes.indexOf(previousListStyle) > -1 &&
|
|
49
|
+
lowerRomanNumbers.indexOf(text[0]) > -1) ||
|
|
50
|
+
(!previousListStyle && text === 'i')) {
|
|
51
|
+
return 4 /* LowerRoman */;
|
|
52
|
+
}
|
|
53
|
+
else if (previousListStyle === 2 /* LowerAlpha */ ||
|
|
54
|
+
(!previousListStyle && text === 'a')) {
|
|
55
|
+
return 2 /* LowerAlpha */;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (/[A-Z]+/g.test(text)) {
|
|
59
|
+
if ((previousListStyle == 5 /* UpperRoman */ &&
|
|
60
|
+
upperRomanTypes.indexOf(previousListStyle) > -1 &&
|
|
61
|
+
upperRomanNumbers.indexOf(text[0]) > -1) ||
|
|
62
|
+
(!previousListStyle && text === 'I')) {
|
|
63
|
+
return 5 /* UpperRoman */;
|
|
64
|
+
}
|
|
65
|
+
else if (previousListStyle == 3 /* UpperAlpha */ ||
|
|
66
|
+
(!previousListStyle && text === 'A')) {
|
|
67
|
+
return 3 /* UpperAlpha */;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var numberingListTypes = (_a = {},
|
|
72
|
+
_a[1 /* Decimal */] = function (char) { return DecimalsTypes[char] || undefined; },
|
|
73
|
+
_a[2 /* LowerAlpha */] = function (char) { return LowerAlphaTypes[char] || undefined; },
|
|
74
|
+
_a[3 /* UpperAlpha */] = function (char) { return UpperAlphaTypes[char] || undefined; },
|
|
75
|
+
_a[4 /* LowerRoman */] = function (char) { return LowerRomanTypes[char] || undefined; },
|
|
76
|
+
_a[5 /* UpperRoman */] = function (char) { return UpperRomanTypes[char] || undefined; },
|
|
77
|
+
_a);
|
|
78
|
+
var UpperRomanTypes = (_b = {},
|
|
79
|
+
_b[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperRoman,
|
|
80
|
+
_b[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
|
|
81
|
+
_b[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
|
|
82
|
+
_b[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
|
|
83
|
+
_b);
|
|
84
|
+
var LowerRomanTypes = (_c = {},
|
|
85
|
+
_c[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerRoman,
|
|
86
|
+
_c[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
|
|
87
|
+
_c[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
|
|
88
|
+
_c[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
|
|
89
|
+
_c);
|
|
90
|
+
var UpperAlphaTypes = (_d = {},
|
|
91
|
+
_d[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperAlpha,
|
|
92
|
+
_d[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDash,
|
|
93
|
+
_d[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaParenthesis,
|
|
94
|
+
_d[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDoubleParenthesis,
|
|
95
|
+
_d);
|
|
96
|
+
var LowerAlphaTypes = (_e = {},
|
|
97
|
+
_e[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerAlpha,
|
|
98
|
+
_e[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDash,
|
|
99
|
+
_e[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaParenthesis,
|
|
100
|
+
_e[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDoubleParenthesis,
|
|
101
|
+
_e);
|
|
102
|
+
var DecimalsTypes = (_f = {},
|
|
103
|
+
_f[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.Decimal,
|
|
104
|
+
_f[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.DecimalDash,
|
|
105
|
+
_f[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalParenthesis,
|
|
106
|
+
_f[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalDoubleParenthesis,
|
|
107
|
+
_f);
|
|
108
|
+
var identifyNumberingListType = function (numbering, isDoubleParenthesis, previousListStyle) {
|
|
109
|
+
var separatorCharacter = isDoubleParenthesis
|
|
110
|
+
? 4 /* DoubleParenthesis */
|
|
111
|
+
: characters[numbering[numbering.length - 1]];
|
|
112
|
+
// if separator is not valid, no need to check if the number is valid.
|
|
113
|
+
if (separatorCharacter) {
|
|
114
|
+
var number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);
|
|
115
|
+
var numberingType = identifyNumberingType(number, previousListStyle);
|
|
116
|
+
return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;
|
|
117
|
+
}
|
|
118
|
+
return undefined;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* @internal
|
|
122
|
+
*/
|
|
123
|
+
function getNumberingListStyle(textBeforeCursor, previousListIndex, previousListStyle) {
|
|
124
|
+
var trigger = textBeforeCursor.trim();
|
|
125
|
+
var isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';
|
|
126
|
+
//Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.
|
|
127
|
+
//The index is always the characters before the last character
|
|
128
|
+
var listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);
|
|
129
|
+
var index = (0, getIndex_1.getIndex)(listIndex);
|
|
130
|
+
var isContinuosList = numberingTriggers.indexOf(listIndex) < 0;
|
|
131
|
+
if (!index ||
|
|
132
|
+
index < 1 ||
|
|
133
|
+
(!previousListIndex && isContinuosList) ||
|
|
134
|
+
(previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
var numberingType = isValidNumbering(listIndex)
|
|
138
|
+
? identifyNumberingListType(trigger, isDoubleParenthesis, isContinuosList ? previousListStyle : undefined)
|
|
139
|
+
: undefined;
|
|
140
|
+
return numberingType;
|
|
141
|
+
}
|
|
142
|
+
exports.getNumberingListStyle = getNumberingListStyle;
|
|
143
|
+
/**
|
|
144
|
+
* Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.
|
|
145
|
+
* @param index
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
function isValidNumbering(index) {
|
|
149
|
+
return Number(index) || /^[A-Za-z\s]*$/.test(index);
|
|
150
|
+
}
|
|
151
|
+
function canAppendList(index, previousListIndex) {
|
|
152
|
+
return previousListIndex && index && previousListIndex + 1 === index;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=getNumberingListStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getNumberingListStyle.ts"],"names":[],"mappings":";;;;AAAA,uCAAsC;AACtC,6EAAiE;AAEjE,IAAW,cAMV;AAND,WAAW,cAAc;IACrB,yDAAW,CAAA;IACX,+DAAc,CAAA;IACd,+DAAc,CAAA;IACd,+DAAc,CAAA;IACd,+DAAc,CAAA;AAClB,CAAC,EANU,cAAc,KAAd,cAAc,QAMxB;AAED,IAAW,SAKV;AALD,WAAW,SAAS;IAChB,uCAAO,CAAA;IACP,yCAAQ,CAAA;IACR,uDAAe,CAAA;IACf,mEAAqB,CAAA;AACzB,CAAC,EALU,SAAS,KAAT,SAAS,QAKnB;AAED,IAAM,UAAU,GAA2B;IACvC,GAAG,aAAe;IAClB,GAAG,cAAgB;IACnB,GAAG,qBAAuB;CAC7B,CAAC;AAEF,IAAM,eAAe,GAAG;IACpB,gDAAiB,CAAC,UAAU;IAC5B,gDAAiB,CAAC,cAAc;IAChC,gDAAiB,CAAC,2BAA2B;IAC7C,gDAAiB,CAAC,qBAAqB;CAC1C,CAAC;AACF,IAAM,eAAe,GAAG;IACpB,gDAAiB,CAAC,UAAU;IAC5B,gDAAiB,CAAC,cAAc;IAChC,gDAAiB,CAAC,2BAA2B;IAC7C,gDAAiB,CAAC,qBAAqB;CAC1C,CAAC;AACF,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE9D,IAAM,qBAAqB,GAAG,UAAC,IAAY,EAAE,iBAA0B;IACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;QACxB,uBAA8B;KACjC;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7B,IACI,CAAC,iBAAiB,uBAA8B;YAC5C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;YACE,0BAAiC;SACpC;aAAM,IACH,iBAAiB,uBAA8B;YAC/C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;YACE,0BAAiC;SACpC;KACJ;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7B,IACI,CAAC,iBAAiB,sBAA6B;YAC3C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;YACE,0BAAiC;SACpC;aAAM,IACH,iBAAiB,sBAA6B;YAC9C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;YACE,0BAAiC;SACpC;KACJ;AACL,CAAC,CAAC;AAEF,IAAM,kBAAkB;IACpB,sBAA0B,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,IAAI,CAAC,IAAI,SAAS,EAAhC,CAAgC;IAClE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;IACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;IACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;IACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;OAC1E,CAAC;AAEF,IAAM,eAAe;IACjB,kBAAiB,gDAAiB,CAAC,UAAU;IAC7C,mBAAkB,gDAAiB,CAAC,cAAc;IAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;IAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;OAC/E,CAAC;AAEF,IAAM,eAAe;IACjB,kBAAiB,gDAAiB,CAAC,UAAU;IAC7C,mBAAkB,gDAAiB,CAAC,cAAc;IAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;IAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;OAC/E,CAAC;AAEF,IAAM,eAAe;IACjB,kBAAiB,gDAAiB,CAAC,UAAU;IAC7C,mBAAkB,gDAAiB,CAAC,cAAc;IAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;IAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;OAC/E,CAAC;AAEF,IAAM,eAAe;IACjB,kBAAiB,gDAAiB,CAAC,UAAU;IAC7C,mBAAkB,gDAAiB,CAAC,cAAc;IAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;IAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;OAC/E,CAAC;AAEF,IAAM,aAAa;IACf,kBAAiB,gDAAiB,CAAC,OAAO;IAC1C,mBAAkB,gDAAiB,CAAC,WAAW;IAC/C,0BAAyB,gDAAiB,CAAC,kBAAkB;IAC7D,gCAA+B,gDAAiB,CAAC,wBAAwB;OAC5E,CAAC;AAEF,IAAM,yBAAyB,GAAG,UAC9B,SAAiB,EACjB,mBAA4B,EAC5B,iBAA0B;IAE1B,IAAM,kBAAkB,GAAG,mBAAmB;QAC1C,CAAC;QACD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,sEAAsE;IACtE,IAAI,kBAAkB,EAAE;QACpB,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,IAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACvE,OAAO,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;KAC5F;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,SAAgB,qBAAqB,CACjC,gBAAwB,EACxB,iBAA0B,EAC1B,iBAA0B;IAE1B,IAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACxC,IAAM,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;IACtF,kIAAkI;IAClI,8DAA8D;IAC9D,IAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,IAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,SAAS,CAAC,CAAC;IAClC,IAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjE,IACI,CAAC,KAAK;QACN,KAAK,GAAG,CAAC;QACT,CAAC,CAAC,iBAAiB,IAAI,eAAe,CAAC;QACvC,CAAC,iBAAiB,IAAI,eAAe,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EACpF;QACE,OAAO,SAAS,CAAC;KACpB;IAED,IAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,yBAAyB,CACrB,OAAO,EACP,mBAAmB,EACnB,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAClD;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,aAAa,CAAC;AACzB,CAAC;AA9BD,sDA8BC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,iBAA0B;IAC7D,OAAO,iBAAiB,IAAI,KAAK,IAAI,iBAAiB,GAAG,CAAC,KAAK,KAAK,CAAC;AACzE,CAAC","sourcesContent":["import { getIndex } from './getIndex';\r\nimport { NumberingListType } from 'roosterjs-content-model-core';\r\n\r\nconst enum NumberingTypes {\r\n Decimal = 1,\r\n LowerAlpha = 2,\r\n UpperAlpha = 3,\r\n LowerRoman = 4,\r\n UpperRoman = 5,\r\n}\r\n\r\nconst enum Character {\r\n Dot = 1,\r\n Dash = 2,\r\n Parenthesis = 3,\r\n DoubleParenthesis = 4,\r\n}\r\n\r\nconst characters: Record<string, number> = {\r\n '.': Character.Dot,\r\n '-': Character.Dash,\r\n ')': Character.Parenthesis,\r\n};\r\n\r\nconst lowerRomanTypes = [\r\n NumberingListType.LowerRoman,\r\n NumberingListType.LowerRomanDash,\r\n NumberingListType.LowerRomanDoubleParenthesis,\r\n NumberingListType.LowerRomanParenthesis,\r\n];\r\nconst upperRomanTypes = [\r\n NumberingListType.UpperRoman,\r\n NumberingListType.UpperRomanDash,\r\n NumberingListType.UpperRomanDoubleParenthesis,\r\n NumberingListType.UpperRomanParenthesis,\r\n];\r\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\r\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\r\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\r\n\r\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\r\n if (!isNaN(parseInt(text))) {\r\n return NumberingTypes.Decimal;\r\n } else if (/[a-z]+/g.test(text)) {\r\n if (\r\n (previousListStyle === NumberingTypes.LowerRoman &&\r\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\r\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\r\n (!previousListStyle && text === 'i')\r\n ) {\r\n return NumberingTypes.LowerRoman;\r\n } else if (\r\n previousListStyle === NumberingTypes.LowerAlpha ||\r\n (!previousListStyle && text === 'a')\r\n ) {\r\n return NumberingTypes.LowerAlpha;\r\n }\r\n } else if (/[A-Z]+/g.test(text)) {\r\n if (\r\n (previousListStyle == NumberingTypes.UpperRoman &&\r\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\r\n upperRomanNumbers.indexOf(text[0]) > -1) ||\r\n (!previousListStyle && text === 'I')\r\n ) {\r\n return NumberingTypes.UpperRoman;\r\n } else if (\r\n previousListStyle == NumberingTypes.UpperAlpha ||\r\n (!previousListStyle && text === 'A')\r\n ) {\r\n return NumberingTypes.UpperAlpha;\r\n }\r\n }\r\n};\r\n\r\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\r\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\r\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\r\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\r\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\r\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\r\n};\r\n\r\nconst UpperRomanTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.UpperRoman,\r\n [Character.Dash]: NumberingListType.UpperRomanDash,\r\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\r\n};\r\n\r\nconst LowerRomanTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.LowerRoman,\r\n [Character.Dash]: NumberingListType.LowerRomanDash,\r\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\r\n};\r\n\r\nconst UpperAlphaTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.UpperAlpha,\r\n [Character.Dash]: NumberingListType.UpperAlphaDash,\r\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\r\n};\r\n\r\nconst LowerAlphaTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.LowerAlpha,\r\n [Character.Dash]: NumberingListType.LowerAlphaDash,\r\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\r\n};\r\n\r\nconst DecimalsTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.Decimal,\r\n [Character.Dash]: NumberingListType.DecimalDash,\r\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\r\n};\r\n\r\nconst identifyNumberingListType = (\r\n numbering: string,\r\n isDoubleParenthesis: boolean,\r\n previousListStyle?: number\r\n): number | undefined => {\r\n const separatorCharacter = isDoubleParenthesis\r\n ? Character.DoubleParenthesis\r\n : characters[numbering[numbering.length - 1]];\r\n // if separator is not valid, no need to check if the number is valid.\r\n if (separatorCharacter) {\r\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\r\n const numberingType = identifyNumberingType(number, previousListStyle);\r\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getNumberingListStyle(\r\n textBeforeCursor: string,\r\n previousListIndex?: number,\r\n previousListStyle?: number\r\n): number | undefined {\r\n const trigger = textBeforeCursor.trim();\r\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\r\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\r\n //The index is always the characters before the last character\r\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\r\n const index = getIndex(listIndex);\r\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\r\n\r\n if (\r\n !index ||\r\n index < 1 ||\r\n (!previousListIndex && isContinuosList) ||\r\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\r\n ) {\r\n return undefined;\r\n }\r\n\r\n const numberingType = isValidNumbering(listIndex)\r\n ? identifyNumberingListType(\r\n trigger,\r\n isDoubleParenthesis,\r\n isContinuosList ? previousListStyle : undefined\r\n )\r\n : undefined;\r\n return numberingType;\r\n}\r\n\r\n/**\r\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\r\n * @param index\r\n * @returns\r\n */\r\nfunction isValidNumbering(index: string) {\r\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\r\n}\r\n\r\nfunction canAppendList(index?: number, previousListIndex?: number) {\r\n return previousListIndex && index && previousListIndex + 1 === index;\r\n}\r\n"]}
|