@atlaskit/editor-core 172.1.2 → 172.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/analytics-api/api.js +38 -0
  3. package/dist/cjs/analytics-api/attach-payload-into-transaction.js +36 -0
  4. package/dist/cjs/analytics-api/editor-state-context.js +96 -0
  5. package/dist/cjs/analytics-api/map-attributes.js +30 -0
  6. package/dist/cjs/create-editor/ReactEditorView.js +47 -6
  7. package/dist/cjs/create-editor/ReactEditorViewContext.js +2 -6
  8. package/dist/cjs/create-editor/create-plugins-list.js +12 -3
  9. package/dist/cjs/event-dispatcher/index.js +12 -81
  10. package/dist/cjs/insert-api/api.js +48 -0
  11. package/dist/cjs/insert-api/insert-content-handlers.js +101 -0
  12. package/dist/cjs/insert-api/insert-node-helpers.js +157 -0
  13. package/dist/cjs/{plugins/analytics/types/avatar.js → insert-api/types.js} +0 -0
  14. package/dist/cjs/keymaps/index.js +437 -288
  15. package/dist/cjs/messages.js +8 -125
  16. package/dist/cjs/plugins/analytics/index.js +26 -26
  17. package/dist/cjs/plugins/analytics/types/enums.js +49 -344
  18. package/dist/cjs/plugins/analytics/types/extension-events.js +19 -26
  19. package/dist/cjs/plugins/analytics/types/general-events.js +25 -34
  20. package/dist/cjs/plugins/analytics/types/index.js +10 -56
  21. package/dist/cjs/plugins/analytics/types/inline-comment-events.js +7 -8
  22. package/dist/cjs/plugins/analytics/types/node-events.js +13 -20
  23. package/dist/cjs/plugins/analytics/types/smart-links.js +8 -14
  24. package/dist/cjs/plugins/analytics/types/toolbar-button.js +7 -20
  25. package/dist/cjs/plugins/analytics/utils.js +37 -127
  26. package/dist/cjs/plugins/expand/utils.js +18 -45
  27. package/dist/cjs/plugins/extension/actions.js +10 -30
  28. package/dist/cjs/plugins/extension/ui/Extension/styles.js +18 -8
  29. package/dist/cjs/plugins/insert-block/index.js +1 -0
  30. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +31 -22
  31. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/messages.js +6 -170
  32. package/dist/cjs/plugins/layout/styles.js +14 -6
  33. package/dist/cjs/plugins/layout/utils.js +25 -66
  34. package/dist/cjs/plugins/paste/handlers.js +19 -15
  35. package/dist/cjs/plugins/paste/util/index.js +30 -1
  36. package/dist/cjs/plugins/selection/gap-cursor/selection.js +23 -188
  37. package/dist/cjs/plugins/selection/gap-cursor/utils/is-ignored.js +7 -8
  38. package/dist/cjs/plugins/selection/gap-cursor/utils/is-valid-target-node.js +7 -8
  39. package/dist/cjs/plugins/selection/gap-cursor/utils.js +6 -6
  40. package/dist/cjs/plugins/selection/gap-cursor-selection.js +1 -1
  41. package/dist/cjs/plugins/selection/types.js +9 -11
  42. package/dist/cjs/plugins/selection/utils.js +2 -2
  43. package/dist/cjs/plugins/table/commands/go-to-next-cell.js +40 -38
  44. package/dist/cjs/plugins/table/commands/insert.js +57 -49
  45. package/dist/cjs/plugins/table/commands/selection.js +302 -218
  46. package/dist/cjs/plugins/table/commands-with-analytics.js +241 -219
  47. package/dist/cjs/plugins/table/event-handlers.js +60 -60
  48. package/dist/cjs/plugins/table/index.js +64 -20
  49. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +20 -22
  50. package/dist/cjs/plugins/table/nodeviews/table.js +19 -11
  51. package/dist/cjs/plugins/table/nodeviews/tableCell.js +11 -13
  52. package/dist/cjs/plugins/table/nodeviews/update-overflow-shadows.js +25 -25
  53. package/dist/cjs/plugins/table/pm-plugins/keymap.js +15 -13
  54. package/dist/cjs/plugins/table/pm-plugins/main.js +8 -8
  55. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +4 -8
  56. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin.js +2 -1
  57. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +7 -10
  58. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +2 -2
  59. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/dom.js +30 -28
  60. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -7
  61. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +3 -2
  62. package/dist/cjs/plugins/table/pm-plugins/table-selection-keymap.js +3 -3
  63. package/dist/cjs/plugins/table/toolbar.js +74 -72
  64. package/dist/cjs/plugins/table/transforms/column-width.js +41 -38
  65. package/dist/cjs/plugins/table/transforms/replace-table.js +4 -4
  66. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +2 -4
  67. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +25 -21
  68. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/index.js +6 -2
  69. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +7 -4
  70. package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +12 -11
  71. package/dist/cjs/plugins/table/ui/LayoutButton/index.js +2 -2
  72. package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +4 -6
  73. package/dist/cjs/plugins/table/ui/common-styles.js +3 -3
  74. package/dist/cjs/plugins/table/utils/analytics.js +26 -1
  75. package/dist/cjs/plugins/table/utils/index.js +0 -6
  76. package/dist/cjs/selection-api/api.js +34 -0
  77. package/dist/cjs/types/browser.js +1 -2
  78. package/dist/cjs/ui/ColorPalette/Color/index.js +2 -106
  79. package/dist/cjs/ui/ColorPalette/Palettes/cellBackgroundColorPalette.js +2 -21
  80. package/dist/cjs/ui/ColorPalette/Palettes/common.js +7 -25
  81. package/dist/cjs/ui/ColorPalette/Palettes/paletteMessages.js +2 -114
  82. package/dist/cjs/ui/ColorPalette/Palettes/panelBackgroundPalette.js +12 -152
  83. package/dist/cjs/ui/ColorPalette/Palettes/statusColorPalette.js +13 -61
  84. package/dist/cjs/ui/ColorPalette/Palettes/textColorPalette.js +12 -34
  85. package/dist/cjs/ui/ColorPalette/index.js +2 -76
  86. package/dist/cjs/ui/Dropdown/index.js +3 -119
  87. package/dist/cjs/ui/DropdownMenu/index.js +3 -286
  88. package/dist/cjs/ui/Toolbar/types.js +19 -33
  89. package/dist/cjs/ui/ToolbarButton/index.js +8 -120
  90. package/dist/cjs/ui/WithPluginState/index.js +1 -3
  91. package/dist/cjs/ui/styles.js +35 -27
  92. package/dist/cjs/ui/with-outer-listeners.js +4 -152
  93. package/dist/cjs/utils/dom.js +46 -123
  94. package/dist/cjs/utils/index.js +40 -42
  95. package/dist/cjs/utils/node-width.js +7 -79
  96. package/dist/cjs/utils/nodes.js +57 -124
  97. package/dist/cjs/utils/plugin-state-factory.js +7 -107
  98. package/dist/cjs/utils/selection.js +11 -62
  99. package/dist/cjs/utils/slice.js +28 -68
  100. package/dist/cjs/utils/step.js +18 -46
  101. package/dist/cjs/version-wrapper.js +1 -1
  102. package/dist/cjs/version.json +1 -1
  103. package/dist/es2019/analytics-api/api.js +30 -0
  104. package/dist/es2019/analytics-api/attach-payload-into-transaction.js +25 -0
  105. package/dist/es2019/analytics-api/editor-state-context.js +85 -0
  106. package/dist/es2019/analytics-api/map-attributes.js +14 -0
  107. package/dist/es2019/create-editor/ReactEditorView.js +33 -4
  108. package/dist/es2019/create-editor/ReactEditorViewContext.js +1 -2
  109. package/dist/es2019/create-editor/create-plugins-list.js +13 -4
  110. package/dist/es2019/event-dispatcher/index.js +1 -60
  111. package/dist/es2019/insert-api/api.js +43 -0
  112. package/dist/es2019/insert-api/insert-content-handlers.js +85 -0
  113. package/dist/es2019/insert-api/insert-node-helpers.js +149 -0
  114. package/dist/es2019/{plugins/analytics/types/avatar.js → insert-api/types.js} +0 -0
  115. package/dist/es2019/keymaps/index.js +1 -186
  116. package/dist/es2019/messages.js +2 -123
  117. package/dist/es2019/plugins/analytics/index.js +1 -1
  118. package/dist/es2019/plugins/analytics/types/enums.js +1 -336
  119. package/dist/es2019/plugins/analytics/types/extension-events.js +1 -22
  120. package/dist/es2019/plugins/analytics/types/general-events.js +1 -30
  121. package/dist/es2019/plugins/analytics/types/index.js +1 -6
  122. package/dist/es2019/plugins/analytics/types/inline-comment-events.js +1 -7
  123. package/dist/es2019/plugins/analytics/types/node-events.js +1 -18
  124. package/dist/es2019/plugins/analytics/types/smart-links.js +1 -12
  125. package/dist/es2019/plugins/analytics/types/toolbar-button.js +1 -19
  126. package/dist/es2019/plugins/analytics/utils.js +12 -113
  127. package/dist/es2019/plugins/expand/utils.js +1 -36
  128. package/dist/es2019/plugins/extension/actions.js +1 -26
  129. package/dist/es2019/plugins/extension/ui/Extension/styles.js +2 -3
  130. package/dist/es2019/plugins/insert-block/index.js +1 -0
  131. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -12
  132. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/messages.js +1 -168
  133. package/dist/es2019/plugins/layout/styles.js +2 -3
  134. package/dist/es2019/plugins/layout/utils.js +1 -54
  135. package/dist/es2019/plugins/paste/handlers.js +8 -4
  136. package/dist/es2019/plugins/paste/util/index.js +23 -0
  137. package/dist/es2019/plugins/selection/gap-cursor/selection.js +1 -136
  138. package/dist/es2019/plugins/selection/gap-cursor/utils/is-ignored.js +1 -5
  139. package/dist/es2019/plugins/selection/gap-cursor/utils/is-valid-target-node.js +1 -4
  140. package/dist/es2019/plugins/selection/gap-cursor/utils.js +4 -4
  141. package/dist/es2019/plugins/selection/gap-cursor-selection.js +1 -1
  142. package/dist/es2019/plugins/selection/types.js +2 -9
  143. package/dist/es2019/plugins/selection/utils.js +1 -1
  144. package/dist/es2019/plugins/table/commands/go-to-next-cell.js +4 -4
  145. package/dist/es2019/plugins/table/commands/insert.js +26 -24
  146. package/dist/es2019/plugins/table/commands/selection.js +109 -51
  147. package/dist/es2019/plugins/table/commands-with-analytics.js +39 -38
  148. package/dist/es2019/plugins/table/event-handlers.js +6 -7
  149. package/dist/es2019/plugins/table/index.js +56 -16
  150. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +11 -12
  151. package/dist/es2019/plugins/table/nodeviews/table.js +18 -8
  152. package/dist/es2019/plugins/table/nodeviews/tableCell.js +2 -3
  153. package/dist/es2019/plugins/table/nodeviews/update-overflow-shadows.js +3 -4
  154. package/dist/es2019/plugins/table/pm-plugins/keymap.js +13 -12
  155. package/dist/es2019/plugins/table/pm-plugins/main.js +8 -8
  156. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +4 -6
  157. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin.js +2 -2
  158. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +7 -8
  159. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -2
  160. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/dom.js +2 -2
  161. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -4
  162. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +3 -2
  163. package/dist/es2019/plugins/table/pm-plugins/table-selection-keymap.js +3 -3
  164. package/dist/es2019/plugins/table/toolbar.js +24 -24
  165. package/dist/es2019/plugins/table/transforms/column-width.js +3 -2
  166. package/dist/es2019/plugins/table/transforms/replace-table.js +4 -4
  167. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +2 -2
  168. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +19 -16
  169. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/index.js +6 -2
  170. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +8 -4
  171. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +9 -6
  172. package/dist/es2019/plugins/table/ui/LayoutButton/index.js +2 -2
  173. package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +2 -3
  174. package/dist/es2019/plugins/table/ui/common-styles.js +1 -1
  175. package/dist/es2019/plugins/table/utils/analytics.js +16 -1
  176. package/dist/es2019/plugins/table/utils/index.js +1 -1
  177. package/dist/es2019/selection-api/api.js +22 -0
  178. package/dist/es2019/types/browser.js +0 -1
  179. package/dist/es2019/ui/ColorPalette/Color/index.js +1 -66
  180. package/dist/es2019/ui/ColorPalette/Palettes/cellBackgroundColorPalette.js +1 -14
  181. package/dist/es2019/ui/ColorPalette/Palettes/common.js +1 -20
  182. package/dist/es2019/ui/ColorPalette/Palettes/paletteMessages.js +2 -113
  183. package/dist/es2019/ui/ColorPalette/Palettes/panelBackgroundPalette.js +1 -137
  184. package/dist/es2019/ui/ColorPalette/Palettes/statusColorPalette.js +1 -51
  185. package/dist/es2019/ui/ColorPalette/Palettes/textColorPalette.js +1 -25
  186. package/dist/es2019/ui/ColorPalette/index.js +2 -62
  187. package/dist/es2019/ui/Dropdown/index.js +2 -84
  188. package/dist/es2019/ui/DropdownMenu/index.js +2 -244
  189. package/dist/es2019/ui/Toolbar/types.js +1 -30
  190. package/dist/es2019/ui/ToolbarButton/index.js +2 -94
  191. package/dist/es2019/ui/WithPluginState/index.js +1 -1
  192. package/dist/es2019/ui/styles.js +9 -47
  193. package/dist/es2019/ui/with-outer-listeners.js +2 -104
  194. package/dist/es2019/utils/dom.js +1 -113
  195. package/dist/es2019/utils/index.js +2 -21
  196. package/dist/es2019/utils/node-width.js +1 -75
  197. package/dist/es2019/utils/nodes.js +1 -88
  198. package/dist/es2019/utils/plugin-state-factory.js +1 -107
  199. package/dist/es2019/utils/selection.js +2 -52
  200. package/dist/es2019/utils/slice.js +1 -56
  201. package/dist/es2019/utils/step.js +1 -35
  202. package/dist/es2019/version-wrapper.js +1 -1
  203. package/dist/es2019/version.json +1 -1
  204. package/dist/esm/analytics-api/api.js +27 -0
  205. package/dist/esm/analytics-api/attach-payload-into-transaction.js +22 -0
  206. package/dist/esm/analytics-api/editor-state-context.js +81 -0
  207. package/dist/esm/analytics-api/map-attributes.js +20 -0
  208. package/dist/esm/create-editor/ReactEditorView.js +44 -6
  209. package/dist/esm/create-editor/ReactEditorViewContext.js +1 -2
  210. package/dist/esm/create-editor/create-plugins-list.js +15 -4
  211. package/dist/esm/event-dispatcher/index.js +1 -74
  212. package/dist/esm/insert-api/api.js +37 -0
  213. package/dist/esm/insert-api/insert-content-handlers.js +88 -0
  214. package/dist/esm/insert-api/insert-node-helpers.js +138 -0
  215. package/dist/{es2019/plugins/analytics/types/config-panel-events.js → esm/insert-api/types.js} +0 -0
  216. package/dist/esm/keymaps/index.js +1 -184
  217. package/dist/esm/messages.js +2 -123
  218. package/dist/esm/plugins/analytics/index.js +1 -1
  219. package/dist/esm/plugins/analytics/types/enums.js +1 -336
  220. package/dist/esm/plugins/analytics/types/extension-events.js +1 -22
  221. package/dist/esm/plugins/analytics/types/general-events.js +1 -30
  222. package/dist/esm/plugins/analytics/types/index.js +1 -6
  223. package/dist/esm/plugins/analytics/types/inline-comment-events.js +1 -7
  224. package/dist/esm/plugins/analytics/types/node-events.js +1 -18
  225. package/dist/esm/plugins/analytics/types/smart-links.js +1 -12
  226. package/dist/esm/plugins/analytics/types/toolbar-button.js +1 -19
  227. package/dist/esm/plugins/analytics/utils.js +12 -113
  228. package/dist/esm/plugins/expand/utils.js +1 -34
  229. package/dist/esm/plugins/extension/actions.js +1 -24
  230. package/dist/esm/plugins/extension/ui/Extension/styles.js +2 -3
  231. package/dist/esm/plugins/insert-block/index.js +1 -0
  232. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -12
  233. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/messages.js +1 -168
  234. package/dist/esm/plugins/layout/styles.js +2 -3
  235. package/dist/esm/plugins/layout/utils.js +1 -58
  236. package/dist/esm/plugins/paste/handlers.js +8 -4
  237. package/dist/esm/plugins/paste/util/index.js +23 -0
  238. package/dist/esm/plugins/selection/gap-cursor/selection.js +1 -176
  239. package/dist/esm/plugins/selection/gap-cursor/utils/is-ignored.js +1 -5
  240. package/dist/esm/plugins/selection/gap-cursor/utils/is-valid-target-node.js +1 -4
  241. package/dist/esm/plugins/selection/gap-cursor/utils.js +4 -4
  242. package/dist/esm/plugins/selection/gap-cursor-selection.js +1 -1
  243. package/dist/esm/plugins/selection/types.js +2 -9
  244. package/dist/esm/plugins/selection/utils.js +1 -1
  245. package/dist/esm/plugins/table/commands/go-to-next-cell.js +34 -32
  246. package/dist/esm/plugins/table/commands/insert.js +57 -49
  247. package/dist/esm/plugins/table/commands/selection.js +303 -215
  248. package/dist/esm/plugins/table/commands-with-analytics.js +241 -220
  249. package/dist/esm/plugins/table/event-handlers.js +60 -59
  250. package/dist/esm/plugins/table/index.js +62 -18
  251. package/dist/esm/plugins/table/nodeviews/TableComponent.js +20 -21
  252. package/dist/esm/plugins/table/nodeviews/table.js +19 -9
  253. package/dist/esm/plugins/table/nodeviews/tableCell.js +11 -12
  254. package/dist/esm/plugins/table/nodeviews/update-overflow-shadows.js +25 -24
  255. package/dist/esm/plugins/table/pm-plugins/keymap.js +14 -13
  256. package/dist/esm/plugins/table/pm-plugins/main.js +8 -8
  257. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +4 -6
  258. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin.js +2 -1
  259. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +7 -8
  260. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +2 -2
  261. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/dom.js +30 -28
  262. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -4
  263. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +3 -2
  264. package/dist/esm/plugins/table/pm-plugins/table-selection-keymap.js +3 -3
  265. package/dist/esm/plugins/table/toolbar.js +75 -73
  266. package/dist/esm/plugins/table/transforms/column-width.js +41 -38
  267. package/dist/esm/plugins/table/transforms/replace-table.js +4 -4
  268. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +2 -2
  269. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +25 -21
  270. package/dist/esm/plugins/table/ui/FloatingContextualMenu/index.js +6 -2
  271. package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +6 -4
  272. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +9 -6
  273. package/dist/esm/plugins/table/ui/LayoutButton/index.js +2 -2
  274. package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +4 -5
  275. package/dist/esm/plugins/table/ui/common-styles.js +1 -1
  276. package/dist/esm/plugins/table/utils/analytics.js +22 -1
  277. package/dist/esm/plugins/table/utils/index.js +1 -1
  278. package/dist/esm/selection-api/api.js +23 -0
  279. package/dist/esm/types/browser.js +0 -1
  280. package/dist/esm/ui/ColorPalette/Color/index.js +1 -93
  281. package/dist/esm/ui/ColorPalette/Palettes/cellBackgroundColorPalette.js +1 -14
  282. package/dist/esm/ui/ColorPalette/Palettes/common.js +1 -19
  283. package/dist/esm/ui/ColorPalette/Palettes/paletteMessages.js +2 -113
  284. package/dist/esm/ui/ColorPalette/Palettes/panelBackgroundPalette.js +1 -147
  285. package/dist/esm/ui/ColorPalette/Palettes/statusColorPalette.js +1 -51
  286. package/dist/esm/ui/ColorPalette/Palettes/textColorPalette.js +1 -25
  287. package/dist/esm/ui/ColorPalette/index.js +2 -64
  288. package/dist/esm/ui/Dropdown/index.js +2 -106
  289. package/dist/esm/ui/DropdownMenu/index.js +2 -265
  290. package/dist/esm/ui/Toolbar/types.js +1 -30
  291. package/dist/esm/ui/ToolbarButton/index.js +2 -102
  292. package/dist/esm/ui/WithPluginState/index.js +1 -1
  293. package/dist/esm/ui/styles.js +17 -20
  294. package/dist/esm/ui/with-outer-listeners.js +2 -139
  295. package/dist/esm/utils/dom.js +1 -113
  296. package/dist/esm/utils/index.js +5 -23
  297. package/dist/esm/utils/node-width.js +1 -73
  298. package/dist/esm/utils/nodes.js +1 -100
  299. package/dist/esm/utils/plugin-state-factory.js +1 -106
  300. package/dist/esm/utils/selection.js +2 -50
  301. package/dist/esm/utils/slice.js +1 -59
  302. package/dist/esm/utils/step.js +1 -37
  303. package/dist/esm/version-wrapper.js +1 -1
  304. package/dist/esm/version.json +1 -1
  305. package/dist/types/actions/index.d.ts +2 -16
  306. package/dist/types/analytics-api/api.d.ts +9 -0
  307. package/dist/types/analytics-api/attach-payload-into-transaction.d.ts +10 -0
  308. package/dist/types/analytics-api/editor-state-context.d.ts +9 -0
  309. package/dist/types/analytics-api/map-attributes.d.ts +2 -0
  310. package/dist/types/create-editor/ReactEditorView.d.ts +1 -0
  311. package/dist/types/create-editor/ReactEditorViewContext.d.ts +1 -7
  312. package/dist/types/create-editor/create-plugins-list.d.ts +5 -1
  313. package/dist/types/event-dispatcher/index.d.ts +2 -19
  314. package/dist/types/insert-api/api.d.ts +9 -0
  315. package/dist/types/insert-api/insert-content-handlers.d.ts +9 -0
  316. package/dist/types/insert-api/insert-node-helpers.d.ts +30 -0
  317. package/dist/types/insert-api/types.d.ts +16 -0
  318. package/dist/types/keymaps/index.d.ts +2 -89
  319. package/dist/types/labs/next/presets/cxhtml.d.ts +1 -1
  320. package/dist/types/labs/next/presets/mobile.d.ts +1 -1
  321. package/dist/types/messages.d.ts +2 -124
  322. package/dist/types/plugins/analytics/index.d.ts +2 -2
  323. package/dist/types/plugins/analytics/types/dispatch-analytics-event.d.ts +1 -2
  324. package/dist/types/plugins/analytics/types/enums.d.ts +1 -313
  325. package/dist/types/plugins/analytics/types/events.d.ts +1 -111
  326. package/dist/types/plugins/analytics/types/experimental-events.d.ts +1 -17
  327. package/dist/types/plugins/analytics/types/extension-events.d.ts +2 -43
  328. package/dist/types/plugins/analytics/types/general-events.d.ts +2 -179
  329. package/dist/types/plugins/analytics/types/index.d.ts +4 -14
  330. package/dist/types/plugins/analytics/types/inline-comment-events.d.ts +2 -17
  331. package/dist/types/plugins/analytics/types/link-tool-bar-events.d.ts +1 -76
  332. package/dist/types/plugins/analytics/types/media-events.d.ts +1 -16
  333. package/dist/types/plugins/analytics/types/node-events.d.ts +2 -56
  334. package/dist/types/plugins/analytics/types/selection-events.d.ts +1 -18
  335. package/dist/types/plugins/analytics/types/smart-links.d.ts +2 -13
  336. package/dist/types/plugins/analytics/types/toolbar-button.d.ts +2 -22
  337. package/dist/types/plugins/analytics/types/type-ahead.d.ts +1 -27
  338. package/dist/types/plugins/analytics/utils.d.ts +3 -8
  339. package/dist/types/plugins/annotation/pm-plugins/plugin-factory.d.ts +1 -1
  340. package/dist/types/plugins/card/pm-plugins/util/state.d.ts +1 -1
  341. package/dist/types/plugins/code-bidi-warning/pm-plugins/plugin-factory.d.ts +1 -1
  342. package/dist/types/plugins/context-panel/types.d.ts +1 -3
  343. package/dist/types/plugins/expand/pm-plugins/plugin-factory.d.ts +1 -1
  344. package/dist/types/plugins/expand/utils.d.ts +1 -5
  345. package/dist/types/plugins/extension/actions.d.ts +2 -6
  346. package/dist/types/plugins/extension/commands.d.ts +7 -7
  347. package/dist/types/plugins/extension/plugin-factory.d.ts +2 -2
  348. package/dist/types/plugins/extension/ui/Extension/styles.d.ts +2 -2
  349. package/dist/types/plugins/find-replace/commands.d.ts +7 -7
  350. package/dist/types/plugins/find-replace/plugin.d.ts +1 -1
  351. package/dist/types/plugins/floating-toolbar/pm-plugins/toolbar-data/plugin-factory.d.ts +1 -1
  352. package/dist/types/plugins/floating-toolbar/types.d.ts +1 -153
  353. package/dist/types/plugins/floating-toolbar/ui/Button.d.ts +2 -1
  354. package/dist/types/plugins/floating-toolbar/ui/Select.d.ts +2 -12
  355. package/dist/types/plugins/floating-toolbar/ui/types.d.ts +1 -20
  356. package/dist/types/plugins/insert-block/index.d.ts +2 -0
  357. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/messages.d.ts +1 -167
  358. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +3 -1
  359. package/dist/types/plugins/layout/styles.d.ts +2 -2
  360. package/dist/types/plugins/layout/utils.d.ts +1 -15
  361. package/dist/types/plugins/media/commands/linking.d.ts +3 -3
  362. package/dist/types/plugins/media/nodeviews/mediaNodeView/index.d.ts +1 -1
  363. package/dist/types/plugins/media/nodeviews/mediaSingle.d.ts +1 -1
  364. package/dist/types/plugins/media/pm-plugins/alt-text/commands.d.ts +2 -2
  365. package/dist/types/plugins/media/pm-plugins/alt-text/index.d.ts +1 -1
  366. package/dist/types/plugins/media/pm-plugins/linking/index.d.ts +1 -1
  367. package/dist/types/plugins/mobile-dimensions/commands.d.ts +4 -4
  368. package/dist/types/plugins/mobile-dimensions/plugin-factory.d.ts +1 -1
  369. package/dist/types/plugins/paste/util/index.d.ts +2 -1
  370. package/dist/types/plugins/selection/commands.d.ts +1 -1
  371. package/dist/types/plugins/selection/gap-cursor/selection.d.ts +1 -40
  372. package/dist/types/plugins/selection/gap-cursor/utils/is-ignored.d.ts +1 -2
  373. package/dist/types/plugins/selection/gap-cursor/utils/is-valid-target-node.d.ts +1 -2
  374. package/dist/types/plugins/selection/gap-cursor-selection.d.ts +1 -1
  375. package/dist/types/plugins/selection/plugin-factory.d.ts +1 -1
  376. package/dist/types/plugins/selection/types.d.ts +4 -19
  377. package/dist/types/plugins/table/commands/go-to-next-cell.d.ts +3 -2
  378. package/dist/types/plugins/table/commands/hover.d.ts +7 -7
  379. package/dist/types/plugins/table/commands/insert.d.ts +5 -4
  380. package/dist/types/plugins/table/commands/misc.d.ts +8 -8
  381. package/dist/types/plugins/table/commands/selection.d.ts +4 -3
  382. package/dist/types/plugins/table/commands/toggle.d.ts +1 -1
  383. package/dist/types/plugins/table/commands-with-analytics.d.ts +21 -19
  384. package/dist/types/plugins/table/event-handlers.d.ts +4 -2
  385. package/dist/types/plugins/table/index.d.ts +7 -0
  386. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +4 -2
  387. package/dist/types/plugins/table/nodeviews/table.d.ts +2 -1
  388. package/dist/types/plugins/table/nodeviews/tableCell.d.ts +2 -1
  389. package/dist/types/plugins/table/nodeviews/types.d.ts +3 -0
  390. package/dist/types/plugins/table/nodeviews/update-overflow-shadows.d.ts +2 -1
  391. package/dist/types/plugins/table/pm-plugins/keymap.d.ts +3 -1
  392. package/dist/types/plugins/table/pm-plugins/main.d.ts +4 -2
  393. package/dist/types/plugins/table/pm-plugins/plugin-factory.d.ts +1 -1
  394. package/dist/types/plugins/table/pm-plugins/sticky-headers/commands.d.ts +2 -2
  395. package/dist/types/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +2 -1
  396. package/dist/types/plugins/table/pm-plugins/sticky-headers/plugin-state.d.ts +1 -1
  397. package/dist/types/plugins/table/pm-plugins/sticky-headers/plugin.d.ts +2 -1
  398. package/dist/types/plugins/table/pm-plugins/table-resizing/commands.d.ts +4 -4
  399. package/dist/types/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +3 -1
  400. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin-factory.d.ts +2 -2
  401. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin.d.ts +3 -1
  402. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +2 -1
  403. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +3 -1
  404. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +2 -1
  405. package/dist/types/plugins/table/pm-plugins/table-selection-keymap.d.ts +2 -1
  406. package/dist/types/plugins/table/toolbar.d.ts +5 -3
  407. package/dist/types/plugins/table/transforms/column-width.d.ts +2 -1
  408. package/dist/types/plugins/table/transforms/replace-table.d.ts +3 -2
  409. package/dist/types/plugins/table/types.d.ts +3 -1
  410. package/dist/types/plugins/table/ui/FloatingContextualButton/index.d.ts +1 -1
  411. package/dist/types/plugins/table/ui/FloatingContextualMenu/ContextualMenu.d.ts +4 -0
  412. package/dist/types/plugins/table/ui/FloatingContextualMenu/index.d.ts +5 -1
  413. package/dist/types/plugins/table/ui/FloatingDeleteButton/index.d.ts +2 -0
  414. package/dist/types/plugins/table/ui/FloatingInsertButton/index.d.ts +5 -1
  415. package/dist/types/plugins/table/ui/LayoutButton/index.d.ts +2 -0
  416. package/dist/types/plugins/table/ui/TableFloatingControls/index.d.ts +2 -0
  417. package/dist/types/plugins/table/utils/analytics.d.ts +3 -0
  418. package/dist/types/plugins/table/utils/index.d.ts +1 -1
  419. package/dist/types/plugins/type-ahead/types.d.ts +2 -50
  420. package/dist/types/plugins/width/index.d.ts +3 -6
  421. package/dist/types/selection-api/api.d.ts +11 -0
  422. package/dist/types/types/browser.d.ts +1 -10
  423. package/dist/types/types/editor-appearance.d.ts +1 -1
  424. package/dist/types/types/editor-plugin.d.ts +1 -59
  425. package/dist/types/types/editor-react-context.d.ts +1 -6
  426. package/dist/types/types/empty-state-handler.d.ts +1 -7
  427. package/dist/types/types/feature-flags.d.ts +1 -343
  428. package/dist/types/types/pm-config.d.ts +1 -14
  429. package/dist/types/types/pm-plugin.d.ts +1 -27
  430. package/dist/types/types/ui-components.d.ts +1 -22
  431. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +118 -118
  432. package/dist/types/ui/ColorPalette/Color/index.d.ts +1 -19
  433. package/dist/types/ui/ColorPalette/Palettes/cellBackgroundColorPalette.d.ts +1 -2
  434. package/dist/types/ui/ColorPalette/Palettes/common.d.ts +1 -1
  435. package/dist/types/ui/ColorPalette/Palettes/paletteMessages.d.ts +2 -113
  436. package/dist/types/ui/ColorPalette/Palettes/panelBackgroundPalette.d.ts +1 -3
  437. package/dist/types/ui/ColorPalette/Palettes/statusColorPalette.d.ts +1 -3
  438. package/dist/types/ui/ColorPalette/Palettes/textColorPalette.d.ts +1 -3
  439. package/dist/types/ui/ColorPalette/Palettes/type.d.ts +1 -8
  440. package/dist/types/ui/ColorPalette/index.d.ts +2 -23
  441. package/dist/types/ui/ColorPickerButton/index.d.ts +1 -1
  442. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  443. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  444. package/dist/types/ui/Dropdown/index.d.ts +2 -33
  445. package/dist/types/ui/DropdownMenu/index.d.ts +2 -18
  446. package/dist/types/ui/DropdownMenu/types.d.ts +1 -43
  447. package/dist/types/ui/Toolbar/types.d.ts +2 -30
  448. package/dist/types/ui/ToolbarButton/index.d.ts +3 -52
  449. package/dist/types/ui/styles.d.ts +3 -3
  450. package/dist/types/ui/with-outer-listeners.d.ts +2 -10
  451. package/dist/types/utils/document-logger.d.ts +2 -7
  452. package/dist/types/utils/dom.d.ts +2 -26
  453. package/dist/types/utils/index.d.ts +3 -6
  454. package/dist/types/utils/node-width.d.ts +1 -7
  455. package/dist/types/utils/nodes.d.ts +1 -35
  456. package/dist/types/utils/performance/plugin-performance-report.d.ts +2 -25
  457. package/dist/types/utils/plugin-state-factory.d.ts +2 -16
  458. package/dist/types/utils/selection.d.ts +3 -6
  459. package/dist/types/utils/slice.d.ts +2 -11
  460. package/dist/types/utils/step.d.ts +1 -15
  461. package/package.json +5 -6
  462. package/dist/cjs/plugins/analytics/types/config-panel-events.js +0 -5
  463. package/dist/cjs/plugins/analytics/types/cut-copy-events.js +0 -5
  464. package/dist/cjs/plugins/analytics/types/date-events.js +0 -5
  465. package/dist/cjs/plugins/analytics/types/element-browser-events.js +0 -5
  466. package/dist/cjs/plugins/analytics/types/find-replace-events.js +0 -5
  467. package/dist/cjs/plugins/analytics/types/format-events.js +0 -24
  468. package/dist/cjs/plugins/analytics/types/insert-events.js +0 -51
  469. package/dist/cjs/plugins/analytics/types/list-events.js +0 -25
  470. package/dist/cjs/plugins/analytics/types/paste-events.js +0 -55
  471. package/dist/cjs/plugins/analytics/types/substitute-events.js +0 -24
  472. package/dist/cjs/plugins/analytics/types/table-events.js +0 -43
  473. package/dist/cjs/plugins/analytics/types/utils.js +0 -27
  474. package/dist/cjs/ui/ColorPalette/Color/styles.js +0 -21
  475. package/dist/cjs/ui/ColorPalette/Palettes/getColorMessage.js +0 -17
  476. package/dist/cjs/ui/ColorPalette/styles.js +0 -19
  477. package/dist/cjs/ui/DropList/index.js +0 -215
  478. package/dist/cjs/ui/Layer/index.js +0 -245
  479. package/dist/cjs/ui/Layer/internal/helpers.js +0 -70
  480. package/dist/cjs/ui/ToolbarButton/styles.js +0 -26
  481. package/dist/es2019/plugins/analytics/types/cut-copy-events.js +0 -1
  482. package/dist/es2019/plugins/analytics/types/date-events.js +0 -1
  483. package/dist/es2019/plugins/analytics/types/element-browser-events.js +0 -1
  484. package/dist/es2019/plugins/analytics/types/find-replace-events.js +0 -1
  485. package/dist/es2019/plugins/analytics/types/format-events.js +0 -16
  486. package/dist/es2019/plugins/analytics/types/insert-events.js +0 -41
  487. package/dist/es2019/plugins/analytics/types/list-events.js +0 -17
  488. package/dist/es2019/plugins/analytics/types/paste-events.js +0 -46
  489. package/dist/es2019/plugins/analytics/types/substitute-events.js +0 -16
  490. package/dist/es2019/plugins/analytics/types/table-events.js +0 -34
  491. package/dist/es2019/plugins/analytics/types/utils.js +0 -19
  492. package/dist/es2019/ui/ColorPalette/Color/styles.js +0 -24
  493. package/dist/es2019/ui/ColorPalette/Palettes/getColorMessage.js +0 -14
  494. package/dist/es2019/ui/ColorPalette/styles.js +0 -7
  495. package/dist/es2019/ui/DropList/index.js +0 -186
  496. package/dist/es2019/ui/Layer/index.js +0 -195
  497. package/dist/es2019/ui/Layer/internal/helpers.js +0 -62
  498. package/dist/es2019/ui/ToolbarButton/styles.js +0 -12
  499. package/dist/esm/plugins/analytics/types/avatar.js +0 -1
  500. package/dist/esm/plugins/analytics/types/config-panel-events.js +0 -1
  501. package/dist/esm/plugins/analytics/types/cut-copy-events.js +0 -1
  502. package/dist/esm/plugins/analytics/types/date-events.js +0 -1
  503. package/dist/esm/plugins/analytics/types/element-browser-events.js +0 -1
  504. package/dist/esm/plugins/analytics/types/find-replace-events.js +0 -1
  505. package/dist/esm/plugins/analytics/types/format-events.js +0 -16
  506. package/dist/esm/plugins/analytics/types/insert-events.js +0 -41
  507. package/dist/esm/plugins/analytics/types/list-events.js +0 -17
  508. package/dist/esm/plugins/analytics/types/paste-events.js +0 -46
  509. package/dist/esm/plugins/analytics/types/substitute-events.js +0 -16
  510. package/dist/esm/plugins/analytics/types/table-events.js +0 -34
  511. package/dist/esm/plugins/analytics/types/utils.js +0 -19
  512. package/dist/esm/ui/ColorPalette/Color/styles.js +0 -8
  513. package/dist/esm/ui/ColorPalette/Palettes/getColorMessage.js +0 -10
  514. package/dist/esm/ui/ColorPalette/styles.js +0 -7
  515. package/dist/esm/ui/DropList/index.js +0 -203
  516. package/dist/esm/ui/Layer/index.js +0 -228
  517. package/dist/esm/ui/Layer/internal/helpers.js +0 -62
  518. package/dist/esm/ui/ToolbarButton/styles.js +0 -12
  519. package/dist/types/plugins/analytics/types/avatar.d.ts +0 -5
  520. package/dist/types/plugins/analytics/types/config-panel-events.d.ts +0 -17
  521. package/dist/types/plugins/analytics/types/cut-copy-events.d.ts +0 -12
  522. package/dist/types/plugins/analytics/types/date-events.d.ts +0 -17
  523. package/dist/types/plugins/analytics/types/element-browser-events.d.ts +0 -11
  524. package/dist/types/plugins/analytics/types/find-replace-events.d.ts +0 -23
  525. package/dist/types/plugins/analytics/types/format-events.d.ts +0 -49
  526. package/dist/types/plugins/analytics/types/insert-events.d.ts +0 -128
  527. package/dist/types/plugins/analytics/types/list-events.d.ts +0 -52
  528. package/dist/types/plugins/analytics/types/paste-events.d.ts +0 -39
  529. package/dist/types/plugins/analytics/types/substitute-events.d.ts +0 -26
  530. package/dist/types/plugins/analytics/types/table-events.d.ts +0 -94
  531. package/dist/types/plugins/analytics/types/utils.d.ts +0 -45
  532. package/dist/types/ui/ColorPalette/Color/styles.d.ts +0 -2
  533. package/dist/types/ui/ColorPalette/Palettes/getColorMessage.d.ts +0 -2
  534. package/dist/types/ui/ColorPalette/styles.d.ts +0 -1
  535. package/dist/types/ui/DropList/index.d.ts +0 -22
  536. package/dist/types/ui/Layer/index.d.ts +0 -47
  537. package/dist/types/ui/Layer/internal/helpers.d.ts +0 -5
  538. package/dist/types/ui/ToolbarButton/styles.d.ts +0 -4
@@ -0,0 +1,85 @@
1
+ import { ACTION, ACTION_SUBJECT, SELECTION_TYPE, SELECTION_POSITION } from '@atlaskit/editor-common/analytics';
2
+ import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
3
+ import { findParentNode } from 'prosemirror-utils';
4
+ import { NodeSelection } from 'prosemirror-state';
5
+ export function getSelectionType(state) {
6
+ var _selection$constructo;
7
+
8
+ const {
9
+ selection
10
+ } = state;
11
+ let type;
12
+ let position;
13
+
14
+ if ((selection === null || selection === void 0 ? void 0 : (_selection$constructo = selection.constructor) === null || _selection$constructo === void 0 ? void 0 : _selection$constructo.name) === 'GapCursorSelection') {
15
+ type = SELECTION_TYPE.GAP_CURSOR;
16
+ position = selection.side;
17
+ } else if (selection instanceof CellSelection) {
18
+ type = SELECTION_TYPE.CELL;
19
+ } else if (selection instanceof NodeSelection) {
20
+ type = SELECTION_TYPE.NODE;
21
+ } else if (selection.from !== selection.to) {
22
+ type = SELECTION_TYPE.RANGED;
23
+ } else {
24
+ type = SELECTION_TYPE.CURSOR;
25
+ const {
26
+ from,
27
+ $from
28
+ } = selection;
29
+
30
+ if (from === $from.start()) {
31
+ position = SELECTION_POSITION.START;
32
+ } else if (from === $from.end()) {
33
+ position = SELECTION_POSITION.END;
34
+ } else {
35
+ position = SELECTION_POSITION.MIDDLE;
36
+ }
37
+ }
38
+
39
+ return {
40
+ type,
41
+ position
42
+ };
43
+ }
44
+ export function findInsertLocation(state) {
45
+ const {
46
+ selection
47
+ } = state;
48
+
49
+ if (selection instanceof NodeSelection) {
50
+ return selection.node.type.name;
51
+ }
52
+
53
+ if (selection instanceof CellSelection) {
54
+ return state.schema.nodes.table.name;
55
+ } // Text selection
56
+
57
+
58
+ const parentNodeInfo = findParentNode(node => node.type !== state.schema.nodes.paragraph)(state.selection);
59
+ return parentNodeInfo ? parentNodeInfo.node.type.name : state.doc.type.name;
60
+ }
61
+ export function getStateContext(state, payload) {
62
+ if (!payload.attributes) {
63
+ return payload;
64
+ }
65
+
66
+ const {
67
+ type,
68
+ position
69
+ } = getSelectionType(state);
70
+ payload.attributes.selectionType = type;
71
+
72
+ if (position) {
73
+ payload.attributes.selectionPosition = position;
74
+ }
75
+
76
+ const insertLocation = findInsertLocation(state);
77
+
78
+ if (payload.action === ACTION.INSERTED && payload.actionSubject === ACTION_SUBJECT.DOCUMENT && payload.attributes) {
79
+ payload.attributes.insertLocation = insertLocation;
80
+ } else {
81
+ payload.attributes.nodeLocation = insertLocation;
82
+ }
83
+
84
+ return payload;
85
+ }
@@ -0,0 +1,14 @@
1
+ import { ACTION, ACTION_SUBJECT } from '@atlaskit/editor-common/analytics';
2
+ export function mapActionSubjectIdToAttributes(payload) {
3
+ const documentInserted = payload.action === ACTION.INSERTED && payload.actionSubject === ACTION_SUBJECT.DOCUMENT;
4
+ const textFormatted = payload.action === ACTION.FORMATTED && payload.actionSubject === ACTION_SUBJECT.TEXT;
5
+ const hasActionSubjectId = !!payload.actionSubjectId;
6
+
7
+ if (hasActionSubjectId && (documentInserted || textFormatted)) {
8
+ payload.attributes = { ...payload.attributes,
9
+ actionSubjectId: payload.actionSubjectId
10
+ };
11
+ }
12
+
13
+ return payload;
14
+ }
@@ -30,6 +30,10 @@ import { EVENT_NAME_DISPATCH_TRANSACTION, EVENT_NAME_STATE_APPLY, EVENT_NAME_UPD
30
30
  import { PROSEMIRROR_RENDERED_NORMAL_SEVERITY_THRESHOLD, PROSEMIRROR_RENDERED_DEGRADED_SEVERITY_THRESHOLD, DEFAULT_SAMPLING_RATE_VALID_TRANSACTIONS } from './consts';
31
31
  import { getContextIdentifier } from '../plugins/base/pm-plugins/context-identifier';
32
32
  import ReactEditorViewContext from './ReactEditorViewContext';
33
+ import { pluginKey as widthPluginKey } from '../plugins/width';
34
+ import { createInsertNodeAPI } from '../insert-api/api';
35
+ import { createEditorAnalyticsAPI } from '../analytics-api/api';
36
+ import { createEditorSelectionAPI } from '../selection-api/api';
33
37
 
34
38
  function handleEditorFocus(view) {
35
39
  if (view.hasFocus()) {
@@ -157,7 +161,8 @@ export class ReactEditorView extends React.Component {
157
161
 
158
162
 
159
163
  this.blur();
160
- this.config = processPluginsList(this.getPlugins(props.editorProps, this.props.editorProps, this.props.createAnalyticsEvent));
164
+ const editorPlugins = this.getPlugins(props.editorProps, this.props.editorProps, this.props.createAnalyticsEvent);
165
+ this.config = processPluginsList(editorPlugins);
161
166
  const state = this.editorState;
162
167
  const plugins = createPMPlugins({
163
168
  schema: state.schema,
@@ -193,6 +198,8 @@ export class ReactEditorView extends React.Component {
193
198
  fireAnalyticsEvent(this.props.createAnalyticsEvent)(payload);
194
199
  });
195
200
 
201
+ _defineProperty(this, "editorPlugins", []);
202
+
196
203
  _defineProperty(this, "createEditorState", options => {
197
204
  let schema;
198
205
 
@@ -713,19 +720,41 @@ export class ReactEditorView extends React.Component {
713
720
  }
714
721
 
715
722
  this.eventDispatcher.destroy(); // this.view will be destroyed when React unmounts in handleEditorViewRef
716
- } // Helper to allow tests to inject plugins directly
717
-
723
+ }
718
724
 
725
+ // Helper to allow tests to inject plugins directly
719
726
  getPlugins(editorProps, prevEditorProps, createAnalyticsEvent) {
720
727
  var _editorProps$dangerou, _editorProps$dangerou2;
721
728
 
722
729
  const editorPlugins = (_editorProps$dangerou = (_editorProps$dangerou2 = editorProps.dangerouslyAppendPlugins) === null || _editorProps$dangerou2 === void 0 ? void 0 : _editorProps$dangerou2.__plugins) !== null && _editorProps$dangerou !== void 0 ? _editorProps$dangerou : [];
723
- const builtinPlugins = createPluginList(editorProps, prevEditorProps, createAnalyticsEvent);
730
+ const insertNodeAPI = createInsertNodeAPI({
731
+ getEditorView: () => this.view,
732
+ getEditorPlugins: () => this.editorPlugins
733
+ });
734
+ const editorAnalyticsAPI = createEditorAnalyticsAPI({
735
+ getEditorView: () => this.view,
736
+ getCreateUIAnalyticsEvent: () => createAnalyticsEvent
737
+ });
738
+ const editorSelectionAPI = createEditorSelectionAPI();
739
+
740
+ const getEditorContainerWidth = () => {
741
+ if (!this.view) {
742
+ return null;
743
+ }
744
+
745
+ const {
746
+ state
747
+ } = this.view;
748
+ return widthPluginKey.getState(state) || null;
749
+ };
750
+
751
+ const builtinPlugins = createPluginList(editorProps, prevEditorProps, createAnalyticsEvent, insertNodeAPI, editorAnalyticsAPI, editorSelectionAPI, getEditorContainerWidth);
724
752
 
725
753
  if (editorPlugins && editorPlugins.length > 0) {
726
754
  builtinPlugins.push(...editorPlugins);
727
755
  }
728
756
 
757
+ this.editorPlugins = builtinPlugins;
729
758
  return builtinPlugins;
730
759
  }
731
760
 
@@ -1,3 +1,2 @@
1
- import React from 'react';
2
- const ReactEditorViewContext = /*#__PURE__*/React.createContext({});
1
+ import { ReactEditorViewContext } from '@atlaskit/editor-common/ui-react';
3
2
  export default ReactEditorViewContext;
@@ -1,4 +1,6 @@
1
- import { breakoutPlugin, collabEditPlugin, dataConsumerMarkPlugin, datePlugin, emojiPlugin, extensionPlugin, fragmentMarkPlugin, helpDialogPlugin, imageUploadPlugin, insertBlockPlugin, jiraIssuePlugin, layoutPlugin, listPlugin, toolbarListsIndentationPlugin, macroPlugin, maxContentSizePlugin, mediaPlugin, mentionsPlugin, panelPlugin, placeholderTextPlugin, rulePlugin, saveOnEnterPlugin, tablesPlugin, tasksAndDecisionsPlugin, textColorPlugin, cardPlugin, gridPlugin, statusPlugin, alignmentPlugin, indentationPlugin, analyticsPlugin, customAutoformatPlugin, feedbackDialogPlugin, historyPlugin, expandPlugin, isExpandInsertionEnabled, scrollIntoViewPlugin, mobileDimensionsPlugin, findReplacePlugin, contextPanelPlugin, mobileSelectionPlugin, annotationPlugin, captionPlugin, avatarGroupPlugin, viewUpdateSubscriptionPlugin, beforePrimaryToolbarPlugin, codeBidiWarningPlugin, copyButtonPlugin } from '../plugins';
1
+ import { breakoutPlugin, collabEditPlugin, dataConsumerMarkPlugin, datePlugin, emojiPlugin, extensionPlugin, fragmentMarkPlugin, helpDialogPlugin, imageUploadPlugin, insertBlockPlugin, jiraIssuePlugin, layoutPlugin, listPlugin, toolbarListsIndentationPlugin, macroPlugin, maxContentSizePlugin, mediaPlugin, mentionsPlugin, panelPlugin, placeholderTextPlugin, rulePlugin, saveOnEnterPlugin, // tablesPlugin,
2
+ tablesPlugin, tasksAndDecisionsPlugin, textColorPlugin, cardPlugin, gridPlugin, statusPlugin, alignmentPlugin, indentationPlugin, analyticsPlugin, customAutoformatPlugin, feedbackDialogPlugin, historyPlugin, expandPlugin, isExpandInsertionEnabled, scrollIntoViewPlugin, mobileDimensionsPlugin, findReplacePlugin, contextPanelPlugin, mobileSelectionPlugin, annotationPlugin, captionPlugin, avatarGroupPlugin, viewUpdateSubscriptionPlugin, beforePrimaryToolbarPlugin, codeBidiWarningPlugin, copyButtonPlugin } from '../plugins'; // import { tablesPlugin } from '@atlaskit/editor-plugin-table';
3
+
2
4
  import { isFullPage as fullPageCheck } from '../utils/is-full-page';
3
5
  import { GUTTER_SIZE_MOBILE_IN_PX } from '../plugins/base/pm-plugins/scroll-gutter';
4
6
  import { createFeatureFlagsFromProps } from '../plugins/feature-flags-context/feature-flags-from-props';
@@ -107,7 +109,7 @@ export function getDefaultPresetOptionsFromEditorProps(props, createAnalyticsEve
107
109
  * their placement in the editor toolbar
108
110
  */
109
111
 
110
- export default function createPluginsList(props, prevProps, createAnalyticsEvent) {
112
+ export default function createPluginsList(props, prevProps, createAnalyticsEvent, insertNodeAPI, editorAnalyticsAPI, editorSelectionAPI, getEditorContainerWidth) {
111
113
  var _props$linking3;
112
114
 
113
115
  const appearance = props.appearance;
@@ -117,6 +119,8 @@ export default function createPluginsList(props, prevProps, createAnalyticsEvent
117
119
  const preset = createDefaultPreset(getDefaultPresetOptionsFromEditorProps(props, createAnalyticsEvent));
118
120
  const featureFlags = createFeatureFlagsFromProps(props);
119
121
 
122
+ const getEditorFeatureFlags = () => featureFlags;
123
+
120
124
  if (props.allowAnalyticsGASV3) {
121
125
  const {
122
126
  performanceTracking
@@ -211,7 +215,11 @@ export default function createPluginsList(props, prevProps, createAnalyticsEvent
211
215
  breakoutEnabled: props.appearance === 'full-page',
212
216
  allowContextualMenu: !isMobile,
213
217
  fullWidthEnabled: props.appearance === 'full-width',
214
- wasFullWidthEnabled: prevProps && prevProps.appearance === 'full-width'
218
+ wasFullWidthEnabled: prevProps && prevProps.appearance === 'full-width',
219
+ editorAnalyticsAPI,
220
+ editorSelectionAPI,
221
+ getEditorContainerWidth,
222
+ getEditorFeatureFlags
215
223
  }]);
216
224
  }
217
225
 
@@ -382,7 +390,8 @@ export default function createPluginsList(props, prevProps, createAnalyticsEvent
382
390
  horizontalRuleEnabled: props.allowRule,
383
391
  nativeStatusSupported: !statusMenuDisabled,
384
392
  showElementBrowserLink: props.elementBrowser && props.elementBrowser.showModal || false,
385
- replacePlusMenuWithElementBrowser: props.elementBrowser && props.elementBrowser.replacePlusMenu || false
393
+ replacePlusMenuWithElementBrowser: props.elementBrowser && props.elementBrowser.replacePlusMenu || false,
394
+ insertNodeAPI
386
395
  }]);
387
396
 
388
397
  const hasBeforePrimaryToolbar = components => {
@@ -1,60 +1 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- export class EventDispatcher {
3
- constructor() {
4
- _defineProperty(this, "listeners", {});
5
- }
6
-
7
- on(event, cb) {
8
- if (!this.listeners[event]) {
9
- this.listeners[event] = new Set();
10
- }
11
-
12
- this.listeners[event].add(cb);
13
- }
14
-
15
- has(event, cb) {
16
- if (!this.listeners[event]) {
17
- return false;
18
- }
19
-
20
- return this.listeners[event].has(cb);
21
- }
22
-
23
- off(event, cb) {
24
- if (!this.listeners[event]) {
25
- return;
26
- }
27
-
28
- if (this.listeners[event].has(cb)) {
29
- this.listeners[event].delete(cb);
30
- }
31
- }
32
-
33
- emit(event, data) {
34
- if (!this.listeners[event]) {
35
- return;
36
- }
37
-
38
- this.listeners[event].forEach(cb => cb(data));
39
- }
40
-
41
- destroy() {
42
- this.listeners = {};
43
- }
44
-
45
- }
46
- /**
47
- * Creates a dispatch function that can be called inside ProseMirror Plugin
48
- * to notify listeners about that plugin's state change.
49
- */
50
-
51
- export function createDispatch(eventDispatcher) {
52
- return (eventName, data) => {
53
- if (!eventName) {
54
- throw new Error('event name is required!');
55
- }
56
-
57
- const event = typeof eventName === 'string' ? eventName : eventName.key;
58
- eventDispatcher.emit(event, data);
59
- };
60
- }
1
+ export { EventDispatcher, createDispatch } from '@atlaskit/editor-common/event-dispatcher';
@@ -0,0 +1,43 @@
1
+ import { handleInsertContent } from './insert-content-handlers';
2
+ import { addAnalytics } from '../plugins/analytics';
3
+ export const createInsertNodeAPI = ({
4
+ getEditorView,
5
+ getEditorPlugins
6
+ }) => {
7
+ return {
8
+ insert: ({
9
+ node,
10
+ options
11
+ }) => {
12
+ const editorView = getEditorView();
13
+
14
+ if (!editorView) {
15
+ return false;
16
+ }
17
+
18
+ const {
19
+ state: {
20
+ tr
21
+ }
22
+ } = editorView;
23
+ const editorPlugins = getEditorPlugins();
24
+ handleInsertContent({
25
+ editorPlugins,
26
+ node,
27
+ options
28
+ })(tr); // TODO: ED-14676 This approach to send analytics should be temporary only for the table work
29
+
30
+ if (options.analyticsPayload) {
31
+ addAnalytics(editorView.state, tr, options.analyticsPayload);
32
+ }
33
+
34
+ editorView.dispatch(tr);
35
+ return true;
36
+ } // TODO: ED-14676 - Implement the append behavior
37
+ // append: ({ node, options }) => (tr) => {
38
+ // const editorPlugins = getEditorPlugins();
39
+ // return insertContent({ editorPlugins, node, options })(tr);
40
+ // },
41
+
42
+ };
43
+ };
@@ -0,0 +1,85 @@
1
+ import { insertProseMirrorContent } from './insert-node-helpers';
2
+ export const findCreateNodeHandler = ({
3
+ node,
4
+ editorPlugins
5
+ }) => {
6
+ var _editorPluginHandler$;
7
+
8
+ if (!node) {
9
+ return null;
10
+ }
11
+
12
+ const nodeName = typeof node === 'string' ? node : null;
13
+ const editorPluginHandler = nodeName ? editorPlugins.find(plugin => {
14
+ if (!plugin.nodes) {
15
+ return false;
16
+ }
17
+
18
+ return plugin.nodes().find(nodeConfig => nodeConfig.name === nodeName);
19
+ }) : null; // That is how we allow the insertion behavior to be extended. (for now)
20
+ // Any plugin, following the rank order and respecting the node name, can override the node insertion output.
21
+ // To guarantee an insertion
22
+
23
+ return (editorPluginHandler === null || editorPluginHandler === void 0 ? void 0 : (_editorPluginHandler$ = editorPluginHandler.pluginsOptions) === null || _editorPluginHandler$ === void 0 ? void 0 : _editorPluginHandler$.createNodeHandler) || null;
24
+ };
25
+ export const handleInsertContent = ({
26
+ node,
27
+ options,
28
+ editorPlugins
29
+ }) => tr => {
30
+ // TODO: ED-14676 - Probably, we should use the options.insertAt here
31
+ const position = tr.selection;
32
+ const createNodeHandler = findCreateNodeHandler({
33
+ node,
34
+ editorPlugins
35
+ });
36
+ const nodeName = typeof node === 'string' ? node : null; // TODO: ED-14676 Once we fix the coupled table code issue (ED-15503) we should enable this API to insert any ProseMirror Node
37
+ // if (node instanceof PMNode || node instanceof Fragment) {
38
+ // insertProseMirrorContent({
39
+ // tr,
40
+ // node,
41
+ // position,
42
+ // selectNodeInserted: options.selectNodeInserted,
43
+ // });
44
+ // } else
45
+
46
+ if (nodeName && createNodeHandler) {
47
+ const nodeOverride = createNodeHandler({
48
+ nodeName,
49
+ schema: tr.doc.type.schema
50
+ });
51
+ insertProseMirrorContent({
52
+ tr,
53
+ node: nodeOverride,
54
+ position,
55
+ selectNodeInserted: options.selectNodeInserted
56
+ });
57
+ } else if (nodeName) {
58
+ const nodeType = tr.doc.type.schema.nodes[nodeName];
59
+
60
+ if (!nodeType) {
61
+ return false;
62
+ }
63
+
64
+ insertProseMirrorContent({
65
+ tr,
66
+ node: nodeType.createAndFill(),
67
+ position,
68
+ selectNodeInserted: options.selectNodeInserted
69
+ });
70
+ } else {
71
+ return false;
72
+ } // TODO: ED-14676 Implement the attachPluginMessage behavior
73
+ // if (editorPluginHandler?.nodes && options.attachPluginMessage) {
74
+ // const pluginKey = editorPluginHandler
75
+ // .nodes()
76
+ // .find((nodeConfig) => nodeConfig.name === nodeName)?.pluginKey;
77
+ // if (pluginKey) {
78
+ // tr.setMeta(pluginKey, options.attachPluginMessage);
79
+ // }
80
+ // }
81
+
82
+
83
+ tr.scrollIntoView();
84
+ return true;
85
+ };
@@ -0,0 +1,149 @@
1
+ /* Copied from type-ahead */
2
+ import { TextSelection, NodeSelection } from 'prosemirror-state';
3
+ import { Node as PMNode, Slice, Fragment } from 'prosemirror-model';
4
+ import { normaliseNestedLayout } from '../utils/selection';
5
+ import { safeInsert } from '../utils/insert';
6
+
7
+ function findInsertPoint(doc, pos, nodeToInsert) {
8
+ const $pos = doc.resolve(pos);
9
+
10
+ const createInsertPosition = (from, to) => ({
11
+ from,
12
+ to: to || from
13
+ }); // Search for a valid position for nodeToInsert in progressively higher levels
14
+
15
+
16
+ for (let level = $pos.depth; level >= 0; level--) {
17
+ const nodeAtLevel = $pos.node(level); // Try to replace the empty paragraph in the level above
18
+ // Scenario:
19
+ // doc(
20
+ // table(
21
+ // row(
22
+ // cell(
23
+ // p('{<>}'),
24
+ // ),
25
+ // )
26
+ // )
27
+ // )
28
+
29
+ const levelAbove = Math.max(level - 1, 0);
30
+ const parentNode = $pos.node(levelAbove); // Special case: when this is true, the 'to' position should be the end
31
+ // of the empty paragraph
32
+
33
+ const isNodeAtLevelEmptyParagraph = nodeAtLevel.type.name === 'paragraph' && nodeAtLevel.content.size === 0;
34
+ const indexAtLevelAbove = $pos.index(levelAbove);
35
+ const canReplaceNodeAtLevelAbove = parentNode.canReplaceWith(indexAtLevelAbove, indexAtLevelAbove, nodeToInsert.type);
36
+
37
+ if (isNodeAtLevelEmptyParagraph && canReplaceNodeAtLevelAbove) {
38
+ const from = $pos.posAtIndex(indexAtLevelAbove, levelAbove);
39
+ return createInsertPosition(from, from + nodeAtLevel.nodeSize);
40
+ } // Try to insert this node right after the node in the level above
41
+ // Scenario:
42
+ // doc(
43
+ // panel(
44
+ // p('{<>}'),
45
+ // )
46
+ // )
47
+
48
+
49
+ const indexAfterAtLevelAbove = $pos.indexAfter(levelAbove);
50
+ const canInsertNodeAtLevelAbove = parentNode.canReplaceWith(indexAfterAtLevelAbove, indexAfterAtLevelAbove, nodeToInsert.type);
51
+
52
+ if (canInsertNodeAtLevelAbove) {
53
+ return createInsertPosition($pos.posAtIndex(indexAfterAtLevelAbove, levelAbove));
54
+ }
55
+ }
56
+
57
+ return createInsertPosition(0);
58
+ }
59
+
60
+ export const insertBlockNode = ({
61
+ node,
62
+ tr,
63
+ position
64
+ }) => {
65
+ const {
66
+ $from: {
67
+ pos: start
68
+ },
69
+ $to: {
70
+ pos: end
71
+ }
72
+ } = position;
73
+
74
+ if (node.isText) {
75
+ return tr.replaceWith(start, end, node);
76
+ }
77
+
78
+ if (node.isBlock) {
79
+ tr.delete(start, end);
80
+ const mappedStart = tr.mapping.map(start);
81
+ const nodeNormalized = normaliseNestedLayout(tr, node); // Handle edge cases for hr and mediaSingle
82
+
83
+ const inserted = safeInsert(nodeNormalized, mappedStart)(tr);
84
+
85
+ if (inserted) {
86
+ return tr;
87
+ }
88
+
89
+ const sliceInserted = Slice.maxOpen(Fragment.from(nodeNormalized));
90
+ const {
91
+ from,
92
+ to
93
+ } = findInsertPoint(tr.doc, mappedStart, nodeNormalized);
94
+ tr.replaceWith(from, to, node);
95
+ const openPosition = Math.min(from + (node.isAtom ? node.nodeSize : sliceInserted.openStart), tr.doc.content.size);
96
+ const FORWARD_DIRECTION = 1;
97
+ const nextSelection = TextSelection.findFrom(tr.doc.resolve(openPosition), FORWARD_DIRECTION, true);
98
+
99
+ if (nextSelection) {
100
+ return tr.setSelection(nextSelection);
101
+ }
102
+ }
103
+
104
+ return tr;
105
+ };
106
+ export const insertInlineNodeOrFragment = ({
107
+ maybeFragment,
108
+ tr,
109
+ position,
110
+ selectInlineNode
111
+ }) => {
112
+ const {
113
+ $from: {
114
+ pos: start
115
+ },
116
+ $to: {
117
+ pos: end
118
+ }
119
+ } = position;
120
+ const fragment = maybeFragment instanceof PMNode ? Fragment.from(maybeFragment) : maybeFragment;
121
+ tr.replaceWith(start, end, fragment);
122
+
123
+ if (selectInlineNode) {
124
+ return tr.setSelection(NodeSelection.create(tr.doc, start));
125
+ }
126
+
127
+ return tr.setSelection(TextSelection.near(tr.doc.resolve(start + fragment.size)));
128
+ };
129
+ export const insertProseMirrorContent = ({
130
+ tr,
131
+ node,
132
+ position,
133
+ selectNodeInserted
134
+ }) => {
135
+ if (node instanceof PMNode && node.isBlock) {
136
+ insertBlockNode({
137
+ node,
138
+ tr,
139
+ position
140
+ });
141
+ } else {
142
+ insertInlineNodeOrFragment({
143
+ maybeFragment: node,
144
+ tr,
145
+ position,
146
+ selectInlineNode: selectNodeInserted
147
+ });
148
+ }
149
+ };