roosterjs-content-model-plugins 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/lib/autoFormat/AutoFormatPlugin.d.ts +53 -0
  2. package/lib/autoFormat/AutoFormatPlugin.js +81 -0
  3. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -0
  4. package/lib/autoFormat/keyboardListTrigger.d.ts +5 -0
  5. package/lib/autoFormat/keyboardListTrigger.js +46 -0
  6. package/lib/autoFormat/keyboardListTrigger.js.map +1 -0
  7. package/lib/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
  8. package/lib/autoFormat/utils/convertAlphaToDecimals.js +23 -0
  9. package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
  10. package/lib/autoFormat/utils/getIndex.d.ts +4 -0
  11. package/lib/autoFormat/utils/getIndex.js +14 -0
  12. package/lib/autoFormat/utils/getIndex.js.map +1 -0
  13. package/lib/autoFormat/utils/getListTypeStyle.d.ts +14 -0
  14. package/lib/autoFormat/utils/getListTypeStyle.js +88 -0
  15. package/lib/autoFormat/utils/getListTypeStyle.js.map +1 -0
  16. package/lib/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
  17. package/lib/autoFormat/utils/getNumberingListStyle.js +154 -0
  18. package/lib/autoFormat/utils/getNumberingListStyle.js.map +1 -0
  19. package/{lib-mjs/edit/ContentModelEditPlugin.d.ts → lib/edit/EditPlugin.d.ts} +39 -35
  20. package/lib/edit/EditPlugin.js +129 -0
  21. package/lib/edit/EditPlugin.js.map +1 -0
  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 -0
  38. package/lib/edit/inputSteps/handleEnterOnList.js +68 -0
  39. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -0
  40. package/lib/edit/keyboardDelete.d.ts +9 -8
  41. package/lib/edit/keyboardDelete.js +71 -74
  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 -50
  45. package/lib/edit/keyboardInput.js.map +1 -1
  46. package/lib/edit/keyboardTab.d.ts +5 -0
  47. package/lib/edit/keyboardTab.js +35 -0
  48. package/lib/edit/keyboardTab.js.map +1 -0
  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-mjs/paste/ContentModelPastePlugin.d.ts → lib/paste/PastePlugin.d.ts} +43 -43
  59. package/lib/paste/{ContentModelPastePlugin.js → PastePlugin.js} +131 -132
  60. package/lib/paste/PastePlugin.js.map +1 -0
  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 -0
  131. package/lib/pluginUtils/CreateElement/CreateElementData.js +3 -0
  132. package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
  133. package/lib/pluginUtils/CreateElement/createElement.d.ts +9 -0
  134. package/lib/pluginUtils/CreateElement/createElement.js +51 -0
  135. package/lib/pluginUtils/CreateElement/createElement.js.map +1 -0
  136. package/lib/pluginUtils/Disposable.d.ts +10 -0
  137. package/lib/pluginUtils/Disposable.js +3 -0
  138. package/lib/pluginUtils/Disposable.js.map +1 -0
  139. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
  140. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js +3 -0
  141. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
  142. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
  143. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +120 -0
  144. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
  145. package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
  146. package/lib/pluginUtils/Rect/getIntersectedRect.js +45 -0
  147. package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
  148. package/lib/pluginUtils/Rect/normalizeRect.d.ts +7 -0
  149. package/lib/pluginUtils/Rect/normalizeRect.js +20 -0
  150. package/lib/pluginUtils/Rect/normalizeRect.js.map +1 -0
  151. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +53 -0
  152. package/lib-amd/autoFormat/AutoFormatPlugin.js +82 -0
  153. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -0
  154. package/lib-amd/autoFormat/keyboardListTrigger.d.ts +5 -0
  155. package/lib-amd/autoFormat/keyboardListTrigger.js +44 -0
  156. package/lib-amd/autoFormat/keyboardListTrigger.js.map +1 -0
  157. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
  158. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js +25 -0
  159. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
  160. package/lib-amd/autoFormat/utils/getIndex.d.ts +4 -0
  161. package/lib-amd/autoFormat/utils/getIndex.js +15 -0
  162. package/lib-amd/autoFormat/utils/getIndex.js.map +1 -0
  163. package/lib-amd/autoFormat/utils/getListTypeStyle.d.ts +14 -0
  164. package/lib-amd/autoFormat/utils/getListTypeStyle.js +87 -0
  165. package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +1 -0
  166. package/lib-amd/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
  167. package/lib-amd/autoFormat/utils/getNumberingListStyle.js +154 -0
  168. package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +1 -0
  169. package/lib-amd/edit/{ContentModelEditPlugin.d.ts → EditPlugin.d.ts} +39 -35
  170. package/lib-amd/edit/EditPlugin.js +128 -0
  171. package/lib-amd/edit/EditPlugin.js.map +1 -0
  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 -0
  188. package/lib-amd/edit/inputSteps/handleEnterOnList.js +67 -0
  189. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -0
  190. package/lib-amd/edit/keyboardDelete.d.ts +9 -8
  191. package/lib-amd/edit/keyboardDelete.js +66 -69
  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 -50
  195. package/lib-amd/edit/keyboardInput.js.map +1 -1
  196. package/lib-amd/edit/keyboardTab.d.ts +5 -0
  197. package/lib-amd/edit/keyboardTab.js +35 -0
  198. package/lib-amd/edit/keyboardTab.js.map +1 -0
  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/paste/ContentModelPastePlugin.d.ts → lib-amd/paste/PastePlugin.d.ts} +43 -43
  209. package/lib-amd/paste/{ContentModelPastePlugin.js → PastePlugin.js} +123 -124
  210. package/lib-amd/paste/PastePlugin.js.map +1 -0
  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 -0
  281. package/lib-amd/pluginUtils/CreateElement/CreateElementData.js +5 -0
  282. package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
  283. package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +9 -0
  284. package/lib-amd/pluginUtils/CreateElement/createElement.js +52 -0
  285. package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -0
  286. package/lib-amd/pluginUtils/Disposable.d.ts +10 -0
  287. package/lib-amd/pluginUtils/Disposable.js +5 -0
  288. package/lib-amd/pluginUtils/Disposable.js.map +1 -0
  289. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
  290. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js +5 -0
  291. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
  292. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
  293. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +121 -0
  294. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
  295. package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
  296. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +45 -0
  297. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
  298. package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +7 -0
  299. package/lib-amd/pluginUtils/Rect/normalizeRect.js +22 -0
  300. package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +1 -0
  301. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +53 -0
  302. package/lib-mjs/autoFormat/AutoFormatPlugin.js +78 -0
  303. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -0
  304. package/lib-mjs/autoFormat/keyboardListTrigger.d.ts +5 -0
  305. package/lib-mjs/autoFormat/keyboardListTrigger.js +42 -0
  306. package/lib-mjs/autoFormat/keyboardListTrigger.js.map +1 -0
  307. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.d.ts +7 -0
  308. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js +19 -0
  309. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +1 -0
  310. package/lib-mjs/autoFormat/utils/getIndex.d.ts +4 -0
  311. package/lib-mjs/autoFormat/utils/getIndex.js +10 -0
  312. package/lib-mjs/autoFormat/utils/getIndex.js.map +1 -0
  313. package/lib-mjs/autoFormat/utils/getListTypeStyle.d.ts +14 -0
  314. package/lib-mjs/autoFormat/utils/getListTypeStyle.js +84 -0
  315. package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +1 -0
  316. package/lib-mjs/autoFormat/utils/getNumberingListStyle.d.ts +4 -0
  317. package/lib-mjs/autoFormat/utils/getNumberingListStyle.js +150 -0
  318. package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +1 -0
  319. package/{lib/edit/ContentModelEditPlugin.d.ts → lib-mjs/edit/EditPlugin.d.ts} +39 -35
  320. package/lib-mjs/edit/EditPlugin.js +126 -0
  321. package/lib-mjs/edit/EditPlugin.js.map +1 -0
  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 -0
  338. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +64 -0
  339. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -0
  340. package/lib-mjs/edit/keyboardDelete.d.ts +9 -8
  341. package/lib-mjs/edit/keyboardDelete.js +67 -70
  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 -46
  345. package/lib-mjs/edit/keyboardInput.js.map +1 -1
  346. package/lib-mjs/edit/keyboardTab.d.ts +5 -0
  347. package/lib-mjs/edit/keyboardTab.js +31 -0
  348. package/lib-mjs/edit/keyboardTab.js.map +1 -0
  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-amd/paste/ContentModelPastePlugin.d.ts → lib-mjs/paste/PastePlugin.d.ts} +43 -43
  359. package/lib-mjs/paste/{ContentModelPastePlugin.js → PastePlugin.js} +128 -129
  360. package/lib-mjs/paste/PastePlugin.js.map +1 -0
  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 -0
  431. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js +2 -0
  432. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -0
  433. package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +9 -0
  434. package/lib-mjs/pluginUtils/CreateElement/createElement.js +48 -0
  435. package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -0
  436. package/lib-mjs/pluginUtils/Disposable.d.ts +10 -0
  437. package/lib-mjs/pluginUtils/Disposable.js +2 -0
  438. package/lib-mjs/pluginUtils/Disposable.js.map +1 -0
  439. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +45 -0
  440. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js +2 -0
  441. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -0
  442. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +39 -0
  443. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +118 -0
  444. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -0
  445. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +27 -0
  446. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +42 -0
  447. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -0
  448. package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +7 -0
  449. package/lib-mjs/pluginUtils/Rect/normalizeRect.js +17 -0
  450. package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +1 -0
  451. package/package.json +5 -7
  452. package/lib/edit/ContentModelEditPlugin.js +0 -75
  453. package/lib/edit/ContentModelEditPlugin.js.map +0 -1
  454. package/lib/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
  455. package/lib/entityDelimiter/EntityDelimiterPlugin.js +0 -257
  456. package/lib/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
  457. package/lib/paste/ContentModelPastePlugin.js.map +0 -1
  458. package/lib-amd/edit/ContentModelEditPlugin.js +0 -75
  459. package/lib-amd/edit/ContentModelEditPlugin.js.map +0 -1
  460. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
  461. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js +0 -256
  462. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
  463. package/lib-amd/paste/ContentModelPastePlugin.js.map +0 -1
  464. package/lib-mjs/edit/ContentModelEditPlugin.js +0 -72
  465. package/lib-mjs/edit/ContentModelEditPlugin.js.map +0 -1
  466. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.d.ts +0 -35
  467. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js +0 -253
  468. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js.map +0 -1
  469. package/lib-mjs/paste/ContentModelPastePlugin.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import type { DeleteSelectionStep } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- */
5
- export declare const forwardDeleteWordSelection: DeleteSelectionStep;
6
- /**
7
- * @internal
8
- */
9
- export declare const backwardDeleteWordSelection: DeleteSelectionStep;
1
+ import type { DeleteSelectionStep } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare const forwardDeleteWordSelection: DeleteSelectionStep;
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const backwardDeleteWordSelection: DeleteSelectionStep;
@@ -1,174 +1,174 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.backwardDeleteWordSelection = exports.forwardDeleteWordSelection = void 0;
4
- var tslib_1 = require("tslib");
5
- var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
6
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
7
- var DeleteWordState;
8
- (function (DeleteWordState) {
9
- DeleteWordState[DeleteWordState["Start"] = 0] = "Start";
10
- DeleteWordState[DeleteWordState["Punctuation"] = 1] = "Punctuation";
11
- DeleteWordState[DeleteWordState["Text"] = 2] = "Text";
12
- DeleteWordState[DeleteWordState["NonText"] = 3] = "NonText";
13
- DeleteWordState[DeleteWordState["Space"] = 4] = "Space";
14
- DeleteWordState[DeleteWordState["End"] = 5] = "End";
15
- })(DeleteWordState || (DeleteWordState = {}));
16
- function getDeleteWordSelection(direction) {
17
- return function (context) {
18
- if (context.deleteResult != 'notDeleted') {
19
- return;
20
- }
21
- var _a = context.insertPoint, marker = _a.marker, paragraph = _a.paragraph;
22
- var startIndex = paragraph.segments.indexOf(marker);
23
- var deleteNext = direction == 'forward';
24
- var iterator = iterateSegments(paragraph, startIndex, deleteNext, context);
25
- var curr = iterator.next();
26
- for (var state = 0 /* Start */; state != 5 /* End */ && !curr.done;) {
27
- var _b = curr.value, punctuation = _b.punctuation, space = _b.space, text = _b.text;
28
- // This is a state machine of how to delete a whole word together with space and punctuations.
29
- // For a full state machine chart, see
30
- // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png
31
- // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png
32
- switch (state) {
33
- case 0 /* Start */:
34
- state = space
35
- ? 4 /* Space */
36
- : punctuation
37
- ? 1 /* Punctuation */
38
- : 2 /* Text */;
39
- curr = iterator.next(true /*delete*/);
40
- break;
41
- case 1 /* Punctuation */:
42
- if (deleteNext && space) {
43
- state = 3 /* NonText */;
44
- curr = iterator.next(true /*delete*/);
45
- }
46
- else if (punctuation) {
47
- curr = iterator.next(true /*delete*/);
48
- }
49
- else {
50
- state = 5 /* End */;
51
- }
52
- break;
53
- case 2 /* Text */:
54
- if (deleteNext && space) {
55
- state = 3 /* NonText */;
56
- curr = iterator.next(true /*delete*/);
57
- }
58
- else if (text) {
59
- curr = iterator.next(true /*delete*/);
60
- }
61
- else {
62
- state = 5 /* End */;
63
- }
64
- break;
65
- case 3 /* NonText */:
66
- if (punctuation || !space) {
67
- state = 5 /* End */;
68
- }
69
- else {
70
- curr = iterator.next(true /*delete*/);
71
- }
72
- break;
73
- case 4 /* Space */:
74
- if (space) {
75
- curr = iterator.next(true /*delete*/);
76
- }
77
- else if (punctuation) {
78
- state = deleteNext ? 3 /* NonText */ : 1 /* Punctuation */;
79
- curr = iterator.next(true /*delete*/);
80
- }
81
- else {
82
- state = deleteNext ? 5 /* End */ : 2 /* Text */;
83
- }
84
- break;
85
- }
86
- }
87
- };
88
- }
89
- function iterateSegments(paragraph, markerIndex, forward, context) {
90
- var step, segments, preserveWhiteSpace, i, segment, _a, j, c, punctuation, space, text, newText;
91
- return (0, tslib_1.__generator)(this, function (_b) {
92
- switch (_b.label) {
93
- case 0:
94
- step = forward ? 1 : -1;
95
- segments = paragraph.segments;
96
- preserveWhiteSpace = (0, roosterjs_content_model_dom_1.isWhiteSpacePreserved)(paragraph.format.whiteSpace);
97
- i = markerIndex + step;
98
- _b.label = 1;
99
- case 1:
100
- if (!(i >= 0 && i < segments.length)) return [3 /*break*/, 12];
101
- segment = segments[i];
102
- _a = segment.segmentType;
103
- switch (_a) {
104
- case 'Text': return [3 /*break*/, 2];
105
- case 'Image': return [3 /*break*/, 7];
106
- case 'SelectionMarker': return [3 /*break*/, 9];
107
- }
108
- return [3 /*break*/, 10];
109
- case 2:
110
- j = forward ? 0 : segment.text.length - 1;
111
- _b.label = 3;
112
- case 3:
113
- if (!(j >= 0 && j < segment.text.length)) return [3 /*break*/, 6];
114
- c = segment.text[j];
115
- punctuation = (0, roosterjs_content_model_core_1.isPunctuation)(c);
116
- space = (0, roosterjs_content_model_core_1.isSpace)(c);
117
- text = !punctuation && !space;
118
- return [4 /*yield*/, { punctuation: punctuation, space: space, text: text }];
119
- case 4:
120
- if (_b.sent()) {
121
- newText = segment.text;
122
- newText = newText.substring(0, j) + newText.substring(j + 1);
123
- if (!preserveWhiteSpace) {
124
- newText = (0, roosterjs_content_model_core_1.normalizeText)(newText, forward);
125
- }
126
- context.deleteResult = 'range';
127
- if (newText) {
128
- segment.text = newText;
129
- if (step > 0) {
130
- j -= step;
131
- }
132
- }
133
- else {
134
- segments.splice(i, 1);
135
- if (step > 0) {
136
- i -= step;
137
- }
138
- return [3 /*break*/, 6];
139
- }
140
- }
141
- _b.label = 5;
142
- case 5:
143
- j += step;
144
- return [3 /*break*/, 3];
145
- case 6: return [3 /*break*/, 11];
146
- case 7: return [4 /*yield*/, { punctuation: true, space: false, text: false }]; // Treat image as punctuation since they have the same behavior.
147
- case 8:
148
- if (_b.sent() // Treat image as punctuation since they have the same behavior.
149
- ) {
150
- segments.splice(i, 1);
151
- if (step > 0) {
152
- i -= step;
153
- }
154
- context.deleteResult = 'range';
155
- }
156
- return [3 /*break*/, 11];
157
- case 9: return [3 /*break*/, 11];
158
- case 10: return [2 /*return*/, null];
159
- case 11:
160
- i += step;
161
- return [3 /*break*/, 1];
162
- case 12: return [2 /*return*/, null];
163
- }
164
- });
165
- }
166
- /**
167
- * @internal
168
- */
169
- exports.forwardDeleteWordSelection = getDeleteWordSelection('forward');
170
- /**
171
- * @internal
172
- */
173
- exports.backwardDeleteWordSelection = getDeleteWordSelection('backward');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.backwardDeleteWordSelection = exports.forwardDeleteWordSelection = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
6
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
7
+ var DeleteWordState;
8
+ (function (DeleteWordState) {
9
+ DeleteWordState[DeleteWordState["Start"] = 0] = "Start";
10
+ DeleteWordState[DeleteWordState["Punctuation"] = 1] = "Punctuation";
11
+ DeleteWordState[DeleteWordState["Text"] = 2] = "Text";
12
+ DeleteWordState[DeleteWordState["NonText"] = 3] = "NonText";
13
+ DeleteWordState[DeleteWordState["Space"] = 4] = "Space";
14
+ DeleteWordState[DeleteWordState["End"] = 5] = "End";
15
+ })(DeleteWordState || (DeleteWordState = {}));
16
+ function getDeleteWordSelection(direction) {
17
+ return function (context) {
18
+ if (context.deleteResult != 'notDeleted') {
19
+ return;
20
+ }
21
+ var _a = context.insertPoint, marker = _a.marker, paragraph = _a.paragraph;
22
+ var startIndex = paragraph.segments.indexOf(marker);
23
+ var deleteNext = direction == 'forward';
24
+ var iterator = iterateSegments(paragraph, startIndex, deleteNext, context);
25
+ var curr = iterator.next();
26
+ for (var state = 0 /* Start */; state != 5 /* End */ && !curr.done;) {
27
+ var _b = curr.value, punctuation = _b.punctuation, space = _b.space, text = _b.text;
28
+ // This is a state machine of how to delete a whole word together with space and punctuations.
29
+ // For a full state machine chart, see
30
+ // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png
31
+ // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png
32
+ switch (state) {
33
+ case 0 /* Start */:
34
+ state = space
35
+ ? 4 /* Space */
36
+ : punctuation
37
+ ? 1 /* Punctuation */
38
+ : 2 /* Text */;
39
+ curr = iterator.next(true /*delete*/);
40
+ break;
41
+ case 1 /* Punctuation */:
42
+ if (deleteNext && space) {
43
+ state = 3 /* NonText */;
44
+ curr = iterator.next(true /*delete*/);
45
+ }
46
+ else if (punctuation) {
47
+ curr = iterator.next(true /*delete*/);
48
+ }
49
+ else {
50
+ state = 5 /* End */;
51
+ }
52
+ break;
53
+ case 2 /* Text */:
54
+ if (deleteNext && space) {
55
+ state = 3 /* NonText */;
56
+ curr = iterator.next(true /*delete*/);
57
+ }
58
+ else if (text) {
59
+ curr = iterator.next(true /*delete*/);
60
+ }
61
+ else {
62
+ state = 5 /* End */;
63
+ }
64
+ break;
65
+ case 3 /* NonText */:
66
+ if (punctuation || !space) {
67
+ state = 5 /* End */;
68
+ }
69
+ else {
70
+ curr = iterator.next(true /*delete*/);
71
+ }
72
+ break;
73
+ case 4 /* Space */:
74
+ if (space) {
75
+ curr = iterator.next(true /*delete*/);
76
+ }
77
+ else if (punctuation) {
78
+ state = deleteNext ? 3 /* NonText */ : 1 /* Punctuation */;
79
+ curr = iterator.next(true /*delete*/);
80
+ }
81
+ else {
82
+ state = deleteNext ? 5 /* End */ : 2 /* Text */;
83
+ }
84
+ break;
85
+ }
86
+ }
87
+ };
88
+ }
89
+ function iterateSegments(paragraph, markerIndex, forward, context) {
90
+ var step, segments, preserveWhiteSpace, i, segment, _a, j, c, punctuation, space, text, newText;
91
+ return (0, tslib_1.__generator)(this, function (_b) {
92
+ switch (_b.label) {
93
+ case 0:
94
+ step = forward ? 1 : -1;
95
+ segments = paragraph.segments;
96
+ preserveWhiteSpace = (0, roosterjs_content_model_dom_1.isWhiteSpacePreserved)(paragraph.format.whiteSpace);
97
+ i = markerIndex + step;
98
+ _b.label = 1;
99
+ case 1:
100
+ if (!(i >= 0 && i < segments.length)) return [3 /*break*/, 12];
101
+ segment = segments[i];
102
+ _a = segment.segmentType;
103
+ switch (_a) {
104
+ case 'Text': return [3 /*break*/, 2];
105
+ case 'Image': return [3 /*break*/, 7];
106
+ case 'SelectionMarker': return [3 /*break*/, 9];
107
+ }
108
+ return [3 /*break*/, 10];
109
+ case 2:
110
+ j = forward ? 0 : segment.text.length - 1;
111
+ _b.label = 3;
112
+ case 3:
113
+ if (!(j >= 0 && j < segment.text.length)) return [3 /*break*/, 6];
114
+ c = segment.text[j];
115
+ punctuation = (0, roosterjs_content_model_core_1.isPunctuation)(c);
116
+ space = (0, roosterjs_content_model_core_1.isSpace)(c);
117
+ text = !punctuation && !space;
118
+ return [4 /*yield*/, { punctuation: punctuation, space: space, text: text }];
119
+ case 4:
120
+ if (_b.sent()) {
121
+ newText = segment.text;
122
+ newText = newText.substring(0, j) + newText.substring(j + 1);
123
+ if (!preserveWhiteSpace) {
124
+ newText = (0, roosterjs_content_model_core_1.normalizeText)(newText, forward);
125
+ }
126
+ context.deleteResult = 'range';
127
+ if (newText) {
128
+ segment.text = newText;
129
+ if (step > 0) {
130
+ j -= step;
131
+ }
132
+ }
133
+ else {
134
+ segments.splice(i, 1);
135
+ if (step > 0) {
136
+ i -= step;
137
+ }
138
+ return [3 /*break*/, 6];
139
+ }
140
+ }
141
+ _b.label = 5;
142
+ case 5:
143
+ j += step;
144
+ return [3 /*break*/, 3];
145
+ case 6: return [3 /*break*/, 11];
146
+ case 7: return [4 /*yield*/, { punctuation: true, space: false, text: false }]; // Treat image as punctuation since they have the same behavior.
147
+ case 8:
148
+ if (_b.sent() // Treat image as punctuation since they have the same behavior.
149
+ ) {
150
+ segments.splice(i, 1);
151
+ if (step > 0) {
152
+ i -= step;
153
+ }
154
+ context.deleteResult = 'range';
155
+ }
156
+ return [3 /*break*/, 11];
157
+ case 9: return [3 /*break*/, 11];
158
+ case 10: return [2 /*return*/, null];
159
+ case 11:
160
+ i += step;
161
+ return [3 /*break*/, 1];
162
+ case 12: return [2 /*return*/, null];
163
+ }
164
+ });
165
+ }
166
+ /**
167
+ * @internal
168
+ */
169
+ exports.forwardDeleteWordSelection = getDeleteWordSelection('forward');
170
+ /**
171
+ * @internal
172
+ */
173
+ exports.backwardDeleteWordSelection = getDeleteWordSelection('backward');
174
174
  //# 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';\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
+ {"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,14 +1,14 @@
1
- import type { ContentModelDocument, DeleteResult, FormatWithContentModelContext, 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: FormatWithContentModelContext): 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,55 +1,55 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shouldDeleteAllSegmentsBefore = exports.shouldDeleteWord = exports.handleKeyboardEventResult = void 0;
4
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
- /**
6
- * @internal
7
- * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
8
- */
9
- function handleKeyboardEventResult(editor, model, rawEvent, result, context) {
10
- context.skipUndoSnapshot = true;
11
- context.clearModelCache = false;
12
- switch (result) {
13
- case 'notDeleted':
14
- // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid
15
- context.clearModelCache = true;
16
- // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model
17
- return false;
18
- case 'nothingToDelete':
19
- // We known there is nothing to delete, no need to let browser keep handling the event
20
- rawEvent.preventDefault();
21
- return false;
22
- case 'range':
23
- case 'singleChar':
24
- // We have deleted what we need from content model, no need to let browser keep handling the event
25
- rawEvent.preventDefault();
26
- (0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
27
- if (result == 'range') {
28
- // A range is about to be deleted, so add an undo snapshot immediately
29
- context.skipUndoSnapshot = false;
30
- }
31
- // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.
32
- // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.
33
- editor.triggerEvent('beforeKeyboardEditing', {
34
- rawEvent: rawEvent,
35
- });
36
- return true;
37
- }
38
- }
39
- exports.handleKeyboardEventResult = handleKeyboardEventResult;
40
- /**
41
- * @internal
42
- */
43
- function shouldDeleteWord(rawEvent, isMac) {
44
- return ((isMac && rawEvent.altKey && !rawEvent.metaKey) ||
45
- (!isMac && rawEvent.ctrlKey && !rawEvent.altKey));
46
- }
47
- exports.shouldDeleteWord = shouldDeleteWord;
48
- /**
49
- * @internal
50
- */
51
- function shouldDeleteAllSegmentsBefore(rawEvent) {
52
- return rawEvent.metaKey && !rawEvent.altKey;
53
- }
54
- exports.shouldDeleteAllSegmentsBefore = shouldDeleteAllSegmentsBefore;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldDeleteAllSegmentsBefore = exports.shouldDeleteWord = exports.handleKeyboardEventResult = void 0;
4
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
+ /**
6
+ * @internal
7
+ * @return True means content is changed, so need to rewrite content model to editor. Otherwise false
8
+ */
9
+ function handleKeyboardEventResult(editor, model, rawEvent, result, context) {
10
+ context.skipUndoSnapshot = true;
11
+ context.clearModelCache = false;
12
+ switch (result) {
13
+ case 'notDeleted':
14
+ // We have not delete anything, we will let browser handle this event, so that current cached model may be invalid
15
+ context.clearModelCache = true;
16
+ // Return false here since we didn't do any change to Content Model, so no need to rewrite with Content Model
17
+ return false;
18
+ case 'nothingToDelete':
19
+ // We known there is nothing to delete, no need to let browser keep handling the event
20
+ rawEvent.preventDefault();
21
+ return false;
22
+ case 'range':
23
+ case 'singleChar':
24
+ // We have deleted what we need from content model, no need to let browser keep handling the event
25
+ rawEvent.preventDefault();
26
+ (0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
27
+ if (result == 'range') {
28
+ // A range is about to be deleted, so add an undo snapshot immediately
29
+ context.skipUndoSnapshot = false;
30
+ }
31
+ // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.
32
+ // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.
33
+ editor.triggerEvent('beforeKeyboardEditing', {
34
+ rawEvent: rawEvent,
35
+ });
36
+ return true;
37
+ }
38
+ }
39
+ exports.handleKeyboardEventResult = handleKeyboardEventResult;
40
+ /**
41
+ * @internal
42
+ */
43
+ function shouldDeleteWord(rawEvent, isMac) {
44
+ return ((isMac && rawEvent.altKey && !rawEvent.metaKey) ||
45
+ (!isMac && rawEvent.ctrlKey && !rawEvent.altKey));
46
+ }
47
+ exports.shouldDeleteWord = shouldDeleteWord;
48
+ /**
49
+ * @internal
50
+ */
51
+ function shouldDeleteAllSegmentsBefore(rawEvent) {
52
+ return rawEvent.metaKey && !rawEvent.altKey;
53
+ }
54
+ exports.shouldDeleteAllSegmentsBefore = shouldDeleteAllSegmentsBefore;
55
55
  //# 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,2EAAoE;AAQpE;;;GAGG;AACH,SAAgB,yBAAyB,CACrC,MAAyB,EACzB,KAA2B,EAC3B,QAAuB,EACvB,MAAoB,EACpB,OAAsC;IAEtC,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,IAAA,mDAAqB,EAAC,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;AA1CD,8DA0CC;AAED;;GAEG;AACH,SAAgB,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;AALD,4CAKC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,QAAuB;IACjE,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,CAAC;AAFD,sEAEC","sourcesContent":["import { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport type {\n ContentModelDocument,\n DeleteResult,\n FormatWithContentModelContext,\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: FormatWithContentModelContext\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
+ {"version":3,"file":"handleKeyboardEventCommon.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAQpE;;;GAGG;AACH,SAAgB,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,IAAA,mDAAqB,EAAC,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;AA1CD,8DA0CC;AAED;;GAEG;AACH,SAAgB,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;AALD,4CAKC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,QAAuB;IACjE,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,CAAC;AAFD,sEAEC","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"]}
@@ -0,0 +1,5 @@
1
+ import type { DeleteSelectionStep } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare const handleEnterOnList: DeleteSelectionStep;