roosterjs-content-model-plugins 0.26.0 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/autoFormat/AutoFormatPlugin.d.ts +53 -53
- package/lib/autoFormat/AutoFormatPlugin.js +80 -80
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/keyboardListTrigger.d.ts +5 -5
- package/lib/autoFormat/keyboardListTrigger.js +45 -45
- package/lib/autoFormat/keyboardListTrigger.js.map +1 -1
- package/lib/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
- package/lib/autoFormat/utils/convertAlphaToDecimals.js +22 -22
- package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
- package/lib/autoFormat/utils/getIndex.d.ts +4 -4
- package/lib/autoFormat/utils/getIndex.js +13 -13
- package/lib/autoFormat/utils/getIndex.js.map +1 -1
- package/lib/autoFormat/utils/getListTypeStyle.d.ts +14 -14
- package/lib/autoFormat/utils/getListTypeStyle.js +87 -87
- package/lib/autoFormat/utils/getListTypeStyle.js.map +1 -1
- package/lib/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
- package/lib/autoFormat/utils/getNumberingListStyle.js +153 -153
- package/lib/autoFormat/utils/getNumberingListStyle.js.map +1 -1
- package/lib/edit/EditPlugin.d.ts +39 -39
- package/lib/edit/EditPlugin.js +128 -128
- package/lib/edit/EditPlugin.js.map +1 -1
- 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 -5
- package/lib/edit/inputSteps/handleEnterOnList.js +67 -67
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib/edit/keyboardDelete.d.ts +9 -9
- package/lib/edit/keyboardDelete.js +71 -71
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardInput.d.ts +5 -5
- package/lib/edit/keyboardInput.js +58 -58
- package/lib/edit/keyboardInput.js.map +1 -1
- package/lib/edit/keyboardTab.d.ts +5 -5
- package/lib/edit/keyboardTab.js +34 -34
- package/lib/edit/keyboardTab.js.map +1 -1
- 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/paste/PastePlugin.d.ts +43 -43
- package/lib/paste/PastePlugin.js +130 -130
- package/lib/paste/PastePlugin.js.map +1 -1
- 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 -35
- package/lib/pluginUtils/CreateElement/CreateElementData.js +2 -2
- package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib/pluginUtils/CreateElement/createElement.d.ts +9 -9
- package/lib/pluginUtils/CreateElement/createElement.js +50 -50
- package/lib/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib/pluginUtils/Disposable.d.ts +10 -10
- package/lib/pluginUtils/Disposable.js +2 -2
- package/lib/pluginUtils/Disposable.js.map +1 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js +2 -2
- package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +119 -119
- package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
- package/lib/pluginUtils/Rect/getIntersectedRect.js +44 -44
- package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib/pluginUtils/Rect/normalizeRect.d.ts +7 -7
- package/lib/pluginUtils/Rect/normalizeRect.js +19 -19
- package/lib/pluginUtils/Rect/normalizeRect.js.map +1 -1
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +53 -53
- package/lib-amd/autoFormat/AutoFormatPlugin.js +81 -81
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/keyboardListTrigger.d.ts +5 -5
- package/lib-amd/autoFormat/keyboardListTrigger.js +43 -43
- package/lib-amd/autoFormat/keyboardListTrigger.js.map +1 -1
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js +24 -24
- package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
- package/lib-amd/autoFormat/utils/getIndex.d.ts +4 -4
- package/lib-amd/autoFormat/utils/getIndex.js +14 -14
- package/lib-amd/autoFormat/utils/getIndex.js.map +1 -1
- package/lib-amd/autoFormat/utils/getListTypeStyle.d.ts +14 -14
- package/lib-amd/autoFormat/utils/getListTypeStyle.js +86 -86
- package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +1 -1
- package/lib-amd/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
- package/lib-amd/autoFormat/utils/getNumberingListStyle.js +153 -153
- package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +1 -1
- package/lib-amd/edit/EditPlugin.d.ts +39 -39
- package/lib-amd/edit/EditPlugin.js +127 -127
- package/lib-amd/edit/EditPlugin.js.map +1 -1
- 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 -5
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +66 -66
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-amd/edit/keyboardDelete.d.ts +9 -9
- package/lib-amd/edit/keyboardDelete.js +66 -66
- 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 -57
- package/lib-amd/edit/keyboardInput.js.map +1 -1
- package/lib-amd/edit/keyboardTab.d.ts +5 -5
- package/lib-amd/edit/keyboardTab.js +34 -34
- package/lib-amd/edit/keyboardTab.js.map +1 -1
- 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-amd/paste/PastePlugin.d.ts +43 -43
- package/lib-amd/paste/PastePlugin.js +122 -122
- package/lib-amd/paste/PastePlugin.js.map +1 -1
- 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 -35
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.js +4 -4
- package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +9 -9
- package/lib-amd/pluginUtils/CreateElement/createElement.js +51 -51
- package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib-amd/pluginUtils/Disposable.d.ts +10 -10
- package/lib-amd/pluginUtils/Disposable.js +4 -4
- package/lib-amd/pluginUtils/Disposable.js.map +1 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js +4 -4
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +120 -120
- package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +44 -44
- package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +7 -7
- package/lib-amd/pluginUtils/Rect/normalizeRect.js +21 -21
- package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +1 -1
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +53 -53
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +77 -77
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/keyboardListTrigger.d.ts +5 -5
- package/lib-mjs/autoFormat/keyboardListTrigger.js +41 -41
- package/lib-mjs/autoFormat/keyboardListTrigger.js.map +1 -1
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js +18 -18
- package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
- package/lib-mjs/autoFormat/utils/getIndex.d.ts +4 -4
- package/lib-mjs/autoFormat/utils/getIndex.js +9 -9
- package/lib-mjs/autoFormat/utils/getIndex.js.map +1 -1
- package/lib-mjs/autoFormat/utils/getListTypeStyle.d.ts +14 -14
- package/lib-mjs/autoFormat/utils/getListTypeStyle.js +83 -83
- package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +1 -1
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.js +149 -149
- package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +1 -1
- package/lib-mjs/edit/EditPlugin.d.ts +39 -39
- package/lib-mjs/edit/EditPlugin.js +125 -125
- package/lib-mjs/edit/EditPlugin.js.map +1 -1
- 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 -5
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +63 -63
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-mjs/edit/keyboardDelete.d.ts +9 -9
- package/lib-mjs/edit/keyboardDelete.js +67 -67
- 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 -54
- package/lib-mjs/edit/keyboardInput.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.d.ts +5 -5
- package/lib-mjs/edit/keyboardTab.js +30 -30
- package/lib-mjs/edit/keyboardTab.js.map +1 -1
- 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-mjs/paste/PastePlugin.d.ts +43 -43
- package/lib-mjs/paste/PastePlugin.js +127 -127
- package/lib-mjs/paste/PastePlugin.js.map +1 -1
- 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 -35
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js +1 -1
- package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
- package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +9 -9
- package/lib-mjs/pluginUtils/CreateElement/createElement.js +47 -47
- package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -1
- package/lib-mjs/pluginUtils/Disposable.d.ts +10 -10
- package/lib-mjs/pluginUtils/Disposable.js +1 -1
- package/lib-mjs/pluginUtils/Disposable.js.map +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +117 -117
- package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +41 -41
- package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
- package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +7 -7
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js +16 -16
- package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,176 +1,176 @@
|
|
|
1
|
-
import { __read, __spreadArray } from "tslib";
|
|
2
|
-
import { getListStyleTypeFromString, updateListMetadata } from 'roosterjs-content-model-core';
|
|
3
|
-
import { removeNegativeTextIndentParser } from './removeNegativeTextIndentParser';
|
|
4
|
-
import { addBlock, createListItem, createListLevel, isEmpty, parseFormat, } from 'roosterjs-content-model-dom';
|
|
5
|
-
/** Word list metadata style name */
|
|
6
|
-
var MSO_LIST = 'mso-list';
|
|
7
|
-
var MSO_LIST_IGNORE = 'ignore';
|
|
8
|
-
var WORD_FIRST_LIST = 'l0';
|
|
9
|
-
var TEMPLATE_VALUE_REGEX = /%[0-9a-zA-Z]+/g;
|
|
10
|
-
var BULLET_METADATA = 'bullet';
|
|
11
|
-
/**
|
|
12
|
-
* @internal
|
|
13
|
-
* @param styles
|
|
14
|
-
* @param group
|
|
15
|
-
* @param element
|
|
16
|
-
* @param context
|
|
17
|
-
* @returns
|
|
18
|
-
*/
|
|
19
|
-
export function processWordList(styles, group, element, context, metadata) {
|
|
20
|
-
var _a;
|
|
21
|
-
var listFormat = context.listFormat;
|
|
22
|
-
if (!listFormat.wordKnownLevels) {
|
|
23
|
-
listFormat.wordKnownLevels = new Map();
|
|
24
|
-
}
|
|
25
|
-
var wordListStyle = styles[MSO_LIST] || '';
|
|
26
|
-
// If the element contains Ignore style, do not process it,
|
|
27
|
-
// Usually this element contains the fake bullet used in Word Desktop.
|
|
28
|
-
if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
var _b = __read(wordListStyle.split(' '), 2), lNumber = _b[0], level = _b[1];
|
|
32
|
-
// Try get the list metadata from word, which follows this format: l1 level1 lfo2
|
|
33
|
-
// If we are able to get the level property means we can process this element to be a list
|
|
34
|
-
listFormat.wordLevel = level && parseInt(level.substr('level'.length));
|
|
35
|
-
listFormat.wordList = lNumber || WORD_FIRST_LIST;
|
|
36
|
-
if (listFormat.levels.length == 0) {
|
|
37
|
-
listFormat.levels =
|
|
38
|
-
(listFormat.wordList && listFormat.wordKnownLevels.get(listFormat.wordList)) || [];
|
|
39
|
-
}
|
|
40
|
-
if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
|
|
41
|
-
var wordLevel = listFormat.wordLevel, wordList = listFormat.wordList;
|
|
42
|
-
// Retrieve the Fake bullet on the element and also the list type
|
|
43
|
-
var listMetadata = metadata.get(lNumber + ":" + level);
|
|
44
|
-
var listType = ((_a = listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) != BULLET_METADATA
|
|
45
|
-
? 'OL'
|
|
46
|
-
: 'UL';
|
|
47
|
-
// Create the new level of the list item and parse the format
|
|
48
|
-
var newLevel = createListLevel(listType);
|
|
49
|
-
parseFormat(element, __spreadArray(__spreadArray([], __read(context.formatParsers.listLevel), false), [wordListPaddingParser], false), newLevel.format, context);
|
|
50
|
-
// If the list format is in a different level, update the array so we get the new item
|
|
51
|
-
// To be in the same level as the provided level metadata.
|
|
52
|
-
if (wordLevel > listFormat.levels.length) {
|
|
53
|
-
while (wordLevel != listFormat.levels.length) {
|
|
54
|
-
listFormat.levels.push(newLevel);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
|
|
59
|
-
listFormat.levels[wordLevel - 1] = newLevel;
|
|
60
|
-
}
|
|
61
|
-
listFormat.levels[listFormat.levels.length - 1]
|
|
62
|
-
.format.wordList = wordList;
|
|
63
|
-
listFormat.listParent = group;
|
|
64
|
-
processAsListItem(listFormat, context, element, group, listMetadata);
|
|
65
|
-
if (listFormat.levels.length > 0 &&
|
|
66
|
-
listFormat.wordKnownLevels.get(wordList) != listFormat.levels) {
|
|
67
|
-
listFormat.wordKnownLevels.set(wordList, __spreadArray([], __read(listFormat.levels), false));
|
|
68
|
-
}
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
function processAsListItem(listFormat, context, element, group, listMetadata) {
|
|
74
|
-
var listLevel = listFormat.levels[listFormat.levels.length - 1];
|
|
75
|
-
var listType = listLevel.listType;
|
|
76
|
-
var bullet = getBulletFromMetadata(listMetadata, listType);
|
|
77
|
-
if (bullet) {
|
|
78
|
-
updateListMetadata(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
79
|
-
return Object.assign({}, metadata, {
|
|
80
|
-
unorderedStyleType: listType == 'UL' ? bullet : undefined,
|
|
81
|
-
orderedStyleType: listType == 'OL' ? bullet : undefined,
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
var listItem = createListItem(listFormat.levels, context.segmentFormat);
|
|
86
|
-
parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
87
|
-
parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
88
|
-
parseFormat(element, [removeNegativeTextIndentParser], listItem.format, context);
|
|
89
|
-
if (listType == 'OL') {
|
|
90
|
-
setStartNumber(listItem, context, listMetadata);
|
|
91
|
-
}
|
|
92
|
-
context.elementProcessors.child(listItem, element, context);
|
|
93
|
-
addBlock(group, listItem);
|
|
94
|
-
}
|
|
95
|
-
function getBulletFromMetadata(listMetadata, listType) {
|
|
96
|
-
var templateType = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) || 'decimal';
|
|
97
|
-
var templateFinal;
|
|
98
|
-
if (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-text']) {
|
|
99
|
-
var templateValue = '';
|
|
100
|
-
switch (templateType) {
|
|
101
|
-
case 'alpha-upper':
|
|
102
|
-
templateValue = 'UpperAlpha';
|
|
103
|
-
break;
|
|
104
|
-
case 'alpha-lower':
|
|
105
|
-
templateValue = 'LowerAlpha';
|
|
106
|
-
break;
|
|
107
|
-
case 'roman-lower':
|
|
108
|
-
templateValue = 'LowerRoman';
|
|
109
|
-
break;
|
|
110
|
-
case 'roman-upper':
|
|
111
|
-
templateValue = 'UpperRoman';
|
|
112
|
-
break;
|
|
113
|
-
default:
|
|
114
|
-
templateValue = 'Number';
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
var template = (listMetadata['mso-level-text'] || '')
|
|
118
|
-
.replace('\\', '')
|
|
119
|
-
.replace('"', '')
|
|
120
|
-
.replace(TEMPLATE_VALUE_REGEX, '${' + templateValue + '}');
|
|
121
|
-
templateFinal = '"' + template + ' "';
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
switch (templateType) {
|
|
125
|
-
case 'alpha-lower':
|
|
126
|
-
templateFinal = 'lower-alpha';
|
|
127
|
-
break;
|
|
128
|
-
case 'roman-lower':
|
|
129
|
-
templateFinal = 'lower-roman';
|
|
130
|
-
break;
|
|
131
|
-
case 'roman-upper':
|
|
132
|
-
templateFinal = 'upper-roman';
|
|
133
|
-
break;
|
|
134
|
-
default:
|
|
135
|
-
templateFinal = 'decimal';
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return getListStyleTypeFromString(listType, templateFinal);
|
|
140
|
-
}
|
|
141
|
-
function wordListPaddingParser(format, element) {
|
|
142
|
-
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
143
|
-
format.paddingLeft = '0px';
|
|
144
|
-
}
|
|
145
|
-
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
146
|
-
format.paddingRight = '0px';
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function setStartNumber(listItem, context, listMetadata) {
|
|
150
|
-
var _a, _b;
|
|
151
|
-
var _c = context.listFormat, listParent = _c.listParent, wordList = _c.wordList, wordKnownLevels = _c.wordKnownLevels, wordLevel = _c.wordLevel, levels = _c.levels;
|
|
152
|
-
var block = getLastNotEmptyBlock(listParent);
|
|
153
|
-
if (((block === null || block === void 0 ? void 0 : block.blockType) != 'BlockGroup' ||
|
|
154
|
-
block.blockGroupType != 'ListItem' ||
|
|
155
|
-
(wordLevel &&
|
|
156
|
-
((_b = (_a = block.levels[wordLevel]) === null || _a === void 0 ? void 0 : _a.format) === null || _b === void 0 ? void 0 : _b.wordList) != wordList)) &&
|
|
157
|
-
wordList) {
|
|
158
|
-
var start = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-start-at'])
|
|
159
|
-
? parseInt(listMetadata['mso-level-start-at'])
|
|
160
|
-
: NaN;
|
|
161
|
-
var knownLevel = (wordKnownLevels === null || wordKnownLevels === void 0 ? void 0 : wordKnownLevels.get(wordList)) || [];
|
|
162
|
-
if (start != undefined && !isNaN(start) && knownLevel.length != levels.length) {
|
|
163
|
-
listItem.levels[listItem.levels.length - 1].format.startNumberOverride = start;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function getLastNotEmptyBlock(listParent) {
|
|
168
|
-
for (var index = ((listParent === null || listParent === void 0 ? void 0 : listParent.blocks.length) || 0) - 1; index > 0; index--) {
|
|
169
|
-
var result = listParent === null || listParent === void 0 ? void 0 : listParent.blocks[index];
|
|
170
|
-
if (result && !isEmpty(result)) {
|
|
171
|
-
return result;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return undefined;
|
|
175
|
-
}
|
|
1
|
+
import { __read, __spreadArray } from "tslib";
|
|
2
|
+
import { getListStyleTypeFromString, updateListMetadata } from 'roosterjs-content-model-core';
|
|
3
|
+
import { removeNegativeTextIndentParser } from './removeNegativeTextIndentParser';
|
|
4
|
+
import { addBlock, createListItem, createListLevel, isEmpty, parseFormat, } from 'roosterjs-content-model-dom';
|
|
5
|
+
/** Word list metadata style name */
|
|
6
|
+
var MSO_LIST = 'mso-list';
|
|
7
|
+
var MSO_LIST_IGNORE = 'ignore';
|
|
8
|
+
var WORD_FIRST_LIST = 'l0';
|
|
9
|
+
var TEMPLATE_VALUE_REGEX = /%[0-9a-zA-Z]+/g;
|
|
10
|
+
var BULLET_METADATA = 'bullet';
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
* @param styles
|
|
14
|
+
* @param group
|
|
15
|
+
* @param element
|
|
16
|
+
* @param context
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
export function processWordList(styles, group, element, context, metadata) {
|
|
20
|
+
var _a;
|
|
21
|
+
var listFormat = context.listFormat;
|
|
22
|
+
if (!listFormat.wordKnownLevels) {
|
|
23
|
+
listFormat.wordKnownLevels = new Map();
|
|
24
|
+
}
|
|
25
|
+
var wordListStyle = styles[MSO_LIST] || '';
|
|
26
|
+
// If the element contains Ignore style, do not process it,
|
|
27
|
+
// Usually this element contains the fake bullet used in Word Desktop.
|
|
28
|
+
if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
var _b = __read(wordListStyle.split(' '), 2), lNumber = _b[0], level = _b[1];
|
|
32
|
+
// Try get the list metadata from word, which follows this format: l1 level1 lfo2
|
|
33
|
+
// If we are able to get the level property means we can process this element to be a list
|
|
34
|
+
listFormat.wordLevel = level && parseInt(level.substr('level'.length));
|
|
35
|
+
listFormat.wordList = lNumber || WORD_FIRST_LIST;
|
|
36
|
+
if (listFormat.levels.length == 0) {
|
|
37
|
+
listFormat.levels =
|
|
38
|
+
(listFormat.wordList && listFormat.wordKnownLevels.get(listFormat.wordList)) || [];
|
|
39
|
+
}
|
|
40
|
+
if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
|
|
41
|
+
var wordLevel = listFormat.wordLevel, wordList = listFormat.wordList;
|
|
42
|
+
// Retrieve the Fake bullet on the element and also the list type
|
|
43
|
+
var listMetadata = metadata.get(lNumber + ":" + level);
|
|
44
|
+
var listType = ((_a = listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) != BULLET_METADATA
|
|
45
|
+
? 'OL'
|
|
46
|
+
: 'UL';
|
|
47
|
+
// Create the new level of the list item and parse the format
|
|
48
|
+
var newLevel = createListLevel(listType);
|
|
49
|
+
parseFormat(element, __spreadArray(__spreadArray([], __read(context.formatParsers.listLevel), false), [wordListPaddingParser], false), newLevel.format, context);
|
|
50
|
+
// If the list format is in a different level, update the array so we get the new item
|
|
51
|
+
// To be in the same level as the provided level metadata.
|
|
52
|
+
if (wordLevel > listFormat.levels.length) {
|
|
53
|
+
while (wordLevel != listFormat.levels.length) {
|
|
54
|
+
listFormat.levels.push(newLevel);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
|
|
59
|
+
listFormat.levels[wordLevel - 1] = newLevel;
|
|
60
|
+
}
|
|
61
|
+
listFormat.levels[listFormat.levels.length - 1]
|
|
62
|
+
.format.wordList = wordList;
|
|
63
|
+
listFormat.listParent = group;
|
|
64
|
+
processAsListItem(listFormat, context, element, group, listMetadata);
|
|
65
|
+
if (listFormat.levels.length > 0 &&
|
|
66
|
+
listFormat.wordKnownLevels.get(wordList) != listFormat.levels) {
|
|
67
|
+
listFormat.wordKnownLevels.set(wordList, __spreadArray([], __read(listFormat.levels), false));
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
function processAsListItem(listFormat, context, element, group, listMetadata) {
|
|
74
|
+
var listLevel = listFormat.levels[listFormat.levels.length - 1];
|
|
75
|
+
var listType = listLevel.listType;
|
|
76
|
+
var bullet = getBulletFromMetadata(listMetadata, listType);
|
|
77
|
+
if (bullet) {
|
|
78
|
+
updateListMetadata(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
79
|
+
return Object.assign({}, metadata, {
|
|
80
|
+
unorderedStyleType: listType == 'UL' ? bullet : undefined,
|
|
81
|
+
orderedStyleType: listType == 'OL' ? bullet : undefined,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
var listItem = createListItem(listFormat.levels, context.segmentFormat);
|
|
86
|
+
parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
87
|
+
parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
88
|
+
parseFormat(element, [removeNegativeTextIndentParser], listItem.format, context);
|
|
89
|
+
if (listType == 'OL') {
|
|
90
|
+
setStartNumber(listItem, context, listMetadata);
|
|
91
|
+
}
|
|
92
|
+
context.elementProcessors.child(listItem, element, context);
|
|
93
|
+
addBlock(group, listItem);
|
|
94
|
+
}
|
|
95
|
+
function getBulletFromMetadata(listMetadata, listType) {
|
|
96
|
+
var templateType = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) || 'decimal';
|
|
97
|
+
var templateFinal;
|
|
98
|
+
if (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-text']) {
|
|
99
|
+
var templateValue = '';
|
|
100
|
+
switch (templateType) {
|
|
101
|
+
case 'alpha-upper':
|
|
102
|
+
templateValue = 'UpperAlpha';
|
|
103
|
+
break;
|
|
104
|
+
case 'alpha-lower':
|
|
105
|
+
templateValue = 'LowerAlpha';
|
|
106
|
+
break;
|
|
107
|
+
case 'roman-lower':
|
|
108
|
+
templateValue = 'LowerRoman';
|
|
109
|
+
break;
|
|
110
|
+
case 'roman-upper':
|
|
111
|
+
templateValue = 'UpperRoman';
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
templateValue = 'Number';
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
var template = (listMetadata['mso-level-text'] || '')
|
|
118
|
+
.replace('\\', '')
|
|
119
|
+
.replace('"', '')
|
|
120
|
+
.replace(TEMPLATE_VALUE_REGEX, '${' + templateValue + '}');
|
|
121
|
+
templateFinal = '"' + template + ' "';
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
switch (templateType) {
|
|
125
|
+
case 'alpha-lower':
|
|
126
|
+
templateFinal = 'lower-alpha';
|
|
127
|
+
break;
|
|
128
|
+
case 'roman-lower':
|
|
129
|
+
templateFinal = 'lower-roman';
|
|
130
|
+
break;
|
|
131
|
+
case 'roman-upper':
|
|
132
|
+
templateFinal = 'upper-roman';
|
|
133
|
+
break;
|
|
134
|
+
default:
|
|
135
|
+
templateFinal = 'decimal';
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return getListStyleTypeFromString(listType, templateFinal);
|
|
140
|
+
}
|
|
141
|
+
function wordListPaddingParser(format, element) {
|
|
142
|
+
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
143
|
+
format.paddingLeft = '0px';
|
|
144
|
+
}
|
|
145
|
+
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
146
|
+
format.paddingRight = '0px';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function setStartNumber(listItem, context, listMetadata) {
|
|
150
|
+
var _a, _b;
|
|
151
|
+
var _c = context.listFormat, listParent = _c.listParent, wordList = _c.wordList, wordKnownLevels = _c.wordKnownLevels, wordLevel = _c.wordLevel, levels = _c.levels;
|
|
152
|
+
var block = getLastNotEmptyBlock(listParent);
|
|
153
|
+
if (((block === null || block === void 0 ? void 0 : block.blockType) != 'BlockGroup' ||
|
|
154
|
+
block.blockGroupType != 'ListItem' ||
|
|
155
|
+
(wordLevel &&
|
|
156
|
+
((_b = (_a = block.levels[wordLevel]) === null || _a === void 0 ? void 0 : _a.format) === null || _b === void 0 ? void 0 : _b.wordList) != wordList)) &&
|
|
157
|
+
wordList) {
|
|
158
|
+
var start = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-start-at'])
|
|
159
|
+
? parseInt(listMetadata['mso-level-start-at'])
|
|
160
|
+
: NaN;
|
|
161
|
+
var knownLevel = (wordKnownLevels === null || wordKnownLevels === void 0 ? void 0 : wordKnownLevels.get(wordList)) || [];
|
|
162
|
+
if (start != undefined && !isNaN(start) && knownLevel.length != levels.length) {
|
|
163
|
+
listItem.levels[listItem.levels.length - 1].format.startNumberOverride = start;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function getLastNotEmptyBlock(listParent) {
|
|
168
|
+
for (var index = ((listParent === null || listParent === void 0 ? void 0 : listParent.blocks.length) || 0) - 1; index > 0; index--) {
|
|
169
|
+
var result = listParent === null || listParent === void 0 ? void 0 : listParent.blocks[index];
|
|
170
|
+
if (result && !isEmpty(result)) {
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
176
|
//# sourceMappingURL=processWordLists.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processWordLists.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EACH,QAAQ,EACR,cAAc,EACd,eAAe,EACf,OAAO,EACP,WAAW,GACd,MAAM,6BAA6B,CAAC;AAWrC,oCAAoC;AACpC,IAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,IAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,IAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,IAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAY9C,IAAM,eAAe,GAAG,QAAQ,CAAC;AACjC;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC3B,MAA8B,EAC9B,KAA6B,EAC7B,OAAoB,EACpB,OAA0B,EAC1B,QAAmC;;IAEnC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAmC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;QAC7B,UAAU,CAAC,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;KAC3E;IACD,IAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE7C,2DAA2D;IAC3D,sEAAsE;IACtE,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,eAAe,EAAE;QACjD,OAAO,IAAI,CAAC;KACf;IAEK,IAAA,KAAA,OAAmB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAA1C,OAAO,QAAA,EAAE,KAAK,QAA4B,CAAC;IAClD,iFAAiF;IACjF,0FAA0F;IAC1F,UAAU,CAAC,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,UAAU,CAAC,QAAQ,GAAG,OAAO,IAAI,eAAe,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;QAC/B,UAAU,CAAC,MAAM;YACb,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1F;IAED,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,EAAE;QAC5D,IAAA,SAAS,GAAe,UAAU,UAAzB,EAAE,QAAQ,GAAK,UAAU,SAAf,CAAgB;QAC3C,iEAAiE;QACjE,IAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAI,OAAO,SAAI,KAAO,CAAC,CAAC;QACzD,IAAM,QAAQ,GACV,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,yBAAyB,CAAC,0CAAE,WAAW,EAAE,KAAI,eAAe;YACvE,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC;QAEf,6DAA6D;QAC7D,IAAM,QAAQ,GAA0B,eAAe,CAAC,QAAQ,CAAC,CAAC;QAClE,WAAW,CACP,OAAO,yCACH,OAAO,CAAC,aAAa,CAAC,SAAS,YAAE,qBAAqB,WAC1D,QAAQ,CAAC,MAAM,EACf,OAAO,CACV,CAAC;QAEF,sFAAsF;QACtF,0DAA0D;QAC1D,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;YACtC,OAAO,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpC;SACJ;aAAM;YACH,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClE,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC/C;QACA,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3C,MAAyB,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEnD,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;QAE9B,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAErE,IACI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAC5B,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,EAC/D;YACE,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,2BAAM,UAAU,CAAC,MAAM,UAAE,CAAC;SACpE;QACD,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CACtB,UAAiC,EACjC,OAA0B,EAC1B,OAAoB,EACpB,KAA6B,EAC7B,YAAsC;IAEtC,IAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAA,QAAQ,GAAK,SAAS,SAAd,CAAe;IAC/B,IAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7D,IAAI,MAAM,EAAE;QACR,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAA,QAAQ;YACxE,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE;gBACxB,kBAAkB,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACzD,gBAAgB,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAC1D,CAAC;QAHF,CAGE,CACL,CAAC;KACL;IAED,IAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1E,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3F,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtF,WAAW,CAAC,OAAO,EAAE,CAAC,8BAA8B,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjF,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;KACnD;IAED,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAsC,EAAE,QAAqB;IACxF,IAAM,YAAY,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,yBAAyB,CAAC,KAAI,SAAS,CAAC;IAC5E,IAAI,aAAqB,CAAC;IAE1B,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,gBAAgB,CAAC,EAAE;QAClC,IAAI,aAAa,GAAW,EAAE,CAAC;QAC/B,QAAQ,YAAY,EAAE;YAClB,KAAK,aAAa;gBACd,aAAa,GAAG,YAAY,CAAC;gBAC7B,MAAM;YACV,KAAK,aAAa;gBACd,aAAa,GAAG,YAAY,CAAC;gBAC7B,MAAM;YACV,KAAK,aAAa;gBACd,aAAa,GAAG,YAAY,CAAC;gBAC7B,MAAM;YACV,KAAK,aAAa;gBACd,aAAa,GAAG,YAAY,CAAC;gBAC7B,MAAM;YACV;gBACI,aAAa,GAAG,QAAQ,CAAC;gBACzB,MAAM;SACb;QACD,IAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;aAClD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;aAChB,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;QAE/D,aAAa,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC;KACzC;SAAM;QACH,QAAQ,YAAY,EAAE;YAClB,KAAK,aAAa;gBACd,aAAa,GAAG,aAAa,CAAC;gBAC9B,MAAM;YACV,KAAK,aAAa;gBACd,aAAa,GAAG,aAAa,CAAC;gBAC9B,MAAM;YACV,KAAK,aAAa;gBACd,aAAa,GAAG,aAAa,CAAC;gBAC9B,MAAM;YACV;gBACI,aAAa,GAAG,SAAS,CAAC;gBAC1B,MAAM;SACb;KACJ;IAED,OAAO,0BAA0B,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAC1B,MAAuC,EACvC,OAAoB;IAEpB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE;QAC/D,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;KAC9B;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,EAAE;QACjE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;KAC/B;AACL,CAAC;AAED,SAAS,cAAc,CACnB,QAA8B,EAC9B,OAA0B,EAC1B,YAAsC;;IAEhC,IAAA,KAMF,OAAO,CAAC,UAAmC,EAL3C,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,eAAe,qBAAA,EACf,SAAS,eAAA,EACT,MAAM,YACqC,CAAC;IAEhD,IAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC/C,IACI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,YAAY;QAC7B,KAAK,CAAC,cAAc,IAAI,UAAU;QAClC,CAAC,SAAS;YACN,CAAA,MAAC,MAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,0CAAE,MAAyB,0CAAE,QAAQ,KAAI,QAAQ,CAAC,CAAC;QACnF,QAAQ,EACV;QACE,IAAM,KAAK,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,oBAAoB,CAAC;YAC9C,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YAC9C,CAAC,CAAC,GAAG,CAAC;QACV,IAAM,UAAU,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,GAAG,CAAC,QAAQ,CAAC,KAAI,EAAE,CAAC;QAExD,IAAI,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAC3E,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClF;KACJ;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA8C;IACxE,KAAK,IAAI,KAAK,GAAG,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,MAAM,KAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QACvE,IAAM,MAAM,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC;SACjB;KACJ;IAED,OAAO,SAAS,CAAC;AACrB,CAAC","sourcesContent":["import { getListStyleTypeFromString, updateListMetadata } from 'roosterjs-content-model-core';\r\nimport { removeNegativeTextIndentParser } from './removeNegativeTextIndentParser';\r\nimport type { WordMetadata } from './WordMetadata';\r\nimport {\r\n addBlock,\r\n createListItem,\r\n createListLevel,\r\n isEmpty,\r\n parseFormat,\r\n} from 'roosterjs-content-model-dom';\r\nimport type {\r\n ContentModelBlockGroup,\r\n ContentModelListItem,\r\n ContentModelListItemFormat,\r\n ContentModelListItemLevelFormat,\r\n ContentModelListLevel,\r\n DomToModelContext,\r\n DomToModelListFormat,\r\n} from 'roosterjs-content-model-types';\r\n\r\n/** Word list metadata style name */\r\nconst MSO_LIST = 'mso-list';\r\nconst MSO_LIST_IGNORE = 'ignore';\r\nconst WORD_FIRST_LIST = 'l0';\r\nconst TEMPLATE_VALUE_REGEX = /%[0-9a-zA-Z]+/g;\r\n\r\ninterface WordDesktopListFormat extends DomToModelListFormat {\r\n wordLevel?: number | '';\r\n wordList?: string;\r\n wordKnownLevels?: Map<string, ContentModelListLevel[]>;\r\n}\r\n\r\ninterface WordListFormat extends ContentModelListItemFormat {\r\n wordList?: string;\r\n}\r\n\r\nconst BULLET_METADATA = 'bullet';\r\n/**\r\n * @internal\r\n * @param styles\r\n * @param group\r\n * @param element\r\n * @param context\r\n * @returns\r\n */\r\nexport function processWordList(\r\n styles: Record<string, string>,\r\n group: ContentModelBlockGroup,\r\n element: HTMLElement,\r\n context: DomToModelContext,\r\n metadata: Map<string, WordMetadata>\r\n) {\r\n const listFormat = context.listFormat as WordDesktopListFormat;\r\n if (!listFormat.wordKnownLevels) {\r\n listFormat.wordKnownLevels = new Map<string, ContentModelListLevel[]>();\r\n }\r\n const wordListStyle = styles[MSO_LIST] || '';\r\n\r\n // If the element contains Ignore style, do not process it,\r\n // Usually this element contains the fake bullet used in Word Desktop.\r\n if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {\r\n return true;\r\n }\r\n\r\n const [lNumber, level] = wordListStyle.split(' ');\r\n // Try get the list metadata from word, which follows this format: l1 level1 lfo2\r\n // If we are able to get the level property means we can process this element to be a list\r\n listFormat.wordLevel = level && parseInt(level.substr('level'.length));\r\n\r\n listFormat.wordList = lNumber || WORD_FIRST_LIST;\r\n if (listFormat.levels.length == 0) {\r\n listFormat.levels =\r\n (listFormat.wordList && listFormat.wordKnownLevels.get(listFormat.wordList)) || [];\r\n }\r\n\r\n if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {\r\n const { wordLevel, wordList } = listFormat;\r\n // Retrieve the Fake bullet on the element and also the list type\r\n const listMetadata = metadata.get(`${lNumber}:${level}`);\r\n const listType =\r\n listMetadata?.['mso-level-number-format']?.toLowerCase() != BULLET_METADATA\r\n ? 'OL'\r\n : 'UL';\r\n\r\n // Create the new level of the list item and parse the format\r\n const newLevel: ContentModelListLevel = createListLevel(listType);\r\n parseFormat(\r\n element,\r\n [...context.formatParsers.listLevel, wordListPaddingParser],\r\n newLevel.format,\r\n context\r\n );\r\n\r\n // If the list format is in a different level, update the array so we get the new item\r\n // To be in the same level as the provided level metadata.\r\n if (wordLevel > listFormat.levels.length) {\r\n while (wordLevel != listFormat.levels.length) {\r\n listFormat.levels.push(newLevel);\r\n }\r\n } else {\r\n listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);\r\n listFormat.levels[wordLevel - 1] = newLevel;\r\n }\r\n (listFormat.levels[listFormat.levels.length - 1]\r\n .format as WordListFormat).wordList = wordList;\r\n\r\n listFormat.listParent = group;\r\n\r\n processAsListItem(listFormat, context, element, group, listMetadata);\r\n\r\n if (\r\n listFormat.levels.length > 0 &&\r\n listFormat.wordKnownLevels.get(wordList) != listFormat.levels\r\n ) {\r\n listFormat.wordKnownLevels.set(wordList, [...listFormat.levels]);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction processAsListItem(\r\n listFormat: WordDesktopListFormat,\r\n context: DomToModelContext,\r\n element: HTMLElement,\r\n group: ContentModelBlockGroup,\r\n listMetadata: WordMetadata | undefined\r\n) {\r\n const listLevel = listFormat.levels[listFormat.levels.length - 1];\r\n const { listType } = listLevel;\r\n const bullet = getBulletFromMetadata(listMetadata, listType);\r\n if (bullet) {\r\n updateListMetadata(listFormat.levels[listFormat.levels.length - 1], metadata =>\r\n Object.assign({}, metadata, {\r\n unorderedStyleType: listType == 'UL' ? bullet : undefined,\r\n orderedStyleType: listType == 'OL' ? bullet : undefined,\r\n })\r\n );\r\n }\r\n\r\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\r\n\r\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\r\n parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);\r\n parseFormat(element, [removeNegativeTextIndentParser], listItem.format, context);\r\n\r\n if (listType == 'OL') {\r\n setStartNumber(listItem, context, listMetadata);\r\n }\r\n\r\n context.elementProcessors.child(listItem, element, context);\r\n addBlock(group, listItem);\r\n}\r\n\r\nfunction getBulletFromMetadata(listMetadata: WordMetadata | undefined, listType: 'OL' | 'UL') {\r\n const templateType = listMetadata?.['mso-level-number-format'] || 'decimal';\r\n let templateFinal: string;\r\n\r\n if (listMetadata?.['mso-level-text']) {\r\n let templateValue: string = '';\r\n switch (templateType) {\r\n case 'alpha-upper':\r\n templateValue = 'UpperAlpha';\r\n break;\r\n case 'alpha-lower':\r\n templateValue = 'LowerAlpha';\r\n break;\r\n case 'roman-lower':\r\n templateValue = 'LowerRoman';\r\n break;\r\n case 'roman-upper':\r\n templateValue = 'UpperRoman';\r\n break;\r\n default:\r\n templateValue = 'Number';\r\n break;\r\n }\r\n const template = (listMetadata['mso-level-text'] || '')\r\n .replace('\\\\', '')\r\n .replace('\"', '')\r\n .replace(TEMPLATE_VALUE_REGEX, '${' + templateValue + '}');\r\n\r\n templateFinal = '\"' + template + ' \"';\r\n } else {\r\n switch (templateType) {\r\n case 'alpha-lower':\r\n templateFinal = 'lower-alpha';\r\n break;\r\n case 'roman-lower':\r\n templateFinal = 'lower-roman';\r\n break;\r\n case 'roman-upper':\r\n templateFinal = 'upper-roman';\r\n break;\r\n default:\r\n templateFinal = 'decimal';\r\n break;\r\n }\r\n }\r\n\r\n return getListStyleTypeFromString(listType, templateFinal);\r\n}\r\n\r\nfunction wordListPaddingParser(\r\n format: ContentModelListItemLevelFormat,\r\n element: HTMLElement\r\n): void {\r\n if (element.style.marginLeft && element.style.marginLeft != '0in') {\r\n format.paddingLeft = '0px';\r\n }\r\n if (element.style.marginRight && element.style.marginRight != '0in') {\r\n format.paddingRight = '0px';\r\n }\r\n}\r\n\r\nfunction setStartNumber(\r\n listItem: ContentModelListItem,\r\n context: DomToModelContext,\r\n listMetadata: WordMetadata | undefined\r\n) {\r\n const {\r\n listParent,\r\n wordList,\r\n wordKnownLevels,\r\n wordLevel,\r\n levels,\r\n } = context.listFormat as WordDesktopListFormat;\r\n\r\n const block = getLastNotEmptyBlock(listParent);\r\n if (\r\n (block?.blockType != 'BlockGroup' ||\r\n block.blockGroupType != 'ListItem' ||\r\n (wordLevel &&\r\n (block.levels[wordLevel]?.format as WordListFormat)?.wordList != wordList)) &&\r\n wordList\r\n ) {\r\n const start = listMetadata?.['mso-level-start-at']\r\n ? parseInt(listMetadata['mso-level-start-at'])\r\n : NaN;\r\n const knownLevel = wordKnownLevels?.get(wordList) || [];\r\n\r\n if (start != undefined && !isNaN(start) && knownLevel.length != levels.length) {\r\n listItem.levels[listItem.levels.length - 1].format.startNumberOverride = start;\r\n }\r\n }\r\n}\r\n\r\nfunction getLastNotEmptyBlock(listParent: ContentModelBlockGroup | undefined) {\r\n for (let index = (listParent?.blocks.length || 0) - 1; index > 0; index--) {\r\n const result = listParent?.blocks[index];\r\n if (result && !isEmpty(result)) {\r\n return result;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"processWordLists.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts"],"names":[],"mappings":"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","sourcesContent":["import { getListStyleTypeFromString, updateListMetadata } from 'roosterjs-content-model-core';\nimport { removeNegativeTextIndentParser } from './removeNegativeTextIndentParser';\nimport type { WordMetadata } from './WordMetadata';\nimport {\n addBlock,\n createListItem,\n createListLevel,\n isEmpty,\n parseFormat,\n} from 'roosterjs-content-model-dom';\nimport type {\n ContentModelBlockGroup,\n ContentModelListItem,\n ContentModelListItemFormat,\n ContentModelListItemLevelFormat,\n ContentModelListLevel,\n DomToModelContext,\n DomToModelListFormat,\n} from 'roosterjs-content-model-types';\n\n/** Word list metadata style name */\nconst MSO_LIST = 'mso-list';\nconst MSO_LIST_IGNORE = 'ignore';\nconst WORD_FIRST_LIST = 'l0';\nconst TEMPLATE_VALUE_REGEX = /%[0-9a-zA-Z]+/g;\n\ninterface WordDesktopListFormat extends DomToModelListFormat {\n wordLevel?: number | '';\n wordList?: string;\n wordKnownLevels?: Map<string, ContentModelListLevel[]>;\n}\n\ninterface WordListFormat extends ContentModelListItemFormat {\n wordList?: string;\n}\n\nconst BULLET_METADATA = 'bullet';\n/**\n * @internal\n * @param styles\n * @param group\n * @param element\n * @param context\n * @returns\n */\nexport function processWordList(\n styles: Record<string, string>,\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext,\n metadata: Map<string, WordMetadata>\n) {\n const listFormat = context.listFormat as WordDesktopListFormat;\n if (!listFormat.wordKnownLevels) {\n listFormat.wordKnownLevels = new Map<string, ContentModelListLevel[]>();\n }\n const wordListStyle = styles[MSO_LIST] || '';\n\n // If the element contains Ignore style, do not process it,\n // Usually this element contains the fake bullet used in Word Desktop.\n if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {\n return true;\n }\n\n const [lNumber, level] = wordListStyle.split(' ');\n // Try get the list metadata from word, which follows this format: l1 level1 lfo2\n // If we are able to get the level property means we can process this element to be a list\n listFormat.wordLevel = level && parseInt(level.substr('level'.length));\n\n listFormat.wordList = lNumber || WORD_FIRST_LIST;\n if (listFormat.levels.length == 0) {\n listFormat.levels =\n (listFormat.wordList && listFormat.wordKnownLevels.get(listFormat.wordList)) || [];\n }\n\n if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {\n const { wordLevel, wordList } = listFormat;\n // Retrieve the Fake bullet on the element and also the list type\n const listMetadata = metadata.get(`${lNumber}:${level}`);\n const listType =\n listMetadata?.['mso-level-number-format']?.toLowerCase() != BULLET_METADATA\n ? 'OL'\n : 'UL';\n\n // Create the new level of the list item and parse the format\n const newLevel: ContentModelListLevel = createListLevel(listType);\n parseFormat(\n element,\n [...context.formatParsers.listLevel, wordListPaddingParser],\n newLevel.format,\n context\n );\n\n // If the list format is in a different level, update the array so we get the new item\n // To be in the same level as the provided level metadata.\n if (wordLevel > listFormat.levels.length) {\n while (wordLevel != listFormat.levels.length) {\n listFormat.levels.push(newLevel);\n }\n } else {\n listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);\n listFormat.levels[wordLevel - 1] = newLevel;\n }\n (listFormat.levels[listFormat.levels.length - 1]\n .format as WordListFormat).wordList = wordList;\n\n listFormat.listParent = group;\n\n processAsListItem(listFormat, context, element, group, listMetadata);\n\n if (\n listFormat.levels.length > 0 &&\n listFormat.wordKnownLevels.get(wordList) != listFormat.levels\n ) {\n listFormat.wordKnownLevels.set(wordList, [...listFormat.levels]);\n }\n return true;\n }\n\n return false;\n}\n\nfunction processAsListItem(\n listFormat: WordDesktopListFormat,\n context: DomToModelContext,\n element: HTMLElement,\n group: ContentModelBlockGroup,\n listMetadata: WordMetadata | undefined\n) {\n const listLevel = listFormat.levels[listFormat.levels.length - 1];\n const { listType } = listLevel;\n const bullet = getBulletFromMetadata(listMetadata, listType);\n if (bullet) {\n updateListMetadata(listFormat.levels[listFormat.levels.length - 1], metadata =>\n Object.assign({}, metadata, {\n unorderedStyleType: listType == 'UL' ? bullet : undefined,\n orderedStyleType: listType == 'OL' ? bullet : undefined,\n })\n );\n }\n\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\n\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);\n parseFormat(element, [removeNegativeTextIndentParser], listItem.format, context);\n\n if (listType == 'OL') {\n setStartNumber(listItem, context, listMetadata);\n }\n\n context.elementProcessors.child(listItem, element, context);\n addBlock(group, listItem);\n}\n\nfunction getBulletFromMetadata(listMetadata: WordMetadata | undefined, listType: 'OL' | 'UL') {\n const templateType = listMetadata?.['mso-level-number-format'] || 'decimal';\n let templateFinal: string;\n\n if (listMetadata?.['mso-level-text']) {\n let templateValue: string = '';\n switch (templateType) {\n case 'alpha-upper':\n templateValue = 'UpperAlpha';\n break;\n case 'alpha-lower':\n templateValue = 'LowerAlpha';\n break;\n case 'roman-lower':\n templateValue = 'LowerRoman';\n break;\n case 'roman-upper':\n templateValue = 'UpperRoman';\n break;\n default:\n templateValue = 'Number';\n break;\n }\n const template = (listMetadata['mso-level-text'] || '')\n .replace('\\\\', '')\n .replace('\"', '')\n .replace(TEMPLATE_VALUE_REGEX, '${' + templateValue + '}');\n\n templateFinal = '\"' + template + ' \"';\n } else {\n switch (templateType) {\n case 'alpha-lower':\n templateFinal = 'lower-alpha';\n break;\n case 'roman-lower':\n templateFinal = 'lower-roman';\n break;\n case 'roman-upper':\n templateFinal = 'upper-roman';\n break;\n default:\n templateFinal = 'decimal';\n break;\n }\n }\n\n return getListStyleTypeFromString(listType, templateFinal);\n}\n\nfunction wordListPaddingParser(\n format: ContentModelListItemLevelFormat,\n element: HTMLElement\n): void {\n if (element.style.marginLeft && element.style.marginLeft != '0in') {\n format.paddingLeft = '0px';\n }\n if (element.style.marginRight && element.style.marginRight != '0in') {\n format.paddingRight = '0px';\n }\n}\n\nfunction setStartNumber(\n listItem: ContentModelListItem,\n context: DomToModelContext,\n listMetadata: WordMetadata | undefined\n) {\n const {\n listParent,\n wordList,\n wordKnownLevels,\n wordLevel,\n levels,\n } = context.listFormat as WordDesktopListFormat;\n\n const block = getLastNotEmptyBlock(listParent);\n if (\n (block?.blockType != 'BlockGroup' ||\n block.blockGroupType != 'ListItem' ||\n (wordLevel &&\n (block.levels[wordLevel]?.format as WordListFormat)?.wordList != wordList)) &&\n wordList\n ) {\n const start = listMetadata?.['mso-level-start-at']\n ? parseInt(listMetadata['mso-level-start-at'])\n : NaN;\n const knownLevel = wordKnownLevels?.get(wordList) || [];\n\n if (start != undefined && !isNaN(start) && knownLevel.length != levels.length) {\n listItem.levels[listItem.levels.length - 1].format.startNumberOverride = start;\n }\n }\n}\n\nfunction getLastNotEmptyBlock(listParent: ContentModelBlockGroup | undefined) {\n for (let index = (listParent?.blocks.length || 0) - 1; index > 0; index--) {\n const result = listParent?.blocks[index];\n if (result && !isEmpty(result)) {\n return result;\n }\n }\n\n return undefined;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FormatParser, TextIndentFormat } from 'roosterjs-content-model-types';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export declare const removeNegativeTextIndentParser: FormatParser<TextIndentFormat>;
|
|
1
|
+
import type { FormatParser, TextIndentFormat } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export declare const removeNegativeTextIndentParser: FormatParser<TextIndentFormat>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @internal
|
|
3
|
-
*/
|
|
4
|
-
export var removeNegativeTextIndentParser = function (format, element) {
|
|
5
|
-
var _a;
|
|
6
|
-
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
7
|
-
delete format.textIndent;
|
|
8
|
-
}
|
|
9
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export var removeNegativeTextIndentParser = function (format, element) {
|
|
5
|
+
var _a;
|
|
6
|
+
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
7
|
+
delete format.textIndent;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
10
|
//# sourceMappingURL=removeNegativeTextIndentParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeNegativeTextIndentParser.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,IAAM,8BAA8B,GAAmC,UAAC,MAAM,EAAE,OAAO;;IAC1F,IAAI,MAAA,MAAM,CAAC,UAAU,0CAAE,UAAU,CAAC,GAAG,CAAC,EAAE;QACpC,OAAO,MAAM,CAAC,UAAU,CAAC;KAC5B;AACL,CAAC,CAAC","sourcesContent":["import type { FormatParser, TextIndentFormat } from 'roosterjs-content-model-types';\
|
|
1
|
+
{"version":3,"file":"removeNegativeTextIndentParser.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,IAAM,8BAA8B,GAAmC,UAAC,MAAM,EAAE,OAAO;;IAC1F,IAAI,MAAA,MAAM,CAAC,UAAU,0CAAE,UAAU,CAAC,GAAG,CAAC,EAAE;QACpC,OAAO,MAAM,CAAC,UAAU,CAAC;KAC5B;AACL,CAAC,CAAC","sourcesContent":["import type { FormatParser, TextIndentFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const removeNegativeTextIndentParser: FormatParser<TextIndentFormat> = (format, element) => {\n if (format.textIndent?.startsWith('-')) {\n delete format.textIndent;\n }\n};\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @internal
|
|
3
|
-
*/
|
|
4
|
-
export declare const PastePropertyNames: {
|
|
5
|
-
/**
|
|
6
|
-
* Node attribute used to identify if the content is from Google Sheets.
|
|
7
|
-
*/
|
|
8
|
-
GOOGLE_SHEET_NODE_NAME: string;
|
|
9
|
-
/**
|
|
10
|
-
* Name of the HTMLMeta Property that provides the Office App Source of the pasted content
|
|
11
|
-
*/
|
|
12
|
-
PROG_ID_NAME: string;
|
|
13
|
-
/**
|
|
14
|
-
* Name of the HTMLMeta Property that identifies pated content as from Excel Desktop
|
|
15
|
-
*/
|
|
16
|
-
EXCEL_DESKTOP_ATTRIBUTE_NAME: string;
|
|
17
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export declare const PastePropertyNames: {
|
|
5
|
+
/**
|
|
6
|
+
* Node attribute used to identify if the content is from Google Sheets.
|
|
7
|
+
*/
|
|
8
|
+
GOOGLE_SHEET_NODE_NAME: string;
|
|
9
|
+
/**
|
|
10
|
+
* Name of the HTMLMeta Property that provides the Office App Source of the pasted content
|
|
11
|
+
*/
|
|
12
|
+
PROG_ID_NAME: string;
|
|
13
|
+
/**
|
|
14
|
+
* Name of the HTMLMeta Property that identifies pated content as from Excel Desktop
|
|
15
|
+
*/
|
|
16
|
+
EXCEL_DESKTOP_ATTRIBUTE_NAME: string;
|
|
17
|
+
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @internal
|
|
3
|
-
*/
|
|
4
|
-
export var PastePropertyNames = {
|
|
5
|
-
/**
|
|
6
|
-
* Node attribute used to identify if the content is from Google Sheets.
|
|
7
|
-
*/
|
|
8
|
-
GOOGLE_SHEET_NODE_NAME: 'google-sheets-html-origin',
|
|
9
|
-
/**
|
|
10
|
-
* Name of the HTMLMeta Property that provides the Office App Source of the pasted content
|
|
11
|
-
*/
|
|
12
|
-
PROG_ID_NAME: 'ProgId',
|
|
13
|
-
/**
|
|
14
|
-
* Name of the HTMLMeta Property that identifies pated content as from Excel Desktop
|
|
15
|
-
*/
|
|
16
|
-
EXCEL_DESKTOP_ATTRIBUTE_NAME: 'xmlns:x',
|
|
17
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export var PastePropertyNames = {
|
|
5
|
+
/**
|
|
6
|
+
* Node attribute used to identify if the content is from Google Sheets.
|
|
7
|
+
*/
|
|
8
|
+
GOOGLE_SHEET_NODE_NAME: 'google-sheets-html-origin',
|
|
9
|
+
/**
|
|
10
|
+
* Name of the HTMLMeta Property that provides the Office App Source of the pasted content
|
|
11
|
+
*/
|
|
12
|
+
PROG_ID_NAME: 'ProgId',
|
|
13
|
+
/**
|
|
14
|
+
* Name of the HTMLMeta Property that identifies pated content as from Excel Desktop
|
|
15
|
+
*/
|
|
16
|
+
EXCEL_DESKTOP_ATTRIBUTE_NAME: 'xmlns:x',
|
|
17
|
+
};
|
|
18
18
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAC9B;;OAEG;IACH,sBAAsB,EAAE,2BAA2B;IAEnD;;OAEG;IACH,YAAY,EAAE,QAAQ;IAEtB;;OAEG;IACH,4BAA4B,EAAE,SAAS;CAC1C,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAC9B;;OAEG;IACH,sBAAsB,EAAE,2BAA2B;IAEnD;;OAEG;IACH,YAAY,EAAE,QAAQ;IAEtB;;OAEG;IACH,4BAA4B,EAAE,SAAS;CAC1C,CAAC","sourcesContent":["/**\n * @internal\n */\nexport const PastePropertyNames = {\n /**\n * Node attribute used to identify if the content is from Google Sheets.\n */\n GOOGLE_SHEET_NODE_NAME: 'google-sheets-html-origin',\n\n /**\n * Name of the HTMLMeta Property that provides the Office App Source of the pasted content\n */\n PROG_ID_NAME: 'ProgId',\n\n /**\n * Name of the HTMLMeta Property that identifies pated content as from Excel Desktop\n */\n EXCEL_DESKTOP_ATTRIBUTE_NAME: 'xmlns:x',\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { GetSourceFunction } from './getPasteSource';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
* Check whether the fragment provided contain Wac Elements
|
|
5
|
-
* @param props Properties related to the PasteEvent
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export declare const documentContainWacElements: GetSourceFunction;
|
|
1
|
+
import type { GetSourceFunction } from './getPasteSource';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
* Check whether the fragment provided contain Wac Elements
|
|
5
|
+
* @param props Properties related to the PasteEvent
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const documentContainWacElements: GetSourceFunction;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { WAC_IDENTIFY_SELECTOR } from '../WacComponents/constants';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
* Check whether the fragment provided contain Wac Elements
|
|
5
|
-
* @param props Properties related to the PasteEvent
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export var documentContainWacElements = function (props) {
|
|
9
|
-
var fragment = props.fragment;
|
|
10
|
-
return !!fragment.querySelector(WAC_IDENTIFY_SELECTOR);
|
|
11
|
-
};
|
|
1
|
+
import { WAC_IDENTIFY_SELECTOR } from '../WacComponents/constants';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
* Check whether the fragment provided contain Wac Elements
|
|
5
|
+
* @param props Properties related to the PasteEvent
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export var documentContainWacElements = function (props) {
|
|
9
|
+
var fragment = props.fragment;
|
|
10
|
+
return !!fragment.querySelector(WAC_IDENTIFY_SELECTOR);
|
|
11
|
+
};
|
|
12
12
|
//# sourceMappingURL=documentContainWacElements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentContainWacElements.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;;;;GAKG;AACH,MAAM,CAAC,IAAM,0BAA0B,GAAsB,UAAA,KAAK;IACtD,IAAA,QAAQ,GAAK,KAAK,SAAV,CAAW;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAC,CAAC","sourcesContent":["import { WAC_IDENTIFY_SELECTOR } from '../WacComponents/constants';\
|
|
1
|
+
{"version":3,"file":"documentContainWacElements.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;;;;GAKG;AACH,MAAM,CAAC,IAAM,0BAA0B,GAAsB,UAAA,KAAK;IACtD,IAAA,QAAQ,GAAK,KAAK,SAAV,CAAW;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAC,CAAC","sourcesContent":["import { WAC_IDENTIFY_SELECTOR } from '../WacComponents/constants';\nimport type { GetSourceFunction } from './getPasteSource';\n\n/**\n * @internal\n * Check whether the fragment provided contain Wac Elements\n * @param props Properties related to the PasteEvent\n * @returns\n */\nexport const documentContainWacElements: GetSourceFunction = props => {\n const { fragment } = props;\n return !!fragment.querySelector(WAC_IDENTIFY_SELECTOR);\n};\n"]}
|