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
@@ -0,0 +1,53 @@
1
+ import type { EditorPlugin, IStandaloneEditor, PluginEvent } from 'roosterjs-content-model-types';
2
+ /**
3
+ * Options to customize the Content Model Auto Format Plugin
4
+ */
5
+ export declare type AutoFormatOptions = {
6
+ /**
7
+ * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true
8
+ */
9
+ autoBullet: boolean;
10
+ /**
11
+ * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true
12
+ */
13
+ autoNumbering: boolean;
14
+ };
15
+ /**
16
+ * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
17
+ * It can be customized with options to enable or disable auto list features.
18
+ */
19
+ export declare class AutoFormatPlugin implements EditorPlugin {
20
+ private options;
21
+ private editor;
22
+ /**
23
+ * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:
24
+ * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.
25
+ * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.
26
+ */
27
+ constructor(options?: AutoFormatOptions);
28
+ /**
29
+ * Get name of this plugin
30
+ */
31
+ getName(): string;
32
+ /**
33
+ * The first method that editor will call to a plugin when editor is initializing.
34
+ * It will pass in the editor instance, plugin should take this chance to save the
35
+ * editor reference so that it can call to any editor method or format API later.
36
+ * @param editor The editor object
37
+ */
38
+ initialize(editor: IStandaloneEditor): void;
39
+ /**
40
+ * The last method that editor will call to a plugin before it is disposed.
41
+ * Plugin can take this chance to clear the reference to editor. After this method is
42
+ * called, plugin should not call to any editor method since it will result in error.
43
+ */
44
+ dispose(): void;
45
+ /**
46
+ * Core method for a plugin. Once an event happens in editor, editor will call this
47
+ * method of each plugin to handle the event as long as the event is not handled
48
+ * exclusively by another plugin.
49
+ * @param event The event to handle:
50
+ */
51
+ onPluginEvent(event: PluginEvent): void;
52
+ private handleKeyDownEvent;
53
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutoFormatPlugin = void 0;
4
+ var keyboardListTrigger_1 = require("./keyboardListTrigger");
5
+ /**
6
+ * @internal
7
+ */
8
+ var DefaultOptions = {
9
+ autoBullet: true,
10
+ autoNumbering: true,
11
+ };
12
+ /**
13
+ * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
14
+ * It can be customized with options to enable or disable auto list features.
15
+ */
16
+ var AutoFormatPlugin = /** @class */ (function () {
17
+ /**
18
+ * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:
19
+ * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.
20
+ * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.
21
+ */
22
+ function AutoFormatPlugin(options) {
23
+ if (options === void 0) { options = DefaultOptions; }
24
+ this.options = options;
25
+ this.editor = null;
26
+ }
27
+ /**
28
+ * Get name of this plugin
29
+ */
30
+ AutoFormatPlugin.prototype.getName = function () {
31
+ return 'AutoFormat';
32
+ };
33
+ /**
34
+ * The first method that editor will call to a plugin when editor is initializing.
35
+ * It will pass in the editor instance, plugin should take this chance to save the
36
+ * editor reference so that it can call to any editor method or format API later.
37
+ * @param editor The editor object
38
+ */
39
+ AutoFormatPlugin.prototype.initialize = function (editor) {
40
+ this.editor = editor;
41
+ };
42
+ /**
43
+ * The last method that editor will call to a plugin before it is disposed.
44
+ * Plugin can take this chance to clear the reference to editor. After this method is
45
+ * called, plugin should not call to any editor method since it will result in error.
46
+ */
47
+ AutoFormatPlugin.prototype.dispose = function () {
48
+ this.editor = null;
49
+ };
50
+ /**
51
+ * Core method for a plugin. Once an event happens in editor, editor will call this
52
+ * method of each plugin to handle the event as long as the event is not handled
53
+ * exclusively by another plugin.
54
+ * @param event The event to handle:
55
+ */
56
+ AutoFormatPlugin.prototype.onPluginEvent = function (event) {
57
+ if (this.editor) {
58
+ switch (event.eventType) {
59
+ case 'keyDown':
60
+ this.handleKeyDownEvent(this.editor, event);
61
+ break;
62
+ }
63
+ }
64
+ };
65
+ AutoFormatPlugin.prototype.handleKeyDownEvent = function (editor, event) {
66
+ var rawEvent = event.rawEvent;
67
+ if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {
68
+ switch (rawEvent.key) {
69
+ case ' ':
70
+ var _a = this.options, autoBullet = _a.autoBullet, autoNumbering = _a.autoNumbering;
71
+ if (autoBullet || autoNumbering) {
72
+ (0, keyboardListTrigger_1.keyboardListTrigger)(editor, rawEvent, autoBullet, autoNumbering);
73
+ }
74
+ break;
75
+ }
76
+ }
77
+ };
78
+ return AutoFormatPlugin;
79
+ }());
80
+ exports.AutoFormatPlugin = AutoFormatPlugin;
81
+ //# sourceMappingURL=AutoFormatPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAuB5D;;GAEG;AACH,IAAM,cAAc,GAAgC;IAChD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;CACtB,CAAC;AAEF;;;GAGG;AACH;IAGI;;;;OAIG;IACH,0BAAoB,OAA2C;QAA3C,wBAAA,EAAA,wBAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;QAPvD,WAAM,GAA6B,IAAI,CAAC;IAOkB,CAAC;IAEnE;;OAEG;IACH,kCAAO,GAAP;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,qCAAU,GAAV,UAAW,MAAyB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,kCAAO,GAAP;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,wCAAa,GAAb,UAAc,KAAkB;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,QAAQ,KAAK,CAAC,SAAS,EAAE;gBACrB,KAAK,SAAS;oBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5C,MAAM;aACb;SACJ;IACL,CAAC;IAEO,6CAAkB,GAA1B,UAA2B,MAAyB,EAAE,KAAmB;QACrE,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YAC3D,QAAQ,QAAQ,CAAC,GAAG,EAAE;gBAClB,KAAK,GAAG;oBACE,IAAA,KAAgC,IAAI,CAAC,OAAO,EAA1C,UAAU,gBAAA,EAAE,aAAa,mBAAiB,CAAC;oBACnD,IAAI,UAAU,IAAI,aAAa,EAAE;wBAC7B,IAAA,yCAAmB,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;qBACpE;oBACD,MAAM;aACb;SACJ;IACL,CAAC;IACL,uBAAC;AAAD,CAAC,AAjED,IAiEC;AAjEY,4CAAgB","sourcesContent":["import { keyboardListTrigger } from './keyboardListTrigger';\r\nimport type {\r\n EditorPlugin,\r\n IStandaloneEditor,\r\n KeyDownEvent,\r\n PluginEvent,\r\n} from 'roosterjs-content-model-types';\r\n\r\n/**\r\n * Options to customize the Content Model Auto Format Plugin\r\n */\r\nexport type AutoFormatOptions = {\r\n /**\r\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\r\n */\r\n autoBullet: boolean;\r\n\r\n /**\r\n * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true\r\n */\r\n autoNumbering: boolean;\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nconst DefaultOptions: Required<AutoFormatOptions> = {\r\n autoBullet: true,\r\n autoNumbering: true,\r\n};\r\n\r\n/**\r\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\r\n * It can be customized with options to enable or disable auto list features.\r\n */\r\nexport class AutoFormatPlugin implements EditorPlugin {\r\n private editor: IStandaloneEditor | null = null;\r\n\r\n /**\r\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\r\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.\r\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.\r\n */\r\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\r\n\r\n /**\r\n * Get name of this plugin\r\n */\r\n getName() {\r\n return 'AutoFormat';\r\n }\r\n\r\n /**\r\n * The first method that editor will call to a plugin when editor is initializing.\r\n * It will pass in the editor instance, plugin should take this chance to save the\r\n * editor reference so that it can call to any editor method or format API later.\r\n * @param editor The editor object\r\n */\r\n initialize(editor: IStandaloneEditor) {\r\n this.editor = editor;\r\n }\r\n\r\n /**\r\n * The last method that editor will call to a plugin before it is disposed.\r\n * Plugin can take this chance to clear the reference to editor. After this method is\r\n * called, plugin should not call to any editor method since it will result in error.\r\n */\r\n dispose() {\r\n this.editor = null;\r\n }\r\n\r\n /**\r\n * Core method for a plugin. Once an event happens in editor, editor will call this\r\n * method of each plugin to handle the event as long as the event is not handled\r\n * exclusively by another plugin.\r\n * @param event The event to handle:\r\n */\r\n onPluginEvent(event: PluginEvent) {\r\n if (this.editor) {\r\n switch (event.eventType) {\r\n case 'keyDown':\r\n this.handleKeyDownEvent(this.editor, event);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private handleKeyDownEvent(editor: IStandaloneEditor, event: KeyDownEvent) {\r\n const rawEvent = event.rawEvent;\r\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\r\n switch (rawEvent.key) {\r\n case ' ':\r\n const { autoBullet, autoNumbering } = this.options;\r\n if (autoBullet || autoNumbering) {\r\n keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,5 @@
1
+ import type { IStandaloneEditor } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function keyboardListTrigger(editor: IStandaloneEditor, rawEvent: KeyboardEvent, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): void;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyboardListTrigger = void 0;
4
+ var getListTypeStyle_1 = require("./utils/getListTypeStyle");
5
+ var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
6
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
7
+ var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
8
+ /**
9
+ * @internal
10
+ */
11
+ function keyboardListTrigger(editor, rawEvent, shouldSearchForBullet, shouldSearchForNumbering) {
12
+ if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
13
+ if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
14
+ editor.formatContentModel(function (model, _context) {
15
+ var listStyleType = (0, getListTypeStyle_1.getListTypeStyle)(model, shouldSearchForBullet, shouldSearchForNumbering);
16
+ if (listStyleType) {
17
+ var segmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, false);
18
+ if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {
19
+ segmentsAndParagraphs[0][1].segments.splice(0, 1);
20
+ }
21
+ var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
22
+ triggerList(editor, model, listType, styleType, index);
23
+ rawEvent.preventDefault();
24
+ (0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
25
+ return true;
26
+ }
27
+ return false;
28
+ });
29
+ }
30
+ exports.keyboardListTrigger = keyboardListTrigger;
31
+ var triggerList = function (editor, model, listType, styleType, index) {
32
+ (0, roosterjs_content_model_api_1.setListType)(model, listType);
33
+ var isOrderedList = listType == 'OL';
34
+ // If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber
35
+ if (index && index > 1 && isOrderedList) {
36
+ (0, roosterjs_content_model_api_1.setListStartNumber)(editor, index);
37
+ }
38
+ (0, roosterjs_content_model_api_1.setListStyle)(editor, isOrderedList
39
+ ? {
40
+ orderedStyleType: styleType,
41
+ }
42
+ : {
43
+ unorderedStyleType: styleType,
44
+ });
45
+ };
46
+ //# sourceMappingURL=keyboardListTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/keyboardListTrigger.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAC5D,6EAAgF;AAChF,2EAAoE;AACpE,2EAA4F;AAI5F;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,MAAyB,EACzB,QAAuB,EACvB,qBAAqC,EACrC,wBAAwC;IADxC,sCAAA,EAAA,4BAAqC;IACrC,yCAAA,EAAA,+BAAwC;IAExC,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,QAAQ;QACtC,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAClC,KAAK,EACL,qBAAqB,EACrB,wBAAwB,CAC3B,CAAC;QACF,IAAI,aAAa,EAAE;YACf,IAAM,qBAAqB,GAAG,IAAA,+DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7E,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACrD;YACO,IAAA,QAAQ,GAAuB,aAAa,SAApC,EAAE,SAAS,GAAY,aAAa,UAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;YACrD,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAA,mDAAqB,EAAC,KAAK,CAAC,CAAC;YAE7B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AA1BD,kDA0BC;AAED,IAAM,WAAW,GAAG,UAChB,MAAyB,EACzB,KAA2B,EAC3B,QAAqB,EACrB,SAAiB,EACjB,KAAc;IAEd,IAAA,yCAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7B,IAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;IACvC,mGAAmG;IACnG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,aAAa,EAAE;QACrC,IAAA,gDAAkB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACrC;IACD,IAAA,0CAAY,EACR,MAAM,EACN,aAAa;QACT,CAAC,CAAC;YACI,gBAAgB,EAAE,SAAS;SAC9B;QACH,CAAC,CAAC;YACI,kBAAkB,EAAE,SAAS;SAChC,CACV,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { getListTypeStyle } from './utils/getListTypeStyle';\r\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-core';\r\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\r\nimport { setListStartNumber, setListStyle, setListType } from 'roosterjs-content-model-api';\r\n\r\nimport type { ContentModelDocument, IStandaloneEditor } from 'roosterjs-content-model-types';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function keyboardListTrigger(\r\n editor: IStandaloneEditor,\r\n rawEvent: KeyboardEvent,\r\n shouldSearchForBullet: boolean = true,\r\n shouldSearchForNumbering: boolean = true\r\n) {\r\n editor.formatContentModel((model, _context) => {\r\n const listStyleType = getListTypeStyle(\r\n model,\r\n shouldSearchForBullet,\r\n shouldSearchForNumbering\r\n );\r\n if (listStyleType) {\r\n const segmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false);\r\n if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {\r\n segmentsAndParagraphs[0][1].segments.splice(0, 1);\r\n }\r\n const { listType, styleType, index } = listStyleType;\r\n triggerList(editor, model, listType, styleType, index);\r\n rawEvent.preventDefault();\r\n normalizeContentModel(model);\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n}\r\n\r\nconst triggerList = (\r\n editor: IStandaloneEditor,\r\n model: ContentModelDocument,\r\n listType: 'OL' | 'UL',\r\n styleType: number,\r\n index?: number\r\n) => {\r\n setListType(model, listType);\r\n const isOrderedList = listType == 'OL';\r\n // If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber\r\n if (index && index > 1 && isOrderedList) {\r\n setListStartNumber(editor, index);\r\n }\r\n setListStyle(\r\n editor,\r\n isOrderedList\r\n ? {\r\n orderedStyleType: styleType,\r\n }\r\n : {\r\n unorderedStyleType: styleType,\r\n }\r\n );\r\n};\r\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @internal
3
+ * Convert english alphabet numbers into decimal numbers
4
+ * @param letter The letter that needs to be converted
5
+ * @returns
6
+ */
7
+ export declare function convertAlphaToDecimals(letter: string): number | undefined;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertAlphaToDecimals = void 0;
4
+ /**
5
+ * @internal
6
+ * Convert english alphabet numbers into decimal numbers
7
+ * @param letter The letter that needs to be converted
8
+ * @returns
9
+ */
10
+ function convertAlphaToDecimals(letter) {
11
+ var alpha = letter.toUpperCase();
12
+ if (alpha) {
13
+ var result = 0;
14
+ for (var i = 0; i < alpha.length; i++) {
15
+ var charCode = alpha.charCodeAt(i) - 65 + 1;
16
+ result = result * 26 + charCode;
17
+ }
18
+ return result;
19
+ }
20
+ return undefined;
21
+ }
22
+ exports.convertAlphaToDecimals = convertAlphaToDecimals;
23
+ //# sourceMappingURL=convertAlphaToDecimals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertAlphaToDecimals.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/convertAlphaToDecimals.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAAc;IACjD,IAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,EAAE;QACP,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;SACnC;QAED,OAAO,MAAM,CAAC;KACjB;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAZD,wDAYC","sourcesContent":["/**\r\n * @internal\r\n * Convert english alphabet numbers into decimal numbers\r\n * @param letter The letter that needs to be converted\r\n * @returns\r\n */\r\nexport function convertAlphaToDecimals(letter: string): number | undefined {\r\n const alpha = letter.toUpperCase();\r\n if (alpha) {\r\n let result = 0;\r\n for (let i = 0; i < alpha.length; i++) {\r\n const charCode = alpha.charCodeAt(i) - 65 + 1;\r\n result = result * 26 + charCode;\r\n }\r\n\r\n return result;\r\n }\r\n return undefined;\r\n}\r\n"]}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare function getIndex(listIndex: string): number | undefined;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getIndex = void 0;
4
+ var convertAlphaToDecimals_1 = require("./convertAlphaToDecimals");
5
+ /**
6
+ * @internal
7
+ */
8
+ function getIndex(listIndex) {
9
+ var index = listIndex.replace(/[^a-zA-Z0-9 ]/g, '');
10
+ var indexNumber = parseInt(index);
11
+ return !isNaN(indexNumber) ? indexNumber : (0, convertAlphaToDecimals_1.convertAlphaToDecimals)(index);
12
+ }
13
+ exports.getIndex = getIndex;
14
+ //# sourceMappingURL=getIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIndex.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getIndex.ts"],"names":[],"mappings":";;;AAAA,mEAAkE;AAElE;;GAEG;AACH,SAAgB,QAAQ,CAAC,SAAiB;IACtC,IAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,IAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,+CAAsB,EAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAJD,4BAIC","sourcesContent":["import { convertAlphaToDecimals } from './convertAlphaToDecimals';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getIndex(listIndex: string) {\r\n const index = listIndex.replace(/[^a-zA-Z0-9 ]/g, '');\r\n const indexNumber = parseInt(index);\r\n return !isNaN(indexNumber) ? indexNumber : convertAlphaToDecimals(index);\r\n}\r\n"]}
@@ -0,0 +1,14 @@
1
+ import type { ContentModelDocument } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ interface ListTypeStyle {
6
+ listType: 'UL' | 'OL';
7
+ styleType: number;
8
+ index?: number;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare function getListTypeStyle(model: ContentModelDocument, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): ListTypeStyle | undefined;
14
+ export {};
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getListTypeStyle = void 0;
4
+ var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
5
+ var getNumberingListStyle_1 = require("./getNumberingListStyle");
6
+ var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
7
+ /**
8
+ * @internal
9
+ */
10
+ function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNumbering) {
11
+ if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
12
+ if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
13
+ var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, true);
14
+ var marker = selectedSegmentsAndParagraphs[0][0];
15
+ var paragraph = selectedSegmentsAndParagraphs[0][1];
16
+ var listMarkerSegment = paragraph === null || paragraph === void 0 ? void 0 : paragraph.segments[0];
17
+ if (marker &&
18
+ marker.segmentType == 'SelectionMarker' &&
19
+ listMarkerSegment &&
20
+ listMarkerSegment.segmentType == 'Text') {
21
+ var listMarker = listMarkerSegment.text;
22
+ var bulletType = bulletListType[listMarker];
23
+ if (bulletType && shouldSearchForBullet) {
24
+ return { listType: 'UL', styleType: bulletType };
25
+ }
26
+ else if (shouldSearchForNumbering) {
27
+ var previousList = getPreviousListLevel(model, paragraph);
28
+ var previousIndex = getPreviousListIndex(model, previousList);
29
+ var previousListStyle = getPreviousListStyle(previousList);
30
+ var numberingType = (0, getNumberingListStyle_1.getNumberingListStyle)(listMarker, previousIndex, previousListStyle);
31
+ if (numberingType) {
32
+ return {
33
+ listType: 'OL',
34
+ styleType: numberingType,
35
+ index: !isNewList(listMarker) &&
36
+ previousListStyle === numberingType &&
37
+ previousIndex
38
+ ? previousIndex + 1
39
+ : undefined,
40
+ };
41
+ }
42
+ }
43
+ }
44
+ return undefined;
45
+ }
46
+ exports.getListTypeStyle = getListTypeStyle;
47
+ var getPreviousListIndex = function (model, previousListItem) {
48
+ return previousListItem ? (0, roosterjs_content_model_api_1.findListItemsInSameThread)(model, previousListItem).length : undefined;
49
+ };
50
+ var getPreviousListLevel = function (model, paragraph) {
51
+ var blocks = (0, roosterjs_content_model_core_1.getOperationalBlocks)(model, ['ListItem'], ['TableCell'])[0];
52
+ var listItem = undefined;
53
+ if (blocks) {
54
+ var listBlockIndex = blocks.parent.blocks.indexOf(paragraph);
55
+ if (listBlockIndex > -1) {
56
+ for (var i = listBlockIndex - 1; i > -1; i--) {
57
+ var item = blocks.parent.blocks[i];
58
+ if ((0, roosterjs_content_model_core_1.isBlockGroupOfType)(item, 'ListItem')) {
59
+ listItem = item;
60
+ break;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ return listItem;
66
+ };
67
+ var getPreviousListStyle = function (list) {
68
+ var _a;
69
+ if (list === null || list === void 0 ? void 0 : list.levels[0].dataset) {
70
+ return (_a = (0, roosterjs_content_model_core_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
71
+ }
72
+ };
73
+ var bulletListType = {
74
+ '*': roosterjs_content_model_core_1.BulletListType.Disc,
75
+ '-': roosterjs_content_model_core_1.BulletListType.Dash,
76
+ '--': roosterjs_content_model_core_1.BulletListType.Square,
77
+ '->': roosterjs_content_model_core_1.BulletListType.LongArrow,
78
+ '-->': roosterjs_content_model_core_1.BulletListType.DoubleLongArrow,
79
+ '=>': roosterjs_content_model_core_1.BulletListType.UnfilledArrow,
80
+ '>': roosterjs_content_model_core_1.BulletListType.ShortArrow,
81
+ '—': roosterjs_content_model_core_1.BulletListType.Hyphen,
82
+ };
83
+ var isNewList = function (listMarker) {
84
+ var marker = listMarker.replace(/[^\w\s]/g, '');
85
+ var pattern = /^[1aAiI]$/;
86
+ return pattern.test(marker);
87
+ };
88
+ //# sourceMappingURL=getListTypeStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getListTypeStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { findListItemsInSameThread } from 'roosterjs-content-model-api';\r\nimport { getNumberingListStyle } from './getNumberingListStyle';\r\nimport type {\r\n ContentModelDocument,\r\n ContentModelListItem,\r\n ContentModelParagraph,\r\n} from 'roosterjs-content-model-types';\r\nimport {\r\n BulletListType,\r\n isBlockGroupOfType,\r\n updateListMetadata,\r\n getOperationalBlocks,\r\n getSelectedSegmentsAndParagraphs,\r\n} from 'roosterjs-content-model-core';\r\n\r\n/**\r\n * @internal\r\n */\r\ninterface ListTypeStyle {\r\n listType: 'UL' | 'OL';\r\n styleType: number;\r\n index?: number;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getListTypeStyle(\r\n model: ContentModelDocument,\r\n shouldSearchForBullet: boolean = true,\r\n shouldSearchForNumbering: boolean = true\r\n): ListTypeStyle | undefined {\r\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, true);\r\n const marker = selectedSegmentsAndParagraphs[0][0];\r\n const paragraph = selectedSegmentsAndParagraphs[0][1];\r\n const listMarkerSegment = paragraph?.segments[0];\r\n\r\n if (\r\n marker &&\r\n marker.segmentType == 'SelectionMarker' &&\r\n listMarkerSegment &&\r\n listMarkerSegment.segmentType == 'Text'\r\n ) {\r\n const listMarker = listMarkerSegment.text;\r\n const bulletType = bulletListType[listMarker];\r\n\r\n if (bulletType && shouldSearchForBullet) {\r\n return { listType: 'UL', styleType: bulletType };\r\n } else if (shouldSearchForNumbering) {\r\n const previousList = getPreviousListLevel(model, paragraph);\r\n const previousIndex = getPreviousListIndex(model, previousList);\r\n const previousListStyle = getPreviousListStyle(previousList);\r\n const numberingType = getNumberingListStyle(\r\n listMarker,\r\n previousIndex,\r\n previousListStyle\r\n );\r\n if (numberingType) {\r\n return {\r\n listType: 'OL',\r\n styleType: numberingType,\r\n index:\r\n !isNewList(listMarker) &&\r\n previousListStyle === numberingType &&\r\n previousIndex\r\n ? previousIndex + 1\r\n : undefined,\r\n };\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nconst getPreviousListIndex = (\r\n model: ContentModelDocument,\r\n previousListItem?: ContentModelListItem\r\n) => {\r\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\r\n};\r\n\r\nconst getPreviousListLevel = (model: ContentModelDocument, paragraph: ContentModelParagraph) => {\r\n const blocks = getOperationalBlocks<ContentModelListItem>(\r\n model,\r\n ['ListItem'],\r\n ['TableCell']\r\n )[0];\r\n let listItem: ContentModelListItem | undefined = undefined;\r\n if (blocks) {\r\n const listBlockIndex = blocks.parent.blocks.indexOf(paragraph);\r\n\r\n if (listBlockIndex > -1) {\r\n for (let i = listBlockIndex - 1; i > -1; i--) {\r\n const item = blocks.parent.blocks[i];\r\n if (isBlockGroupOfType<ContentModelListItem>(item, 'ListItem')) {\r\n listItem = item;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return listItem;\r\n};\r\n\r\nconst getPreviousListStyle = (list?: ContentModelListItem) => {\r\n if (list?.levels[0].dataset) {\r\n return updateListMetadata(list.levels[0])?.orderedStyleType;\r\n }\r\n};\r\n\r\nconst bulletListType: Record<string, number> = {\r\n '*': BulletListType.Disc,\r\n '-': BulletListType.Dash,\r\n '--': BulletListType.Square,\r\n '->': BulletListType.LongArrow,\r\n '-->': BulletListType.DoubleLongArrow,\r\n '=>': BulletListType.UnfilledArrow,\r\n '>': BulletListType.ShortArrow,\r\n '—': BulletListType.Hyphen,\r\n};\r\n\r\nconst isNewList = (listMarker: string) => {\r\n const marker = listMarker.replace(/[^\\w\\s]/g, '');\r\n const pattern = /^[1aAiI]$/;\r\n return pattern.test(marker);\r\n};\r\n"]}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare function getNumberingListStyle(textBeforeCursor: string, previousListIndex?: number, previousListStyle?: number): number | undefined;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var _a, _b, _c, _d, _e, _f;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getNumberingListStyle = void 0;
5
+ var getIndex_1 = require("./getIndex");
6
+ var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
7
+ var NumberingTypes;
8
+ (function (NumberingTypes) {
9
+ NumberingTypes[NumberingTypes["Decimal"] = 1] = "Decimal";
10
+ NumberingTypes[NumberingTypes["LowerAlpha"] = 2] = "LowerAlpha";
11
+ NumberingTypes[NumberingTypes["UpperAlpha"] = 3] = "UpperAlpha";
12
+ NumberingTypes[NumberingTypes["LowerRoman"] = 4] = "LowerRoman";
13
+ NumberingTypes[NumberingTypes["UpperRoman"] = 5] = "UpperRoman";
14
+ })(NumberingTypes || (NumberingTypes = {}));
15
+ var Character;
16
+ (function (Character) {
17
+ Character[Character["Dot"] = 1] = "Dot";
18
+ Character[Character["Dash"] = 2] = "Dash";
19
+ Character[Character["Parenthesis"] = 3] = "Parenthesis";
20
+ Character[Character["DoubleParenthesis"] = 4] = "DoubleParenthesis";
21
+ })(Character || (Character = {}));
22
+ var characters = {
23
+ '.': 1 /* Dot */,
24
+ '-': 2 /* Dash */,
25
+ ')': 3 /* Parenthesis */,
26
+ };
27
+ var lowerRomanTypes = [
28
+ roosterjs_content_model_core_1.NumberingListType.LowerRoman,
29
+ roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
30
+ roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
31
+ roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
32
+ ];
33
+ var upperRomanTypes = [
34
+ roosterjs_content_model_core_1.NumberingListType.UpperRoman,
35
+ roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
36
+ roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
37
+ roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
38
+ ];
39
+ var numberingTriggers = ['1', 'a', 'A', 'I', 'i'];
40
+ var lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];
41
+ var upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];
42
+ var identifyNumberingType = function (text, previousListStyle) {
43
+ if (!isNaN(parseInt(text))) {
44
+ return 1 /* Decimal */;
45
+ }
46
+ else if (/[a-z]+/g.test(text)) {
47
+ if ((previousListStyle === 4 /* LowerRoman */ &&
48
+ lowerRomanTypes.indexOf(previousListStyle) > -1 &&
49
+ lowerRomanNumbers.indexOf(text[0]) > -1) ||
50
+ (!previousListStyle && text === 'i')) {
51
+ return 4 /* LowerRoman */;
52
+ }
53
+ else if (previousListStyle === 2 /* LowerAlpha */ ||
54
+ (!previousListStyle && text === 'a')) {
55
+ return 2 /* LowerAlpha */;
56
+ }
57
+ }
58
+ else if (/[A-Z]+/g.test(text)) {
59
+ if ((previousListStyle == 5 /* UpperRoman */ &&
60
+ upperRomanTypes.indexOf(previousListStyle) > -1 &&
61
+ upperRomanNumbers.indexOf(text[0]) > -1) ||
62
+ (!previousListStyle && text === 'I')) {
63
+ return 5 /* UpperRoman */;
64
+ }
65
+ else if (previousListStyle == 3 /* UpperAlpha */ ||
66
+ (!previousListStyle && text === 'A')) {
67
+ return 3 /* UpperAlpha */;
68
+ }
69
+ }
70
+ };
71
+ var numberingListTypes = (_a = {},
72
+ _a[1 /* Decimal */] = function (char) { return DecimalsTypes[char] || undefined; },
73
+ _a[2 /* LowerAlpha */] = function (char) { return LowerAlphaTypes[char] || undefined; },
74
+ _a[3 /* UpperAlpha */] = function (char) { return UpperAlphaTypes[char] || undefined; },
75
+ _a[4 /* LowerRoman */] = function (char) { return LowerRomanTypes[char] || undefined; },
76
+ _a[5 /* UpperRoman */] = function (char) { return UpperRomanTypes[char] || undefined; },
77
+ _a);
78
+ var UpperRomanTypes = (_b = {},
79
+ _b[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperRoman,
80
+ _b[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
81
+ _b[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
82
+ _b[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
83
+ _b);
84
+ var LowerRomanTypes = (_c = {},
85
+ _c[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerRoman,
86
+ _c[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
87
+ _c[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
88
+ _c[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
89
+ _c);
90
+ var UpperAlphaTypes = (_d = {},
91
+ _d[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperAlpha,
92
+ _d[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDash,
93
+ _d[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaParenthesis,
94
+ _d[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDoubleParenthesis,
95
+ _d);
96
+ var LowerAlphaTypes = (_e = {},
97
+ _e[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerAlpha,
98
+ _e[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDash,
99
+ _e[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaParenthesis,
100
+ _e[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDoubleParenthesis,
101
+ _e);
102
+ var DecimalsTypes = (_f = {},
103
+ _f[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.Decimal,
104
+ _f[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.DecimalDash,
105
+ _f[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalParenthesis,
106
+ _f[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalDoubleParenthesis,
107
+ _f);
108
+ var identifyNumberingListType = function (numbering, isDoubleParenthesis, previousListStyle) {
109
+ var separatorCharacter = isDoubleParenthesis
110
+ ? 4 /* DoubleParenthesis */
111
+ : characters[numbering[numbering.length - 1]];
112
+ // if separator is not valid, no need to check if the number is valid.
113
+ if (separatorCharacter) {
114
+ var number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);
115
+ var numberingType = identifyNumberingType(number, previousListStyle);
116
+ return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;
117
+ }
118
+ return undefined;
119
+ };
120
+ /**
121
+ * @internal
122
+ */
123
+ function getNumberingListStyle(textBeforeCursor, previousListIndex, previousListStyle) {
124
+ var trigger = textBeforeCursor.trim();
125
+ var isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';
126
+ //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.
127
+ //The index is always the characters before the last character
128
+ var listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);
129
+ var index = (0, getIndex_1.getIndex)(listIndex);
130
+ var isContinuosList = numberingTriggers.indexOf(listIndex) < 0;
131
+ if (!index ||
132
+ index < 1 ||
133
+ (!previousListIndex && isContinuosList) ||
134
+ (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))) {
135
+ return undefined;
136
+ }
137
+ var numberingType = isValidNumbering(listIndex)
138
+ ? identifyNumberingListType(trigger, isDoubleParenthesis, isContinuosList ? previousListStyle : undefined)
139
+ : undefined;
140
+ return numberingType;
141
+ }
142
+ exports.getNumberingListStyle = getNumberingListStyle;
143
+ /**
144
+ * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.
145
+ * @param index
146
+ * @returns
147
+ */
148
+ function isValidNumbering(index) {
149
+ return Number(index) || /^[A-Za-z\s]*$/.test(index);
150
+ }
151
+ function canAppendList(index, previousListIndex) {
152
+ return previousListIndex && index && previousListIndex + 1 === index;
153
+ }
154
+ //# sourceMappingURL=getNumberingListStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/utils/getNumberingListStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { getIndex } from './getIndex';\r\nimport { NumberingListType } from 'roosterjs-content-model-core';\r\n\r\nconst enum NumberingTypes {\r\n Decimal = 1,\r\n LowerAlpha = 2,\r\n UpperAlpha = 3,\r\n LowerRoman = 4,\r\n UpperRoman = 5,\r\n}\r\n\r\nconst enum Character {\r\n Dot = 1,\r\n Dash = 2,\r\n Parenthesis = 3,\r\n DoubleParenthesis = 4,\r\n}\r\n\r\nconst characters: Record<string, number> = {\r\n '.': Character.Dot,\r\n '-': Character.Dash,\r\n ')': Character.Parenthesis,\r\n};\r\n\r\nconst lowerRomanTypes = [\r\n NumberingListType.LowerRoman,\r\n NumberingListType.LowerRomanDash,\r\n NumberingListType.LowerRomanDoubleParenthesis,\r\n NumberingListType.LowerRomanParenthesis,\r\n];\r\nconst upperRomanTypes = [\r\n NumberingListType.UpperRoman,\r\n NumberingListType.UpperRomanDash,\r\n NumberingListType.UpperRomanDoubleParenthesis,\r\n NumberingListType.UpperRomanParenthesis,\r\n];\r\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\r\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\r\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\r\n\r\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\r\n if (!isNaN(parseInt(text))) {\r\n return NumberingTypes.Decimal;\r\n } else if (/[a-z]+/g.test(text)) {\r\n if (\r\n (previousListStyle === NumberingTypes.LowerRoman &&\r\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\r\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\r\n (!previousListStyle && text === 'i')\r\n ) {\r\n return NumberingTypes.LowerRoman;\r\n } else if (\r\n previousListStyle === NumberingTypes.LowerAlpha ||\r\n (!previousListStyle && text === 'a')\r\n ) {\r\n return NumberingTypes.LowerAlpha;\r\n }\r\n } else if (/[A-Z]+/g.test(text)) {\r\n if (\r\n (previousListStyle == NumberingTypes.UpperRoman &&\r\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\r\n upperRomanNumbers.indexOf(text[0]) > -1) ||\r\n (!previousListStyle && text === 'I')\r\n ) {\r\n return NumberingTypes.UpperRoman;\r\n } else if (\r\n previousListStyle == NumberingTypes.UpperAlpha ||\r\n (!previousListStyle && text === 'A')\r\n ) {\r\n return NumberingTypes.UpperAlpha;\r\n }\r\n }\r\n};\r\n\r\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\r\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\r\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\r\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\r\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\r\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\r\n};\r\n\r\nconst UpperRomanTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.UpperRoman,\r\n [Character.Dash]: NumberingListType.UpperRomanDash,\r\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\r\n};\r\n\r\nconst LowerRomanTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.LowerRoman,\r\n [Character.Dash]: NumberingListType.LowerRomanDash,\r\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\r\n};\r\n\r\nconst UpperAlphaTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.UpperAlpha,\r\n [Character.Dash]: NumberingListType.UpperAlphaDash,\r\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\r\n};\r\n\r\nconst LowerAlphaTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.LowerAlpha,\r\n [Character.Dash]: NumberingListType.LowerAlphaDash,\r\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\r\n};\r\n\r\nconst DecimalsTypes: Record<number, number> = {\r\n [Character.Dot]: NumberingListType.Decimal,\r\n [Character.Dash]: NumberingListType.DecimalDash,\r\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\r\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\r\n};\r\n\r\nconst identifyNumberingListType = (\r\n numbering: string,\r\n isDoubleParenthesis: boolean,\r\n previousListStyle?: number\r\n): number | undefined => {\r\n const separatorCharacter = isDoubleParenthesis\r\n ? Character.DoubleParenthesis\r\n : characters[numbering[numbering.length - 1]];\r\n // if separator is not valid, no need to check if the number is valid.\r\n if (separatorCharacter) {\r\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\r\n const numberingType = identifyNumberingType(number, previousListStyle);\r\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getNumberingListStyle(\r\n textBeforeCursor: string,\r\n previousListIndex?: number,\r\n previousListStyle?: number\r\n): number | undefined {\r\n const trigger = textBeforeCursor.trim();\r\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\r\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\r\n //The index is always the characters before the last character\r\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\r\n const index = getIndex(listIndex);\r\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\r\n\r\n if (\r\n !index ||\r\n index < 1 ||\r\n (!previousListIndex && isContinuosList) ||\r\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\r\n ) {\r\n return undefined;\r\n }\r\n\r\n const numberingType = isValidNumbering(listIndex)\r\n ? identifyNumberingListType(\r\n trigger,\r\n isDoubleParenthesis,\r\n isContinuosList ? previousListStyle : undefined\r\n )\r\n : undefined;\r\n return numberingType;\r\n}\r\n\r\n/**\r\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\r\n * @param index\r\n * @returns\r\n */\r\nfunction isValidNumbering(index: string) {\r\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\r\n}\r\n\r\nfunction canAppendList(index?: number, previousListIndex?: number) {\r\n return previousListIndex && index && previousListIndex + 1 === index;\r\n}\r\n"]}