@atlaskit/editor-core 150.0.2 → 151.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/actions/index.js +5 -23
  3. package/dist/cjs/create-editor/ErrorBoundary.js +113 -79
  4. package/dist/cjs/create-editor/ReactEditorView.js +145 -31
  5. package/dist/cjs/create-editor/create-plugins-list.js +8 -2
  6. package/dist/cjs/editor.js +101 -40
  7. package/dist/cjs/labs/next/presets/cxhtml.js +2 -1
  8. package/dist/cjs/plugins/analytics/types/enums.js +3 -1
  9. package/dist/cjs/plugins/base/index.js +4 -3
  10. package/dist/cjs/plugins/base/pm-plugins/frozen-editor.js +66 -36
  11. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  12. package/dist/cjs/plugins/card/index.js +13 -2
  13. package/dist/cjs/plugins/card/nodeviews/embedCard.js +1 -0
  14. package/dist/cjs/plugins/card/pm-plugins/main.js +7 -2
  15. package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +10 -3
  16. package/dist/cjs/plugins/code-bidi-warning/index.js +25 -0
  17. package/dist/cjs/plugins/code-bidi-warning/plugin-key.js +11 -0
  18. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/main.js +43 -0
  19. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +118 -0
  20. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/reducer.js +12 -0
  21. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/types.js +5 -0
  22. package/dist/cjs/plugins/code-block/index.js +10 -6
  23. package/dist/cjs/plugins/code-block/nodeviews/highlighting-code-block.js +16 -5
  24. package/dist/cjs/plugins/code-block/pm-plugins/main.js +12 -3
  25. package/dist/cjs/plugins/code-block/toolbar.js +1 -1
  26. package/dist/cjs/plugins/emoji/styles.js +1 -1
  27. package/dist/cjs/plugins/extension/pm-plugins/main.js +1 -4
  28. package/dist/cjs/plugins/extension/toolbar.js +28 -23
  29. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +9 -3
  30. package/dist/cjs/plugins/find-replace/ui/Find.js +27 -7
  31. package/dist/cjs/plugins/hyperlink/HyperlinkToolbarAppearance.js +2 -2
  32. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +3 -3
  33. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  34. package/dist/cjs/plugins/hyperlink/utils.js +6 -69
  35. package/dist/cjs/plugins/index.js +8 -0
  36. package/dist/cjs/plugins/media/index.js +14 -3
  37. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +24 -10
  38. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +179 -0
  39. package/dist/cjs/plugins/media/pm-plugins/main.js +18 -9
  40. package/dist/cjs/plugins/media/toolbar/index.js +49 -17
  41. package/dist/cjs/plugins/media/toolbar/utils.js +20 -2
  42. package/dist/cjs/plugins/media/utils/media-files.js +67 -1
  43. package/dist/cjs/plugins/mentions/type-ahead/index.js +39 -3
  44. package/dist/cjs/plugins/panel/index.js +2 -3
  45. package/dist/cjs/plugins/panel/message.js +47 -0
  46. package/dist/cjs/plugins/panel/toolbar.js +64 -84
  47. package/dist/cjs/plugins/panel/utils.js +2 -2
  48. package/dist/cjs/plugins/paste/linkify-md-plugin.js +3 -3
  49. package/dist/cjs/plugins/rank.js +1 -1
  50. package/dist/cjs/plugins/status/styles.js +1 -1
  51. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  52. package/dist/cjs/profiler/render-count.js +82 -0
  53. package/dist/cjs/ui/Appearance/Comment/Comment.js +6 -5
  54. package/dist/cjs/utils/react-hooks/use-component-renderer-tracking/index.js +55 -19
  55. package/dist/cjs/version-wrapper.js +1 -1
  56. package/dist/cjs/version.json +1 -1
  57. package/dist/es2019/actions/index.js +6 -28
  58. package/dist/es2019/create-editor/ErrorBoundary.js +73 -60
  59. package/dist/es2019/create-editor/ReactEditorView.js +130 -23
  60. package/dist/es2019/create-editor/create-plugins-list.js +9 -3
  61. package/dist/es2019/editor.js +74 -35
  62. package/dist/es2019/labs/next/presets/cxhtml.js +2 -1
  63. package/dist/es2019/plugins/analytics/types/enums.js +3 -1
  64. package/dist/es2019/plugins/base/index.js +4 -3
  65. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +63 -35
  66. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +2 -1
  67. package/dist/es2019/plugins/card/index.js +7 -2
  68. package/dist/es2019/plugins/card/nodeviews/embedCard.js +1 -0
  69. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -2
  70. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +12 -5
  71. package/dist/es2019/plugins/code-bidi-warning/index.js +15 -0
  72. package/dist/es2019/plugins/code-bidi-warning/plugin-key.js +2 -0
  73. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/main.js +31 -0
  74. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +88 -0
  75. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/reducer.js +3 -0
  76. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/types.js +1 -0
  77. package/dist/es2019/plugins/code-block/index.js +6 -1
  78. package/dist/es2019/plugins/code-block/nodeviews/highlighting-code-block.js +16 -4
  79. package/dist/es2019/plugins/code-block/pm-plugins/main.js +50 -39
  80. package/dist/es2019/plugins/code-block/toolbar.js +1 -1
  81. package/dist/es2019/plugins/emoji/styles.js +2 -0
  82. package/dist/es2019/plugins/extension/pm-plugins/main.js +1 -4
  83. package/dist/es2019/plugins/extension/toolbar.js +30 -25
  84. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +9 -4
  85. package/dist/es2019/plugins/find-replace/ui/Find.js +27 -6
  86. package/dist/es2019/plugins/hyperlink/HyperlinkToolbarAppearance.js +1 -1
  87. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  88. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  89. package/dist/es2019/plugins/hyperlink/utils.js +3 -59
  90. package/dist/es2019/plugins/index.js +2 -1
  91. package/dist/es2019/plugins/media/index.js +13 -4
  92. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +16 -7
  93. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +88 -0
  94. package/dist/es2019/plugins/media/pm-plugins/main.js +20 -11
  95. package/dist/es2019/plugins/media/toolbar/index.js +44 -15
  96. package/dist/es2019/plugins/media/toolbar/utils.js +16 -0
  97. package/dist/es2019/plugins/media/utils/media-files.js +68 -2
  98. package/dist/es2019/plugins/mentions/type-ahead/index.js +21 -2
  99. package/dist/es2019/plugins/panel/index.js +3 -4
  100. package/dist/es2019/plugins/panel/message.js +38 -0
  101. package/dist/es2019/plugins/panel/toolbar.js +52 -71
  102. package/dist/es2019/plugins/panel/utils.js +2 -2
  103. package/dist/es2019/plugins/paste/linkify-md-plugin.js +2 -2
  104. package/dist/es2019/plugins/rank.js +1 -1
  105. package/dist/es2019/plugins/status/styles.js +2 -0
  106. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  107. package/dist/es2019/profiler/render-count.js +60 -0
  108. package/dist/es2019/ui/Appearance/Comment/Comment.js +4 -2
  109. package/dist/es2019/utils/react-hooks/use-component-renderer-tracking/index.js +51 -18
  110. package/dist/es2019/version-wrapper.js +1 -1
  111. package/dist/es2019/version.json +1 -1
  112. package/dist/esm/actions/index.js +6 -24
  113. package/dist/esm/create-editor/ErrorBoundary.js +113 -78
  114. package/dist/esm/create-editor/ReactEditorView.js +146 -31
  115. package/dist/esm/create-editor/create-plugins-list.js +9 -3
  116. package/dist/esm/editor.js +100 -40
  117. package/dist/esm/labs/next/presets/cxhtml.js +2 -1
  118. package/dist/esm/plugins/analytics/types/enums.js +3 -1
  119. package/dist/esm/plugins/base/index.js +4 -3
  120. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +64 -36
  121. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  122. package/dist/esm/plugins/card/index.js +13 -2
  123. package/dist/esm/plugins/card/nodeviews/embedCard.js +1 -0
  124. package/dist/esm/plugins/card/pm-plugins/main.js +7 -2
  125. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +12 -5
  126. package/dist/esm/plugins/code-bidi-warning/index.js +17 -0
  127. package/dist/esm/plugins/code-bidi-warning/plugin-key.js +2 -0
  128. package/dist/esm/plugins/code-bidi-warning/pm-plugins/main.js +30 -0
  129. package/dist/esm/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +96 -0
  130. package/dist/esm/plugins/code-bidi-warning/pm-plugins/reducer.js +3 -0
  131. package/dist/esm/plugins/code-bidi-warning/pm-plugins/types.js +1 -0
  132. package/dist/esm/plugins/code-block/index.js +10 -6
  133. package/dist/esm/plugins/code-block/nodeviews/highlighting-code-block.js +16 -5
  134. package/dist/esm/plugins/code-block/pm-plugins/main.js +11 -3
  135. package/dist/esm/plugins/code-block/toolbar.js +1 -1
  136. package/dist/esm/plugins/emoji/styles.js +1 -1
  137. package/dist/esm/plugins/extension/pm-plugins/main.js +1 -4
  138. package/dist/esm/plugins/extension/toolbar.js +28 -23
  139. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +9 -4
  140. package/dist/esm/plugins/find-replace/ui/Find.js +27 -7
  141. package/dist/esm/plugins/hyperlink/HyperlinkToolbarAppearance.js +2 -2
  142. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  143. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  144. package/dist/esm/plugins/hyperlink/utils.js +3 -59
  145. package/dist/esm/plugins/index.js +2 -1
  146. package/dist/esm/plugins/media/index.js +14 -4
  147. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +24 -10
  148. package/dist/esm/plugins/media/nodeviews/mediaInline.js +147 -0
  149. package/dist/esm/plugins/media/pm-plugins/main.js +19 -11
  150. package/dist/esm/plugins/media/toolbar/index.js +47 -19
  151. package/dist/esm/plugins/media/toolbar/utils.js +15 -1
  152. package/dist/esm/plugins/media/utils/media-files.js +60 -2
  153. package/dist/esm/plugins/mentions/type-ahead/index.js +39 -3
  154. package/dist/esm/plugins/panel/index.js +3 -4
  155. package/dist/esm/plugins/panel/message.js +38 -0
  156. package/dist/esm/plugins/panel/toolbar.js +57 -77
  157. package/dist/esm/plugins/panel/utils.js +2 -2
  158. package/dist/esm/plugins/paste/linkify-md-plugin.js +2 -2
  159. package/dist/esm/plugins/rank.js +1 -1
  160. package/dist/esm/plugins/status/styles.js +1 -1
  161. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  162. package/dist/esm/profiler/render-count.js +57 -0
  163. package/dist/esm/ui/Appearance/Comment/Comment.js +6 -5
  164. package/dist/esm/utils/react-hooks/use-component-renderer-tracking/index.js +53 -20
  165. package/dist/esm/version-wrapper.js +1 -1
  166. package/dist/esm/version.json +1 -1
  167. package/dist/types/create-editor/ErrorBoundary.d.ts +6 -6
  168. package/dist/types/create-editor/ReactEditorView.d.ts +15 -3
  169. package/dist/types/editor.d.ts +2 -0
  170. package/dist/types/plugins/analytics/index.d.ts +1 -1
  171. package/dist/types/plugins/analytics/types/enums.d.ts +4 -2
  172. package/dist/types/plugins/analytics/types/events.d.ts +7 -2
  173. package/dist/types/plugins/analytics/types/general-events.d.ts +4 -1
  174. package/dist/types/plugins/analytics/types/index.d.ts +1 -1
  175. package/dist/types/plugins/analytics/types/insert-events.d.ts +6 -1
  176. package/dist/types/plugins/analytics/types/link-tool-bar-events.d.ts +1 -0
  177. package/dist/types/plugins/base/index.d.ts +1 -0
  178. package/dist/types/plugins/base/pm-plugins/frozen-editor.d.ts +3 -2
  179. package/dist/types/plugins/card/pm-plugins/main.d.ts +2 -3
  180. package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -1
  181. package/dist/types/plugins/card/types.d.ts +6 -0
  182. package/dist/types/plugins/code-bidi-warning/index.d.ts +3 -0
  183. package/dist/types/plugins/code-bidi-warning/plugin-key.d.ts +2 -0
  184. package/dist/types/plugins/code-bidi-warning/pm-plugins/main.d.ts +3 -0
  185. package/dist/types/plugins/code-bidi-warning/pm-plugins/plugin-factory.d.ts +7 -0
  186. package/dist/types/plugins/code-bidi-warning/pm-plugins/reducer.d.ts +3 -0
  187. package/dist/types/plugins/code-bidi-warning/pm-plugins/types.d.ts +5 -0
  188. package/dist/types/plugins/code-block/nodeviews/highlighting-code-block.d.ts +11 -2
  189. package/dist/types/plugins/code-block/pm-plugins/main.d.ts +5 -1
  190. package/dist/types/plugins/extension/types.d.ts +0 -2
  191. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  192. package/dist/types/plugins/floating-toolbar/types.d.ts +1 -1
  193. package/dist/types/plugins/floating-toolbar/ui/Select.d.ts +1 -1
  194. package/dist/types/plugins/hyperlink/HyperlinkToolbarAppearance.d.ts +1 -1
  195. package/dist/types/plugins/hyperlink/utils.d.ts +0 -21
  196. package/dist/types/plugins/index.d.ts +1 -0
  197. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +27 -0
  198. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -2
  199. package/dist/types/plugins/media/toolbar/utils.d.ts +2 -0
  200. package/dist/types/plugins/media/utils/media-files.d.ts +8 -0
  201. package/dist/types/plugins/panel/message.d.ts +37 -0
  202. package/dist/types/plugins/panel/toolbar.d.ts +4 -37
  203. package/dist/types/plugins/panel/types.d.ts +1 -0
  204. package/dist/types/profiler/render-count.d.ts +14 -0
  205. package/dist/types/types/feature-flags.d.ts +17 -0
  206. package/dist/types/ui/LinkSearch/types.d.ts +1 -0
  207. package/dist/types/utils/react-hooks/use-component-renderer-tracking/index.d.ts +17 -1
  208. package/package.json +21 -18
  209. package/dist/cjs/plugins/caption/nodeviews/index.test.js +0 -135
  210. package/dist/cjs/plugins/caption/pm-plugins/keymap.test.js +0 -203
  211. package/dist/cjs/plugins/caption/pm-plugins/main.test.js +0 -141
  212. package/dist/cjs/plugins/code-block/language-list.test.js +0 -74
  213. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -101
  214. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -98
  215. package/dist/cjs/plugins/media/commands/captions.test.js +0 -149
  216. package/dist/cjs/plugins/media/commands/linking.test.js +0 -296
  217. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -50
  218. package/dist/cjs/plugins/panel/toolbar.test.js +0 -250
  219. package/dist/cjs/ui/ColorPickerButton/index.test.js +0 -123
  220. package/dist/cjs/ui/PortalProvider/index.test.js +0 -139
  221. package/dist/es2019/plugins/caption/nodeviews/index.test.js +0 -122
  222. package/dist/es2019/plugins/caption/pm-plugins/keymap.test.js +0 -193
  223. package/dist/es2019/plugins/caption/pm-plugins/main.test.js +0 -132
  224. package/dist/es2019/plugins/code-block/language-list.test.js +0 -69
  225. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -83
  226. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  227. package/dist/es2019/plugins/media/commands/captions.test.js +0 -126
  228. package/dist/es2019/plugins/media/commands/linking.test.js +0 -208
  229. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  230. package/dist/es2019/plugins/panel/toolbar.test.js +0 -200
  231. package/dist/es2019/ui/ColorPickerButton/index.test.js +0 -88
  232. package/dist/es2019/ui/PortalProvider/index.test.js +0 -115
  233. package/dist/esm/plugins/caption/nodeviews/index.test.js +0 -125
  234. package/dist/esm/plugins/caption/pm-plugins/keymap.test.js +0 -195
  235. package/dist/esm/plugins/caption/pm-plugins/main.test.js +0 -124
  236. package/dist/esm/plugins/code-block/language-list.test.js +0 -71
  237. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -92
  238. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  239. package/dist/esm/plugins/media/commands/captions.test.js +0 -135
  240. package/dist/esm/plugins/media/commands/linking.test.js +0 -268
  241. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  242. package/dist/esm/plugins/panel/toolbar.test.js +0 -230
  243. package/dist/esm/ui/ColorPickerButton/index.test.js +0 -107
  244. package/dist/esm/ui/PortalProvider/index.test.js +0 -129
@@ -1,132 +0,0 @@
1
- import { createProsemirrorEditorFactory, Preset } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
2
- import mediaPlugin from '../../media';
3
- import captionPlugin from '../';
4
- import { caption, doc, media, mediaSingle, p } from '@atlaskit/editor-test-helpers/doc-builder';
5
- import { pluginKey } from './plugin-key';
6
- import { setTextSelection } from '../../../utils/selection';
7
- import * as analyticsUtils from '../../analytics/utils';
8
- describe('Caption plugin', () => {
9
- const createEditor = createProsemirrorEditorFactory();
10
-
11
- const editor = doc => createEditor({
12
- doc,
13
- pluginKey: pluginKey,
14
- preset: new Preset().add([mediaPlugin, {
15
- allowMediaSingle: true,
16
- featureFlags: {
17
- captions: true
18
- }
19
- }]).add(captionPlugin)
20
- });
21
-
22
- it('should not remove caption when there is content', () => {
23
- const {
24
- editorView,
25
- refs: {
26
- movePos
27
- }
28
- } = editor(doc(mediaSingle()(media({
29
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
30
- type: 'file',
31
- collection: 'MediaServicesSample'
32
- })(), caption('Test{<>}')), p('Line {movePos}two')));
33
- setTextSelection(editorView, movePos);
34
- expect(editorView.state.doc).toEqualDocument(doc(mediaSingle()(media({
35
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
36
- type: 'file',
37
- collection: 'MediaServicesSample'
38
- })(), caption('Test')), p('Line two')));
39
- });
40
- it('should remove caption when there is no content', () => {
41
- const {
42
- editorView,
43
- refs: {
44
- movePos
45
- }
46
- } = editor(doc(mediaSingle()(media({
47
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
48
- type: 'file',
49
- collection: 'MediaServicesSample'
50
- })(), caption('{<>}')), p('Line {movePos}two')));
51
- setTextSelection(editorView, movePos);
52
- expect(editorView.state.doc).toEqualDocument(doc(mediaSingle()(media({
53
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
54
- type: 'file',
55
- collection: 'MediaServicesSample'
56
- })()), p('Line two')));
57
- });
58
- it('should remove caption when clicking onto another caption', () => {
59
- const {
60
- editorView,
61
- refs: {
62
- movePos
63
- }
64
- } = editor(doc(mediaSingle()(media({
65
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
66
- type: 'file',
67
- collection: 'MediaServicesSample'
68
- })(), caption('{<>}')), mediaSingle()(media({
69
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
70
- type: 'file',
71
- collection: 'MediaServicesSample'
72
- })(), caption('second {movePos}caption'))));
73
- setTextSelection(editorView, movePos);
74
- expect(editorView.state.doc).toEqualDocument(doc(mediaSingle()(media({
75
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
76
- type: 'file',
77
- collection: 'MediaServicesSample'
78
- })()), mediaSingle()(media({
79
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
80
- type: 'file',
81
- collection: 'MediaServicesSample'
82
- })(), caption('second caption'))));
83
- });
84
- describe('analytics', () => {
85
- const addAnalyticsSpy = jest.spyOn(analyticsUtils, 'addAnalytics');
86
- const FIRST_CALL = 0;
87
- const PAYLOAD_ARGUMENT = 2;
88
- beforeEach(() => {
89
- addAnalyticsSpy.mockReset();
90
- });
91
- it('should fire deleted analytic when removing caption', () => {
92
- const {
93
- editorView,
94
- refs: {
95
- movePos
96
- }
97
- } = editor(doc(mediaSingle()(media({
98
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
99
- type: 'file',
100
- collection: 'MediaServicesSample'
101
- })(), caption('{<>}')), p('Line {movePos}two')));
102
- setTextSelection(editorView, movePos);
103
- expect(addAnalyticsSpy).toBeCalled();
104
- expect(addAnalyticsSpy.mock.calls[FIRST_CALL][PAYLOAD_ARGUMENT]).toEqual({
105
- action: 'deleted',
106
- actionSubject: 'mediaSingle',
107
- actionSubjectId: 'caption',
108
- eventType: 'track'
109
- });
110
- });
111
- it('should fire edited analytic when moving away from a non empty caption', () => {
112
- const {
113
- editorView,
114
- refs: {
115
- movePos
116
- }
117
- } = editor(doc(mediaSingle()(media({
118
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
119
- type: 'file',
120
- collection: 'MediaServicesSample'
121
- })(), caption('Test{<>}')), p('Line {movePos}two')));
122
- setTextSelection(editorView, movePos);
123
- expect(addAnalyticsSpy).toBeCalled();
124
- expect(addAnalyticsSpy.mock.calls[FIRST_CALL][PAYLOAD_ARGUMENT]).toEqual({
125
- action: 'edited',
126
- actionSubject: 'mediaSingle',
127
- actionSubjectId: 'caption',
128
- eventType: 'track'
129
- });
130
- });
131
- });
132
- });
@@ -1,69 +0,0 @@
1
- import { DEFAULT_LANGUAGES, findMatchedLanguage, filterSupportedLanguages, getLanguageIdentifier, createLanguageList } from './language-list';
2
- const mockSupportedLanguages = [{
3
- name: 'JSON',
4
- alias: ['json'],
5
- value: 'json'
6
- }, {
7
- name: 'JavaScript',
8
- alias: ['javascript', 'js'],
9
- value: 'javascript'
10
- }, {
11
- name: 'Python',
12
- alias: ['python', 'py'],
13
- value: 'python'
14
- }];
15
- describe('languageList utils', () => {
16
- it('should find matched language', () => {
17
- expect(findMatchedLanguage(mockSupportedLanguages, 'JavaScript')).toEqual({
18
- name: 'JavaScript',
19
- alias: ['javascript', 'js'],
20
- value: 'javascript'
21
- });
22
- expect(findMatchedLanguage(mockSupportedLanguages, 'Python')).toEqual({
23
- name: 'Python',
24
- alias: ['python', 'py'],
25
- value: 'python'
26
- });
27
- expect(findMatchedLanguage(mockSupportedLanguages, 'GiBBeRish')).toBeUndefined();
28
- });
29
- it('should filter supported languages', () => {
30
- const mockSupportedLanguageStrings = mockSupportedLanguages.map(language => language.name.toLowerCase());
31
- expect(filterSupportedLanguages([])).toEqual(DEFAULT_LANGUAGES);
32
- expect(filterSupportedLanguages(mockSupportedLanguageStrings)).toEqual([{
33
- name: 'Python',
34
- alias: ['python', 'py'],
35
- value: 'python'
36
- }, {
37
- name: 'JavaScript',
38
- alias: ['javascript', 'js'],
39
- value: 'javascript'
40
- }, {
41
- name: 'JSON',
42
- alias: ['json'],
43
- value: 'json'
44
- } // '(None)' is not an actual language and should not be 'supported'
45
- ]);
46
- });
47
- it('should get language identifier', () => {
48
- expect(getLanguageIdentifier({
49
- name: 'MyLanguage',
50
- alias: ['myalias'],
51
- value: 'myalias'
52
- })).toEqual('myalias');
53
- });
54
- it('should create language list sorted as case insensitive', () => {
55
- expect(createLanguageList(mockSupportedLanguages)).toEqual([{
56
- name: 'JavaScript',
57
- alias: ['javascript', 'js'],
58
- value: 'javascript'
59
- }, {
60
- name: 'JSON',
61
- alias: ['json'],
62
- value: 'json'
63
- }, {
64
- name: 'Python',
65
- alias: ['python', 'py'],
66
- value: 'python'
67
- }]);
68
- });
69
- });
@@ -1,83 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
3
- import { render, act } from '@testing-library/react';
4
- import { IntlProvider } from 'react-intl';
5
- import { SaveIndicator } from './SaveIndicator';
6
- jest.useFakeTimers();
7
-
8
- function setup(props = {}) {
9
- let onSaveStarted = () => {};
10
-
11
- const result = render( /*#__PURE__*/React.createElement(IntlProvider, {
12
- locale: "en"
13
- }, /*#__PURE__*/React.createElement(SaveIndicator, _extends({
14
- duration: 2000
15
- }, props), ({
16
- onSaveStarted: _onSaveStarted
17
- }) => {
18
- onSaveStarted = _onSaveStarted;
19
- return /*#__PURE__*/React.createElement("div", {
20
- "data-testid": "my-component"
21
- });
22
- })));
23
- return { ...result,
24
- onSaveStarted
25
- };
26
- }
27
-
28
- describe('Extension Context Panel - Save Indicator', () => {
29
- it('should call the render function ', () => {
30
- const renderFunction = jest.fn().mockImplementation(() => {
31
- return /*#__PURE__*/React.createElement("div", {
32
- "data-testid": "my-component"
33
- });
34
- });
35
- const {
36
- queryByTestId
37
- } = render( /*#__PURE__*/React.createElement(IntlProvider, {
38
- locale: "en"
39
- }, /*#__PURE__*/React.createElement(SaveIndicator, {
40
- duration: 1000
41
- }, renderFunction)));
42
- expect(queryByTestId('my-component')).not.toBeNull();
43
- });
44
- it('should show the save indicator when is saving ', () => {
45
- const {
46
- onSaveStarted,
47
- queryByTestId
48
- } = setup();
49
- act(() => {
50
- onSaveStarted();
51
- });
52
- expect(queryByTestId('save-indicator-content')).not.toBeNull();
53
- });
54
- it('should hide once the duration is over ', () => {
55
- jest.clearAllTimers();
56
- const duration = 2000;
57
- const {
58
- onSaveStarted,
59
- queryByTestId
60
- } = setup({
61
- duration
62
- });
63
- act(() => {
64
- onSaveStarted();
65
- });
66
- act(() => {
67
- jest.advanceTimersByTime(duration);
68
- });
69
- expect(queryByTestId('save-indicator-content')).toBeNull();
70
- });
71
- it('should not show the save indicator after saving when visible is false ', () => {
72
- const {
73
- onSaveStarted,
74
- queryByTestId
75
- } = setup({
76
- visible: false
77
- });
78
- act(() => {
79
- onSaveStarted();
80
- });
81
- expect(queryByTestId('save-indicator-content')).toBeNull();
82
- });
83
- });
@@ -1,85 +0,0 @@
1
- import React from 'react';
2
- import { mountWithIntl } from '@atlaskit/editor-test-helpers/enzyme';
3
- import { createProsemirrorEditorFactory, Preset } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
4
- import { doc, p, panel } from '@atlaskit/editor-test-helpers/doc-builder';
5
- import { EmojiPickerButton } from './EmojiPickerButton';
6
- import panelPlugin from '../../panel';
7
- import { ProviderFactory } from '@atlaskit/editor-common';
8
- import { getTestEmojiResource } from '@atlaskit/util-data-test/get-test-emoji-resource';
9
- import { act } from 'react-dom/test-utils';
10
- describe('emoji-picker-button', () => {
11
- const createEditor = createProsemirrorEditorFactory();
12
- let wrapper;
13
- let onChangeMock;
14
- const providerFactory = new ProviderFactory();
15
- const panelPreset = new Preset().add([panelPlugin, {
16
- UNSAFE_allowCustomPanel: true
17
- }]);
18
- beforeEach(() => {
19
- const {
20
- editorView
21
- } = createEditor({
22
- doc: doc(panel({
23
- panelType: 'info'
24
- })(p('{<>}'))),
25
- preset: panelPreset,
26
- providerFactory
27
- });
28
- providerFactory.setProvider('emojiProvider', Promise.resolve(getTestEmojiResource()));
29
- onChangeMock = jest.fn();
30
- wrapper = mountWithIntl( /*#__PURE__*/React.createElement(EmojiPickerButton, {
31
- view: editorView,
32
- providerFactory: providerFactory,
33
- onChange: onChangeMock
34
- }));
35
- });
36
- afterEach(() => {
37
- providerFactory.removeProvider('emojiProvider');
38
- wrapper && wrapper.unmount();
39
- });
40
- it('should render a button', () => {
41
- expect(wrapper.find('button')).toHaveLength(1); // ensure no popup is rendered
42
-
43
- expect(wrapper.find('Popup')).toHaveLength(0);
44
- });
45
- it('should show a EmojiPicker popup after clicking button', () => {
46
- // popup still not shown before the click
47
- wrapper.find('button').simulate('click'); // show the popup
48
-
49
- expect(wrapper.find('Popup')).toHaveLength(1);
50
- });
51
- it('should close EmojiPicker popup after clicking outside', () => {
52
- // clicking on the button to open the popup
53
- wrapper.find('button').simulate('click'); // make sure the popup and picker are shown
54
-
55
- expect(wrapper.find('Popup')).toHaveLength(1);
56
- const emojiPicker = wrapper.find('EmojiPickerInternal').instance(); // calling click outside
57
-
58
- act(() => {
59
- emojiPicker.props.handleClickOutside();
60
- });
61
- wrapper.update(); // make sure popup is hidden
62
-
63
- expect(wrapper.find('Popup')).toHaveLength(0);
64
- });
65
- it('should hide popup and call onChange after selecting an emoji', () => {
66
- // click the button
67
- wrapper.find('button').simulate('click'); // make sure the popup and picker are shown
68
-
69
- expect(wrapper.find('Popup')).toHaveLength(1);
70
- const emojiPicker = wrapper.find('EmojiPickerInternal').instance(); // calling mock callback
71
-
72
- act(() => {
73
- emojiPicker.props.onSelection({
74
- shortName: ':smiley:'
75
- });
76
- }); // make sure the on change callback is called
77
-
78
- expect(onChangeMock).toBeCalledWith({
79
- shortName: ':smiley:'
80
- });
81
- wrapper.update(); // make sure popup is hidden
82
-
83
- expect(wrapper.find('Popup')).toHaveLength(0);
84
- });
85
- });
@@ -1,126 +0,0 @@
1
- import { createEditorFactory } from '@atlaskit/editor-test-helpers/create-editor';
2
- import { caption, doc, media, mediaSingle, p } from '@atlaskit/editor-test-helpers/doc-builder';
3
- import * as analyticsUtils from '../../analytics/utils';
4
- import { insertAndSelectCaptionFromMediaSinglePos, selectCaptionFromMediaSinglePos } from './captions';
5
- describe('Caption plugin', () => {
6
- const createEditor = createEditorFactory();
7
-
8
- const editor = (doc, opts = {}) => createEditor({
9
- doc,
10
- ...opts
11
- });
12
-
13
- it('should insert the caption node and select it', () => {
14
- const {
15
- editorView
16
- } = editor(doc('{<node>}', mediaSingle()(media({
17
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
18
- type: 'file',
19
- collection: 'MediaServicesSample'
20
- })()), p('Line two')), {
21
- editorProps: {
22
- media: {
23
- allowMediaSingle: true,
24
- featureFlags: {
25
- captions: true
26
- }
27
- }
28
- }
29
- });
30
- insertAndSelectCaptionFromMediaSinglePos(0, editorView.state.doc.child(0))(editorView.state, editorView.dispatch);
31
- expect(editorView.state).toEqualDocumentAndSelection(doc(mediaSingle()(media({
32
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
33
- type: 'file',
34
- collection: 'MediaServicesSample'
35
- })(), caption('{<>}')), p('Line two')));
36
- });
37
- it('should not insert the caption node when it exists already', () => {
38
- const {
39
- editorView
40
- } = editor(doc('{<node>}', mediaSingle()(media({
41
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
42
- type: 'file',
43
- collection: 'MediaServicesSample'
44
- })(), caption('test')), p('Line two')), {
45
- editorProps: {
46
- media: {
47
- allowMediaSingle: true,
48
- featureFlags: {
49
- captions: true
50
- }
51
- }
52
- }
53
- });
54
- expect(insertAndSelectCaptionFromMediaSinglePos(0, editorView.state.doc.child(0))(editorView.state, editorView.dispatch)).toBeFalsy();
55
- });
56
- it('create an added analytic for captions', () => {
57
- const addAnalyticsSpy = jest.spyOn(analyticsUtils, 'addAnalytics');
58
- const {
59
- editorView
60
- } = editor(doc('{<node>}', mediaSingle()(media({
61
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
62
- type: 'file',
63
- collection: 'MediaServicesSample'
64
- })()), p('Line two')), {
65
- editorProps: {
66
- media: {
67
- allowMediaSingle: true,
68
- featureFlags: {
69
- captions: true
70
- }
71
- }
72
- }
73
- });
74
- insertAndSelectCaptionFromMediaSinglePos(0, editorView.state.doc.child(0))(editorView.state, editorView.dispatch);
75
- expect(addAnalyticsSpy).toBeCalled();
76
- expect(addAnalyticsSpy.mock.calls[0][2]).toEqual({
77
- action: 'added',
78
- actionSubject: 'mediaSingle',
79
- actionSubjectId: 'caption',
80
- eventType: 'track'
81
- });
82
- });
83
- it('should move selection to an existing caption node', () => {
84
- const {
85
- editorView
86
- } = editor(doc('{<node>}', mediaSingle()(media({
87
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
88
- type: 'file',
89
- collection: 'MediaServicesSample'
90
- })(), caption('hello world')), p('Line two')), {
91
- editorProps: {
92
- media: {
93
- allowMediaSingle: true,
94
- featureFlags: {
95
- captions: true
96
- }
97
- }
98
- }
99
- });
100
- selectCaptionFromMediaSinglePos(0, editorView.state.doc.child(0))(editorView.state, editorView.dispatch);
101
- expect(editorView.state).toEqualDocumentAndSelection(doc(mediaSingle()(media({
102
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
103
- type: 'file',
104
- collection: 'MediaServicesSample'
105
- })(), caption('hello world{<>}')), p('Line two')));
106
- });
107
- it('should not move selection to a non existing caption node', () => {
108
- const {
109
- editorView
110
- } = editor(doc('{<node>}', mediaSingle()(media({
111
- id: 'a559980d-cd47-43e2-8377-27359fcb905f',
112
- type: 'file',
113
- collection: 'MediaServicesSample'
114
- })()), p('Line two')), {
115
- editorProps: {
116
- media: {
117
- allowMediaSingle: true,
118
- featureFlags: {
119
- captions: true
120
- }
121
- }
122
- }
123
- });
124
- expect(selectCaptionFromMediaSinglePos(0, editorView.state.doc.child(0))(editorView.state, editorView.dispatch)).toBeFalsy();
125
- });
126
- });