roosterjs-content-model-plugins 9.0.1 → 9.2.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 (331) hide show
  1. package/lib/autoFormat/AutoFormatPlugin.d.ts +19 -4
  2. package/lib/autoFormat/AutoFormatPlugin.js +61 -6
  3. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
  4. package/lib/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  5. package/lib/autoFormat/hyphen/transformHyphen.js +35 -0
  6. package/lib/autoFormat/hyphen/transformHyphen.js.map +1 -0
  7. package/lib/autoFormat/link/createLink.js +8 -6
  8. package/lib/autoFormat/link/createLink.js.map +1 -1
  9. package/lib/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  10. package/lib/autoFormat/link/createLinkAfterSpace.js +17 -34
  11. package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  12. package/lib/autoFormat/link/unlink.js +4 -5
  13. package/lib/autoFormat/link/unlink.js.map +1 -1
  14. package/lib/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  15. package/lib/autoFormat/list/keyboardListTrigger.js +9 -19
  16. package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
  17. package/lib/autoFormat/numbers/transformFraction.d.ts +5 -0
  18. package/lib/autoFormat/numbers/transformFraction.js +27 -0
  19. package/lib/autoFormat/numbers/transformFraction.js.map +1 -0
  20. package/lib/autoFormat/numbers/transformOrdinals.d.ts +5 -0
  21. package/lib/autoFormat/numbers/transformOrdinals.js +32 -0
  22. package/lib/autoFormat/numbers/transformOrdinals.js.map +1 -0
  23. package/lib/customReplace/CustomReplacePlugin.d.ts +61 -0
  24. package/lib/customReplace/CustomReplacePlugin.js +87 -0
  25. package/lib/customReplace/CustomReplacePlugin.js.map +1 -0
  26. package/lib/edit/EditPlugin.js +19 -1
  27. package/lib/edit/EditPlugin.js.map +1 -1
  28. package/lib/edit/deleteSteps/deleteList.js +13 -7
  29. package/lib/edit/deleteSteps/deleteList.js.map +1 -1
  30. package/lib/edit/inputSteps/handleEnterOnList.js +9 -2
  31. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
  32. package/lib/edit/keyboardDelete.js +2 -2
  33. package/lib/edit/keyboardDelete.js.map +1 -1
  34. package/lib/edit/keyboardTab.js +28 -12
  35. package/lib/edit/keyboardTab.js.map +1 -1
  36. package/lib/edit/tabUtils/handleTabOnList.d.ts +2 -2
  37. package/lib/edit/tabUtils/handleTabOnList.js +3 -3
  38. package/lib/edit/tabUtils/handleTabOnList.js.map +1 -1
  39. package/lib/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
  40. package/lib/edit/tabUtils/handleTabOnParagraph.js +2 -2
  41. package/lib/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  42. package/lib/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  43. package/lib/edit/tabUtils/handleTabOnTable.js +25 -0
  44. package/lib/edit/tabUtils/handleTabOnTable.js.map +1 -0
  45. package/lib/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  46. package/lib/edit/tabUtils/handleTabOnTableCell.js +40 -0
  47. package/lib/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  48. package/lib/hyperlink/HyperlinkPlugin.d.ts +48 -0
  49. package/lib/hyperlink/HyperlinkPlugin.js +141 -0
  50. package/lib/hyperlink/HyperlinkPlugin.js.map +1 -0
  51. package/lib/hyperlink/HyperlinkToolTip.d.ts +7 -0
  52. package/lib/hyperlink/HyperlinkToolTip.js +3 -0
  53. package/lib/hyperlink/HyperlinkToolTip.js.map +1 -0
  54. package/lib/index.d.ts +9 -1
  55. package/lib/index.js +10 -1
  56. package/lib/index.js.map +1 -1
  57. package/lib/markdown/MarkdownPlugin.d.ts +13 -4
  58. package/lib/markdown/MarkdownPlugin.js +31 -12
  59. package/lib/markdown/MarkdownPlugin.js.map +1 -1
  60. package/lib/markdown/utils/setFormat.d.ts +2 -2
  61. package/lib/markdown/utils/setFormat.js +21 -29
  62. package/lib/markdown/utils/setFormat.js.map +1 -1
  63. package/lib/picker/PickerHandler.d.ts +112 -0
  64. package/lib/picker/PickerHandler.js +3 -0
  65. package/lib/picker/PickerHandler.js.map +1 -0
  66. package/lib/picker/PickerHelper.d.ts +22 -0
  67. package/lib/picker/PickerHelper.js +3 -0
  68. package/lib/picker/PickerHelper.js.map +1 -0
  69. package/lib/picker/PickerHelperImpl.d.ts +25 -0
  70. package/lib/picker/PickerHelperImpl.js +54 -0
  71. package/lib/picker/PickerHelperImpl.js.map +1 -0
  72. package/lib/picker/PickerPlugin.d.ts +54 -0
  73. package/lib/picker/PickerPlugin.js +217 -0
  74. package/lib/picker/PickerPlugin.js.map +1 -0
  75. package/lib/picker/getQueryString.d.ts +5 -0
  76. package/lib/picker/getQueryString.js +36 -0
  77. package/lib/picker/getQueryString.js.map +1 -0
  78. package/lib/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
  79. package/lib/pluginUtils/Rect/getDOMInsertPointRect.js +57 -0
  80. package/lib/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
  81. package/lib/shortcut/ShortcutPlugin.js +1 -0
  82. package/lib/shortcut/ShortcutPlugin.js.map +1 -1
  83. package/lib/shortcut/shortcuts.d.ts +10 -3
  84. package/lib/shortcut/shortcuts.js +21 -4
  85. package/lib/shortcut/shortcuts.js.map +1 -1
  86. package/lib/shortcut/utils/setShortcutIndentationCommand.js +2 -2
  87. package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  88. package/lib/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
  89. package/lib/tableEdit/OnTableEditorCreatedCallback.js +3 -0
  90. package/lib/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
  91. package/lib/tableEdit/TableEditPlugin.d.ts +4 -1
  92. package/lib/tableEdit/TableEditPlugin.js +5 -2
  93. package/lib/tableEdit/TableEditPlugin.js.map +1 -1
  94. package/lib/tableEdit/editors/TableEditor.d.ts +4 -1
  95. package/lib/tableEdit/editors/TableEditor.js +23 -7
  96. package/lib/tableEdit/editors/TableEditor.js.map +1 -1
  97. package/lib/tableEdit/editors/features/TableEditFeature.js +3 -3
  98. package/lib/tableEdit/editors/features/TableEditFeature.js.map +1 -1
  99. package/lib/tableEdit/editors/features/TableInserter.d.ts +2 -1
  100. package/lib/tableEdit/editors/features/TableInserter.js +7 -9
  101. package/lib/tableEdit/editors/features/TableInserter.js.map +1 -1
  102. package/lib/tableEdit/editors/features/TableMover.d.ts +2 -1
  103. package/lib/tableEdit/editors/features/TableMover.js +8 -11
  104. package/lib/tableEdit/editors/features/TableMover.js.map +1 -1
  105. package/lib/tableEdit/editors/features/TableResizer.d.ts +2 -1
  106. package/lib/tableEdit/editors/features/TableResizer.js +19 -3
  107. package/lib/tableEdit/editors/features/TableResizer.js.map +1 -1
  108. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +19 -4
  109. package/lib-amd/autoFormat/AutoFormatPlugin.js +57 -7
  110. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
  111. package/lib-amd/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  112. package/lib-amd/autoFormat/hyphen/transformHyphen.js +36 -0
  113. package/lib-amd/autoFormat/hyphen/transformHyphen.js.map +1 -0
  114. package/lib-amd/autoFormat/link/createLink.js +8 -6
  115. package/lib-amd/autoFormat/link/createLink.js.map +1 -1
  116. package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  117. package/lib-amd/autoFormat/link/createLinkAfterSpace.js +18 -34
  118. package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  119. package/lib-amd/autoFormat/link/unlink.js +4 -5
  120. package/lib-amd/autoFormat/link/unlink.js.map +1 -1
  121. package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  122. package/lib-amd/autoFormat/list/keyboardListTrigger.js +10 -19
  123. package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
  124. package/lib-amd/autoFormat/numbers/transformFraction.d.ts +5 -0
  125. package/lib-amd/autoFormat/numbers/transformFraction.js +28 -0
  126. package/lib-amd/autoFormat/numbers/transformFraction.js.map +1 -0
  127. package/lib-amd/autoFormat/numbers/transformOrdinals.d.ts +5 -0
  128. package/lib-amd/autoFormat/numbers/transformOrdinals.js +33 -0
  129. package/lib-amd/autoFormat/numbers/transformOrdinals.js.map +1 -0
  130. package/lib-amd/customReplace/CustomReplacePlugin.d.ts +61 -0
  131. package/lib-amd/customReplace/CustomReplacePlugin.js +88 -0
  132. package/lib-amd/customReplace/CustomReplacePlugin.js.map +1 -0
  133. package/lib-amd/edit/EditPlugin.js +19 -1
  134. package/lib-amd/edit/EditPlugin.js.map +1 -1
  135. package/lib-amd/edit/deleteSteps/deleteList.js +13 -7
  136. package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
  137. package/lib-amd/edit/inputSteps/handleEnterOnList.js +9 -3
  138. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
  139. package/lib-amd/edit/keyboardDelete.js +2 -2
  140. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  141. package/lib-amd/edit/keyboardTab.js +27 -13
  142. package/lib-amd/edit/keyboardTab.js.map +1 -1
  143. package/lib-amd/edit/tabUtils/handleTabOnList.d.ts +2 -2
  144. package/lib-amd/edit/tabUtils/handleTabOnList.js +3 -3
  145. package/lib-amd/edit/tabUtils/handleTabOnList.js.map +1 -1
  146. package/lib-amd/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
  147. package/lib-amd/edit/tabUtils/handleTabOnParagraph.js +2 -2
  148. package/lib-amd/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  149. package/lib-amd/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  150. package/lib-amd/edit/tabUtils/handleTabOnTable.js +25 -0
  151. package/lib-amd/edit/tabUtils/handleTabOnTable.js.map +1 -0
  152. package/lib-amd/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  153. package/lib-amd/edit/tabUtils/handleTabOnTableCell.js +40 -0
  154. package/lib-amd/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  155. package/lib-amd/hyperlink/HyperlinkPlugin.d.ts +48 -0
  156. package/lib-amd/hyperlink/HyperlinkPlugin.js +142 -0
  157. package/lib-amd/hyperlink/HyperlinkPlugin.js.map +1 -0
  158. package/lib-amd/hyperlink/HyperlinkToolTip.d.ts +7 -0
  159. package/lib-amd/hyperlink/HyperlinkToolTip.js +5 -0
  160. package/lib-amd/hyperlink/HyperlinkToolTip.js.map +1 -0
  161. package/lib-amd/index.d.ts +9 -1
  162. package/lib-amd/index.js +7 -2
  163. package/lib-amd/index.js.map +1 -1
  164. package/lib-amd/markdown/MarkdownPlugin.d.ts +13 -4
  165. package/lib-amd/markdown/MarkdownPlugin.js +31 -12
  166. package/lib-amd/markdown/MarkdownPlugin.js.map +1 -1
  167. package/lib-amd/markdown/utils/setFormat.d.ts +2 -2
  168. package/lib-amd/markdown/utils/setFormat.js +21 -29
  169. package/lib-amd/markdown/utils/setFormat.js.map +1 -1
  170. package/lib-amd/picker/PickerHandler.d.ts +112 -0
  171. package/lib-amd/picker/PickerHandler.js +5 -0
  172. package/lib-amd/picker/PickerHandler.js.map +1 -0
  173. package/lib-amd/picker/PickerHelper.d.ts +22 -0
  174. package/lib-amd/picker/PickerHelper.js +5 -0
  175. package/lib-amd/picker/PickerHelper.js.map +1 -0
  176. package/lib-amd/picker/PickerHelperImpl.d.ts +25 -0
  177. package/lib-amd/picker/PickerHelperImpl.js +53 -0
  178. package/lib-amd/picker/PickerHelperImpl.js.map +1 -0
  179. package/lib-amd/picker/PickerPlugin.d.ts +54 -0
  180. package/lib-amd/picker/PickerPlugin.js +215 -0
  181. package/lib-amd/picker/PickerPlugin.js.map +1 -0
  182. package/lib-amd/picker/getQueryString.d.ts +5 -0
  183. package/lib-amd/picker/getQueryString.js +37 -0
  184. package/lib-amd/picker/getQueryString.js.map +1 -0
  185. package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
  186. package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.js +58 -0
  187. package/lib-amd/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
  188. package/lib-amd/shortcut/ShortcutPlugin.js +1 -0
  189. package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -1
  190. package/lib-amd/shortcut/shortcuts.d.ts +10 -3
  191. package/lib-amd/shortcut/shortcuts.js +21 -4
  192. package/lib-amd/shortcut/shortcuts.js.map +1 -1
  193. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +2 -2
  194. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  195. package/lib-amd/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
  196. package/lib-amd/tableEdit/OnTableEditorCreatedCallback.js +5 -0
  197. package/lib-amd/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
  198. package/lib-amd/tableEdit/TableEditPlugin.d.ts +4 -1
  199. package/lib-amd/tableEdit/TableEditPlugin.js +5 -2
  200. package/lib-amd/tableEdit/TableEditPlugin.js.map +1 -1
  201. package/lib-amd/tableEdit/editors/TableEditor.d.ts +4 -1
  202. package/lib-amd/tableEdit/editors/TableEditor.js +23 -7
  203. package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -1
  204. package/lib-amd/tableEdit/editors/features/TableEditFeature.js +3 -3
  205. package/lib-amd/tableEdit/editors/features/TableEditFeature.js.map +1 -1
  206. package/lib-amd/tableEdit/editors/features/TableInserter.d.ts +2 -1
  207. package/lib-amd/tableEdit/editors/features/TableInserter.js +7 -9
  208. package/lib-amd/tableEdit/editors/features/TableInserter.js.map +1 -1
  209. package/lib-amd/tableEdit/editors/features/TableMover.d.ts +2 -1
  210. package/lib-amd/tableEdit/editors/features/TableMover.js +8 -11
  211. package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -1
  212. package/lib-amd/tableEdit/editors/features/TableResizer.d.ts +2 -1
  213. package/lib-amd/tableEdit/editors/features/TableResizer.js +19 -4
  214. package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -1
  215. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +19 -4
  216. package/lib-mjs/autoFormat/AutoFormatPlugin.js +61 -6
  217. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
  218. package/lib-mjs/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  219. package/lib-mjs/autoFormat/hyphen/transformHyphen.js +31 -0
  220. package/lib-mjs/autoFormat/hyphen/transformHyphen.js.map +1 -0
  221. package/lib-mjs/autoFormat/link/createLink.js +9 -7
  222. package/lib-mjs/autoFormat/link/createLink.js.map +1 -1
  223. package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  224. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +17 -34
  225. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  226. package/lib-mjs/autoFormat/link/unlink.js +4 -5
  227. package/lib-mjs/autoFormat/link/unlink.js.map +1 -1
  228. package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  229. package/lib-mjs/autoFormat/list/keyboardListTrigger.js +9 -19
  230. package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
  231. package/lib-mjs/autoFormat/numbers/transformFraction.d.ts +5 -0
  232. package/lib-mjs/autoFormat/numbers/transformFraction.js +23 -0
  233. package/lib-mjs/autoFormat/numbers/transformFraction.js.map +1 -0
  234. package/lib-mjs/autoFormat/numbers/transformOrdinals.d.ts +5 -0
  235. package/lib-mjs/autoFormat/numbers/transformOrdinals.js +28 -0
  236. package/lib-mjs/autoFormat/numbers/transformOrdinals.js.map +1 -0
  237. package/lib-mjs/customReplace/CustomReplacePlugin.d.ts +61 -0
  238. package/lib-mjs/customReplace/CustomReplacePlugin.js +84 -0
  239. package/lib-mjs/customReplace/CustomReplacePlugin.js.map +1 -0
  240. package/lib-mjs/edit/EditPlugin.js +19 -1
  241. package/lib-mjs/edit/EditPlugin.js.map +1 -1
  242. package/lib-mjs/edit/deleteSteps/deleteList.js +13 -7
  243. package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
  244. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +9 -2
  245. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
  246. package/lib-mjs/edit/keyboardDelete.js +2 -2
  247. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  248. package/lib-mjs/edit/keyboardTab.js +28 -12
  249. package/lib-mjs/edit/keyboardTab.js.map +1 -1
  250. package/lib-mjs/edit/tabUtils/handleTabOnList.d.ts +2 -2
  251. package/lib-mjs/edit/tabUtils/handleTabOnList.js +3 -3
  252. package/lib-mjs/edit/tabUtils/handleTabOnList.js.map +1 -1
  253. package/lib-mjs/edit/tabUtils/handleTabOnParagraph.d.ts +2 -2
  254. package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js +2 -2
  255. package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  256. package/lib-mjs/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  257. package/lib-mjs/edit/tabUtils/handleTabOnTable.js +21 -0
  258. package/lib-mjs/edit/tabUtils/handleTabOnTable.js.map +1 -0
  259. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  260. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js +36 -0
  261. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  262. package/lib-mjs/hyperlink/HyperlinkPlugin.d.ts +48 -0
  263. package/lib-mjs/hyperlink/HyperlinkPlugin.js +138 -0
  264. package/lib-mjs/hyperlink/HyperlinkPlugin.js.map +1 -0
  265. package/lib-mjs/hyperlink/HyperlinkToolTip.d.ts +7 -0
  266. package/lib-mjs/hyperlink/HyperlinkToolTip.js +2 -0
  267. package/lib-mjs/hyperlink/HyperlinkToolTip.js.map +1 -0
  268. package/lib-mjs/index.d.ts +9 -1
  269. package/lib-mjs/index.js +5 -1
  270. package/lib-mjs/index.js.map +1 -1
  271. package/lib-mjs/markdown/MarkdownPlugin.d.ts +13 -4
  272. package/lib-mjs/markdown/MarkdownPlugin.js +31 -12
  273. package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -1
  274. package/lib-mjs/markdown/utils/setFormat.d.ts +2 -2
  275. package/lib-mjs/markdown/utils/setFormat.js +21 -29
  276. package/lib-mjs/markdown/utils/setFormat.js.map +1 -1
  277. package/lib-mjs/picker/PickerHandler.d.ts +112 -0
  278. package/lib-mjs/picker/PickerHandler.js +2 -0
  279. package/lib-mjs/picker/PickerHandler.js.map +1 -0
  280. package/lib-mjs/picker/PickerHelper.d.ts +22 -0
  281. package/lib-mjs/picker/PickerHelper.js +2 -0
  282. package/lib-mjs/picker/PickerHelper.js.map +1 -0
  283. package/lib-mjs/picker/PickerHelperImpl.d.ts +25 -0
  284. package/lib-mjs/picker/PickerHelperImpl.js +51 -0
  285. package/lib-mjs/picker/PickerHelperImpl.js.map +1 -0
  286. package/lib-mjs/picker/PickerPlugin.d.ts +54 -0
  287. package/lib-mjs/picker/PickerPlugin.js +214 -0
  288. package/lib-mjs/picker/PickerPlugin.js.map +1 -0
  289. package/lib-mjs/picker/getQueryString.d.ts +5 -0
  290. package/lib-mjs/picker/getQueryString.js +32 -0
  291. package/lib-mjs/picker/getQueryString.js.map +1 -0
  292. package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.d.ts +7 -0
  293. package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.js +53 -0
  294. package/lib-mjs/pluginUtils/Rect/getDOMInsertPointRect.js.map +1 -0
  295. package/lib-mjs/shortcut/ShortcutPlugin.js +2 -1
  296. package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -1
  297. package/lib-mjs/shortcut/shortcuts.d.ts +10 -3
  298. package/lib-mjs/shortcut/shortcuts.js +20 -3
  299. package/lib-mjs/shortcut/shortcuts.js.map +1 -1
  300. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +2 -2
  301. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  302. package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.d.ts +4 -0
  303. package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.js +2 -0
  304. package/lib-mjs/tableEdit/OnTableEditorCreatedCallback.js.map +1 -0
  305. package/lib-mjs/tableEdit/TableEditPlugin.d.ts +4 -1
  306. package/lib-mjs/tableEdit/TableEditPlugin.js +5 -2
  307. package/lib-mjs/tableEdit/TableEditPlugin.js.map +1 -1
  308. package/lib-mjs/tableEdit/editors/TableEditor.d.ts +4 -1
  309. package/lib-mjs/tableEdit/editors/TableEditor.js +24 -8
  310. package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -1
  311. package/lib-mjs/tableEdit/editors/features/TableEditFeature.js +3 -3
  312. package/lib-mjs/tableEdit/editors/features/TableEditFeature.js.map +1 -1
  313. package/lib-mjs/tableEdit/editors/features/TableInserter.d.ts +2 -1
  314. package/lib-mjs/tableEdit/editors/features/TableInserter.js +7 -9
  315. package/lib-mjs/tableEdit/editors/features/TableInserter.js.map +1 -1
  316. package/lib-mjs/tableEdit/editors/features/TableMover.d.ts +2 -1
  317. package/lib-mjs/tableEdit/editors/features/TableMover.js +8 -11
  318. package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -1
  319. package/lib-mjs/tableEdit/editors/features/TableResizer.d.ts +2 -1
  320. package/lib-mjs/tableEdit/editors/features/TableResizer.js +19 -3
  321. package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -1
  322. package/package.json +5 -5
  323. package/lib/autoFormat/link/getLinkSegment.d.ts +0 -5
  324. package/lib/autoFormat/link/getLinkSegment.js +0 -27
  325. package/lib/autoFormat/link/getLinkSegment.js.map +0 -1
  326. package/lib-amd/autoFormat/link/getLinkSegment.d.ts +0 -5
  327. package/lib-amd/autoFormat/link/getLinkSegment.js +0 -27
  328. package/lib-amd/autoFormat/link/getLinkSegment.js.map +0 -1
  329. package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +0 -5
  330. package/lib-mjs/autoFormat/link/getLinkSegment.js +0 -23
  331. package/lib-mjs/autoFormat/link/getLinkSegment.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PickerPlugin = void 0;
4
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
+ var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
6
+ var getQueryString_1 = require("./getQueryString");
7
+ var PickerHelperImpl_1 = require("./PickerHelperImpl");
8
+ /**
9
+ * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including
10
+ * - Show picker when special trigger key is pressed
11
+ * - Hide picker
12
+ * - Change selection in picker by Up/Down/Left/Right
13
+ * - Apply selected item in picker
14
+ *
15
+ * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.
16
+ */
17
+ var PickerPlugin = /** @class */ (function () {
18
+ /**
19
+ * Construct a new instance of PickerPlugin class
20
+ * @param triggerCharacter The character to trigger a picker to be shown
21
+ * @param handler Picker handler for receiving picker state change events
22
+ */
23
+ function PickerPlugin(triggerCharacter, handler) {
24
+ this.triggerCharacter = triggerCharacter;
25
+ this.handler = handler;
26
+ this.isMac = false;
27
+ this.lastQueryString = '';
28
+ this.helper = null;
29
+ }
30
+ /**
31
+ * Get a friendly name
32
+ */
33
+ PickerPlugin.prototype.getName = function () {
34
+ return 'Picker';
35
+ };
36
+ /**
37
+ * Initialize this plugin. This should only be called from Editor
38
+ * @param editor Editor instance
39
+ */
40
+ PickerPlugin.prototype.initialize = function (editor) {
41
+ this.isMac = !!editor.getEnvironment().isMac;
42
+ this.helper = new PickerHelperImpl_1.PickerHelperImpl(editor, this.handler, this.triggerCharacter);
43
+ this.handler.onInitialize(this.helper);
44
+ };
45
+ /**
46
+ * Dispose this plugin
47
+ */
48
+ PickerPlugin.prototype.dispose = function () {
49
+ this.handler.onDispose();
50
+ this.helper = null;
51
+ };
52
+ /**
53
+ * Check if the plugin should handle the given event exclusively.
54
+ * Handle an event exclusively means other plugin will not receive this event in
55
+ * onPluginEvent method.
56
+ * If two plugins will return true in willHandleEventExclusively() for the same event,
57
+ * the final result depends on the order of the plugins are added into editor
58
+ * @param event The event to check
59
+ */
60
+ PickerPlugin.prototype.willHandleEventExclusively = function (event) {
61
+ var _a;
62
+ return (!!((_a = this.helper) === null || _a === void 0 ? void 0 : _a.direction) &&
63
+ event.eventType == 'keyDown' &&
64
+ ((0, roosterjs_content_model_dom_1.isCursorMovingKey)(event.rawEvent) ||
65
+ event.rawEvent.key == 'Enter' ||
66
+ event.rawEvent.key == 'Tab' ||
67
+ event.rawEvent.key == 'Escape'));
68
+ };
69
+ /**
70
+ * Handle events triggered from editor
71
+ * @param event PluginEvent object
72
+ */
73
+ PickerPlugin.prototype.onPluginEvent = function (event) {
74
+ if (!this.helper) {
75
+ return;
76
+ }
77
+ switch (event.eventType) {
78
+ case 'contentChanged':
79
+ if (this.helper.direction) {
80
+ if (event.source == roosterjs_content_model_dom_1.ChangeSource.SetContent) {
81
+ this.helper.closePicker();
82
+ }
83
+ else {
84
+ this.onSuggestingInput(this.helper);
85
+ }
86
+ }
87
+ break;
88
+ case 'keyDown':
89
+ if (this.helper.direction) {
90
+ this.onSuggestingKeyDown(this.helper, event.rawEvent);
91
+ }
92
+ break;
93
+ case 'input':
94
+ if (this.helper.direction) {
95
+ this.onSuggestingInput(this.helper);
96
+ }
97
+ else {
98
+ this.onInput(this.helper, event.rawEvent);
99
+ }
100
+ break;
101
+ case 'mouseUp':
102
+ if (this.helper.direction) {
103
+ this.helper.closePicker();
104
+ }
105
+ break;
106
+ }
107
+ };
108
+ PickerPlugin.prototype.onSuggestingKeyDown = function (helper, event) {
109
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
110
+ switch (event.key) {
111
+ case 'ArrowLeft':
112
+ case 'ArrowRight':
113
+ if (helper.direction == 'horizontal' || helper.direction == 'both') {
114
+ var isIncrement = event.key == 'ArrowRight';
115
+ if (helper.editor.getDOMHelper().isRightToLeft()) {
116
+ isIncrement = !isIncrement;
117
+ }
118
+ (_b = (_a = this.handler).onSelectionChanged) === null || _b === void 0 ? void 0 : _b.call(_a, isIncrement ? 'next' : 'previous');
119
+ }
120
+ event.preventDefault();
121
+ break;
122
+ case 'ArrowUp':
123
+ case 'ArrowDown':
124
+ {
125
+ var isIncrement = event.key == 'ArrowDown';
126
+ if (helper.direction != 'horizontal') {
127
+ (_d = (_c = this.handler).onSelectionChanged) === null || _d === void 0 ? void 0 : _d.call(_c, helper.direction == 'both'
128
+ ? isIncrement
129
+ ? 'nextRow'
130
+ : 'previousRow'
131
+ : isIncrement
132
+ ? 'next'
133
+ : 'previous');
134
+ }
135
+ }
136
+ event.preventDefault();
137
+ break;
138
+ case 'PageUp':
139
+ case 'PageDown':
140
+ (_f = (_e = this.handler).onSelectionChanged) === null || _f === void 0 ? void 0 : _f.call(_e, event.key == 'PageDown' ? 'nextPage' : 'previousPage');
141
+ event.preventDefault();
142
+ break;
143
+ case 'Home':
144
+ case 'End':
145
+ var hasCtrl = this.isMac ? event.metaKey : event.ctrlKey;
146
+ (_h = (_g = this.handler).onSelectionChanged) === null || _h === void 0 ? void 0 : _h.call(_g, event.key == 'Home'
147
+ ? hasCtrl
148
+ ? 'first'
149
+ : 'firstInRow'
150
+ : hasCtrl
151
+ ? 'last'
152
+ : 'lastInRow');
153
+ event.preventDefault();
154
+ break;
155
+ case 'Escape':
156
+ helper.closePicker();
157
+ event.preventDefault();
158
+ break;
159
+ case 'Enter':
160
+ case 'Tab':
161
+ (_k = (_j = this.handler).onSelect) === null || _k === void 0 ? void 0 : _k.call(_j);
162
+ event.preventDefault();
163
+ break;
164
+ }
165
+ };
166
+ PickerPlugin.prototype.onSuggestingInput = function (helper) {
167
+ var _this = this;
168
+ if (!(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(helper.editor, function (_, segment, paragraph) {
169
+ var _a, _b;
170
+ var newQueryString = (0, getQueryString_1.getQueryString)(_this.triggerCharacter, paragraph, segment).replace(/[\u0020\u00A0]/g, ' ');
171
+ var oldQueryString = _this.lastQueryString;
172
+ if (newQueryString &&
173
+ ((newQueryString.length >= oldQueryString.length &&
174
+ newQueryString.indexOf(oldQueryString) == 0) ||
175
+ (newQueryString.length < oldQueryString.length &&
176
+ oldQueryString.indexOf(newQueryString) == 0))) {
177
+ _this.lastQueryString = newQueryString;
178
+ (_b = (_a = _this.handler).onQueryStringChanged) === null || _b === void 0 ? void 0 : _b.call(_a, newQueryString);
179
+ }
180
+ else {
181
+ helper.closePicker();
182
+ }
183
+ return false;
184
+ })) {
185
+ helper.closePicker();
186
+ }
187
+ };
188
+ PickerPlugin.prototype.onInput = function (helper, event) {
189
+ var _this = this;
190
+ if (event.inputType == 'insertText' && event.data == this.triggerCharacter) {
191
+ (0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(helper.editor, function (_, segment) {
192
+ if (segment.text.endsWith(_this.triggerCharacter)) {
193
+ var charBeforeTrigger = segment.text[segment.text.length - 2];
194
+ if (!charBeforeTrigger ||
195
+ !charBeforeTrigger.trim() ||
196
+ (0, roosterjs_content_model_dom_1.isPunctuation)(charBeforeTrigger)) {
197
+ var selection = helper.editor.getDOMSelection();
198
+ var pos = (selection === null || selection === void 0 ? void 0 : selection.type) == 'range' && selection.range.collapsed
199
+ ? {
200
+ node: selection.range.startContainer,
201
+ offset: selection.range.startOffset,
202
+ }
203
+ : null;
204
+ if (pos) {
205
+ _this.lastQueryString = _this.triggerCharacter;
206
+ helper.direction = _this.handler.onTrigger(_this.lastQueryString, pos);
207
+ }
208
+ }
209
+ }
210
+ return false;
211
+ });
212
+ }
213
+ };
214
+ return PickerPlugin;
215
+ }());
216
+ exports.PickerPlugin = PickerPlugin;
217
+ //# sourceMappingURL=PickerPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickerPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeSource, isCursorMovingKey, isPunctuation } from 'roosterjs-content-model-dom';\nimport { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';\nimport { getQueryString } from './getQueryString';\nimport { PickerHelperImpl } from './PickerHelperImpl';\nimport type { PickerHandler } from './PickerHandler';\nimport type {\n DOMInsertPoint,\n EditorPlugin,\n IEditor,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including\n * - Show picker when special trigger key is pressed\n * - Hide picker\n * - Change selection in picker by Up/Down/Left/Right\n * - Apply selected item in picker\n *\n * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.\n */\nexport class PickerPlugin implements EditorPlugin {\n private isMac: boolean = false;\n private lastQueryString = '';\n private helper: PickerHelperImpl | null = null;\n\n /**\n * Construct a new instance of PickerPlugin class\n * @param triggerCharacter The character to trigger a picker to be shown\n * @param handler Picker handler for receiving picker state change events\n */\n constructor(private triggerCharacter: string, private readonly handler: PickerHandler) {}\n\n /**\n * Get a friendly name\n */\n getName() {\n return 'Picker';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.isMac = !!editor.getEnvironment().isMac;\n this.helper = new PickerHelperImpl(editor, this.handler, this.triggerCharacter);\n this.handler.onInitialize(this.helper);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.handler.onDispose();\n this.helper = null;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n !!this.helper?.direction &&\n event.eventType == 'keyDown' &&\n (isCursorMovingKey(event.rawEvent) ||\n event.rawEvent.key == 'Enter' ||\n event.rawEvent.key == 'Tab' ||\n event.rawEvent.key == 'Escape')\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.helper) {\n return;\n }\n\n switch (event.eventType) {\n case 'contentChanged':\n if (this.helper.direction) {\n if (event.source == ChangeSource.SetContent) {\n this.helper.closePicker();\n } else {\n this.onSuggestingInput(this.helper);\n }\n }\n break;\n\n case 'keyDown':\n if (this.helper.direction) {\n this.onSuggestingKeyDown(this.helper, event.rawEvent);\n }\n break;\n\n case 'input':\n if (this.helper.direction) {\n this.onSuggestingInput(this.helper);\n } else {\n this.onInput(this.helper, event.rawEvent);\n }\n break;\n\n case 'mouseUp':\n if (this.helper.direction) {\n this.helper.closePicker();\n }\n break;\n }\n }\n\n private onSuggestingKeyDown(helper: PickerHelperImpl, event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n if (helper.direction == 'horizontal' || helper.direction == 'both') {\n let isIncrement = event.key == 'ArrowRight';\n\n if (helper.editor.getDOMHelper().isRightToLeft()) {\n isIncrement = !isIncrement;\n }\n\n this.handler.onSelectionChanged?.(isIncrement ? 'next' : 'previous');\n }\n\n event.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const isIncrement = event.key == 'ArrowDown';\n\n if (helper.direction != 'horizontal') {\n this.handler.onSelectionChanged?.(\n helper.direction == 'both'\n ? isIncrement\n ? 'nextRow'\n : 'previousRow'\n : isIncrement\n ? 'next'\n : 'previous'\n );\n }\n }\n\n event.preventDefault();\n break;\n case 'PageUp':\n case 'PageDown':\n this.handler.onSelectionChanged?.(\n event.key == 'PageDown' ? 'nextPage' : 'previousPage'\n );\n\n event.preventDefault();\n break;\n case 'Home':\n case 'End':\n const hasCtrl = this.isMac ? event.metaKey : event.ctrlKey;\n this.handler.onSelectionChanged?.(\n event.key == 'Home'\n ? hasCtrl\n ? 'first'\n : 'firstInRow'\n : hasCtrl\n ? 'last'\n : 'lastInRow'\n );\n\n event.preventDefault();\n break;\n case 'Escape':\n helper.closePicker();\n event.preventDefault();\n break;\n\n case 'Enter':\n case 'Tab':\n this.handler.onSelect?.();\n event.preventDefault();\n break;\n }\n }\n\n private onSuggestingInput(helper: PickerHelperImpl) {\n if (\n !formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment, paragraph) => {\n const newQueryString = getQueryString(\n this.triggerCharacter,\n paragraph,\n segment\n ).replace(/[\\u0020\\u00A0]/g, ' ');\n const oldQueryString = this.lastQueryString;\n\n if (\n newQueryString &&\n ((newQueryString.length >= oldQueryString.length &&\n newQueryString.indexOf(oldQueryString) == 0) ||\n (newQueryString.length < oldQueryString.length &&\n oldQueryString.indexOf(newQueryString) == 0))\n ) {\n this.lastQueryString = newQueryString;\n this.handler.onQueryStringChanged?.(newQueryString);\n } else {\n helper.closePicker();\n }\n\n return false;\n })\n ) {\n helper.closePicker();\n }\n }\n\n private onInput(helper: PickerHelperImpl, event: InputEvent) {\n if (event.inputType == 'insertText' && event.data == this.triggerCharacter) {\n formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment) => {\n if (segment.text.endsWith(this.triggerCharacter)) {\n const charBeforeTrigger = segment.text[segment.text.length - 2];\n\n if (\n !charBeforeTrigger ||\n !charBeforeTrigger.trim() ||\n isPunctuation(charBeforeTrigger)\n ) {\n const selection = helper.editor.getDOMSelection();\n const pos: DOMInsertPoint | null =\n selection?.type == 'range' && selection.range.collapsed\n ? {\n node: selection.range.startContainer,\n offset: selection.range.startOffset,\n }\n : null;\n\n if (pos) {\n this.lastQueryString = this.triggerCharacter;\n helper.direction = this.handler.onTrigger(this.lastQueryString, pos);\n }\n }\n }\n\n return false;\n });\n }\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function getQueryString(triggerCharacter: string, paragraph: ContentModelParagraph, previousSegment: ContentModelText, splittedSegmentResult?: ContentModelText[]): string;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getQueryString = void 0;
4
+ var splitTextSegment_1 = require("../pluginUtils/splitTextSegment");
5
+ /**
6
+ * @internal
7
+ */
8
+ function getQueryString(triggerCharacter, paragraph, previousSegment, splittedSegmentResult) {
9
+ var result = '';
10
+ var i = paragraph.segments.indexOf(previousSegment);
11
+ for (; i >= 0; i--) {
12
+ var segment = paragraph.segments[i];
13
+ if (segment.segmentType != 'Text') {
14
+ result = '';
15
+ break;
16
+ }
17
+ var index = segment.text.lastIndexOf(triggerCharacter);
18
+ if (index >= 0) {
19
+ result = segment.text.substring(index) + result;
20
+ splittedSegmentResult === null || splittedSegmentResult === void 0 ? void 0 : splittedSegmentResult.unshift(index > 0
21
+ ? (0, splitTextSegment_1.splitTextSegment)(segment, paragraph, index, segment.text.length)
22
+ : segment);
23
+ break;
24
+ }
25
+ else {
26
+ result = segment.text + result;
27
+ splittedSegmentResult === null || splittedSegmentResult === void 0 ? void 0 : splittedSegmentResult.unshift(segment);
28
+ }
29
+ }
30
+ if (i < 0) {
31
+ result = '';
32
+ }
33
+ return result;
34
+ }
35
+ exports.getQueryString = getQueryString;
36
+ //# sourceMappingURL=getQueryString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQueryString.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/getQueryString.ts"],"names":[],"mappings":";;;AAAA,oEAAmE;AAGnE;;GAEG;AACH,SAAgB,cAAc,CAC1B,gBAAwB,EACxB,SAAgC,EAChC,eAAiC,EACjC,qBAA0C;IAE1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAChB,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,EAAE;YAC/B,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM;SACT;QAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEzD,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YAEhD,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAC1B,KAAK,GAAG,CAAC;gBACL,CAAC,CAAC,IAAA,mCAAgB,EAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClE,CAAC,CAAC,OAAO,CAChB,CAAC;YAEF,MAAM;SACT;aAAM;YACH,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;YAE/B,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAC3C;KACJ;IAED,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,MAAM,GAAG,EAAE,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAzCD,wCAyCC","sourcesContent":["import { splitTextSegment } from '../pluginUtils/splitTextSegment';\nimport type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getQueryString(\n triggerCharacter: string,\n paragraph: ContentModelParagraph,\n previousSegment: ContentModelText,\n splittedSegmentResult?: ContentModelText[]\n): string {\n let result = '';\n let i = paragraph.segments.indexOf(previousSegment);\n\n for (; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n if (segment.segmentType != 'Text') {\n result = '';\n break;\n }\n\n const index = segment.text.lastIndexOf(triggerCharacter);\n\n if (index >= 0) {\n result = segment.text.substring(index) + result;\n\n splittedSegmentResult?.unshift(\n index > 0\n ? splitTextSegment(segment, paragraph, index, segment.text.length)\n : segment\n );\n\n break;\n } else {\n result = segment.text + result;\n\n splittedSegmentResult?.unshift(segment);\n }\n }\n\n if (i < 0) {\n result = '';\n }\n\n return result;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { DOMInsertPoint, Rect } from 'roosterjs-content-model-types';
2
+ /**
3
+ * Get bounding rect of the given DOM insert point
4
+ * @param doc The document object
5
+ * @param pos The input DOM insert point
6
+ */
7
+ export declare function getDOMInsertPointRect(doc: Document, pos: DOMInsertPoint): Rect | null;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDOMInsertPointRect = void 0;
4
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
+ /**
6
+ * Get bounding rect of the given DOM insert point
7
+ * @param doc The document object
8
+ * @param pos The input DOM insert point
9
+ */
10
+ function getDOMInsertPointRect(doc, pos) {
11
+ var _a;
12
+ var node = pos.node, offset = pos.offset;
13
+ var range = doc.createRange();
14
+ range.setStart(node, offset);
15
+ // 1) try to get rect using range.getBoundingClientRect()
16
+ var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(range.getBoundingClientRect());
17
+ if (rect) {
18
+ return rect;
19
+ }
20
+ // 2) try to get rect using range.getClientRects
21
+ while (node.lastChild) {
22
+ if (offset == node.childNodes.length) {
23
+ node = node.lastChild;
24
+ offset = node.childNodes.length;
25
+ }
26
+ else {
27
+ node = node.childNodes[offset];
28
+ offset = 0;
29
+ }
30
+ }
31
+ var rects = range.getClientRects && range.getClientRects();
32
+ rect = rects && rects.length == 1 ? (0, roosterjs_content_model_dom_1.normalizeRect)(rects[0]) : null;
33
+ if (rect) {
34
+ return rect;
35
+ }
36
+ // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others
37
+ if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'TEXT_NODE')) {
38
+ var span = node.ownerDocument.createElement('span');
39
+ span.textContent = '\u200b';
40
+ range.insertNode(span);
41
+ rect = (0, roosterjs_content_model_dom_1.normalizeRect)(span.getBoundingClientRect());
42
+ (_a = span.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(span);
43
+ if (rect) {
44
+ return rect;
45
+ }
46
+ }
47
+ // 4) try getBoundingClientRect on element
48
+ if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') && node.getBoundingClientRect) {
49
+ rect = (0, roosterjs_content_model_dom_1.normalizeRect)(node.getBoundingClientRect());
50
+ if (rect) {
51
+ return rect;
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+ exports.getDOMInsertPointRect = getDOMInsertPointRect;
57
+ //# sourceMappingURL=getDOMInsertPointRect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDOMInsertPointRect.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts"],"names":[],"mappings":";;;AAAA,2EAA0E;AAG1E;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,GAAa,EAAE,GAAmB;;IAC9D,IAAA,IAAI,GAAa,GAAG,KAAhB,EAAE,MAAM,GAAK,GAAG,OAAR,CAAS;IAC3B,IAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEhC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE7B,yDAAyD;IACzD,IAAI,IAAI,GAAG,IAAA,2CAAa,EAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAExD,IAAI,IAAI,EAAE;QACN,OAAO,IAAI,CAAC;KACf;IAED,gDAAgD;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE;QACnB,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAClC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACnC;aAAM;YACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC,CAAC;SACd;KACJ;IAED,IAAM,KAAK,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7D,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,2CAAa,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,IAAI,EAAE;QACN,OAAO,IAAI,CAAC;KACf;IAED,oFAAoF;IACpF,IAAI,IAAA,0CAAY,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE;QACjC,IAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,GAAG,IAAA,2CAAa,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACnD,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;KACJ;IAED,0CAA0C;IAC1C,IAAI,IAAA,0CAAY,EAAC,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;QAClE,IAAI,GAAG,IAAA,2CAAa,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEnD,IAAI,IAAI,EAAE;YACN,OAAO,IAAI,CAAC;SACf;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAtDD,sDAsDC","sourcesContent":["import { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport type { DOMInsertPoint, Rect } from 'roosterjs-content-model-types';\n\n/**\n * Get bounding rect of the given DOM insert point\n * @param doc The document object\n * @param pos The input DOM insert point\n */\nexport function getDOMInsertPointRect(doc: Document, pos: DOMInsertPoint): Rect | null {\n let { node, offset } = pos;\n const range = doc.createRange();\n\n range.setStart(node, offset);\n\n // 1) try to get rect using range.getBoundingClientRect()\n let rect = normalizeRect(range.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n\n // 2) try to get rect using range.getClientRects\n while (node.lastChild) {\n if (offset == node.childNodes.length) {\n node = node.lastChild;\n offset = node.childNodes.length;\n } else {\n node = node.childNodes[offset];\n offset = 0;\n }\n }\n\n const rects = range.getClientRects && range.getClientRects();\n rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;\n if (rect) {\n return rect;\n }\n\n // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others\n if (isNodeOfType(node, 'TEXT_NODE')) {\n const span = node.ownerDocument.createElement('span');\n\n span.textContent = '\\u200b';\n range.insertNode(span);\n rect = normalizeRect(span.getBoundingClientRect());\n span.parentNode?.removeChild(span);\n\n if (rect) {\n return rect;\n }\n }\n\n // 4) try getBoundingClientRect on element\n if (isNodeOfType(node, 'ELEMENT_NODE') && node.getBoundingClientRect) {\n rect = normalizeRect(node.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n }\n\n return null;\n}\n"]}
@@ -11,6 +11,7 @@ var defaultShortcuts = [
11
11
  shortcuts_1.ShortcutUndo,
12
12
  shortcuts_1.ShortcutUndo2,
13
13
  shortcuts_1.ShortcutRedo,
14
+ shortcuts_1.ShortcutRedoAlt,
14
15
  shortcuts_1.ShortcutRedoMacOS,
15
16
  shortcuts_1.ShortcutBullet,
16
17
  shortcuts_1.ShortcutNumbering,
@@ -1 +1 @@
1
- {"version":3,"file":"ShortcutPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { cacheGetEventData } from 'roosterjs-content-model-dom';\nimport type { ShortcutCommand, ShortcutKeyDefinition } from './ShortcutCommand';\nimport {\n ShortcutBold,\n ShortcutBullet,\n ShortcutClearFormat,\n ShortcutDecreaseFont,\n ShortcutIncreaseFont,\n ShortcutIndentList,\n ShortcutItalic,\n ShortcutNumbering,\n ShortcutOutdentList,\n ShortcutRedo,\n ShortcutRedoMacOS,\n ShortcutUnderline,\n ShortcutUndo,\n ShortcutUndo2,\n} from './shortcuts';\nimport type {\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\nconst defaultShortcuts: ShortcutCommand[] = [\n ShortcutBold,\n ShortcutItalic,\n ShortcutUnderline,\n ShortcutClearFormat,\n ShortcutUndo,\n ShortcutUndo2,\n ShortcutRedo,\n ShortcutRedoMacOS,\n ShortcutBullet,\n ShortcutNumbering,\n ShortcutIncreaseFont,\n ShortcutDecreaseFont,\n ShortcutIndentList,\n ShortcutOutdentList,\n];\nconst CommandCacheKey = '__ShortcutCommandCache';\n\n/**\n * Shortcut plugin hook on the specified shortcut keys and trigger related format API\n */\nexport class ShortcutPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private isMac = false;\n\n /**\n * Create a new instance of ShortcutPlugin\n * @param [shortcuts=defaultShortcuts] Allowed commands\n */\n constructor(private shortcuts: ShortcutCommand[] = defaultShortcuts) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'Shortcut';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.isMac = !!this.editor.getEnvironment().isMac;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check:\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n event.eventType == 'keyDown' &&\n (event.rawEvent.ctrlKey || event.rawEvent.altKey || event.rawEvent.metaKey) &&\n !!this.cacheGetCommand(event)\n );\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == 'keyDown') {\n const command = this.cacheGetCommand(event);\n\n if (command) {\n command.onClick(this.editor);\n event.rawEvent.preventDefault();\n }\n }\n }\n\n private cacheGetCommand(event: KeyDownEvent) {\n return cacheGetEventData(event, CommandCacheKey, event => {\n const editor = this.editor;\n\n return (\n editor &&\n this.shortcuts.filter(\n command =>\n this.matchOS(command.environment) &&\n this.matchShortcut(command.shortcutKey, event.rawEvent)\n )[0]\n );\n });\n }\n\n private matchOS(environment?: 'all' | 'mac' | 'nonMac') {\n switch (environment) {\n case 'mac':\n return this.isMac;\n\n case 'nonMac':\n return !this.isMac;\n\n default:\n return true;\n }\n }\n\n private matchShortcut(shortcutKey: ShortcutKeyDefinition, event: KeyboardEvent) {\n const { ctrlKey, altKey, shiftKey, which, metaKey } = event;\n const ctrlOrMeta = this.isMac ? metaKey : ctrlKey;\n const matchModifier =\n (shortcutKey.modifierKey == 'ctrl' && ctrlOrMeta && !altKey) ||\n (shortcutKey.modifierKey == 'alt' && altKey && !ctrlOrMeta);\n\n return matchModifier && shiftKey == shortcutKey.shiftKey && shortcutKey.which == which;\n }\n}\n"]}
1
+ {"version":3,"file":"ShortcutPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { cacheGetEventData } from 'roosterjs-content-model-dom';\nimport type { ShortcutCommand, ShortcutKeyDefinition } from './ShortcutCommand';\nimport {\n ShortcutBold,\n ShortcutBullet,\n ShortcutClearFormat,\n ShortcutDecreaseFont,\n ShortcutIncreaseFont,\n ShortcutIndentList,\n ShortcutItalic,\n ShortcutNumbering,\n ShortcutOutdentList,\n ShortcutRedo,\n ShortcutRedoAlt,\n ShortcutRedoMacOS,\n ShortcutUnderline,\n ShortcutUndo,\n ShortcutUndo2,\n} from './shortcuts';\nimport type {\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\nconst defaultShortcuts: ShortcutCommand[] = [\n ShortcutBold,\n ShortcutItalic,\n ShortcutUnderline,\n ShortcutClearFormat,\n ShortcutUndo,\n ShortcutUndo2,\n ShortcutRedo,\n ShortcutRedoAlt,\n ShortcutRedoMacOS,\n ShortcutBullet,\n ShortcutNumbering,\n ShortcutIncreaseFont,\n ShortcutDecreaseFont,\n ShortcutIndentList,\n ShortcutOutdentList,\n];\nconst CommandCacheKey = '__ShortcutCommandCache';\n\n/**\n * Shortcut plugin hook on the specified shortcut keys and trigger related format API\n */\nexport class ShortcutPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private isMac = false;\n\n /**\n * Create a new instance of ShortcutPlugin\n * @param [shortcuts=defaultShortcuts] Allowed commands\n */\n constructor(private shortcuts: ShortcutCommand[] = defaultShortcuts) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'Shortcut';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.isMac = !!this.editor.getEnvironment().isMac;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check:\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n event.eventType == 'keyDown' &&\n (event.rawEvent.ctrlKey || event.rawEvent.altKey || event.rawEvent.metaKey) &&\n !!this.cacheGetCommand(event)\n );\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == 'keyDown') {\n const command = this.cacheGetCommand(event);\n\n if (command) {\n command.onClick(this.editor);\n event.rawEvent.preventDefault();\n }\n }\n }\n\n private cacheGetCommand(event: KeyDownEvent) {\n return cacheGetEventData(event, CommandCacheKey, event => {\n const editor = this.editor;\n\n return (\n editor &&\n this.shortcuts.filter(\n command =>\n this.matchOS(command.environment) &&\n this.matchShortcut(command.shortcutKey, event.rawEvent)\n )[0]\n );\n });\n }\n\n private matchOS(environment?: 'all' | 'mac' | 'nonMac') {\n switch (environment) {\n case 'mac':\n return this.isMac;\n\n case 'nonMac':\n return !this.isMac;\n\n default:\n return true;\n }\n }\n\n private matchShortcut(shortcutKey: ShortcutKeyDefinition, event: KeyboardEvent) {\n const { ctrlKey, altKey, shiftKey, which, metaKey } = event;\n const ctrlOrMeta = this.isMac ? metaKey : ctrlKey;\n const matchModifier =\n (shortcutKey.modifierKey == 'ctrl' && ctrlOrMeta && !altKey) ||\n (shortcutKey.modifierKey == 'alt' && altKey && !ctrlOrMeta);\n\n return matchModifier && shiftKey == shortcutKey.shiftKey && shortcutKey.which == which;\n }\n}\n"]}
@@ -20,7 +20,7 @@ export declare const ShortcutUnderline: ShortcutCommand;
20
20
  /**
21
21
  * Shortcut command for Clear Format
22
22
  * Windows: Ctrl + Space
23
- * MacOS: Meta + Space
23
+ * MacOS: N/A
24
24
  */
25
25
  export declare const ShortcutClearFormat: ShortcutCommand;
26
26
  /**
@@ -42,11 +42,18 @@ export declare const ShortcutUndo2: ShortcutCommand;
42
42
  */
43
43
  export declare const ShortcutRedo: ShortcutCommand;
44
44
  /**
45
+ * @deprecated
45
46
  * Shortcut command for Redo 2
46
47
  * Windows: N/A
47
48
  * MacOS: Meta + Shift + Z
48
49
  */
49
50
  export declare const ShortcutRedoMacOS: ShortcutCommand;
51
+ /**
52
+ * Shortcut command for Redo 3
53
+ * Windows: Ctrl + Shift + Z
54
+ * MacOS: Meta + Shift + Z
55
+ */
56
+ export declare const ShortcutRedoAlt: ShortcutCommand;
50
57
  /**
51
58
  * Shortcut command for Bullet List
52
59
  * Windows: Ctrl + . (Period)
@@ -74,12 +81,12 @@ export declare const ShortcutDecreaseFont: ShortcutCommand;
74
81
  /**
75
82
  * Shortcut command for Intent list
76
83
  * Windows: Alt + Shift + Arrow Right
77
- * MacOS: Option + Shift+ Arrow Right
84
+ * MacOS: N/A
78
85
  */
79
86
  export declare const ShortcutIndentList: ShortcutCommand;
80
87
  /**
81
88
  * Shortcut command for Outdent list
82
89
  * Windows: Alt + Shift + Arrow Left
83
- * MacOS: Option + Shift+ Arrow Left
90
+ * MacOS: N/A
84
91
  */
85
92
  export declare const ShortcutOutdentList: ShortcutCommand;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoMacOS = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = void 0;
3
+ exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoAlt = exports.ShortcutRedoMacOS = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = void 0;
4
4
  var roosterjs_content_model_core_1 = require("roosterjs-content-model-core");
5
5
  var setShortcutIndentationCommand_1 = require("./utils/setShortcutIndentationCommand");
6
6
  var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
@@ -61,7 +61,7 @@ exports.ShortcutUnderline = {
61
61
  /**
62
62
  * Shortcut command for Clear Format
63
63
  * Windows: Ctrl + Space
64
- * MacOS: Meta + Space
64
+ * MacOS: N/A
65
65
  */
66
66
  exports.ShortcutClearFormat = {
67
67
  shortcutKey: {
@@ -70,6 +70,7 @@ exports.ShortcutClearFormat = {
70
70
  which: 32 /* SPACE */,
71
71
  },
72
72
  onClick: function (editor) { return (0, roosterjs_content_model_api_1.clearFormat)(editor); },
73
+ environment: 'nonMac',
73
74
  };
74
75
  /**
75
76
  * Shortcut command for Undo 1
@@ -113,6 +114,7 @@ exports.ShortcutRedo = {
113
114
  environment: 'nonMac',
114
115
  };
115
116
  /**
117
+ * @deprecated
116
118
  * Shortcut command for Redo 2
117
119
  * Windows: N/A
118
120
  * MacOS: Meta + Shift + Z
@@ -126,6 +128,19 @@ exports.ShortcutRedoMacOS = {
126
128
  onClick: function (editor) { return (0, roosterjs_content_model_core_1.redo)(editor); },
127
129
  environment: 'mac',
128
130
  };
131
+ /**
132
+ * Shortcut command for Redo 3
133
+ * Windows: Ctrl + Shift + Z
134
+ * MacOS: Meta + Shift + Z
135
+ */
136
+ exports.ShortcutRedoAlt = {
137
+ shortcutKey: {
138
+ modifierKey: 'ctrl',
139
+ shiftKey: true,
140
+ which: 90 /* Z */,
141
+ },
142
+ onClick: function (editor) { return (0, roosterjs_content_model_core_1.redo)(editor); },
143
+ };
129
144
  /**
130
145
  * Shortcut command for Bullet List
131
146
  * Windows: Ctrl + . (Period)
@@ -181,7 +196,7 @@ exports.ShortcutDecreaseFont = {
181
196
  /**
182
197
  * Shortcut command for Intent list
183
198
  * Windows: Alt + Shift + Arrow Right
184
- * MacOS: Option + Shift+ Arrow Right
199
+ * MacOS: N/A
185
200
  */
186
201
  exports.ShortcutIndentList = {
187
202
  shortcutKey: {
@@ -192,11 +207,12 @@ exports.ShortcutIndentList = {
192
207
  onClick: function (editor) {
193
208
  (0, setShortcutIndentationCommand_1.setShortcutIndentationCommand)(editor, 'indent');
194
209
  },
210
+ environment: 'nonMac',
195
211
  };
196
212
  /**
197
213
  * Shortcut command for Outdent list
198
214
  * Windows: Alt + Shift + Arrow Left
199
- * MacOS: Option + Shift+ Arrow Left
215
+ * MacOS: N/A
200
216
  */
201
217
  exports.ShortcutOutdentList = {
202
218
  shortcutKey: {
@@ -207,5 +223,6 @@ exports.ShortcutOutdentList = {
207
223
  onClick: function (editor) {
208
224
  (0, setShortcutIndentationCommand_1.setShortcutIndentationCommand)(editor, 'outdent');
209
225
  },
226
+ environment: 'nonMac',
210
227
  };
211
228
  //# sourceMappingURL=shortcuts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":"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","sourcesContent":["import { redo, undo } from 'roosterjs-content-model-core';\nimport { setShortcutIndentationCommand } from './utils/setShortcutIndentationCommand';\nimport {\n changeFontSize,\n clearFormat,\n toggleBold,\n toggleBullet,\n toggleItalic,\n toggleNumbering,\n toggleUnderline,\n} from 'roosterjs-content-model-api';\nimport type { ShortcutCommand } from './ShortcutCommand';\n\nconst enum Keys {\n BACKSPACE = 8,\n SPACE = 32,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n COMMA = 188,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n ArrowRight = 39,\n ArrowLeft = 37,\n}\n\n/**\n * Shortcut command for Bold\n * Windows: Ctrl + B\n * MacOS: Meta + B\n */\nexport const ShortcutBold: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.B,\n },\n onClick: editor => toggleBold(editor),\n};\n\n/**\n * Shortcut command for Italic\n * Windows: Ctrl + I\n * MacOS: Meta + I\n */\nexport const ShortcutItalic: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.I,\n },\n onClick: editor => toggleItalic(editor),\n};\n\n/**\n * Shortcut command for Underline\n * Windows: Ctrl + U\n * MacOS: Meta + U\n */\nexport const ShortcutUnderline: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.U,\n },\n onClick: editor => toggleUnderline(editor),\n};\n\n/**\n * Shortcut command for Clear Format\n * Windows: Ctrl + Space\n * MacOS: Meta + Space\n */\nexport const ShortcutClearFormat: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.SPACE,\n },\n onClick: editor => clearFormat(editor),\n};\n\n/**\n * Shortcut command for Undo 1\n * Windows: Ctrl + Z\n * MacOS: Meta + Z\n */\nexport const ShortcutUndo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Z,\n },\n onClick: editor => undo(editor),\n};\n\n/**\n * Shortcut command for Undo 2\n * Windows: Alt + Backspace\n * MacOS: N/A\n */\nexport const ShortcutUndo2: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: false,\n which: Keys.BACKSPACE,\n },\n onClick: editor => undo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 1\n * Windows: Ctrl + Y\n * MacOS: N/A\n */\nexport const ShortcutRedo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Y,\n },\n onClick: editor => redo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 2\n * Windows: N/A\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoMacOS: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n environment: 'mac',\n};\n\n/**\n * Shortcut command for Bullet List\n * Windows: Ctrl + . (Period)\n * MacOS: Meta + . (Period)\n */\nexport const ShortcutBullet: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.PERIOD,\n },\n onClick: editor => toggleBullet(editor),\n};\n\n/**\n * Shortcut command for Numbering List\n * Windows: Ctrl + / (Forward slash)\n * MacOS: Meta + / (Forward slash)\n */\nexport const ShortcutNumbering: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.FORWARD_SLASH,\n },\n onClick: editor => toggleNumbering(editor),\n};\n\n/**\n * Shortcut command for Increase Font\n * Windows: Ctrl + Shift + . (Period)\n * MacOS: Meta + Shift + . (Period)\n */\nexport const ShortcutIncreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.PERIOD,\n },\n onClick: editor => changeFontSize(editor, 'increase'),\n};\n\n/**\n * Shortcut command for Decrease Font\n * Windows: Ctrl + Shift + , (Comma)\n * MacOS: Meta + Shift + , (Comma)\n */\nexport const ShortcutDecreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.COMMA,\n },\n onClick: editor => changeFontSize(editor, 'decrease'),\n};\n\n/**\n * Shortcut command for Intent list\n * Windows: Alt + Shift + Arrow Right\n * MacOS: Option + Shift+ Arrow Right\n */\nexport const ShortcutIndentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowRight,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'indent');\n },\n};\n\n/**\n * Shortcut command for Outdent list\n * Windows: Alt + Shift + Arrow Left\n * MacOS: Option + Shift+ Arrow Left\n */\nexport const ShortcutOutdentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowLeft,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'outdent');\n },\n};\n"]}
1
+ {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":"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","sourcesContent":["import { redo, undo } from 'roosterjs-content-model-core';\nimport { setShortcutIndentationCommand } from './utils/setShortcutIndentationCommand';\nimport {\n changeFontSize,\n clearFormat,\n toggleBold,\n toggleBullet,\n toggleItalic,\n toggleNumbering,\n toggleUnderline,\n} from 'roosterjs-content-model-api';\nimport type { ShortcutCommand } from './ShortcutCommand';\n\nconst enum Keys {\n BACKSPACE = 8,\n SPACE = 32,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n COMMA = 188,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n ArrowRight = 39,\n ArrowLeft = 37,\n}\n\n/**\n * Shortcut command for Bold\n * Windows: Ctrl + B\n * MacOS: Meta + B\n */\nexport const ShortcutBold: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.B,\n },\n onClick: editor => toggleBold(editor),\n};\n\n/**\n * Shortcut command for Italic\n * Windows: Ctrl + I\n * MacOS: Meta + I\n */\nexport const ShortcutItalic: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.I,\n },\n onClick: editor => toggleItalic(editor),\n};\n\n/**\n * Shortcut command for Underline\n * Windows: Ctrl + U\n * MacOS: Meta + U\n */\nexport const ShortcutUnderline: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.U,\n },\n onClick: editor => toggleUnderline(editor),\n};\n\n/**\n * Shortcut command for Clear Format\n * Windows: Ctrl + Space\n * MacOS: N/A\n */\nexport const ShortcutClearFormat: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.SPACE,\n },\n onClick: editor => clearFormat(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Undo 1\n * Windows: Ctrl + Z\n * MacOS: Meta + Z\n */\nexport const ShortcutUndo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Z,\n },\n onClick: editor => undo(editor),\n};\n\n/**\n * Shortcut command for Undo 2\n * Windows: Alt + Backspace\n * MacOS: N/A\n */\nexport const ShortcutUndo2: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: false,\n which: Keys.BACKSPACE,\n },\n onClick: editor => undo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 1\n * Windows: Ctrl + Y\n * MacOS: N/A\n */\nexport const ShortcutRedo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Y,\n },\n onClick: editor => redo(editor),\n environment: 'nonMac',\n};\n\n/**\n * @deprecated\n * Shortcut command for Redo 2\n * Windows: N/A\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoMacOS: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n environment: 'mac',\n};\n\n/**\n * Shortcut command for Redo 3\n * Windows: Ctrl + Shift + Z\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoAlt: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n};\n\n/**\n * Shortcut command for Bullet List\n * Windows: Ctrl + . (Period)\n * MacOS: Meta + . (Period)\n */\nexport const ShortcutBullet: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.PERIOD,\n },\n onClick: editor => toggleBullet(editor),\n};\n\n/**\n * Shortcut command for Numbering List\n * Windows: Ctrl + / (Forward slash)\n * MacOS: Meta + / (Forward slash)\n */\nexport const ShortcutNumbering: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.FORWARD_SLASH,\n },\n onClick: editor => toggleNumbering(editor),\n};\n\n/**\n * Shortcut command for Increase Font\n * Windows: Ctrl + Shift + . (Period)\n * MacOS: Meta + Shift + . (Period)\n */\nexport const ShortcutIncreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.PERIOD,\n },\n onClick: editor => changeFontSize(editor, 'increase'),\n};\n\n/**\n * Shortcut command for Decrease Font\n * Windows: Ctrl + Shift + , (Comma)\n * MacOS: Meta + Shift + , (Comma)\n */\nexport const ShortcutDecreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.COMMA,\n },\n onClick: editor => changeFontSize(editor, 'decrease'),\n};\n\n/**\n * Shortcut command for Intent list\n * Windows: Alt + Shift + Arrow Right\n * MacOS: N/A\n */\nexport const ShortcutIndentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowRight,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'indent');\n },\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Outdent list\n * Windows: Alt + Shift + Arrow Left\n * MacOS: N/A\n */\nexport const ShortcutOutdentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowLeft,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'outdent');\n },\n environment: 'nonMac',\n};\n"]}
@@ -7,12 +7,12 @@ var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
7
7
  * @internal
8
8
  */
9
9
  function setShortcutIndentationCommand(editor, operation) {
10
- editor.formatContentModel(function (model) {
10
+ editor.formatContentModel(function (model, context) {
11
11
  var listItem = (0, roosterjs_content_model_dom_1.getFirstSelectedListItem)(model);
12
12
  if (listItem &&
13
13
  listItem.blocks[0].blockType == 'Paragraph' &&
14
14
  listItem.blocks[0].segments[0].segmentType == 'SelectionMarker') {
15
- (0, roosterjs_content_model_api_1.setModelIndentation)(model, operation);
15
+ (0, roosterjs_content_model_api_1.setModelIndentation)(model, operation, undefined /*length*/, context);
16
16
  return true;
17
17
  }
18
18
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"setShortcutIndentationCommand.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts"],"names":[],"mappings":";;;AAAA,2EAAuE;AACvE,2EAAkE;AAGlE;;GAEG;AACH,SAAgB,6BAA6B,CAAC,MAAe,EAAE,SAA+B;IAC1F,MAAM,CAAC,kBAAkB,CAAC,UAAA,KAAK;QAC3B,IAAM,QAAQ,GAAG,IAAA,sDAAwB,EAAC,KAAK,CAAC,CAAC;QAEjD,IACI,QAAQ;YACR,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,WAAW;YAC3C,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,EACjE;YACE,IAAA,iDAAmB,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAdD,sEAcC","sourcesContent":["import { getFirstSelectedListItem } from 'roosterjs-content-model-dom';\nimport { setModelIndentation } from 'roosterjs-content-model-api';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setShortcutIndentationCommand(editor: IEditor, operation: 'indent' | 'outdent') {\n editor.formatContentModel(model => {\n const listItem = getFirstSelectedListItem(model);\n\n if (\n listItem &&\n listItem.blocks[0].blockType == 'Paragraph' &&\n listItem.blocks[0].segments[0].segmentType == 'SelectionMarker'\n ) {\n setModelIndentation(model, operation);\n return true;\n }\n return false;\n });\n}\n"]}
1
+ {"version":3,"file":"setShortcutIndentationCommand.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts"],"names":[],"mappings":";;;AAAA,2EAAuE;AACvE,2EAAkE;AAGlE;;GAEG;AACH,SAAgB,6BAA6B,CAAC,MAAe,EAAE,SAA+B;IAC1F,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,OAAO;QACrC,IAAM,QAAQ,GAAG,IAAA,sDAAwB,EAAC,KAAK,CAAC,CAAC;QAEjD,IACI,QAAQ;YACR,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,WAAW;YAC3C,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,EACjE;YACE,IAAA,iDAAmB,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAdD,sEAcC","sourcesContent":["import { getFirstSelectedListItem } from 'roosterjs-content-model-dom';\nimport { setModelIndentation } from 'roosterjs-content-model-api';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setShortcutIndentationCommand(editor: IEditor, operation: 'indent' | 'outdent') {\n editor.formatContentModel((model, context) => {\n const listItem = getFirstSelectedListItem(model);\n\n if (\n listItem &&\n listItem.blocks[0].blockType == 'Paragraph' &&\n listItem.blocks[0].segments[0].segmentType == 'SelectionMarker'\n ) {\n setModelIndentation(model, operation, undefined /*length*/, context);\n return true;\n }\n return false;\n });\n}\n"]}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Optional callback when creating a TableEditPlugin, allows to customize the Selectors element as required.
3
+ */
4
+ export declare type OnTableEditorCreatedCallback = (editorType: 'HorizontalTableInserter' | 'VerticalTableInserter' | 'TableMover' | 'TableResizer', element: HTMLElement) => () => void;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=OnTableEditorCreatedCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnTableEditorCreatedCallback.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/OnTableEditorCreatedCallback.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Optional callback when creating a TableEditPlugin, allows to customize the Selectors element as required.\n */\nexport type OnTableEditorCreatedCallback = (\n editorType: 'HorizontalTableInserter' | 'VerticalTableInserter' | 'TableMover' | 'TableResizer',\n element: HTMLElement\n) => () => void;\n"]}