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.
Files changed (451) hide show
  1. package/lib/autoFormat/AutoFormatPlugin.d.ts +53 -53
  2. package/lib/autoFormat/AutoFormatPlugin.js +80 -80
  3. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
  4. package/lib/autoFormat/keyboardListTrigger.d.ts +5 -5
  5. package/lib/autoFormat/keyboardListTrigger.js +45 -45
  6. package/lib/autoFormat/keyboardListTrigger.js.map +1 -1
  7. package/lib/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
  8. package/lib/autoFormat/utils/convertAlphaToDecimals.js +22 -22
  9. package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
  10. package/lib/autoFormat/utils/getIndex.d.ts +4 -4
  11. package/lib/autoFormat/utils/getIndex.js +13 -13
  12. package/lib/autoFormat/utils/getIndex.js.map +1 -1
  13. package/lib/autoFormat/utils/getListTypeStyle.d.ts +14 -14
  14. package/lib/autoFormat/utils/getListTypeStyle.js +87 -87
  15. package/lib/autoFormat/utils/getListTypeStyle.js.map +1 -1
  16. package/lib/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
  17. package/lib/autoFormat/utils/getNumberingListStyle.js +153 -153
  18. package/lib/autoFormat/utils/getNumberingListStyle.js.map +1 -1
  19. package/lib/edit/EditPlugin.d.ts +39 -39
  20. package/lib/edit/EditPlugin.js +128 -128
  21. package/lib/edit/EditPlugin.js.map +1 -1
  22. package/lib/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  23. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js +22 -22
  24. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  25. package/lib/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  26. package/lib/edit/deleteSteps/deleteCollapsedSelection.js +93 -93
  27. package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  28. package/lib/edit/deleteSteps/deleteList.d.ts +5 -5
  29. package/lib/edit/deleteSteps/deleteList.js +23 -23
  30. package/lib/edit/deleteSteps/deleteList.js.map +1 -1
  31. package/lib/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  32. package/lib/edit/deleteSteps/deleteWordSelection.js +173 -173
  33. package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  34. package/lib/edit/handleKeyboardEventCommon.d.ts +14 -14
  35. package/lib/edit/handleKeyboardEventCommon.js +54 -54
  36. package/lib/edit/handleKeyboardEventCommon.js.map +1 -1
  37. package/lib/edit/inputSteps/handleEnterOnList.d.ts +5 -5
  38. package/lib/edit/inputSteps/handleEnterOnList.js +67 -67
  39. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
  40. package/lib/edit/keyboardDelete.d.ts +9 -9
  41. package/lib/edit/keyboardDelete.js +71 -71
  42. package/lib/edit/keyboardDelete.js.map +1 -1
  43. package/lib/edit/keyboardInput.d.ts +5 -5
  44. package/lib/edit/keyboardInput.js +58 -58
  45. package/lib/edit/keyboardInput.js.map +1 -1
  46. package/lib/edit/keyboardTab.d.ts +5 -5
  47. package/lib/edit/keyboardTab.js +34 -34
  48. package/lib/edit/keyboardTab.js.map +1 -1
  49. package/lib/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  50. package/lib/edit/utils/getLeafSiblingBlock.js +75 -75
  51. package/lib/edit/utils/getLeafSiblingBlock.js.map +1 -1
  52. package/lib/index.d.ts +3 -3
  53. package/lib/index.js +9 -9
  54. package/lib/index.js.map +1 -1
  55. package/lib/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
  56. package/lib/paste/Excel/processPastedContentFromExcel.js +82 -82
  57. package/lib/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  58. package/lib/paste/PastePlugin.d.ts +43 -43
  59. package/lib/paste/PastePlugin.js +130 -130
  60. package/lib/paste/PastePlugin.js.map +1 -1
  61. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  62. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js +19 -19
  63. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  64. package/lib/paste/WacComponents/constants.d.ts +48 -48
  65. package/lib/paste/WacComponents/constants.js +62 -62
  66. package/lib/paste/WacComponents/constants.js.map +1 -1
  67. package/lib/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  68. package/lib/paste/WacComponents/processPastedContentWacComponents.js +188 -188
  69. package/lib/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  70. package/lib/paste/WordDesktop/WordMetadata.d.ts +9 -9
  71. package/lib/paste/WordDesktop/WordMetadata.js +2 -2
  72. package/lib/paste/WordDesktop/WordMetadata.js.map +1 -1
  73. package/lib/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
  74. package/lib/paste/WordDesktop/getStyleMetadata.js +78 -78
  75. package/lib/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  76. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
  77. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js +58 -58
  78. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  79. package/lib/paste/WordDesktop/processWordComments.d.ts +7 -7
  80. package/lib/paste/WordDesktop/processWordComments.js +21 -21
  81. package/lib/paste/WordDesktop/processWordComments.js.map +1 -1
  82. package/lib/paste/WordDesktop/processWordLists.d.ts +11 -11
  83. package/lib/paste/WordDesktop/processWordLists.js +179 -179
  84. package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
  85. package/lib/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
  86. package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js +13 -13
  87. package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  88. package/lib/paste/pasteSourceValidations/constants.d.ts +17 -17
  89. package/lib/paste/pasteSourceValidations/constants.js +20 -20
  90. package/lib/paste/pasteSourceValidations/constants.js.map +1 -1
  91. package/lib/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  92. package/lib/paste/pasteSourceValidations/documentContainWacElements.js +15 -15
  93. package/lib/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  94. package/lib/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  95. package/lib/paste/pasteSourceValidations/getPasteSource.js +43 -43
  96. package/lib/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  97. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  98. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js +17 -17
  99. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  100. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  101. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js +19 -19
  102. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  103. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  104. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js +15 -15
  105. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  106. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  107. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +15 -15
  108. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  109. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  110. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js +19 -19
  111. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  112. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  113. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js +18 -18
  114. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  115. package/lib/paste/utils/addParser.d.ts +5 -5
  116. package/lib/paste/utils/addParser.js +16 -16
  117. package/lib/paste/utils/addParser.js.map +1 -1
  118. package/lib/paste/utils/deprecatedColorParser.d.ts +5 -5
  119. package/lib/paste/utils/deprecatedColorParser.js +19 -19
  120. package/lib/paste/utils/deprecatedColorParser.js.map +1 -1
  121. package/lib/paste/utils/getStyles.d.ts +6 -6
  122. package/lib/paste/utils/getStyles.js +22 -22
  123. package/lib/paste/utils/getStyles.js.map +1 -1
  124. package/lib/paste/utils/linkParser.d.ts +5 -5
  125. package/lib/paste/utils/linkParser.js +27 -27
  126. package/lib/paste/utils/linkParser.js.map +1 -1
  127. package/lib/paste/utils/setProcessor.d.ts +5 -5
  128. package/lib/paste/utils/setProcessor.js +13 -13
  129. package/lib/paste/utils/setProcessor.js.map +1 -1
  130. package/lib/pluginUtils/CreateElement/CreateElementData.d.ts +35 -35
  131. package/lib/pluginUtils/CreateElement/CreateElementData.js +2 -2
  132. package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  133. package/lib/pluginUtils/CreateElement/createElement.d.ts +9 -9
  134. package/lib/pluginUtils/CreateElement/createElement.js +50 -50
  135. package/lib/pluginUtils/CreateElement/createElement.js.map +1 -1
  136. package/lib/pluginUtils/Disposable.d.ts +10 -10
  137. package/lib/pluginUtils/Disposable.js +2 -2
  138. package/lib/pluginUtils/Disposable.js.map +1 -1
  139. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
  140. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js +2 -2
  141. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  142. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
  143. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +119 -119
  144. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  145. package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
  146. package/lib/pluginUtils/Rect/getIntersectedRect.js +44 -44
  147. package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  148. package/lib/pluginUtils/Rect/normalizeRect.d.ts +7 -7
  149. package/lib/pluginUtils/Rect/normalizeRect.js +19 -19
  150. package/lib/pluginUtils/Rect/normalizeRect.js.map +1 -1
  151. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +53 -53
  152. package/lib-amd/autoFormat/AutoFormatPlugin.js +81 -81
  153. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
  154. package/lib-amd/autoFormat/keyboardListTrigger.d.ts +5 -5
  155. package/lib-amd/autoFormat/keyboardListTrigger.js +43 -43
  156. package/lib-amd/autoFormat/keyboardListTrigger.js.map +1 -1
  157. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
  158. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js +24 -24
  159. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
  160. package/lib-amd/autoFormat/utils/getIndex.d.ts +4 -4
  161. package/lib-amd/autoFormat/utils/getIndex.js +14 -14
  162. package/lib-amd/autoFormat/utils/getIndex.js.map +1 -1
  163. package/lib-amd/autoFormat/utils/getListTypeStyle.d.ts +14 -14
  164. package/lib-amd/autoFormat/utils/getListTypeStyle.js +86 -86
  165. package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +1 -1
  166. package/lib-amd/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
  167. package/lib-amd/autoFormat/utils/getNumberingListStyle.js +153 -153
  168. package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +1 -1
  169. package/lib-amd/edit/EditPlugin.d.ts +39 -39
  170. package/lib-amd/edit/EditPlugin.js +127 -127
  171. package/lib-amd/edit/EditPlugin.js.map +1 -1
  172. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  173. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js +23 -23
  174. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  175. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  176. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +92 -92
  177. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  178. package/lib-amd/edit/deleteSteps/deleteList.d.ts +5 -5
  179. package/lib-amd/edit/deleteSteps/deleteList.js +24 -24
  180. package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
  181. package/lib-amd/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  182. package/lib-amd/edit/deleteSteps/deleteWordSelection.js +172 -172
  183. package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  184. package/lib-amd/edit/handleKeyboardEventCommon.d.ts +14 -14
  185. package/lib-amd/edit/handleKeyboardEventCommon.js +55 -55
  186. package/lib-amd/edit/handleKeyboardEventCommon.js.map +1 -1
  187. package/lib-amd/edit/inputSteps/handleEnterOnList.d.ts +5 -5
  188. package/lib-amd/edit/inputSteps/handleEnterOnList.js +66 -66
  189. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
  190. package/lib-amd/edit/keyboardDelete.d.ts +9 -9
  191. package/lib-amd/edit/keyboardDelete.js +66 -66
  192. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  193. package/lib-amd/edit/keyboardInput.d.ts +5 -5
  194. package/lib-amd/edit/keyboardInput.js +57 -57
  195. package/lib-amd/edit/keyboardInput.js.map +1 -1
  196. package/lib-amd/edit/keyboardTab.d.ts +5 -5
  197. package/lib-amd/edit/keyboardTab.js +34 -34
  198. package/lib-amd/edit/keyboardTab.js.map +1 -1
  199. package/lib-amd/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  200. package/lib-amd/edit/utils/getLeafSiblingBlock.js +75 -75
  201. package/lib-amd/edit/utils/getLeafSiblingBlock.js.map +1 -1
  202. package/lib-amd/index.d.ts +3 -3
  203. package/lib-amd/index.js +8 -8
  204. package/lib-amd/index.js.map +1 -1
  205. package/lib-amd/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
  206. package/lib-amd/paste/Excel/processPastedContentFromExcel.js +80 -80
  207. package/lib-amd/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  208. package/lib-amd/paste/PastePlugin.d.ts +43 -43
  209. package/lib-amd/paste/PastePlugin.js +122 -122
  210. package/lib-amd/paste/PastePlugin.js.map +1 -1
  211. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  212. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js +20 -20
  213. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  214. package/lib-amd/paste/WacComponents/constants.d.ts +48 -48
  215. package/lib-amd/paste/WacComponents/constants.js +63 -63
  216. package/lib-amd/paste/WacComponents/constants.js.map +1 -1
  217. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  218. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js +185 -185
  219. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  220. package/lib-amd/paste/WordDesktop/WordMetadata.d.ts +9 -9
  221. package/lib-amd/paste/WordDesktop/WordMetadata.js +4 -4
  222. package/lib-amd/paste/WordDesktop/WordMetadata.js.map +1 -1
  223. package/lib-amd/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
  224. package/lib-amd/paste/WordDesktop/getStyleMetadata.js +78 -78
  225. package/lib-amd/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  226. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
  227. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js +53 -53
  228. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  229. package/lib-amd/paste/WordDesktop/processWordComments.d.ts +7 -7
  230. package/lib-amd/paste/WordDesktop/processWordComments.js +22 -22
  231. package/lib-amd/paste/WordDesktop/processWordComments.js.map +1 -1
  232. package/lib-amd/paste/WordDesktop/processWordLists.d.ts +11 -11
  233. package/lib-amd/paste/WordDesktop/processWordLists.js +177 -177
  234. package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
  235. package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
  236. package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js +15 -15
  237. package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  238. package/lib-amd/paste/pasteSourceValidations/constants.d.ts +17 -17
  239. package/lib-amd/paste/pasteSourceValidations/constants.js +22 -22
  240. package/lib-amd/paste/pasteSourceValidations/constants.js.map +1 -1
  241. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  242. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js +16 -16
  243. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  244. package/lib-amd/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  245. package/lib-amd/paste/pasteSourceValidations/getPasteSource.js +38 -38
  246. package/lib-amd/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  247. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  248. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js +18 -18
  249. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  250. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  251. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js +20 -20
  252. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  253. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  254. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js +16 -16
  255. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  256. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  257. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +16 -16
  258. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  259. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  260. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js +20 -20
  261. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  262. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  263. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js +20 -20
  264. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  265. package/lib-amd/paste/utils/addParser.d.ts +5 -5
  266. package/lib-amd/paste/utils/addParser.js +18 -18
  267. package/lib-amd/paste/utils/addParser.js.map +1 -1
  268. package/lib-amd/paste/utils/deprecatedColorParser.d.ts +5 -5
  269. package/lib-amd/paste/utils/deprecatedColorParser.js +20 -20
  270. package/lib-amd/paste/utils/deprecatedColorParser.js.map +1 -1
  271. package/lib-amd/paste/utils/getStyles.d.ts +6 -6
  272. package/lib-amd/paste/utils/getStyles.js +24 -24
  273. package/lib-amd/paste/utils/getStyles.js.map +1 -1
  274. package/lib-amd/paste/utils/linkParser.d.ts +5 -5
  275. package/lib-amd/paste/utils/linkParser.js +28 -28
  276. package/lib-amd/paste/utils/linkParser.js.map +1 -1
  277. package/lib-amd/paste/utils/setProcessor.d.ts +5 -5
  278. package/lib-amd/paste/utils/setProcessor.js +15 -15
  279. package/lib-amd/paste/utils/setProcessor.js.map +1 -1
  280. package/lib-amd/pluginUtils/CreateElement/CreateElementData.d.ts +35 -35
  281. package/lib-amd/pluginUtils/CreateElement/CreateElementData.js +4 -4
  282. package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  283. package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +9 -9
  284. package/lib-amd/pluginUtils/CreateElement/createElement.js +51 -51
  285. package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -1
  286. package/lib-amd/pluginUtils/Disposable.d.ts +10 -10
  287. package/lib-amd/pluginUtils/Disposable.js +4 -4
  288. package/lib-amd/pluginUtils/Disposable.js.map +1 -1
  289. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
  290. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js +4 -4
  291. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  292. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
  293. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +120 -120
  294. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  295. package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
  296. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +44 -44
  297. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  298. package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +7 -7
  299. package/lib-amd/pluginUtils/Rect/normalizeRect.js +21 -21
  300. package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +1 -1
  301. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +53 -53
  302. package/lib-mjs/autoFormat/AutoFormatPlugin.js +77 -77
  303. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
  304. package/lib-mjs/autoFormat/keyboardListTrigger.d.ts +5 -5
  305. package/lib-mjs/autoFormat/keyboardListTrigger.js +41 -41
  306. package/lib-mjs/autoFormat/keyboardListTrigger.js.map +1 -1
  307. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -7
  308. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js +18 -18
  309. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +1 -1
  310. package/lib-mjs/autoFormat/utils/getIndex.d.ts +4 -4
  311. package/lib-mjs/autoFormat/utils/getIndex.js +9 -9
  312. package/lib-mjs/autoFormat/utils/getIndex.js.map +1 -1
  313. package/lib-mjs/autoFormat/utils/getListTypeStyle.d.ts +14 -14
  314. package/lib-mjs/autoFormat/utils/getListTypeStyle.js +83 -83
  315. package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +1 -1
  316. package/lib-mjs/autoFormat/utils/getNumberingListStyle.d.ts +4 -4
  317. package/lib-mjs/autoFormat/utils/getNumberingListStyle.js +149 -149
  318. package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +1 -1
  319. package/lib-mjs/edit/EditPlugin.d.ts +39 -39
  320. package/lib-mjs/edit/EditPlugin.js +125 -125
  321. package/lib-mjs/edit/EditPlugin.js.map +1 -1
  322. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  323. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js +18 -18
  324. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  325. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  326. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +90 -90
  327. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  328. package/lib-mjs/edit/deleteSteps/deleteList.d.ts +5 -5
  329. package/lib-mjs/edit/deleteSteps/deleteList.js +19 -19
  330. package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
  331. package/lib-mjs/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  332. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js +170 -170
  333. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  334. package/lib-mjs/edit/handleKeyboardEventCommon.d.ts +14 -14
  335. package/lib-mjs/edit/handleKeyboardEventCommon.js +48 -48
  336. package/lib-mjs/edit/handleKeyboardEventCommon.js.map +1 -1
  337. package/lib-mjs/edit/inputSteps/handleEnterOnList.d.ts +5 -5
  338. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +63 -63
  339. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
  340. package/lib-mjs/edit/keyboardDelete.d.ts +9 -9
  341. package/lib-mjs/edit/keyboardDelete.js +67 -67
  342. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  343. package/lib-mjs/edit/keyboardInput.d.ts +5 -5
  344. package/lib-mjs/edit/keyboardInput.js +54 -54
  345. package/lib-mjs/edit/keyboardInput.js.map +1 -1
  346. package/lib-mjs/edit/keyboardTab.d.ts +5 -5
  347. package/lib-mjs/edit/keyboardTab.js +30 -30
  348. package/lib-mjs/edit/keyboardTab.js.map +1 -1
  349. package/lib-mjs/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  350. package/lib-mjs/edit/utils/getLeafSiblingBlock.js +71 -71
  351. package/lib-mjs/edit/utils/getLeafSiblingBlock.js.map +1 -1
  352. package/lib-mjs/index.d.ts +3 -3
  353. package/lib-mjs/index.js +3 -3
  354. package/lib-mjs/index.js.map +1 -1
  355. package/lib-mjs/paste/Excel/processPastedContentFromExcel.d.ts +12 -12
  356. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js +77 -77
  357. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  358. package/lib-mjs/paste/PastePlugin.d.ts +43 -43
  359. package/lib-mjs/paste/PastePlugin.js +127 -127
  360. package/lib-mjs/paste/PastePlugin.js.map +1 -1
  361. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  362. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js +15 -15
  363. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  364. package/lib-mjs/paste/WacComponents/constants.d.ts +48 -48
  365. package/lib-mjs/paste/WacComponents/constants.js +59 -59
  366. package/lib-mjs/paste/WacComponents/constants.js.map +1 -1
  367. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  368. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js +184 -184
  369. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  370. package/lib-mjs/paste/WordDesktop/WordMetadata.d.ts +9 -9
  371. package/lib-mjs/paste/WordDesktop/WordMetadata.js +1 -1
  372. package/lib-mjs/paste/WordDesktop/WordMetadata.js.map +1 -1
  373. package/lib-mjs/paste/WordDesktop/getStyleMetadata.d.ts +23 -23
  374. package/lib-mjs/paste/WordDesktop/getStyleMetadata.js +75 -75
  375. package/lib-mjs/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  376. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +7 -7
  377. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js +54 -54
  378. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  379. package/lib-mjs/paste/WordDesktop/processWordComments.d.ts +7 -7
  380. package/lib-mjs/paste/WordDesktop/processWordComments.js +17 -17
  381. package/lib-mjs/paste/WordDesktop/processWordComments.js.map +1 -1
  382. package/lib-mjs/paste/WordDesktop/processWordLists.d.ts +11 -11
  383. package/lib-mjs/paste/WordDesktop/processWordLists.js +175 -175
  384. package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
  385. package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.d.ts +5 -5
  386. package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js +9 -9
  387. package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  388. package/lib-mjs/paste/pasteSourceValidations/constants.d.ts +17 -17
  389. package/lib-mjs/paste/pasteSourceValidations/constants.js +17 -17
  390. package/lib-mjs/paste/pasteSourceValidations/constants.js.map +1 -1
  391. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  392. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js +11 -11
  393. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  394. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  395. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js +39 -39
  396. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  397. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  398. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js +13 -13
  399. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  400. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  401. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js +15 -15
  402. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  403. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  404. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js +11 -11
  405. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  406. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  407. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +11 -11
  408. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  409. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  410. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js +15 -15
  411. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  412. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  413. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js +14 -14
  414. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  415. package/lib-mjs/paste/utils/addParser.d.ts +5 -5
  416. package/lib-mjs/paste/utils/addParser.js +13 -13
  417. package/lib-mjs/paste/utils/addParser.js.map +1 -1
  418. package/lib-mjs/paste/utils/deprecatedColorParser.d.ts +5 -5
  419. package/lib-mjs/paste/utils/deprecatedColorParser.js +15 -15
  420. package/lib-mjs/paste/utils/deprecatedColorParser.js.map +1 -1
  421. package/lib-mjs/paste/utils/getStyles.d.ts +6 -6
  422. package/lib-mjs/paste/utils/getStyles.js +18 -18
  423. package/lib-mjs/paste/utils/getStyles.js.map +1 -1
  424. package/lib-mjs/paste/utils/linkParser.d.ts +5 -5
  425. package/lib-mjs/paste/utils/linkParser.js +23 -23
  426. package/lib-mjs/paste/utils/linkParser.js.map +1 -1
  427. package/lib-mjs/paste/utils/setProcessor.d.ts +5 -5
  428. package/lib-mjs/paste/utils/setProcessor.js +9 -9
  429. package/lib-mjs/paste/utils/setProcessor.js.map +1 -1
  430. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.d.ts +35 -35
  431. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js +1 -1
  432. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  433. package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +9 -9
  434. package/lib-mjs/pluginUtils/CreateElement/createElement.js +47 -47
  435. package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -1
  436. package/lib-mjs/pluginUtils/Disposable.d.ts +10 -10
  437. package/lib-mjs/pluginUtils/Disposable.js +1 -1
  438. package/lib-mjs/pluginUtils/Disposable.js.map +1 -1
  439. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -45
  440. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js +1 -1
  441. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  442. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -39
  443. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +117 -117
  444. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  445. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +27 -27
  446. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +41 -41
  447. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  448. package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +7 -7
  449. package/lib-mjs/pluginUtils/Rect/normalizeRect.js +16 -16
  450. package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +1 -1
  451. package/package.json +5 -5
@@ -1,171 +1,171 @@
1
- import { __generator } from "tslib";
2
- import { isPunctuation, isSpace, normalizeText } from 'roosterjs-content-model-core';
3
- import { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';
4
- var DeleteWordState;
5
- (function (DeleteWordState) {
6
- DeleteWordState[DeleteWordState["Start"] = 0] = "Start";
7
- DeleteWordState[DeleteWordState["Punctuation"] = 1] = "Punctuation";
8
- DeleteWordState[DeleteWordState["Text"] = 2] = "Text";
9
- DeleteWordState[DeleteWordState["NonText"] = 3] = "NonText";
10
- DeleteWordState[DeleteWordState["Space"] = 4] = "Space";
11
- DeleteWordState[DeleteWordState["End"] = 5] = "End";
12
- })(DeleteWordState || (DeleteWordState = {}));
13
- function getDeleteWordSelection(direction) {
14
- return function (context) {
15
- if (context.deleteResult != 'notDeleted') {
16
- return;
17
- }
18
- var _a = context.insertPoint, marker = _a.marker, paragraph = _a.paragraph;
19
- var startIndex = paragraph.segments.indexOf(marker);
20
- var deleteNext = direction == 'forward';
21
- var iterator = iterateSegments(paragraph, startIndex, deleteNext, context);
22
- var curr = iterator.next();
23
- for (var state = 0 /* Start */; state != 5 /* End */ && !curr.done;) {
24
- var _b = curr.value, punctuation = _b.punctuation, space = _b.space, text = _b.text;
25
- // This is a state machine of how to delete a whole word together with space and punctuations.
26
- // For a full state machine chart, see
27
- // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png
28
- // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png
29
- switch (state) {
30
- case 0 /* Start */:
31
- state = space
32
- ? 4 /* Space */
33
- : punctuation
34
- ? 1 /* Punctuation */
35
- : 2 /* Text */;
36
- curr = iterator.next(true /*delete*/);
37
- break;
38
- case 1 /* Punctuation */:
39
- if (deleteNext && space) {
40
- state = 3 /* NonText */;
41
- curr = iterator.next(true /*delete*/);
42
- }
43
- else if (punctuation) {
44
- curr = iterator.next(true /*delete*/);
45
- }
46
- else {
47
- state = 5 /* End */;
48
- }
49
- break;
50
- case 2 /* Text */:
51
- if (deleteNext && space) {
52
- state = 3 /* NonText */;
53
- curr = iterator.next(true /*delete*/);
54
- }
55
- else if (text) {
56
- curr = iterator.next(true /*delete*/);
57
- }
58
- else {
59
- state = 5 /* End */;
60
- }
61
- break;
62
- case 3 /* NonText */:
63
- if (punctuation || !space) {
64
- state = 5 /* End */;
65
- }
66
- else {
67
- curr = iterator.next(true /*delete*/);
68
- }
69
- break;
70
- case 4 /* Space */:
71
- if (space) {
72
- curr = iterator.next(true /*delete*/);
73
- }
74
- else if (punctuation) {
75
- state = deleteNext ? 3 /* NonText */ : 1 /* Punctuation */;
76
- curr = iterator.next(true /*delete*/);
77
- }
78
- else {
79
- state = deleteNext ? 5 /* End */ : 2 /* Text */;
80
- }
81
- break;
82
- }
83
- }
84
- };
85
- }
86
- function iterateSegments(paragraph, markerIndex, forward, context) {
87
- var step, segments, preserveWhiteSpace, i, segment, _a, j, c, punctuation, space, text, newText;
88
- return __generator(this, function (_b) {
89
- switch (_b.label) {
90
- case 0:
91
- step = forward ? 1 : -1;
92
- segments = paragraph.segments;
93
- preserveWhiteSpace = isWhiteSpacePreserved(paragraph.format.whiteSpace);
94
- i = markerIndex + step;
95
- _b.label = 1;
96
- case 1:
97
- if (!(i >= 0 && i < segments.length)) return [3 /*break*/, 12];
98
- segment = segments[i];
99
- _a = segment.segmentType;
100
- switch (_a) {
101
- case 'Text': return [3 /*break*/, 2];
102
- case 'Image': return [3 /*break*/, 7];
103
- case 'SelectionMarker': return [3 /*break*/, 9];
104
- }
105
- return [3 /*break*/, 10];
106
- case 2:
107
- j = forward ? 0 : segment.text.length - 1;
108
- _b.label = 3;
109
- case 3:
110
- if (!(j >= 0 && j < segment.text.length)) return [3 /*break*/, 6];
111
- c = segment.text[j];
112
- punctuation = isPunctuation(c);
113
- space = isSpace(c);
114
- text = !punctuation && !space;
115
- return [4 /*yield*/, { punctuation: punctuation, space: space, text: text }];
116
- case 4:
117
- if (_b.sent()) {
118
- newText = segment.text;
119
- newText = newText.substring(0, j) + newText.substring(j + 1);
120
- if (!preserveWhiteSpace) {
121
- newText = normalizeText(newText, forward);
122
- }
123
- context.deleteResult = 'range';
124
- if (newText) {
125
- segment.text = newText;
126
- if (step > 0) {
127
- j -= step;
128
- }
129
- }
130
- else {
131
- segments.splice(i, 1);
132
- if (step > 0) {
133
- i -= step;
134
- }
135
- return [3 /*break*/, 6];
136
- }
137
- }
138
- _b.label = 5;
139
- case 5:
140
- j += step;
141
- return [3 /*break*/, 3];
142
- case 6: return [3 /*break*/, 11];
143
- case 7: return [4 /*yield*/, { punctuation: true, space: false, text: false }]; // Treat image as punctuation since they have the same behavior.
144
- case 8:
145
- if (_b.sent() // Treat image as punctuation since they have the same behavior.
146
- ) {
147
- segments.splice(i, 1);
148
- if (step > 0) {
149
- i -= step;
150
- }
151
- context.deleteResult = 'range';
152
- }
153
- return [3 /*break*/, 11];
154
- case 9: return [3 /*break*/, 11];
155
- case 10: return [2 /*return*/, null];
156
- case 11:
157
- i += step;
158
- return [3 /*break*/, 1];
159
- case 12: return [2 /*return*/, null];
160
- }
161
- });
162
- }
163
- /**
164
- * @internal
165
- */
166
- export var forwardDeleteWordSelection = getDeleteWordSelection('forward');
167
- /**
168
- * @internal
169
- */
170
- export var backwardDeleteWordSelection = getDeleteWordSelection('backward');
1
+ import { __generator } from "tslib";
2
+ import { isPunctuation, isSpace, normalizeText } from 'roosterjs-content-model-core';
3
+ import { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';
4
+ var DeleteWordState;
5
+ (function (DeleteWordState) {
6
+ DeleteWordState[DeleteWordState["Start"] = 0] = "Start";
7
+ DeleteWordState[DeleteWordState["Punctuation"] = 1] = "Punctuation";
8
+ DeleteWordState[DeleteWordState["Text"] = 2] = "Text";
9
+ DeleteWordState[DeleteWordState["NonText"] = 3] = "NonText";
10
+ DeleteWordState[DeleteWordState["Space"] = 4] = "Space";
11
+ DeleteWordState[DeleteWordState["End"] = 5] = "End";
12
+ })(DeleteWordState || (DeleteWordState = {}));
13
+ function getDeleteWordSelection(direction) {
14
+ return function (context) {
15
+ if (context.deleteResult != 'notDeleted') {
16
+ return;
17
+ }
18
+ var _a = context.insertPoint, marker = _a.marker, paragraph = _a.paragraph;
19
+ var startIndex = paragraph.segments.indexOf(marker);
20
+ var deleteNext = direction == 'forward';
21
+ var iterator = iterateSegments(paragraph, startIndex, deleteNext, context);
22
+ var curr = iterator.next();
23
+ for (var state = 0 /* Start */; state != 5 /* End */ && !curr.done;) {
24
+ var _b = curr.value, punctuation = _b.punctuation, space = _b.space, text = _b.text;
25
+ // This is a state machine of how to delete a whole word together with space and punctuations.
26
+ // For a full state machine chart, see
27
+ // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png
28
+ // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png
29
+ switch (state) {
30
+ case 0 /* Start */:
31
+ state = space
32
+ ? 4 /* Space */
33
+ : punctuation
34
+ ? 1 /* Punctuation */
35
+ : 2 /* Text */;
36
+ curr = iterator.next(true /*delete*/);
37
+ break;
38
+ case 1 /* Punctuation */:
39
+ if (deleteNext && space) {
40
+ state = 3 /* NonText */;
41
+ curr = iterator.next(true /*delete*/);
42
+ }
43
+ else if (punctuation) {
44
+ curr = iterator.next(true /*delete*/);
45
+ }
46
+ else {
47
+ state = 5 /* End */;
48
+ }
49
+ break;
50
+ case 2 /* Text */:
51
+ if (deleteNext && space) {
52
+ state = 3 /* NonText */;
53
+ curr = iterator.next(true /*delete*/);
54
+ }
55
+ else if (text) {
56
+ curr = iterator.next(true /*delete*/);
57
+ }
58
+ else {
59
+ state = 5 /* End */;
60
+ }
61
+ break;
62
+ case 3 /* NonText */:
63
+ if (punctuation || !space) {
64
+ state = 5 /* End */;
65
+ }
66
+ else {
67
+ curr = iterator.next(true /*delete*/);
68
+ }
69
+ break;
70
+ case 4 /* Space */:
71
+ if (space) {
72
+ curr = iterator.next(true /*delete*/);
73
+ }
74
+ else if (punctuation) {
75
+ state = deleteNext ? 3 /* NonText */ : 1 /* Punctuation */;
76
+ curr = iterator.next(true /*delete*/);
77
+ }
78
+ else {
79
+ state = deleteNext ? 5 /* End */ : 2 /* Text */;
80
+ }
81
+ break;
82
+ }
83
+ }
84
+ };
85
+ }
86
+ function iterateSegments(paragraph, markerIndex, forward, context) {
87
+ var step, segments, preserveWhiteSpace, i, segment, _a, j, c, punctuation, space, text, newText;
88
+ return __generator(this, function (_b) {
89
+ switch (_b.label) {
90
+ case 0:
91
+ step = forward ? 1 : -1;
92
+ segments = paragraph.segments;
93
+ preserveWhiteSpace = isWhiteSpacePreserved(paragraph.format.whiteSpace);
94
+ i = markerIndex + step;
95
+ _b.label = 1;
96
+ case 1:
97
+ if (!(i >= 0 && i < segments.length)) return [3 /*break*/, 12];
98
+ segment = segments[i];
99
+ _a = segment.segmentType;
100
+ switch (_a) {
101
+ case 'Text': return [3 /*break*/, 2];
102
+ case 'Image': return [3 /*break*/, 7];
103
+ case 'SelectionMarker': return [3 /*break*/, 9];
104
+ }
105
+ return [3 /*break*/, 10];
106
+ case 2:
107
+ j = forward ? 0 : segment.text.length - 1;
108
+ _b.label = 3;
109
+ case 3:
110
+ if (!(j >= 0 && j < segment.text.length)) return [3 /*break*/, 6];
111
+ c = segment.text[j];
112
+ punctuation = isPunctuation(c);
113
+ space = isSpace(c);
114
+ text = !punctuation && !space;
115
+ return [4 /*yield*/, { punctuation: punctuation, space: space, text: text }];
116
+ case 4:
117
+ if (_b.sent()) {
118
+ newText = segment.text;
119
+ newText = newText.substring(0, j) + newText.substring(j + 1);
120
+ if (!preserveWhiteSpace) {
121
+ newText = normalizeText(newText, forward);
122
+ }
123
+ context.deleteResult = 'range';
124
+ if (newText) {
125
+ segment.text = newText;
126
+ if (step > 0) {
127
+ j -= step;
128
+ }
129
+ }
130
+ else {
131
+ segments.splice(i, 1);
132
+ if (step > 0) {
133
+ i -= step;
134
+ }
135
+ return [3 /*break*/, 6];
136
+ }
137
+ }
138
+ _b.label = 5;
139
+ case 5:
140
+ j += step;
141
+ return [3 /*break*/, 3];
142
+ case 6: return [3 /*break*/, 11];
143
+ case 7: return [4 /*yield*/, { punctuation: true, space: false, text: false }]; // Treat image as punctuation since they have the same behavior.
144
+ case 8:
145
+ if (_b.sent() // Treat image as punctuation since they have the same behavior.
146
+ ) {
147
+ segments.splice(i, 1);
148
+ if (step > 0) {
149
+ i -= step;
150
+ }
151
+ context.deleteResult = 'range';
152
+ }
153
+ return [3 /*break*/, 11];
154
+ case 9: return [3 /*break*/, 11];
155
+ case 10: return [2 /*return*/, null];
156
+ case 11:
157
+ i += step;
158
+ return [3 /*break*/, 1];
159
+ case 12: return [2 /*return*/, null];
160
+ }
161
+ });
162
+ }
163
+ /**
164
+ * @internal
165
+ */
166
+ export var forwardDeleteWordSelection = getDeleteWordSelection('forward');
167
+ /**
168
+ * @internal
169
+ */
170
+ export var backwardDeleteWordSelection = getDeleteWordSelection('backward');
171
171
  //# sourceMappingURL=deleteWordSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deleteWordSelection.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPunctuation, isSpace, normalizeText } from 'roosterjs-content-model-core';\r\nimport { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';\r\nimport type {\r\n ContentModelParagraph,\r\n DeleteSelectionContext,\r\n DeleteSelectionStep,\r\n} from 'roosterjs-content-model-types';\r\n\r\nconst enum DeleteWordState {\r\n Start,\r\n Punctuation,\r\n Text,\r\n NonText,\r\n Space,\r\n End,\r\n}\r\n\r\ninterface CharInfo {\r\n text: boolean;\r\n space: boolean;\r\n punctuation: boolean;\r\n}\r\n\r\nfunction getDeleteWordSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\r\n return context => {\r\n if (context.deleteResult != 'notDeleted') {\r\n return;\r\n }\r\n\r\n const { marker, paragraph } = context.insertPoint;\r\n const startIndex = paragraph.segments.indexOf(marker);\r\n const deleteNext = direction == 'forward';\r\n\r\n const iterator = iterateSegments(paragraph, startIndex, deleteNext, context);\r\n let curr = iterator.next();\r\n\r\n for (let state = DeleteWordState.Start; state != DeleteWordState.End && !curr.done; ) {\r\n const { punctuation, space, text } = curr.value;\r\n\r\n // This is a state machine of how to delete a whole word together with space and punctuations.\r\n // For a full state machine chart, see\r\n // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png\r\n // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png\r\n switch (state) {\r\n case DeleteWordState.Start:\r\n state = space\r\n ? DeleteWordState.Space\r\n : punctuation\r\n ? DeleteWordState.Punctuation\r\n : DeleteWordState.Text;\r\n curr = iterator.next(true /*delete*/);\r\n break;\r\n\r\n case DeleteWordState.Punctuation:\r\n if (deleteNext && space) {\r\n state = DeleteWordState.NonText;\r\n curr = iterator.next(true /*delete*/);\r\n } else if (punctuation) {\r\n curr = iterator.next(true /*delete*/);\r\n } else {\r\n state = DeleteWordState.End;\r\n }\r\n break;\r\n\r\n case DeleteWordState.Text:\r\n if (deleteNext && space) {\r\n state = DeleteWordState.NonText;\r\n curr = iterator.next(true /*delete*/);\r\n } else if (text) {\r\n curr = iterator.next(true /*delete*/);\r\n } else {\r\n state = DeleteWordState.End;\r\n }\r\n break;\r\n\r\n case DeleteWordState.NonText:\r\n if (punctuation || !space) {\r\n state = DeleteWordState.End;\r\n } else {\r\n curr = iterator.next(true /*delete*/);\r\n }\r\n break;\r\n\r\n case DeleteWordState.Space:\r\n if (space) {\r\n curr = iterator.next(true /*delete*/);\r\n } else if (punctuation) {\r\n state = deleteNext ? DeleteWordState.NonText : DeleteWordState.Punctuation;\r\n curr = iterator.next(true /*delete*/);\r\n } else {\r\n state = deleteNext ? DeleteWordState.End : DeleteWordState.Text;\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction* iterateSegments(\r\n paragraph: ContentModelParagraph,\r\n markerIndex: number,\r\n forward: boolean,\r\n context: DeleteSelectionContext\r\n): Generator<CharInfo, null, boolean> {\r\n const step = forward ? 1 : -1;\r\n const segments = paragraph.segments;\r\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph.format.whiteSpace);\r\n\r\n for (let i = markerIndex + step; i >= 0 && i < segments.length; i += step) {\r\n const segment = segments[i];\r\n\r\n switch (segment.segmentType) {\r\n case 'Text':\r\n for (\r\n let j = forward ? 0 : segment.text.length - 1;\r\n j >= 0 && j < segment.text.length;\r\n j += step\r\n ) {\r\n const c = segment.text[j];\r\n const punctuation = isPunctuation(c);\r\n const space = isSpace(c);\r\n const text = !punctuation && !space;\r\n\r\n if (yield { punctuation, space, text }) {\r\n let newText = segment.text;\r\n\r\n newText = newText.substring(0, j) + newText.substring(j + 1);\r\n\r\n if (!preserveWhiteSpace) {\r\n newText = normalizeText(newText, forward);\r\n }\r\n\r\n context.deleteResult = 'range';\r\n\r\n if (newText) {\r\n segment.text = newText;\r\n\r\n if (step > 0) {\r\n j -= step;\r\n }\r\n } else {\r\n segments.splice(i, 1);\r\n\r\n if (step > 0) {\r\n i -= step;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case 'Image':\r\n if (\r\n yield { punctuation: true, space: false, text: false } // Treat image as punctuation since they have the same behavior.\r\n ) {\r\n segments.splice(i, 1);\r\n\r\n if (step > 0) {\r\n i -= step;\r\n }\r\n\r\n context.deleteResult = 'range';\r\n }\r\n break;\r\n\r\n case 'SelectionMarker':\r\n break;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const forwardDeleteWordSelection = getDeleteWordSelection('forward');\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const backwardDeleteWordSelection = getDeleteWordSelection('backward');\r\n"]}
1
+ {"version":3,"file":"deleteWordSelection.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPunctuation, isSpace, normalizeText } from 'roosterjs-content-model-core';\nimport { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';\nimport type {\n ContentModelParagraph,\n DeleteSelectionContext,\n DeleteSelectionStep,\n} from 'roosterjs-content-model-types';\n\nconst enum DeleteWordState {\n Start,\n Punctuation,\n Text,\n NonText,\n Space,\n End,\n}\n\ninterface CharInfo {\n text: boolean;\n space: boolean;\n punctuation: boolean;\n}\n\nfunction getDeleteWordSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\n return context => {\n if (context.deleteResult != 'notDeleted') {\n return;\n }\n\n const { marker, paragraph } = context.insertPoint;\n const startIndex = paragraph.segments.indexOf(marker);\n const deleteNext = direction == 'forward';\n\n const iterator = iterateSegments(paragraph, startIndex, deleteNext, context);\n let curr = iterator.next();\n\n for (let state = DeleteWordState.Start; state != DeleteWordState.End && !curr.done; ) {\n const { punctuation, space, text } = curr.value;\n\n // This is a state machine of how to delete a whole word together with space and punctuations.\n // For a full state machine chart, see\n // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png\n // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png\n switch (state) {\n case DeleteWordState.Start:\n state = space\n ? DeleteWordState.Space\n : punctuation\n ? DeleteWordState.Punctuation\n : DeleteWordState.Text;\n curr = iterator.next(true /*delete*/);\n break;\n\n case DeleteWordState.Punctuation:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.Text:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (text) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.NonText:\n if (punctuation || !space) {\n state = DeleteWordState.End;\n } else {\n curr = iterator.next(true /*delete*/);\n }\n break;\n\n case DeleteWordState.Space:\n if (space) {\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n state = deleteNext ? DeleteWordState.NonText : DeleteWordState.Punctuation;\n curr = iterator.next(true /*delete*/);\n } else {\n state = deleteNext ? DeleteWordState.End : DeleteWordState.Text;\n }\n break;\n }\n }\n };\n}\n\nfunction* iterateSegments(\n paragraph: ContentModelParagraph,\n markerIndex: number,\n forward: boolean,\n context: DeleteSelectionContext\n): Generator<CharInfo, null, boolean> {\n const step = forward ? 1 : -1;\n const segments = paragraph.segments;\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph.format.whiteSpace);\n\n for (let i = markerIndex + step; i >= 0 && i < segments.length; i += step) {\n const segment = segments[i];\n\n switch (segment.segmentType) {\n case 'Text':\n for (\n let j = forward ? 0 : segment.text.length - 1;\n j >= 0 && j < segment.text.length;\n j += step\n ) {\n const c = segment.text[j];\n const punctuation = isPunctuation(c);\n const space = isSpace(c);\n const text = !punctuation && !space;\n\n if (yield { punctuation, space, text }) {\n let newText = segment.text;\n\n newText = newText.substring(0, j) + newText.substring(j + 1);\n\n if (!preserveWhiteSpace) {\n newText = normalizeText(newText, forward);\n }\n\n context.deleteResult = 'range';\n\n if (newText) {\n segment.text = newText;\n\n if (step > 0) {\n j -= step;\n }\n } else {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n break;\n }\n }\n }\n break;\n\n case 'Image':\n if (\n yield { punctuation: true, space: false, text: false } // Treat image as punctuation since they have the same behavior.\n ) {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n context.deleteResult = 'range';\n }\n break;\n\n case 'SelectionMarker':\n break;\n\n default:\n return null;\n }\n }\n\n return null;\n}\n\n/**\n * @internal\n */\nexport const forwardDeleteWordSelection = getDeleteWordSelection('forward');\n\n/**\n * @internal\n */\nexport const backwardDeleteWordSelection = getDeleteWordSelection('backward');\n"]}
@@ -1,14 +1,14 @@
1
- import type { ContentModelDocument, DeleteResult, FormatContentModelContext, IStandaloneEditor } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
5
- */
6
- export declare function handleKeyboardEventResult(editor: IStandaloneEditor, model: ContentModelDocument, rawEvent: KeyboardEvent, result: DeleteResult, context: FormatContentModelContext): boolean;
7
- /**
8
- * @internal
9
- */
10
- export declare function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean): boolean;
11
- /**
12
- * @internal
13
- */
14
- export declare function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent): boolean;
1
+ import type { ContentModelDocument, DeleteResult, FormatContentModelContext, IStandaloneEditor } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
5
+ */
6
+ export declare function handleKeyboardEventResult(editor: IStandaloneEditor, model: ContentModelDocument, rawEvent: KeyboardEvent, result: DeleteResult, context: FormatContentModelContext): boolean;
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean): boolean;
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent): boolean;
@@ -1,49 +1,49 @@
1
- import { normalizeContentModel } from 'roosterjs-content-model-dom';
2
- /**
3
- * @internal
4
- * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
5
- */
6
- export function handleKeyboardEventResult(editor, model, rawEvent, result, context) {
7
- context.skipUndoSnapshot = true;
8
- context.clearModelCache = false;
9
- switch (result) {
10
- case 'notDeleted':
11
- // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid
12
- context.clearModelCache = true;
13
- // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model
14
- return false;
15
- case 'nothingToDelete':
16
- // We known there is nothing to delete, no need to let browser keep handling the event
17
- rawEvent.preventDefault();
18
- return false;
19
- case 'range':
20
- case 'singleChar':
21
- // We have deleted what we need from content model, no need to let browser keep handling the event
22
- rawEvent.preventDefault();
23
- normalizeContentModel(model);
24
- if (result == 'range') {
25
- // A range is about to be deleted, so add an undo snapshot immediately
26
- context.skipUndoSnapshot = false;
27
- }
28
- // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.
29
- // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.
30
- editor.triggerEvent('beforeKeyboardEditing', {
31
- rawEvent: rawEvent,
32
- });
33
- return true;
34
- }
35
- }
36
- /**
37
- * @internal
38
- */
39
- export function shouldDeleteWord(rawEvent, isMac) {
40
- return ((isMac && rawEvent.altKey && !rawEvent.metaKey) ||
41
- (!isMac && rawEvent.ctrlKey && !rawEvent.altKey));
42
- }
43
- /**
44
- * @internal
45
- */
46
- export function shouldDeleteAllSegmentsBefore(rawEvent) {
47
- return rawEvent.metaKey && !rawEvent.altKey;
48
- }
1
+ import { normalizeContentModel } from 'roosterjs-content-model-dom';
2
+ /**
3
+ * @internal
4
+ * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
5
+ */
6
+ export function handleKeyboardEventResult(editor, model, rawEvent, result, context) {
7
+ context.skipUndoSnapshot = true;
8
+ context.clearModelCache = false;
9
+ switch (result) {
10
+ case 'notDeleted':
11
+ // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid
12
+ context.clearModelCache = true;
13
+ // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model
14
+ return false;
15
+ case 'nothingToDelete':
16
+ // We known there is nothing to delete, no need to let browser keep handling the event
17
+ rawEvent.preventDefault();
18
+ return false;
19
+ case 'range':
20
+ case 'singleChar':
21
+ // We have deleted what we need from content model, no need to let browser keep handling the event
22
+ rawEvent.preventDefault();
23
+ normalizeContentModel(model);
24
+ if (result == 'range') {
25
+ // A range is about to be deleted, so add an undo snapshot immediately
26
+ context.skipUndoSnapshot = false;
27
+ }
28
+ // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.
29
+ // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.
30
+ editor.triggerEvent('beforeKeyboardEditing', {
31
+ rawEvent: rawEvent,
32
+ });
33
+ return true;
34
+ }
35
+ }
36
+ /**
37
+ * @internal
38
+ */
39
+ export function shouldDeleteWord(rawEvent, isMac) {
40
+ return ((isMac && rawEvent.altKey && !rawEvent.metaKey) ||
41
+ (!isMac && rawEvent.ctrlKey && !rawEvent.altKey));
42
+ }
43
+ /**
44
+ * @internal
45
+ */
46
+ export function shouldDeleteAllSegmentsBefore(rawEvent) {
47
+ return rawEvent.metaKey && !rawEvent.altKey;
48
+ }
49
49
  //# sourceMappingURL=handleKeyboardEventCommon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleKeyboardEventCommon.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAQpE;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACrC,MAAyB,EACzB,KAA2B,EAC3B,QAAuB,EACvB,MAAoB,EACpB,OAAkC;IAElC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;IAEhC,QAAQ,MAAM,EAAE;QACZ,KAAK,YAAY;YACb,kHAAkH;YAClH,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAE/B,6GAA6G;YAC7G,OAAO,KAAK,CAAC;QAEjB,KAAK,iBAAiB;YAClB,sFAAsF;YACtF,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QAEjB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY;YACb,kGAAkG;YAClG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAE7B,IAAI,MAAM,IAAI,OAAO,EAAE;gBACnB,sEAAsE;gBACtE,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACpC;YAED,6GAA6G;YAC7G,oHAAoH;YACpH,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;gBACzC,QAAQ,UAAA;aACX,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;KACnB;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAuB,EAAE,KAAc;IACpE,OAAO,CACH,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/C,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAuB;IACjE,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,CAAC","sourcesContent":["import { normalizeContentModel } from 'roosterjs-content-model-dom';\r\nimport type {\r\n ContentModelDocument,\r\n DeleteResult,\r\n FormatContentModelContext,\r\n IStandaloneEditor,\r\n} from 'roosterjs-content-model-types';\r\n\r\n/**\r\n * @internal\r\n * @return True means content is changed, so need to rewrite content model to editor. Otherwise false\r\n */\r\nexport function handleKeyboardEventResult(\r\n editor: IStandaloneEditor,\r\n model: ContentModelDocument,\r\n rawEvent: KeyboardEvent,\r\n result: DeleteResult,\r\n context: FormatContentModelContext\r\n): boolean {\r\n context.skipUndoSnapshot = true;\r\n context.clearModelCache = false;\r\n\r\n switch (result) {\r\n case 'notDeleted':\r\n // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid\r\n context.clearModelCache = true;\r\n\r\n // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model\r\n return false;\r\n\r\n case 'nothingToDelete':\r\n // We known there is nothing to delete, no need to let browser keep handling the event\r\n rawEvent.preventDefault();\r\n return false;\r\n\r\n case 'range':\r\n case 'singleChar':\r\n // We have deleted what we need from content model, no need to let browser keep handling the event\r\n rawEvent.preventDefault();\r\n normalizeContentModel(model);\r\n\r\n if (result == 'range') {\r\n // A range is about to be deleted, so add an undo snapshot immediately\r\n context.skipUndoSnapshot = false;\r\n }\r\n\r\n // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.\r\n // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.\r\n editor.triggerEvent('beforeKeyboardEditing', {\r\n rawEvent,\r\n });\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean) {\r\n return (\r\n (isMac && rawEvent.altKey && !rawEvent.metaKey) ||\r\n (!isMac && rawEvent.ctrlKey && !rawEvent.altKey)\r\n );\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent) {\r\n return rawEvent.metaKey && !rawEvent.altKey;\r\n}\r\n"]}
1
+ {"version":3,"file":"handleKeyboardEventCommon.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAQpE;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACrC,MAAyB,EACzB,KAA2B,EAC3B,QAAuB,EACvB,MAAoB,EACpB,OAAkC;IAElC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;IAEhC,QAAQ,MAAM,EAAE;QACZ,KAAK,YAAY;YACb,kHAAkH;YAClH,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAE/B,6GAA6G;YAC7G,OAAO,KAAK,CAAC;QAEjB,KAAK,iBAAiB;YAClB,sFAAsF;YACtF,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QAEjB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY;YACb,kGAAkG;YAClG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAE7B,IAAI,MAAM,IAAI,OAAO,EAAE;gBACnB,sEAAsE;gBACtE,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACpC;YAED,6GAA6G;YAC7G,oHAAoH;YACpH,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;gBACzC,QAAQ,UAAA;aACX,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;KACnB;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAuB,EAAE,KAAc;IACpE,OAAO,CACH,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/C,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAuB;IACjE,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,CAAC","sourcesContent":["import { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport type {\n ContentModelDocument,\n DeleteResult,\n FormatContentModelContext,\n IStandaloneEditor,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * @return True means content is changed, so need to rewrite content model to editor. Otherwise false\n */\nexport function handleKeyboardEventResult(\n editor: IStandaloneEditor,\n model: ContentModelDocument,\n rawEvent: KeyboardEvent,\n result: DeleteResult,\n context: FormatContentModelContext\n): boolean {\n context.skipUndoSnapshot = true;\n context.clearModelCache = false;\n\n switch (result) {\n case 'notDeleted':\n // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid\n context.clearModelCache = true;\n\n // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model\n return false;\n\n case 'nothingToDelete':\n // We known there is nothing to delete, no need to let browser keep handling the event\n rawEvent.preventDefault();\n return false;\n\n case 'range':\n case 'singleChar':\n // We have deleted what we need from content model, no need to let browser keep handling the event\n rawEvent.preventDefault();\n normalizeContentModel(model);\n\n if (result == 'range') {\n // A range is about to be deleted, so add an undo snapshot immediately\n context.skipUndoSnapshot = false;\n }\n\n // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.\n // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.\n editor.triggerEvent('beforeKeyboardEditing', {\n rawEvent,\n });\n\n return true;\n }\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean) {\n return (\n (isMac && rawEvent.altKey && !rawEvent.metaKey) ||\n (!isMac && rawEvent.ctrlKey && !rawEvent.altKey)\n );\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent) {\n return rawEvent.metaKey && !rawEvent.altKey;\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { DeleteSelectionStep } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- */
5
- export declare const handleEnterOnList: DeleteSelectionStep;
1
+ import type { DeleteSelectionStep } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare const handleEnterOnList: DeleteSelectionStep;