@atlaskit/editor-core 166.0.4 → 167.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 (489) hide show
  1. package/.eslintrc.js +46 -1
  2. package/CHANGELOG.md +87 -0
  3. package/dist/cjs/actions/index.js +26 -2
  4. package/dist/cjs/create-editor/ReactEditorView.js +2 -0
  5. package/dist/cjs/create-editor/create-plugins-list.js +1 -2
  6. package/dist/cjs/editor.js +5 -2
  7. package/dist/cjs/keymaps/index.js +5 -1
  8. package/dist/cjs/labs/next/ContentComponents.js +8 -4
  9. package/dist/cjs/labs/next/full-page.js +14 -8
  10. package/dist/cjs/nodeviews/getInlineNodeViewProducer.js +7 -3
  11. package/dist/cjs/nodeviews/getInlineNodeViewProducer.styles.js +3 -1
  12. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/styles.js +3 -1
  13. package/dist/cjs/plugins/analytics/types/enums.js +3 -0
  14. package/dist/cjs/plugins/base/index.js +8 -17
  15. package/dist/cjs/plugins/base/pm-plugins/better-type-history.js +3 -12
  16. package/dist/cjs/plugins/base/pm-plugins/inline-cursor-target.js +71 -16
  17. package/dist/cjs/plugins/block-type/commands/block-type.js +32 -22
  18. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/styled.js +4 -2
  19. package/dist/cjs/plugins/breakout/ui/LayoutButton.js +4 -11
  20. package/dist/cjs/plugins/card/styles.js +1 -1
  21. package/dist/cjs/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  22. package/dist/cjs/plugins/code-block/actions.js +36 -2
  23. package/dist/cjs/plugins/code-block/nodeviews/code-block.js +70 -1
  24. package/dist/cjs/plugins/code-block/pm-plugins/actions.js +2 -1
  25. package/dist/cjs/plugins/code-block/pm-plugins/main.js +46 -8
  26. package/dist/cjs/plugins/code-block/styles.js +28 -24
  27. package/dist/cjs/plugins/collab-edit/styles.js +4 -2
  28. package/dist/cjs/plugins/collab-edit/ui/styles.js +4 -2
  29. package/dist/cjs/plugins/collab-edit/utils.js +1 -0
  30. package/dist/cjs/plugins/date/ui/DatePicker/index.js +3 -1
  31. package/dist/cjs/plugins/expand/ui/styles.js +16 -14
  32. package/dist/cjs/plugins/extension/commands.js +3 -2
  33. package/dist/cjs/plugins/extension/context-panel.js +21 -7
  34. package/dist/cjs/plugins/extension/ui/Extension/Extension/styles.js +6 -4
  35. package/dist/cjs/plugins/extension/ui/Extension/InlineExtension/styles.js +3 -1
  36. package/dist/cjs/plugins/extension/ui/Extension/styles.js +7 -5
  37. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -2
  38. package/dist/cjs/plugins/fake-text-cursor/styles.js +3 -1
  39. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  40. package/dist/cjs/plugins/find-replace/styles.js +2 -6
  41. package/dist/cjs/plugins/find-replace/ui/styles.js +4 -2
  42. package/dist/cjs/plugins/floating-toolbar/ui/DropdownMenu.js +3 -1
  43. package/dist/cjs/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +3 -1
  44. package/dist/cjs/plugins/floating-toolbar/ui/Separator.js +3 -1
  45. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +6 -4
  46. package/dist/cjs/plugins/floating-toolbar/ui/styles.js +12 -10
  47. package/dist/cjs/plugins/grid/styles.js +3 -1
  48. package/dist/cjs/plugins/help-dialog/ui/styles.js +9 -7
  49. package/dist/cjs/plugins/hyperlink/pm-plugins/input-rule.js +23 -1
  50. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +10 -1
  51. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -3
  52. package/dist/cjs/plugins/hyperlink/utils.js +53 -2
  53. package/dist/cjs/plugins/jira-issue/nodeviews/jira-issue.js +4 -2
  54. package/dist/cjs/plugins/layout/styles.js +1 -1
  55. package/dist/cjs/plugins/media/commands/helpers.js +10 -9
  56. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +23 -4
  57. package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +6 -0
  58. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -3
  59. package/dist/cjs/plugins/media/pm-plugins/main.js +1 -0
  60. package/dist/cjs/plugins/media/styles.js +1 -1
  61. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.js +3 -1
  62. package/dist/cjs/plugins/media/ui/Media/DropPlaceholder.js +4 -2
  63. package/dist/cjs/plugins/media/ui/MediaLinkingToolbar.js +3 -1
  64. package/dist/cjs/plugins/mentions/styles.js +3 -1
  65. package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +3 -1
  66. package/dist/cjs/plugins/mentions/ui/InviteItem/styles.js +4 -2
  67. package/dist/cjs/plugins/panel/index.js +1 -0
  68. package/dist/cjs/plugins/panel/nodeviews/panel.js +4 -1
  69. package/dist/cjs/plugins/panel/pm-plugins/keymaps.js +21 -3
  70. package/dist/cjs/plugins/paste/handlers.js +23 -0
  71. package/dist/cjs/plugins/paste/linkify-md-plugin.js +7 -0
  72. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +9 -1
  73. package/dist/cjs/plugins/paste/pm-plugins/main.js +27 -1
  74. package/dist/cjs/plugins/placeholder/index.js +15 -3
  75. package/dist/cjs/plugins/placeholder/styles.js +3 -1
  76. package/dist/cjs/plugins/placeholder-text/styles.js +3 -1
  77. package/dist/cjs/plugins/selection/gap-cursor/styles.js +1 -1
  78. package/dist/cjs/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  79. package/dist/cjs/plugins/status/ui/statusPicker.js +3 -3
  80. package/dist/cjs/plugins/table/index.js +14 -4
  81. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +6 -6
  82. package/dist/cjs/plugins/table/nodeviews/table.js +9 -4
  83. package/dist/cjs/plugins/table/pm-plugins/main.js +1 -4
  84. package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +118 -0
  85. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  86. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
  87. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
  88. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  89. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  90. package/dist/cjs/plugins/table/transforms/column-width.js +1 -2
  91. package/dist/cjs/plugins/table/transforms/fix-tables.js +1 -3
  92. package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +4 -1
  93. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +3 -1
  94. package/dist/cjs/plugins/table/ui/common-styles.js +4 -2
  95. package/dist/cjs/plugins/table/ui/consts.js +14 -11
  96. package/dist/cjs/plugins/table/ui/ui-styles.js +17 -10
  97. package/dist/cjs/plugins/table/utils/decoration.js +3 -4
  98. package/dist/cjs/plugins/table/utils/paste.js +9 -9
  99. package/dist/cjs/plugins/type-ahead/index.js +4 -3
  100. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +3 -1
  101. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  102. package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +11 -9
  103. package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +73 -3
  104. package/dist/cjs/plugins/unsupported-content/styles.js +1 -1
  105. package/dist/cjs/ui/Addon/Dropdown/styles.js +3 -1
  106. package/dist/cjs/ui/Addon/DropdownItem/styles.js +3 -1
  107. package/dist/cjs/ui/Appearance/Chromeless.js +2 -1
  108. package/dist/cjs/ui/Appearance/Comment/Comment.js +10 -3
  109. package/dist/cjs/ui/Appearance/Comment/Toolbar.js +4 -2
  110. package/dist/cjs/ui/Appearance/FullPage/FullPage.js +5 -2
  111. package/dist/cjs/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  112. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  113. package/dist/cjs/ui/Appearance/FullPage/MainToolbar.js +6 -3
  114. package/dist/cjs/ui/ChromeCollapsed/styles.js +1 -1
  115. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +21 -14
  116. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  117. package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +3 -1
  118. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +3 -1
  119. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +3 -1
  120. package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +3 -1
  121. package/dist/cjs/ui/ConfigPanel/Header.js +4 -2
  122. package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +4 -8
  123. package/dist/cjs/ui/ContentStyles/index.js +4 -2
  124. package/dist/cjs/ui/ContextPanel/index.js +3 -1
  125. package/dist/cjs/ui/DropdownMenu/index.js +5 -0
  126. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +6 -4
  127. package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +4 -2
  128. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +4 -2
  129. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
  130. package/dist/cjs/ui/ElementBrowser/components/ElementList/EmptyState.js +3 -1
  131. package/dist/cjs/ui/ElementBrowser/components/ElementSearch.js +3 -1
  132. package/dist/cjs/ui/ElementBrowser/constants.js +3 -1
  133. package/dist/cjs/ui/FloatingToolbar/styles.js +2 -2
  134. package/dist/cjs/ui/LinkSearch/LinkSearchListItem.js +5 -3
  135. package/dist/cjs/ui/PanelTextInput/styles.js +3 -1
  136. package/dist/cjs/ui/PluginSlot/index.js +7 -4
  137. package/dist/cjs/ui/Toolbar/ToolbarInner.js +2 -1
  138. package/dist/cjs/ui/Toolbar/ToolbarWithSizeDetector.js +5 -2
  139. package/dist/cjs/ui/ToolbarFeedback/styles.js +5 -3
  140. package/dist/cjs/ui/WithFlash/index.js +4 -2
  141. package/dist/cjs/ui/styles.js +6 -4
  142. package/dist/cjs/utils/document.js +62 -6
  143. package/dist/cjs/utils/filter/privacy-filter.js +2 -2
  144. package/dist/cjs/utils/step.js +17 -1
  145. package/dist/cjs/version-wrapper.js +1 -1
  146. package/dist/cjs/version.json +1 -1
  147. package/dist/es2019/actions/index.js +25 -1
  148. package/dist/es2019/create-editor/ReactEditorView.js +2 -0
  149. package/dist/es2019/create-editor/create-plugins-list.js +1 -2
  150. package/dist/es2019/editor.js +5 -2
  151. package/dist/es2019/keymaps/index.js +5 -1
  152. package/dist/es2019/labs/next/ContentComponents.js +7 -2
  153. package/dist/es2019/labs/next/full-page.js +11 -8
  154. package/dist/es2019/nodeviews/getInlineNodeViewProducer.js +4 -3
  155. package/dist/es2019/nodeviews/getInlineNodeViewProducer.styles.js +16 -4
  156. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
  157. package/dist/es2019/plugins/analytics/types/enums.js +3 -0
  158. package/dist/es2019/plugins/base/index.js +6 -15
  159. package/dist/es2019/plugins/base/pm-plugins/better-type-history.js +1 -11
  160. package/dist/es2019/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
  161. package/dist/es2019/plugins/block-type/commands/block-type.js +25 -16
  162. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
  163. package/dist/es2019/plugins/breakout/ui/LayoutButton.js +6 -10
  164. package/dist/es2019/plugins/card/styles.js +1 -1
  165. package/dist/es2019/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  166. package/dist/es2019/plugins/code-block/actions.js +32 -0
  167. package/dist/es2019/plugins/code-block/nodeviews/code-block.js +61 -1
  168. package/dist/es2019/plugins/code-block/pm-plugins/actions.js +2 -1
  169. package/dist/es2019/plugins/code-block/pm-plugins/main.js +37 -3
  170. package/dist/es2019/plugins/code-block/styles.js +30 -27
  171. package/dist/es2019/plugins/collab-edit/styles.js +3 -2
  172. package/dist/es2019/plugins/collab-edit/ui/styles.js +4 -3
  173. package/dist/es2019/plugins/collab-edit/utils.js +1 -0
  174. package/dist/es2019/plugins/date/ui/DatePicker/index.js +3 -2
  175. package/dist/es2019/plugins/expand/ui/styles.js +15 -14
  176. package/dist/es2019/plugins/extension/commands.js +3 -2
  177. package/dist/es2019/plugins/extension/context-panel.js +11 -3
  178. package/dist/es2019/plugins/extension/ui/Extension/Extension/styles.js +5 -4
  179. package/dist/es2019/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
  180. package/dist/es2019/plugins/extension/ui/Extension/styles.js +7 -6
  181. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -4
  182. package/dist/es2019/plugins/fake-text-cursor/styles.js +3 -2
  183. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  184. package/dist/es2019/plugins/find-replace/styles.js +4 -4
  185. package/dist/es2019/plugins/find-replace/ui/styles.js +3 -2
  186. package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  187. package/dist/es2019/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
  188. package/dist/es2019/plugins/floating-toolbar/ui/Separator.js +2 -1
  189. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +4 -4
  190. package/dist/es2019/plugins/floating-toolbar/ui/styles.js +11 -10
  191. package/dist/es2019/plugins/grid/styles.js +4 -2
  192. package/dist/es2019/plugins/help-dialog/ui/styles.js +10 -9
  193. package/dist/es2019/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
  194. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +9 -1
  195. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -4
  196. package/dist/es2019/plugins/hyperlink/utils.js +43 -2
  197. package/dist/es2019/plugins/jira-issue/nodeviews/jira-issue.js +6 -5
  198. package/dist/es2019/plugins/layout/styles.js +10 -7
  199. package/dist/es2019/plugins/media/commands/helpers.js +6 -8
  200. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +21 -5
  201. package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +7 -0
  202. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -4
  203. package/dist/es2019/plugins/media/pm-plugins/main.js +2 -0
  204. package/dist/es2019/plugins/media/styles.js +3 -3
  205. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
  206. package/dist/es2019/plugins/media/ui/Media/DropPlaceholder.js +4 -3
  207. package/dist/es2019/plugins/media/ui/MediaLinkingToolbar.js +2 -1
  208. package/dist/es2019/plugins/mentions/styles.js +5 -4
  209. package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +2 -1
  210. package/dist/es2019/plugins/mentions/ui/InviteItem/styles.js +3 -2
  211. package/dist/es2019/plugins/panel/index.js +1 -0
  212. package/dist/es2019/plugins/panel/nodeviews/panel.js +4 -1
  213. package/dist/es2019/plugins/panel/pm-plugins/keymaps.js +22 -4
  214. package/dist/es2019/plugins/paste/handlers.js +23 -0
  215. package/dist/es2019/plugins/paste/linkify-md-plugin.js +7 -1
  216. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +4 -1
  217. package/dist/es2019/plugins/paste/pm-plugins/main.js +27 -2
  218. package/dist/es2019/plugins/placeholder/index.js +12 -1
  219. package/dist/es2019/plugins/placeholder/styles.js +3 -1
  220. package/dist/es2019/plugins/placeholder-text/styles.js +5 -4
  221. package/dist/es2019/plugins/selection/gap-cursor/styles.js +9 -9
  222. package/dist/es2019/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  223. package/dist/es2019/plugins/status/ui/statusPicker.js +3 -3
  224. package/dist/es2019/plugins/table/index.js +13 -4
  225. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +6 -6
  226. package/dist/es2019/plugins/table/nodeviews/table.js +6 -2
  227. package/dist/es2019/plugins/table/pm-plugins/main.js +1 -4
  228. package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +106 -0
  229. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  230. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -4
  231. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +3 -7
  232. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  233. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  234. package/dist/es2019/plugins/table/transforms/column-width.js +1 -2
  235. package/dist/es2019/plugins/table/transforms/fix-tables.js +1 -3
  236. package/dist/es2019/plugins/table/ui/FloatingContextualButton/styles.js +4 -2
  237. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/styles.js +4 -3
  238. package/dist/es2019/plugins/table/ui/common-styles.js +29 -27
  239. package/dist/es2019/plugins/table/ui/consts.js +15 -12
  240. package/dist/es2019/plugins/table/ui/ui-styles.js +28 -23
  241. package/dist/es2019/plugins/table/utils/decoration.js +1 -4
  242. package/dist/es2019/plugins/table/utils/paste.js +9 -9
  243. package/dist/es2019/plugins/type-ahead/index.js +4 -3
  244. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +2 -1
  245. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  246. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
  247. package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +64 -6
  248. package/dist/es2019/plugins/unsupported-content/styles.js +1 -1
  249. package/dist/es2019/ui/Addon/Dropdown/styles.js +3 -2
  250. package/dist/es2019/ui/Addon/DropdownItem/styles.js +3 -2
  251. package/dist/es2019/ui/Appearance/Chromeless.js +2 -1
  252. package/dist/es2019/ui/Appearance/Comment/Comment.js +9 -4
  253. package/dist/es2019/ui/Appearance/Comment/Toolbar.js +4 -2
  254. package/dist/es2019/ui/Appearance/FullPage/FullPage.js +6 -2
  255. package/dist/es2019/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  256. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  257. package/dist/es2019/ui/Appearance/FullPage/MainToolbar.js +7 -3
  258. package/dist/es2019/ui/ChromeCollapsed/styles.js +4 -3
  259. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +10 -2
  260. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  261. package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
  262. package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
  263. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +2 -1
  264. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  265. package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
  266. package/dist/es2019/ui/ConfigPanel/Header.js +3 -2
  267. package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +4 -3
  268. package/dist/es2019/ui/ContentStyles/index.js +3 -2
  269. package/dist/es2019/ui/ContextPanel/index.js +2 -1
  270. package/dist/es2019/ui/DropdownMenu/index.js +5 -0
  271. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +6 -3
  272. package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +3 -2
  273. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +3 -2
  274. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
  275. package/dist/es2019/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
  276. package/dist/es2019/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
  277. package/dist/es2019/ui/ElementBrowser/components/ElementSearch.js +2 -1
  278. package/dist/es2019/ui/ElementBrowser/constants.js +3 -1
  279. package/dist/es2019/ui/FloatingToolbar/styles.js +4 -4
  280. package/dist/es2019/ui/LinkSearch/LinkSearchListItem.js +4 -3
  281. package/dist/es2019/ui/PanelTextInput/styles.js +5 -5
  282. package/dist/es2019/ui/PluginSlot/index.js +7 -4
  283. package/dist/es2019/ui/Toolbar/ToolbarInner.js +2 -1
  284. package/dist/es2019/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
  285. package/dist/es2019/ui/ToolbarFeedback/styles.js +5 -4
  286. package/dist/es2019/ui/WithFlash/index.js +4 -3
  287. package/dist/es2019/ui/styles.js +10 -9
  288. package/dist/es2019/utils/document.js +58 -5
  289. package/dist/es2019/utils/filter/privacy-filter.js +1 -1
  290. package/dist/es2019/utils/step.js +12 -1
  291. package/dist/es2019/version-wrapper.js +1 -1
  292. package/dist/es2019/version.json +1 -1
  293. package/dist/esm/actions/index.js +26 -1
  294. package/dist/esm/create-editor/ReactEditorView.js +2 -0
  295. package/dist/esm/create-editor/create-plugins-list.js +1 -2
  296. package/dist/esm/editor.js +5 -2
  297. package/dist/esm/keymaps/index.js +5 -1
  298. package/dist/esm/labs/next/ContentComponents.js +8 -4
  299. package/dist/esm/labs/next/full-page.js +11 -8
  300. package/dist/esm/nodeviews/getInlineNodeViewProducer.js +4 -3
  301. package/dist/esm/nodeviews/getInlineNodeViewProducer.styles.js +3 -2
  302. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
  303. package/dist/esm/plugins/analytics/types/enums.js +3 -0
  304. package/dist/esm/plugins/base/index.js +8 -17
  305. package/dist/esm/plugins/base/pm-plugins/better-type-history.js +1 -11
  306. package/dist/esm/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
  307. package/dist/esm/plugins/block-type/commands/block-type.js +31 -22
  308. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
  309. package/dist/esm/plugins/breakout/ui/LayoutButton.js +3 -5
  310. package/dist/esm/plugins/card/styles.js +1 -1
  311. package/dist/esm/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  312. package/dist/esm/plugins/code-block/actions.js +28 -0
  313. package/dist/esm/plugins/code-block/nodeviews/code-block.js +67 -1
  314. package/dist/esm/plugins/code-block/pm-plugins/actions.js +2 -1
  315. package/dist/esm/plugins/code-block/pm-plugins/main.js +39 -3
  316. package/dist/esm/plugins/code-block/styles.js +27 -23
  317. package/dist/esm/plugins/collab-edit/styles.js +3 -2
  318. package/dist/esm/plugins/collab-edit/ui/styles.js +3 -2
  319. package/dist/esm/plugins/collab-edit/utils.js +2 -0
  320. package/dist/esm/plugins/date/ui/DatePicker/index.js +2 -1
  321. package/dist/esm/plugins/expand/ui/styles.js +15 -14
  322. package/dist/esm/plugins/extension/commands.js +3 -2
  323. package/dist/esm/plugins/extension/context-panel.js +21 -7
  324. package/dist/esm/plugins/extension/ui/Extension/Extension/styles.js +5 -4
  325. package/dist/esm/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
  326. package/dist/esm/plugins/extension/ui/Extension/styles.js +6 -5
  327. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.js +3 -2
  328. package/dist/esm/plugins/fake-text-cursor/styles.js +2 -1
  329. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  330. package/dist/esm/plugins/find-replace/styles.js +3 -3
  331. package/dist/esm/plugins/find-replace/ui/styles.js +3 -2
  332. package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  333. package/dist/esm/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
  334. package/dist/esm/plugins/floating-toolbar/ui/Separator.js +2 -1
  335. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +5 -4
  336. package/dist/esm/plugins/floating-toolbar/ui/styles.js +11 -10
  337. package/dist/esm/plugins/grid/styles.js +2 -1
  338. package/dist/esm/plugins/help-dialog/ui/styles.js +8 -7
  339. package/dist/esm/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
  340. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +9 -1
  341. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +4 -3
  342. package/dist/esm/plugins/hyperlink/utils.js +44 -2
  343. package/dist/esm/plugins/jira-issue/nodeviews/jira-issue.js +3 -2
  344. package/dist/esm/plugins/layout/styles.js +1 -1
  345. package/dist/esm/plugins/media/commands/helpers.js +6 -8
  346. package/dist/esm/plugins/media/nodeviews/mediaInline.js +22 -4
  347. package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +7 -0
  348. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +4 -3
  349. package/dist/esm/plugins/media/pm-plugins/main.js +2 -0
  350. package/dist/esm/plugins/media/styles.js +1 -1
  351. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
  352. package/dist/esm/plugins/media/ui/Media/DropPlaceholder.js +3 -2
  353. package/dist/esm/plugins/media/ui/MediaLinkingToolbar.js +2 -1
  354. package/dist/esm/plugins/mentions/styles.js +2 -1
  355. package/dist/esm/plugins/mentions/ui/InviteItem/index.js +2 -1
  356. package/dist/esm/plugins/mentions/ui/InviteItem/styles.js +3 -2
  357. package/dist/esm/plugins/panel/index.js +1 -0
  358. package/dist/esm/plugins/panel/nodeviews/panel.js +4 -1
  359. package/dist/esm/plugins/panel/pm-plugins/keymaps.js +22 -4
  360. package/dist/esm/plugins/paste/handlers.js +21 -0
  361. package/dist/esm/plugins/paste/linkify-md-plugin.js +7 -1
  362. package/dist/esm/plugins/paste/pm-plugins/analytics.js +6 -1
  363. package/dist/esm/plugins/paste/pm-plugins/main.js +27 -2
  364. package/dist/esm/plugins/placeholder/index.js +12 -1
  365. package/dist/esm/plugins/placeholder/styles.js +2 -1
  366. package/dist/esm/plugins/placeholder-text/styles.js +2 -1
  367. package/dist/esm/plugins/selection/gap-cursor/styles.js +1 -1
  368. package/dist/esm/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  369. package/dist/esm/plugins/status/ui/statusPicker.js +2 -2
  370. package/dist/esm/plugins/table/index.js +13 -4
  371. package/dist/esm/plugins/table/nodeviews/TableComponent.js +6 -6
  372. package/dist/esm/plugins/table/nodeviews/table.js +6 -2
  373. package/dist/esm/plugins/table/pm-plugins/main.js +1 -4
  374. package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +102 -0
  375. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  376. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
  377. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
  378. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  379. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  380. package/dist/esm/plugins/table/transforms/column-width.js +1 -2
  381. package/dist/esm/plugins/table/transforms/fix-tables.js +1 -3
  382. package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +3 -1
  383. package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +2 -1
  384. package/dist/esm/plugins/table/ui/common-styles.js +4 -2
  385. package/dist/esm/plugins/table/ui/consts.js +15 -12
  386. package/dist/esm/plugins/table/ui/ui-styles.js +15 -10
  387. package/dist/esm/plugins/table/utils/decoration.js +3 -4
  388. package/dist/esm/plugins/table/utils/paste.js +9 -9
  389. package/dist/esm/plugins/type-ahead/index.js +4 -3
  390. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +2 -1
  391. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  392. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
  393. package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +71 -5
  394. package/dist/esm/plugins/unsupported-content/styles.js +1 -1
  395. package/dist/esm/ui/Addon/Dropdown/styles.js +2 -1
  396. package/dist/esm/ui/Addon/DropdownItem/styles.js +2 -1
  397. package/dist/esm/ui/Appearance/Chromeless.js +2 -1
  398. package/dist/esm/ui/Appearance/Comment/Comment.js +10 -3
  399. package/dist/esm/ui/Appearance/Comment/Toolbar.js +3 -2
  400. package/dist/esm/ui/Appearance/FullPage/FullPage.js +6 -2
  401. package/dist/esm/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  402. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  403. package/dist/esm/ui/Appearance/FullPage/MainToolbar.js +5 -3
  404. package/dist/esm/ui/ChromeCollapsed/styles.js +1 -1
  405. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +21 -14
  406. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  407. package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
  408. package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
  409. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +2 -1
  410. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  411. package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
  412. package/dist/esm/ui/ConfigPanel/Header.js +3 -2
  413. package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +3 -2
  414. package/dist/esm/ui/ContentStyles/index.js +3 -2
  415. package/dist/esm/ui/ContextPanel/index.js +2 -1
  416. package/dist/esm/ui/DropdownMenu/index.js +5 -0
  417. package/dist/esm/ui/ElementBrowser/InsertMenu.js +5 -4
  418. package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +3 -2
  419. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +3 -2
  420. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +11 -5
  421. package/dist/esm/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
  422. package/dist/esm/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
  423. package/dist/esm/ui/ElementBrowser/components/ElementSearch.js +2 -1
  424. package/dist/esm/ui/ElementBrowser/constants.js +3 -1
  425. package/dist/esm/ui/FloatingToolbar/styles.js +3 -3
  426. package/dist/esm/ui/LinkSearch/LinkSearchListItem.js +4 -3
  427. package/dist/esm/ui/PanelTextInput/styles.js +4 -3
  428. package/dist/esm/ui/PluginSlot/index.js +7 -4
  429. package/dist/esm/ui/Toolbar/ToolbarInner.js +2 -1
  430. package/dist/esm/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
  431. package/dist/esm/ui/ToolbarFeedback/styles.js +4 -3
  432. package/dist/esm/ui/WithFlash/index.js +3 -2
  433. package/dist/esm/ui/styles.js +5 -4
  434. package/dist/esm/utils/document.js +59 -5
  435. package/dist/esm/utils/filter/privacy-filter.js +1 -1
  436. package/dist/esm/utils/step.js +12 -1
  437. package/dist/esm/version-wrapper.js +1 -1
  438. package/dist/esm/version.json +1 -1
  439. package/dist/types/actions/index.d.ts +6 -0
  440. package/dist/types/labs/next/ContentComponents.d.ts +7 -1
  441. package/dist/types/nodeviews/getInlineNodeViewProducer.d.ts +1 -0
  442. package/dist/types/plugins/analytics/types/enums.d.ts +3 -0
  443. package/dist/types/plugins/analytics/types/general-events.d.ts +7 -1
  444. package/dist/types/plugins/base/pm-plugins/inline-cursor-target.d.ts +1 -1
  445. package/dist/types/plugins/code-block/actions.d.ts +2 -0
  446. package/dist/types/plugins/code-block/nodeviews/code-block.d.ts +2 -0
  447. package/dist/types/plugins/code-block/pm-plugins/actions.d.ts +1 -0
  448. package/dist/types/plugins/code-block/pm-plugins/main-state.d.ts +1 -0
  449. package/dist/types/plugins/extension/commands.d.ts +1 -1
  450. package/dist/types/plugins/extension/types.d.ts +1 -0
  451. package/dist/types/plugins/extension/ui/Extension/Extension/index.d.ts +6 -0
  452. package/dist/types/plugins/find-replace/styles.d.ts +0 -2
  453. package/dist/types/plugins/hyperlink/utils.d.ts +8 -0
  454. package/dist/types/plugins/media/commands/helpers.d.ts +2 -0
  455. package/dist/types/plugins/media/nodeviews/mediaNodeView/media.d.ts +1 -0
  456. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -1
  457. package/dist/types/plugins/media/pm-plugins/types.d.ts +2 -1
  458. package/dist/types/plugins/paste/handlers.d.ts +1 -0
  459. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +1 -0
  460. package/dist/types/plugins/table/commands/misc.d.ts +0 -1
  461. package/dist/types/plugins/table/index.d.ts +0 -1
  462. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +1 -0
  463. package/dist/types/plugins/table/nodeviews/types.d.ts +0 -1
  464. package/dist/types/plugins/table/pm-plugins/main.d.ts +1 -1
  465. package/dist/types/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +15 -0
  466. package/dist/types/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +1 -1
  467. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin.d.ts +1 -1
  468. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +1 -2
  469. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +1 -1
  470. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +0 -1
  471. package/dist/types/plugins/table/transforms/fix-tables.d.ts +0 -1
  472. package/dist/types/plugins/table/types.d.ts +0 -1
  473. package/dist/types/plugins/table/ui/consts.d.ts +9 -9
  474. package/dist/types/plugins/type-ahead/ui/TypeAheadList.d.ts +2 -0
  475. package/dist/types/plugins/type-ahead/ui/TypeAheadListItem.d.ts +4 -4
  476. package/dist/types/types/editor-appearance-component.d.ts +0 -1
  477. package/dist/types/types/editor-props.d.ts +4 -0
  478. package/dist/types/types/feature-flags.d.ts +8 -0
  479. package/dist/types/types/ui-components.d.ts +1 -0
  480. package/dist/types/ui/Appearance/FullPage/FullPage.d.ts +1 -0
  481. package/dist/types/ui/Appearance/FullPage/FullPageContentArea.d.ts +1 -0
  482. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +3 -2
  483. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +3 -2
  484. package/dist/types/ui/PluginSlot/index.d.ts +1 -0
  485. package/dist/types/ui/Toolbar/toolbar-types.d.ts +1 -0
  486. package/dist/types/utils/document.d.ts +1 -0
  487. package/dist/types/utils/step.d.ts +1 -0
  488. package/docs/0-intro.tsx +12 -4
  489. package/package.json +20 -20
@@ -1,5 +1,5 @@
1
1
  import { createRule, createPlugin } from '../../../utils/input-rules';
2
- import { LinkMatcher, normalizeUrl } from '../utils';
2
+ import { findFilepaths, isLinkInMatches, LinkMatcher, normalizeUrl } from '../utils';
3
3
  import { INPUT_METHOD, addAnalytics } from '../../analytics';
4
4
  import { getLinkCreationAnalyticsEvent } from '../analytics';
5
5
  export function createLinkInputRule(regexp, skipAnalytics = false, useUnpredictableInputRule = true) {
@@ -17,7 +17,29 @@ export function createLinkInputRule(regexp, skipAnalytics = false, useUnpredicta
17
17
  const url = normalizeUrl(link.url);
18
18
  const markType = schema.mark('link', {
19
19
  href: url
20
- });
20
+ }); // Need access to complete text to check if last URL is part of a filepath before linkifying
21
+
22
+ const nodeBefore = state.selection.$from.nodeBefore;
23
+
24
+ if (!nodeBefore || !nodeBefore.isText || !nodeBefore.text) {
25
+ return null;
26
+ }
27
+
28
+ const filepaths = findFilepaths(nodeBefore.text, // The position referenced by 'start' is relative to the start of the document, findFilepaths deals with index in a node only.
29
+ start - (nodeBefore.text.length - link.text.length) // (start of link match) - (whole node text length - link length) gets start of text node, which is used as offset
30
+ );
31
+
32
+ if (isLinkInMatches(start, filepaths)) {
33
+ const tr = state.tr;
34
+
35
+ if (useUnpredictableInputRule) {
36
+ tr.insertText(' ');
37
+ } // To keep consistent with original behaviour.
38
+
39
+
40
+ return tr;
41
+ }
42
+
21
43
  const from = start;
22
44
  const to = Math.min(start + link.text.length, state.doc.content.size);
23
45
  const tr = state.tr.addMark(from, to, markType); // Keep old behavior that will delete the space after the link
@@ -5,6 +5,7 @@ import { stateKey } from '../pm-plugins/main';
5
5
  import { showLinkToolbar, hideLinkToolbar } from '../commands';
6
6
  import { INPUT_METHOD, addAnalytics } from '../../analytics';
7
7
  import { getLinkCreationAnalyticsEvent } from '../analytics';
8
+ import { findFilepaths, isLinkInMatches } from '../utils';
8
9
  export function createKeymapPlugin(skipAnalytics = false) {
9
10
  const list = {};
10
11
  keymaps.bindKeymapWithCommand(keymaps.addLink.common, showLinkToolbar(INPUT_METHOD.SHORTCUT), list);
@@ -32,7 +33,7 @@ const mayConvertLastWordToHyperlink = skipAnalytics => {
32
33
  return function (state, dispatch) {
33
34
  const nodeBefore = state.selection.$from.nodeBefore;
34
35
 
35
- if (!nodeBefore || !nodeBefore.isText) {
36
+ if (!nodeBefore || !nodeBefore.isText || !nodeBefore.text) {
36
37
  return false;
37
38
  }
38
39
 
@@ -53,6 +54,13 @@ const mayConvertLastWordToHyperlink = skipAnalytics => {
53
54
  const markType = state.schema.mark('link', {
54
55
  href: url
55
56
  });
57
+ const filepaths = findFilepaths(nodeBefore.text, start - (nodeBefore.text.length - hyperlinkedText.length) // The position referenced by 'start' is relative to the start of the document, findFilepaths deals with index in a node only.
58
+ );
59
+
60
+ if (isLinkInMatches(start, filepaths)) {
61
+ return false;
62
+ }
63
+
56
64
  const tr = state.tr.addMark(start, end, markType);
57
65
 
58
66
  if (dispatch) {
@@ -8,6 +8,7 @@ import CrossCircleIcon from '@atlaskit/icon/glyph/cross-circle';
8
8
  import EditorAlignLeftIcon from '@atlaskit/icon/glyph/editor/align-left';
9
9
  import LinkIcon from '@atlaskit/icon/glyph/link';
10
10
  import { N90, N80, N30 } from '@atlaskit/theme/colors';
11
+ import { token } from '@atlaskit/tokens';
11
12
  import Page16Icon from '@atlaskit/icon-object/glyph/page/16';
12
13
  import Tooltip from '@atlaskit/tooltip';
13
14
  import { PureComponent } from 'react';
@@ -33,17 +34,17 @@ const clearText = css`
33
34
  cursor: pointer;
34
35
  padding: 0;
35
36
  margin-right: 8px;
36
- color: ${N90};
37
+ color: ${token('color.icon.subtle', N90)};
37
38
  background: transparent;
38
39
  border: none;
39
40
  `;
40
41
  const textInputWrapper = css`
41
42
  ${inputWrapper};
42
- border-top: 1px solid ${N30};
43
- border-bottom: 1px solid ${N30};
43
+ border-top: 1px solid ${token('color.border', N30)};
44
+ border-bottom: 1px solid ${token('color.border', N30)};
44
45
  `;
45
46
  const iconWrapper = css`
46
- color: ${N80};
47
+ color: ${token('color.icon.subtle', N80)};
47
48
  padding: 4px 8px;
48
49
  width: 18px;
49
50
  `;
@@ -1,5 +1,7 @@
1
1
  import { mapSlice } from '../../utils/slice';
2
- import { isSafeUrl, linkify, normalizeUrl as normaliseLinkHref } from '@atlaskit/adf-schema';
2
+ import { isSafeUrl, linkify, normalizeUrl as normaliseLinkHref } from '@atlaskit/adf-schema'; // Regular expression for a windows filepath in the format <DRIVE LETTER>:\<folder name>\
3
+
4
+ export const FILEPATH_REGEXP = /([a-zA-Z]:|\\)([^\/:*?<>"|]+\\)?([^\/:*?<>"| ]+(?=\s?))?/gim;
3
5
  /**
4
6
  * Instance of class LinkMatcher are used in autoformatting in place of Regex.
5
7
  * Hence it has been made similar to regex with an exec method.
@@ -76,7 +78,12 @@ export function linkifyContent(schema) {
76
78
  const text = node.text;
77
79
  const matches = findLinkMatches(text);
78
80
  let pos = 0;
81
+ const filepaths = findFilepaths(text);
79
82
  matches.forEach(match => {
83
+ if (isLinkInMatches(match.start, filepaths)) {
84
+ return;
85
+ }
86
+
80
87
  if (match.start > 0) {
81
88
  linkified.push(node.cut(pos, match.start));
82
89
  }
@@ -130,4 +137,38 @@ function findLinkMatches(text) {
130
137
  }
131
138
 
132
139
  return matches;
133
- }
140
+ }
141
+
142
+ export const findFilepaths = (text, offset = 0) => {
143
+ // Creation of a copy of the RegExp is necessary as lastIndex is stored on it when we run .exec()
144
+ const localRegExp = new RegExp(FILEPATH_REGEXP);
145
+ let match;
146
+ const matchesList = [];
147
+ const maxFilepathSize = 260;
148
+
149
+ while ((match = localRegExp.exec(text)) !== null) {
150
+ const start = match.index + offset;
151
+ let end = localRegExp.lastIndex + offset;
152
+
153
+ if (end - start > maxFilepathSize) {
154
+ end = start + maxFilepathSize;
155
+ } // We don't care about big strings of text that are pretending to be filepaths!!
156
+
157
+
158
+ matchesList.push({
159
+ startIndex: start,
160
+ endIndex: end
161
+ });
162
+ }
163
+
164
+ return matchesList;
165
+ };
166
+ export const isLinkInMatches = (linkStart, matchesList) => {
167
+ for (let i = 0; i < matchesList.length; i++) {
168
+ if (linkStart >= matchesList[i].startIndex && linkStart < matchesList[i].endIndex) {
169
+ return true;
170
+ }
171
+ }
172
+
173
+ return false;
174
+ };
@@ -4,10 +4,11 @@ import { JiraIcon } from '@atlaskit/logo/jira-icon';
4
4
  import { borderRadius } from '@atlaskit/theme/constants';
5
5
  import { N30, N50 } from '@atlaskit/theme/colors';
6
6
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
7
+ import { token } from '@atlaskit/tokens';
7
8
  const wrapperNode = css`
8
9
  align-items: center;
9
- background: ${N30};
10
- border: 1px solid ${N50};
10
+ background: ${token('color.background.neutral', N30)};
11
+ border: 1px solid ${token('color.border', N50)};
11
12
  border-radius: ${borderRadius()}px;
12
13
  box-sizing: border-box;
13
14
  cursor: default;
@@ -21,18 +22,18 @@ const wrapperNode = css`
21
22
  white-space: nowrap;
22
23
 
23
24
  .ProseMirror-selectednode & {
24
- background: ${N50};
25
+ background: ${token('color.background.selected', N50)};
25
26
  outline: none;
26
27
  }
27
28
  `;
28
29
  const jiraChildNode = css`
29
30
  display: inline-block;
30
- color: #707070;
31
+ color: ${token('color.text.subtlest', '#707070')};
31
32
  line-height: 24px;
32
33
  vertical-align: top;
33
34
 
34
35
  &::before {
35
- color: black;
36
+ color: ${token('color.text', 'black')};
36
37
  content: 'JIRA | ';
37
38
  }
38
39
  `;
@@ -19,7 +19,9 @@ export const layoutStyles = css`
19
19
  [data-layout-column] {
20
20
  flex: 1;
21
21
  min-width: 0;
22
- border: ${akEditorSelectedBorderSize}px solid ${N40A};
22
+ // TODO: https://product-fabric.atlassian.net/browse/DSP-4353
23
+ border: ${akEditorSelectedBorderSize}px solid
24
+ ${token('color.border', N40A)};
23
25
  border-radius: 4px;
24
26
  padding: ${LAYOUT_COLUMN_PADDING}px;
25
27
  box-sizing: border-box;
@@ -29,11 +31,11 @@ export const layoutStyles = css`
29
31
  margin-top: 0;
30
32
  }
31
33
 
32
- > .ProseMirror-gapcursor.-right:first-child + * {
34
+ > .ProseMirror-gapcursor.-right:first-of-type + * {
33
35
  margin-top: 0;
34
36
  }
35
37
 
36
- > .ProseMirror-gapcursor:first-child + span + * {
38
+ > .ProseMirror-gapcursord:first-of-type + span + * {
37
39
  margin-top: 0;
38
40
  }
39
41
 
@@ -41,17 +43,17 @@ export const layoutStyles = css`
41
43
  margin-top: 0;
42
44
  }
43
45
 
44
- > .mediaSingleView-content-wrap:first-child .rich-media-item {
46
+ > .mediaSingleView-content-wrap:first-of-type .rich-media-item {
45
47
  margin-top: 0;
46
48
  }
47
49
 
48
- > .ProseMirror-gapcursor.-right:first-child
50
+ > .ProseMirror-gapcursor.-right:first-of-type
49
51
  + .mediaSingleView-content-wrap
50
52
  .rich-media-item {
51
53
  margin-top: 0;
52
54
  }
53
55
 
54
- > .ProseMirror-gapcursor:first-child
56
+ > .ProseMirror-gapcursor:first-of-type
55
57
  + span
56
58
  + .mediaSingleView-content-wrap
57
59
  .rich-media-item {
@@ -85,10 +87,11 @@ export const layoutStyles = css`
85
87
  }
86
88
  }
87
89
 
90
+ // TODO: https://product-fabric.atlassian.net/browse/DSP-4441
88
91
  /* Shows the border when cursor is inside a layout */
89
92
  &.selected [data-layout-column],
90
93
  &:hover [data-layout-column] {
91
- border-color: ${N50A};
94
+ border-color: ${token('color.border', N50A)};
92
95
  }
93
96
 
94
97
  &.selected.danger > [data-layout-column] {
@@ -56,6 +56,10 @@ export const findMediaNode = (mediaPluginState, id, isMediaSingle) => {
56
56
  };
57
57
  export const isMobileUploadCompleted = (mediaPluginState, mediaId) => !!mediaPluginState.mediaOptions && // This flag tells us that it's a 'mobile' env.
58
58
  !!mediaPluginState.mediaOptions.allowMarkingUploadsAsIncomplete && typeof mediaPluginState.mobileUploadComplete[mediaId] === 'boolean' ? mediaPluginState.mobileUploadComplete[mediaId] : undefined;
59
+ export const isMediaNode = (pos, state) => {
60
+ const node = state.doc.nodeAt(pos);
61
+ return node && ['media', 'mediaInline'].includes(node.type.name);
62
+ };
59
63
  export const updateAllMediaNodesAttrs = (id, attrs, isMediaSingle) => (state, dispatch) => {
60
64
  const mediaPluginState = mediaPluginKey.getState(state);
61
65
  let mediaNodes;
@@ -67,17 +71,12 @@ export const updateAllMediaNodesAttrs = (id, attrs, isMediaSingle) => (state, di
67
71
  mediaNodes = mediaGroupNode ? [mediaGroupNode] : [];
68
72
  }
69
73
 
70
- const isMediaNode = pos => {
71
- const node = state.doc.nodeAt(pos);
72
- return node && node.type.name === 'media';
73
- };
74
-
75
74
  const validMediaNodePositions = mediaNodes.reduce((acc, {
76
75
  getPos
77
76
  }) => {
78
77
  const pos = getPos();
79
78
 
80
- if (typeof pos === 'number' && !isMediaNode(pos)) {
79
+ if (typeof pos === 'number' && !isMediaNode(pos, state)) {
81
80
  return acc;
82
81
  }
83
82
 
@@ -109,9 +108,8 @@ export const updateMediaNodeAttrs = (id, attrs, isMediaSingle) => (state, dispat
109
108
 
110
109
  const tr = state.tr;
111
110
  const pos = mediaNodeWithPos.getPos();
112
- const node = tr.doc.nodeAt(pos);
113
111
 
114
- if (!node || node.type.name !== 'media') {
112
+ if (!isMediaNode(pos, state)) {
115
113
  return false;
116
114
  }
117
115
 
@@ -6,12 +6,14 @@ import { WithProviders } from '@atlaskit/editor-common/provider-factory';
6
6
  import { MediaInlineNodeSelector } from './styles';
7
7
  import { stateKey as mediaStateKey } from '../pm-plugins/plugin-key';
8
8
  import { MediaNodeUpdater } from './mediaNodeUpdater';
9
+ import { MediaInlineCardLoadingView } from '@atlaskit/media-ui';
9
10
  export const createMediaNodeUpdater = props => {
10
- const node = props.node.firstChild;
11
+ const node = props.node;
11
12
  return new MediaNodeUpdater({ ...props,
12
13
  isMediaSingle: true,
13
14
  node: node ? node : props.node,
14
- dispatchAnalyticsEvent: props.dispatchAnalyticsEvent
15
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
16
+ contextIdentifierProvider: props.contextIdentifierProvider
15
17
  });
16
18
  };
17
19
  /**
@@ -45,10 +47,12 @@ export const updateMediaNodeAttributes = async props => {
45
47
  const copyNode = mediaNodeUpdater.copyNode();
46
48
  addPendingTask(copyNode);
47
49
  await copyNode;
48
- } catch {
50
+ } catch (e) {
49
51
  return;
50
52
  }
51
53
  }
54
+
55
+ await mediaNodeUpdater.updateFileAttrs();
52
56
  };
53
57
  export const handleNewNode = props => {
54
58
  const {
@@ -59,7 +63,7 @@ export const handleNewNode = props => {
59
63
  mediaPluginState.handleMediaNodeMount(node, () => getPos());
60
64
  };
61
65
  export const MediaInline = props => {
62
- const [viewMediaClientConfig, setViewMediaClientConfig] = useState({});
66
+ const [viewMediaClientConfig, setViewMediaClientConfig] = useState();
63
67
  useEffect(() => {
64
68
  handleNewNode(props);
65
69
  updateMediaNodeAttributes(props);
@@ -90,6 +94,18 @@ export const MediaInline = props => {
90
94
  mediaItemType: 'file',
91
95
  collectionName: collection
92
96
  };
97
+ /*
98
+ * Only show the loading view if the media provider is not ready
99
+ * prevents calling the media API before the provider is ready
100
+ */
101
+
102
+ if (!viewMediaClientConfig) {
103
+ return /*#__PURE__*/React.createElement(MediaInlineCardLoadingView, {
104
+ message: "",
105
+ isSelected: false
106
+ });
107
+ }
108
+
93
109
  return /*#__PURE__*/React.createElement(MediaInlineCard, {
94
110
  isSelected: props.isSelected,
95
111
  identifier: identifier,
@@ -100,12 +116,12 @@ export class MediaInlineNodeView extends SelectionBasedNodeView {
100
116
  createDomRef() {
101
117
  const domRef = document.createElement('span');
102
118
  domRef.contentEditable = 'false';
103
- domRef.classList.add(MediaInlineNodeSelector);
104
119
  return domRef;
105
120
  }
106
121
 
107
122
  getContentDOM() {
108
123
  const dom = document.createElement('span');
124
+ dom.classList.add(MediaInlineNodeSelector);
109
125
  return {
110
126
  dom
111
127
  };
@@ -54,6 +54,12 @@ export class MediaNode extends Component {
54
54
  }
55
55
  });
56
56
 
57
+ _defineProperty(this, "onFullscreenChange", fullscreen => {
58
+ this.mediaPluginState.updateAndDispatch({
59
+ isFullscreen: fullscreen
60
+ });
61
+ });
62
+
57
63
  _defineProperty(this, "handleNewNode", props => {
58
64
  const {
59
65
  node
@@ -161,6 +167,7 @@ export class MediaNode extends Component {
161
167
  selectable: true,
162
168
  selected: selected,
163
169
  disableOverlay: true,
170
+ onFullscreenChange: this.onFullscreenChange,
164
171
  onClick: this.selectMediaSingleFromCard,
165
172
  useInlinePlayer: mediaOptions && mediaOptions.allowLazyLoading,
166
173
  isLazy: mediaOptions && mediaOptions.allowLazyLoading,
@@ -18,15 +18,16 @@ import { ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, fireAnalyticsEvent, ACTI
18
18
  import { RECENT_SEARCH_WIDTH_IN_PX } from '../../../../../ui/LinkSearch/ToolbarComponents';
19
19
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
20
20
  import { ErrorMessage } from '@atlaskit/editor-common/ui';
21
+ import { token } from '@atlaskit/tokens';
21
22
  export const CONTAINER_WIDTH_IN_PX = RECENT_SEARCH_WIDTH_IN_PX;
22
23
  export const MAX_ALT_TEXT_LENGTH = 510; // double tweet length
23
24
 
24
25
  const supportText = css`
25
- color: ${N100};
26
+ color: ${token('color.text.subtlest', N100)};
26
27
  font-size: ${relativeFontSizeToBase16(12)};
27
28
  padding: 12px 40px;
28
29
  line-height: 20px;
29
- border-top: 1px solid ${N30};
30
+ border-top: 1px solid ${token('color.border', N30)};
30
31
  margin: 0;
31
32
  `;
32
33
  const container = css`
@@ -47,7 +48,7 @@ const validationWrapper = css`
47
48
  line-height: 0;
48
49
  padding: 12px 24px 12px 0;
49
50
  margin: 0 12px 0 40px;
50
- border-top: 1px solid ${R400};
51
+ border-top: 1px solid ${token('color.border.danger', R400)};
51
52
  align-items: start;
52
53
  flex-direction: column;
53
54
  `;
@@ -56,7 +57,7 @@ const buttonWrapper = css`
56
57
  padding: 4px 8px;
57
58
  `;
58
59
  const clearText = css`
59
- color: ${N80};
60
+ color: ${token('color.icon.subtle', N80)};
60
61
  `;
61
62
  export class AltTextEditComponent extends React.Component {
62
63
  constructor(props) {
@@ -57,6 +57,8 @@ export class MediaPluginStateImplementation {
57
57
 
58
58
  _defineProperty(this, "showDropzone", false);
59
59
 
60
+ _defineProperty(this, "isFullscreen", false);
61
+
60
62
  _defineProperty(this, "layout", 'center');
61
63
 
62
64
  _defineProperty(this, "mediaNodes", []);
@@ -95,7 +95,7 @@ export const mediaStyles = css`
95
95
 
96
96
  .${richMediaClassName}:hover .richMedia-resize-handle-left::after,
97
97
  .${richMediaClassName}:hover .richMedia-resize-handle-right::after {
98
- background: ${N60};
98
+ background: ${token('color.border', N60)};
99
99
  }
100
100
 
101
101
  .${akEditorSelectedNodeClassName} .richMedia-resize-handle-right::after,
@@ -104,7 +104,7 @@ export const mediaStyles = css`
104
104
  .${richMediaClassName} .richMedia-resize-handle-left:hover::after,
105
105
  .${richMediaClassName}.is-resizing .richMedia-resize-handle-right::after,
106
106
  .${richMediaClassName}.is-resizing .richMedia-resize-handle-left::after {
107
- background: ${B200};
107
+ background: ${token('color.border.focused', B200)};
108
108
  }
109
109
 
110
110
  .__resizable_base__ {
@@ -151,7 +151,7 @@ export const mediaStyles = css`
151
151
  /* Smart cards */
152
152
  div div .media-card-frame,
153
153
  .inlineCardView-content-wrap > span > a {
154
- background-color: rgb(255, 189, 173, 0.5); /* R75 with 50% opactiy */
154
+ background-color: ${token('color.blanket.danger', 'rgb(255, 189, 173, 0.5)')}; /* R75 with 50% opactiy */
155
155
  transition: background-color 0s;
156
156
  }
157
157
 
@@ -2,9 +2,10 @@
2
2
  import { css, jsx } from '@emotion/react';
3
3
  import { FormattedMessage } from 'react-intl-next';
4
4
  import { N200 } from '@atlaskit/theme/colors';
5
+ import { token } from '@atlaskit/tokens';
5
6
  import { messages } from './messages';
6
7
  const placeholder = css`
7
- color: ${N200};
8
+ color: ${token('color.text.subtlest', N200)};
8
9
  width: 100%;
9
10
  text-align: center;
10
11
  margin-top: 8px !important;
@@ -6,10 +6,11 @@ import DocumentFilledIcon from '@atlaskit/icon/glyph/document-filled';
6
6
  import { hexToRgba } from '@atlaskit/adf-schema';
7
7
  import { injectIntl } from 'react-intl-next';
8
8
  import { dropPlaceholderMessages } from './drop-placeholder-messages';
9
+ import { token } from '@atlaskit/tokens';
9
10
  import { MEDIA_HEIGHT, FILE_WIDTH } from '../../nodeviews/mediaNodeView/media';
10
11
  const iconWrapper = css`
11
- color: ${hexToRgba(B400, 0.4) || B400};
12
- background: ${hexToRgba(B300, 0.6) || B300};
12
+ color: ${token('color.icon.accent.blue', hexToRgba(B400, 0.4) || B400)};
13
+ background: ${token('color.background.accent.blue.subtle', hexToRgba(B300, 0.6) || B300)};
13
14
  border-radius: ${borderRadius()}px;
14
15
  margin: 5px 3px 25px;
15
16
  width: ${FILE_WIDTH}px;
@@ -19,7 +20,7 @@ const iconWrapper = css`
19
20
  justify-content: center;
20
21
  `;
21
22
  const dropLine = css`
22
- background: ${B200};
23
+ background: ${token('color.border.focused', B200)};
23
24
  border-radius: ${borderRadius()}px;
24
25
  margin: 2px 0;
25
26
  width: 100%;
@@ -17,11 +17,12 @@ import { normalizeUrl } from '../../hyperlink/utils';
17
17
  import { R400 } from '@atlaskit/theme/colors';
18
18
  import { INPUT_METHOD } from '../../analytics/types/enums';
19
19
  import { mediaLinkToolbarMessages } from './media-linking-toolbar-messages';
20
+ import { token } from '@atlaskit/tokens';
20
21
  const validationWrapper = css`
21
22
  line-height: 0;
22
23
  padding: 12px 24px 12px 0;
23
24
  margin: 0 4px 0 32px;
24
- border-top: 1px solid ${R400};
25
+ border-top: 1px solid ${token('color.border.danger', R400)};
25
26
  align-items: start;
26
27
  display: flex;
27
28
  flex-direction: column;
@@ -2,6 +2,7 @@ import { css } from '@emotion/react';
2
2
  import { MentionSharedCssClassName } from '@atlaskit/editor-common/mention';
3
3
  import { SelectionStyle, getSelectionStyles, akEditorSelectedBorderSize, akEditorDeleteBorder, akEditorDeleteBackgroundWithOpacity, akEditorSelectedNodeClassName } from '@atlaskit/editor-shared-styles';
4
4
  import { N500, N30A } from '@atlaskit/theme/colors';
5
+ import { token } from '@atlaskit/tokens';
5
6
  export const mentionsStyles = css`
6
7
  .${MentionSharedCssClassName.MENTION_CONTAINER} {
7
8
  &.${akEditorSelectedNodeClassName} [data-mention-id] > span {
@@ -9,7 +10,7 @@ export const mentionsStyles = css`
9
10
 
10
11
  /* need to specify dark text colour because personal mentions
11
12
  (in dark blue) have white text by default */
12
- color: ${N500};
13
+ color: ${token('color.text.subtle', N500)};
13
14
  }
14
15
  }
15
16
 
@@ -18,11 +19,11 @@ export const mentionsStyles = css`
18
19
  > span
19
20
  > span {
20
21
  box-shadow: 0 0 0 ${akEditorSelectedBorderSize}px ${akEditorDeleteBorder};
21
- background-color: ${akEditorDeleteBackgroundWithOpacity};
22
+ background-color: ${token('color.background.danger', akEditorDeleteBackgroundWithOpacity)};
22
23
  }
23
24
  .${MentionSharedCssClassName.MENTION_CONTAINER} > span > span {
24
- background-color: ${N30A};
25
- color: ${N500};
25
+ background-color: ${token('color.background.neutral', N30A)};
26
+ color: ${token('color.text.subtle', N500)};
26
27
  }
27
28
  }
28
29
  `;
@@ -4,6 +4,7 @@ import _extends from "@babel/runtime/helpers/extends";
4
4
  import { jsx } from '@emotion/react';
5
5
  import AddIcon from '@atlaskit/icon/glyph/add';
6
6
  import { N300 } from '@atlaskit/theme/colors';
7
+ import { token } from '@atlaskit/tokens';
7
8
  import React, { useCallback, useEffect } from 'react';
8
9
  import { FormattedMessage, injectIntl } from 'react-intl-next';
9
10
  import { avatarStyle, capitalizedStyle, mentionItemStyle, nameSectionStyle, rowStyle, ROW_SIDE_PADDING, AVATAR_HEIGHT, mentionItemSelectedStyle } from './styles';
@@ -53,7 +54,7 @@ const InviteItem = ({
53
54
  css: avatarStyle
54
55
  }, jsx(AddIcon, {
55
56
  label: intl.formatMessage(messages.mentionsAddLabel),
56
- primaryColor: N300
57
+ primaryColor: token('color.icon.subtle', N300)
57
58
  })), jsx("div", {
58
59
  css: nameSectionStyle,
59
60
  "data-testid": "name-section"
@@ -1,5 +1,6 @@
1
1
  import { css } from '@emotion/react';
2
2
  import { N30, N300 } from '@atlaskit/theme/colors';
3
+ import { token } from '@atlaskit/tokens';
3
4
  export const ROW_SIDE_PADDING = 14;
4
5
  export const rowStyle = css`
5
6
  align-items: center;
@@ -29,7 +30,7 @@ export const nameSectionStyle = css`
29
30
  flex: 1;
30
31
  min-width: 0;
31
32
  margin-left: 14px;
32
- color: ${N300};
33
+ color: ${token('color.text.subtle', N300)};
33
34
  opacity: inherit;
34
35
  `;
35
36
  export const mentionItemStyle = css`
@@ -40,7 +41,7 @@ export const mentionItemStyle = css`
40
41
  cursor: pointer;
41
42
  `;
42
43
  export const mentionItemSelectedStyle = css`
43
- background-color: ${N30};
44
+ background-color: ${token('color.background.neutral.subtle.hovered', N30)};
44
45
  `;
45
46
  export const capitalizedStyle = css`
46
47
  text-transform: capitalize;
@@ -141,6 +141,7 @@ const panelPlugin = (options = {}) => ({
141
141
  panelIcon: ':rainbow:',
142
142
  panelIconId: '1f308',
143
143
  panelIconText: '🌈',
144
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
144
145
  panelColor: T50
145
146
  }, state, insert);
146
147
  }
@@ -77,7 +77,10 @@ class PanelNodeView {
77
77
 
78
78
  ignoreMutation(mutation) {
79
79
  // ignore mutation if it caused by the icon.
80
- return mutation.target === this.icon || mutation.target.parentNode === this.icon;
80
+ const isIcon = mutation.target === this.icon || mutation.target.parentNode === this.icon; // ignore mutation if it caused by the lazy load emoji inside icon.
81
+
82
+ const isInsideIcon = this.icon.contains(mutation.target);
83
+ return isIcon || isInsideIcon;
81
84
  }
82
85
 
83
86
  }
@@ -1,6 +1,23 @@
1
1
  import { keymap } from 'prosemirror-keymap';
2
- import { setTextSelection } from 'prosemirror-utils';
3
- // Somewhat broken and subverted: https://product-fabric.atlassian.net/browse/ED-6504
2
+ import { setTextSelection, findParentNodeOfType } from 'prosemirror-utils';
3
+ import { isEmptyNode } from '../../../utils';
4
+
5
+ function findParentNode(selection, nodeType) {
6
+ const parentPosition = findParentNodeOfType(nodeType)(selection);
7
+
8
+ if (parentPosition) {
9
+ return parentPosition.node;
10
+ }
11
+
12
+ return null;
13
+ }
14
+
15
+ function isInsideAnEmptyNode(selection, nodeType, schema) {
16
+ const parentNode = findParentNode(selection, nodeType);
17
+ return parentNode && isEmptyNode(schema)(parentNode);
18
+ } // Somewhat broken and subverted: https://product-fabric.atlassian.net/browse/ED-6504
19
+
20
+
4
21
  export function keymapPlugin() {
5
22
  const deleteCurrentItem = ($from, tr) => {
6
23
  return tr.delete($from.before($from.depth) - 1, $from.end($from.depth) + 1);
@@ -16,7 +33,8 @@ export function keymapPlugin() {
16
33
  tr
17
34
  } = state;
18
35
  const {
19
- panel
36
+ panel,
37
+ blockquote
20
38
  } = nodes;
21
39
  const {
22
40
  $from,
@@ -38,7 +56,7 @@ export function keymapPlugin() {
38
56
  const isPreviousNodeAPanel = previousNodeType === panel;
39
57
  const isParentNodeAPanel = parentNodeType === panel; // Stops merging panels when deleting empty paragraph in between
40
58
 
41
- if (isPreviousNodeAPanel && !isParentNodeAPanel) {
59
+ if (isPreviousNodeAPanel && !isParentNodeAPanel || isInsideAnEmptyNode(selection, panel, state.schema) || isInsideAnEmptyNode(selection, blockquote, state.schema)) {
42
60
  const content = $from.node($from.depth).content;
43
61
  const insertPos = previousPos.pos - 1;
44
62
  deleteCurrentItem($from, tr).insert(insertPos, content);