@atlaskit/editor-core 148.0.0 → 149.0.3

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 (555) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/dist/cjs/create-editor/create-plugins-list.js +6 -1
  3. package/dist/cjs/editor.js +1 -4
  4. package/dist/cjs/index.js +24 -40
  5. package/dist/cjs/labs/next/presets/default.js +1 -1
  6. package/dist/cjs/messages.js +5 -0
  7. package/dist/cjs/nodeviews/SelectionBasedNodeView.js +1 -2
  8. package/dist/cjs/plugins/analytics/plugin.js +9 -7
  9. package/dist/cjs/plugins/analytics/types/enums.js +5 -0
  10. package/dist/cjs/plugins/analytics/types/type-ahead.js +5 -0
  11. package/dist/cjs/plugins/block-type/messages.js +10 -0
  12. package/dist/cjs/plugins/card/nodeviews/embedCard.js +1 -3
  13. package/dist/cjs/plugins/collab-edit/participants.js +15 -0
  14. package/dist/cjs/plugins/collab-edit/plugin-state.js +14 -0
  15. package/dist/cjs/plugins/collab-edit/ui/avatars-with-plugin-state.js +6 -4
  16. package/dist/cjs/plugins/collab-edit/ui/avatars.js +19 -2
  17. package/dist/cjs/plugins/collab-edit/utils.js +42 -2
  18. package/dist/cjs/plugins/date/actions.js +4 -2
  19. package/dist/cjs/plugins/date/index.js +1 -1
  20. package/dist/cjs/plugins/date/pm-plugins/utils.js +6 -1
  21. package/dist/cjs/plugins/emoji/index.js +143 -120
  22. package/dist/cjs/plugins/emoji/pm-plugins/ascii-input-rules.js +0 -14
  23. package/dist/cjs/plugins/expand/pm-plugins/keymap.js +3 -7
  24. package/dist/cjs/plugins/extension/actions.js +16 -16
  25. package/dist/cjs/plugins/extension/pm-plugins/main.js +4 -4
  26. package/dist/cjs/plugins/extension/ui/Extension/ExtensionComponent.js +5 -4
  27. package/dist/cjs/plugins/extension/ui/Extension/index.js +2 -2
  28. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  29. package/dist/cjs/plugins/floating-toolbar/ui/ConfirmationModal.js +12 -14
  30. package/dist/cjs/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +35 -0
  31. package/dist/cjs/plugins/floating-toolbar/ui/EditorHideEmojiIcon.js +38 -0
  32. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +5 -7
  33. package/dist/cjs/plugins/help-dialog/ui/index.js +12 -18
  34. package/dist/cjs/plugins/help-dialog/ui/styles.js +2 -6
  35. package/dist/cjs/plugins/hyperlink/index.js +4 -10
  36. package/dist/cjs/plugins/insert-block/index.js +9 -8
  37. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +7 -3
  38. package/dist/cjs/plugins/list/index.js +5 -0
  39. package/dist/cjs/plugins/macro/actions.js +14 -14
  40. package/dist/cjs/plugins/media/index.js +1 -0
  41. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +1 -0
  42. package/dist/cjs/plugins/media/pm-plugins/main.js +26 -14
  43. package/dist/cjs/plugins/media/styles.js +1 -1
  44. package/dist/cjs/plugins/media/toolbar/filePreviewItem.js +86 -0
  45. package/dist/cjs/plugins/media/toolbar/index.js +161 -44
  46. package/dist/cjs/plugins/media/toolbar/utils.js +77 -0
  47. package/dist/cjs/plugins/mentions/index.js +57 -602
  48. package/dist/cjs/plugins/mentions/pm-plugins/key.js +11 -0
  49. package/dist/cjs/plugins/mentions/pm-plugins/main.js +162 -0
  50. package/dist/cjs/plugins/mentions/pm-plugins/utils.js +12 -0
  51. package/dist/cjs/plugins/mentions/type-ahead/index.js +449 -0
  52. package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +3 -1
  53. package/dist/cjs/plugins/mentions/ui/InviteItem/styles.js +8 -3
  54. package/dist/cjs/plugins/mentions/ui/ToolbarMention/index.js +3 -3
  55. package/dist/cjs/plugins/mentions/utils.js +24 -2
  56. package/dist/cjs/plugins/panel/index.js +46 -13
  57. package/dist/cjs/plugins/panel/nodeviews/panel.js +39 -25
  58. package/dist/cjs/plugins/panel/toolbar.js +94 -6
  59. package/dist/cjs/plugins/panel/toolbar.test.js +149 -16
  60. package/dist/cjs/plugins/paste/handlers.js +2 -2
  61. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +6 -3
  62. package/dist/cjs/plugins/placeholder/index.js +6 -0
  63. package/dist/cjs/plugins/quick-insert/api.js +30 -0
  64. package/dist/cjs/plugins/quick-insert/assets/custom-panel.js +55 -0
  65. package/dist/cjs/plugins/quick-insert/assets/index.js +14 -1
  66. package/dist/cjs/plugins/quick-insert/index.js +10 -24
  67. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/index.js +1 -0
  68. package/dist/cjs/plugins/rank.js +1 -1
  69. package/dist/cjs/plugins/rule/index.js +1 -25
  70. package/dist/cjs/plugins/scroll-into-view/index.js +1 -4
  71. package/dist/cjs/plugins/selection/gap-cursor/actions.js +5 -6
  72. package/dist/cjs/plugins/selection/pm-plugins/selection-main.js +1 -3
  73. package/dist/cjs/plugins/status/actions.js +5 -2
  74. package/dist/cjs/plugins/status/plugin.js +1 -1
  75. package/dist/cjs/plugins/table/commands/selection.js +24 -24
  76. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +8 -1
  77. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +14 -15
  78. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/decisionItem.js +3 -1
  79. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/taskItem.js +3 -1
  80. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/keymaps.js +1 -2
  81. package/dist/cjs/plugins/text-formatting/pm-plugins/cursor.js +1 -4
  82. package/dist/cjs/plugins/type-ahead/api.js +243 -0
  83. package/dist/cjs/plugins/type-ahead/commands/insert-type-ahead-item.js +238 -0
  84. package/dist/cjs/plugins/type-ahead/commands/update-list-items.js +30 -0
  85. package/dist/cjs/plugins/type-ahead/commands/update-query.js +16 -18
  86. package/dist/cjs/plugins/type-ahead/commands/update-selected-index.js +36 -0
  87. package/dist/cjs/plugins/type-ahead/constants.js +25 -0
  88. package/dist/cjs/plugins/type-ahead/index.js +183 -52
  89. package/dist/cjs/plugins/type-ahead/insert-utils.js +132 -0
  90. package/dist/cjs/plugins/type-ahead/pm-plugins/actions.js +12 -9
  91. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +238 -0
  92. package/dist/cjs/plugins/type-ahead/pm-plugins/input-rules.js +20 -40
  93. package/dist/cjs/plugins/type-ahead/pm-plugins/insert-item-plugin.js +28 -0
  94. package/dist/cjs/plugins/type-ahead/pm-plugins/{plugin-key.js → key.js} +0 -0
  95. package/dist/cjs/plugins/type-ahead/pm-plugins/main.js +79 -424
  96. package/dist/cjs/plugins/type-ahead/pm-plugins/reducer.js +188 -0
  97. package/dist/cjs/plugins/type-ahead/pm-plugins/utils.js +26 -0
  98. package/dist/cjs/plugins/type-ahead/stats-modifier.js +49 -0
  99. package/dist/cjs/plugins/type-ahead/transforms/close-type-ahead.js +18 -0
  100. package/dist/cjs/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +51 -0
  101. package/dist/cjs/plugins/type-ahead/transforms/set-selection-before-query.js +24 -0
  102. package/dist/cjs/plugins/type-ahead/ui/DynamicHeightListItem.js +77 -0
  103. package/dist/cjs/plugins/type-ahead/ui/InputQuery.js +325 -0
  104. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +195 -0
  105. package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +141 -0
  106. package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +141 -0
  107. package/dist/cjs/plugins/type-ahead/ui/WrapperTypeAhead.js +151 -0
  108. package/dist/cjs/plugins/type-ahead/ui/hooks/use-dynamic-list-height-calculation.js +118 -0
  109. package/dist/cjs/plugins/type-ahead/ui/hooks/use-item-insert.js +132 -0
  110. package/dist/cjs/plugins/type-ahead/ui/hooks/use-load-items.js +61 -0
  111. package/dist/cjs/plugins/type-ahead/ui/hooks/use-on-force-select.js +50 -0
  112. package/dist/cjs/plugins/type-ahead/ui/hooks/use-resize-observer.js +70 -0
  113. package/dist/cjs/plugins/type-ahead/utils.js +127 -0
  114. package/dist/cjs/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +33 -2
  115. package/dist/cjs/plugins/view-update-subscription/index.js +19 -14
  116. package/dist/cjs/plugins/view-update-subscription/subscribe/toolbarAndPickerUpdates.js +10 -3
  117. package/dist/cjs/plugins/view-update-subscription/subscribe/type-ahead-updates.js +46 -0
  118. package/dist/cjs/test-utils.js +17 -0
  119. package/dist/cjs/types/empty-state-handler.js +5 -0
  120. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +4 -21
  121. package/dist/cjs/ui/ElementBrowser/ElementBrowser.js +4 -2
  122. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +1 -0
  123. package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +16 -23
  124. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +11 -4
  125. package/dist/cjs/ui/ElementBrowser/components/StatelessElementBrowser.js +12 -4
  126. package/dist/cjs/ui/PanelTextInput/index.js +1 -3
  127. package/dist/cjs/utils/compare.js +7 -7
  128. package/dist/cjs/utils/index.js +7 -8
  129. package/dist/cjs/utils/rich-media-utils.js +2 -2
  130. package/dist/cjs/utils/selection.js +6 -3
  131. package/dist/cjs/version-wrapper.js +1 -1
  132. package/dist/cjs/version.json +1 -1
  133. package/dist/es2019/create-editor/create-plugins-list.js +6 -1
  134. package/dist/es2019/editor.js +1 -4
  135. package/dist/es2019/index.js +4 -6
  136. package/dist/es2019/labs/next/presets/default.js +2 -2
  137. package/dist/es2019/messages.js +5 -0
  138. package/dist/es2019/nodeviews/SelectionBasedNodeView.js +1 -2
  139. package/dist/es2019/plugins/analytics/plugin.js +5 -1
  140. package/dist/es2019/plugins/analytics/types/enums.js +5 -0
  141. package/dist/es2019/plugins/analytics/types/type-ahead.js +1 -0
  142. package/dist/es2019/plugins/block-type/messages.js +10 -0
  143. package/dist/es2019/plugins/card/nodeviews/embedCard.js +1 -3
  144. package/dist/es2019/plugins/collab-edit/participants.js +14 -0
  145. package/dist/es2019/plugins/collab-edit/plugin-state.js +17 -1
  146. package/dist/es2019/plugins/collab-edit/ui/avatars-with-plugin-state.js +6 -4
  147. package/dist/es2019/plugins/collab-edit/ui/avatars.js +17 -2
  148. package/dist/es2019/plugins/collab-edit/utils.js +34 -0
  149. package/dist/es2019/plugins/date/actions.js +4 -2
  150. package/dist/es2019/plugins/date/index.js +1 -1
  151. package/dist/es2019/plugins/date/pm-plugins/utils.js +6 -1
  152. package/dist/es2019/plugins/emoji/index.js +169 -146
  153. package/dist/es2019/plugins/emoji/pm-plugins/ascii-input-rules.js +0 -11
  154. package/dist/es2019/plugins/expand/pm-plugins/keymap.js +3 -6
  155. package/dist/es2019/plugins/extension/actions.js +16 -16
  156. package/dist/es2019/plugins/extension/pm-plugins/main.js +4 -4
  157. package/dist/es2019/plugins/extension/ui/Extension/ExtensionComponent.js +5 -4
  158. package/dist/es2019/plugins/extension/ui/Extension/index.js +2 -2
  159. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  160. package/dist/es2019/plugins/floating-toolbar/ui/ConfirmationModal.js +12 -15
  161. package/dist/es2019/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +25 -0
  162. package/dist/es2019/plugins/floating-toolbar/ui/EditorHideEmojiIcon.js +28 -0
  163. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +3 -5
  164. package/dist/es2019/plugins/help-dialog/ui/index.js +20 -26
  165. package/dist/es2019/plugins/help-dialog/ui/styles.js +2 -2
  166. package/dist/es2019/plugins/hyperlink/index.js +4 -12
  167. package/dist/es2019/plugins/insert-block/index.js +4 -4
  168. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +8 -4
  169. package/dist/es2019/plugins/list/index.js +20 -14
  170. package/dist/es2019/plugins/macro/actions.js +14 -14
  171. package/dist/es2019/plugins/media/index.js +1 -0
  172. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +1 -0
  173. package/dist/es2019/plugins/media/pm-plugins/main.js +27 -12
  174. package/dist/es2019/plugins/media/styles.js +7 -2
  175. package/dist/es2019/plugins/media/toolbar/filePreviewItem.js +59 -0
  176. package/dist/es2019/plugins/media/toolbar/index.js +158 -42
  177. package/dist/es2019/plugins/media/toolbar/utils.js +32 -0
  178. package/dist/es2019/plugins/mentions/index.js +34 -536
  179. package/dist/es2019/plugins/mentions/pm-plugins/key.js +2 -0
  180. package/dist/es2019/plugins/mentions/pm-plugins/main.js +138 -0
  181. package/dist/es2019/plugins/mentions/pm-plugins/utils.js +4 -0
  182. package/dist/es2019/plugins/mentions/type-ahead/index.js +394 -0
  183. package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +2 -1
  184. package/dist/es2019/plugins/mentions/ui/InviteItem/styles.js +4 -2
  185. package/dist/es2019/plugins/mentions/ui/ToolbarMention/index.js +2 -2
  186. package/dist/es2019/plugins/mentions/utils.js +20 -1
  187. package/dist/es2019/plugins/panel/index.js +95 -62
  188. package/dist/es2019/plugins/panel/nodeviews/panel.js +7 -1
  189. package/dist/es2019/plugins/panel/toolbar.js +90 -6
  190. package/dist/es2019/plugins/panel/toolbar.test.js +131 -14
  191. package/dist/es2019/plugins/paste/handlers.js +2 -2
  192. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +6 -3
  193. package/dist/es2019/plugins/placeholder/index.js +5 -0
  194. package/dist/es2019/plugins/quick-insert/api.js +18 -0
  195. package/dist/es2019/plugins/quick-insert/assets/custom-panel.js +45 -0
  196. package/dist/es2019/plugins/quick-insert/assets/index.js +6 -0
  197. package/dist/es2019/plugins/quick-insert/index.js +12 -23
  198. package/dist/es2019/plugins/quick-insert/search.js +1 -3
  199. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/index.js +1 -0
  200. package/dist/es2019/plugins/rank.js +1 -1
  201. package/dist/es2019/plugins/rule/index.js +1 -22
  202. package/dist/es2019/plugins/scroll-into-view/index.js +1 -3
  203. package/dist/es2019/plugins/selection/gap-cursor/actions.js +5 -6
  204. package/dist/es2019/plugins/selection/pm-plugins/selection-main.js +1 -3
  205. package/dist/es2019/plugins/status/actions.js +5 -2
  206. package/dist/es2019/plugins/status/plugin.js +1 -1
  207. package/dist/es2019/plugins/table/commands/selection.js +25 -25
  208. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +8 -1
  209. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +14 -15
  210. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/decisionItem.js +2 -1
  211. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/taskItem.js +2 -1
  212. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/keymaps.js +1 -2
  213. package/dist/es2019/plugins/text-formatting/pm-plugins/cursor.js +1 -4
  214. package/dist/es2019/plugins/type-ahead/api.js +224 -0
  215. package/dist/es2019/plugins/type-ahead/commands/insert-type-ahead-item.js +222 -0
  216. package/dist/es2019/plugins/type-ahead/commands/update-list-items.js +19 -0
  217. package/dist/es2019/plugins/type-ahead/commands/update-query.js +17 -15
  218. package/dist/es2019/plugins/type-ahead/commands/update-selected-index.js +25 -0
  219. package/dist/es2019/plugins/type-ahead/constants.js +15 -0
  220. package/dist/es2019/plugins/type-ahead/index.js +203 -78
  221. package/dist/es2019/plugins/type-ahead/insert-utils.js +119 -0
  222. package/dist/es2019/plugins/type-ahead/pm-plugins/actions.js +11 -8
  223. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +211 -0
  224. package/dist/es2019/plugins/type-ahead/pm-plugins/input-rules.js +18 -32
  225. package/dist/es2019/plugins/type-ahead/pm-plugins/insert-item-plugin.js +19 -0
  226. package/dist/es2019/plugins/type-ahead/pm-plugins/{plugin-key.js → key.js} +0 -0
  227. package/dist/es2019/plugins/type-ahead/pm-plugins/main.js +81 -401
  228. package/dist/es2019/plugins/type-ahead/pm-plugins/reducer.js +165 -0
  229. package/dist/es2019/plugins/type-ahead/pm-plugins/utils.js +16 -0
  230. package/dist/es2019/plugins/type-ahead/stats-modifier.js +41 -0
  231. package/dist/es2019/plugins/type-ahead/transforms/close-type-ahead.js +7 -0
  232. package/dist/es2019/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +40 -0
  233. package/dist/es2019/plugins/type-ahead/transforms/set-selection-before-query.js +11 -0
  234. package/dist/es2019/plugins/type-ahead/ui/DynamicHeightListItem.js +51 -0
  235. package/dist/es2019/plugins/type-ahead/ui/InputQuery.js +307 -0
  236. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +163 -0
  237. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +136 -0
  238. package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +120 -0
  239. package/dist/es2019/plugins/type-ahead/ui/WrapperTypeAhead.js +110 -0
  240. package/dist/es2019/plugins/type-ahead/ui/hooks/use-dynamic-list-height-calculation.js +97 -0
  241. package/dist/es2019/plugins/type-ahead/ui/hooks/use-item-insert.js +126 -0
  242. package/dist/es2019/plugins/type-ahead/ui/hooks/use-load-items.js +43 -0
  243. package/dist/es2019/plugins/type-ahead/ui/hooks/use-on-force-select.js +41 -0
  244. package/dist/es2019/plugins/type-ahead/ui/hooks/use-resize-observer.js +53 -0
  245. package/dist/es2019/plugins/type-ahead/utils.js +93 -0
  246. package/dist/es2019/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +29 -2
  247. package/dist/es2019/plugins/view-update-subscription/index.js +19 -14
  248. package/dist/es2019/plugins/view-update-subscription/subscribe/toolbarAndPickerUpdates.js +9 -3
  249. package/dist/es2019/plugins/view-update-subscription/subscribe/type-ahead-updates.js +34 -0
  250. package/dist/es2019/test-utils.js +7 -0
  251. package/dist/es2019/types/empty-state-handler.js +1 -0
  252. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +4 -8
  253. package/dist/es2019/ui/ConfigPanel/transformers.js +9 -9
  254. package/dist/es2019/ui/ElementBrowser/ElementBrowser.js +4 -2
  255. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +1 -0
  256. package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +20 -21
  257. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +9 -2
  258. package/dist/es2019/ui/ElementBrowser/components/StatelessElementBrowser.js +12 -4
  259. package/dist/es2019/ui/PanelTextInput/index.js +1 -3
  260. package/dist/es2019/utils/compare.js +7 -7
  261. package/dist/es2019/utils/index.js +7 -8
  262. package/dist/es2019/utils/rich-media-utils.js +2 -2
  263. package/dist/es2019/utils/selection.js +6 -3
  264. package/dist/es2019/version-wrapper.js +1 -1
  265. package/dist/es2019/version.json +1 -1
  266. package/dist/esm/create-editor/create-plugins-list.js +6 -1
  267. package/dist/esm/editor.js +1 -4
  268. package/dist/esm/index.js +4 -6
  269. package/dist/esm/labs/next/presets/default.js +2 -2
  270. package/dist/esm/messages.js +5 -0
  271. package/dist/esm/nodeviews/SelectionBasedNodeView.js +1 -2
  272. package/dist/esm/plugins/analytics/plugin.js +8 -6
  273. package/dist/esm/plugins/analytics/types/enums.js +5 -0
  274. package/dist/esm/plugins/analytics/types/type-ahead.js +1 -0
  275. package/dist/esm/plugins/block-type/messages.js +10 -0
  276. package/dist/esm/plugins/card/nodeviews/embedCard.js +1 -3
  277. package/dist/esm/plugins/collab-edit/participants.js +15 -0
  278. package/dist/esm/plugins/collab-edit/plugin-state.js +15 -1
  279. package/dist/esm/plugins/collab-edit/ui/avatars-with-plugin-state.js +6 -4
  280. package/dist/esm/plugins/collab-edit/ui/avatars.js +17 -2
  281. package/dist/esm/plugins/collab-edit/utils.js +32 -0
  282. package/dist/esm/plugins/date/actions.js +4 -2
  283. package/dist/esm/plugins/date/index.js +1 -1
  284. package/dist/esm/plugins/date/pm-plugins/utils.js +6 -1
  285. package/dist/esm/plugins/emoji/index.js +136 -112
  286. package/dist/esm/plugins/emoji/pm-plugins/ascii-input-rules.js +0 -13
  287. package/dist/esm/plugins/expand/pm-plugins/keymap.js +3 -6
  288. package/dist/esm/plugins/extension/actions.js +16 -16
  289. package/dist/esm/plugins/extension/pm-plugins/main.js +4 -4
  290. package/dist/esm/plugins/extension/ui/Extension/ExtensionComponent.js +5 -4
  291. package/dist/esm/plugins/extension/ui/Extension/index.js +2 -2
  292. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  293. package/dist/esm/plugins/floating-toolbar/ui/ConfirmationModal.js +12 -15
  294. package/dist/esm/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +25 -0
  295. package/dist/esm/plugins/floating-toolbar/ui/EditorHideEmojiIcon.js +28 -0
  296. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +3 -5
  297. package/dist/esm/plugins/help-dialog/ui/index.js +13 -19
  298. package/dist/esm/plugins/help-dialog/ui/styles.js +2 -6
  299. package/dist/esm/plugins/hyperlink/index.js +4 -10
  300. package/dist/esm/plugins/insert-block/index.js +5 -5
  301. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +8 -4
  302. package/dist/esm/plugins/list/index.js +5 -0
  303. package/dist/esm/plugins/macro/actions.js +14 -14
  304. package/dist/esm/plugins/media/index.js +1 -0
  305. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +1 -0
  306. package/dist/esm/plugins/media/pm-plugins/main.js +27 -14
  307. package/dist/esm/plugins/media/styles.js +2 -2
  308. package/dist/esm/plugins/media/toolbar/filePreviewItem.js +62 -0
  309. package/dist/esm/plugins/media/toolbar/index.js +154 -43
  310. package/dist/esm/plugins/media/toolbar/utils.js +60 -0
  311. package/dist/esm/plugins/mentions/index.js +45 -557
  312. package/dist/esm/plugins/mentions/pm-plugins/key.js +2 -0
  313. package/dist/esm/plugins/mentions/pm-plugins/main.js +145 -0
  314. package/dist/esm/plugins/mentions/pm-plugins/utils.js +4 -0
  315. package/dist/esm/plugins/mentions/type-ahead/index.js +415 -0
  316. package/dist/esm/plugins/mentions/ui/InviteItem/index.js +2 -1
  317. package/dist/esm/plugins/mentions/ui/InviteItem/styles.js +4 -2
  318. package/dist/esm/plugins/mentions/ui/ToolbarMention/index.js +2 -2
  319. package/dist/esm/plugins/mentions/utils.js +19 -0
  320. package/dist/esm/plugins/panel/index.js +44 -13
  321. package/dist/esm/plugins/panel/nodeviews/panel.js +36 -22
  322. package/dist/esm/plugins/panel/toolbar.js +92 -6
  323. package/dist/esm/plugins/panel/toolbar.test.js +148 -16
  324. package/dist/esm/plugins/paste/handlers.js +2 -2
  325. package/dist/esm/plugins/paste/pm-plugins/analytics.js +6 -3
  326. package/dist/esm/plugins/placeholder/index.js +5 -0
  327. package/dist/esm/plugins/quick-insert/api.js +20 -0
  328. package/dist/esm/plugins/quick-insert/assets/custom-panel.js +45 -0
  329. package/dist/esm/plugins/quick-insert/assets/index.js +12 -0
  330. package/dist/esm/plugins/quick-insert/index.js +10 -24
  331. package/dist/esm/plugins/quick-insert/search.js +1 -3
  332. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/index.js +1 -0
  333. package/dist/esm/plugins/rank.js +1 -1
  334. package/dist/esm/plugins/rule/index.js +1 -22
  335. package/dist/esm/plugins/scroll-into-view/index.js +1 -3
  336. package/dist/esm/plugins/selection/gap-cursor/actions.js +5 -6
  337. package/dist/esm/plugins/selection/pm-plugins/selection-main.js +1 -3
  338. package/dist/esm/plugins/status/actions.js +5 -2
  339. package/dist/esm/plugins/status/plugin.js +1 -1
  340. package/dist/esm/plugins/table/commands/selection.js +24 -24
  341. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +8 -1
  342. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +14 -15
  343. package/dist/esm/plugins/tasks-and-decisions/nodeviews/decisionItem.js +2 -1
  344. package/dist/esm/plugins/tasks-and-decisions/nodeviews/taskItem.js +2 -1
  345. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/keymaps.js +1 -2
  346. package/dist/esm/plugins/text-formatting/pm-plugins/cursor.js +1 -4
  347. package/dist/esm/plugins/type-ahead/api.js +228 -0
  348. package/dist/esm/plugins/type-ahead/commands/insert-type-ahead-item.js +217 -0
  349. package/dist/esm/plugins/type-ahead/commands/update-list-items.js +19 -0
  350. package/dist/esm/plugins/type-ahead/commands/update-query.js +13 -13
  351. package/dist/esm/plugins/type-ahead/commands/update-selected-index.js +25 -0
  352. package/dist/esm/plugins/type-ahead/constants.js +15 -0
  353. package/dist/esm/plugins/type-ahead/index.js +173 -53
  354. package/dist/esm/plugins/type-ahead/insert-utils.js +116 -0
  355. package/dist/esm/plugins/type-ahead/pm-plugins/actions.js +11 -8
  356. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +204 -0
  357. package/dist/esm/plugins/type-ahead/pm-plugins/input-rules.js +18 -33
  358. package/dist/esm/plugins/type-ahead/pm-plugins/insert-item-plugin.js +18 -0
  359. package/dist/esm/plugins/type-ahead/pm-plugins/{plugin-key.js → key.js} +0 -0
  360. package/dist/esm/plugins/type-ahead/pm-plugins/main.js +80 -393
  361. package/dist/esm/plugins/type-ahead/pm-plugins/reducer.js +168 -0
  362. package/dist/esm/plugins/type-ahead/pm-plugins/utils.js +16 -0
  363. package/dist/esm/plugins/type-ahead/stats-modifier.js +43 -0
  364. package/dist/esm/plugins/type-ahead/transforms/close-type-ahead.js +7 -0
  365. package/dist/esm/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +39 -0
  366. package/dist/esm/plugins/type-ahead/transforms/set-selection-before-query.js +13 -0
  367. package/dist/esm/plugins/type-ahead/ui/DynamicHeightListItem.js +51 -0
  368. package/dist/esm/plugins/type-ahead/ui/InputQuery.js +302 -0
  369. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +168 -0
  370. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +105 -0
  371. package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +114 -0
  372. package/dist/esm/plugins/type-ahead/ui/WrapperTypeAhead.js +125 -0
  373. package/dist/esm/plugins/type-ahead/ui/hooks/use-dynamic-list-height-calculation.js +101 -0
  374. package/dist/esm/plugins/type-ahead/ui/hooks/use-item-insert.js +118 -0
  375. package/dist/esm/plugins/type-ahead/ui/hooks/use-load-items.js +46 -0
  376. package/dist/esm/plugins/type-ahead/ui/hooks/use-on-force-select.js +38 -0
  377. package/dist/esm/plugins/type-ahead/ui/hooks/use-resize-observer.js +48 -0
  378. package/dist/esm/plugins/type-ahead/utils.js +88 -0
  379. package/dist/esm/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +33 -2
  380. package/dist/esm/plugins/view-update-subscription/index.js +19 -14
  381. package/dist/esm/plugins/view-update-subscription/subscribe/toolbarAndPickerUpdates.js +10 -3
  382. package/dist/esm/plugins/view-update-subscription/subscribe/type-ahead-updates.js +33 -0
  383. package/dist/esm/test-utils.js +7 -0
  384. package/dist/esm/types/empty-state-handler.js +1 -0
  385. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +4 -14
  386. package/dist/esm/ui/ElementBrowser/ElementBrowser.js +4 -2
  387. package/dist/esm/ui/ElementBrowser/InsertMenu.js +1 -0
  388. package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +16 -23
  389. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +10 -3
  390. package/dist/esm/ui/ElementBrowser/components/StatelessElementBrowser.js +12 -4
  391. package/dist/esm/ui/PanelTextInput/index.js +1 -3
  392. package/dist/esm/utils/compare.js +7 -7
  393. package/dist/esm/utils/index.js +7 -8
  394. package/dist/esm/utils/rich-media-utils.js +2 -2
  395. package/dist/esm/utils/selection.js +6 -3
  396. package/dist/esm/version-wrapper.js +1 -1
  397. package/dist/esm/version.json +1 -1
  398. package/dist/types/commands/index.d.ts +1 -1
  399. package/dist/types/create-editor/ErrorBoundary.d.ts +1 -1
  400. package/dist/types/index.d.ts +3 -5
  401. package/dist/types/labs/next/full-page.d.ts +1 -1
  402. package/dist/types/labs/next/mobile.d.ts +1 -1
  403. package/dist/types/labs/next/presets/default.d.ts +2 -0
  404. package/dist/types/messages.d.ts +5 -0
  405. package/dist/types/plugins/alignment/commands/index.d.ts +2 -2
  406. package/dist/types/plugins/analytics/types/enums.d.ts +6 -1
  407. package/dist/types/plugins/analytics/types/events.d.ts +12 -2
  408. package/dist/types/plugins/analytics/types/general-events.d.ts +2 -23
  409. package/dist/types/plugins/analytics/types/type-ahead.d.ts +27 -0
  410. package/dist/types/plugins/block-type/messages.d.ts +10 -0
  411. package/dist/types/plugins/card/ui/ResizableEmbedCard.d.ts +1 -1
  412. package/dist/types/plugins/collab-edit/participants.d.ts +1 -0
  413. package/dist/types/plugins/collab-edit/ui/avatars.d.ts +3 -1
  414. package/dist/types/plugins/collab-edit/ui/invite-to-edit.d.ts +1 -1
  415. package/dist/types/plugins/collab-edit/utils.d.ts +4 -2
  416. package/dist/types/plugins/date/actions.d.ts +1 -1
  417. package/dist/types/plugins/date/pm-plugins/types.d.ts +1 -0
  418. package/dist/types/plugins/emoji/index.d.ts +2 -4
  419. package/dist/types/plugins/emoji/types.d.ts +2 -2
  420. package/dist/types/plugins/extension/ui/Extension/Extension/index.d.ts +2 -3
  421. package/dist/types/plugins/extension/ui/Extension/Extension/styles.d.ts +1 -1
  422. package/dist/types/plugins/extension/ui/Extension/ExtensionComponent.d.ts +2 -3
  423. package/dist/types/plugins/extension/ui/Extension/index.d.ts +2 -3
  424. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  425. package/dist/types/plugins/find-replace/ui/styles.d.ts +3 -3
  426. package/dist/types/plugins/floating-toolbar/ui/EditorEmojiAddIcon.d.ts +1 -0
  427. package/dist/types/plugins/floating-toolbar/ui/EditorHideEmojiIcon.d.ts +1 -0
  428. package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.d.ts +1 -1
  429. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +0 -1
  430. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -0
  431. package/dist/types/plugins/media/toolbar/filePreviewItem.d.ts +7 -0
  432. package/dist/types/plugins/media/toolbar/utils.d.ts +4 -0
  433. package/dist/types/plugins/media/types.d.ts +3 -0
  434. package/dist/types/plugins/media/ui/ResizableMediaSingle/index.d.ts +1 -1
  435. package/dist/types/plugins/media/utils/media-single.d.ts +1 -1
  436. package/dist/types/plugins/mentions/analytics.d.ts +1 -1
  437. package/dist/types/plugins/mentions/index.d.ts +4 -30
  438. package/dist/types/plugins/mentions/pm-plugins/key.d.ts +3 -0
  439. package/dist/types/plugins/mentions/pm-plugins/main.d.ts +8 -0
  440. package/dist/types/plugins/mentions/pm-plugins/utils.d.ts +3 -0
  441. package/dist/types/plugins/mentions/type-ahead/index.d.ts +17 -0
  442. package/dist/types/plugins/mentions/types.d.ts +2 -0
  443. package/dist/types/plugins/mentions/ui/InviteItem/index.d.ts +1 -0
  444. package/dist/types/plugins/mentions/ui/InviteItem/styles.d.ts +2 -0
  445. package/dist/types/plugins/mentions/utils.d.ts +4 -0
  446. package/dist/types/plugins/panel/nodeviews/panel.d.ts +19 -3
  447. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +2 -0
  448. package/dist/types/plugins/quick-insert/api.d.ts +6 -0
  449. package/dist/types/plugins/quick-insert/assets/custom-panel.d.ts +1 -0
  450. package/dist/types/plugins/quick-insert/assets/index.d.ts +1 -0
  451. package/dist/types/plugins/quick-insert/search.d.ts +1 -1
  452. package/dist/types/plugins/quick-insert/types.d.ts +3 -0
  453. package/dist/types/plugins/status/actions.d.ts +3 -1
  454. package/dist/types/plugins/status/ui/statusPicker.d.ts +1 -1
  455. package/dist/types/plugins/type-ahead/api.d.ts +53 -0
  456. package/dist/types/plugins/type-ahead/commands/insert-type-ahead-item.d.ts +12 -0
  457. package/dist/types/plugins/type-ahead/commands/update-list-items.d.ts +3 -0
  458. package/dist/types/plugins/type-ahead/commands/update-query.d.ts +2 -2
  459. package/dist/types/plugins/type-ahead/commands/update-selected-index.d.ts +2 -0
  460. package/dist/types/plugins/type-ahead/constants.d.ts +10 -0
  461. package/dist/types/plugins/type-ahead/index.d.ts +5 -4
  462. package/dist/types/plugins/type-ahead/insert-utils.d.ts +18 -0
  463. package/dist/types/plugins/type-ahead/pm-plugins/actions.d.ts +9 -8
  464. package/dist/types/plugins/type-ahead/pm-plugins/decorations.d.ts +24 -0
  465. package/dist/types/plugins/type-ahead/pm-plugins/input-rules.d.ts +0 -1
  466. package/dist/types/plugins/type-ahead/pm-plugins/insert-item-plugin.d.ts +2 -0
  467. package/dist/types/plugins/type-ahead/pm-plugins/{plugin-key.d.ts → key.d.ts} +0 -0
  468. package/dist/types/plugins/type-ahead/pm-plugins/main.d.ts +12 -39
  469. package/dist/types/plugins/type-ahead/pm-plugins/reducer.d.ts +10 -0
  470. package/dist/types/plugins/type-ahead/pm-plugins/utils.d.ts +4 -0
  471. package/dist/types/plugins/type-ahead/stats-modifier.d.ts +20 -0
  472. package/dist/types/plugins/type-ahead/transforms/close-type-ahead.d.ts +2 -0
  473. package/dist/types/plugins/type-ahead/transforms/open-typeahead-at-cursor.d.ts +9 -0
  474. package/dist/types/plugins/type-ahead/transforms/set-selection-before-query.d.ts +2 -0
  475. package/dist/types/plugins/type-ahead/types.d.ts +95 -30
  476. package/dist/types/plugins/type-ahead/ui/DynamicHeightListItem.d.ts +21 -0
  477. package/dist/types/plugins/type-ahead/ui/InputQuery.d.ts +22 -0
  478. package/dist/types/plugins/type-ahead/ui/TypeAheadList.d.ts +11 -0
  479. package/dist/types/plugins/type-ahead/ui/TypeAheadListItem.d.ts +15 -0
  480. package/dist/types/plugins/type-ahead/ui/TypeAheadPopup.d.ts +22 -0
  481. package/dist/types/plugins/type-ahead/ui/WrapperTypeAhead.d.ts +20 -0
  482. package/dist/types/plugins/type-ahead/ui/hooks/use-dynamic-list-height-calculation.d.ts +25 -0
  483. package/dist/types/plugins/type-ahead/ui/hooks/use-item-insert.d.ts +3 -0
  484. package/dist/types/plugins/type-ahead/ui/hooks/use-load-items.d.ts +3 -0
  485. package/dist/types/plugins/type-ahead/ui/hooks/use-on-force-select.d.ts +11 -0
  486. package/dist/types/plugins/type-ahead/ui/hooks/use-resize-observer.d.ts +9 -0
  487. package/dist/types/plugins/type-ahead/utils.d.ts +18 -0
  488. package/dist/types/plugins/view-update-subscription/subscribe/type-ahead-updates.d.ts +9 -0
  489. package/dist/types/test-utils.d.ts +2 -0
  490. package/dist/types/types/editor-props.d.ts +2 -0
  491. package/dist/types/types/empty-state-handler.d.ts +7 -0
  492. package/dist/types/types/feature-flags.d.ts +8 -0
  493. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  494. package/dist/types/ui/ColorPickerButton/index.d.ts +1 -1
  495. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  496. package/dist/types/ui/ConfigPanel/FormErrorBoundary.d.ts +1 -1
  497. package/dist/types/ui/ElementBrowser/ElementBrowser.d.ts +2 -0
  498. package/dist/types/ui/ElementBrowser/ModalElementBrowser.d.ts +2 -0
  499. package/dist/types/ui/ElementBrowser/components/CategoryList.d.ts +1 -1
  500. package/dist/types/ui/ElementBrowser/components/ElementList/ElementList.d.ts +5 -1
  501. package/dist/types/ui/ElementBrowser/components/StatelessElementBrowser.d.ts +3 -1
  502. package/dist/types/ui/LinkSearch/index.d.ts +20 -20
  503. package/dist/types/ui/PortalProvider/index.d.ts +1 -1
  504. package/dist/types/ui/ToolbarButton/index.d.ts +4 -4
  505. package/dist/types/ui/ToolbarButton/styles.d.ts +2 -2
  506. package/dist/types/utils/selection.d.ts +2 -2
  507. package/package.json +32 -29
  508. package/dist/cjs/plugins/emoji/commands/insert-emoji-query.js +0 -22
  509. package/dist/cjs/plugins/mentions/commands/insert-mention-query.js +0 -22
  510. package/dist/cjs/plugins/type-ahead/commands/dismiss.js +0 -44
  511. package/dist/cjs/plugins/type-ahead/commands/insert-query.js +0 -38
  512. package/dist/cjs/plugins/type-ahead/commands/items-list-updated.js +0 -25
  513. package/dist/cjs/plugins/type-ahead/commands/select-item.js +0 -163
  514. package/dist/cjs/plugins/type-ahead/commands/set-current-index.js +0 -25
  515. package/dist/cjs/plugins/type-ahead/pm-plugins/keymap.js +0 -115
  516. package/dist/cjs/plugins/type-ahead/ui/TypeAhead.js +0 -221
  517. package/dist/cjs/plugins/type-ahead/ui/TypeAheadItemsList.js +0 -239
  518. package/dist/cjs/plugins/type-ahead/utils/find-query-mark.js +0 -33
  519. package/dist/cjs/plugins/type-ahead/utils/is-query-active.js +0 -16
  520. package/dist/es2019/plugins/emoji/commands/insert-emoji-query.js +0 -13
  521. package/dist/es2019/plugins/mentions/commands/insert-mention-query.js +0 -13
  522. package/dist/es2019/plugins/type-ahead/commands/dismiss.js +0 -36
  523. package/dist/es2019/plugins/type-ahead/commands/insert-query.js +0 -26
  524. package/dist/es2019/plugins/type-ahead/commands/items-list-updated.js +0 -12
  525. package/dist/es2019/plugins/type-ahead/commands/select-item.js +0 -119
  526. package/dist/es2019/plugins/type-ahead/commands/set-current-index.js +0 -13
  527. package/dist/es2019/plugins/type-ahead/pm-plugins/keymap.js +0 -94
  528. package/dist/es2019/plugins/type-ahead/ui/TypeAhead.js +0 -175
  529. package/dist/es2019/plugins/type-ahead/ui/TypeAheadItemsList.js +0 -196
  530. package/dist/es2019/plugins/type-ahead/utils/find-query-mark.js +0 -29
  531. package/dist/es2019/plugins/type-ahead/utils/is-query-active.js +0 -9
  532. package/dist/esm/plugins/emoji/commands/insert-emoji-query.js +0 -13
  533. package/dist/esm/plugins/mentions/commands/insert-mention-query.js +0 -13
  534. package/dist/esm/plugins/type-ahead/commands/dismiss.js +0 -33
  535. package/dist/esm/plugins/type-ahead/commands/insert-query.js +0 -26
  536. package/dist/esm/plugins/type-ahead/commands/items-list-updated.js +0 -14
  537. package/dist/esm/plugins/type-ahead/commands/select-item.js +0 -132
  538. package/dist/esm/plugins/type-ahead/commands/set-current-index.js +0 -15
  539. package/dist/esm/plugins/type-ahead/pm-plugins/keymap.js +0 -94
  540. package/dist/esm/plugins/type-ahead/ui/TypeAhead.js +0 -202
  541. package/dist/esm/plugins/type-ahead/ui/TypeAheadItemsList.js +0 -204
  542. package/dist/esm/plugins/type-ahead/utils/find-query-mark.js +0 -24
  543. package/dist/esm/plugins/type-ahead/utils/is-query-active.js +0 -9
  544. package/dist/types/plugins/emoji/commands/insert-emoji-query.d.ts +0 -2
  545. package/dist/types/plugins/mentions/commands/insert-mention-query.d.ts +0 -2
  546. package/dist/types/plugins/type-ahead/commands/dismiss.d.ts +0 -2
  547. package/dist/types/plugins/type-ahead/commands/insert-query.d.ts +0 -2
  548. package/dist/types/plugins/type-ahead/commands/items-list-updated.d.ts +0 -3
  549. package/dist/types/plugins/type-ahead/commands/select-item.d.ts +0 -9
  550. package/dist/types/plugins/type-ahead/commands/set-current-index.d.ts +0 -2
  551. package/dist/types/plugins/type-ahead/pm-plugins/keymap.d.ts +0 -3
  552. package/dist/types/plugins/type-ahead/ui/TypeAhead.d.ts +0 -37
  553. package/dist/types/plugins/type-ahead/ui/TypeAheadItemsList.d.ts +0 -32
  554. package/dist/types/plugins/type-ahead/utils/find-query-mark.d.ts +0 -10
  555. package/dist/types/plugins/type-ahead/utils/is-query-active.d.ts +0 -2
@@ -6,9 +6,11 @@ import keymap from './pm-plugins/keymaps';
6
6
  import { addAnalytics, ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, INPUT_METHOD, EVENT_TYPE } from '../analytics';
7
7
  import { IconPanel, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanelError } from '../quick-insert/assets';
8
8
  import { messages } from '../block-type/messages';
9
+ import IconCustomPanel from '../quick-insert/assets/custom-panel';
10
+ import { T75 } from '@atlaskit/theme/colors';
9
11
 
10
- var insertPanelTypeWithAnalytics = function insertPanelTypeWithAnalytics(panelType, state, insert) {
11
- var tr = insert(insertPanelType(panelType, state));
12
+ var insertPanelTypeWithAnalytics = function insertPanelTypeWithAnalytics(panelAttributes, state, insert) {
13
+ var tr = insert(insertPanelType(panelAttributes, state));
12
14
 
13
15
  if (tr) {
14
16
  addAnalytics(state, tr, {
@@ -17,7 +19,7 @@ var insertPanelTypeWithAnalytics = function insertPanelTypeWithAnalytics(panelTy
17
19
  actionSubjectId: ACTION_SUBJECT_ID.PANEL,
18
20
  attributes: {
19
21
  inputMethod: INPUT_METHOD.QUICK_INSERT,
20
- panelType: panelType
22
+ panelType: panelAttributes.panelType
21
23
  },
22
24
  eventType: EVENT_TYPE.TRACK
23
25
  });
@@ -26,10 +28,8 @@ var insertPanelTypeWithAnalytics = function insertPanelTypeWithAnalytics(panelTy
26
28
  return tr;
27
29
  };
28
30
 
29
- var insertPanelType = function insertPanelType(panelType, state) {
30
- return state.schema.nodes.panel.createChecked({
31
- panelType: panelType
32
- }, state.schema.nodes.paragraph.createChecked());
31
+ var insertPanelType = function insertPanelType(panelAttributes, state) {
32
+ return state.schema.nodes.panel.createChecked(panelAttributes, state.schema.nodes.paragraph.createChecked());
33
33
  };
34
34
 
35
35
  var panelPlugin = function panelPlugin() {
@@ -62,7 +62,7 @@ var panelPlugin = function panelPlugin() {
62
62
  pluginsOptions: {
63
63
  quickInsert: function quickInsert(_ref2) {
64
64
  var formatMessage = _ref2.formatMessage;
65
- return [{
65
+ var quickInsertOptions = [{
66
66
  id: 'infopanel',
67
67
  title: formatMessage(messages.infoPanel),
68
68
  keywords: ['panel'],
@@ -72,7 +72,9 @@ var panelPlugin = function panelPlugin() {
72
72
  return /*#__PURE__*/React.createElement(IconPanel, null);
73
73
  },
74
74
  action: function action(insert, state) {
75
- return insertPanelTypeWithAnalytics(PanelType.INFO, state, insert);
75
+ return insertPanelTypeWithAnalytics({
76
+ panelType: PanelType.INFO
77
+ }, state, insert);
76
78
  }
77
79
  }, {
78
80
  id: 'notepanel',
@@ -83,7 +85,9 @@ var panelPlugin = function panelPlugin() {
83
85
  return /*#__PURE__*/React.createElement(IconPanelNote, null);
84
86
  },
85
87
  action: function action(insert, state) {
86
- return insertPanelTypeWithAnalytics(PanelType.NOTE, state, insert);
88
+ return insertPanelTypeWithAnalytics({
89
+ panelType: PanelType.NOTE
90
+ }, state, insert);
87
91
  }
88
92
  }, {
89
93
  id: 'successpanel',
@@ -95,7 +99,9 @@ var panelPlugin = function panelPlugin() {
95
99
  return /*#__PURE__*/React.createElement(IconPanelSuccess, null);
96
100
  },
97
101
  action: function action(insert, state) {
98
- return insertPanelTypeWithAnalytics(PanelType.SUCCESS, state, insert);
102
+ return insertPanelTypeWithAnalytics({
103
+ panelType: PanelType.SUCCESS
104
+ }, state, insert);
99
105
  }
100
106
  }, {
101
107
  id: 'warningpanel',
@@ -106,7 +112,9 @@ var panelPlugin = function panelPlugin() {
106
112
  return /*#__PURE__*/React.createElement(IconPanelWarning, null);
107
113
  },
108
114
  action: function action(insert, state) {
109
- return insertPanelTypeWithAnalytics(PanelType.WARNING, state, insert);
115
+ return insertPanelTypeWithAnalytics({
116
+ panelType: PanelType.WARNING
117
+ }, state, insert);
110
118
  }
111
119
  }, {
112
120
  id: 'errorpanel',
@@ -117,9 +125,32 @@ var panelPlugin = function panelPlugin() {
117
125
  return /*#__PURE__*/React.createElement(IconPanelError, null);
118
126
  },
119
127
  action: function action(insert, state) {
120
- return insertPanelTypeWithAnalytics(PanelType.ERROR, state, insert);
128
+ return insertPanelTypeWithAnalytics({
129
+ panelType: PanelType.ERROR
130
+ }, state, insert);
121
131
  }
122
132
  }];
133
+
134
+ if (options.UNSAFE_allowCustomPanel) {
135
+ quickInsertOptions.push({
136
+ id: 'custompanel',
137
+ title: formatMessage(messages.customPanel),
138
+ description: formatMessage(messages.customPanelDescription),
139
+ priority: 1000,
140
+ icon: function icon() {
141
+ return /*#__PURE__*/React.createElement(IconCustomPanel, null);
142
+ },
143
+ action: function action(insert, state) {
144
+ return insertPanelTypeWithAnalytics({
145
+ panelType: PanelType.CUSTOM,
146
+ panelIcon: ':rainbow:',
147
+ panelColor: T75
148
+ }, state, insert);
149
+ }
150
+ });
151
+ }
152
+
153
+ return quickInsertOptions;
123
154
  },
124
155
  floatingToolbar: function floatingToolbar(state, intl, providerFactory) {
125
156
  return getToolbarConfig(state, intl, options, providerFactory);
@@ -1,4 +1,5 @@
1
1
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
2
3
  import React from 'react';
3
4
  import ReactDOM from 'react-dom';
4
5
  import { DOMSerializer } from 'prosemirror-model';
@@ -12,6 +13,7 @@ import { PanelType } from '@atlaskit/adf-schema';
12
13
  import { PanelSharedCssClassName } from '@atlaskit/editor-common';
13
14
  import { Emoji } from '@atlaskit/editor-common';
14
15
  import { panelAttrsToDom } from '../utils';
16
+ var fitToHeight = 20;
15
17
  export var panelIcons = {
16
18
  info: InfoIcon,
17
19
  success: SuccessIcon,
@@ -34,7 +36,7 @@ export var PanelIcon = function PanelIcon(props) {
34
36
  shortName: panelIcon,
35
37
  showTooltip: false,
36
38
  allowTextFallback: false,
37
- fitToHeight: 16
39
+ fitToHeight: fitToHeight
38
40
  });
39
41
  }
40
42
 
@@ -44,33 +46,45 @@ export var PanelIcon = function PanelIcon(props) {
44
46
  });
45
47
  };
46
48
 
47
- var PanelNodeView = function PanelNodeView(node, view, getPos, pluginOptions, providerFactory) {
48
- _classCallCheck(this, PanelNodeView);
49
+ var PanelNodeView = /*#__PURE__*/function () {
50
+ function PanelNodeView(node, view, getPos, pluginOptions, providerFactory) {
51
+ _classCallCheck(this, PanelNodeView);
49
52
 
50
- this.providerFactory = providerFactory;
51
- this.pluginOptions = pluginOptions;
52
- this.view = view;
53
- this.node = node;
53
+ this.providerFactory = providerFactory;
54
+ this.pluginOptions = pluginOptions;
55
+ this.view = view;
56
+ this.node = node;
54
57
 
55
- var _DOMSerializer$render = DOMSerializer.renderSpec(document, panelAttrsToDom(node.attrs, pluginOptions.UNSAFE_allowCustomPanel || false)),
56
- dom = _DOMSerializer$render.dom,
57
- contentDOM = _DOMSerializer$render.contentDOM;
58
+ var _DOMSerializer$render = DOMSerializer.renderSpec(document, panelAttrsToDom(node.attrs, pluginOptions.UNSAFE_allowCustomPanel || false)),
59
+ dom = _DOMSerializer$render.dom,
60
+ contentDOM = _DOMSerializer$render.contentDOM;
58
61
 
59
- this.getPos = getPos;
60
- this.dom = dom;
61
- this.contentDOM = contentDOM;
62
- this.icon = this.dom.querySelector(".".concat(PanelSharedCssClassName.icon));
62
+ this.getPos = getPos;
63
+ this.dom = dom;
64
+ this.contentDOM = contentDOM;
65
+ this.icon = this.dom.querySelector(".".concat(PanelSharedCssClassName.icon));
63
66
 
64
- if (!this.icon) {
65
- return;
67
+ if (!this.icon) {
68
+ return;
69
+ }
70
+
71
+ ReactDOM.render( /*#__PURE__*/React.createElement(PanelIcon, {
72
+ allowCustomPanel: pluginOptions.UNSAFE_allowCustomPanel,
73
+ panelAttributes: node.attrs,
74
+ providerFactory: this.providerFactory
75
+ }), this.icon);
66
76
  }
67
77
 
68
- ReactDOM.render( /*#__PURE__*/React.createElement(PanelIcon, {
69
- allowCustomPanel: pluginOptions.UNSAFE_allowCustomPanel,
70
- panelAttributes: node.attrs,
71
- providerFactory: this.providerFactory
72
- }), this.icon);
73
- };
78
+ _createClass(PanelNodeView, [{
79
+ key: "ignoreMutation",
80
+ value: function ignoreMutation(mutation) {
81
+ // ignore mutation if it caused by the icon.
82
+ return mutation.target === this.icon;
83
+ }
84
+ }]);
85
+
86
+ return PanelNodeView;
87
+ }();
74
88
 
75
89
  export var getPanelNodeView = function getPanelNodeView(pluginOptions, providerFactory) {
76
90
  return function (node, view, getPos) {
@@ -5,6 +5,7 @@ import NoteIcon from '@atlaskit/icon/glyph/editor/note';
5
5
  import RemoveIcon from '@atlaskit/icon/glyph/editor/remove';
6
6
  import WarningIcon from '@atlaskit/icon/glyph/editor/warning';
7
7
  import ErrorIcon from '@atlaskit/icon/glyph/editor/error';
8
+ import HideEmojiIcon from '../floating-toolbar/ui/EditorHideEmojiIcon';
8
9
  import commonMessages from '../../messages';
9
10
  import { removePanel, changePanelType } from './actions';
10
11
  import { hoverDecoration } from '../base/pm-plugins/decoration';
@@ -14,6 +15,7 @@ import { findPanel } from './utils';
14
15
  import { findDomRefAtPos } from 'prosemirror-utils';
15
16
  import { DEFAULT_BORDER_COLOR } from '../../ui/ColorPalette/Palettes';
16
17
  import { PanelType } from '@atlaskit/adf-schema';
18
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, ACTION_SUBJECT_ID, withAnalytics } from '../analytics';
17
19
  export var messages = defineMessages({
18
20
  info: {
19
21
  id: 'fabric.editor.info',
@@ -42,7 +44,7 @@ export var messages = defineMessages({
42
44
  },
43
45
  emoji: {
44
46
  id: 'fabric.editor.panel.emoji',
45
- defaultMessage: 'Add icon',
47
+ defaultMessage: 'Add emoji',
46
48
  description: 'Select the panel icon'
47
49
  },
48
50
  backgroundColor: {
@@ -92,18 +94,96 @@ export var getToolbarItems = function getToolbarItems(formatMessage, panelNodeTy
92
94
  if (isCustomPanelEnabled) {
93
95
  var changeColor = function changeColor(color) {
94
96
  return function (state, dispatch) {
95
- changePanelType(PanelType.CUSTOM, {
97
+ var panelNode = findPanel(state);
98
+
99
+ if (panelNode === undefined) {
100
+ return false;
101
+ }
102
+
103
+ var previousColor = panelNode.node.attrs.panelColor || getPanelTypeBackground(panelNode.node.attrs.panelType);
104
+
105
+ if (previousColor === color) {
106
+ changePanelType(PanelType.CUSTOM, {
107
+ color: color
108
+ }, isCustomPanelEnabled)(state, dispatch);
109
+ return false;
110
+ }
111
+
112
+ var payload = {
113
+ action: ACTION.CHANGED_BACKGROUND_COLOR,
114
+ actionSubject: ACTION_SUBJECT.PANEL,
115
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
116
+ attributes: {
117
+ newColor: color,
118
+ previousColor: previousColor
119
+ },
120
+ eventType: EVENT_TYPE.TRACK
121
+ };
122
+ withAnalytics(payload)(changePanelType(PanelType.CUSTOM, {
96
123
  color: color
97
- }, true)(state, dispatch);
124
+ }, isCustomPanelEnabled))(state, dispatch);
98
125
  return false;
99
126
  };
100
127
  };
101
128
 
102
129
  var changeEmoji = function changeEmoji(emoji) {
103
130
  return function (state, dispatch) {
104
- changePanelType(PanelType.CUSTOM, {
131
+ var panelNode = findPanel(state);
132
+
133
+ if (panelNode === undefined) {
134
+ return false;
135
+ }
136
+
137
+ var previousIcon = panelNode.node.attrs.panelIcon || '';
138
+
139
+ if (previousIcon === emoji) {
140
+ changePanelType(PanelType.CUSTOM, {
141
+ emoji: emoji
142
+ }, true)(state, dispatch);
143
+ return false;
144
+ }
145
+
146
+ var payload = {
147
+ action: ACTION.CHANGED_ICON,
148
+ actionSubject: ACTION_SUBJECT.PANEL,
149
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
150
+ attributes: {
151
+ newIcon: emoji,
152
+ previousIcon: previousIcon
153
+ },
154
+ eventType: EVENT_TYPE.TRACK
155
+ };
156
+ withAnalytics(payload)(changePanelType(PanelType.CUSTOM, {
105
157
  emoji: emoji
106
- }, true)(state, dispatch);
158
+ }, true))(state, dispatch);
159
+ return false;
160
+ };
161
+ };
162
+
163
+ var removeEmoji = function removeEmoji() {
164
+ return function (state, dispatch) {
165
+ var panelNode = findPanel(state);
166
+
167
+ if (activePanelType === PanelType.CUSTOM && !activePanelIcon) {
168
+ return false;
169
+ }
170
+
171
+ if (panelNode === undefined) {
172
+ return false;
173
+ }
174
+
175
+ var payload = {
176
+ action: ACTION.REMOVE_ICON,
177
+ actionSubject: ACTION_SUBJECT.PANEL,
178
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
179
+ attributes: {
180
+ icon: panelNode.node.attrs.panelIcon
181
+ },
182
+ eventType: EVENT_TYPE.TRACK
183
+ };
184
+ withAnalytics(payload)(changePanelType(PanelType.CUSTOM, {
185
+ emoji: undefined
186
+ }, isCustomPanelEnabled))(state, dispatch);
107
187
  return false;
108
188
  };
109
189
  };
@@ -133,12 +213,18 @@ export var getToolbarItems = function getToolbarItems(formatMessage, panelNodeTy
133
213
  type: 'select',
134
214
  selectType: 'emoji',
135
215
  options: [],
136
- selected: activePanelType === PanelType.CUSTOM,
216
+ selected: activePanelType === PanelType.CUSTOM && !!activePanelIcon,
137
217
  onChange: function onChange(emojiShortName) {
138
218
  return changeEmoji(emojiShortName);
139
219
  }
140
220
  };
141
221
  items.push(emojiPicker, {
222
+ id: 'editor.panel.hideEmoji',
223
+ type: 'button',
224
+ icon: HideEmojiIcon,
225
+ onClick: removeEmoji(),
226
+ title: formatMessage(commonMessages.hideEmoji)
227
+ }, {
142
228
  type: 'separator'
143
229
  }, colorPicker);
144
230
  }
@@ -8,17 +8,22 @@ import { createProsemirrorEditorFactory, Preset } from '@atlaskit/editor-test-he
8
8
  import panelPlugin from '.';
9
9
  import { doc, p, panel } from '@atlaskit/editor-test-helpers/doc-builder';
10
10
  import { PanelType } from '@atlaskit/adf-schema';
11
+ import analyticsPlugin from '../analytics';
12
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, ACTION_SUBJECT_ID } from '../analytics';
13
+ import { emojiPluginKey } from '../emoji';
11
14
 
12
15
  var dummyFormatMessage = function dummyFormatMessage(messageDescriptor) {
13
16
  return messageDescriptor.defaultMessage || '';
14
17
  };
15
18
 
16
- var spy = jest.spyOn(actions, 'changePanelType').mockImplementation(function () {
17
- return jest.fn();
18
- });
19
+ var changePanelTypespy = jest.spyOn(actions, 'changePanelType');
19
20
  describe('getToolbarItems', function () {
20
21
  var providerFactory = new ProviderFactory();
21
22
  providerFactory.setProvider('emojiProvider', Promise.resolve(getTestEmojiResource()));
23
+ var panelPreset = new Preset().add([panelPlugin, {
24
+ UNSAFE_allowCustomPanel: true
25
+ }]);
26
+ var itemsWithCustomPanelEnabled = getToolbarItems(dummyFormatMessage, defaultSchema.nodes.panel, true, providerFactory, PanelType.INFO);
22
27
  afterEach(function () {
23
28
  jest.clearAllMocks();
24
29
  });
@@ -27,15 +32,14 @@ describe('getToolbarItems', function () {
27
32
  expect(items).toHaveLength(7);
28
33
  });
29
34
  describe('if isCustomPanelEnabled is true', function () {
30
- var items = getToolbarItems(dummyFormatMessage, defaultSchema.nodes.panel, true, providerFactory, PanelType.INFO);
31
- it('should return 10 items', function () {
32
- expect(items).toHaveLength(10);
35
+ it('should return 11 items', function () {
36
+ expect(itemsWithCustomPanelEnabled).toHaveLength(11);
33
37
  });
34
38
  it('should contain emoji and color picker button', function () {
35
- var emojiButton = items.find(function (item) {
39
+ var emojiButton = itemsWithCustomPanelEnabled.find(function (item) {
36
40
  return item.type === 'select' && item.selectType === 'emoji';
37
41
  });
38
- var colorButton = items.find(function (item) {
42
+ var colorButton = itemsWithCustomPanelEnabled.find(function (item) {
39
43
  return item.type === 'select' && item.selectType === 'color';
40
44
  });
41
45
  expect(emojiButton).not.toBeUndefined();
@@ -44,9 +48,6 @@ describe('getToolbarItems', function () {
44
48
  });
45
49
  describe('custom panel toolbar items', function () {
46
50
  var createEditor = createProsemirrorEditorFactory();
47
- var panelPreset = new Preset().add([panelPlugin, {
48
- UNSAFE_allowCustomPanel: true
49
- }]);
50
51
 
51
52
  var _createEditor = createEditor({
52
53
  doc: doc(panel({
@@ -57,18 +58,17 @@ describe('getToolbarItems', function () {
57
58
  }),
58
59
  editorView = _createEditor.editorView;
59
60
 
60
- var items = getToolbarItems(dummyFormatMessage, defaultSchema.nodes.panel, true, providerFactory, PanelType.INFO);
61
61
  it("should call changePanelType when clicked on emoji picker\n with changed emoji", function () {
62
- var emojiPickerConfig = items.find(function (item) {
62
+ var emojiPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
63
63
  return item.type === 'select' && item.selectType === 'emoji';
64
64
  });
65
65
  emojiPickerConfig.onChange(':smiley:')(editorView.state);
66
- expect(spy).toBeCalledWith(PanelType.CUSTOM, {
66
+ expect(changePanelTypespy).toBeCalledWith(PanelType.CUSTOM, {
67
67
  emoji: ':smiley:'
68
68
  }, true);
69
69
  });
70
70
  it("should call changePanelType when clicked on color picker\n with changed color", function () {
71
- var colorPickerConfig = items.find(function (item) {
71
+ var colorPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
72
72
  return item.type === 'select' && item.selectType === 'color';
73
73
  });
74
74
  colorPickerConfig.onChange({
@@ -76,9 +76,141 @@ describe('getToolbarItems', function () {
76
76
  value: '#ABF5D1',
77
77
  border: DEFAULT_BORDER_COLOR
78
78
  })(editorView.state);
79
- expect(spy).toBeCalledWith(PanelType.CUSTOM, {
79
+ expect(changePanelTypespy).toBeCalledWith(PanelType.CUSTOM, {
80
80
  color: '#ABF5D1'
81
81
  }, true);
82
82
  });
83
+ it("should call changePanelType when clicked on hide emoji", function () {
84
+ var hideEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
85
+ return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
86
+ });
87
+ hideEmojiButton.onClick(editorView.state);
88
+ expect(changePanelTypespy).toBeCalledWith(PanelType.CUSTOM, {
89
+ emoji: undefined
90
+ }, true);
91
+ });
92
+ it("should not call changePanelType when clicked on hide emoji when no emoji in panel", function () {
93
+ var _createEditor2 = createEditor({
94
+ doc: doc(panel({
95
+ panelType: 'custom'
96
+ })(p('{<>}'))),
97
+ preset: panelPreset,
98
+ providerFactory: providerFactory
99
+ }),
100
+ editorView = _createEditor2.editorView;
101
+
102
+ var toolbarItems = getToolbarItems(dummyFormatMessage, defaultSchema.nodes.panel, true, providerFactory, PanelType.CUSTOM);
103
+ var hideEmojiButton = toolbarItems.find(function (item) {
104
+ return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
105
+ });
106
+ changePanelTypespy.mockClear();
107
+ hideEmojiButton.onClick(editorView.state);
108
+ expect(changePanelTypespy).not.toBeCalled();
109
+ });
110
+ });
111
+ describe('analytics for custom panels', function () {
112
+ var createEditor = createProsemirrorEditorFactory();
113
+ var createAnalyticsEvent = jest.fn(function () {
114
+ return {
115
+ fire: function fire() {}
116
+ };
117
+ });
118
+ var editorView;
119
+ beforeEach(function () {
120
+ var _createEditor3 = createEditor({
121
+ doc: doc(panel({
122
+ panelType: 'info'
123
+ })(p('{<>}'))),
124
+ preset: panelPreset.add([analyticsPlugin, {
125
+ createAnalyticsEvent: createAnalyticsEvent
126
+ }]),
127
+ providerFactory: providerFactory,
128
+ pluginKey: emojiPluginKey
129
+ });
130
+
131
+ editorView = _createEditor3.editorView;
132
+ });
133
+ it('Should trigger analytics when background color is changed', function () {
134
+ var colorPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
135
+ return item.type === 'select' && item.selectType === 'color';
136
+ });
137
+ colorPickerConfig.onChange({
138
+ label: 'Mintie',
139
+ value: '#ABF5D1',
140
+ border: DEFAULT_BORDER_COLOR
141
+ })(editorView.state, editorView.dispatch);
142
+ var payload = {
143
+ action: ACTION.CHANGED_BACKGROUND_COLOR,
144
+ actionSubject: ACTION_SUBJECT.PANEL,
145
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
146
+ attributes: expect.objectContaining({
147
+ newColor: '#ABF5D1',
148
+ previousColor: '#DEEBFF'
149
+ }),
150
+ eventType: EVENT_TYPE.TRACK
151
+ };
152
+ expect(createAnalyticsEvent).toHaveBeenCalledWith(payload);
153
+ });
154
+ it('Should trigger analytics when Icon is changed', function () {
155
+ var emojiPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
156
+ return item.type === 'select' && item.selectType === 'emoji';
157
+ });
158
+ emojiPickerConfig.onChange(':smiley:')(editorView.state, editorView.dispatch);
159
+ var payload = {
160
+ action: ACTION.CHANGED_ICON,
161
+ actionSubject: ACTION_SUBJECT.PANEL,
162
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
163
+ attributes: expect.objectContaining({
164
+ newIcon: ':smiley:',
165
+ previousIcon: ''
166
+ }),
167
+ eventType: EVENT_TYPE.TRACK
168
+ };
169
+ expect(createAnalyticsEvent).toHaveBeenCalledWith(payload);
170
+ });
171
+ it('Should trigger analytics when Icon is removed', function () {
172
+ var hideEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
173
+ return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
174
+ });
175
+ var emojiPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
176
+ return item.type === 'select' && item.selectType === 'emoji';
177
+ });
178
+ emojiPickerConfig.onChange(':smiley:')(editorView.state, editorView.dispatch);
179
+ hideEmojiButton.onClick(editorView.state, editorView.dispatch);
180
+ var payload = {
181
+ action: ACTION.REMOVE_ICON,
182
+ actionSubject: ACTION_SUBJECT.PANEL,
183
+ actionSubjectId: ACTION_SUBJECT_ID.PANEL,
184
+ attributes: expect.objectContaining({
185
+ icon: ':smiley:'
186
+ }),
187
+ eventType: EVENT_TYPE.TRACK
188
+ };
189
+ expect(createAnalyticsEvent).nthCalledWith(4, payload);
190
+ });
191
+ it('Should not fire analytics when the same background color is selected', function () {
192
+ var colorPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
193
+ return item.type === 'select' && item.selectType === 'color';
194
+ });
195
+ colorPickerConfig.onChange({
196
+ label: 'Mintie',
197
+ value: '#ABF5D1',
198
+ border: DEFAULT_BORDER_COLOR
199
+ })(editorView.state, editorView.dispatch);
200
+ colorPickerConfig.onChange({
201
+ label: 'Mintie',
202
+ value: '#ABF5D1',
203
+ border: DEFAULT_BORDER_COLOR
204
+ })(editorView.state, editorView.dispatch);
205
+ expect(createAnalyticsEvent).toHaveBeenCalledTimes(3);
206
+ });
207
+ it('Should not fire analtyics when same emoji is selected', function () {
208
+ var emojiPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
209
+ return item.type === 'select' && item.selectType === 'emoji';
210
+ });
211
+ emojiPickerConfig.onChange(':smiley:')(editorView.state, editorView.dispatch);
212
+ emojiPickerConfig.onChange(':smiley:')(editorView.state, editorView.dispatch);
213
+ expect(createAnalyticsEvent).toHaveBeenCalledTimes(3);
214
+ });
83
215
  });
84
216
  });
@@ -72,8 +72,8 @@ export function handlePasteIntoTaskAndDecision(slice) {
72
72
 
73
73
  if (selection instanceof TextSelection && Array.isArray(selectionMarks) && selectionMarks.length > 0 && hasOnlyNodesOfType(paragraph, text, emoji, mention, hardBreak)(slice) && (!codeMark.isInSet(selectionMarks) || textFormattingState.codeActive) // for codeMarks let's make sure mark is active
74
74
  ) {
75
- filters.push(applyTextMarksToSlice(schema, selection.$head.marks()));
76
- }
75
+ filters.push(applyTextMarksToSlice(schema, selection.$head.marks()));
76
+ }
77
77
 
78
78
  var transformedSlice = compose.apply(null, filters)(slice);
79
79
  var tr = closeHistory(state.tr).replaceSelection(transformedSlice).scrollIntoView();
@@ -164,7 +164,8 @@ export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
164
164
  pasteSize: text.length,
165
165
  type: pasteContext.type,
166
166
  content: PasteContents.text,
167
- source: source
167
+ source: source,
168
+ hyperlinkPasteOnText: false
168
169
  });
169
170
  }
170
171
 
@@ -192,7 +193,8 @@ export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
192
193
  type: pasteContext.type,
193
194
  pasteSize: pasteSize,
194
195
  content: content,
195
- source: source
196
+ source: source,
197
+ hyperlinkPasteOnText: !!pasteContext.hyperlinkPasteOnText
196
198
  }, linkDomains);
197
199
  } // TODO: ED-6612 We should not dispatch only analytics, it's preferred to wrap each command with his own analytics.
198
200
  // However, handlers like handleMacroAutoConvert dispatch multiple time,
@@ -255,7 +257,8 @@ export var handleSelectedTableWithAnalytics = function handleSelectedTableWithAn
255
257
  };
256
258
  export var handlePasteLinkOnSelectedTextWithAnalytics = function handlePasteLinkOnSelectedTextWithAnalytics(view, event, slice, type) {
257
259
  return pipe(handlePasteLinkOnSelectedText, pasteCommandWithAnalytics(view, event, slice, {
258
- type: type
260
+ type: type,
261
+ hyperlinkPasteOnText: true
259
262
  }))(slice);
260
263
  };
261
264
  export var createPasteMeasurePayload = function createPasteMeasurePayload(view, duration, content) {
@@ -5,6 +5,7 @@ import { pluginKey as alignmentPluginKey } from '../alignment/pm-plugins/main';
5
5
  import { placeHolderClassName } from './styles';
6
6
  export var pluginKey = new PluginKey('placeholderPlugin');
7
7
  import { focusStateKey } from '../base/pm-plugins/focus-handler';
8
+ import { isTypeAheadOpen } from '../type-ahead/utils';
8
9
 
9
10
  function getPlaceholderState(editorState) {
10
11
  return pluginKey.getState(editorState);
@@ -47,6 +48,10 @@ var emptyPlaceholder = {
47
48
  function createPlaceHolderStateFrom(editorState, getPlaceholderHintMessage, defaultPlaceholderText, bracketPlaceholderText) {
48
49
  var isEditorFocused = focusStateKey.getState(editorState);
49
50
 
51
+ if (isTypeAheadOpen(editorState)) {
52
+ return emptyPlaceholder;
53
+ }
54
+
50
55
  if (defaultPlaceholderText && isEmptyDocument(editorState.doc)) {
51
56
  return setPlaceHolderState(defaultPlaceholderText);
52
57
  }
@@ -0,0 +1,20 @@
1
+ import { pluginKey as quickInsertPluginKey } from './plugin-key';
2
+ import { searchQuickInsertItems } from './search';
3
+
4
+ var getItems = function getItems(editorView) {
5
+ return function (query, options) {
6
+ var pluginState = quickInsertPluginKey.getState(editorView.state);
7
+
8
+ if (!pluginState) {
9
+ return [];
10
+ }
11
+
12
+ return searchQuickInsertItems(pluginState, options)(query);
13
+ };
14
+ };
15
+
16
+ export var createQuickInsertTools = function createQuickInsertTools(editorView) {
17
+ return {
18
+ getItems: getItems(editorView)
19
+ };
20
+ };