@atlaskit/editor-core 181.0.1 → 182.0.1

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 (318) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/codemods/140.0.0-rc-kraken-fix-type-errors.ts +0 -2
  3. package/codemods/__tests__/next-remove-allow-more-text-colors-prop.ts +0 -17
  4. package/codemods/migrates/next-remove-allow-more-text-colors-prop.ts +0 -4
  5. package/dist/cjs/create-editor/sort-by-order.js +12 -0
  6. package/dist/cjs/editor-next/editor-migration-component.js +4 -1
  7. package/dist/cjs/editor-next/utils/deprecationWarnings.js +0 -5
  8. package/dist/cjs/labs/next/full-page.js +2 -1
  9. package/dist/cjs/labs/next/presets/default.js +2 -1
  10. package/dist/cjs/labs/next/presets/universal.js +7 -1
  11. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/index.js +2 -1
  12. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/styles.js +4 -7
  13. package/dist/cjs/plugins/analytics/plugin.js +6 -6
  14. package/dist/cjs/plugins/avatar-group/index.js +5 -2
  15. package/dist/cjs/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
  16. package/dist/cjs/plugins/base/index.js +4 -2
  17. package/dist/cjs/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
  18. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
  19. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/index.js +2 -8
  20. package/dist/cjs/plugins/border/index.js +20 -0
  21. package/dist/cjs/plugins/card/index.js +4 -2
  22. package/dist/cjs/plugins/card/toolbar.js +12 -15
  23. package/dist/cjs/plugins/card/ui/EditLinkToolbar.js +7 -3
  24. package/dist/cjs/plugins/code-block/toolbar.js +1 -1
  25. package/dist/cjs/plugins/collab-edit/analytics.js +2 -3
  26. package/dist/cjs/plugins/collab-edit/events/handlers.js +2 -2
  27. package/dist/cjs/plugins/collab-edit/events/initialize.js +3 -2
  28. package/dist/cjs/plugins/collab-edit/index.js +5 -3
  29. package/dist/cjs/plugins/collab-edit/plugin.js +4 -3
  30. package/dist/cjs/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
  31. package/dist/cjs/plugins/collab-edit/ui/avatars.js +2 -3
  32. package/dist/cjs/plugins/date/index.js +90 -64
  33. package/dist/cjs/plugins/editor-disabled/index.js +8 -0
  34. package/dist/cjs/plugins/expand/index.js +4 -1
  35. package/dist/cjs/plugins/expand/nodeviews/index.js +6 -7
  36. package/dist/cjs/plugins/expand/pm-plugins/main.js +5 -2
  37. package/dist/cjs/plugins/extension/extension-api.js +27 -14
  38. package/dist/cjs/plugins/extension/pm-plugins/main.js +117 -177
  39. package/dist/cjs/plugins/extension/pm-plugins/utils.js +80 -0
  40. package/dist/cjs/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +7 -11
  41. package/dist/cjs/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -4
  42. package/dist/cjs/plugins/find-replace/index.js +5 -2
  43. package/dist/cjs/plugins/floating-toolbar/index.js +15 -7
  44. package/dist/cjs/plugins/floating-toolbar/ui/CheckboxModal.js +2 -1
  45. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
  46. package/dist/cjs/plugins/floating-toolbar/ui/SimpleModal.js +2 -1
  47. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +6 -5
  48. package/dist/cjs/plugins/hyperlink/Toolbar.js +9 -12
  49. package/dist/cjs/plugins/hyperlink/index.js +6 -2
  50. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -4
  51. package/dist/cjs/plugins/index.js +7 -0
  52. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
  53. package/dist/cjs/plugins/list/actions/outdent-list-items-selected.js +5 -5
  54. package/dist/cjs/plugins/list/commands/index.js +31 -27
  55. package/dist/cjs/plugins/list/commands/outdent-list.js +2 -3
  56. package/dist/cjs/plugins/list/index.js +4 -3
  57. package/dist/cjs/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
  58. package/dist/cjs/plugins/list/pm-plugins/input-rules/index.js +2 -1
  59. package/dist/cjs/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +58 -0
  60. package/dist/cjs/plugins/list/pm-plugins/keymap.js +4 -4
  61. package/dist/cjs/plugins/list/pm-plugins/main.js +23 -21
  62. package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +6 -1
  63. package/dist/cjs/plugins/media/nodeviews/styles.js +13 -1
  64. package/dist/cjs/plugins/media/toolbar/commands.js +105 -2
  65. package/dist/cjs/plugins/media/toolbar/imageBorder.js +20 -0
  66. package/dist/cjs/plugins/media/toolbar/index.js +33 -4
  67. package/dist/cjs/plugins/media/ui/ImageBorder/index.js +219 -0
  68. package/dist/cjs/plugins/media/ui/ImageBorder/messages.js +50 -0
  69. package/dist/cjs/plugins/media/ui/ImageBorder/styles.js +54 -0
  70. package/dist/cjs/plugins/media/utils/current-media-node.js +28 -5
  71. package/dist/cjs/plugins/paste/util/index.js +2 -0
  72. package/dist/cjs/plugins/rank.js +1 -1
  73. package/dist/cjs/plugins/rule/pm-plugins/input-rule.js +5 -0
  74. package/dist/cjs/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
  75. package/dist/cjs/plugins/toolbar-lists-indentation/index.js +3 -1
  76. package/dist/cjs/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
  77. package/dist/cjs/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
  78. package/dist/cjs/plugins/toolbar-lists-indentation/ui/index.js +6 -3
  79. package/dist/cjs/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
  80. package/dist/cjs/test-utils.js +3 -1
  81. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
  82. package/dist/cjs/ui/styles.js +1 -1
  83. package/dist/cjs/utils/input-rules.js +0 -17
  84. package/dist/cjs/utils/insert.js +53 -7
  85. package/dist/cjs/version-wrapper.js +1 -1
  86. package/dist/cjs/version.json +1 -1
  87. package/dist/es2019/create-editor/sort-by-order.js +11 -0
  88. package/dist/es2019/editor-next/editor-migration-component.js +4 -1
  89. package/dist/es2019/editor-next/utils/deprecationWarnings.js +0 -5
  90. package/dist/es2019/labs/next/full-page.js +2 -1
  91. package/dist/es2019/labs/next/presets/default.js +2 -1
  92. package/dist/es2019/labs/next/presets/universal.js +8 -2
  93. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/index.js +3 -2
  94. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/styles.js +0 -8
  95. package/dist/es2019/plugins/analytics/plugin.js +45 -43
  96. package/dist/es2019/plugins/avatar-group/index.js +26 -21
  97. package/dist/es2019/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
  98. package/dist/es2019/plugins/base/index.js +101 -97
  99. package/dist/es2019/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
  100. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
  101. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/index.js +2 -7
  102. package/dist/es2019/plugins/border/index.js +11 -0
  103. package/dist/es2019/plugins/card/index.js +4 -2
  104. package/dist/es2019/plugins/card/toolbar.js +10 -11
  105. package/dist/es2019/plugins/card/ui/EditLinkToolbar.js +7 -3
  106. package/dist/es2019/plugins/code-block/toolbar.js +2 -2
  107. package/dist/es2019/plugins/collab-edit/analytics.js +2 -3
  108. package/dist/es2019/plugins/collab-edit/events/handlers.js +2 -2
  109. package/dist/es2019/plugins/collab-edit/events/initialize.js +3 -2
  110. package/dist/es2019/plugins/collab-edit/index.js +5 -3
  111. package/dist/es2019/plugins/collab-edit/plugin.js +4 -3
  112. package/dist/es2019/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
  113. package/dist/es2019/plugins/collab-edit/ui/avatars.js +2 -3
  114. package/dist/es2019/plugins/date/index.js +92 -64
  115. package/dist/es2019/plugins/editor-disabled/index.js +8 -0
  116. package/dist/es2019/plugins/expand/index.js +57 -53
  117. package/dist/es2019/plugins/expand/nodeviews/index.js +6 -9
  118. package/dist/es2019/plugins/expand/pm-plugins/main.js +5 -3
  119. package/dist/es2019/plugins/extension/extension-api.js +31 -13
  120. package/dist/es2019/plugins/extension/pm-plugins/main.js +77 -96
  121. package/dist/es2019/plugins/extension/pm-plugins/utils.js +30 -0
  122. package/dist/es2019/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +1 -8
  123. package/dist/es2019/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -3
  124. package/dist/es2019/plugins/find-replace/index.js +5 -2
  125. package/dist/es2019/plugins/floating-toolbar/index.js +159 -149
  126. package/dist/es2019/plugins/floating-toolbar/ui/CheckboxModal.js +4 -1
  127. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
  128. package/dist/es2019/plugins/floating-toolbar/ui/SimpleModal.js +4 -1
  129. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +6 -5
  130. package/dist/es2019/plugins/hyperlink/Toolbar.js +7 -9
  131. package/dist/es2019/plugins/hyperlink/index.js +66 -62
  132. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -3
  133. package/dist/es2019/plugins/index.js +2 -1
  134. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
  135. package/dist/es2019/plugins/list/actions/outdent-list-items-selected.js +5 -5
  136. package/dist/es2019/plugins/list/commands/index.js +4 -4
  137. package/dist/es2019/plugins/list/commands/outdent-list.js +2 -4
  138. package/dist/es2019/plugins/list/index.js +80 -77
  139. package/dist/es2019/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
  140. package/dist/es2019/plugins/list/pm-plugins/input-rules/index.js +2 -1
  141. package/dist/es2019/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +52 -0
  142. package/dist/es2019/plugins/list/pm-plugins/keymap.js +4 -4
  143. package/dist/es2019/plugins/list/pm-plugins/main.js +46 -46
  144. package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +4 -1
  145. package/dist/es2019/plugins/media/nodeviews/styles.js +12 -1
  146. package/dist/es2019/plugins/media/toolbar/commands.js +93 -0
  147. package/dist/es2019/plugins/media/toolbar/imageBorder.js +15 -0
  148. package/dist/es2019/plugins/media/toolbar/index.js +36 -5
  149. package/dist/es2019/plugins/media/ui/ImageBorder/index.js +206 -0
  150. package/dist/es2019/plugins/media/ui/ImageBorder/messages.js +43 -0
  151. package/dist/es2019/plugins/media/ui/ImageBorder/styles.js +124 -0
  152. package/dist/es2019/plugins/media/utils/current-media-node.js +22 -3
  153. package/dist/es2019/plugins/paste/util/index.js +2 -0
  154. package/dist/es2019/plugins/rank.js +1 -1
  155. package/dist/es2019/plugins/rule/pm-plugins/input-rule.js +7 -0
  156. package/dist/es2019/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
  157. package/dist/es2019/plugins/toolbar-lists-indentation/index.js +59 -55
  158. package/dist/es2019/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
  159. package/dist/es2019/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
  160. package/dist/es2019/plugins/toolbar-lists-indentation/ui/index.js +6 -3
  161. package/dist/es2019/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
  162. package/dist/es2019/test-utils.js +3 -1
  163. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
  164. package/dist/es2019/ui/styles.js +1 -0
  165. package/dist/es2019/utils/input-rules.js +0 -17
  166. package/dist/es2019/utils/insert.js +61 -10
  167. package/dist/es2019/version-wrapper.js +1 -1
  168. package/dist/es2019/version.json +1 -1
  169. package/dist/esm/create-editor/sort-by-order.js +11 -0
  170. package/dist/esm/editor-next/editor-migration-component.js +3 -0
  171. package/dist/esm/editor-next/utils/deprecationWarnings.js +0 -5
  172. package/dist/esm/labs/next/full-page.js +2 -1
  173. package/dist/esm/labs/next/presets/default.js +2 -1
  174. package/dist/esm/labs/next/presets/universal.js +8 -2
  175. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/index.js +3 -2
  176. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/styles.js +3 -5
  177. package/dist/esm/plugins/analytics/plugin.js +6 -6
  178. package/dist/esm/plugins/avatar-group/index.js +5 -2
  179. package/dist/esm/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
  180. package/dist/esm/plugins/base/index.js +4 -2
  181. package/dist/esm/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
  182. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
  183. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/index.js +2 -8
  184. package/dist/esm/plugins/border/index.js +13 -0
  185. package/dist/esm/plugins/card/index.js +4 -2
  186. package/dist/esm/plugins/card/toolbar.js +12 -15
  187. package/dist/esm/plugins/card/ui/EditLinkToolbar.js +7 -3
  188. package/dist/esm/plugins/code-block/toolbar.js +2 -2
  189. package/dist/esm/plugins/collab-edit/analytics.js +2 -3
  190. package/dist/esm/plugins/collab-edit/events/handlers.js +2 -2
  191. package/dist/esm/plugins/collab-edit/events/initialize.js +3 -2
  192. package/dist/esm/plugins/collab-edit/index.js +5 -3
  193. package/dist/esm/plugins/collab-edit/plugin.js +4 -3
  194. package/dist/esm/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
  195. package/dist/esm/plugins/collab-edit/ui/avatars.js +2 -3
  196. package/dist/esm/plugins/date/index.js +90 -64
  197. package/dist/esm/plugins/editor-disabled/index.js +8 -0
  198. package/dist/esm/plugins/expand/index.js +4 -1
  199. package/dist/esm/plugins/expand/nodeviews/index.js +6 -7
  200. package/dist/esm/plugins/expand/pm-plugins/main.js +5 -2
  201. package/dist/esm/plugins/extension/extension-api.js +24 -12
  202. package/dist/esm/plugins/extension/pm-plugins/main.js +113 -173
  203. package/dist/esm/plugins/extension/pm-plugins/utils.js +72 -0
  204. package/dist/esm/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +1 -10
  205. package/dist/esm/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -4
  206. package/dist/esm/plugins/find-replace/index.js +5 -2
  207. package/dist/esm/plugins/floating-toolbar/index.js +15 -7
  208. package/dist/esm/plugins/floating-toolbar/ui/CheckboxModal.js +2 -1
  209. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
  210. package/dist/esm/plugins/floating-toolbar/ui/SimpleModal.js +2 -1
  211. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +6 -5
  212. package/dist/esm/plugins/hyperlink/Toolbar.js +9 -13
  213. package/dist/esm/plugins/hyperlink/index.js +6 -2
  214. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -4
  215. package/dist/esm/plugins/index.js +2 -1
  216. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
  217. package/dist/esm/plugins/list/actions/outdent-list-items-selected.js +5 -5
  218. package/dist/esm/plugins/list/commands/index.js +31 -27
  219. package/dist/esm/plugins/list/commands/outdent-list.js +2 -3
  220. package/dist/esm/plugins/list/index.js +4 -3
  221. package/dist/esm/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
  222. package/dist/esm/plugins/list/pm-plugins/input-rules/index.js +2 -1
  223. package/dist/esm/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +51 -0
  224. package/dist/esm/plugins/list/pm-plugins/keymap.js +4 -4
  225. package/dist/esm/plugins/list/pm-plugins/main.js +23 -21
  226. package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +6 -1
  227. package/dist/esm/plugins/media/nodeviews/styles.js +13 -1
  228. package/dist/esm/plugins/media/toolbar/commands.js +99 -0
  229. package/dist/esm/plugins/media/toolbar/imageBorder.js +14 -0
  230. package/dist/esm/plugins/media/toolbar/index.js +34 -5
  231. package/dist/esm/plugins/media/ui/ImageBorder/index.js +211 -0
  232. package/dist/esm/plugins/media/ui/ImageBorder/messages.js +43 -0
  233. package/dist/esm/plugins/media/ui/ImageBorder/styles.js +37 -0
  234. package/dist/esm/plugins/media/utils/current-media-node.js +24 -3
  235. package/dist/esm/plugins/paste/util/index.js +2 -0
  236. package/dist/esm/plugins/rank.js +1 -1
  237. package/dist/esm/plugins/rule/pm-plugins/input-rule.js +5 -0
  238. package/dist/esm/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
  239. package/dist/esm/plugins/toolbar-lists-indentation/index.js +3 -1
  240. package/dist/esm/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
  241. package/dist/esm/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
  242. package/dist/esm/plugins/toolbar-lists-indentation/ui/index.js +6 -3
  243. package/dist/esm/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
  244. package/dist/esm/test-utils.js +3 -1
  245. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
  246. package/dist/esm/ui/styles.js +1 -1
  247. package/dist/esm/utils/input-rules.js +0 -17
  248. package/dist/esm/utils/insert.js +56 -10
  249. package/dist/esm/version-wrapper.js +1 -1
  250. package/dist/esm/version.json +1 -1
  251. package/dist/types/create-editor/sort-by-order.d.ts +9 -0
  252. package/dist/types/editor-next/editor-migration-component.d.ts +1 -0
  253. package/dist/types/labs/next/presets/cxhtml.d.ts +36 -2
  254. package/dist/types/labs/next/presets/default.d.ts +72 -4
  255. package/dist/types/labs/next/presets/mobile.d.ts +36 -2
  256. package/dist/types/plugins/alignment/ui/ToolbarAlignment/styles.d.ts +0 -1
  257. package/dist/types/plugins/analytics/plugin.d.ts +2 -0
  258. package/dist/types/plugins/avatar-group/index.d.ts +2 -0
  259. package/dist/types/plugins/avatar-group/ui/AvatarGroupPluginWrapper.d.ts +2 -0
  260. package/dist/types/plugins/base/index.d.ts +2 -0
  261. package/dist/types/plugins/base/pm-plugins/disable-spell-checking.d.ts +2 -1
  262. package/dist/types/plugins/border/index.d.ts +3 -0
  263. package/dist/types/plugins/card/index.d.ts +2 -0
  264. package/dist/types/plugins/card/toolbar.d.ts +2 -1
  265. package/dist/types/plugins/card/ui/EditLinkToolbar.d.ts +5 -2
  266. package/dist/types/plugins/collab-edit/analytics.d.ts +2 -1
  267. package/dist/types/plugins/collab-edit/events/handlers.d.ts +2 -1
  268. package/dist/types/plugins/collab-edit/events/initialize.d.ts +3 -1
  269. package/dist/types/plugins/collab-edit/index.d.ts +2 -0
  270. package/dist/types/plugins/collab-edit/plugin.d.ts +2 -1
  271. package/dist/types/plugins/collab-edit/ui/avatars-with-plugin-state.d.ts +4 -0
  272. package/dist/types/plugins/collab-edit/ui/avatars.d.ts +2 -0
  273. package/dist/types/plugins/date/index.d.ts +9 -1
  274. package/dist/types/plugins/editor-disabled/index.d.ts +3 -1
  275. package/dist/types/plugins/expand/index.d.ts +2 -0
  276. package/dist/types/plugins/expand/nodeviews/index.d.ts +5 -2
  277. package/dist/types/plugins/expand/pm-plugins/main.d.ts +2 -1
  278. package/dist/types/plugins/extension/pm-plugins/main.d.ts +8 -2
  279. package/dist/types/plugins/extension/pm-plugins/utils.d.ts +3 -0
  280. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -7
  281. package/dist/types/plugins/find-replace/FindReplaceToolbarButtonWithState.d.ts +2 -0
  282. package/dist/types/plugins/find-replace/index.d.ts +2 -0
  283. package/dist/types/plugins/floating-toolbar/index.d.ts +4 -1
  284. package/dist/types/plugins/floating-toolbar/ui/Toolbar.d.ts +2 -0
  285. package/dist/types/plugins/hyperlink/Toolbar.d.ts +2 -1
  286. package/dist/types/plugins/hyperlink/index.d.ts +2 -0
  287. package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/index.d.ts +2 -0
  288. package/dist/types/plugins/index.d.ts +1 -0
  289. package/dist/types/plugins/list/actions/outdent-list-items-selected.d.ts +2 -1
  290. package/dist/types/plugins/list/commands/index.d.ts +3 -2
  291. package/dist/types/plugins/list/commands/outdent-list.d.ts +2 -1
  292. package/dist/types/plugins/list/index.d.ts +2 -0
  293. package/dist/types/plugins/list/pm-plugins/input-rules/create-list-input-rule.d.ts +1 -1
  294. package/dist/types/plugins/list/pm-plugins/input-rules/wrapping-join-rule.d.ts +13 -0
  295. package/dist/types/plugins/list/pm-plugins/keymap.d.ts +2 -1
  296. package/dist/types/plugins/list/pm-plugins/main.d.ts +3 -2
  297. package/dist/types/plugins/media/nodeviews/styles.d.ts +3 -1
  298. package/dist/types/plugins/media/toolbar/commands.d.ts +5 -0
  299. package/dist/types/plugins/media/toolbar/imageBorder.d.ts +2 -0
  300. package/dist/types/plugins/media/types.d.ts +3 -0
  301. package/dist/types/plugins/media/ui/ImageBorder/index.d.ts +13 -0
  302. package/dist/types/plugins/media/ui/ImageBorder/messages.d.ts +42 -0
  303. package/dist/types/plugins/media/ui/ImageBorder/styles.d.ts +15 -0
  304. package/dist/types/plugins/media/utils/current-media-node.d.ts +6 -0
  305. package/dist/types/plugins/text-color/pm-plugins/main.d.ts +0 -2
  306. package/dist/types/plugins/toolbar-lists-indentation/index.d.ts +2 -0
  307. package/dist/types/plugins/toolbar-lists-indentation/types.d.ts +2 -0
  308. package/dist/types/plugins/toolbar-lists-indentation/ui/index.d.ts +2 -0
  309. package/dist/types/plugins/toolbar-lists-indentation/ui/onItemActivated.d.ts +3 -1
  310. package/dist/types/test-utils.d.ts +4 -2
  311. package/dist/types/types/editor-props.d.ts +5 -0
  312. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +5 -5
  313. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  314. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  315. package/package.json +12 -11
  316. package/report.api.md +12 -4
  317. package/codemods/__tests__/rename-experimental-text-color-prop.ts +0 -204
  318. package/codemods/migrates/rename-experimental-text-color-prop.ts +0 -6
@@ -0,0 +1,43 @@
1
+ import { defineMessages } from 'react-intl-next';
2
+ export const messages = defineMessages({
3
+ borderColor: {
4
+ id: 'fabric.editor.imageBorderColor',
5
+ defaultMessage: 'Color',
6
+ description: 'Change the border color of an image.'
7
+ },
8
+ borderSize: {
9
+ id: 'fabric.editor.imageBorderSize',
10
+ defaultMessage: 'Size',
11
+ description: 'Change the border size of an image.'
12
+ },
13
+ addBorder: {
14
+ id: 'fabric.editor.addImageBorder',
15
+ defaultMessage: 'Add border',
16
+ description: 'Add a border to an image.'
17
+ },
18
+ removeBorder: {
19
+ id: 'fabric.editor.removeImageBorder',
20
+ defaultMessage: 'Remove border',
21
+ description: 'Remove the border of an image.'
22
+ },
23
+ borderOptions: {
24
+ id: 'fabric.editor.imageBorderOptions',
25
+ defaultMessage: 'Border options',
26
+ description: 'Display options available for customizing the border of an image.'
27
+ },
28
+ borderSizeSubtle: {
29
+ id: 'fabric.editor.imageBorderSubtle',
30
+ defaultMessage: 'Subtle',
31
+ description: 'Name of a border size.'
32
+ },
33
+ borderSizeMedium: {
34
+ id: 'fabric.editor.imageBorderMedium',
35
+ defaultMessage: 'Medium',
36
+ description: 'Name of a border size.'
37
+ },
38
+ borderSizeBold: {
39
+ id: 'fabric.editor.imageBorderBold',
40
+ defaultMessage: 'Bold',
41
+ description: 'Name of a border size.'
42
+ }
43
+ });
@@ -0,0 +1,124 @@
1
+ import { css } from '@emotion/react';
2
+ import * as colors from '@atlaskit/theme/colors';
3
+ import { DEFAULT_BORDER_COLOR } from '@atlaskit/editor-common/ui-color';
4
+ import { N20A, N50, N60A, N90, N800, N0 } from '@atlaskit/theme/colors';
5
+ import { gridSize } from '@atlaskit/theme/constants';
6
+
7
+ // menuItemDimensions and itemSpacing are copied from
8
+ // packages/editor/editor-core/src/plugins/floating-toolbar/ui/DropdownMenu.tsx
9
+
10
+ export const menuItemDimensions = {
11
+ width: 175,
12
+ height: 32
13
+ };
14
+ export const itemSpacing = gridSize() / 2;
15
+ export const contextualMenuArrow = css`
16
+ display: flex;
17
+ &::after {
18
+ content: '›';
19
+ margin-left: 4px;
20
+ line-height: 20px;
21
+ color: ${`var(--ds-icon, ${N90})`};
22
+ }
23
+ `;
24
+ export const contextualMenuColorIcon = color => css`
25
+ ${contextualMenuArrow}
26
+ &::before {
27
+ content: '';
28
+ display: block;
29
+ border: 1px solid ${DEFAULT_BORDER_COLOR};
30
+ border-radius: ${"var(--ds-radius-100, 3px)"};
31
+ width: 20px;
32
+ height: 20px;
33
+ ${color && `background: ${color}`}
34
+ }
35
+ `;
36
+ export const contextualSubMenu = index => css`
37
+ border-radius: ${"var(--ds-radius-100, 3px)"};
38
+ background: ${"var(--ds-surface-overlay, white)"};
39
+ box-shadow: ${`var(--ds-shadow-overlay, ${`0 4px 8px -2px ${N60A}, 0 0 1px ${N60A}`})`};
40
+ display: flex;
41
+ position: absolute;
42
+ top: ${index * (menuItemDimensions.height + itemSpacing * 2)}px;
43
+ left: ${menuItemDimensions.width}px;
44
+ padding: 8px;
45
+
46
+ > div {
47
+ padding: 0;
48
+ }
49
+ `;
50
+ export const buttonStyle = selected => css`
51
+ height: 26px;
52
+ width: 26px;
53
+ padding: 0;
54
+ border-radius: 4px;
55
+ background-color: ${selected ? `var(--ds-text, ${N800})` : `var(--ds-background-neutral, ${N20A})`};
56
+ border: 1px solid ${DEFAULT_BORDER_COLOR};
57
+ cursor: pointer;
58
+ display: block;
59
+ `;
60
+
61
+ /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
62
+ export const buttonWrapperStyle = css`
63
+ border: 1px solid transparent;
64
+ margin: 1px;
65
+ font-size: 0;
66
+ display: flex;
67
+ align-items: center;
68
+ padding: 1px;
69
+ border-radius: 6px;
70
+ &:focus-within,
71
+ &:focus,
72
+ &:hover {
73
+ border-color: ${N50} !important;
74
+ }
75
+ `;
76
+ export const line = (size, selected) => css`
77
+ position: relative;
78
+ &:before {
79
+ content: '';
80
+ display: block;
81
+ position: absolute;
82
+ top: 50%;
83
+ left: 50%;
84
+ width: 12px;
85
+ height: ${size}px;
86
+ background-color: ${selected ? `var(--ds-icon-inverse, ${N0})` : "var(--ds-icon, #44546F)"};
87
+ border-radius: 90px;
88
+ transform: translate(-50%, -50%) rotate(135deg);
89
+ }
90
+ `;
91
+ export const toolbarButtonWrapper = ({
92
+ enabled,
93
+ isOpen
94
+ }) => css`
95
+ display: flex;
96
+ .image-border-toolbar-btn {
97
+ border-top-right-radius: 0;
98
+ border-bottom-right-radius: 0;
99
+ padding: 0;
100
+ & > span {
101
+ margin: 0;
102
+ }
103
+ }
104
+ .image-border-toolbar-dropdown {
105
+ padding: 0;
106
+ & > span {
107
+ margin: 0;
108
+ }
109
+ width: 16px !important;
110
+ border-top-left-radius: 0 !important;
111
+ border-bottom-left-radius: 0 !important;
112
+ margin-left: 1px;
113
+ }
114
+
115
+ &:hover {
116
+ .image-border-toolbar-btn {
117
+ ${!enabled && ` background: ${`var(--ds-background-neutral-subtle-hovered, ${colors.N30A})`};`}
118
+ }
119
+
120
+ .image-border-toolbar-dropdown {
121
+ ${!isOpen && `background: ${`var(--ds-background-neutral-subtle-hovered, ${colors.N30A})`};`}
122
+ }
123
+ }
124
+ `;
@@ -1,5 +1,5 @@
1
1
  import { NodeSelection } from 'prosemirror-state';
2
- export const currentMediaNode = editorState => {
2
+ export const currentMediaNodeWithPos = editorState => {
3
3
  const {
4
4
  doc,
5
5
  selection,
@@ -8,9 +8,28 @@ export const currentMediaNode = editorState => {
8
8
  if (!doc || !selection || !(selection instanceof NodeSelection) || selection.node.type !== schema.nodes.mediaSingle) {
9
9
  return;
10
10
  }
11
- const node = doc.nodeAt(selection.$anchor.pos + 1);
11
+ const pos = selection.$anchor.pos + 1;
12
+ const node = doc.nodeAt(pos);
12
13
  if (!node || node.type !== schema.nodes.media) {
13
14
  return;
14
15
  }
15
- return node;
16
+ return {
17
+ node,
18
+ pos
19
+ };
20
+ };
21
+ export const currentMediaNode = editorState => {
22
+ var _currentMediaNodeWith;
23
+ return (_currentMediaNodeWith = currentMediaNodeWithPos(editorState)) === null || _currentMediaNodeWith === void 0 ? void 0 : _currentMediaNodeWith.node;
24
+ };
25
+ export const currentMediaNodeBorderMark = editorState => {
26
+ const node = currentMediaNode(editorState);
27
+ if (!node) {
28
+ return;
29
+ }
30
+ const borderMark = node.marks.find(m => m.type.name === 'border');
31
+ if (!borderMark) {
32
+ return;
33
+ }
34
+ return borderMark.attrs;
16
35
  };
@@ -4,6 +4,7 @@ import { ACTION_SUBJECT, addAnalytics, EVENT_TYPE, INPUT_METHOD, TABLE_ACTION }
4
4
  import { TextSelection, NodeSelection } from 'prosemirror-state';
5
5
  import { findParentNodeOfType } from 'prosemirror-utils';
6
6
  import { getSelectedTableInfo, isTableSelected } from '@atlaskit/editor-tables/utils';
7
+ import { sortByOrderWithTypeName } from '../../../create-editor/sort-by-order';
7
8
  export function isPastedFromWord(html) {
8
9
  return !!html && html.indexOf('urn:schemas-microsoft-com:office:word') >= 0;
9
10
  }
@@ -93,6 +94,7 @@ export function applyTextMarksToSlice(schema, marks) {
93
94
  // add marks to a slice if they're allowed in parent node
94
95
  // and exclude link marks
95
96
  ...parent.type.allowedMarks(marks).filter(mark => mark.type !== linkMark)];
97
+ node.marks.sort(sortByOrderWithTypeName('marks'));
96
98
  return false;
97
99
  }
98
100
  return true;
@@ -21,7 +21,7 @@ export default {
21
21
  // Inline marks
22
22
  'link', 'em', 'strong', 'textColor', 'strike', 'subsup', 'underline', 'code', 'typeAheadQuery',
23
23
  // Block marks
24
- 'alignment', 'breakout', 'indentation', 'annotation', 'dataConsumer',
24
+ 'alignment', 'breakout', 'indentation', 'annotation', 'dataConsumer', 'border',
25
25
  // Unsupported mark
26
26
  'unsupportedMark', 'unsupportedNodeAttribute']
27
27
  };
@@ -2,6 +2,7 @@ import { Fragment, Slice } from 'prosemirror-model';
2
2
  import { createRule, createPlugin } from '../../../utils/input-rules';
3
3
  import { leafNodeReplacementCharacter } from '@atlaskit/prosemirror-input-rules';
4
4
  import { safeInsert } from '../../../utils/insert';
5
+ import { hasParentNodeOfType } from 'prosemirror-utils';
5
6
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, addAnalytics, EVENT_TYPE, INPUT_METHOD } from '../../analytics';
6
7
  import { getFeatureFlags } from '../../feature-flags-context';
7
8
  export const createHorizontalRule = (state, start, end, inputMethod) => {
@@ -38,6 +39,12 @@ export const createHorizontalRule = (state, start, end, inputMethod) => {
38
39
  });
39
40
  };
40
41
  const createHorizontalRuleAutoformat = (state, start, end) => {
42
+ const {
43
+ listItem
44
+ } = state.schema.nodes;
45
+ if (hasParentNodeOfType(listItem)(state.selection)) {
46
+ return null;
47
+ }
41
48
  return createHorizontalRule(state, start, end, INPUT_METHOD.FORMATTING);
42
49
  };
43
50
  export function inputRulePlugin(schema, featureFlags) {
@@ -34,7 +34,8 @@ export const useClearIcon = ({
34
34
  name: 'clearFormatting'
35
35
  },
36
36
  isActive: false,
37
- isDisabled: !formattingIsPresent
37
+ isDisabled: !formattingIsPresent,
38
+ 'aria-label': clearFormattingKeymap ? tooltip(clearFormattingKeymap, String(clearFormattingLabel)) : String(clearFormattingLabel)
38
39
  };
39
40
  }, [clearFormattingLabel, isPluginAvailable, formattingIsPresent]);
40
41
  };
@@ -7,60 +7,64 @@ import { pluginKey as indentationButtonsPluginKey, createPlugin as indentationBu
7
7
  const toolbarListsIndentationPlugin = ({
8
8
  showIndentationButtons,
9
9
  allowHeadingAndParagraphIndentation
10
- }) => ({
11
- name: 'toolbarListsIndentation',
12
- pmPlugins() {
13
- return [{
14
- name: 'indentationButtons',
15
- plugin: ({
16
- dispatch
17
- }) => indentationButtonsPlugin({
18
- dispatch,
19
- showIndentationButtons,
20
- allowHeadingAndParagraphIndentation
21
- })
22
- }];
23
- },
24
- primaryToolbarComponent({
25
- editorView,
26
- popupsMountPoint,
27
- popupsBoundariesElement,
28
- popupsScrollableElement,
29
- toolbarSize,
30
- disabled,
31
- isToolbarReducedSpacing
32
- }) {
33
- const isSmall = toolbarSize < ToolbarSize.L;
34
- return /*#__PURE__*/React.createElement(WithPluginState, {
35
- plugins: {
36
- listState: listPluginKey,
37
- indentationState: indentationButtonsPluginKey
38
- },
39
- render: ({
40
- listState,
41
- indentationState
42
- }) => {
43
- if (!listState) {
44
- return null;
10
+ }, api) => {
11
+ const featureFlags = (api === null || api === void 0 ? void 0 : api.dependencies.featureFlags.sharedState.currentState()) || {};
12
+ return {
13
+ name: 'toolbarListsIndentation',
14
+ pmPlugins() {
15
+ return [{
16
+ name: 'indentationButtons',
17
+ plugin: ({
18
+ dispatch
19
+ }) => indentationButtonsPlugin({
20
+ dispatch,
21
+ showIndentationButtons,
22
+ allowHeadingAndParagraphIndentation
23
+ })
24
+ }];
25
+ },
26
+ primaryToolbarComponent({
27
+ editorView,
28
+ popupsMountPoint,
29
+ popupsBoundariesElement,
30
+ popupsScrollableElement,
31
+ toolbarSize,
32
+ disabled,
33
+ isToolbarReducedSpacing
34
+ }) {
35
+ const isSmall = toolbarSize < ToolbarSize.L;
36
+ return /*#__PURE__*/React.createElement(WithPluginState, {
37
+ plugins: {
38
+ listState: listPluginKey,
39
+ indentationState: indentationButtonsPluginKey
40
+ },
41
+ render: ({
42
+ listState,
43
+ indentationState
44
+ }) => {
45
+ if (!listState) {
46
+ return null;
47
+ }
48
+ return /*#__PURE__*/React.createElement(ToolbarListsIndentation, {
49
+ featureFlags: featureFlags,
50
+ isSmall: isSmall,
51
+ isReducedSpacing: isToolbarReducedSpacing,
52
+ disabled: disabled,
53
+ editorView: editorView,
54
+ popupsMountPoint: popupsMountPoint,
55
+ popupsBoundariesElement: popupsBoundariesElement,
56
+ popupsScrollableElement: popupsScrollableElement,
57
+ bulletListActive: listState.bulletListActive,
58
+ bulletListDisabled: listState.bulletListDisabled,
59
+ orderedListActive: listState.orderedListActive,
60
+ orderedListDisabled: listState.orderedListDisabled,
61
+ showIndentationButtons: !!showIndentationButtons,
62
+ indentDisabled: indentationState.indentDisabled,
63
+ outdentDisabled: indentationState.outdentDisabled
64
+ });
45
65
  }
46
- return /*#__PURE__*/React.createElement(ToolbarListsIndentation, {
47
- isSmall: isSmall,
48
- isReducedSpacing: isToolbarReducedSpacing,
49
- disabled: disabled,
50
- editorView: editorView,
51
- popupsMountPoint: popupsMountPoint,
52
- popupsBoundariesElement: popupsBoundariesElement,
53
- popupsScrollableElement: popupsScrollableElement,
54
- bulletListActive: listState.bulletListActive,
55
- bulletListDisabled: listState.bulletListDisabled,
56
- orderedListActive: listState.orderedListActive,
57
- orderedListDisabled: listState.orderedListDisabled,
58
- showIndentationButtons: !!showIndentationButtons,
59
- indentDisabled: indentationState.indentDisabled,
60
- outdentDisabled: indentationState.outdentDisabled
61
- });
62
- }
63
- });
64
- }
65
- });
66
+ });
67
+ }
68
+ };
69
+ };
66
70
  export default toolbarListsIndentationPlugin;
@@ -38,7 +38,8 @@ export function Toolbar(props) {
38
38
  const isOutdentButtonFocused = document.activeElement === outdentButtonRef.current;
39
39
  const handleOnItemActivated = buttonName => event => onItemActivated({
40
40
  editorView: props.editorView,
41
- buttonName
41
+ buttonName,
42
+ featureFlags: props.featureFlags
42
43
  });
43
44
  useEffect(() => {
44
45
  if (isIndentButtonFocused && indentDisabled && outdentButtonRef.current) {
@@ -50,7 +50,8 @@ export function ToolbarDropdown(props) {
50
50
  setIsDropdownOpen(!shouldCloseMenu);
51
51
  return onItemActivated({
52
52
  editorView: props.editorView,
53
- buttonName: item.value.name
53
+ buttonName: item.value.name,
54
+ featureFlags: props.featureFlags
54
55
  });
55
56
  };
56
57
  return jsx("span", {
@@ -17,7 +17,8 @@ export default function ToolbarListsIndentation(props) {
17
17
  popupsBoundariesElement,
18
18
  popupsScrollableElement,
19
19
  indentDisabled,
20
- outdentDisabled
20
+ outdentDisabled,
21
+ featureFlags
21
22
  } = props;
22
23
  if (isSmall) {
23
24
  return jsx(ToolbarDropdown, {
@@ -34,7 +35,8 @@ export default function ToolbarListsIndentation(props) {
34
35
  indentDisabled: indentDisabled,
35
36
  outdentDisabled: outdentDisabled,
36
37
  disabled: disabled,
37
- onItemActivated: onItemActivated
38
+ onItemActivated: onItemActivated,
39
+ featureFlags: featureFlags
38
40
  });
39
41
  }
40
42
  return jsx(Toolbar, {
@@ -48,6 +50,7 @@ export default function ToolbarListsIndentation(props) {
48
50
  indentDisabled: indentDisabled,
49
51
  outdentDisabled: outdentDisabled,
50
52
  disabled: disabled,
51
- onItemActivated: onItemActivated
53
+ onItemActivated: onItemActivated,
54
+ featureFlags: featureFlags
52
55
  });
53
56
  }
@@ -5,7 +5,8 @@ import { INPUT_METHOD } from '../../analytics';
5
5
  import { pluginKey as indentationButtonsPluginKey } from '../pm-plugins/indentation-buttons';
6
6
  export function onItemActivated({
7
7
  buttonName,
8
- editorView
8
+ editorView,
9
+ featureFlags
9
10
  }) {
10
11
  switch (buttonName) {
11
12
  case 'bullet_list':
@@ -35,7 +36,7 @@ export function onItemActivated({
35
36
  outdentParagraphOrHeading(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
36
37
  }
37
38
  if (node === 'list') {
38
- outdentList(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
39
+ outdentList(INPUT_METHOD.TOOLBAR, featureFlags)(editorView.state, editorView.dispatch);
39
40
  }
40
41
  if (node === 'taskList') {
41
42
  outdentTaskList(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
@@ -52,7 +52,9 @@ function lightProcessPluginsList(editorPlugins) {
52
52
  export const createPMSchemaAndPlugins = (inputPreset = new EditorPresetBuilder()) => pluginFactoryParams => {
53
53
  let editorPlugins = [];
54
54
  const preset = inputPreset.has(basePlugin) ? inputPreset : inputPreset.add(basePlugin);
55
- editorPlugins = preset.build();
55
+ editorPlugins = preset.build({
56
+ pluginInjectionAPI: pluginFactoryParams.pluginInjectionAPI
57
+ });
56
58
  const editorConfig = lightProcessPluginsList(editorPlugins);
57
59
  const schema = createSchema(editorConfig);
58
60
  const plugins = editorConfig.plugins.sort(sortByOrder('plugins')).map(({
@@ -42,14 +42,16 @@ export const EditorToolbar = /*#__PURE__*/React.memo(props => {
42
42
  eventDispatcher: props.eventDispatcher,
43
43
  inviteToEditComponent: (_props$collabEdit = props.collabEdit) === null || _props$collabEdit === void 0 ? void 0 : _props$collabEdit.inviteToEditComponent,
44
44
  inviteToEditHandler: (_props$collabEdit2 = props.collabEdit) === null || _props$collabEdit2 === void 0 ? void 0 : _props$collabEdit2.inviteToEditHandler,
45
- isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected
45
+ isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected,
46
+ featureFlags: props.featureFlags || {}
46
47
  }), (_props$featureFlags5 = props.featureFlags) !== null && _props$featureFlags5 !== void 0 && _props$featureFlags5.findReplace && (_props$featureFlags6 = props.featureFlags) !== null && _props$featureFlags6 !== void 0 && _props$featureFlags6.twoLineEditorToolbar ? jsx(FindReplaceToolbarButtonWithState, {
47
48
  popupsBoundariesElement: props.popupsBoundariesElement,
48
49
  popupsMountPoint: props.popupsMountPoint,
49
50
  popupsScrollableElement: props.popupsScrollableElement,
50
51
  editorView: props.editorView,
51
52
  containerElement: props.containerElement,
52
- dispatchAnalyticsEvent: props.dispatchAnalyticsEvent
53
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
54
+ featureFlags: props.featureFlags
53
55
  }) : null, !!props.customPrimaryToolbarComponents && 'after' in props.customPrimaryToolbarComponents ? props.customPrimaryToolbarComponents.after : props.customPrimaryToolbarComponents);
54
56
  useEffect(() => {
55
57
  var _props$featureFlags7;
@@ -16,6 +16,7 @@ export const separatorStyles = css`
16
16
  height: 24px;
17
17
  display: inline-block;
18
18
  margin: 0 8px;
19
+ user-select: none;
19
20
  `;
20
21
  export const wrapperStyle = css`
21
22
  display: flex;
@@ -5,8 +5,6 @@ import { createInputRulePlugin } from '@atlaskit/prosemirror-input-rules';
5
5
  import { addAnalytics } from '../plugins/analytics';
6
6
  import { JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST } from '@atlaskit/editor-common/analytics';
7
7
  import { closeHistory } from 'prosemirror-history';
8
- import { findParentNodeOfTypeClosestToPos } from 'prosemirror-utils';
9
- import { getFeatureFlags } from '../plugins/feature-flags-context';
10
8
  export const ruleWithAnalytics = getPayload => {
11
9
  return originalRule => {
12
10
  const onHandlerApply = (state, tr, matchResult) => {
@@ -98,21 +96,6 @@ export const createWrappingJoinRule = ({
98
96
  tr.setNodeMarkup(parentNodePosMapped, parentNode.type, parentNode.attrs, allowedMarks);
99
97
  }
100
98
  tr.wrap(range, wrapping);
101
- const featureFlags = getFeatureFlags(state);
102
- if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists && nodeType === state.schema.nodes.orderedList) {
103
- // if an orderedList node would be inserted by the input rule match, and
104
- // that orderedList node is being added directly before another orderedList
105
- // node, then join those nodes
106
- const $end = tr.doc.resolve(tr.mapping.map(end));
107
- const node = findParentNodeOfTypeClosestToPos($end, nodeType);
108
- if (node) {
109
- const nodeEnd = node.pos + node.node.nodeSize;
110
- const after = tr.doc.resolve(nodeEnd).nodeAfter;
111
- if (after && after.type === nodeType && canJoin(tr.doc, nodeEnd) && (!joinPredicate || joinPredicate(match, after, JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST.JOINED_TO_LIST_BELOW))) {
112
- tr.join(nodeEnd);
113
- }
114
- }
115
- }
116
99
  const before = tr.doc.resolve(fixedStart - 1).nodeBefore;
117
100
  if (before && before.type === nodeType && canJoin(tr.doc, fixedStart - 1) && (!joinPredicate || joinPredicate(match, before, JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST.JOINED_TO_LIST_ABOVE))) {
118
101
  tr.join(fixedStart - 1);
@@ -1,10 +1,11 @@
1
- import { isNodeSelection, canInsert, hasParentNodeOfType, safeInsert as pmSafeInsert } from 'prosemirror-utils';
2
- import { Node, Fragment } from 'prosemirror-model';
3
- import { NodeSelection, Selection } from 'prosemirror-state';
1
+ import { isNodeSelection, canInsert, safeInsert as pmSafeInsert, hasParentNodeOfType, findParentNodeOfType } from 'prosemirror-utils';
2
+ import { Node, Fragment, Slice } from 'prosemirror-model';
3
+ import { NodeSelection, Selection, TextSelection } from 'prosemirror-state';
4
4
  import { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform';
5
5
  import { isEmptyParagraph } from './document';
6
6
  import { GapCursorSelection, Side } from '../plugins/selection/gap-cursor-selection';
7
7
  import { normaliseNestedLayout } from './selection';
8
+ import { isListItemNode } from '../plugins/list/utils/node';
8
9
  export let LookDirection;
9
10
  (function (LookDirection) {
10
11
  LookDirection["Before"] = "before";
@@ -18,6 +19,22 @@ const nodeIsInsideAList = tr => {
18
19
  } = tr.doc.type.schema;
19
20
  return hasParentNodeOfType([nodes.orderedList, nodes.bulletList])(tr.selection);
20
21
  };
22
+ const selectionIsInsideAPanel = tr => {
23
+ const {
24
+ nodes
25
+ } = tr.doc.type.schema;
26
+ return hasParentNodeOfType(nodes.panel)(tr.selection);
27
+ };
28
+ const selectionIsInNestedList = tr => {
29
+ const {
30
+ nodes
31
+ } = tr.doc.type.schema;
32
+ const parentListNode = findParentNodeOfType([nodes.orderedList, nodes.bulletList])(tr.selection);
33
+ if (!parentListNode) {
34
+ return false;
35
+ }
36
+ return isListItemNode(tr.doc.resolve(parentListNode.pos).parent);
37
+ };
21
38
  const insertBeforeOrAfter = (tr, lookDirection, $parentPos, $proposedPosition, content) => {
22
39
  /**
23
40
  * This block caters for the first item in a parent with the cursor being at the very start
@@ -46,9 +63,7 @@ export const safeInsert = (content, position) => tr => {
46
63
  nodes
47
64
  } = tr.doc.type.schema;
48
65
  const whitelist = [nodes.rule, nodes.mediaSingle];
49
-
50
- // fallback if the node to insert is not in the whitelist, or if the insertion should happen within a list.
51
- if (content instanceof Fragment || !whitelist.includes(content.type) || nodeIsInsideAList(tr)) {
66
+ if (content instanceof Fragment || !whitelist.includes(content.type)) {
52
67
  return null;
53
68
  }
54
69
 
@@ -82,14 +97,29 @@ export const safeInsert = (content, position) => tr => {
82
97
  }
83
98
  const grandParentNodeType = (_tr$selection$$from$n = tr.selection.$from.node(-1)) === null || _tr$selection$$from$n === void 0 ? void 0 : _tr$selection$$from$n.type;
84
99
  const parentNodeType = tr.selection.$from.parent.type;
85
- if (!lookDirection && !shouldSplitSelectedNodeOnNodeInsertion({
100
+
101
+ // if there is no direction, and cannot split for this particular node
102
+ const noDirectionAndShouldNotSplit = !lookDirection && !shouldSplitSelectedNodeOnNodeInsertion({
86
103
  parentNodeType,
87
104
  grandParentNodeType,
88
105
  content
89
- })) {
106
+ });
107
+ const ruleNodeInANestedListNode = content.type === nodes.rule && selectionIsInNestedList(tr);
108
+ const nonRuleNodeInListNode = !(content.type === nodes.rule) && nodeIsInsideAList(tr);
109
+ if (ruleNodeInANestedListNode || noDirectionAndShouldNotSplit && nonRuleNodeInListNode || noDirectionAndShouldNotSplit && !nodeIsInsideAList(tr)) {
90
110
  // node to be inserted is an invalid child of selection so insert below selected node
91
111
  return pmSafeInsert(content, tr.selection.from)(tr);
92
112
  }
113
+
114
+ // if node is a rule and that is a flat list splitting and not at the end of a list
115
+ const {
116
+ from,
117
+ to
118
+ } = tr.selection;
119
+ const ruleTypeInAList = content.type === nodes.rule && nodeIsInsideAList(tr);
120
+ if (ruleTypeInAList && !($insertPos.pos === insertPosEnd)) {
121
+ return tr.replaceRange(from, to, new Slice(Fragment.from(nodes.rule.createChecked()), 0, 0));
122
+ }
93
123
  if (!lookDirection) {
94
124
  // fallback to consumer for now
95
125
  return null;
@@ -111,7 +141,14 @@ export const safeInsert = (content, position) => tr => {
111
141
 
112
142
  // If we can't insert, and we think we should split, we fallback to consumer for now
113
143
  if (shouldSplit(parentNode.type, tr.doc.type.schema.nodes)) {
114
- return finaliseInsert(insertBeforeOrAfter(tr, lookDirection, $parentPos, $proposedPosition, content), content.nodeSize);
144
+ const nextTr = finaliseInsert(insertBeforeOrAfter(tr, lookDirection, $parentPos, $proposedPosition, content), content.nodeSize);
145
+
146
+ // Move selection to the closest text node, otherwise it defaults to the whatever the lookDirection is set to above
147
+ if ([nodes.orderedList, nodes.bulletList].includes(parentNode.type) && nextTr) {
148
+ return nextTr.setSelection(TextSelection.between(nextTr.selection.$from, nextTr.selection.$from));
149
+ } else {
150
+ return nextTr;
151
+ }
115
152
  }
116
153
 
117
154
  // Can not insert into current parent, step up one parent
@@ -155,7 +192,21 @@ export const insertSelectedItem = (maybeNode, opts = {}) => (state, tr, start) =
155
192
  *
156
193
  */
157
194
  } else if (node.isBlock) {
158
- tr = pmSafeInsert(normaliseNestedLayout(state, node), undefined, true)(tr);
195
+ /**
196
+ *
197
+ * Rule has unique insertion behaviour
198
+ * so using this safeInsert function in order to handle specific cases in flat list vs nested list
199
+ * instead of a generic pmSafeInsert (i.e appending at the end)
200
+ *
201
+ */
202
+
203
+ const selectionInsideAPanel = selectionIsInsideAPanel(tr);
204
+ if (node.type.name === 'rule' && !selectionInsideAPanel) {
205
+ var _safeInsert;
206
+ tr = (_safeInsert = safeInsert(node, tr.selection.from)(tr)) !== null && _safeInsert !== void 0 ? _safeInsert : tr;
207
+ } else {
208
+ tr = pmSafeInsert(normaliseNestedLayout(state, node), undefined, true)(tr);
209
+ }
159
210
 
160
211
  /**
161
212
  *
@@ -1,5 +1,5 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "181.0.1";
2
+ export const version = "182.0.1";
3
3
  export const nextMajorVersion = () => {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "181.0.1",
3
+ "version": "182.0.1",
4
4
  "sideEffects": false
5
5
  }