roosterjs-content-model-plugins 0.27.0 → 0.28.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 (428) hide show
  1. package/lib/autoFormat/AutoFormatPlugin.d.ts +9 -0
  2. package/lib/autoFormat/AutoFormatPlugin.js +24 -4
  3. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
  4. package/lib/autoFormat/link/createLink.d.ts +5 -0
  5. package/lib/autoFormat/link/createLink.js +26 -0
  6. package/lib/autoFormat/link/createLink.js.map +1 -0
  7. package/lib/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
  8. package/lib/autoFormat/link/createLinkAfterSpace.js +39 -0
  9. package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -0
  10. package/lib/autoFormat/link/getLinkSegment.d.ts +5 -0
  11. package/lib/autoFormat/link/getLinkSegment.js +27 -0
  12. package/lib/autoFormat/link/getLinkSegment.js.map +1 -0
  13. package/lib/autoFormat/link/unlink.d.ts +5 -0
  14. package/lib/autoFormat/link/unlink.js +20 -0
  15. package/lib/autoFormat/link/unlink.js.map +1 -0
  16. package/lib/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
  17. package/lib/autoFormat/list/getIndex.js.map +1 -0
  18. package/lib/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
  19. package/lib/autoFormat/list/getListTypeStyle.js.map +1 -0
  20. package/lib/autoFormat/list/getNumberingListStyle.js.map +1 -0
  21. package/lib/autoFormat/{keyboardListTrigger.js → list/keyboardListTrigger.js} +17 -15
  22. package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -0
  23. package/lib/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
  24. package/lib/contextMenuBase/ContextMenuPluginBase.js +84 -0
  25. package/lib/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
  26. package/lib/edit/EditPlugin.js.map +1 -1
  27. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  28. package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  29. package/lib/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
  30. package/lib/edit/deleteSteps/deleteEmptyQuote.js +60 -0
  31. package/lib/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
  32. package/lib/edit/deleteSteps/deleteList.js +2 -1
  33. package/lib/edit/deleteSteps/deleteList.js.map +1 -1
  34. package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  35. package/lib/edit/handleKeyboardEventCommon.js.map +1 -1
  36. package/lib/edit/inputSteps/handleEnterOnList.js +1 -1
  37. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
  38. package/lib/edit/keyboardDelete.js +9 -1
  39. package/lib/edit/keyboardDelete.js.map +1 -1
  40. package/lib/edit/keyboardInput.js +2 -1
  41. package/lib/edit/keyboardInput.js.map +1 -1
  42. package/lib/edit/keyboardTab.js.map +1 -1
  43. package/lib/edit/tabUtils/handleTabOnList.js.map +1 -1
  44. package/lib/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  45. package/lib/edit/utils/getLeafSiblingBlock.js.map +1 -1
  46. package/lib/index.d.ts +2 -1
  47. package/lib/index.js +5 -1
  48. package/lib/index.js.map +1 -1
  49. package/lib/paste/Excel/processPastedContentFromExcel.js +1 -1
  50. package/lib/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  51. package/lib/paste/PastePlugin.js +6 -6
  52. package/lib/paste/PastePlugin.js.map +1 -1
  53. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  54. package/lib/paste/WacComponents/constants.js.map +1 -1
  55. package/lib/paste/WacComponents/processPastedContentWacComponents.js +6 -6
  56. package/lib/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  57. package/lib/paste/WordDesktop/WordMetadata.js.map +1 -1
  58. package/lib/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
  59. package/lib/paste/WordDesktop/getStyleMetadata.js +2 -1
  60. package/lib/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  61. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js +5 -17
  62. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  63. package/lib/paste/WordDesktop/processWordComments.js.map +1 -1
  64. package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
  65. package/lib/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  66. package/lib/paste/pasteSourceValidations/constants.js.map +1 -1
  67. package/lib/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  68. package/lib/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  69. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  70. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  71. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  72. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  73. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  74. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  75. package/lib/paste/utils/addParser.d.ts +1 -1
  76. package/lib/paste/utils/addParser.js +2 -1
  77. package/lib/paste/utils/addParser.js.map +1 -1
  78. package/lib/paste/utils/deprecatedColorParser.js.map +1 -1
  79. package/lib/paste/utils/getStyles.js.map +1 -1
  80. package/lib/paste/utils/linkParser.js.map +1 -1
  81. package/lib/paste/utils/setProcessor.js.map +1 -1
  82. package/lib/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
  83. package/lib/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  84. package/lib/pluginUtils/CreateElement/createElement.d.ts +2 -2
  85. package/lib/pluginUtils/CreateElement/createElement.js +2 -1
  86. package/lib/pluginUtils/CreateElement/createElement.js.map +1 -1
  87. package/lib/pluginUtils/Disposable.d.ts +1 -1
  88. package/lib/pluginUtils/Disposable.js.map +1 -1
  89. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
  90. package/lib/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  91. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
  92. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js +2 -1
  93. package/lib/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  94. package/lib/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
  95. package/lib/pluginUtils/Rect/getIntersectedRect.js +4 -3
  96. package/lib/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  97. package/lib/shortcut/ShortcutCommand.js.map +1 -1
  98. package/lib/shortcut/ShortcutPlugin.js +2 -0
  99. package/lib/shortcut/ShortcutPlugin.js.map +1 -1
  100. package/lib/shortcut/shortcuts.d.ts +12 -0
  101. package/lib/shortcut/shortcuts.js +34 -1
  102. package/lib/shortcut/shortcuts.js.map +1 -1
  103. package/lib/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
  104. package/lib/shortcut/utils/setShortcutIndentationCommand.js +22 -0
  105. package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
  106. package/lib/tableEdit/TableEditPlugin.js +5 -5
  107. package/lib/tableEdit/TableEditPlugin.js.map +1 -1
  108. package/lib/tableEdit/editors/TableEditor.d.ts +1 -1
  109. package/lib/tableEdit/editors/TableEditor.js +17 -17
  110. package/lib/tableEdit/editors/TableEditor.js.map +1 -1
  111. package/lib/tableEdit/editors/features/CellResizer.d.ts +2 -2
  112. package/lib/tableEdit/editors/features/CellResizer.js +7 -7
  113. package/lib/tableEdit/editors/features/CellResizer.js.map +1 -1
  114. package/{lib-mjs/tableEdit/editors/features/TableEditorFeature.d.ts → lib/tableEdit/editors/features/TableEditFeature.d.ts} +2 -2
  115. package/lib/tableEdit/editors/features/{TableEditorFeature.js → TableEditFeature.js} +1 -1
  116. package/lib/tableEdit/editors/features/TableEditFeature.js.map +1 -0
  117. package/lib/tableEdit/editors/features/TableInserter.d.ts +2 -2
  118. package/lib/tableEdit/editors/features/TableInserter.js +5 -5
  119. package/lib/tableEdit/editors/features/TableInserter.js.map +1 -1
  120. package/lib/tableEdit/editors/features/TableMover.d.ts +2 -2
  121. package/lib/tableEdit/editors/features/TableMover.js +6 -6
  122. package/lib/tableEdit/editors/features/TableMover.js.map +1 -1
  123. package/lib/tableEdit/editors/features/TableResizer.d.ts +2 -2
  124. package/lib/tableEdit/editors/features/TableResizer.js +11 -8
  125. package/lib/tableEdit/editors/features/TableResizer.js.map +1 -1
  126. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +9 -0
  127. package/lib-amd/autoFormat/AutoFormatPlugin.js +21 -4
  128. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
  129. package/lib-amd/autoFormat/link/createLink.d.ts +5 -0
  130. package/lib-amd/autoFormat/link/createLink.js +26 -0
  131. package/lib-amd/autoFormat/link/createLink.js.map +1 -0
  132. package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
  133. package/lib-amd/autoFormat/link/createLinkAfterSpace.js +38 -0
  134. package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -0
  135. package/lib-amd/autoFormat/link/getLinkSegment.d.ts +5 -0
  136. package/lib-amd/autoFormat/link/getLinkSegment.js +27 -0
  137. package/lib-amd/autoFormat/link/getLinkSegment.js.map +1 -0
  138. package/lib-amd/autoFormat/link/unlink.d.ts +5 -0
  139. package/lib-amd/autoFormat/link/unlink.js +21 -0
  140. package/lib-amd/autoFormat/link/unlink.js.map +1 -0
  141. package/lib-amd/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
  142. package/lib-amd/autoFormat/list/getIndex.js.map +1 -0
  143. package/lib-amd/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
  144. package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -0
  145. package/lib-amd/autoFormat/list/getNumberingListStyle.js.map +1 -0
  146. package/lib-amd/autoFormat/list/keyboardListTrigger.js +46 -0
  147. package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -0
  148. package/lib-amd/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
  149. package/lib-amd/contextMenuBase/ContextMenuPluginBase.js +86 -0
  150. package/lib-amd/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
  151. package/lib-amd/edit/EditPlugin.js.map +1 -1
  152. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  153. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  154. package/lib-amd/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
  155. package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js +60 -0
  156. package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
  157. package/lib-amd/edit/deleteSteps/deleteList.js +2 -1
  158. package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
  159. package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  160. package/lib-amd/edit/handleKeyboardEventCommon.js.map +1 -1
  161. package/lib-amd/edit/inputSteps/handleEnterOnList.js +1 -1
  162. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
  163. package/lib-amd/edit/keyboardDelete.js +9 -2
  164. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  165. package/lib-amd/edit/keyboardInput.js +2 -2
  166. package/lib-amd/edit/keyboardInput.js.map +1 -1
  167. package/lib-amd/edit/keyboardTab.js.map +1 -1
  168. package/lib-amd/edit/tabUtils/handleTabOnList.js.map +1 -1
  169. package/lib-amd/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  170. package/lib-amd/edit/utils/getLeafSiblingBlock.js.map +1 -1
  171. package/lib-amd/index.d.ts +2 -1
  172. package/lib-amd/index.js +5 -2
  173. package/lib-amd/index.js.map +1 -1
  174. package/lib-amd/paste/Excel/processPastedContentFromExcel.js +1 -1
  175. package/lib-amd/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  176. package/lib-amd/paste/PastePlugin.js +6 -6
  177. package/lib-amd/paste/PastePlugin.js.map +1 -1
  178. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  179. package/lib-amd/paste/WacComponents/constants.js.map +1 -1
  180. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js +6 -6
  181. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  182. package/lib-amd/paste/WordDesktop/WordMetadata.js.map +1 -1
  183. package/lib-amd/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
  184. package/lib-amd/paste/WordDesktop/getStyleMetadata.js +2 -1
  185. package/lib-amd/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  186. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js +5 -17
  187. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  188. package/lib-amd/paste/WordDesktop/processWordComments.js.map +1 -1
  189. package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
  190. package/lib-amd/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  191. package/lib-amd/paste/pasteSourceValidations/constants.js.map +1 -1
  192. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  193. package/lib-amd/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  194. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  195. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  196. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  197. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  198. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  199. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  200. package/lib-amd/paste/utils/addParser.d.ts +1 -1
  201. package/lib-amd/paste/utils/addParser.js +2 -1
  202. package/lib-amd/paste/utils/addParser.js.map +1 -1
  203. package/lib-amd/paste/utils/deprecatedColorParser.js.map +1 -1
  204. package/lib-amd/paste/utils/getStyles.js.map +1 -1
  205. package/lib-amd/paste/utils/linkParser.js.map +1 -1
  206. package/lib-amd/paste/utils/setProcessor.js.map +1 -1
  207. package/lib-amd/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
  208. package/lib-amd/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  209. package/lib-amd/pluginUtils/CreateElement/createElement.d.ts +2 -2
  210. package/lib-amd/pluginUtils/CreateElement/createElement.js +2 -1
  211. package/lib-amd/pluginUtils/CreateElement/createElement.js.map +1 -1
  212. package/lib-amd/pluginUtils/Disposable.d.ts +1 -1
  213. package/lib-amd/pluginUtils/Disposable.js.map +1 -1
  214. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
  215. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  216. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
  217. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js +2 -1
  218. package/lib-amd/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  219. package/lib-amd/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
  220. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js +4 -3
  221. package/lib-amd/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  222. package/lib-amd/shortcut/ShortcutCommand.js.map +1 -1
  223. package/lib-amd/shortcut/ShortcutPlugin.js +2 -0
  224. package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -1
  225. package/lib-amd/shortcut/shortcuts.d.ts +12 -0
  226. package/lib-amd/shortcut/shortcuts.js +34 -2
  227. package/lib-amd/shortcut/shortcuts.js.map +1 -1
  228. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
  229. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +22 -0
  230. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
  231. package/lib-amd/tableEdit/TableEditPlugin.js +5 -4
  232. package/lib-amd/tableEdit/TableEditPlugin.js.map +1 -1
  233. package/lib-amd/tableEdit/editors/TableEditor.d.ts +1 -1
  234. package/lib-amd/tableEdit/editors/TableEditor.js +17 -16
  235. package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -1
  236. package/lib-amd/tableEdit/editors/features/CellResizer.d.ts +2 -2
  237. package/lib-amd/tableEdit/editors/features/CellResizer.js +8 -7
  238. package/lib-amd/tableEdit/editors/features/CellResizer.js.map +1 -1
  239. package/lib-amd/tableEdit/editors/features/{TableEditorFeature.d.ts → TableEditFeature.d.ts} +2 -2
  240. package/lib-amd/tableEdit/editors/features/{TableEditorFeature.js → TableEditFeature.js} +1 -1
  241. package/lib-amd/tableEdit/editors/features/TableEditFeature.js.map +1 -0
  242. package/lib-amd/tableEdit/editors/features/TableInserter.d.ts +2 -2
  243. package/lib-amd/tableEdit/editors/features/TableInserter.js +6 -5
  244. package/lib-amd/tableEdit/editors/features/TableInserter.js.map +1 -1
  245. package/lib-amd/tableEdit/editors/features/TableMover.d.ts +2 -2
  246. package/lib-amd/tableEdit/editors/features/TableMover.js +7 -6
  247. package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -1
  248. package/lib-amd/tableEdit/editors/features/TableResizer.d.ts +2 -2
  249. package/lib-amd/tableEdit/editors/features/TableResizer.js +12 -8
  250. package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -1
  251. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +9 -0
  252. package/lib-mjs/autoFormat/AutoFormatPlugin.js +24 -4
  253. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
  254. package/lib-mjs/autoFormat/link/createLink.d.ts +5 -0
  255. package/lib-mjs/autoFormat/link/createLink.js +22 -0
  256. package/lib-mjs/autoFormat/link/createLink.js.map +1 -0
  257. package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +5 -0
  258. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +35 -0
  259. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -0
  260. package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +5 -0
  261. package/lib-mjs/autoFormat/link/getLinkSegment.js +23 -0
  262. package/lib-mjs/autoFormat/link/getLinkSegment.js.map +1 -0
  263. package/lib-mjs/autoFormat/link/unlink.d.ts +5 -0
  264. package/lib-mjs/autoFormat/link/unlink.js +16 -0
  265. package/lib-mjs/autoFormat/link/unlink.js.map +1 -0
  266. package/lib-mjs/autoFormat/list/convertAlphaToDecimals.js.map +1 -0
  267. package/lib-mjs/autoFormat/list/getIndex.js.map +1 -0
  268. package/lib-mjs/autoFormat/{utils → list}/getListTypeStyle.js +3 -0
  269. package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -0
  270. package/lib-mjs/autoFormat/list/getNumberingListStyle.js.map +1 -0
  271. package/lib-mjs/autoFormat/{keyboardListTrigger.js → list/keyboardListTrigger.js} +17 -15
  272. package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -0
  273. package/lib-mjs/contextMenuBase/ContextMenuPluginBase.d.ts +58 -0
  274. package/lib-mjs/contextMenuBase/ContextMenuPluginBase.js +81 -0
  275. package/lib-mjs/contextMenuBase/ContextMenuPluginBase.js.map +1 -0
  276. package/lib-mjs/edit/EditPlugin.js.map +1 -1
  277. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  278. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  279. package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.d.ts +5 -0
  280. package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js +56 -0
  281. package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js.map +1 -0
  282. package/lib-mjs/edit/deleteSteps/deleteList.js +2 -1
  283. package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
  284. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  285. package/lib-mjs/edit/handleKeyboardEventCommon.js.map +1 -1
  286. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +1 -1
  287. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
  288. package/lib-mjs/edit/keyboardDelete.js +9 -1
  289. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  290. package/lib-mjs/edit/keyboardInput.js +2 -1
  291. package/lib-mjs/edit/keyboardInput.js.map +1 -1
  292. package/lib-mjs/edit/keyboardTab.js.map +1 -1
  293. package/lib-mjs/edit/tabUtils/handleTabOnList.js.map +1 -1
  294. package/lib-mjs/edit/tabUtils/handleTabOnParagraph.js.map +1 -1
  295. package/lib-mjs/edit/utils/getLeafSiblingBlock.js.map +1 -1
  296. package/lib-mjs/index.d.ts +2 -1
  297. package/lib-mjs/index.js +2 -1
  298. package/lib-mjs/index.js.map +1 -1
  299. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js +1 -1
  300. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  301. package/lib-mjs/paste/PastePlugin.js +1 -1
  302. package/lib-mjs/paste/PastePlugin.js.map +1 -1
  303. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  304. package/lib-mjs/paste/WacComponents/constants.js.map +1 -1
  305. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js +1 -1
  306. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  307. package/lib-mjs/paste/WordDesktop/WordMetadata.js.map +1 -1
  308. package/lib-mjs/paste/WordDesktop/getStyleMetadata.d.ts +1 -1
  309. package/lib-mjs/paste/WordDesktop/getStyleMetadata.js +1 -1
  310. package/lib-mjs/paste/WordDesktop/getStyleMetadata.js.map +1 -1
  311. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js +2 -14
  312. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  313. package/lib-mjs/paste/WordDesktop/processWordComments.js.map +1 -1
  314. package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
  315. package/lib-mjs/paste/WordDesktop/removeNegativeTextIndentParser.js.map +1 -1
  316. package/lib-mjs/paste/pasteSourceValidations/constants.js.map +1 -1
  317. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  318. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  319. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  320. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  321. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  322. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  323. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  324. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  325. package/lib-mjs/paste/utils/addParser.d.ts +1 -1
  326. package/lib-mjs/paste/utils/addParser.js +1 -1
  327. package/lib-mjs/paste/utils/addParser.js.map +1 -1
  328. package/lib-mjs/paste/utils/deprecatedColorParser.js.map +1 -1
  329. package/lib-mjs/paste/utils/getStyles.js.map +1 -1
  330. package/lib-mjs/paste/utils/linkParser.js.map +1 -1
  331. package/lib-mjs/paste/utils/setProcessor.js.map +1 -1
  332. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.d.ts +1 -1
  333. package/lib-mjs/pluginUtils/CreateElement/CreateElementData.js.map +1 -1
  334. package/lib-mjs/pluginUtils/CreateElement/createElement.d.ts +2 -2
  335. package/lib-mjs/pluginUtils/CreateElement/createElement.js +1 -1
  336. package/lib-mjs/pluginUtils/CreateElement/createElement.js.map +1 -1
  337. package/lib-mjs/pluginUtils/Disposable.d.ts +1 -1
  338. package/lib-mjs/pluginUtils/Disposable.js.map +1 -1
  339. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.d.ts +1 -1
  340. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHandler.js.map +1 -1
  341. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.d.ts +3 -3
  342. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js +1 -1
  343. package/lib-mjs/pluginUtils/DragAndDrop/DragAndDropHelper.js.map +1 -1
  344. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.d.ts +1 -1
  345. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js +2 -2
  346. package/lib-mjs/pluginUtils/Rect/getIntersectedRect.js.map +1 -1
  347. package/lib-mjs/shortcut/ShortcutCommand.js.map +1 -1
  348. package/lib-mjs/shortcut/ShortcutPlugin.js +3 -1
  349. package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -1
  350. package/lib-mjs/shortcut/shortcuts.d.ts +12 -0
  351. package/lib-mjs/shortcut/shortcuts.js +33 -0
  352. package/lib-mjs/shortcut/shortcuts.js.map +1 -1
  353. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.d.ts +5 -0
  354. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +18 -0
  355. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -0
  356. package/lib-mjs/tableEdit/TableEditPlugin.js +4 -4
  357. package/lib-mjs/tableEdit/TableEditPlugin.js.map +1 -1
  358. package/lib-mjs/tableEdit/editors/TableEditor.d.ts +1 -1
  359. package/lib-mjs/tableEdit/editors/TableEditor.js +7 -8
  360. package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -1
  361. package/lib-mjs/tableEdit/editors/features/CellResizer.d.ts +2 -2
  362. package/lib-mjs/tableEdit/editors/features/CellResizer.js +4 -5
  363. package/lib-mjs/tableEdit/editors/features/CellResizer.js.map +1 -1
  364. package/{lib/tableEdit/editors/features/TableEditorFeature.d.ts → lib-mjs/tableEdit/editors/features/TableEditFeature.d.ts} +2 -2
  365. package/lib-mjs/tableEdit/editors/features/{TableEditorFeature.js → TableEditFeature.js} +1 -1
  366. package/lib-mjs/tableEdit/editors/features/TableEditFeature.js.map +1 -0
  367. package/lib-mjs/tableEdit/editors/features/TableInserter.d.ts +2 -2
  368. package/lib-mjs/tableEdit/editors/features/TableInserter.js +4 -5
  369. package/lib-mjs/tableEdit/editors/features/TableInserter.js.map +1 -1
  370. package/lib-mjs/tableEdit/editors/features/TableMover.d.ts +2 -2
  371. package/lib-mjs/tableEdit/editors/features/TableMover.js +4 -5
  372. package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -1
  373. package/lib-mjs/tableEdit/editors/features/TableResizer.d.ts +2 -2
  374. package/lib-mjs/tableEdit/editors/features/TableResizer.js +7 -5
  375. package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -1
  376. package/package.json +5 -5
  377. package/lib/autoFormat/keyboardListTrigger.js.map +0 -1
  378. package/lib/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
  379. package/lib/autoFormat/utils/getIndex.js.map +0 -1
  380. package/lib/autoFormat/utils/getListTypeStyle.js.map +0 -1
  381. package/lib/autoFormat/utils/getNumberingListStyle.js.map +0 -1
  382. package/lib/pluginUtils/Rect/normalizeRect.d.ts +0 -7
  383. package/lib/pluginUtils/Rect/normalizeRect.js +0 -20
  384. package/lib/pluginUtils/Rect/normalizeRect.js.map +0 -1
  385. package/lib/tableEdit/editors/features/TableEditorFeature.js.map +0 -1
  386. package/lib-amd/autoFormat/keyboardListTrigger.js +0 -44
  387. package/lib-amd/autoFormat/keyboardListTrigger.js.map +0 -1
  388. package/lib-amd/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
  389. package/lib-amd/autoFormat/utils/getIndex.js.map +0 -1
  390. package/lib-amd/autoFormat/utils/getListTypeStyle.js.map +0 -1
  391. package/lib-amd/autoFormat/utils/getNumberingListStyle.js.map +0 -1
  392. package/lib-amd/pluginUtils/Rect/normalizeRect.d.ts +0 -7
  393. package/lib-amd/pluginUtils/Rect/normalizeRect.js +0 -22
  394. package/lib-amd/pluginUtils/Rect/normalizeRect.js.map +0 -1
  395. package/lib-amd/tableEdit/editors/features/TableEditorFeature.js.map +0 -1
  396. package/lib-mjs/autoFormat/keyboardListTrigger.js.map +0 -1
  397. package/lib-mjs/autoFormat/utils/convertAlphaToDecimals.js.map +0 -1
  398. package/lib-mjs/autoFormat/utils/getIndex.js.map +0 -1
  399. package/lib-mjs/autoFormat/utils/getListTypeStyle.js.map +0 -1
  400. package/lib-mjs/autoFormat/utils/getNumberingListStyle.js.map +0 -1
  401. package/lib-mjs/pluginUtils/Rect/normalizeRect.d.ts +0 -7
  402. package/lib-mjs/pluginUtils/Rect/normalizeRect.js +0 -17
  403. package/lib-mjs/pluginUtils/Rect/normalizeRect.js.map +0 -1
  404. package/lib-mjs/tableEdit/editors/features/TableEditorFeature.js.map +0 -1
  405. /package/lib/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
  406. /package/lib/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
  407. /package/lib/autoFormat/{utils → list}/getIndex.d.ts +0 -0
  408. /package/lib/autoFormat/{utils → list}/getIndex.js +0 -0
  409. /package/lib/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
  410. /package/lib/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
  411. /package/lib/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
  412. /package/lib/autoFormat/{keyboardListTrigger.d.ts → list/keyboardListTrigger.d.ts} +0 -0
  413. /package/lib-amd/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
  414. /package/lib-amd/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
  415. /package/lib-amd/autoFormat/{utils → list}/getIndex.d.ts +0 -0
  416. /package/lib-amd/autoFormat/{utils → list}/getIndex.js +0 -0
  417. /package/lib-amd/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
  418. /package/lib-amd/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
  419. /package/lib-amd/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
  420. /package/lib-amd/autoFormat/{keyboardListTrigger.d.ts → list/keyboardListTrigger.d.ts} +0 -0
  421. /package/lib-mjs/autoFormat/{utils → list}/convertAlphaToDecimals.d.ts +0 -0
  422. /package/lib-mjs/autoFormat/{utils → list}/convertAlphaToDecimals.js +0 -0
  423. /package/lib-mjs/autoFormat/{utils → list}/getIndex.d.ts +0 -0
  424. /package/lib-mjs/autoFormat/{utils → list}/getIndex.js +0 -0
  425. /package/lib-mjs/autoFormat/{utils → list}/getListTypeStyle.d.ts +0 -0
  426. /package/lib-mjs/autoFormat/{utils → list}/getNumberingListStyle.d.ts +0 -0
  427. /package/lib-mjs/autoFormat/{utils → list}/getNumberingListStyle.js +0 -0
  428. /package/lib-mjs/autoFormat/{keyboardListTrigger.d.ts → list/keyboardListTrigger.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"CellResizer.js","sourceRoot":"","sources":["../../../../../../packages-content-model/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import createElement from '../../../pluginUtils/CreateElement/createElement';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport normalizeRect from '../../../pluginUtils/Rect/normalizeRect';\nimport { isElementOfType } from 'roosterjs-content-model-dom';\nimport {\n getFirstSelectedTable,\n MIN_ALLOWED_TABLE_CELL_WIDTH,\n normalizeTable,\n} from 'roosterjs-content-model-core';\nimport type DragAndDropHandler from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { ContentModelTable, IEditor } from 'roosterjs-content-model-types';\nimport type TableEditFeature from './TableEditorFeature';\n\nconst CELL_RESIZER_WIDTH = 4;\n\n/**\n * @internal\n */\nexport default function createCellResizer(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onStart: () => void,\n onEnd: () => false,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const document = td.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${isHorizontal ? 'row' : 'col'}-resize; user-select: none`,\n };\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = { editor, td, table, isRTL, zoomScale, onStart };\n const setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;\n setPosition(context, div);\n\n const handler: DragAndDropHandler<DragAndDropContext, DragAndDropInitValue> = {\n onDragStart,\n // Horizontal modifies row height, vertical modifies column width\n onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,\n onDragEnd: onEnd,\n };\n\n const featureHandler = new DragAndDropHelper<DragAndDropContext, DragAndDropInitValue>(\n div,\n context,\n setPosition,\n handler,\n zoomScale,\n editor.getEnvironment().isMobileOrTablet\n );\n\n return { node: td, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n editor: IEditor;\n td: HTMLTableCellElement;\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n}\n\ninterface DragAndDropInitValue {\n cmTable: ContentModelTable | undefined;\n anchorColumn: number | undefined;\n anchorRow: number | undefined;\n anchorRowHeight: number;\n allWidths: number[];\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent): DragAndDropInitValue {\n const { td, onStart } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n\n // Get cell coordinates\n const columnIndex = td.cellIndex;\n const row =\n td.parentElement && isElementOfType(td.parentElement, 'tr') ? td.parentElement : undefined;\n const rowIndex = row?.rowIndex;\n\n if (rowIndex == undefined) {\n return {\n cmTable: undefined,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n\n const { editor, table } = context;\n\n // Get current selection\n const selection = editor.getDOMSelection();\n\n // Select first cell of the table\n editor.setDOMSelection({\n type: 'table',\n firstColumn: 0,\n firstRow: 0,\n lastColumn: 0,\n lastRow: 0,\n table: table,\n });\n\n // Get the table content model\n const cmTable = getFirstSelectedTable(editor.getContentModelCopy('disconnected'))[0];\n\n // Restore selection\n editor.setDOMSelection(selection);\n\n if (rect && cmTable) {\n onStart();\n\n return {\n cmTable,\n anchorColumn: columnIndex,\n anchorRow: rowIndex,\n anchorRowHeight: cmTable.rows[rowIndex].height,\n allWidths: [...cmTable.widths],\n };\n } else {\n return {\n cmTable,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n}\n\nfunction onDraggingHorizontal(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { table } = context;\n const { cmTable, anchorRow, anchorRowHeight } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorRow != undefined) {\n // Modify the CM Table size\n cmTable.rows[anchorRow].height = (anchorRowHeight ?? 0) + deltaY;\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n const tableRow = table.rows[anchorRow];\n for (let col = 0; col < tableRow.cells.length; col++) {\n const td = tableRow.cells[col];\n td.style.height = cmTable.rows[anchorRow].height + 'px';\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDraggingVertical(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number\n) {\n const { table, isRTL } = context;\n const { cmTable, anchorColumn, allWidths } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorColumn != undefined) {\n // Modify the CM Table size\n const lastColumn = anchorColumn == cmTable.widths.length - 1;\n const change = deltaX * (isRTL ? -1 : 1);\n // This is the last column\n if (lastColumn) {\n // Only the last column changes\n cmTable.widths[anchorColumn] = allWidths[anchorColumn] + change;\n } else {\n // Any other two columns\n const anchorChange = allWidths[anchorColumn] + change;\n const nextAnchorChange = allWidths[anchorColumn + 1] - change;\n if (\n anchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH ||\n nextAnchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH\n ) {\n return false;\n }\n cmTable.widths[anchorColumn] = anchorChange;\n cmTable.widths[anchorColumn + 1] = nextAnchorChange;\n }\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n for (let col = 0; col < tableRow.cells.length; col++) {\n tableRow.cells[col].style.width = cmTable.widths[col] + 'px';\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction setHorizontalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'horizontalResizer';\n trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';\n trigger.style.left = rect.left + 'px';\n trigger.style.width = rect.right - rect.left + 'px';\n trigger.style.height = CELL_RESIZER_WIDTH + 'px';\n }\n}\n\nfunction setVerticalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td, isRTL } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'verticalResizer';\n trigger.style.top = rect.top + 'px';\n trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';\n trigger.style.width = CELL_RESIZER_WIDTH + 'px';\n trigger.style.height = rect.bottom - rect.top + 'px';\n }\n}\n"]}
1
+ {"version":3,"file":"CellResizer.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { DragAndDropHelper } from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport { isElementOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport {\n getFirstSelectedTable,\n MIN_ALLOWED_TABLE_CELL_WIDTH,\n normalizeTable,\n} from 'roosterjs-content-model-core';\nimport type { DragAndDropHandler } from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { ContentModelTable, IEditor } from 'roosterjs-content-model-types';\nimport type { TableEditFeature } from './TableEditFeature';\n\nconst CELL_RESIZER_WIDTH = 4;\n\n/**\n * @internal\n */\nexport function createCellResizer(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onStart: () => void,\n onEnd: () => false,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const document = td.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${isHorizontal ? 'row' : 'col'}-resize; user-select: none`,\n };\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = { editor, td, table, isRTL, zoomScale, onStart };\n const setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;\n setPosition(context, div);\n\n const handler: DragAndDropHandler<DragAndDropContext, DragAndDropInitValue> = {\n onDragStart,\n // Horizontal modifies row height, vertical modifies column width\n onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,\n onDragEnd: onEnd,\n };\n\n const featureHandler = new DragAndDropHelper<DragAndDropContext, DragAndDropInitValue>(\n div,\n context,\n setPosition,\n handler,\n zoomScale,\n editor.getEnvironment().isMobileOrTablet\n );\n\n return { node: td, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n editor: IEditor;\n td: HTMLTableCellElement;\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n}\n\ninterface DragAndDropInitValue {\n cmTable: ContentModelTable | undefined;\n anchorColumn: number | undefined;\n anchorRow: number | undefined;\n anchorRowHeight: number;\n allWidths: number[];\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent): DragAndDropInitValue {\n const { td, onStart } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n\n // Get cell coordinates\n const columnIndex = td.cellIndex;\n const row =\n td.parentElement && isElementOfType(td.parentElement, 'tr') ? td.parentElement : undefined;\n const rowIndex = row?.rowIndex;\n\n if (rowIndex == undefined) {\n return {\n cmTable: undefined,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n\n const { editor, table } = context;\n\n // Get current selection\n const selection = editor.getDOMSelection();\n\n // Select first cell of the table\n editor.setDOMSelection({\n type: 'table',\n firstColumn: 0,\n firstRow: 0,\n lastColumn: 0,\n lastRow: 0,\n table: table,\n });\n\n // Get the table content model\n const cmTable = getFirstSelectedTable(editor.getContentModelCopy('disconnected'))[0];\n\n // Restore selection\n editor.setDOMSelection(selection);\n\n if (rect && cmTable) {\n onStart();\n\n return {\n cmTable,\n anchorColumn: columnIndex,\n anchorRow: rowIndex,\n anchorRowHeight: cmTable.rows[rowIndex].height,\n allWidths: [...cmTable.widths],\n };\n } else {\n return {\n cmTable,\n anchorColumn: undefined,\n anchorRow: undefined,\n anchorRowHeight: -1,\n allWidths: [],\n }; // Just a fallback\n }\n}\n\nfunction onDraggingHorizontal(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { table } = context;\n const { cmTable, anchorRow, anchorRowHeight } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorRow != undefined) {\n // Modify the CM Table size\n cmTable.rows[anchorRow].height = (anchorRowHeight ?? 0) + deltaY;\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n const tableRow = table.rows[anchorRow];\n for (let col = 0; col < tableRow.cells.length; col++) {\n const td = tableRow.cells[col];\n td.style.height = cmTable.rows[anchorRow].height + 'px';\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDraggingVertical(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number\n) {\n const { table, isRTL } = context;\n const { cmTable, anchorColumn, allWidths } = initValue;\n\n // Assign new widths and heights to the CM table\n if (cmTable && anchorColumn != undefined) {\n // Modify the CM Table size\n const lastColumn = anchorColumn == cmTable.widths.length - 1;\n const change = deltaX * (isRTL ? -1 : 1);\n // This is the last column\n if (lastColumn) {\n // Only the last column changes\n cmTable.widths[anchorColumn] = allWidths[anchorColumn] + change;\n } else {\n // Any other two columns\n const anchorChange = allWidths[anchorColumn] + change;\n const nextAnchorChange = allWidths[anchorColumn + 1] - change;\n if (\n anchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH ||\n nextAnchorChange < MIN_ALLOWED_TABLE_CELL_WIDTH\n ) {\n return false;\n }\n cmTable.widths[anchorColumn] = anchorChange;\n cmTable.widths[anchorColumn + 1] = nextAnchorChange;\n }\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n for (let col = 0; col < tableRow.cells.length; col++) {\n tableRow.cells[col].style.width = cmTable.widths[col] + 'px';\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction setHorizontalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'horizontalResizer';\n trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';\n trigger.style.left = rect.left + 'px';\n trigger.style.width = rect.right - rect.left + 'px';\n trigger.style.height = CELL_RESIZER_WIDTH + 'px';\n }\n}\n\nfunction setVerticalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td, isRTL } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.id = 'verticalResizer';\n trigger.style.top = rect.top + 'px';\n trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';\n trigger.style.width = CELL_RESIZER_WIDTH + 'px';\n trigger.style.height = rect.bottom - rect.top + 'px';\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- import type Disposable from '../../../pluginUtils/Disposable';
1
+ import type { Disposable } from '../../../pluginUtils/Disposable';
2
2
  /**
3
3
  * @internal
4
4
  */
5
- export default interface TableEditFeature {
5
+ export interface TableEditFeature {
6
6
  node: Node;
7
7
  div: HTMLDivElement | null;
8
8
  featureHandler: Disposable | null;
@@ -16,4 +16,4 @@ define(["require", "exports"], function (require, exports) {
16
16
  }
17
17
  exports.disposeTableEditFeature = disposeTableEditFeature;
18
18
  });
19
- //# sourceMappingURL=TableEditorFeature.js.map
19
+ //# sourceMappingURL=TableEditFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableEditFeature.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts"],"names":[],"mappings":";;;;IAWA;;OAEG;IACH,SAAgB,uBAAuB,CAAC,OAAgC;;QACpE,IAAI,OAAO,EAAE;YACT,MAAA,MAAA,OAAO,CAAC,GAAG,0CAAE,UAAU,0CAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YACnB,MAAA,OAAO,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;SACjC;IACL,CAAC;IAPD,0DAOC","sourcesContent":["import type { Disposable } from '../../../pluginUtils/Disposable';\n\n/**\n * @internal\n */\nexport interface TableEditFeature {\n node: Node;\n div: HTMLDivElement | null;\n featureHandler: Disposable | null;\n}\n\n/**\n * @internal\n */\nexport function disposeTableEditFeature(resizer: TableEditFeature | null) {\n if (resizer) {\n resizer.div?.parentNode?.removeChild(resizer.div);\n resizer.div = null;\n resizer.featureHandler?.dispose();\n resizer.featureHandler = null;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type TableEditFeature from './TableEditorFeature';
1
+ import type { TableEditFeature } from './TableEditFeature';
2
2
  import type { IEditor } from 'roosterjs-content-model-types';
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export default function createTableInserter(editor: IEditor, td: HTMLTableCellElement, table: HTMLTableElement, isRTL: boolean, isHorizontal: boolean, onInsert: () => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, anchorContainer?: HTMLElement): TableEditFeature | null;
6
+ export declare function createTableInserter(editor: IEditor, td: HTMLTableCellElement, table: HTMLTableElement, isRTL: boolean, isHorizontal: boolean, onInsert: () => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, anchorContainer?: HTMLElement): TableEditFeature | null;
@@ -1,6 +1,7 @@
1
- define(["require", "exports", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/Rect/getIntersectedRect", "../../../pluginUtils/Rect/normalizeRect", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, createElement_1, getIntersectedRect_1, normalizeRect_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
1
+ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/Rect/getIntersectedRect", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, createElement_1, getIntersectedRect_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createTableInserter = void 0;
4
5
  var INSERTER_COLOR = '#4A4A4A';
5
6
  var INSERTER_COLOR_DARK_MODE = 'white';
6
7
  var INSERTER_SIDE_LENGTH = 12;
@@ -9,14 +10,14 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
9
10
  * @internal
10
11
  */
11
12
  function createTableInserter(editor, td, table, isRTL, isHorizontal, onInsert, getOnMouseOut, anchorContainer) {
12
- var tdRect = (0, normalizeRect_1.default)(td.getBoundingClientRect());
13
+ var tdRect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
13
14
  var viewPort = editor.getVisibleViewport();
14
- var tableRect = table && viewPort ? (0, getIntersectedRect_1.default)([table], [viewPort]) : null;
15
+ var tableRect = table && viewPort ? (0, getIntersectedRect_1.getIntersectedRect)([table], [viewPort]) : null;
15
16
  // set inserter position
16
17
  if (tdRect && tableRect) {
17
18
  var document_1 = td.ownerDocument;
18
19
  var createElementData = getInsertElementData(isHorizontal, editor.isDarkMode(), isRTL, editor.getDOMHelper().getDomStyle('backgroundColor') || 'white');
19
- var div = (0, createElement_1.default)(createElementData, document_1);
20
+ var div = (0, createElement_1.createElement)(createElementData, document_1);
20
21
  if (isHorizontal) {
21
22
  // tableRect.left/right is used because the Inserter is always intended to be on the side
22
23
  div.id = 'horizontalInserter';
@@ -39,7 +40,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
39
40
  }
40
41
  return null;
41
42
  }
42
- exports.default = createTableInserter;
43
+ exports.createTableInserter = createTableInserter;
43
44
  var TableInsertHandler = /** @class */ (function () {
44
45
  function TableInsertHandler(div, td, table, isHorizontal, editor, onInsert, getOnMouseOut) {
45
46
  var _this = this;
@@ -1 +1 @@
1
- {"version":3,"file":"TableInserter.js","sourceRoot":"","sources":["../../../../../../packages-content-model/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts"],"names":[],"mappings":"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","sourcesContent":["import createElement from '../../../pluginUtils/CreateElement/createElement';\nimport getIntersectedRect from '../../../pluginUtils/Rect/getIntersectedRect';\nimport normalizeRect from '../../../pluginUtils/Rect/normalizeRect';\nimport { isElementOfType } from 'roosterjs-content-model-dom';\nimport {\n formatTableWithContentModel,\n insertTableColumn,\n insertTableRow,\n} from 'roosterjs-content-model-api';\nimport type CreateElementData from '../../../pluginUtils/CreateElement/CreateElementData';\nimport type Disposable from '../../../pluginUtils/Disposable';\nimport type TableEditFeature from './TableEditorFeature';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\nconst INSERTER_COLOR = '#4A4A4A';\nconst INSERTER_COLOR_DARK_MODE = 'white';\nconst INSERTER_SIDE_LENGTH = 12;\nconst INSERTER_BORDER_SIZE = 1;\n\n/**\n * @internal\n */\nexport default function createTableInserter(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const tdRect = normalizeRect(td.getBoundingClientRect());\n const viewPort = editor.getVisibleViewport();\n const tableRect = table && viewPort ? getIntersectedRect([table], [viewPort]) : null;\n\n // set inserter position\n if (tdRect && tableRect) {\n const document = td.ownerDocument;\n const createElementData = getInsertElementData(\n isHorizontal,\n editor.isDarkMode(),\n isRTL,\n editor.getDOMHelper().getDomStyle('backgroundColor') || 'white'\n );\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n if (isHorizontal) {\n // tableRect.left/right is used because the Inserter is always intended to be on the side\n div.id = 'horizontalInserter';\n div.style.left = `${\n isRTL\n ? tableRect.right\n : tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n div.style.top = `${tdRect.bottom - 8}px`;\n (div.firstChild as HTMLElement).style.width = `${tableRect.right - tableRect.left}px`;\n } else {\n div.id = 'verticalInserter';\n div.style.left = `${isRTL ? tdRect.left - 8 : tdRect.right - 8}px`;\n // tableRect.top is used because the Inserter is always intended to be on top\n div.style.top = `${\n tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n (div.firstChild as HTMLElement).style.height = `${tableRect.bottom - tableRect.top}px`;\n }\n\n (anchorContainer || document.body).appendChild(div);\n\n const handler = new TableInsertHandler(\n div,\n td,\n table,\n isHorizontal,\n editor,\n onInsert,\n getOnMouseOut\n );\n\n return { div, featureHandler: handler, node: td };\n }\n\n return null;\n}\n\nclass TableInsertHandler implements Disposable {\n private onMouseOutEvent: null | ((ev: MouseEvent) => void);\n constructor(\n private div: HTMLDivElement,\n private td: HTMLTableCellElement,\n private table: HTMLTableElement,\n private isHorizontal: boolean,\n private editor: IEditor,\n private onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void\n ) {\n this.div.addEventListener('click', this.insertTd);\n this.onMouseOutEvent = getOnMouseOut(div);\n this.div.addEventListener('mouseout', this.onMouseOutEvent);\n }\n\n dispose() {\n this.div.removeEventListener('click', this.insertTd);\n\n if (this.onMouseOutEvent) {\n this.div.removeEventListener('mouseout', this.onMouseOutEvent);\n }\n\n this.onMouseOutEvent = null;\n }\n\n private insertTd = () => {\n // Get cell coordinates\n const columnIndex = this.td.cellIndex;\n const row =\n this.td.parentElement && isElementOfType(this.td.parentElement, 'tr')\n ? this.td.parentElement\n : undefined;\n const rowIndex = row && row.rowIndex;\n\n if (row?.cells == undefined || rowIndex == undefined) {\n return;\n }\n\n // Insert row or column\n formatTableWithContentModel(\n this.editor,\n 'editTablePlugin',\n tableModel => {\n this.isHorizontal\n ? insertTableRow(tableModel, 'insertBelow')\n : insertTableColumn(tableModel, 'insertRight');\n }, // Select cell to make insertion\n {\n type: 'table',\n firstColumn: columnIndex,\n firstRow: rowIndex,\n lastColumn: columnIndex,\n lastRow: rowIndex,\n table: this.table,\n }\n );\n\n this.onInsert();\n };\n}\n\nfunction getInsertElementData(\n isHorizontal: boolean,\n isDark: boolean,\n isRTL: boolean,\n backgroundColor: string\n): CreateElementData {\n const inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;\n const outerDivStyle = `position: fixed; width: ${INSERTER_SIDE_LENGTH}px; height: ${INSERTER_SIDE_LENGTH}px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid ${INSERTER_BORDER_SIZE}px ${inserterColor}; border-radius: 50%; background-color: ${backgroundColor}`;\n const leftOrRight = isRTL ? 'right' : 'left';\n const childBaseStyles = `position: absolute; box-sizing: border-box; background-color: ${backgroundColor};`;\n const childInfo: CreateElementData = {\n tag: 'div',\n style:\n childBaseStyles +\n (isHorizontal\n ? `${leftOrRight}: 12px; top: 5px; height: 3px; border-top: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-left: 0px;`\n : `left: 5px; top: 12px; width: 3px; border-left: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-top: 0px;`),\n };\n\n return {\n tag: 'div',\n style: outerDivStyle,\n children: [childInfo, '+'],\n };\n}\n"]}
1
+ {"version":3,"file":"TableInserter.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { getIntersectedRect } from '../../../pluginUtils/Rect/getIntersectedRect';\nimport { isElementOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport {\n formatTableWithContentModel,\n insertTableColumn,\n insertTableRow,\n} from 'roosterjs-content-model-api';\nimport type { CreateElementData } from '../../../pluginUtils/CreateElement/CreateElementData';\nimport type { Disposable } from '../../../pluginUtils/Disposable';\nimport type { TableEditFeature } from './TableEditFeature';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\nconst INSERTER_COLOR = '#4A4A4A';\nconst INSERTER_COLOR_DARK_MODE = 'white';\nconst INSERTER_SIDE_LENGTH = 12;\nconst INSERTER_BORDER_SIZE = 1;\n\n/**\n * @internal\n */\nexport function createTableInserter(\n editor: IEditor,\n td: HTMLTableCellElement,\n table: HTMLTableElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const tdRect = normalizeRect(td.getBoundingClientRect());\n const viewPort = editor.getVisibleViewport();\n const tableRect = table && viewPort ? getIntersectedRect([table], [viewPort]) : null;\n\n // set inserter position\n if (tdRect && tableRect) {\n const document = td.ownerDocument;\n const createElementData = getInsertElementData(\n isHorizontal,\n editor.isDarkMode(),\n isRTL,\n editor.getDOMHelper().getDomStyle('backgroundColor') || 'white'\n );\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n if (isHorizontal) {\n // tableRect.left/right is used because the Inserter is always intended to be on the side\n div.id = 'horizontalInserter';\n div.style.left = `${\n isRTL\n ? tableRect.right\n : tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n div.style.top = `${tdRect.bottom - 8}px`;\n (div.firstChild as HTMLElement).style.width = `${tableRect.right - tableRect.left}px`;\n } else {\n div.id = 'verticalInserter';\n div.style.left = `${isRTL ? tdRect.left - 8 : tdRect.right - 8}px`;\n // tableRect.top is used because the Inserter is always intended to be on top\n div.style.top = `${\n tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n (div.firstChild as HTMLElement).style.height = `${tableRect.bottom - tableRect.top}px`;\n }\n\n (anchorContainer || document.body).appendChild(div);\n\n const handler = new TableInsertHandler(\n div,\n td,\n table,\n isHorizontal,\n editor,\n onInsert,\n getOnMouseOut\n );\n\n return { div, featureHandler: handler, node: td };\n }\n\n return null;\n}\n\nclass TableInsertHandler implements Disposable {\n private onMouseOutEvent: null | ((ev: MouseEvent) => void);\n constructor(\n private div: HTMLDivElement,\n private td: HTMLTableCellElement,\n private table: HTMLTableElement,\n private isHorizontal: boolean,\n private editor: IEditor,\n private onInsert: () => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void\n ) {\n this.div.addEventListener('click', this.insertTd);\n this.onMouseOutEvent = getOnMouseOut(div);\n this.div.addEventListener('mouseout', this.onMouseOutEvent);\n }\n\n dispose() {\n this.div.removeEventListener('click', this.insertTd);\n\n if (this.onMouseOutEvent) {\n this.div.removeEventListener('mouseout', this.onMouseOutEvent);\n }\n\n this.onMouseOutEvent = null;\n }\n\n private insertTd = () => {\n // Get cell coordinates\n const columnIndex = this.td.cellIndex;\n const row =\n this.td.parentElement && isElementOfType(this.td.parentElement, 'tr')\n ? this.td.parentElement\n : undefined;\n const rowIndex = row && row.rowIndex;\n\n if (row?.cells == undefined || rowIndex == undefined) {\n return;\n }\n\n // Insert row or column\n formatTableWithContentModel(\n this.editor,\n 'editTablePlugin',\n tableModel => {\n this.isHorizontal\n ? insertTableRow(tableModel, 'insertBelow')\n : insertTableColumn(tableModel, 'insertRight');\n }, // Select cell to make insertion\n {\n type: 'table',\n firstColumn: columnIndex,\n firstRow: rowIndex,\n lastColumn: columnIndex,\n lastRow: rowIndex,\n table: this.table,\n }\n );\n\n this.onInsert();\n };\n}\n\nfunction getInsertElementData(\n isHorizontal: boolean,\n isDark: boolean,\n isRTL: boolean,\n backgroundColor: string\n): CreateElementData {\n const inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;\n const outerDivStyle = `position: fixed; width: ${INSERTER_SIDE_LENGTH}px; height: ${INSERTER_SIDE_LENGTH}px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid ${INSERTER_BORDER_SIZE}px ${inserterColor}; border-radius: 50%; background-color: ${backgroundColor}`;\n const leftOrRight = isRTL ? 'right' : 'left';\n const childBaseStyles = `position: absolute; box-sizing: border-box; background-color: ${backgroundColor};`;\n const childInfo: CreateElementData = {\n tag: 'div',\n style:\n childBaseStyles +\n (isHorizontal\n ? `${leftOrRight}: 12px; top: 5px; height: 3px; border-top: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-left: 0px;`\n : `left: 5px; top: 12px; width: 3px; border-left: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-top: 0px;`),\n };\n\n return {\n tag: 'div',\n style: outerDivStyle,\n children: [childInfo, '+'],\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import type { IEditor } from 'roosterjs-content-model-types';
2
- import type TableEditorFeature from './TableEditorFeature';
2
+ import type { TableEditFeature } from './TableEditFeature';
3
3
  /**
4
4
  * @internal
5
5
  * Contains the function to select whole table
6
6
  * Moving behavior not implemented yet
7
7
  */
8
- export default function createTableMover(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onFinishDragging: (table: HTMLTableElement) => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditorFeature | null;
8
+ export declare function createTableMover(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onFinishDragging: (table: HTMLTableElement) => void, getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditFeature | null;
@@ -1,6 +1,7 @@
1
- define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "../../../pluginUtils/Rect/normalizeRect", "roosterjs-content-model-dom"], function (require, exports, tslib_1, createElement_1, DragAndDropHelper_1, normalizeRect_1, roosterjs_content_model_dom_1) {
1
+ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "roosterjs-content-model-dom"], function (require, exports, tslib_1, createElement_1, DragAndDropHelper_1, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createTableMover = void 0;
4
5
  var TABLE_MOVER_LENGTH = 12;
5
6
  var TABLE_MOVER_ID = '_Table_Mover';
6
7
  /**
@@ -9,7 +10,7 @@ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/creat
9
10
  * Moving behavior not implemented yet
10
11
  */
11
12
  function createTableMover(table, editor, isRTL, onFinishDragging, getOnMouseOut, contentDiv, anchorContainer) {
12
- var rect = (0, normalizeRect_1.default)(table.getBoundingClientRect());
13
+ var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(table.getBoundingClientRect());
13
14
  if (!isTableTopVisible(editor, rect, contentDiv)) {
14
15
  return null;
15
16
  }
@@ -19,7 +20,7 @@ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/creat
19
20
  tag: 'div',
20
21
  style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',
21
22
  };
22
- var div = (0, createElement_1.default)(createElementData, document);
23
+ var div = (0, createElement_1.createElement)(createElementData, document);
23
24
  div.id = TABLE_MOVER_ID;
24
25
  div.style.width = TABLE_MOVER_LENGTH + "px";
25
26
  div.style.height = TABLE_MOVER_LENGTH + "px";
@@ -42,7 +43,7 @@ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/creat
42
43
  }, context.zoomScale, getOnMouseOut);
43
44
  return { div: div, featureHandler: featureHandler, node: table };
44
45
  }
45
- exports.default = createTableMover;
46
+ exports.createTableMover = createTableMover;
46
47
  var TableMoverFeature = /** @class */ (function (_super) {
47
48
  (0, tslib_1.__extends)(TableMoverFeature, _super);
48
49
  function TableMoverFeature(div, context, onSubmit, handler, zoomScale, getOnMouseOut, forceMobile, container) {
@@ -60,7 +61,7 @@ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/creat
60
61
  this.onMouseOut = null;
61
62
  };
62
63
  return TableMoverFeature;
63
- }(DragAndDropHelper_1.default));
64
+ }(DragAndDropHelper_1.DragAndDropHelper));
64
65
  function setDivPosition(context, trigger) {
65
66
  var rect = context.rect;
66
67
  if (rect) {
@@ -71,7 +72,7 @@ define(["require", "exports", "tslib", "../../../pluginUtils/CreateElement/creat
71
72
  function isTableTopVisible(editor, rect, contentDiv) {
72
73
  var visibleViewport = editor.getVisibleViewport();
73
74
  if ((0, roosterjs_content_model_dom_1.isNodeOfType)(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {
74
- var containerRect = (0, normalizeRect_1.default)(contentDiv.getBoundingClientRect());
75
+ var containerRect = (0, roosterjs_content_model_dom_1.normalizeRect)(contentDiv.getBoundingClientRect());
75
76
  return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;
76
77
  }
77
78
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"TableMover.js","sourceRoot":"","sources":["../../../../../../packages-content-model/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts"],"names":[],"mappings":"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","sourcesContent":["import createElement from '../../../pluginUtils/CreateElement/createElement';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport normalizeRect from '../../../pluginUtils/Rect/normalizeRect';\nimport { isNodeOfType } from 'roosterjs-content-model-dom';\nimport type DragAndDropHandler from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { IEditor, Rect } from 'roosterjs-content-model-types';\nimport type TableEditorFeature from './TableEditorFeature';\n\nconst TABLE_MOVER_LENGTH = 12;\nconst TABLE_MOVER_ID = '_Table_Mover';\n\n/**\n * @internal\n * Contains the function to select whole table\n * Moving behavior not implemented yet\n */\nexport default function createTableMover(\n table: HTMLTableElement,\n editor: IEditor,\n isRTL: boolean,\n onFinishDragging: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditorFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableTopVisible(editor, rect, contentDiv as Node)) {\n return null;\n }\n\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n const document = table.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n };\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_MOVER_ID;\n div.style.width = `${TABLE_MOVER_LENGTH}px`;\n div.style.height = `${TABLE_MOVER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: TableMoverContext = {\n table,\n zoomScale,\n rect,\n isRTL,\n };\n\n setDivPosition(context, div);\n\n const onDragEnd = (context: TableMoverContext, event: MouseEvent): false => {\n if (event.target == div) {\n onFinishDragging(context.table);\n }\n return false;\n };\n\n const featureHandler = new TableMoverFeature(\n div,\n context,\n setDivPosition,\n {\n onDragEnd,\n },\n context.zoomScale,\n getOnMouseOut\n );\n\n return { div, featureHandler, node: table };\n}\n\ninterface TableMoverContext {\n table: HTMLTableElement;\n zoomScale: number;\n rect: Rect | null;\n isRTL: boolean;\n}\n\ninterface TableMoverInitValue {\n event: MouseEvent;\n}\n\nclass TableMoverFeature extends DragAndDropHelper<TableMoverContext, TableMoverInitValue> {\n private onMouseOut: ((ev: MouseEvent) => void) | null;\n\n constructor(\n private div: HTMLElement,\n context: TableMoverContext,\n onSubmit: (\n context: TableMoverContext,\n trigger: HTMLElement,\n container?: HTMLElement\n ) => void,\n handler: DragAndDropHandler<TableMoverContext, TableMoverInitValue>,\n zoomScale: number,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n forceMobile?: boolean | undefined,\n container?: HTMLElement\n ) {\n super(div, context, onSubmit, handler, zoomScale, forceMobile);\n this.onMouseOut = getOnMouseOut(div);\n div.addEventListener('mouseout', this.onMouseOut);\n }\n\n dispose(): void {\n super.dispose();\n if (this.onMouseOut) {\n this.div.removeEventListener('mouseout', this.onMouseOut);\n }\n this.onMouseOut = null;\n }\n}\n\nfunction setDivPosition(context: TableMoverContext, trigger: HTMLElement) {\n const { rect } = context;\n if (rect) {\n trigger.style.top = `${rect.top - TABLE_MOVER_LENGTH}px`;\n trigger.style.left = `${rect.left - TABLE_MOVER_LENGTH - 2}px`;\n }\n}\n\nfunction isTableTopVisible(editor: IEditor, rect: Rect | null, contentDiv?: Node | null): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (isNodeOfType(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;\n }\n\n return true;\n}\n"]}
1
+ {"version":3,"file":"TableMover.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { DragAndDropHelper } from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport type { DragAndDropHandler } from '../../../pluginUtils/DragAndDrop/DragAndDropHandler';\nimport type { IEditor, Rect } from 'roosterjs-content-model-types';\nimport type { TableEditFeature } from './TableEditFeature';\n\nconst TABLE_MOVER_LENGTH = 12;\nconst TABLE_MOVER_ID = '_Table_Mover';\n\n/**\n * @internal\n * Contains the function to select whole table\n * Moving behavior not implemented yet\n */\nexport function createTableMover(\n table: HTMLTableElement,\n editor: IEditor,\n isRTL: boolean,\n onFinishDragging: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableTopVisible(editor, rect, contentDiv as Node)) {\n return null;\n }\n\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n const document = table.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n };\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_MOVER_ID;\n div.style.width = `${TABLE_MOVER_LENGTH}px`;\n div.style.height = `${TABLE_MOVER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: TableMoverContext = {\n table,\n zoomScale,\n rect,\n isRTL,\n };\n\n setDivPosition(context, div);\n\n const onDragEnd = (context: TableMoverContext, event: MouseEvent): false => {\n if (event.target == div) {\n onFinishDragging(context.table);\n }\n return false;\n };\n\n const featureHandler = new TableMoverFeature(\n div,\n context,\n setDivPosition,\n {\n onDragEnd,\n },\n context.zoomScale,\n getOnMouseOut\n );\n\n return { div, featureHandler, node: table };\n}\n\ninterface TableMoverContext {\n table: HTMLTableElement;\n zoomScale: number;\n rect: Rect | null;\n isRTL: boolean;\n}\n\ninterface TableMoverInitValue {\n event: MouseEvent;\n}\n\nclass TableMoverFeature extends DragAndDropHelper<TableMoverContext, TableMoverInitValue> {\n private onMouseOut: ((ev: MouseEvent) => void) | null;\n\n constructor(\n private div: HTMLElement,\n context: TableMoverContext,\n onSubmit: (\n context: TableMoverContext,\n trigger: HTMLElement,\n container?: HTMLElement\n ) => void,\n handler: DragAndDropHandler<TableMoverContext, TableMoverInitValue>,\n zoomScale: number,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n forceMobile?: boolean | undefined,\n container?: HTMLElement\n ) {\n super(div, context, onSubmit, handler, zoomScale, forceMobile);\n this.onMouseOut = getOnMouseOut(div);\n div.addEventListener('mouseout', this.onMouseOut);\n }\n\n dispose(): void {\n super.dispose();\n if (this.onMouseOut) {\n this.div.removeEventListener('mouseout', this.onMouseOut);\n }\n this.onMouseOut = null;\n }\n}\n\nfunction setDivPosition(context: TableMoverContext, trigger: HTMLElement) {\n const { rect } = context;\n if (rect) {\n trigger.style.top = `${rect.top - TABLE_MOVER_LENGTH}px`;\n trigger.style.left = `${rect.left - TABLE_MOVER_LENGTH - 2}px`;\n }\n}\n\nfunction isTableTopVisible(editor: IEditor, rect: Rect | null, contentDiv?: Node | null): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (isNodeOfType(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;\n }\n\n return true;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { IEditor } from 'roosterjs-content-model-types';
2
- import type TableEditFeature from './TableEditorFeature';
2
+ import type { TableEditFeature } from './TableEditFeature';
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export default function createTableResizer(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onStart: () => void, onEnd: () => false, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditFeature | null;
6
+ export declare function createTableResizer(table: HTMLTableElement, editor: IEditor, isRTL: boolean, onStart: () => void, onEnd: () => false, contentDiv?: EventTarget | null, anchorContainer?: HTMLElement): TableEditFeature | null;
@@ -1,13 +1,14 @@
1
- define(["require", "exports", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "../../../pluginUtils/Rect/normalizeRect", "roosterjs-content-model-core", "roosterjs-content-model-dom"], function (require, exports, createElement_1, DragAndDropHelper_1, normalizeRect_1, roosterjs_content_model_core_1, roosterjs_content_model_dom_1) {
1
+ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement", "../../../pluginUtils/DragAndDrop/DragAndDropHelper", "roosterjs-content-model-core", "roosterjs-content-model-dom"], function (require, exports, createElement_1, DragAndDropHelper_1, roosterjs_content_model_core_1, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createTableResizer = void 0;
4
5
  var TABLE_RESIZER_LENGTH = 12;
5
6
  var TABLE_RESIZER_ID = '_Table_Resizer';
6
7
  /**
7
8
  * @internal
8
9
  */
9
10
  function createTableResizer(table, editor, isRTL, onStart, onEnd, contentDiv, anchorContainer) {
10
- var rect = (0, normalizeRect_1.default)(table.getBoundingClientRect());
11
+ var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(table.getBoundingClientRect());
11
12
  if (!isTableBottomVisible(editor, rect, contentDiv)) {
12
13
  return null;
13
14
  }
@@ -17,7 +18,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
17
18
  tag: 'div',
18
19
  style: "position: fixed; cursor: " + (isRTL ? 'ne' : 'nw') + "-resize; user-select: none; border: 1px solid #808080",
19
20
  };
20
- var div = (0, createElement_1.default)(createElementData, document);
21
+ var div = (0, createElement_1.createElement)(createElementData, document);
21
22
  div.id = TABLE_RESIZER_ID;
22
23
  div.style.width = TABLE_RESIZER_LENGTH + "px";
23
24
  div.style.height = TABLE_RESIZER_LENGTH + "px";
@@ -33,7 +34,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
33
34
  contentDiv: contentDiv,
34
35
  };
35
36
  setDivPosition(context, div);
36
- var featureHandler = new DragAndDropHelper_1.default(div, context, hideResizer, // Resizer is hidden while dragging only
37
+ var featureHandler = new DragAndDropHelper_1.DragAndDropHelper(div, context, hideResizer, // Resizer is hidden while dragging only
37
38
  {
38
39
  onDragStart: onDragStart,
39
40
  onDragging: onDragging,
@@ -41,7 +42,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
41
42
  }, zoomScale, editor.getEnvironment().isMobileOrTablet);
42
43
  return { node: table, div: div, featureHandler: featureHandler };
43
44
  }
44
- exports.default = createTableResizer;
45
+ exports.createTableResizer = createTableResizer;
45
46
  function onDragStart(context, event) {
46
47
  context.onStart();
47
48
  var editor = context.editor, table = context.table;
@@ -126,7 +127,10 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
126
127
  }
127
128
  }
128
129
  function onDragEnd(context, event, initValue) {
129
- if (isTableBottomVisible(context.editor, (0, normalizeRect_1.default)(context.table.getBoundingClientRect()), context.contentDiv)) {
130
+ if (context.editor.isDisposed()) {
131
+ return false;
132
+ }
133
+ if (isTableBottomVisible(context.editor, (0, roosterjs_content_model_dom_1.normalizeRect)(context.table.getBoundingClientRect()), context.contentDiv)) {
130
134
  context.div.style.visibility = 'visible';
131
135
  setDivPosition(context, context.div);
132
136
  }
@@ -135,7 +139,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
135
139
  }
136
140
  function setDivPosition(context, trigger) {
137
141
  var table = context.table, isRTL = context.isRTL;
138
- var rect = (0, normalizeRect_1.default)(table.getBoundingClientRect());
142
+ var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(table.getBoundingClientRect());
139
143
  if (rect) {
140
144
  trigger.style.top = rect.bottom + "px";
141
145
  trigger.style.left = isRTL
@@ -149,7 +153,7 @@ define(["require", "exports", "../../../pluginUtils/CreateElement/createElement"
149
153
  function isTableBottomVisible(editor, rect, contentDiv) {
150
154
  var visibleViewport = editor.getVisibleViewport();
151
155
  if ((0, roosterjs_content_model_dom_1.isNodeOfType)(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {
152
- var containerRect = (0, normalizeRect_1.default)(contentDiv.getBoundingClientRect());
156
+ var containerRect = (0, roosterjs_content_model_dom_1.normalizeRect)(contentDiv.getBoundingClientRect());
153
157
  return (!!containerRect &&
154
158
  containerRect.bottom >= rect.bottom &&
155
159
  visibleViewport.bottom >= rect.bottom);
@@ -1 +1 @@
1
- {"version":3,"file":"TableResizer.js","sourceRoot":"","sources":["../../../../../../packages-content-model/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import createElement from '../../../pluginUtils/CreateElement/createElement';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport normalizeRect from '../../../pluginUtils/Rect/normalizeRect';\nimport { getFirstSelectedTable, normalizeTable } from 'roosterjs-content-model-core';\nimport { isNodeOfType } from 'roosterjs-content-model-dom';\nimport type { ContentModelTable, IEditor, Rect } from 'roosterjs-content-model-types';\nimport type TableEditFeature from './TableEditorFeature';\n\nconst TABLE_RESIZER_LENGTH = 12;\nconst TABLE_RESIZER_ID = '_Table_Resizer';\n\n/**\n * @internal\n */\nexport default function createTableResizer(\n table: HTMLTableElement,\n editor: IEditor,\n isRTL: boolean,\n onStart: () => void,\n onEnd: () => false,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableBottomVisible(editor, rect, contentDiv as Node)) {\n return null;\n }\n\n const document = table.ownerDocument;\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${\n isRTL ? 'ne' : 'nw'\n }-resize; user-select: none; border: 1px solid #808080`,\n };\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_RESIZER_ID;\n div.style.width = `${TABLE_RESIZER_LENGTH}px`;\n div.style.height = `${TABLE_RESIZER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = {\n isRTL,\n table,\n zoomScale,\n onStart,\n onEnd,\n div,\n editor,\n contentDiv,\n };\n\n setDivPosition(context, div);\n\n const featureHandler = new DragAndDropHelper<DragAndDropContext, DragAndDropInitValue>(\n div,\n context,\n hideResizer, // Resizer is hidden while dragging only\n {\n onDragStart,\n onDragging,\n onDragEnd,\n },\n zoomScale,\n editor.getEnvironment().isMobileOrTablet\n );\n\n return { node: table, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n onEnd: () => false;\n div: HTMLDivElement;\n editor: IEditor;\n contentDiv?: EventTarget | null;\n}\n\ninterface DragAndDropInitValue {\n originalRect: DOMRect;\n originalHeights: number[];\n originalWidths: number[];\n cmTable: ContentModelTable | undefined;\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent) {\n context.onStart();\n\n const { editor, table } = context;\n\n // Get current selection\n const selection = editor.getDOMSelection();\n\n // Select first cell of the table\n editor.setDOMSelection({\n type: 'table',\n firstColumn: 0,\n firstRow: 0,\n lastColumn: 0,\n lastRow: 0,\n table: table,\n });\n\n // Get the table content model\n const cmTable = getFirstSelectedTable(editor.getContentModelCopy('disconnected'))[0];\n\n // Restore selection\n editor.setDOMSelection(selection);\n\n // Save original widths and heights\n const heights: number[] = [];\n cmTable?.rows.forEach(row => {\n heights.push(row.height);\n });\n const widths: number[] = [];\n cmTable?.widths.forEach(width => {\n widths.push(width);\n });\n\n return {\n originalRect: table.getBoundingClientRect(),\n cmTable,\n originalHeights: heights ?? [],\n originalWidths: widths ?? [],\n };\n}\n\nfunction onDragging(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { isRTL, zoomScale, table } = context;\n const { originalRect, originalHeights, originalWidths, cmTable } = initValue;\n\n const ratioX = 1.0 + (deltaX / originalRect.width) * zoomScale * (isRTL ? -1 : 1);\n const ratioY = 1.0 + (deltaY / originalRect.height) * zoomScale;\n const shouldResizeX = Math.abs(ratioX - 1.0) > 1e-3;\n const shouldResizeY = Math.abs(ratioY - 1.0) > 1e-3;\n\n // If the width of some external table is fixed, we need to make it resizable\n table.style.setProperty('width', null);\n // If the height of some external table is fixed, we need to make it resizable\n table.style.setProperty('height', null);\n\n // Assign new widths and heights to the CM table\n if (cmTable && cmTable.rows && (shouldResizeX || shouldResizeY)) {\n // Modify the CM Table size\n for (let i = 0; i < cmTable.rows.length; i++) {\n for (let j = 0; j < cmTable.rows[i].cells.length; j++) {\n const cell = cmTable.rows[i].cells[j];\n if (cell) {\n if (shouldResizeX && i == 0) {\n cmTable.widths[j] = (originalWidths[j] ?? 0) * ratioX;\n }\n if (shouldResizeY && j == 0) {\n cmTable.rows[i].height = (originalHeights[i] ?? 0) * ratioY;\n }\n }\n }\n }\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n\n if (tableRow.cells.length == 0) {\n // Skip empty row\n continue;\n }\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n const td = tableRow.cells[col];\n td.style.width = cmTable.widths[col] + 'px';\n td.style.height = cmTable.rows[row].height + 'px';\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDragEnd(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue | undefined\n) {\n if (\n isTableBottomVisible(\n context.editor,\n normalizeRect(context.table.getBoundingClientRect()),\n context.contentDiv as Node\n )\n ) {\n context.div.style.visibility = 'visible';\n setDivPosition(context, context.div);\n }\n context.onEnd();\n return false;\n}\n\nfunction setDivPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { table, isRTL } = context;\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (rect) {\n trigger.style.top = `${rect.bottom}px`;\n trigger.style.left = isRTL\n ? `${rect.left - TABLE_RESIZER_LENGTH - 2}px`\n : `${rect.right}px`;\n }\n}\n\nfunction hideResizer(context: DragAndDropContext, trigger: HTMLElement) {\n trigger.style.visibility = 'hidden';\n}\n\nfunction isTableBottomVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: Node | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (isNodeOfType(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return (\n !!containerRect &&\n containerRect.bottom >= rect.bottom &&\n visibleViewport.bottom >= rect.bottom\n );\n }\n\n return true;\n}\n"]}
1
+ {"version":3,"file":"TableResizer.js","sourceRoot":"","sources":["../../../../../../packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement } from '../../../pluginUtils/CreateElement/createElement';\nimport { DragAndDropHelper } from '../../../pluginUtils/DragAndDrop/DragAndDropHelper';\nimport { getFirstSelectedTable, normalizeTable } from 'roosterjs-content-model-core';\nimport { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport type { ContentModelTable, IEditor, Rect } from 'roosterjs-content-model-types';\nimport type { TableEditFeature } from './TableEditFeature';\n\nconst TABLE_RESIZER_LENGTH = 12;\nconst TABLE_RESIZER_ID = '_Table_Resizer';\n\n/**\n * @internal\n */\nexport function createTableResizer(\n table: HTMLTableElement,\n editor: IEditor,\n isRTL: boolean,\n onStart: () => void,\n onEnd: () => false,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableBottomVisible(editor, rect, contentDiv as Node)) {\n return null;\n }\n\n const document = table.ownerDocument;\n const zoomScale = editor.getDOMHelper().calculateZoomScale();\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${\n isRTL ? 'ne' : 'nw'\n }-resize; user-select: none; border: 1px solid #808080`,\n };\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_RESIZER_ID;\n div.style.width = `${TABLE_RESIZER_LENGTH}px`;\n div.style.height = `${TABLE_RESIZER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = {\n isRTL,\n table,\n zoomScale,\n onStart,\n onEnd,\n div,\n editor,\n contentDiv,\n };\n\n setDivPosition(context, div);\n\n const featureHandler = new DragAndDropHelper<DragAndDropContext, DragAndDropInitValue>(\n div,\n context,\n hideResizer, // Resizer is hidden while dragging only\n {\n onDragStart,\n onDragging,\n onDragEnd,\n },\n zoomScale,\n editor.getEnvironment().isMobileOrTablet\n );\n\n return { node: table, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n onEnd: () => false;\n div: HTMLDivElement;\n editor: IEditor;\n contentDiv?: EventTarget | null;\n}\n\ninterface DragAndDropInitValue {\n originalRect: DOMRect;\n originalHeights: number[];\n originalWidths: number[];\n cmTable: ContentModelTable | undefined;\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent) {\n context.onStart();\n\n const { editor, table } = context;\n\n // Get current selection\n const selection = editor.getDOMSelection();\n\n // Select first cell of the table\n editor.setDOMSelection({\n type: 'table',\n firstColumn: 0,\n firstRow: 0,\n lastColumn: 0,\n lastRow: 0,\n table: table,\n });\n\n // Get the table content model\n const cmTable = getFirstSelectedTable(editor.getContentModelCopy('disconnected'))[0];\n\n // Restore selection\n editor.setDOMSelection(selection);\n\n // Save original widths and heights\n const heights: number[] = [];\n cmTable?.rows.forEach(row => {\n heights.push(row.height);\n });\n const widths: number[] = [];\n cmTable?.widths.forEach(width => {\n widths.push(width);\n });\n\n return {\n originalRect: table.getBoundingClientRect(),\n cmTable,\n originalHeights: heights ?? [],\n originalWidths: widths ?? [],\n };\n}\n\nfunction onDragging(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { isRTL, zoomScale, table } = context;\n const { originalRect, originalHeights, originalWidths, cmTable } = initValue;\n\n const ratioX = 1.0 + (deltaX / originalRect.width) * zoomScale * (isRTL ? -1 : 1);\n const ratioY = 1.0 + (deltaY / originalRect.height) * zoomScale;\n const shouldResizeX = Math.abs(ratioX - 1.0) > 1e-3;\n const shouldResizeY = Math.abs(ratioY - 1.0) > 1e-3;\n\n // If the width of some external table is fixed, we need to make it resizable\n table.style.setProperty('width', null);\n // If the height of some external table is fixed, we need to make it resizable\n table.style.setProperty('height', null);\n\n // Assign new widths and heights to the CM table\n if (cmTable && cmTable.rows && (shouldResizeX || shouldResizeY)) {\n // Modify the CM Table size\n for (let i = 0; i < cmTable.rows.length; i++) {\n for (let j = 0; j < cmTable.rows[i].cells.length; j++) {\n const cell = cmTable.rows[i].cells[j];\n if (cell) {\n if (shouldResizeX && i == 0) {\n cmTable.widths[j] = (originalWidths[j] ?? 0) * ratioX;\n }\n if (shouldResizeY && j == 0) {\n cmTable.rows[i].height = (originalHeights[i] ?? 0) * ratioY;\n }\n }\n }\n }\n\n // Normalize the table\n normalizeTable(cmTable);\n\n // Writeback CM Table size changes to DOM Table\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n\n if (tableRow.cells.length == 0) {\n // Skip empty row\n continue;\n }\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n const td = tableRow.cells[col];\n td.style.width = cmTable.widths[col] + 'px';\n td.style.height = cmTable.rows[row].height + 'px';\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDragEnd(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue | undefined\n) {\n if (context.editor.isDisposed()) {\n return false;\n }\n if (\n isTableBottomVisible(\n context.editor,\n normalizeRect(context.table.getBoundingClientRect()),\n context.contentDiv as Node\n )\n ) {\n context.div.style.visibility = 'visible';\n setDivPosition(context, context.div);\n }\n context.onEnd();\n return false;\n}\n\nfunction setDivPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { table, isRTL } = context;\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (rect) {\n trigger.style.top = `${rect.bottom}px`;\n trigger.style.left = isRTL\n ? `${rect.left - TABLE_RESIZER_LENGTH - 2}px`\n : `${rect.right}px`;\n }\n}\n\nfunction hideResizer(context: DragAndDropContext, trigger: HTMLElement) {\n trigger.style.visibility = 'hidden';\n}\n\nfunction isTableBottomVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: Node | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (isNodeOfType(contentDiv, 'ELEMENT_NODE') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return (\n !!containerRect &&\n containerRect.bottom >= rect.bottom &&\n visibleViewport.bottom >= rect.bottom\n );\n }\n\n return true;\n}\n"]}
@@ -11,6 +11,14 @@ export declare type AutoFormatOptions = {
11
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
12
  */
13
13
  autoNumbering: boolean;
14
+ /**
15
+ * When press backspace before a link, remove the hyperlink
16
+ */
17
+ autoUnlink: boolean;
18
+ /**
19
+ * When paste content, create hyperlink for the pasted link
20
+ */
21
+ autoLink: boolean;
14
22
  };
15
23
  /**
16
24
  * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
@@ -50,4 +58,5 @@ export declare class AutoFormatPlugin implements EditorPlugin {
50
58
  */
51
59
  onPluginEvent(event: PluginEvent): void;
52
60
  private handleKeyDownEvent;
61
+ private handleContentChangedEvent;
53
62
  }
@@ -1,10 +1,15 @@
1
- import { keyboardListTrigger } from './keyboardListTrigger';
1
+ import { createLink } from './link/createLink';
2
+ import { createLinkAfterSpace } from './link/createLinkAfterSpace';
3
+ import { keyboardListTrigger } from './list/keyboardListTrigger';
4
+ import { unlink } from './link/unlink';
2
5
  /**
3
6
  * @internal
4
7
  */
5
8
  var DefaultOptions = {
6
9
  autoBullet: true,
7
10
  autoNumbering: true,
11
+ autoUnlink: false,
12
+ autoLink: true,
8
13
  };
9
14
  /**
10
15
  * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.
@@ -56,22 +61,37 @@ var AutoFormatPlugin = /** @class */ (function () {
56
61
  case 'keyDown':
57
62
  this.handleKeyDownEvent(this.editor, event);
58
63
  break;
64
+ case 'contentChanged':
65
+ this.handleContentChangedEvent(this.editor, event);
66
+ break;
59
67
  }
60
68
  }
61
69
  };
62
70
  AutoFormatPlugin.prototype.handleKeyDownEvent = function (editor, event) {
63
71
  var rawEvent = event.rawEvent;
64
72
  if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {
73
+ var _a = this.options, autoBullet = _a.autoBullet, autoNumbering = _a.autoNumbering, autoUnlink = _a.autoUnlink, autoLink = _a.autoLink;
65
74
  switch (rawEvent.key) {
66
75
  case ' ':
67
- var _a = this.options, autoBullet = _a.autoBullet, autoNumbering = _a.autoNumbering;
68
- if (autoBullet || autoNumbering) {
69
- keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);
76
+ keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);
77
+ if (autoLink) {
78
+ createLinkAfterSpace(editor);
79
+ }
80
+ break;
81
+ case 'Backspace':
82
+ if (autoUnlink) {
83
+ unlink(editor, rawEvent);
70
84
  }
71
85
  break;
72
86
  }
73
87
  }
74
88
  };
89
+ AutoFormatPlugin.prototype.handleContentChangedEvent = function (editor, event) {
90
+ var autoLink = this.options.autoLink;
91
+ if (event.source == 'Paste' && autoLink) {
92
+ createLink(editor);
93
+ }
94
+ };
75
95
  return AutoFormatPlugin;
76
96
  }());
77
97
  export { AutoFormatPlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;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,GAAmB,IAAI,CAAC;IAO4B,CAAC;IAEnE;;OAEG;IACH,kCAAO,GAAP;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,qCAAU,GAAV,UAAW,MAAe;QACtB,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,MAAe,EAAE,KAAmB;QAC3D,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,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;qBACpE;oBACD,MAAM;aACb;SACJ;IACL,CAAC;IACL,uBAAC;AAAD,CAAC,AAjED,IAiEC","sourcesContent":["import { keyboardListTrigger } from './keyboardListTrigger';\nimport type {\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options to customize the Content Model Auto Format Plugin\n */\nexport type AutoFormatOptions = {\n /**\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\n */\n autoBullet: boolean;\n\n /**\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\n */\n autoNumbering: boolean;\n};\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<AutoFormatOptions> = {\n autoBullet: true,\n autoNumbering: true,\n};\n\n/**\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\n * It can be customized with options to enable or disable auto list features.\n */\nexport class AutoFormatPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.\n */\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'AutoFormat';\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 }\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 * 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) {\n switch (event.eventType) {\n case 'keyDown':\n this.handleKeyDownEvent(this.editor, event);\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IEditor, event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\n switch (rawEvent.key) {\n case ' ':\n const { autoBullet, autoNumbering } = this.options;\n if (autoBullet || autoNumbering) {\n keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);\n }\n break;\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAkCvC;;GAEG;AACH,IAAM,cAAc,GAAgC;IAChD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,IAAI;CACjB,CAAC;AAEF;;;GAGG;AACH;IAGI;;;;OAIG;IACH,0BAAoB,OAA2C;QAA3C,wBAAA,EAAA,wBAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;QAPvD,WAAM,GAAmB,IAAI,CAAC;IAO4B,CAAC;IAEnE;;OAEG;IACH,kCAAO,GAAP;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,qCAAU,GAAV,UAAW,MAAe;QACtB,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;gBACV,KAAK,gBAAgB;oBACjB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM;aACb;SACJ;IACL,CAAC;IAEO,6CAAkB,GAA1B,UAA2B,MAAe,EAAE,KAAmB;QAC3D,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACrD,IAAA,KAAsD,IAAI,CAAC,OAAO,EAAhE,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,UAAU,gBAAA,EAAE,QAAQ,cAAiB,CAAC;YACzE,QAAQ,QAAQ,CAAC,GAAG,EAAE;gBAClB,KAAK,GAAG;oBACJ,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;oBACjE,IAAI,QAAQ,EAAE;wBACV,oBAAoB,CAAC,MAAM,CAAC,CAAC;qBAChC;oBACD,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,UAAU,EAAE;wBACZ,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;qBAC5B;oBACD,MAAM;aACb;SACJ;IACL,CAAC;IAEO,oDAAyB,GAAjC,UAAkC,MAAe,EAAE,KAA0B;QACjE,IAAA,QAAQ,GAAK,IAAI,CAAC,OAAO,SAAjB,CAAkB;QAClC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE;YACrC,UAAU,CAAC,MAAM,CAAC,CAAC;SACtB;IACL,CAAC;IACL,uBAAC;AAAD,CAAC,AAjFD,IAiFC","sourcesContent":["import { createLink } from './link/createLink';\nimport { createLinkAfterSpace } from './link/createLinkAfterSpace';\nimport { keyboardListTrigger } from './list/keyboardListTrigger';\nimport { unlink } from './link/unlink';\nimport type {\n ContentChangedEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options to customize the Content Model Auto Format Plugin\n */\nexport type AutoFormatOptions = {\n /**\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\n */\n autoBullet: boolean;\n\n /**\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\n */\n autoNumbering: boolean;\n\n /**\n * When press backspace before a link, remove the hyperlink\n */\n autoUnlink: boolean;\n\n /**\n * When paste content, create hyperlink for the pasted link\n */\n autoLink: boolean;\n};\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<AutoFormatOptions> = {\n autoBullet: true,\n autoNumbering: true,\n autoUnlink: false,\n autoLink: true,\n};\n\n/**\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\n * It can be customized with options to enable or disable auto list features.\n */\nexport class AutoFormatPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.\n */\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'AutoFormat';\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 }\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 * 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) {\n switch (event.eventType) {\n case 'keyDown':\n this.handleKeyDownEvent(this.editor, event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(this.editor, event);\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IEditor, event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\n const { autoBullet, autoNumbering, autoUnlink, autoLink } = this.options;\n switch (rawEvent.key) {\n case ' ':\n keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);\n if (autoLink) {\n createLinkAfterSpace(editor);\n }\n break;\n case 'Backspace':\n if (autoUnlink) {\n unlink(editor, rawEvent);\n }\n break;\n }\n }\n }\n\n private handleContentChangedEvent(editor: IEditor, event: ContentChangedEvent) {\n const { autoLink } = this.options;\n if (event.source == 'Paste' && autoLink) {\n createLink(editor);\n }\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { IEditor } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function createLink(editor: IEditor): void;
@@ -0,0 +1,22 @@
1
+ import { addLink } from 'roosterjs-content-model-dom';
2
+ import { getLinkSegment } from './getLinkSegment';
3
+ /**
4
+ * @internal
5
+ */
6
+ export function createLink(editor) {
7
+ editor.formatContentModel(function (model) {
8
+ var link = getLinkSegment(model);
9
+ if (link && !link.link) {
10
+ addLink(link, {
11
+ format: {
12
+ href: link.text,
13
+ underline: true,
14
+ },
15
+ dataset: {},
16
+ });
17
+ return true;
18
+ }
19
+ return false;
20
+ });
21
+ }
22
+ //# sourceMappingURL=createLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLink.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe;IACtC,MAAM,CAAC,kBAAkB,CAAC,UAAA,KAAK;QAC3B,IAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACpB,OAAO,CAAC,IAAI,EAAE;gBACV,MAAM,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI;iBAClB;gBACD,OAAO,EAAE,EAAE;aACd,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { addLink } from 'roosterjs-content-model-dom';\nimport { getLinkSegment } from './getLinkSegment';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createLink(editor: IEditor) {\n editor.formatContentModel(model => {\n const link = getLinkSegment(model);\n if (link && !link.link) {\n addLink(link, {\n format: {\n href: link.text,\n underline: true,\n },\n dataset: {},\n });\n return true;\n }\n return false;\n });\n}\n"]}