@atlaskit/editor-core 180.0.0 → 181.0.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 (750) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/codemods/180.1.0-update-to-editor-migration-component.ts +8 -0
  3. package/codemods/__tests__/rename-editor-to-editor-migration-component.ts +156 -0
  4. package/codemods/migrates/rename-editor-to-editor-migration-component.ts +34 -0
  5. package/dist/cjs/actions/index.js +26 -11
  6. package/dist/cjs/analytics-api/attach-payload-into-transaction.js +1 -1
  7. package/dist/cjs/create-editor/ReactEditorView.js +9 -764
  8. package/dist/cjs/create-editor/ReactEditorViewInternal.js +753 -0
  9. package/dist/cjs/create-editor/ReactEditorViewNext.js +16 -0
  10. package/dist/cjs/create-editor/create-plugins-list.js +31 -3
  11. package/dist/cjs/create-editor/feature-flags-from-props.js +3 -2
  12. package/dist/cjs/create-editor/preset-utils.js +27 -0
  13. package/dist/cjs/editor-next/editor-internal.js +147 -0
  14. package/dist/cjs/editor-next/editor-migration-component.js +51 -0
  15. package/dist/cjs/editor-next/hooks/useEditorMeasuresConstructor.js +36 -0
  16. package/dist/cjs/editor-next/hooks/useMeasureEditorMountTime.js +42 -0
  17. package/dist/cjs/editor-next/hooks/useProviderFactory.js +73 -0
  18. package/dist/cjs/editor-next/index.js +143 -0
  19. package/dist/cjs/editor-next/utils/deprecationWarnings.js +45 -0
  20. package/dist/cjs/editor-next/utils/editorMeasureTTICallback.js +44 -0
  21. package/dist/cjs/editor-next/utils/editorPropTypes.js +36 -0
  22. package/dist/cjs/editor-next/utils/getBaseFontSize.js +17 -0
  23. package/dist/cjs/editor-next/utils/getProvidersFromEditorProps.js +41 -0
  24. package/dist/cjs/editor-next/utils/handleProviders.js +51 -0
  25. package/dist/cjs/editor-next/utils/onEditorCreated.js +28 -0
  26. package/dist/cjs/editor-next/utils/sendDurationAnalytics.js +68 -0
  27. package/dist/cjs/editor-next/utils/trackEditorActions.js +101 -0
  28. package/dist/cjs/editor.js +139 -445
  29. package/dist/cjs/index.js +7 -0
  30. package/dist/cjs/keymaps/consts.js +1 -16
  31. package/dist/cjs/labs/next/internal/hooks/use-analytics/index.js +4 -4
  32. package/dist/cjs/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +6 -6
  33. package/dist/cjs/labs/next/presets/create-stub-internal-apis.js +117 -0
  34. package/dist/cjs/labs/next/presets/cxhtml.js +56 -55
  35. package/dist/cjs/labs/next/presets/default.js +15 -42
  36. package/dist/cjs/labs/next/presets/mobile.js +76 -89
  37. package/dist/cjs/labs/next/presets/universal.js +337 -255
  38. package/dist/cjs/labs/next/presets/useUniversalPreset.js +36 -0
  39. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/index.js +48 -13
  40. package/dist/cjs/plugins/analytics/index.js +2 -3
  41. package/dist/cjs/plugins/analytics/plugin.js +11 -6
  42. package/dist/cjs/plugins/analytics/utils.js +0 -11
  43. package/dist/cjs/plugins/annotation/utils.js +2 -36
  44. package/dist/cjs/plugins/base/pm-plugins/filter-steps.js +1 -1
  45. package/dist/cjs/plugins/base/pm-plugins/frozen-editor.js +98 -56
  46. package/dist/cjs/plugins/base/pm-plugins/react-nodeview.js +2 -7
  47. package/dist/cjs/plugins/base/utils/input-latency-tracking.js +24 -25
  48. package/dist/cjs/plugins/block-type/pm-plugins/input-rule.js +0 -10
  49. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  50. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/index.js +36 -9
  51. package/dist/cjs/plugins/caption/index.js +0 -7
  52. package/dist/cjs/plugins/card/nodeviews/blockCard.js +9 -3
  53. package/dist/cjs/plugins/card/nodeviews/genericCard.js +16 -2
  54. package/dist/cjs/plugins/card/nodeviews/inlineCard.js +6 -2
  55. package/dist/cjs/plugins/card/pm-plugins/main.js +10 -5
  56. package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +4 -0
  57. package/dist/cjs/plugins/clipboard/pm-plugins/main.js +4 -1
  58. package/dist/cjs/plugins/code-block/pm-plugins/main-state.js +2 -14
  59. package/dist/cjs/plugins/collab-edit/plugin.js +2 -3
  60. package/dist/cjs/plugins/collab-edit/provider/index.js +1 -8
  61. package/dist/cjs/plugins/collab-edit/provider/types.js +1 -12
  62. package/dist/cjs/plugins/context-panel/index.js +1 -6
  63. package/dist/cjs/plugins/data-consumer/index.js +0 -8
  64. package/dist/cjs/plugins/date/utils/internal.js +0 -4
  65. package/dist/cjs/plugins/extension/commands.js +1 -8
  66. package/dist/cjs/plugins/extension/toolbar.js +7 -1
  67. package/dist/cjs/plugins/extension/ui/Extension/Extension/index.js +9 -2
  68. package/dist/cjs/plugins/extension/ui/Extension/Extension/styles.js +2 -2
  69. package/dist/cjs/plugins/extension/ui/Extension/Lozenge.js +1 -0
  70. package/dist/cjs/plugins/feedback-dialog/index.js +1 -4
  71. package/dist/cjs/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  72. package/dist/cjs/plugins/floating-toolbar/ui/Button.js +9 -3
  73. package/dist/cjs/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  74. package/dist/cjs/plugins/floating-toolbar/ui/Dropdown.js +48 -14
  75. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +2 -9
  76. package/dist/cjs/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +24 -21
  77. package/dist/cjs/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  78. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +32 -5
  79. package/dist/cjs/plugins/floating-toolbar/utils.js +0 -12
  80. package/dist/cjs/plugins/fragment/index.js +0 -8
  81. package/dist/cjs/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  82. package/dist/cjs/plugins/help-dialog/commands.js +2 -6
  83. package/dist/cjs/plugins/hyperlink/analytics.js +5 -5
  84. package/dist/cjs/plugins/hyperlink/index.js +1 -1
  85. package/dist/cjs/plugins/hyperlink/pm-plugins/main.js +9 -5
  86. package/dist/cjs/plugins/hyperlink/ui/EditorLinkPicker/index.js +10 -4
  87. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  88. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +4 -3
  89. package/dist/cjs/plugins/image-upload/pm-plugins/main.js +50 -12
  90. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  91. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  92. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  93. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  94. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -0
  95. package/dist/cjs/plugins/layout/styles.js +10 -1
  96. package/dist/cjs/plugins/list/utils/find.js +0 -28
  97. package/dist/cjs/plugins/list/utils/indentation.js +1 -25
  98. package/dist/cjs/plugins/list/utils/node.js +0 -5
  99. package/dist/cjs/plugins/list/utils/selection.js +2 -15
  100. package/dist/cjs/plugins/media/commands/helpers.js +12 -40
  101. package/dist/cjs/plugins/media/commands/index.js +4 -4
  102. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +14 -12
  103. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +1 -1
  104. package/dist/cjs/plugins/media/nodeviews/mediaNodeUpdater.js +310 -205
  105. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +1 -1
  106. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  107. package/dist/cjs/plugins/media/pm-plugins/main.js +2 -27
  108. package/dist/cjs/plugins/media/toolbar/filePreviewItem.js +1 -4
  109. package/dist/cjs/plugins/media/utils/media-common.js +1 -20
  110. package/dist/cjs/plugins/mentions/nodeviews/mention.js +100 -16
  111. package/dist/cjs/plugins/mentions/type-ahead/index.js +1 -18
  112. package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +1 -3
  113. package/dist/cjs/plugins/mobile-dimensions/index.js +1 -4
  114. package/dist/cjs/plugins/panel/utils.js +4 -1
  115. package/dist/cjs/plugins/paste/handlers.js +128 -13
  116. package/dist/cjs/plugins/paste/index.js +1 -2
  117. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +133 -88
  118. package/dist/cjs/plugins/paste/pm-plugins/main.js +12 -3
  119. package/dist/cjs/plugins/paste/util/index.js +0 -46
  120. package/dist/cjs/plugins/placeholder-text/index.js +2 -2
  121. package/dist/cjs/plugins/quick-insert/assets/index.js +1 -27
  122. package/dist/cjs/plugins/selection/gap-cursor/actions.js +49 -44
  123. package/dist/cjs/plugins/status/index.js +9 -3
  124. package/dist/cjs/plugins/status/ui/statusPicker.js +8 -2
  125. package/dist/cjs/plugins/status/utils.js +1 -15
  126. package/dist/cjs/plugins/text-color/pm-plugins/main.js +0 -1
  127. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  128. package/dist/cjs/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  129. package/dist/cjs/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +22 -2
  130. package/dist/cjs/plugins/text-formatting/ui/Toolbar/index.js +3 -1
  131. package/dist/cjs/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  132. package/dist/cjs/plugins/text-formatting/utils.js +1 -35
  133. package/dist/cjs/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +19 -1
  134. package/dist/cjs/plugins/type-ahead/constants.js +1 -7
  135. package/dist/cjs/plugins/type-ahead/index.js +1 -1
  136. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +2 -35
  137. package/dist/cjs/plugins/type-ahead/ui/InputQuery.js +79 -106
  138. package/dist/cjs/plugins/type-ahead/utils.js +3 -22
  139. package/dist/cjs/test-utils.js +4 -12
  140. package/dist/cjs/ui/Appearance/Comment/Toolbar.js +43 -8
  141. package/dist/cjs/ui/ChromeCollapsed/index.js +1 -0
  142. package/dist/cjs/ui/CollapsedEditor/index.js +7 -13
  143. package/dist/cjs/ui/ColorPalette/index.js +18 -0
  144. package/dist/cjs/ui/ColorPickerButton/index.js +73 -7
  145. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +1 -1
  146. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +1 -0
  147. package/dist/cjs/ui/ConfigPanel/utils.js +4 -17
  148. package/dist/cjs/ui/ContentStyles/index.js +1 -1
  149. package/dist/cjs/ui/ContextPanel/context.js +13 -12
  150. package/dist/cjs/ui/Dropdown/index.js +7 -2
  151. package/dist/cjs/ui/DropdownMenu/index.js +7 -2
  152. package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  153. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +1 -1
  154. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  155. package/dist/cjs/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  156. package/dist/cjs/ui/ElementBrowser/constants.js +1 -3
  157. package/dist/cjs/ui/PanelTextInput/index.js +4 -4
  158. package/dist/cjs/ui/PortalProvider/index.js +5 -5
  159. package/dist/cjs/ui/Resizer/utils.js +1 -3
  160. package/dist/cjs/ui/WidthEmitter/index.js +29 -35
  161. package/dist/cjs/ui/styles.js +3 -7
  162. package/dist/cjs/utils/document.js +15 -0
  163. package/dist/cjs/utils/extensions.js +6 -7
  164. package/dist/cjs/utils/get-editor-plugins.js +30 -0
  165. package/dist/cjs/utils/index.js +9 -269
  166. package/dist/cjs/utils/input-rules.js +1 -15
  167. package/dist/cjs/utils/linking-utils.js +1 -1
  168. package/dist/cjs/utils/performance/components/RenderTracking.js +1 -1
  169. package/dist/cjs/utils/performance/safer-transactions.js +1 -1
  170. package/dist/cjs/utils/prepare-extension-provider.js +25 -0
  171. package/dist/cjs/version-wrapper.js +1 -1
  172. package/dist/cjs/version.json +1 -1
  173. package/dist/es2019/actions/index.js +24 -10
  174. package/dist/es2019/analytics-api/attach-payload-into-transaction.js +1 -1
  175. package/dist/es2019/create-editor/ReactEditorView.js +3 -710
  176. package/dist/es2019/create-editor/ReactEditorViewInternal.js +697 -0
  177. package/dist/es2019/create-editor/ReactEditorViewNext.js +7 -0
  178. package/dist/es2019/create-editor/create-plugins-list.js +26 -3
  179. package/dist/es2019/create-editor/feature-flags-from-props.js +3 -2
  180. package/dist/es2019/create-editor/preset-utils.js +15 -0
  181. package/dist/es2019/editor-next/editor-internal.js +142 -0
  182. package/dist/es2019/editor-next/editor-migration-component.js +27 -0
  183. package/dist/es2019/editor-next/hooks/useEditorMeasuresConstructor.js +30 -0
  184. package/dist/es2019/editor-next/hooks/useMeasureEditorMountTime.js +35 -0
  185. package/dist/es2019/editor-next/hooks/useProviderFactory.js +62 -0
  186. package/dist/es2019/editor-next/index.js +96 -0
  187. package/dist/es2019/editor-next/utils/deprecationWarnings.js +39 -0
  188. package/dist/es2019/editor-next/utils/editorMeasureTTICallback.js +40 -0
  189. package/dist/es2019/editor-next/utils/editorPropTypes.js +29 -0
  190. package/dist/es2019/editor-next/utils/getBaseFontSize.js +11 -0
  191. package/dist/es2019/editor-next/utils/getProvidersFromEditorProps.js +36 -0
  192. package/dist/es2019/editor-next/utils/handleProviders.js +46 -0
  193. package/dist/es2019/editor-next/utils/onEditorCreated.js +21 -0
  194. package/dist/es2019/editor-next/utils/sendDurationAnalytics.js +40 -0
  195. package/dist/es2019/editor-next/utils/trackEditorActions.js +78 -0
  196. package/dist/es2019/editor.js +122 -398
  197. package/dist/es2019/index.js +2 -1
  198. package/dist/es2019/keymaps/consts.js +7 -11
  199. package/dist/es2019/labs/next/internal/hooks/use-analytics/index.js +2 -2
  200. package/dist/es2019/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +2 -3
  201. package/dist/es2019/labs/next/presets/create-stub-internal-apis.js +105 -0
  202. package/dist/es2019/labs/next/presets/cxhtml.js +56 -53
  203. package/dist/es2019/labs/next/presets/default.js +18 -38
  204. package/dist/es2019/labs/next/presets/mobile.js +88 -88
  205. package/dist/es2019/labs/next/presets/universal.js +347 -263
  206. package/dist/es2019/labs/next/presets/useUniversalPreset.js +25 -0
  207. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/index.js +41 -12
  208. package/dist/es2019/plugins/analytics/index.js +3 -4
  209. package/dist/es2019/plugins/analytics/plugin.js +8 -2
  210. package/dist/es2019/plugins/analytics/utils.js +0 -4
  211. package/dist/es2019/plugins/annotation/utils.js +2 -30
  212. package/dist/es2019/plugins/base/pm-plugins/filter-steps.js +1 -1
  213. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +96 -58
  214. package/dist/es2019/plugins/base/pm-plugins/react-nodeview.js +1 -3
  215. package/dist/es2019/plugins/base/utils/input-latency-tracking.js +23 -23
  216. package/dist/es2019/plugins/block-type/pm-plugins/input-rule.js +3 -9
  217. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  218. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/index.js +31 -5
  219. package/dist/es2019/plugins/caption/index.js +0 -2
  220. package/dist/es2019/plugins/card/nodeviews/blockCard.js +10 -3
  221. package/dist/es2019/plugins/card/nodeviews/genericCard.js +16 -2
  222. package/dist/es2019/plugins/card/nodeviews/inlineCard.js +6 -2
  223. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -4
  224. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +4 -0
  225. package/dist/es2019/plugins/clipboard/pm-plugins/main.js +3 -1
  226. package/dist/es2019/plugins/code-block/pm-plugins/main-state.js +1 -9
  227. package/dist/es2019/plugins/collab-edit/plugin.js +1 -2
  228. package/dist/es2019/plugins/collab-edit/provider/index.js +1 -1
  229. package/dist/es2019/plugins/collab-edit/provider/types.js +1 -10
  230. package/dist/es2019/plugins/context-panel/index.js +0 -3
  231. package/dist/es2019/plugins/data-consumer/index.js +0 -7
  232. package/dist/es2019/plugins/date/utils/internal.js +0 -3
  233. package/dist/es2019/plugins/extension/commands.js +0 -6
  234. package/dist/es2019/plugins/extension/toolbar.js +7 -1
  235. package/dist/es2019/plugins/extension/ui/Extension/Extension/index.js +12 -2
  236. package/dist/es2019/plugins/extension/ui/Extension/Extension/styles.js +3 -0
  237. package/dist/es2019/plugins/extension/ui/Extension/Lozenge.js +1 -0
  238. package/dist/es2019/plugins/feedback-dialog/index.js +0 -2
  239. package/dist/es2019/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  240. package/dist/es2019/plugins/floating-toolbar/ui/Button.js +9 -3
  241. package/dist/es2019/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  242. package/dist/es2019/plugins/floating-toolbar/ui/Dropdown.js +45 -12
  243. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +1 -11
  244. package/dist/es2019/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +3 -2
  245. package/dist/es2019/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  246. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +29 -1
  247. package/dist/es2019/plugins/floating-toolbar/utils.js +0 -10
  248. package/dist/es2019/plugins/fragment/index.js +0 -7
  249. package/dist/es2019/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  250. package/dist/es2019/plugins/help-dialog/commands.js +1 -2
  251. package/dist/es2019/plugins/hyperlink/analytics.js +1 -1
  252. package/dist/es2019/plugins/hyperlink/index.js +1 -1
  253. package/dist/es2019/plugins/hyperlink/pm-plugins/main.js +8 -4
  254. package/dist/es2019/plugins/hyperlink/ui/EditorLinkPicker/index.js +9 -3
  255. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  256. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -2
  257. package/dist/es2019/plugins/image-upload/pm-plugins/main.js +47 -5
  258. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  259. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  260. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  261. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  262. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +24 -0
  263. package/dist/es2019/plugins/layout/styles.js +12 -4
  264. package/dist/es2019/plugins/list/utils/find.js +0 -27
  265. package/dist/es2019/plugins/list/utils/indentation.js +0 -23
  266. package/dist/es2019/plugins/list/utils/node.js +1 -4
  267. package/dist/es2019/plugins/list/utils/selection.js +2 -15
  268. package/dist/es2019/plugins/media/commands/helpers.js +9 -35
  269. package/dist/es2019/plugins/media/commands/index.js +1 -1
  270. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +3 -3
  271. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +1 -1
  272. package/dist/es2019/plugins/media/nodeviews/mediaNodeUpdater.js +70 -37
  273. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +1 -1
  274. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  275. package/dist/es2019/plugins/media/pm-plugins/main.js +3 -30
  276. package/dist/es2019/plugins/media/toolbar/filePreviewItem.js +1 -4
  277. package/dist/es2019/plugins/media/utils/media-common.js +1 -19
  278. package/dist/es2019/plugins/mentions/nodeviews/mention.js +64 -16
  279. package/dist/es2019/plugins/mentions/type-ahead/index.js +1 -14
  280. package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +1 -2
  281. package/dist/es2019/plugins/mobile-dimensions/index.js +0 -3
  282. package/dist/es2019/plugins/panel/utils.js +4 -1
  283. package/dist/es2019/plugins/paste/handlers.js +127 -5
  284. package/dist/es2019/plugins/paste/index.js +1 -2
  285. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +131 -93
  286. package/dist/es2019/plugins/paste/pm-plugins/main.js +13 -4
  287. package/dist/es2019/plugins/paste/util/index.js +5 -45
  288. package/dist/es2019/plugins/placeholder-text/index.js +1 -1
  289. package/dist/es2019/plugins/quick-insert/assets/index.js +0 -8
  290. package/dist/es2019/plugins/selection/gap-cursor/actions.js +56 -56
  291. package/dist/es2019/plugins/status/index.js +8 -2
  292. package/dist/es2019/plugins/status/ui/statusPicker.js +8 -2
  293. package/dist/es2019/plugins/status/utils.js +1 -11
  294. package/dist/es2019/plugins/text-color/pm-plugins/main.js +1 -1
  295. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  296. package/dist/es2019/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  297. package/dist/es2019/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +20 -3
  298. package/dist/es2019/plugins/text-formatting/ui/Toolbar/index.js +4 -2
  299. package/dist/es2019/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  300. package/dist/es2019/plugins/text-formatting/utils.js +0 -27
  301. package/dist/es2019/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +16 -1
  302. package/dist/es2019/plugins/type-ahead/constants.js +0 -5
  303. package/dist/es2019/plugins/type-ahead/index.js +1 -1
  304. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +0 -35
  305. package/dist/es2019/plugins/type-ahead/ui/InputQuery.js +73 -92
  306. package/dist/es2019/plugins/type-ahead/utils.js +0 -23
  307. package/dist/es2019/test-utils.js +4 -7
  308. package/dist/es2019/ui/Appearance/Comment/Toolbar.js +40 -6
  309. package/dist/es2019/ui/ChromeCollapsed/index.js +1 -0
  310. package/dist/es2019/ui/CollapsedEditor/index.js +7 -11
  311. package/dist/es2019/ui/ColorPalette/index.js +2 -1
  312. package/dist/es2019/ui/ColorPickerButton/index.js +66 -9
  313. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +1 -1
  314. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +1 -0
  315. package/dist/es2019/ui/ConfigPanel/utils.js +0 -6
  316. package/dist/es2019/ui/ContentStyles/index.js +1 -1
  317. package/dist/es2019/ui/ContextPanel/context.js +5 -4
  318. package/dist/es2019/ui/Dropdown/index.js +5 -2
  319. package/dist/es2019/ui/DropdownMenu/index.js +5 -2
  320. package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  321. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +1 -1
  322. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  323. package/dist/es2019/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  324. package/dist/es2019/ui/ElementBrowser/constants.js +0 -1
  325. package/dist/es2019/ui/PanelTextInput/index.js +3 -3
  326. package/dist/es2019/ui/PortalProvider/index.js +1 -1
  327. package/dist/es2019/ui/Resizer/utils.js +0 -1
  328. package/dist/es2019/ui/WidthEmitter/index.js +25 -29
  329. package/dist/es2019/ui/styles.js +0 -6
  330. package/dist/es2019/utils/document.js +11 -1
  331. package/dist/es2019/utils/extensions.js +1 -3
  332. package/dist/es2019/utils/get-editor-plugins.js +23 -0
  333. package/dist/es2019/utils/index.js +13 -199
  334. package/dist/es2019/utils/input-rules.js +0 -14
  335. package/dist/es2019/utils/linking-utils.js +1 -1
  336. package/dist/es2019/utils/performance/components/RenderTracking.js +1 -1
  337. package/dist/es2019/utils/performance/safer-transactions.js +1 -1
  338. package/dist/es2019/utils/prepare-extension-provider.js +13 -0
  339. package/dist/es2019/version-wrapper.js +1 -1
  340. package/dist/es2019/version.json +1 -1
  341. package/dist/esm/actions/index.js +24 -10
  342. package/dist/esm/analytics-api/attach-payload-into-transaction.js +1 -1
  343. package/dist/esm/create-editor/ReactEditorView.js +9 -765
  344. package/dist/esm/create-editor/ReactEditorViewInternal.js +747 -0
  345. package/dist/esm/create-editor/ReactEditorViewNext.js +7 -0
  346. package/dist/esm/create-editor/create-plugins-list.js +30 -3
  347. package/dist/esm/create-editor/feature-flags-from-props.js +3 -2
  348. package/dist/esm/create-editor/preset-utils.js +21 -0
  349. package/dist/esm/editor-next/editor-internal.js +141 -0
  350. package/dist/esm/editor-next/editor-migration-component.js +44 -0
  351. package/dist/esm/editor-next/hooks/useEditorMeasuresConstructor.js +30 -0
  352. package/dist/esm/editor-next/hooks/useMeasureEditorMountTime.js +35 -0
  353. package/dist/esm/editor-next/hooks/useProviderFactory.js +66 -0
  354. package/dist/esm/editor-next/index.js +138 -0
  355. package/dist/esm/editor-next/utils/deprecationWarnings.js +39 -0
  356. package/dist/esm/editor-next/utils/editorMeasureTTICallback.js +38 -0
  357. package/dist/esm/editor-next/utils/editorPropTypes.js +28 -0
  358. package/dist/esm/editor-next/utils/getBaseFontSize.js +11 -0
  359. package/dist/esm/editor-next/utils/getProvidersFromEditorProps.js +35 -0
  360. package/dist/esm/editor-next/utils/handleProviders.js +45 -0
  361. package/dist/esm/editor-next/utils/onEditorCreated.js +21 -0
  362. package/dist/esm/editor-next/utils/sendDurationAnalytics.js +61 -0
  363. package/dist/esm/editor-next/utils/trackEditorActions.js +94 -0
  364. package/dist/esm/editor.js +139 -442
  365. package/dist/esm/index.js +2 -1
  366. package/dist/esm/keymaps/consts.js +7 -11
  367. package/dist/esm/labs/next/internal/hooks/use-analytics/index.js +2 -2
  368. package/dist/esm/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +2 -3
  369. package/dist/esm/labs/next/presets/create-stub-internal-apis.js +110 -0
  370. package/dist/esm/labs/next/presets/cxhtml.js +56 -55
  371. package/dist/esm/labs/next/presets/default.js +18 -41
  372. package/dist/esm/labs/next/presets/mobile.js +88 -90
  373. package/dist/esm/labs/next/presets/universal.js +337 -255
  374. package/dist/esm/labs/next/presets/useUniversalPreset.js +29 -0
  375. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/index.js +48 -13
  376. package/dist/esm/plugins/analytics/index.js +3 -4
  377. package/dist/esm/plugins/analytics/plugin.js +7 -2
  378. package/dist/esm/plugins/analytics/utils.js +0 -9
  379. package/dist/esm/plugins/annotation/utils.js +2 -32
  380. package/dist/esm/plugins/base/pm-plugins/filter-steps.js +1 -1
  381. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +98 -56
  382. package/dist/esm/plugins/base/pm-plugins/react-nodeview.js +1 -5
  383. package/dist/esm/plugins/base/utils/input-latency-tracking.js +24 -25
  384. package/dist/esm/plugins/block-type/pm-plugins/input-rule.js +3 -9
  385. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  386. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/index.js +36 -9
  387. package/dist/esm/plugins/caption/index.js +0 -2
  388. package/dist/esm/plugins/card/nodeviews/blockCard.js +9 -3
  389. package/dist/esm/plugins/card/nodeviews/genericCard.js +16 -2
  390. package/dist/esm/plugins/card/nodeviews/inlineCard.js +6 -2
  391. package/dist/esm/plugins/card/pm-plugins/main.js +10 -5
  392. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +4 -0
  393. package/dist/esm/plugins/clipboard/pm-plugins/main.js +4 -1
  394. package/dist/esm/plugins/code-block/pm-plugins/main-state.js +0 -10
  395. package/dist/esm/plugins/collab-edit/plugin.js +1 -2
  396. package/dist/esm/plugins/collab-edit/provider/index.js +1 -1
  397. package/dist/esm/plugins/collab-edit/provider/types.js +1 -10
  398. package/dist/esm/plugins/context-panel/index.js +0 -3
  399. package/dist/esm/plugins/data-consumer/index.js +0 -7
  400. package/dist/esm/plugins/date/utils/internal.js +0 -3
  401. package/dist/esm/plugins/extension/commands.js +0 -6
  402. package/dist/esm/plugins/extension/toolbar.js +7 -1
  403. package/dist/esm/plugins/extension/ui/Extension/Extension/index.js +9 -2
  404. package/dist/esm/plugins/extension/ui/Extension/Extension/styles.js +2 -2
  405. package/dist/esm/plugins/extension/ui/Extension/Lozenge.js +1 -0
  406. package/dist/esm/plugins/feedback-dialog/index.js +0 -2
  407. package/dist/esm/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  408. package/dist/esm/plugins/floating-toolbar/ui/Button.js +9 -3
  409. package/dist/esm/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  410. package/dist/esm/plugins/floating-toolbar/ui/Dropdown.js +48 -14
  411. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +2 -9
  412. package/dist/esm/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +24 -21
  413. package/dist/esm/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  414. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +32 -5
  415. package/dist/esm/plugins/floating-toolbar/utils.js +0 -10
  416. package/dist/esm/plugins/fragment/index.js +0 -7
  417. package/dist/esm/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  418. package/dist/esm/plugins/help-dialog/commands.js +0 -3
  419. package/dist/esm/plugins/hyperlink/analytics.js +1 -1
  420. package/dist/esm/plugins/hyperlink/index.js +1 -1
  421. package/dist/esm/plugins/hyperlink/pm-plugins/main.js +9 -5
  422. package/dist/esm/plugins/hyperlink/ui/EditorLinkPicker/index.js +10 -4
  423. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  424. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -2
  425. package/dist/esm/plugins/image-upload/pm-plugins/main.js +51 -12
  426. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  427. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  428. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  429. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  430. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -0
  431. package/dist/esm/plugins/layout/styles.js +11 -2
  432. package/dist/esm/plugins/list/utils/find.js +0 -27
  433. package/dist/esm/plugins/list/utils/indentation.js +0 -23
  434. package/dist/esm/plugins/list/utils/node.js +1 -4
  435. package/dist/esm/plugins/list/utils/selection.js +2 -12
  436. package/dist/esm/plugins/media/commands/helpers.js +9 -35
  437. package/dist/esm/plugins/media/commands/index.js +1 -1
  438. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +14 -12
  439. package/dist/esm/plugins/media/nodeviews/mediaInline.js +1 -1
  440. package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +311 -206
  441. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +1 -1
  442. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  443. package/dist/esm/plugins/media/pm-plugins/main.js +3 -28
  444. package/dist/esm/plugins/media/toolbar/filePreviewItem.js +1 -4
  445. package/dist/esm/plugins/media/utils/media-common.js +1 -17
  446. package/dist/esm/plugins/mentions/nodeviews/mention.js +97 -16
  447. package/dist/esm/plugins/mentions/type-ahead/index.js +1 -18
  448. package/dist/esm/plugins/mentions/ui/InviteItem/index.js +1 -2
  449. package/dist/esm/plugins/mobile-dimensions/index.js +0 -3
  450. package/dist/esm/plugins/panel/utils.js +4 -1
  451. package/dist/esm/plugins/paste/handlers.js +127 -13
  452. package/dist/esm/plugins/paste/index.js +1 -2
  453. package/dist/esm/plugins/paste/pm-plugins/analytics.js +130 -86
  454. package/dist/esm/plugins/paste/pm-plugins/main.js +13 -4
  455. package/dist/esm/plugins/paste/util/index.js +5 -45
  456. package/dist/esm/plugins/placeholder-text/index.js +2 -2
  457. package/dist/esm/plugins/quick-insert/assets/index.js +0 -20
  458. package/dist/esm/plugins/selection/gap-cursor/actions.js +52 -45
  459. package/dist/esm/plugins/status/index.js +9 -3
  460. package/dist/esm/plugins/status/ui/statusPicker.js +8 -2
  461. package/dist/esm/plugins/status/utils.js +1 -13
  462. package/dist/esm/plugins/text-color/pm-plugins/main.js +1 -1
  463. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  464. package/dist/esm/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  465. package/dist/esm/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +23 -3
  466. package/dist/esm/plugins/text-formatting/ui/Toolbar/index.js +4 -2
  467. package/dist/esm/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  468. package/dist/esm/plugins/text-formatting/utils.js +0 -29
  469. package/dist/esm/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +19 -1
  470. package/dist/esm/plugins/type-ahead/constants.js +0 -5
  471. package/dist/esm/plugins/type-ahead/index.js +1 -1
  472. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +0 -31
  473. package/dist/esm/plugins/type-ahead/ui/InputQuery.js +79 -106
  474. package/dist/esm/plugins/type-ahead/utils.js +2 -20
  475. package/dist/esm/test-utils.js +4 -7
  476. package/dist/esm/ui/Appearance/Comment/Toolbar.js +41 -6
  477. package/dist/esm/ui/ChromeCollapsed/index.js +1 -0
  478. package/dist/esm/ui/CollapsedEditor/index.js +7 -13
  479. package/dist/esm/ui/ColorPalette/index.js +2 -1
  480. package/dist/esm/ui/ColorPickerButton/index.js +74 -8
  481. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +1 -1
  482. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +1 -0
  483. package/dist/esm/ui/ConfigPanel/utils.js +3 -14
  484. package/dist/esm/ui/ContentStyles/index.js +1 -1
  485. package/dist/esm/ui/ContextPanel/context.js +8 -8
  486. package/dist/esm/ui/Dropdown/index.js +7 -2
  487. package/dist/esm/ui/DropdownMenu/index.js +7 -2
  488. package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  489. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +1 -1
  490. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  491. package/dist/esm/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  492. package/dist/esm/ui/ElementBrowser/constants.js +0 -1
  493. package/dist/esm/ui/PanelTextInput/index.js +4 -4
  494. package/dist/esm/ui/PortalProvider/index.js +1 -1
  495. package/dist/esm/ui/Resizer/utils.js +0 -1
  496. package/dist/esm/ui/WidthEmitter/index.js +28 -37
  497. package/dist/esm/ui/styles.js +2 -5
  498. package/dist/esm/utils/document.js +15 -1
  499. package/dist/esm/utils/extensions.js +1 -3
  500. package/dist/esm/utils/get-editor-plugins.js +23 -0
  501. package/dist/esm/utils/index.js +13 -196
  502. package/dist/esm/utils/input-rules.js +0 -13
  503. package/dist/esm/utils/linking-utils.js +1 -1
  504. package/dist/esm/utils/performance/components/RenderTracking.js +1 -1
  505. package/dist/esm/utils/performance/safer-transactions.js +1 -1
  506. package/dist/esm/utils/prepare-extension-provider.js +17 -0
  507. package/dist/esm/version-wrapper.js +1 -1
  508. package/dist/esm/version.json +1 -1
  509. package/dist/types/actions/index.d.ts +5 -5
  510. package/dist/types/create-editor/ReactEditorView.d.ts +5 -110
  511. package/dist/types/create-editor/ReactEditorViewInternal.d.ts +114 -0
  512. package/dist/types/create-editor/ReactEditorViewNext.d.ts +8 -0
  513. package/dist/types/create-editor/create-plugins-list.d.ts +3 -5
  514. package/dist/types/create-editor/preset-utils.d.ts +2 -0
  515. package/dist/types/editor-next/editor-internal.d.ts +44 -0
  516. package/dist/types/editor-next/editor-migration-component.d.ts +5 -0
  517. package/dist/types/editor-next/hooks/useEditorMeasuresConstructor.d.ts +17 -0
  518. package/dist/types/editor-next/hooks/useMeasureEditorMountTime.d.ts +13 -0
  519. package/dist/types/editor-next/hooks/useProviderFactory.d.ts +21 -0
  520. package/dist/types/editor-next/index.d.ts +34 -0
  521. package/dist/types/editor-next/utils/deprecationWarnings.d.ts +2 -0
  522. package/dist/types/editor-next/utils/editorMeasureTTICallback.d.ts +5 -0
  523. package/dist/types/editor-next/utils/editorPropTypes.d.ts +19 -0
  524. package/dist/types/editor-next/utils/getBaseFontSize.d.ts +6 -0
  525. package/dist/types/editor-next/utils/getProvidersFromEditorProps.d.ts +9 -0
  526. package/dist/types/editor-next/utils/handleProviders.d.ts +14 -0
  527. package/dist/types/editor-next/utils/onEditorCreated.d.ts +12 -0
  528. package/dist/types/editor-next/utils/sendDurationAnalytics.d.ts +15 -0
  529. package/dist/types/editor-next/utils/trackEditorActions.d.ts +29 -0
  530. package/dist/types/editor.d.ts +50 -25
  531. package/dist/types/index.d.ts +1 -0
  532. package/dist/types/keymaps/consts.d.ts +0 -11
  533. package/dist/types/labs/next/internal/hooks/use-analytics/index.d.ts +1 -1
  534. package/dist/types/labs/next/presets/create-stub-internal-apis.d.ts +16 -0
  535. package/dist/types/labs/next/presets/cxhtml.d.ts +33 -1
  536. package/dist/types/labs/next/presets/default.d.ts +67 -10
  537. package/dist/types/labs/next/presets/mobile.d.ts +33 -1
  538. package/dist/types/labs/next/presets/universal.d.ts +5 -13
  539. package/dist/types/labs/next/presets/useUniversalPreset.d.ts +7 -0
  540. package/dist/types/nodeviews/context-adapter.d.ts +0 -1
  541. package/dist/types/nodeviews/index.d.ts +0 -1
  542. package/dist/types/plugins/alignment/index.d.ts +1 -1
  543. package/dist/types/plugins/alignment/pm-plugins/types.d.ts +0 -11
  544. package/dist/types/plugins/alignment/ui/ToolbarAlignment/index.d.ts +3 -1
  545. package/dist/types/plugins/analytics/index.d.ts +3 -6
  546. package/dist/types/plugins/analytics/plugin.d.ts +3 -1
  547. package/dist/types/plugins/analytics/utils.d.ts +2 -3
  548. package/dist/types/plugins/annotation/index.d.ts +3 -1
  549. package/dist/types/plugins/annotation/utils.d.ts +0 -17
  550. package/dist/types/plugins/avatar-group/index.d.ts +3 -1
  551. package/dist/types/plugins/base/index.d.ts +3 -1
  552. package/dist/types/plugins/base/pm-plugins/filter-steps.d.ts +1 -1
  553. package/dist/types/plugins/base/pm-plugins/react-nodeview.d.ts +2 -3
  554. package/dist/types/plugins/base/utils/input-latency-tracking.d.ts +1 -3
  555. package/dist/types/plugins/before-primaryToolbar/index.d.ts +3 -1
  556. package/dist/types/plugins/block-type/index.d.ts +3 -1
  557. package/dist/types/plugins/block-type/pm-plugins/input-rule.d.ts +2 -6
  558. package/dist/types/plugins/block-type/ui/ToolbarBlockType/blocktype-button.d.ts +1 -0
  559. package/dist/types/plugins/block-type/ui/ToolbarBlockType/index.d.ts +1 -0
  560. package/dist/types/plugins/breakout/index.d.ts +3 -1
  561. package/dist/types/plugins/caption/index.d.ts +0 -2
  562. package/dist/types/plugins/card/index.d.ts +3 -1
  563. package/dist/types/plugins/card/nodeviews/blockCard.d.ts +2 -10
  564. package/dist/types/plugins/card/nodeviews/genericCard.d.ts +2 -1
  565. package/dist/types/plugins/card/nodeviews/inlineCard.d.ts +1 -1
  566. package/dist/types/plugins/card/pm-plugins/util/state.d.ts +1 -0
  567. package/dist/types/plugins/card/types.d.ts +3 -0
  568. package/dist/types/plugins/code-bidi-warning/index.d.ts +3 -1
  569. package/dist/types/plugins/code-block/actions.d.ts +0 -4
  570. package/dist/types/plugins/code-block/index.d.ts +3 -1
  571. package/dist/types/plugins/code-block/pm-plugins/main-state.d.ts +0 -3
  572. package/dist/types/plugins/collab-edit/index.d.ts +3 -1
  573. package/dist/types/plugins/collab-edit/provider/index.d.ts +1 -2
  574. package/dist/types/plugins/collab-edit/provider/types.d.ts +1 -36
  575. package/dist/types/plugins/context-panel/index.d.ts +3 -4
  576. package/dist/types/plugins/data-consumer/index.d.ts +0 -2
  577. package/dist/types/plugins/date/utils/internal.d.ts +0 -1
  578. package/dist/types/plugins/emoji/index.d.ts +3 -1
  579. package/dist/types/plugins/expand/index.d.ts +3 -1
  580. package/dist/types/plugins/extension/commands.d.ts +0 -1
  581. package/dist/types/plugins/extension/index.d.ts +3 -1
  582. package/dist/types/plugins/extension/nodeviews/extension.d.ts +0 -5
  583. package/dist/types/plugins/extension/toolbar.d.ts +5 -0
  584. package/dist/types/plugins/feature-flags-context/index.d.ts +3 -1
  585. package/dist/types/plugins/feedback-dialog/index.d.ts +3 -3
  586. package/dist/types/plugins/find-replace/index.d.ts +3 -1
  587. package/dist/types/plugins/floating-toolbar/ui/Button.d.ts +4 -1
  588. package/dist/types/plugins/floating-toolbar/ui/Dropdown.d.ts +6 -2
  589. package/dist/types/plugins/floating-toolbar/utils.d.ts +0 -2
  590. package/dist/types/plugins/fragment/index.d.ts +0 -2
  591. package/dist/types/plugins/grid/index.d.ts +3 -1
  592. package/dist/types/plugins/help-dialog/commands.d.ts +0 -1
  593. package/dist/types/plugins/help-dialog/index.d.ts +3 -1
  594. package/dist/types/plugins/history/actions.d.ts +1 -2
  595. package/dist/types/plugins/hyperlink/analytics.d.ts +1 -1
  596. package/dist/types/plugins/hyperlink/index.d.ts +3 -1
  597. package/dist/types/plugins/hyperlink/pm-plugins/main.d.ts +4 -2
  598. package/dist/types/plugins/hyperlink/types.d.ts +3 -1
  599. package/dist/types/plugins/hyperlink/ui/EditorLinkPicker/index.d.ts +3 -1
  600. package/dist/types/plugins/insert-block/index.d.ts +3 -1
  601. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +1 -0
  602. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.d.ts +1 -0
  603. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.d.ts +1 -0
  604. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.d.ts +1 -0
  605. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/index.d.ts +1 -0
  606. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +1 -0
  607. package/dist/types/plugins/layout/index.d.ts +3 -1
  608. package/dist/types/plugins/layout/styles.d.ts +2 -1
  609. package/dist/types/plugins/list/index.d.ts +3 -1
  610. package/dist/types/plugins/list/utils/find.d.ts +0 -1
  611. package/dist/types/plugins/list/utils/indentation.d.ts +0 -1
  612. package/dist/types/plugins/list/utils/node.d.ts +0 -2
  613. package/dist/types/plugins/list/utils/selection.d.ts +0 -3
  614. package/dist/types/plugins/max-content-size/index.d.ts +3 -1
  615. package/dist/types/plugins/media/commands/helpers.d.ts +5 -12
  616. package/dist/types/plugins/media/commands/index.d.ts +1 -1
  617. package/dist/types/plugins/media/index.d.ts +3 -1
  618. package/dist/types/plugins/media/nodeviews/__mocks__/mediaNodeUpdater.d.ts +3 -1
  619. package/dist/types/plugins/media/nodeviews/mediaNodeUpdater.d.ts +4 -1
  620. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -4
  621. package/dist/types/plugins/media/pm-plugins/types.d.ts +1 -4
  622. package/dist/types/plugins/media/utils/media-common.d.ts +0 -5
  623. package/dist/types/plugins/mentions/index.d.ts +3 -1
  624. package/dist/types/plugins/mentions/types.d.ts +1 -2
  625. package/dist/types/plugins/mentions/ui/InviteItem/index.d.ts +2 -3
  626. package/dist/types/plugins/mentions/ui/InviteItem/styles.d.ts +0 -6
  627. package/dist/types/plugins/mentions/ui/ToolbarMention/index.d.ts +1 -4
  628. package/dist/types/plugins/mobile-dimensions/index.d.ts +0 -1
  629. package/dist/types/plugins/panel/index.d.ts +3 -1
  630. package/dist/types/plugins/paste/handlers.d.ts +2 -1
  631. package/dist/types/plugins/paste/index.d.ts +3 -2
  632. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +10 -4
  633. package/dist/types/plugins/paste/util/index.d.ts +0 -6
  634. package/dist/types/plugins/placeholder/index.d.ts +3 -1
  635. package/dist/types/plugins/placeholder-text/index.d.ts +3 -1
  636. package/dist/types/plugins/quick-insert/assets/index.d.ts +0 -2
  637. package/dist/types/plugins/quick-insert/index.d.ts +3 -1
  638. package/dist/types/plugins/save-on-enter/index.d.ts +3 -1
  639. package/dist/types/plugins/selection/index.d.ts +3 -1
  640. package/dist/types/plugins/status/index.d.ts +3 -1
  641. package/dist/types/plugins/status/ui/statusPicker.d.ts +3 -0
  642. package/dist/types/plugins/status/utils.d.ts +0 -3
  643. package/dist/types/plugins/submit-editor/index.d.ts +3 -1
  644. package/dist/types/plugins/tasks-and-decisions/index.d.ts +3 -1
  645. package/dist/types/plugins/tasks-and-decisions/pm-plugins/main.d.ts +0 -6
  646. package/dist/types/plugins/text-color/index.d.ts +3 -1
  647. package/dist/types/plugins/text-color/pm-plugins/main.d.ts +2 -12
  648. package/dist/types/plugins/text-color/ui/ToolbarTextColor/index.d.ts +2 -0
  649. package/dist/types/plugins/text-formatting/index.d.ts +3 -1
  650. package/dist/types/plugins/text-formatting/pm-plugins/clear-formatting.d.ts +0 -1
  651. package/dist/types/plugins/text-formatting/ui/Toolbar/more-button.d.ts +2 -1
  652. package/dist/types/plugins/text-formatting/utils.d.ts +0 -5
  653. package/dist/types/plugins/toolbar-lists-indentation/index.d.ts +3 -1
  654. package/dist/types/plugins/type-ahead/constants.d.ts +0 -4
  655. package/dist/types/plugins/type-ahead/index.d.ts +3 -1
  656. package/dist/types/plugins/type-ahead/pm-plugins/decorations.d.ts +0 -10
  657. package/dist/types/plugins/type-ahead/utils.d.ts +1 -2
  658. package/dist/types/test-utils.d.ts +4 -5
  659. package/dist/types/types/editor-appearance-component.d.ts +2 -2
  660. package/dist/types/types/editor-props.d.ts +55 -42
  661. package/dist/types/types/get-editor-props.d.ts +12 -0
  662. package/dist/types/types/performance-tracking.d.ts +10 -0
  663. package/dist/types/ui/Appearance/Chromeless.d.ts +0 -5
  664. package/dist/types/ui/Appearance/Comment/Comment.d.ts +0 -7
  665. package/dist/types/ui/Appearance/Comment/Toolbar.d.ts +3 -2
  666. package/dist/types/ui/Appearance/FullPage/MainToolbar.d.ts +0 -4
  667. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +29 -29
  668. package/dist/types/ui/AppearanceComponents/Mobile.d.ts +2 -5
  669. package/dist/types/ui/CollapsedEditor/index.d.ts +4 -3
  670. package/dist/types/ui/ColorPalette/Palettes/index.d.ts +1 -1
  671. package/dist/types/ui/ColorPalette/Palettes/type.d.ts +1 -1
  672. package/dist/types/ui/ColorPalette/index.d.ts +2 -1
  673. package/dist/types/ui/ColorPickerButton/index.d.ts +5 -2
  674. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  675. package/dist/types/ui/ConfigPanel/types.d.ts +0 -3
  676. package/dist/types/ui/ConfigPanel/utils.d.ts +2 -3
  677. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  678. package/dist/types/ui/ContextPanel/context.d.ts +2 -1
  679. package/dist/types/ui/ElementBrowser/ModalElementBrowser.d.ts +0 -3
  680. package/dist/types/ui/ElementBrowser/constants.d.ts +0 -1
  681. package/dist/types/ui/ElementBrowser/types.d.ts +0 -5
  682. package/dist/types/ui/PanelTextInput/index.d.ts +1 -1
  683. package/dist/types/ui/PortalProvider/index.d.ts +1 -1
  684. package/dist/types/ui/Resizer/utils.d.ts +0 -1
  685. package/dist/types/ui/styles.d.ts +0 -1
  686. package/dist/types/utils/document.d.ts +4 -3
  687. package/dist/types/utils/get-editor-plugins.d.ts +10 -0
  688. package/dist/types/utils/index.d.ts +6 -65
  689. package/dist/types/utils/input-rules.d.ts +1 -2
  690. package/dist/types/utils/linking-utils.d.ts +1 -1
  691. package/dist/types/utils/performance/components/RenderTracking.d.ts +1 -1
  692. package/dist/types/utils/performance/instrumented-plugin.d.ts +1 -1
  693. package/dist/types/utils/performance/safer-transactions.d.ts +1 -1
  694. package/dist/types/utils/prepare-extension-provider.d.ts +5 -0
  695. package/dist/types/utils/table.d.ts +0 -1
  696. package/docs/0-intro.tsx +0 -1
  697. package/package.json +37 -37
  698. package/report.api.md +307 -244
  699. package/dist/cjs/labs/next/presets/preset.js +0 -106
  700. package/dist/cjs/plugins/analytics/analytics-queue.js +0 -79
  701. package/dist/cjs/plugins/analytics/fire-analytics-event.js +0 -35
  702. package/dist/cjs/plugins/collab-edit/provider/channel.js +0 -313
  703. package/dist/cjs/plugins/collab-edit/provider/logger.js +0 -17
  704. package/dist/cjs/plugins/collab-edit/provider/mock-users.js +0 -19
  705. package/dist/cjs/plugins/data-consumer/plugin-key.js +0 -9
  706. package/dist/cjs/plugins/media/toolbar/toolbar-messages.js +0 -15
  707. package/dist/cjs/profiler/render-count.js +0 -60
  708. package/dist/cjs/ui/ColorPalette/Color/index.js +0 -9
  709. package/dist/cjs/ui/ConfigPanel/FieldDescription.js +0 -19
  710. package/dist/cjs/ui/WithPluginState/types.js +0 -5
  711. package/dist/es2019/labs/next/presets/preset.js +0 -71
  712. package/dist/es2019/plugins/analytics/analytics-queue.js +0 -53
  713. package/dist/es2019/plugins/analytics/fire-analytics-event.js +0 -26
  714. package/dist/es2019/plugins/collab-edit/provider/channel.js +0 -179
  715. package/dist/es2019/plugins/collab-edit/provider/logger.js +0 -8
  716. package/dist/es2019/plugins/collab-edit/provider/mock-users.js +0 -12
  717. package/dist/es2019/plugins/data-consumer/plugin-key.js +0 -2
  718. package/dist/es2019/plugins/media/toolbar/toolbar-messages.js +0 -8
  719. package/dist/es2019/profiler/render-count.js +0 -53
  720. package/dist/es2019/ui/ColorPalette/Color/index.js +0 -2
  721. package/dist/es2019/ui/ConfigPanel/FieldDescription.js +0 -12
  722. package/dist/esm/labs/next/presets/preset.js +0 -98
  723. package/dist/esm/plugins/analytics/analytics-queue.js +0 -71
  724. package/dist/esm/plugins/analytics/fire-analytics-event.js +0 -28
  725. package/dist/esm/plugins/analytics/types/type-ahead.js +0 -1
  726. package/dist/esm/plugins/collab-edit/provider/channel.js +0 -305
  727. package/dist/esm/plugins/collab-edit/provider/logger.js +0 -10
  728. package/dist/esm/plugins/collab-edit/provider/mock-users.js +0 -12
  729. package/dist/esm/plugins/data-consumer/plugin-key.js +0 -2
  730. package/dist/esm/plugins/media/toolbar/toolbar-messages.js +0 -8
  731. package/dist/esm/profiler/render-count.js +0 -49
  732. package/dist/esm/ui/ColorPalette/Color/index.js +0 -2
  733. package/dist/esm/ui/ConfigPanel/FieldDescription.js +0 -11
  734. package/dist/esm/ui/WithPluginState/types.js +0 -1
  735. package/dist/types/labs/next/presets/preset.d.ts +0 -46
  736. package/dist/types/plugins/analytics/analytics-queue.d.ts +0 -10
  737. package/dist/types/plugins/analytics/fire-analytics-event.d.ts +0 -9
  738. package/dist/types/plugins/analytics/types/type-ahead.d.ts +0 -1
  739. package/dist/types/plugins/collab-edit/provider/channel.d.ts +0 -48
  740. package/dist/types/plugins/collab-edit/provider/logger.d.ts +0 -1
  741. package/dist/types/plugins/collab-edit/provider/mock-users.d.ts +0 -6
  742. package/dist/types/plugins/data-consumer/plugin-key.d.ts +0 -2
  743. package/dist/types/plugins/media/toolbar/toolbar-messages.d.ts +0 -7
  744. package/dist/types/profiler/render-count.d.ts +0 -14
  745. package/dist/types/ui/ColorPalette/Color/index.d.ts +0 -2
  746. package/dist/types/ui/ConfigPanel/FieldDescription.d.ts +0 -6
  747. package/dist/types/ui/WithPluginState/types.d.ts +0 -10
  748. /package/dist/cjs/{plugins/analytics/types/type-ahead.js → types/get-editor-props.js} +0 -0
  749. /package/dist/es2019/{plugins/analytics/types/type-ahead.js → types/get-editor-props.js} +0 -0
  750. /package/dist/{es2019/ui/WithPluginState/types.js → esm/types/get-editor-props.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { closeHistory } from 'prosemirror-history';
2
2
  import { Fragment, Node as PMNode, Slice } from 'prosemirror-model';
3
3
  import { TextSelection, NodeSelection } from 'prosemirror-state';
4
- import { canInsert, findParentNodeOfType, hasParentNodeOfType, safeInsert } from 'prosemirror-utils';
4
+ import { canInsert, findParentNodeOfType, findParentNodeOfTypeClosestToPos, hasParentNodeOfType, safeInsert } from 'prosemirror-utils';
5
5
  import uuid from 'uuid/v4';
6
6
  import { replaceSelectedTable } from '@atlaskit/editor-tables/utils';
7
7
  import { compose, insideTable, isParagraph, isText, isLinkMark, insideTableCell, isInListItem } from '../../utils';
@@ -112,7 +112,127 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice) {
112
112
  return true;
113
113
  };
114
114
  }
115
- export function handlePastePanelIntoList(slice) {
115
+ export function handlePasteNonNestableBlockNodesIntoList(slice) {
116
+ return (state, dispatch) => {
117
+ var _tr$doc$nodeAt, _sliceContent$firstCh, _findParentNodeOfType;
118
+ const {
119
+ tr
120
+ } = state;
121
+ const {
122
+ selection
123
+ } = tr;
124
+ const {
125
+ $from,
126
+ $to,
127
+ from,
128
+ to
129
+ } = selection;
130
+ const {
131
+ orderedList,
132
+ bulletList,
133
+ listItem
134
+ } = state.schema.nodes;
135
+
136
+ // Selected nodes
137
+ const selectionParentListItemNode = findParentNodeOfType(listItem)(selection);
138
+ const selectionParentListNodeWithPos = findParentNodeOfType([bulletList, orderedList])(selection);
139
+ const selectionParentListNode = selectionParentListNodeWithPos === null || selectionParentListNodeWithPos === void 0 ? void 0 : selectionParentListNodeWithPos.node;
140
+
141
+ // Slice info
142
+ const sliceContent = slice.content;
143
+ const sliceIsListItems = isListNode(sliceContent.firstChild) && isListNode(sliceContent.lastChild);
144
+
145
+ // Find case of slices that can be inserted into a list item
146
+ // (eg. paragraphs, list items, code blocks, media single)
147
+ // These scenarios already get handled elsewhere and don't need to split the list
148
+ let sliceContainsBlockNodesOtherThanThoseAllowedInListItem = false;
149
+ slice.content.forEach(child => {
150
+ if (child.isBlock && !listItem.spec.content.includes(child.type.name)) {
151
+ sliceContainsBlockNodesOtherThanThoseAllowedInListItem = true;
152
+ }
153
+ });
154
+ if (!selectionParentListItemNode || !sliceContent || canInsert($from, sliceContent) ||
155
+ // eg. inline nodes that can be inserted in a list item
156
+ !sliceContainsBlockNodesOtherThanThoseAllowedInListItem || sliceIsListItems || !selectionParentListNodeWithPos) {
157
+ return false;
158
+ }
159
+
160
+ // Offsets
161
+ const listWrappingOffset = $to.depth - selectionParentListNodeWithPos.depth + 1; // difference in depth between to position and list node
162
+ const listItemWrappingOffset = $to.depth - selectionParentListNodeWithPos.depth; // difference in depth between to position and list item node
163
+
164
+ // Anything to do with nested lists should safeInsert and not be handled here
165
+ const grandParentListNode = findParentNodeOfTypeClosestToPos(tr.doc.resolve(selectionParentListNodeWithPos.pos), [bulletList, orderedList]);
166
+ const selectionIsInNestedList = !!grandParentListNode;
167
+ let selectedListItemHasNestedList = false;
168
+ selectionParentListItemNode.node.content.forEach(child => {
169
+ if (isListNode(child)) {
170
+ selectedListItemHasNestedList = true;
171
+ }
172
+ });
173
+ if (selectedListItemHasNestedList || selectionIsInNestedList) {
174
+ return false;
175
+ }
176
+
177
+ // Node after the insert position
178
+ const nodeAfterInsertPositionIsListItem = ((_tr$doc$nodeAt = tr.doc.nodeAt(to + listItemWrappingOffset)) === null || _tr$doc$nodeAt === void 0 ? void 0 : _tr$doc$nodeAt.type.name) === 'listItem';
179
+
180
+ // Get the next list items position (used later to find the split out ordered list)
181
+ const indexOfNextListItem = $to.indexAfter($to.depth - listItemWrappingOffset);
182
+ const positionOfNextListItem = tr.doc.resolve(selectionParentListNodeWithPos.pos + 1).posAtIndex(indexOfNextListItem);
183
+
184
+ // These nodes paste as plain text by default so need to be handled differently
185
+ const sliceContainsNodeThatPastesAsPlainText = sliceContent.firstChild && ['taskItem', 'taskList', 'heading', 'blockquote'].includes(sliceContent.firstChild.type.name);
186
+
187
+ // Work out position to replace up to
188
+ let replaceTo;
189
+ if (sliceContainsNodeThatPastesAsPlainText && nodeAfterInsertPositionIsListItem) {
190
+ replaceTo = to + listItemWrappingOffset;
191
+ } else if (sliceContainsNodeThatPastesAsPlainText || !nodeAfterInsertPositionIsListItem) {
192
+ replaceTo = to;
193
+ } else {
194
+ replaceTo = to + listWrappingOffset;
195
+ }
196
+
197
+ // handle the insertion of the slice
198
+ if (sliceContainsNodeThatPastesAsPlainText || nodeAfterInsertPositionIsListItem || sliceContent.childCount > 1 && ((_sliceContent$firstCh = sliceContent.firstChild) === null || _sliceContent$firstCh === void 0 ? void 0 : _sliceContent$firstCh.type.name) !== 'paragraph') {
199
+ tr.replaceWith(from, replaceTo, sliceContent).scrollIntoView();
200
+ } else {
201
+ // When the selection is not at the end of a list item
202
+ // eg. middle of list item, start of list item
203
+ tr.replaceSelection(slice).scrollIntoView();
204
+ }
205
+
206
+ // Find the ordered list node after the pasted content so we can set it's order
207
+ const mappedPositionOfNextListItem = tr.mapping.map(positionOfNextListItem);
208
+ if (mappedPositionOfNextListItem > tr.doc.nodeSize) {
209
+ return false;
210
+ }
211
+ const nodeAfterPastedContentResolvedPos = findParentNodeOfTypeClosestToPos(tr.doc.resolve(mappedPositionOfNextListItem), [orderedList]);
212
+
213
+ // Work out the new split out lists 'order' (the number it starts from)
214
+ const originalParentOrderedListNodeOrder = selectionParentListNode === null || selectionParentListNode === void 0 ? void 0 : selectionParentListNode.attrs.order;
215
+ const numOfListItemsInOriginalList = (_findParentNodeOfType = findParentNodeOfTypeClosestToPos(tr.doc.resolve(from - 1), [orderedList])) === null || _findParentNodeOfType === void 0 ? void 0 : _findParentNodeOfType.node.childCount;
216
+
217
+ // Set the new split out lists order attribute
218
+ if (typeof originalParentOrderedListNodeOrder === 'number' && numOfListItemsInOriginalList && nodeAfterPastedContentResolvedPos) {
219
+ tr.setNodeMarkup(nodeAfterPastedContentResolvedPos.pos, orderedList, {
220
+ ...nodeAfterPastedContentResolvedPos.node.attrs,
221
+ order: originalParentOrderedListNodeOrder + numOfListItemsInOriginalList
222
+ });
223
+ }
224
+
225
+ // dispatch transaction
226
+ if (tr.docChanged) {
227
+ if (dispatch) {
228
+ dispatch(tr);
229
+ }
230
+ return true;
231
+ }
232
+ return false;
233
+ };
234
+ }
235
+ export function handlePastePanelOrDecisionContentIntoList(slice) {
116
236
  return (state, dispatch) => {
117
237
  const {
118
238
  schema,
@@ -122,17 +242,19 @@ export function handlePastePanelIntoList(slice) {
122
242
  selection
123
243
  } = tr;
124
244
  // Check this pasting action is related to copy content from panel node into a selected the list node
125
- const panelNode = slice.content.firstChild;
245
+ const blockNode = slice.content.firstChild;
126
246
  const isSliceWholeNode = slice.openStart === 0 && slice.openEnd === 0;
127
247
  const selectionParentListItemNode = selection.$to.node(selection.$to.depth - 1);
128
248
  const sliceIsWholeNodeButShouldNotReplaceSelection = isSliceWholeNode && !doesSelectionWhichStartsOrEndsInListContainEntireList(selection);
129
- if (!dispatch || !selectionParentListItemNode || (selectionParentListItemNode === null || selectionParentListItemNode === void 0 ? void 0 : selectionParentListItemNode.type) !== schema.nodes.listItem || !panelNode || (panelNode === null || panelNode === void 0 ? void 0 : panelNode.type) !== schema.nodes.panel || (panelNode === null || panelNode === void 0 ? void 0 : panelNode.content.firstChild) === undefined || sliceIsWholeNodeButShouldNotReplaceSelection) {
249
+ if (!selectionParentListItemNode || (selectionParentListItemNode === null || selectionParentListItemNode === void 0 ? void 0 : selectionParentListItemNode.type) !== schema.nodes.listItem || !blockNode || !['panel', 'decisionList'].includes(blockNode === null || blockNode === void 0 ? void 0 : blockNode.type.name) || slice.content.childCount > 1 || (blockNode === null || blockNode === void 0 ? void 0 : blockNode.content.firstChild) === undefined || sliceIsWholeNodeButShouldNotReplaceSelection) {
130
250
  return false;
131
251
  }
132
252
 
133
253
  // Paste the panel node contents extracted instead of pasting the entire panel node
134
254
  tr.replaceSelection(slice).scrollIntoView();
135
- dispatch(tr);
255
+ if (dispatch) {
256
+ dispatch(tr);
257
+ }
136
258
  return true;
137
259
  };
138
260
  }
@@ -1,8 +1,7 @@
1
1
  import { createPlugin } from './pm-plugins/main';
2
2
  const pastePlugin = ({
3
3
  cardOptions,
4
- sanitizePrivateContent,
5
- plainTextPasteLinkification
4
+ sanitizePrivateContent
6
5
  }) => ({
7
6
  name: 'paste',
8
7
  pmPlugins() {
@@ -1,7 +1,6 @@
1
1
  import { ACTION, INPUT_METHOD, EVENT_TYPE, ACTION_SUBJECT, ACTION_SUBJECT_ID, addAnalytics, PasteTypes, PasteContents, withAnalytics } from '../../analytics';
2
2
  import { getPasteSource } from '../util';
3
- import { handlePasteAsPlainText, handlePasteIntoTaskOrDecisionOrPanel, handleCodeBlock, handleMediaSingle, handlePastePreservingMarks, handleMarkdown, handleRichText, handleExpandPasteInTable, handleSelectedTable, handlePasteLinkOnSelectedText, handlePasteIntoCaption, handlePastePanelIntoList } from '../handlers';
4
- import { pipe } from '../../../utils';
3
+ import { handlePasteAsPlainText, handlePasteIntoTaskOrDecisionOrPanel, handleCodeBlock, handleMediaSingle, handlePastePreservingMarks, handleMarkdown, handleRichText, handleExpandPasteInTable, handleSelectedTable, handlePasteLinkOnSelectedText, handlePasteIntoCaption, handlePastePanelOrDecisionContentIntoList, handlePasteNonNestableBlockNodesIntoList } from '../handlers';
5
4
  import { findParentNode } from 'prosemirror-utils';
6
5
  import { mapSlice } from '../../../utils/slice';
7
6
  import { getLinkDomain } from '../../hyperlink/utils';
@@ -50,17 +49,18 @@ const nodeToActionSubjectId = {
50
49
  tableRow: ACTION_SUBJECT_ID.PASTE_TABLE_ROW,
51
50
  taskList: ACTION_SUBJECT_ID.PASTE_TASK_LIST
52
51
  };
53
- export function getContent(state, slice) {
52
+ export function getContent({
53
+ schema,
54
+ slice
55
+ }) {
54
56
  const {
55
- schema: {
56
- nodes: {
57
- paragraph
58
- },
59
- marks: {
60
- link
61
- }
57
+ nodes: {
58
+ paragraph
59
+ },
60
+ marks: {
61
+ link
62
62
  }
63
- } = state;
63
+ } = schema;
64
64
  const nodeOrMarkName = new Set();
65
65
  slice.content.forEach(node => {
66
66
  if (node.type === paragraph && node.content.size === 0) {
@@ -99,20 +99,18 @@ export function getMediaTraceId(slice) {
99
99
  });
100
100
  return traceId;
101
101
  }
102
- function getActionSubjectId(view) {
102
+ function getActionSubjectId({
103
+ selection,
104
+ schema
105
+ }) {
103
106
  const {
104
- state: {
105
- selection,
106
- schema: {
107
- nodes: {
108
- paragraph,
109
- listItem,
110
- taskItem,
111
- decisionItem
112
- }
113
- }
107
+ nodes: {
108
+ paragraph,
109
+ listItem,
110
+ taskItem,
111
+ decisionItem
114
112
  }
115
- } = view;
113
+ } = schema;
116
114
  const parent = findParentNode(node => {
117
115
  if (node.type !== paragraph && node.type !== listItem && node.type !== taskItem && node.type !== decisionItem) {
118
116
  return true;
@@ -156,49 +154,62 @@ function createPastePayload(actionSubjectId, attributes, linkDomain) {
156
154
  } : {})
157
155
  };
158
156
  }
159
- export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
160
- const text = event.clipboardData ? event.clipboardData.getData('text/plain') || event.clipboardData.getData('text/uri-list') : '';
161
- const actionSubjectId = getActionSubjectId(view);
162
- const pasteSize = slice.size;
163
- const content = getContent(view.state, slice);
164
- const linkUrls = [];
165
- const mediaTraceId = getMediaTraceId(slice);
166
-
167
- // If we have a link among the pasted content, grab the
168
- // domain and send it up with the analytics event
169
- if (content === PasteContents.url || content === PasteContents.mixed) {
170
- mapSlice(slice, node => {
171
- const linkMark = node.marks.find(mark => mark.type.name === 'link');
172
- if (linkMark) {
173
- linkUrls.push(linkMark.attrs.href);
174
- }
175
- return node;
157
+ function createPasteAnalyticsPayloadBySelection(event, slice, pasteContext) {
158
+ return selection => {
159
+ const text = event.clipboardData ? event.clipboardData.getData('text/plain') || event.clipboardData.getData('text/uri-list') : '';
160
+ const actionSubjectId = getActionSubjectId({
161
+ selection: selection,
162
+ schema: selection.$from.doc.type.schema
176
163
  });
177
- }
178
- if (pasteContext.asPlain) {
179
- return createPasteAsPlainPayload(actionSubjectId, text, linkUrls.length);
180
- }
181
- const source = getPasteSource(event);
182
- if (pasteContext.type === PasteTypes.plain) {
164
+ const pasteSize = slice.size;
165
+ const content = getContent({
166
+ schema: selection.$from.doc.type.schema,
167
+ slice
168
+ });
169
+ const linkUrls = [];
170
+ const mediaTraceId = getMediaTraceId(slice);
171
+
172
+ // If we have a link among the pasted content, grab the
173
+ // domain and send it up with the analytics event
174
+ if (content === PasteContents.url || content === PasteContents.mixed) {
175
+ mapSlice(slice, node => {
176
+ const linkMark = node.marks.find(mark => mark.type.name === 'link');
177
+ if (linkMark) {
178
+ linkUrls.push(linkMark.attrs.href);
179
+ }
180
+ return node;
181
+ });
182
+ }
183
+ if (pasteContext.asPlain) {
184
+ return createPasteAsPlainPayload(actionSubjectId, text, linkUrls.length);
185
+ }
186
+ const source = getPasteSource(event);
187
+ if (pasteContext.type === PasteTypes.plain) {
188
+ return createPastePayload(actionSubjectId, {
189
+ pasteSize: text.length,
190
+ type: pasteContext.type,
191
+ content: PasteContents.text,
192
+ source,
193
+ hyperlinkPasteOnText: false,
194
+ linksInPasteCount: linkUrls.length,
195
+ pasteSplitList: pasteContext.pasteSplitList
196
+ });
197
+ }
198
+ const linkDomains = linkUrls.map(getLinkDomain);
183
199
  return createPastePayload(actionSubjectId, {
184
- pasteSize: text.length,
185
200
  type: pasteContext.type,
186
- content: PasteContents.text,
201
+ pasteSize,
202
+ content,
187
203
  source,
188
- hyperlinkPasteOnText: false,
189
- linksInPasteCount: linkUrls.length
190
- });
191
- }
192
- const linkDomains = linkUrls.map(getLinkDomain);
193
- return createPastePayload(actionSubjectId, {
194
- type: pasteContext.type,
195
- pasteSize,
196
- content,
197
- source,
198
- hyperlinkPasteOnText: !!pasteContext.hyperlinkPasteOnText,
199
- linksInPasteCount: linkUrls.length,
200
- mediaTraceId
201
- }, linkDomains);
204
+ hyperlinkPasteOnText: !!pasteContext.hyperlinkPasteOnText,
205
+ linksInPasteCount: linkUrls.length,
206
+ mediaTraceId,
207
+ pasteSplitList: pasteContext.pasteSplitList
208
+ }, linkDomains);
209
+ };
210
+ }
211
+ export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
212
+ return createPasteAnalyticsPayloadBySelection(event, slice, pasteContext)(view.state.selection);
202
213
  }
203
214
 
204
215
  // TODO: ED-6612 We should not dispatch only analytics, it's preferred to wrap each command with his own analytics.
@@ -211,53 +222,80 @@ export function sendPasteAnalyticsEvent(view, event, slice, pasteContext) {
211
222
  export function pasteCommandWithAnalytics(view, event, slice, pasteContext) {
212
223
  return withAnalytics(() => createPasteAnalyticsPayload(view, event, slice, pasteContext));
213
224
  }
214
- export const handlePasteAsPlainTextWithAnalytics = (view, event, slice) => pipe(handlePasteAsPlainText, pasteCommandWithAnalytics(view, event, slice, {
225
+ export const handlePasteAsPlainTextWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
215
226
  type: PasteTypes.plain,
216
227
  asPlain: true
217
- }))(slice, event);
218
- export const handlePasteIntoTaskAndDecisionWithAnalytics = (view, event, slice, type) => pipe(handlePasteIntoTaskOrDecisionOrPanel, pasteCommandWithAnalytics(view, event, slice, {
219
- type: type
220
- }))(slice);
221
- export const handlePasteIntoCaptionWithAnalytics = (view, event, slice, type) => pipe(handlePasteIntoCaption, pasteCommandWithAnalytics(view, event, slice, {
222
- type: type
223
- }))(slice);
224
- export const handleCodeBlockWithAnalytics = (view, event, slice, text) => pipe(handleCodeBlock, pasteCommandWithAnalytics(view, event, slice, {
228
+ }))(handlePasteAsPlainText(slice, event));
229
+ export const handlePasteIntoTaskAndDecisionWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
230
+ type
231
+ }))(handlePasteIntoTaskOrDecisionOrPanel(slice));
232
+ export const handlePasteIntoCaptionWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
233
+ type
234
+ }))(handlePasteIntoCaption(slice));
235
+ export const handleCodeBlockWithAnalytics = (view, event, slice, text) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
225
236
  type: PasteTypes.plain
226
- }))(text);
227
- export const handleMediaSingleWithAnalytics = (view, event, slice, type) => pipe(handleMediaSingle(INPUT_METHOD.CLIPBOARD), pasteCommandWithAnalytics(view, event, slice, {
237
+ }))(handleCodeBlock(text));
238
+ export const handleMediaSingleWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
228
239
  type
229
- }))(slice);
230
- export const handlePastePreservingMarksWithAnalytics = (view, event, slice, type) => {
231
- return pipe(handlePastePreservingMarks, pasteCommandWithAnalytics(view, event, slice, {
232
- type
233
- }))(slice);
234
- };
235
- export const handleMarkdownWithAnalytics = (view, event, slice) => pipe(handleMarkdown, pasteCommandWithAnalytics(view, event, slice, {
240
+ }))(handleMediaSingle(INPUT_METHOD.CLIPBOARD)(slice));
241
+ export const handlePastePreservingMarksWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
242
+ type
243
+ }))(handlePastePreservingMarks(slice));
244
+ export const handleMarkdownWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
236
245
  type: PasteTypes.markdown
237
- }))(slice);
238
- export const handleRichTextWithAnalytics = (view, event, slice) => pipe(handleRichText, pasteCommandWithAnalytics(view, event, slice, {
239
- type: PasteTypes.richText
240
- }))(slice);
241
- export const handlePastePanelIntoListWithAnalytics = (view, event, slice) => pipe(handlePastePanelIntoList, pasteCommandWithAnalytics(view, event, slice, {
246
+ }))(handleMarkdown(slice));
247
+ export const handleRichTextWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
242
248
  type: PasteTypes.richText
243
- }))(slice);
244
- export const handleExpandWithAnalytics = (view, event, slice) => pipe(handleExpandPasteInTable, pasteCommandWithAnalytics(view, event, slice, {
249
+ }))(handleRichText(slice));
250
+ function injectAnalyticsPayloadBeforeCommand(createPayloadByTransaction) {
251
+ return mainCommand => {
252
+ return (state, dispatch, view) => {
253
+ let originalTransaction = state.tr;
254
+ const fakeDispatch = tr => {
255
+ originalTransaction = tr;
256
+ };
257
+ const result = mainCommand(state, fakeDispatch, view);
258
+ if (!result) {
259
+ return false;
260
+ }
261
+ if (dispatch && originalTransaction.docChanged) {
262
+ // it needs to know the selection before the changes
263
+ const payload = createPayloadByTransaction(state.selection);
264
+ addAnalytics(state, originalTransaction, payload);
265
+ dispatch(originalTransaction);
266
+ }
267
+ return true;
268
+ };
269
+ };
270
+ }
271
+ export const handlePastePanelOrDecisionIntoListWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
245
272
  type: PasteTypes.richText
246
- }))(slice);
247
- export const handleSelectedTableWithAnalytics = (view, event, slice) => pipe(handleSelectedTable, pasteCommandWithAnalytics(view, event, slice, {
273
+ }))(handlePastePanelOrDecisionContentIntoList(slice));
274
+ export const handlePasteNonNestableBlockNodesIntoListWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
275
+ type: PasteTypes.richText,
276
+ pasteSplitList: true
277
+ }))(handlePasteNonNestableBlockNodesIntoList(slice));
278
+ export const handleExpandWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
279
+ type: PasteTypes.richText,
280
+ pasteSplitList: true
281
+ }))(handleExpandPasteInTable(slice));
282
+ export const handleSelectedTableWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
248
283
  type: PasteTypes.richText
249
- }))(slice);
250
- export const handlePasteLinkOnSelectedTextWithAnalytics = (view, event, slice, type) => pipe(handlePasteLinkOnSelectedText, pasteCommandWithAnalytics(view, event, slice, {
284
+ }))(handleSelectedTable(slice));
285
+ export const handlePasteLinkOnSelectedTextWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
251
286
  type,
252
287
  hyperlinkPasteOnText: true
253
- }))(slice);
288
+ }))(handlePasteLinkOnSelectedText(slice));
254
289
  export const createPasteMeasurePayload = ({
255
290
  view,
256
291
  duration,
257
292
  content,
258
293
  distortedDuration
259
294
  }) => {
260
- const pasteIntoNode = getActionSubjectId(view);
295
+ const pasteIntoNode = getActionSubjectId({
296
+ selection: view.state.selection,
297
+ schema: view.state.schema
298
+ });
261
299
  return {
262
300
  action: ACTION.PASTED_TIMED,
263
301
  actionSubject: ACTION_SUBJECT.EDITOR,
@@ -12,7 +12,7 @@ import { linkifyContent } from '../../hyperlink/utils';
12
12
  import { transformSliceNestedExpandToExpand } from '../../expand/utils';
13
13
  import { handleMacroAutoConvert, handleMention, handleParagraphBlockMarks } from '../handlers';
14
14
  import { transformSliceToJoinAdjacentCodeBlocks, transformSingleLineCodeBlockToCodeMark } from '../../code-block/utils';
15
- import { createPasteMeasurePayload, getContentNodeTypes, handlePasteAsPlainTextWithAnalytics, handlePasteIntoTaskAndDecisionWithAnalytics, handleCodeBlockWithAnalytics, handleMediaSingleWithAnalytics, handlePastePreservingMarksWithAnalytics, handleMarkdownWithAnalytics, handleRichTextWithAnalytics, handleExpandWithAnalytics, handleSelectedTableWithAnalytics, handlePasteLinkOnSelectedTextWithAnalytics, sendPasteAnalyticsEvent, handlePasteIntoCaptionWithAnalytics, handlePastePanelIntoListWithAnalytics } from './analytics';
15
+ import { createPasteMeasurePayload, getContentNodeTypes, handlePasteAsPlainTextWithAnalytics, handlePasteIntoTaskAndDecisionWithAnalytics, handleCodeBlockWithAnalytics, handleMediaSingleWithAnalytics, handlePastePreservingMarksWithAnalytics, handleMarkdownWithAnalytics, handleRichTextWithAnalytics, handleExpandWithAnalytics, handleSelectedTableWithAnalytics, handlePasteLinkOnSelectedTextWithAnalytics, sendPasteAnalyticsEvent, handlePasteIntoCaptionWithAnalytics, handlePastePanelOrDecisionIntoListWithAnalytics, handlePasteNonNestableBlockNodesIntoListWithAnalytics } from './analytics';
16
16
  import { analyticsPluginKey, PasteTypes } from '../../analytics';
17
17
  import { isInsideBlockQuote, insideTable, measurements } from '../../../utils';
18
18
  import { measureRender } from '@atlaskit/editor-common/utils';
@@ -30,13 +30,18 @@ import { extractSliceFromStep } from '../../../utils/step';
30
30
  import { pluginKey as stateKey, createPluginState } from './plugin-factory';
31
31
  export { pluginKey as stateKey } from './plugin-factory';
32
32
  export { md } from '../md';
33
+ import { getFeatureFlags } from '../../feature-flags-context';
33
34
  export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, cardOptions, sanitizePrivateContent, providerFactory) {
34
35
  const atlassianMarkDownParser = new MarkdownTransformer(schema, md);
35
36
  function getMarkdownSlice(text, openStart, openEnd) {
36
37
  let textInput = text;
37
- if (textInput.includes('\\')) {
38
- textInput = textInput.replace(/\\/g, '\\\\');
38
+ const textSplitByCodeBlock = textInput.split(/```/);
39
+ for (let i = 0; i < textSplitByCodeBlock.length; i++) {
40
+ if (i % 2 === 0) {
41
+ textSplitByCodeBlock[i] = textSplitByCodeBlock[i].replace(/\\/g, '\\\\');
42
+ }
39
43
  }
44
+ textInput = textSplitByCodeBlock.join('```');
40
45
  const doc = atlassianMarkDownParser.parse(escapeLinks(textInput));
41
46
  if (doc && doc.content) {
42
47
  return new Slice(doc.content, openStart, openEnd);
@@ -328,7 +333,11 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, cardOptio
328
333
  if (handlePasteIntoCaptionWithAnalytics(view, event, slice, PasteTypes.richText)(state, dispatch)) {
329
334
  return true;
330
335
  }
331
- if (handlePastePanelIntoListWithAnalytics(view, event, slice)(state, dispatch)) {
336
+ const featureFlags = getFeatureFlags(state);
337
+ if (handlePastePanelOrDecisionIntoListWithAnalytics(view, event, slice)(state, dispatch)) {
338
+ return true;
339
+ }
340
+ if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists && handlePasteNonNestableBlockNodesIntoListWithAnalytics(view, event, slice)(state, dispatch)) {
332
341
  return true;
333
342
  }
334
343
  return handleRichTextWithAnalytics(view, event, slice)(state, dispatch);
@@ -10,19 +10,19 @@ export function isPastedFromWord(html) {
10
10
  export function isPastedFromExcel(html) {
11
11
  return !!html && html.indexOf('urn:schemas-microsoft-com:office:excel') >= 0;
12
12
  }
13
- export function isPastedFromDropboxPaper(html) {
13
+ function isPastedFromDropboxPaper(html) {
14
14
  return !!html && !!html.match(/class=\"\s?author-d-.+"/gim);
15
15
  }
16
- export function isPastedFromGoogleDocs(html) {
16
+ function isPastedFromGoogleDocs(html) {
17
17
  return !!html && !!html.match(/id=\"docs-internal-guid-.+"/gim);
18
18
  }
19
- export function isPastedFromGoogleSpreadSheets(html) {
19
+ function isPastedFromGoogleSpreadSheets(html) {
20
20
  return !!html && !!html.match(/data-sheets-.+=/gim);
21
21
  }
22
- export function isPastedFromPages(html) {
22
+ function isPastedFromPages(html) {
23
23
  return !!html && html.indexOf('content="Cocoa HTML Writer"') >= 0;
24
24
  }
25
- export function isPastedFromFabricEditor(html) {
25
+ function isPastedFromFabricEditor(html) {
26
26
  return !!html && html.indexOf('data-pm-slice="') >= 0;
27
27
  }
28
28
  export const isSingleLine = text => {
@@ -51,46 +51,6 @@ export function getPasteSource(event) {
51
51
  return 'uncategorized';
52
52
  }
53
53
 
54
- // TODO: Write JEST tests for this part
55
- export function isCode(str) {
56
- const lines = str.split(/\r?\n|\r/);
57
- if (3 > lines.length) {
58
- return false;
59
- }
60
- let weight = 0;
61
- lines.forEach(line => {
62
- // Ends with : or ;
63
- if (/[:;]$/.test(line)) {
64
- weight++;
65
- }
66
- // Contains second and third braces
67
- if (/[{}\[\]]/.test(line)) {
68
- weight++;
69
- }
70
- // Contains <tag> or </
71
- if (/<\w+>/.test(line) || /<\//.test(line)) {
72
- weight++;
73
- }
74
- // Contains () <- function calls
75
- if (/\(\)/.test(line)) {
76
- weight++;
77
- }
78
- // Contains a link
79
- if (/(^|[^!])\[(.*?)\]\((\S+)\)$/.test(line)) {
80
- weight--;
81
- }
82
- // New line starts with less than two chars. e.g- if, {, <, etc
83
- const token = /^(\s+)[a-zA-Z<{]{2,}/.exec(line);
84
- if (token && 2 <= token[1].length) {
85
- weight++;
86
- }
87
- if (/&&/.test(line)) {
88
- weight++;
89
- }
90
- });
91
- return 4 <= weight && weight >= 0.5 * lines.length;
92
- }
93
-
94
54
  // @see https://product-fabric.atlassian.net/browse/ED-3159
95
55
  // @see https://github.com/markdown-it/markdown-it/issues/38
96
56
  export function escapeLinks(text) {
@@ -210,5 +210,5 @@ const decorateWithPluginOptions = (plugin, options) => {
210
210
  };
211
211
  return plugin;
212
212
  };
213
- const placeholderTextPlugin = options => decorateWithPluginOptions(basePlaceholderTextPlugin(options), options);
213
+ const placeholderTextPlugin = (options, api) => decorateWithPluginOptions(basePlaceholderTextPlugin(options, api), options);
214
214
  export default placeholderTextPlugin;
@@ -68,10 +68,6 @@ export const IconPanel = Loadable({
68
68
  loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-icon-panel" */'./panel').then(module => module.default),
69
69
  loading: () => null
70
70
  });
71
- export const IconCustomPanel = Loadable({
72
- loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-icon-custon-panel" */'./custom-panel').then(module => module.default),
73
- loading: () => null
74
- });
75
71
  export const IconQuote = Loadable({
76
72
  loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-icon-quote" */'./quote').then(module => module.default),
77
73
  loading: () => null
@@ -80,10 +76,6 @@ export const IconStatus = Loadable({
80
76
  loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-icon-status" */'./status').then(module => module.default),
81
77
  loading: () => null
82
78
  });
83
- export const IconFallback = Loadable({
84
- loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-icon-fallback" */'./fallback').then(module => module.default),
85
- loading: () => null
86
- });
87
79
  function importHeading(level) {
88
80
  switch (level) {
89
81
  case 1: