@atlaskit/editor-core 150.0.0 → 151.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/CHANGELOG.md +65 -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 +4 -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-block/toolbar.js +1 -1
  17. package/dist/cjs/plugins/collab-edit/ui/to-avatar.js +4 -8
  18. package/dist/cjs/plugins/emoji/styles.js +1 -1
  19. package/dist/cjs/plugins/extension/pm-plugins/main.js +1 -4
  20. package/dist/cjs/plugins/extension/toolbar.js +28 -23
  21. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +8 -3
  22. package/dist/cjs/plugins/find-replace/ui/Find.js +27 -7
  23. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +3 -3
  24. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  25. package/dist/cjs/plugins/hyperlink/utils.js +6 -69
  26. package/dist/cjs/plugins/media/index.js +14 -3
  27. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +24 -10
  28. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +179 -0
  29. package/dist/cjs/plugins/media/pm-plugins/main.js +18 -9
  30. package/dist/cjs/plugins/media/toolbar/index.js +49 -17
  31. package/dist/cjs/plugins/media/toolbar/utils.js +20 -2
  32. package/dist/cjs/plugins/media/utils/media-files.js +67 -1
  33. package/dist/cjs/plugins/mentions/type-ahead/index.js +39 -3
  34. package/dist/cjs/plugins/panel/index.js +2 -3
  35. package/dist/cjs/plugins/panel/message.js +47 -0
  36. package/dist/cjs/plugins/panel/toolbar.js +64 -84
  37. package/dist/cjs/plugins/panel/utils.js +2 -2
  38. package/dist/cjs/plugins/paste/linkify-md-plugin.js +3 -3
  39. package/dist/cjs/plugins/status/styles.js +1 -1
  40. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  41. package/dist/cjs/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  42. package/dist/cjs/profiler/render-count.js +82 -0
  43. package/dist/cjs/ui/Appearance/Comment/Comment.js +6 -5
  44. package/dist/cjs/utils/react-hooks/use-component-renderer-tracking/index.js +55 -19
  45. package/dist/cjs/version-wrapper.js +1 -1
  46. package/dist/cjs/version.json +1 -1
  47. package/dist/es2019/actions/index.js +6 -28
  48. package/dist/es2019/create-editor/ErrorBoundary.js +73 -60
  49. package/dist/es2019/create-editor/ReactEditorView.js +130 -23
  50. package/dist/es2019/create-editor/create-plugins-list.js +4 -2
  51. package/dist/es2019/editor.js +74 -35
  52. package/dist/es2019/labs/next/presets/cxhtml.js +2 -1
  53. package/dist/es2019/plugins/analytics/types/enums.js +3 -1
  54. package/dist/es2019/plugins/base/index.js +4 -3
  55. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +63 -35
  56. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +2 -1
  57. package/dist/es2019/plugins/card/index.js +7 -2
  58. package/dist/es2019/plugins/card/nodeviews/embedCard.js +1 -0
  59. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -2
  60. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +12 -5
  61. package/dist/es2019/plugins/code-block/toolbar.js +1 -1
  62. package/dist/es2019/plugins/collab-edit/ui/to-avatar.js +2 -6
  63. package/dist/es2019/plugins/emoji/styles.js +2 -0
  64. package/dist/es2019/plugins/extension/pm-plugins/main.js +1 -4
  65. package/dist/es2019/plugins/extension/toolbar.js +30 -25
  66. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +8 -4
  67. package/dist/es2019/plugins/find-replace/ui/Find.js +27 -6
  68. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  69. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  70. package/dist/es2019/plugins/hyperlink/utils.js +3 -59
  71. package/dist/es2019/plugins/media/index.js +13 -4
  72. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +16 -7
  73. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +88 -0
  74. package/dist/es2019/plugins/media/pm-plugins/main.js +20 -11
  75. package/dist/es2019/plugins/media/toolbar/index.js +44 -15
  76. package/dist/es2019/plugins/media/toolbar/utils.js +16 -0
  77. package/dist/es2019/plugins/media/utils/media-files.js +68 -2
  78. package/dist/es2019/plugins/mentions/type-ahead/index.js +21 -2
  79. package/dist/es2019/plugins/panel/index.js +3 -4
  80. package/dist/es2019/plugins/panel/message.js +38 -0
  81. package/dist/es2019/plugins/panel/toolbar.js +52 -71
  82. package/dist/es2019/plugins/panel/utils.js +2 -2
  83. package/dist/es2019/plugins/paste/linkify-md-plugin.js +2 -2
  84. package/dist/es2019/plugins/status/styles.js +2 -0
  85. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  86. package/dist/es2019/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  87. package/dist/es2019/profiler/render-count.js +60 -0
  88. package/dist/es2019/ui/Appearance/Comment/Comment.js +4 -2
  89. package/dist/es2019/utils/react-hooks/use-component-renderer-tracking/index.js +51 -18
  90. package/dist/es2019/version-wrapper.js +1 -1
  91. package/dist/es2019/version.json +1 -1
  92. package/dist/esm/actions/index.js +6 -24
  93. package/dist/esm/create-editor/ErrorBoundary.js +113 -78
  94. package/dist/esm/create-editor/ReactEditorView.js +146 -31
  95. package/dist/esm/create-editor/create-plugins-list.js +4 -2
  96. package/dist/esm/editor.js +100 -40
  97. package/dist/esm/labs/next/presets/cxhtml.js +2 -1
  98. package/dist/esm/plugins/analytics/types/enums.js +3 -1
  99. package/dist/esm/plugins/base/index.js +4 -3
  100. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +64 -36
  101. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  102. package/dist/esm/plugins/card/index.js +13 -2
  103. package/dist/esm/plugins/card/nodeviews/embedCard.js +1 -0
  104. package/dist/esm/plugins/card/pm-plugins/main.js +7 -2
  105. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +12 -5
  106. package/dist/esm/plugins/code-block/toolbar.js +1 -1
  107. package/dist/esm/plugins/collab-edit/ui/to-avatar.js +4 -8
  108. package/dist/esm/plugins/emoji/styles.js +1 -1
  109. package/dist/esm/plugins/extension/pm-plugins/main.js +1 -4
  110. package/dist/esm/plugins/extension/toolbar.js +28 -23
  111. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +8 -4
  112. package/dist/esm/plugins/find-replace/ui/Find.js +27 -7
  113. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  114. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  115. package/dist/esm/plugins/hyperlink/utils.js +3 -59
  116. package/dist/esm/plugins/media/index.js +14 -4
  117. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +24 -10
  118. package/dist/esm/plugins/media/nodeviews/mediaInline.js +147 -0
  119. package/dist/esm/plugins/media/pm-plugins/main.js +19 -11
  120. package/dist/esm/plugins/media/toolbar/index.js +47 -19
  121. package/dist/esm/plugins/media/toolbar/utils.js +15 -1
  122. package/dist/esm/plugins/media/utils/media-files.js +60 -2
  123. package/dist/esm/plugins/mentions/type-ahead/index.js +39 -3
  124. package/dist/esm/plugins/panel/index.js +3 -4
  125. package/dist/esm/plugins/panel/message.js +38 -0
  126. package/dist/esm/plugins/panel/toolbar.js +57 -77
  127. package/dist/esm/plugins/panel/utils.js +2 -2
  128. package/dist/esm/plugins/paste/linkify-md-plugin.js +2 -2
  129. package/dist/esm/plugins/status/styles.js +1 -1
  130. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  131. package/dist/esm/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  132. package/dist/esm/profiler/render-count.js +57 -0
  133. package/dist/esm/ui/Appearance/Comment/Comment.js +6 -5
  134. package/dist/esm/utils/react-hooks/use-component-renderer-tracking/index.js +53 -20
  135. package/dist/esm/version-wrapper.js +1 -1
  136. package/dist/esm/version.json +1 -1
  137. package/dist/types/create-editor/ErrorBoundary.d.ts +6 -6
  138. package/dist/types/create-editor/ReactEditorView.d.ts +15 -3
  139. package/dist/types/editor.d.ts +3 -1
  140. package/dist/types/plugins/analytics/analytics-queue.d.ts +1 -1
  141. package/dist/types/plugins/analytics/index.d.ts +1 -1
  142. package/dist/types/plugins/analytics/types/enums.d.ts +4 -2
  143. package/dist/types/plugins/analytics/types/events.d.ts +7 -2
  144. package/dist/types/plugins/analytics/types/general-events.d.ts +4 -1
  145. package/dist/types/plugins/analytics/types/index.d.ts +1 -1
  146. package/dist/types/plugins/analytics/types/insert-events.d.ts +6 -1
  147. package/dist/types/plugins/analytics/types/link-tool-bar-events.d.ts +1 -0
  148. package/dist/types/plugins/base/index.d.ts +1 -0
  149. package/dist/types/plugins/base/pm-plugins/frozen-editor.d.ts +3 -2
  150. package/dist/types/plugins/card/pm-plugins/main.d.ts +2 -3
  151. package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -1
  152. package/dist/types/plugins/card/types.d.ts +6 -0
  153. package/dist/types/plugins/collab-edit/ui/to-avatar.d.ts +1 -1
  154. package/dist/types/plugins/extension/types.d.ts +0 -2
  155. package/dist/types/plugins/extension/ui/Extension/ExtensionComponent.d.ts +2 -2
  156. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  157. package/dist/types/plugins/floating-toolbar/types.d.ts +1 -1
  158. package/dist/types/plugins/floating-toolbar/ui/Select.d.ts +1 -1
  159. package/dist/types/plugins/hyperlink/utils.d.ts +0 -21
  160. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/create-items.d.ts +1 -1
  161. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +27 -0
  162. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -2
  163. package/dist/types/plugins/media/toolbar/utils.d.ts +2 -0
  164. package/dist/types/plugins/media/utils/media-files.d.ts +8 -0
  165. package/dist/types/plugins/panel/message.d.ts +37 -0
  166. package/dist/types/plugins/panel/toolbar.d.ts +4 -37
  167. package/dist/types/plugins/panel/types.d.ts +1 -0
  168. package/dist/types/plugins/quick-insert/index.d.ts +1 -1
  169. package/dist/types/profiler/render-count.d.ts +14 -0
  170. package/dist/types/types/feature-flags.d.ts +8 -0
  171. package/dist/types/ui/LinkSearch/types.d.ts +1 -0
  172. package/dist/types/utils/react-hooks/use-component-renderer-tracking/index.d.ts +17 -1
  173. package/package.json +20 -17
  174. package/dist/cjs/plugins/caption/nodeviews/index.test.js +0 -135
  175. package/dist/cjs/plugins/caption/pm-plugins/keymap.test.js +0 -203
  176. package/dist/cjs/plugins/caption/pm-plugins/main.test.js +0 -141
  177. package/dist/cjs/plugins/code-block/language-list.test.js +0 -74
  178. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -101
  179. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -98
  180. package/dist/cjs/plugins/media/commands/captions.test.js +0 -149
  181. package/dist/cjs/plugins/media/commands/linking.test.js +0 -296
  182. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -50
  183. package/dist/cjs/plugins/panel/toolbar.test.js +0 -250
  184. package/dist/cjs/ui/ColorPickerButton/index.test.js +0 -123
  185. package/dist/cjs/ui/PortalProvider/index.test.js +0 -139
  186. package/dist/es2019/plugins/caption/nodeviews/index.test.js +0 -122
  187. package/dist/es2019/plugins/caption/pm-plugins/keymap.test.js +0 -193
  188. package/dist/es2019/plugins/caption/pm-plugins/main.test.js +0 -132
  189. package/dist/es2019/plugins/code-block/language-list.test.js +0 -69
  190. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -83
  191. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  192. package/dist/es2019/plugins/media/commands/captions.test.js +0 -126
  193. package/dist/es2019/plugins/media/commands/linking.test.js +0 -208
  194. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  195. package/dist/es2019/plugins/panel/toolbar.test.js +0 -200
  196. package/dist/es2019/ui/ColorPickerButton/index.test.js +0 -88
  197. package/dist/es2019/ui/PortalProvider/index.test.js +0 -115
  198. package/dist/esm/plugins/caption/nodeviews/index.test.js +0 -125
  199. package/dist/esm/plugins/caption/pm-plugins/keymap.test.js +0 -195
  200. package/dist/esm/plugins/caption/pm-plugins/main.test.js +0 -124
  201. package/dist/esm/plugins/code-block/language-list.test.js +0 -71
  202. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -92
  203. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  204. package/dist/esm/plugins/media/commands/captions.test.js +0 -135
  205. package/dist/esm/plugins/media/commands/linking.test.js +0 -268
  206. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  207. package/dist/esm/plugins/panel/toolbar.test.js +0 -230
  208. package/dist/esm/ui/ColorPickerButton/index.test.js +0 -107
  209. package/dist/esm/ui/PortalProvider/index.test.js +0 -129
@@ -27,6 +27,7 @@ import memoizeOne from 'memoize-one';
27
27
  import uuid from 'uuid/v4';
28
28
  import { name, version } from './version-wrapper';
29
29
  import { ProviderFactory, BaseTheme, getAnalyticsAppearance, WithCreateAnalyticsEvent, startMeasure, stopMeasure, clearMeasure, measureTTI, getTTISeverity, combineExtensionProviders, WidthProvider } from '@atlaskit/editor-common';
30
+ import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
30
31
  import { akEditorFullPageDefaultFontSize } from '@atlaskit/editor-shared-styles';
31
32
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
32
33
  import { getUiComponent } from './create-editor';
@@ -50,6 +51,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
50
51
  var _super = _createSuper(Editor);
51
52
 
52
53
  function Editor(props, context) {
54
+ var _props$performanceTra, _props$performanceTra2, _props$featureFlags;
55
+
53
56
  var _this;
54
57
 
55
58
  _classCallCheck(this, Editor);
@@ -97,11 +100,16 @@ var Editor = /*#__PURE__*/function (_React$Component) {
97
100
  _this.trackEditorActions(_this.editorActions, props);
98
101
 
99
102
  _this.editorSessionId = uuid();
103
+ _this.startTime = performance.now();
100
104
  startMeasure(measurements.EDITOR_MOUNTED);
101
105
 
102
- if (props.performanceTracking && props.performanceTracking.ttiTracking && props.performanceTracking.ttiTracking.enabled) {
106
+ if ((_props$performanceTra = props.performanceTracking) !== null && _props$performanceTra !== void 0 && (_props$performanceTra2 = _props$performanceTra.ttiTracking) !== null && _props$performanceTra2 !== void 0 && _props$performanceTra2.enabled || (_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 && _props$featureFlags.ufo) {
107
+ var _props$performanceTra5, _props$performanceTra6, _props$performanceTra7, _props$performanceTra8;
108
+
103
109
  measureTTI(function (tti, ttiFromInvocation, canceled) {
104
- if (_this.createAnalyticsEvent) {
110
+ var _props$performanceTra3, _props$performanceTra4, _props$featureFlags2;
111
+
112
+ if ((_props$performanceTra3 = props.performanceTracking) !== null && _props$performanceTra3 !== void 0 && (_props$performanceTra4 = _props$performanceTra3.ttiTracking) !== null && _props$performanceTra4 !== void 0 && _props$performanceTra4.enabled && _this.createAnalyticsEvent) {
105
113
  var _ttiTracking;
106
114
 
107
115
  var ttiEvent = {
@@ -134,7 +142,14 @@ var Editor = /*#__PURE__*/function (_React$Component) {
134
142
 
135
143
  fireAnalyticsEvent(_this.createAnalyticsEvent)(ttiEvent);
136
144
  }
137
- }, props.performanceTracking.ttiTracking.ttiIdleThreshold, props.performanceTracking.ttiTracking.ttiCancelTimeout);
145
+
146
+ if ((_props$featureFlags2 = props.featureFlags) !== null && _props$featureFlags2 !== void 0 && _props$featureFlags2.ufo) {
147
+ var _this$experienceStore, _this$experienceStore2;
148
+
149
+ (_this$experienceStore = _this.experienceStore) === null || _this$experienceStore === void 0 ? void 0 : _this$experienceStore.mark(EditorExperience.loadEditor, ACTION.EDITOR_TTI, tti);
150
+ (_this$experienceStore2 = _this.experienceStore) === null || _this$experienceStore2 === void 0 ? void 0 : _this$experienceStore2.success(EditorExperience.loadEditor);
151
+ }
152
+ }, (_props$performanceTra5 = props.performanceTracking) === null || _props$performanceTra5 === void 0 ? void 0 : (_props$performanceTra6 = _props$performanceTra5.ttiTracking) === null || _props$performanceTra6 === void 0 ? void 0 : _props$performanceTra6.ttiIdleThreshold, (_props$performanceTra7 = props.performanceTracking) === null || _props$performanceTra7 === void 0 ? void 0 : (_props$performanceTra8 = _props$performanceTra7.ttiTracking) === null || _props$performanceTra8 === void 0 ? void 0 : _props$performanceTra8.ttiCancelTimeout);
138
153
  }
139
154
 
140
155
  var _extensionProvider = _this.prepareExtensionProvider(props.extensionProviders);
@@ -180,21 +195,29 @@ var Editor = /*#__PURE__*/function (_React$Component) {
180
195
  }, {
181
196
  key: "componentWillUnmount",
182
197
  value: function componentWillUnmount() {
183
- var _this$props2, _this$props2$performa, _this$props2$performa2;
198
+ var _this$props2, _this$props2$performa, _this$props2$performa2, _this$props$featureFl;
184
199
 
185
200
  this.unregisterEditorFromActions();
186
201
  this.providerFactory.destroy();
187
202
  clearMeasure(measurements.EDITOR_MOUNTED);
188
203
  ((_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$performa = _this$props2.performanceTracking) === null || _this$props2$performa === void 0 ? void 0 : (_this$props2$performa2 = _this$props2$performa.onEditorReadyCallbackTracking) === null || _this$props2$performa2 === void 0 ? void 0 : _this$props2$performa2.enabled) && clearMeasure(measurements.ON_EDITOR_READY_CALLBACK);
204
+
205
+ if ((_this$props$featureFl = this.props.featureFlags) !== null && _this$props$featureFl !== void 0 && _this$props$featureFl.ufo) {
206
+ var _this$experienceStore3;
207
+
208
+ (_this$experienceStore3 = this.experienceStore) === null || _this$experienceStore3 === void 0 ? void 0 : _this$experienceStore3.abortAll({
209
+ reason: 'editor component unmounted'
210
+ });
211
+ }
189
212
  }
190
213
  }, {
191
214
  key: "trackEditorActions",
192
215
  value: function trackEditorActions(editorActions, props) {
193
- var _props$performanceTra,
194
- _props$performanceTra2,
216
+ var _props$performanceTra9,
217
+ _props$performanceTra10,
195
218
  _this3 = this;
196
219
 
197
- if (props !== null && props !== void 0 && (_props$performanceTra = props.performanceTracking) !== null && _props$performanceTra !== void 0 && (_props$performanceTra2 = _props$performanceTra.contentRetrievalTracking) !== null && _props$performanceTra2 !== void 0 && _props$performanceTra2.enabled) {
220
+ if (props !== null && props !== void 0 && (_props$performanceTra9 = props.performanceTracking) !== null && _props$performanceTra9 !== void 0 && (_props$performanceTra10 = _props$performanceTra9.contentRetrievalTracking) !== null && _props$performanceTra10 !== void 0 && _props$performanceTra10.enabled) {
198
221
  var DEFAULT_SAMPLING_RATE = 100;
199
222
  var getValue = editorActions.getValue.bind(editorActions);
200
223
 
@@ -215,7 +238,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
215
238
  if (!getValueTracked) {
216
239
  var getValueWithTracking = /*#__PURE__*/function () {
217
240
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
218
- var _props$performanceTra3, _props$performanceTra4, _props$performanceTra5, value, _props$performanceTra6, _props$performanceTra7, _props$performanceTra8, _props$performanceTra9, _props$performanceTra10;
241
+ var _props$performanceTra11, _props$performanceTra12, _props$performanceTra13, value, _props$performanceTra14, _props$performanceTra15, _props$performanceTra16, _props$performanceTra17, _props$performanceTra18;
219
242
 
220
243
  return _regeneratorRuntime.wrap(function _callee$(_context) {
221
244
  while (1) {
@@ -228,7 +251,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
228
251
  case 3:
229
252
  value = _context.sent;
230
253
 
231
- if (samplingCounters.success === ((_props$performanceTra3 = props === null || props === void 0 ? void 0 : (_props$performanceTra4 = props.performanceTracking) === null || _props$performanceTra4 === void 0 ? void 0 : (_props$performanceTra5 = _props$performanceTra4.contentRetrievalTracking) === null || _props$performanceTra5 === void 0 ? void 0 : _props$performanceTra5.successSamplingRate) !== null && _props$performanceTra3 !== void 0 ? _props$performanceTra3 : DEFAULT_SAMPLING_RATE)) {
254
+ if (samplingCounters.success === ((_props$performanceTra11 = props === null || props === void 0 ? void 0 : (_props$performanceTra12 = props.performanceTracking) === null || _props$performanceTra12 === void 0 ? void 0 : (_props$performanceTra13 = _props$performanceTra12.contentRetrievalTracking) === null || _props$performanceTra13 === void 0 ? void 0 : _props$performanceTra13.successSamplingRate) !== null && _props$performanceTra11 !== void 0 ? _props$performanceTra11 : DEFAULT_SAMPLING_RATE)) {
232
255
  _this3.handleAnalyticsEvent({
233
256
  payload: {
234
257
  action: ACTION.EDITOR_CONTENT_RETRIEVAL_PERFORMED,
@@ -250,7 +273,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
250
273
  _context.prev = 9;
251
274
  _context.t0 = _context["catch"](0);
252
275
 
253
- if (samplingCounters.failure === ((_props$performanceTra6 = props === null || props === void 0 ? void 0 : (_props$performanceTra7 = props.performanceTracking) === null || _props$performanceTra7 === void 0 ? void 0 : (_props$performanceTra8 = _props$performanceTra7.contentRetrievalTracking) === null || _props$performanceTra8 === void 0 ? void 0 : _props$performanceTra8.failureSamplingRate) !== null && _props$performanceTra6 !== void 0 ? _props$performanceTra6 : DEFAULT_SAMPLING_RATE)) {
276
+ if (samplingCounters.failure === ((_props$performanceTra14 = props === null || props === void 0 ? void 0 : (_props$performanceTra15 = props.performanceTracking) === null || _props$performanceTra15 === void 0 ? void 0 : (_props$performanceTra16 = _props$performanceTra15.contentRetrievalTracking) === null || _props$performanceTra16 === void 0 ? void 0 : _props$performanceTra16.failureSamplingRate) !== null && _props$performanceTra14 !== void 0 ? _props$performanceTra14 : DEFAULT_SAMPLING_RATE)) {
254
277
  _this3.handleAnalyticsEvent({
255
278
  payload: {
256
279
  action: ACTION.EDITOR_CONTENT_RETRIEVAL_PERFORMED,
@@ -258,7 +281,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
258
281
  attributes: {
259
282
  success: false,
260
283
  errorInfo: _context.t0.toString(),
261
- errorStack: props !== null && props !== void 0 && (_props$performanceTra9 = props.performanceTracking) !== null && _props$performanceTra9 !== void 0 && (_props$performanceTra10 = _props$performanceTra9.contentRetrievalTracking) !== null && _props$performanceTra10 !== void 0 && _props$performanceTra10.reportErrorStack ? _context.t0.stack : undefined
284
+ errorStack: props !== null && props !== void 0 && (_props$performanceTra17 = props.performanceTracking) !== null && _props$performanceTra17 !== void 0 && (_props$performanceTra18 = _props$performanceTra17.contentRetrievalTracking) !== null && _props$performanceTra18 !== void 0 && _props$performanceTra18.reportErrorStack ? _context.t0.stack : undefined
262
285
  },
263
286
  eventType: EVENT_TYPE.OPERATIONAL
264
287
  }
@@ -293,14 +316,22 @@ var Editor = /*#__PURE__*/function (_React$Component) {
293
316
  }, {
294
317
  key: "onEditorCreated",
295
318
  value: function onEditorCreated(instance) {
319
+ var _this$props$featureFl2;
320
+
296
321
  this.registerEditorForActions(instance.view, instance.eventDispatcher, instance.transformer);
297
322
 
323
+ if ((_this$props$featureFl2 = this.props.featureFlags) !== null && _this$props$featureFl2 !== void 0 && _this$props$featureFl2.ufo) {
324
+ this.experienceStore = ExperienceStore.getInstance(instance.view);
325
+ this.experienceStore.start(EditorExperience.loadEditor, this.startTime);
326
+ }
327
+
298
328
  if (this.props.onEditorReady) {
299
- var _this$props3, _this$props3$performa, _this$props3$performa2, _this$props4, _this$props4$performa, _this$props4$performa2;
329
+ var _this$props3, _this$props3$performa, _this$props3$performa2, _this$props$featureFl3;
300
330
 
301
- ((_this$props3 = this.props) === null || _this$props3 === void 0 ? void 0 : (_this$props3$performa = _this$props3.performanceTracking) === null || _this$props3$performa === void 0 ? void 0 : (_this$props3$performa2 = _this$props3$performa.onEditorReadyCallbackTracking) === null || _this$props3$performa2 === void 0 ? void 0 : _this$props3$performa2.enabled) && startMeasure(measurements.ON_EDITOR_READY_CALLBACK);
331
+ var measureEditorReady = ((_this$props3 = this.props) === null || _this$props3 === void 0 ? void 0 : (_this$props3$performa = _this$props3.performanceTracking) === null || _this$props3$performa === void 0 ? void 0 : (_this$props3$performa2 = _this$props3$performa.onEditorReadyCallbackTracking) === null || _this$props3$performa2 === void 0 ? void 0 : _this$props3$performa2.enabled) || ((_this$props$featureFl3 = this.props.featureFlags) === null || _this$props$featureFl3 === void 0 ? void 0 : _this$props$featureFl3.ufo);
332
+ measureEditorReady && startMeasure(measurements.ON_EDITOR_READY_CALLBACK);
302
333
  this.props.onEditorReady(this.editorActions);
303
- ((_this$props4 = this.props) === null || _this$props4 === void 0 ? void 0 : (_this$props4$performa = _this$props4.performanceTracking) === null || _this$props4$performa === void 0 ? void 0 : (_this$props4$performa2 = _this$props4$performa.onEditorReadyCallbackTracking) === null || _this$props4$performa2 === void 0 ? void 0 : _this$props4$performa2.enabled) && stopMeasure(measurements.ON_EDITOR_READY_CALLBACK, this.sendDurationAnalytics(ACTION.ON_EDITOR_READY_CALLBACK));
334
+ measureEditorReady && stopMeasure(measurements.ON_EDITOR_READY_CALLBACK, this.sendDurationAnalytics(ACTION.ON_EDITOR_READY_CALLBACK));
304
335
  }
305
336
  }
306
337
  }, {
@@ -308,28 +339,57 @@ var Editor = /*#__PURE__*/function (_React$Component) {
308
339
  value: function sendDurationAnalytics(action) {
309
340
  var _this4 = this;
310
341
 
311
- return function (duration, startTime) {
312
- if (_this4.createAnalyticsEvent) {
313
- var fireMounted = function fireMounted(objectId) {
314
- fireAnalyticsEvent(_this4.createAnalyticsEvent)({
315
- payload: {
316
- action: action,
317
- actionSubject: ACTION_SUBJECT.EDITOR,
318
- attributes: {
319
- duration: duration,
320
- startTime: startTime,
321
- objectId: objectId
322
- },
323
- eventType: EVENT_TYPE.OPERATIONAL
342
+ return /*#__PURE__*/function () {
343
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(duration, startTime) {
344
+ var _this4$props$featureF;
345
+
346
+ var contextIdentifier, objectId, _this4$experienceStor, _this4$experienceStor2;
347
+
348
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
349
+ while (1) {
350
+ switch (_context2.prev = _context2.next) {
351
+ case 0:
352
+ _context2.next = 2;
353
+ return _this4.props.contextIdentifierProvider;
354
+
355
+ case 2:
356
+ contextIdentifier = _context2.sent;
357
+ objectId = contextIdentifier === null || contextIdentifier === void 0 ? void 0 : contextIdentifier.objectId;
358
+
359
+ if (_this4.createAnalyticsEvent) {
360
+ fireAnalyticsEvent(_this4.createAnalyticsEvent)({
361
+ payload: {
362
+ action: action,
363
+ actionSubject: ACTION_SUBJECT.EDITOR,
364
+ attributes: {
365
+ duration: duration,
366
+ startTime: startTime,
367
+ objectId: objectId
368
+ },
369
+ eventType: EVENT_TYPE.OPERATIONAL
370
+ }
371
+ });
372
+ }
373
+
374
+ if ((_this4$props$featureF = _this4.props.featureFlags) !== null && _this4$props$featureF !== void 0 && _this4$props$featureF.ufo) {
375
+ (_this4$experienceStor = _this4.experienceStore) === null || _this4$experienceStor === void 0 ? void 0 : _this4$experienceStor.mark(EditorExperience.loadEditor, action, startTime + duration);
376
+ (_this4$experienceStor2 = _this4.experienceStore) === null || _this4$experienceStor2 === void 0 ? void 0 : _this4$experienceStor2.addMetadata(EditorExperience.loadEditor, {
377
+ objectId: objectId
378
+ });
379
+ }
380
+
381
+ case 6:
382
+ case "end":
383
+ return _context2.stop();
324
384
  }
325
- });
326
- };
385
+ }
386
+ }, _callee2);
387
+ }));
327
388
 
328
- Promise.resolve(_this4.props.contextIdentifierProvider).then(function (p) {
329
- fireMounted(p === null || p === void 0 ? void 0 : p.objectId);
330
- }, fireMounted);
331
- }
332
- };
389
+ return function (_x, _x2) {
390
+ return _ref2.apply(this, arguments);
391
+ };
392
+ }();
333
393
  }
334
394
  }, {
335
395
  key: "deprecationWarnings",
@@ -487,14 +547,14 @@ var Editor = /*#__PURE__*/function (_React$Component) {
487
547
  onEditorDestroyed: _this5.onEditorDestroyed,
488
548
  allowAnalyticsGASV3: _this5.props.allowAnalyticsGASV3,
489
549
  disabled: _this5.props.disabled,
490
- render: function render(_ref2) {
550
+ render: function render(_ref3) {
491
551
  var _this5$props$featureF, _this5$props$featureF2;
492
552
 
493
- var editor = _ref2.editor,
494
- view = _ref2.view,
495
- eventDispatcher = _ref2.eventDispatcher,
496
- config = _ref2.config,
497
- dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent;
553
+ var editor = _ref3.editor,
554
+ view = _ref3.view,
555
+ eventDispatcher = _ref3.eventDispatcher,
556
+ config = _ref3.config,
557
+ dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
498
558
  return /*#__PURE__*/React.createElement(BaseTheme, {
499
559
  dynamicTextSizing: _this5.props.allowDynamicTextSizing && _this5.props.appearance !== 'full-width',
500
560
  baseFontSize: _this5.getBaseFontSize()
@@ -32,7 +32,8 @@ export function useCXHTMLPreset(_ref) {
32
32
  }
33
33
  }]);
34
34
  preset.add([panelPlugin, {
35
- UNSAFE_allowCustomPanel: true
35
+ UNSAFE_allowCustomPanel: true,
36
+ UNSAFE_allowCustomPanelEdit: true
36
37
  }]);
37
38
  preset.add(listPlugin);
38
39
  preset.add(textColorPlugin);
@@ -94,6 +94,7 @@ export var ACTION;
94
94
  ACTION["ON_EDITOR_READY_CALLBACK"] = "onEditorReadyCallback";
95
95
  ACTION["ON_CHANGE_CALLBACK"] = "onChangeCalled";
96
96
  ACTION["REMOVE_ICON"] = "removedIcon";
97
+ ACTION["UFO_SESSION_COMPLETE"] = "ufoSessionComplete";
97
98
  })(ACTION || (ACTION = {}));
98
99
 
99
100
  export var INPUT_METHOD;
@@ -234,8 +235,9 @@ export var ACTION_SUBJECT_ID;
234
235
  ACTION_SUBJECT_ID["LINK"] = "link";
235
236
  ACTION_SUBJECT_ID["LINK_PREVIEW"] = "linkPreview";
236
237
  ACTION_SUBJECT_ID["MEDIA"] = "media";
237
- ACTION_SUBJECT_ID["MEDIA_SINGLE"] = "mediaSingle";
238
238
  ACTION_SUBJECT_ID["MEDIA_GROUP"] = "mediaGroup";
239
+ ACTION_SUBJECT_ID["MEDIA_INLINE"] = "mediaInline";
240
+ ACTION_SUBJECT_ID["MEDIA_SINGLE"] = "mediaSingle";
239
241
  ACTION_SUBJECT_ID["MEDIA_LINK"] = "mediaLink";
240
242
  ACTION_SUBJECT_ID["MENTION"] = "mention";
241
243
  ACTION_SUBJECT_ID["NESTED_EXPAND"] = "nestedExpand";
@@ -55,9 +55,10 @@ var basePlugin = function basePlugin(options) {
55
55
  }, {
56
56
  name: 'frozenEditor',
57
57
  plugin: function plugin(_ref3) {
58
- var dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent,
59
- providerFactory = _ref3.providerFactory;
60
- return options && options.inputTracking && options.inputTracking.enabled ? frozenEditor(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking) : undefined;
58
+ var _options$inputTrackin;
59
+
60
+ var dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
61
+ return options !== null && options !== void 0 && (_options$inputTrackin = options.inputTracking) !== null && _options$inputTrackin !== void 0 && _options$inputTrackin.enabled || options !== null && options !== void 0 && options.ufo ? frozenEditor(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
61
62
  }
62
63
  }, {
63
64
  name: 'decorationPlugin',
@@ -4,14 +4,16 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
6
 
7
- import { Plugin } from 'prosemirror-state';
7
+ import { Plugin, PluginKey } from 'prosemirror-state';
8
8
  import { isPerformanceObserverAvailable, isPerformanceAPIAvailable, getAnalyticsEventSeverity } from '@atlaskit/editor-common';
9
+ import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
9
10
  import { ACTION, ACTION_SUBJECT, BROWSER_FREEZE_INTERACTION_TYPE, EVENT_TYPE } from '../../analytics';
10
11
  import { getParticipantsCount } from '../../collab-edit/get-participants-count';
11
12
  import { countNodes } from '../../../utils/count-nodes';
12
13
  import { getContextIdentifier } from './context-identifier';
13
14
  import { setInteractionType } from '../utils/frozen-editor';
14
15
  import { getTimeSince } from '../../../utils/performance/get-performance-timing';
16
+ export var frozenEditorPluginKey = new PluginKey('frozenEditor');
15
17
  var DEFAULT_KEYSTROKE_SAMPLING_LIMIT = 100;
16
18
  var DEFAULT_SLOW_THRESHOLD = 300;
17
19
  export var DEFAULT_FREEZE_THRESHOLD = 600;
@@ -42,7 +44,7 @@ var dispatchLongTaskEvent = function dispatchLongTaskEvent(dispatchAnalyticsEven
42
44
  });
43
45
  };
44
46
 
45
- export default (function (dispatchAnalyticsEvent, inputTracking, browserFreezeTracking) {
47
+ export default (function (dispatchAnalyticsEvent, inputTracking, browserFreezeTracking, ufo) {
46
48
  var keystrokeCount = 0;
47
49
  var interactionType;
48
50
 
@@ -58,6 +60,7 @@ export default (function (dispatchAnalyticsEvent, inputTracking, browserFreezeTr
58
60
  var severityThresholdNormal = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityNormalThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL;
59
61
  var severityThresholdDegraded = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityDegradedThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED;
60
62
  return new Plugin({
63
+ key: frozenEditorPluginKey,
61
64
  props: isPerformanceAPIAvailable() ? {
62
65
  handleTextInput: function handleTextInput(view) {
63
66
  var state = view.state;
@@ -67,51 +70,76 @@ export default (function (dispatchAnalyticsEvent, inputTracking, browserFreezeTr
67
70
  interactionType = BROWSER_FREEZE_INTERACTION_TYPE.TYPING;
68
71
  }
69
72
 
73
+ var experienceStore = ufo ? ExperienceStore.getInstance(view) : undefined;
74
+ var trackTyping = samplingRate && ++keystrokeCount === samplingRate;
75
+
76
+ if (trackTyping) {
77
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.start(EditorExperience.typing);
78
+ }
79
+
70
80
  requestAnimationFrame(function () {
71
81
  var diff = getTimeSince(now);
72
82
 
73
- if (samplingRate && ++keystrokeCount === samplingRate) {
74
- var _getContextIdentifier2;
75
-
83
+ if (diff > slowThreshold) {
76
84
  var nodesCount = allowCountNodes ? countNodes(view.state) : {};
77
- keystrokeCount = 0;
78
- var payload = {
79
- action: ACTION.INPUT_PERF_SAMPLING,
80
- actionSubject: ACTION_SUBJECT.EDITOR,
81
- attributes: _objectSpread(_objectSpread({
82
- time: diff,
83
- nodeSize: state.doc.nodeSize
84
- }, nodesCount), {}, {
85
- participants: getParticipantsCount(state),
86
- objectId: (_getContextIdentifier2 = getContextIdentifier(state)) === null || _getContextIdentifier2 === void 0 ? void 0 : _getContextIdentifier2.objectId
87
- }),
88
- eventType: EVENT_TYPE.OPERATIONAL
89
- };
90
-
91
- if (shouldTrackSeverity) {
92
- payload.attributes.severity = getAnalyticsEventSeverity(diff, severityThresholdNormal, severityThresholdDegraded);
85
+
86
+ if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
87
+ var _getContextIdentifier2;
88
+
89
+ dispatchAnalyticsEvent({
90
+ action: ACTION.SLOW_INPUT,
91
+ actionSubject: ACTION_SUBJECT.EDITOR,
92
+ attributes: _objectSpread(_objectSpread({
93
+ time: diff,
94
+ nodeSize: state.doc.nodeSize
95
+ }, nodesCount), {}, {
96
+ participants: getParticipantsCount(state),
97
+ objectId: (_getContextIdentifier2 = getContextIdentifier(state)) === null || _getContextIdentifier2 === void 0 ? void 0 : _getContextIdentifier2.objectId
98
+ }),
99
+ eventType: EVENT_TYPE.OPERATIONAL
100
+ });
93
101
  }
94
102
 
95
- dispatchAnalyticsEvent(payload);
103
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.addMetadata(EditorExperience.typing, {
104
+ slowInput: true
105
+ });
96
106
  }
97
107
 
98
- if (diff > slowThreshold) {
99
- var _getContextIdentifier3;
108
+ if (trackTyping) {
109
+ var _getContextIdentifier4;
100
110
 
101
111
  var _nodesCount = allowCountNodes ? countNodes(view.state) : {};
102
112
 
103
- dispatchAnalyticsEvent({
104
- action: ACTION.SLOW_INPUT,
105
- actionSubject: ACTION_SUBJECT.EDITOR,
106
- attributes: _objectSpread(_objectSpread({
107
- time: diff,
108
- nodeSize: state.doc.nodeSize
109
- }, _nodesCount), {}, {
110
- participants: getParticipantsCount(state),
111
- objectId: (_getContextIdentifier3 = getContextIdentifier(state)) === null || _getContextIdentifier3 === void 0 ? void 0 : _getContextIdentifier3.objectId
112
- }),
113
- eventType: EVENT_TYPE.OPERATIONAL
114
- });
113
+ keystrokeCount = 0;
114
+ var severity = shouldTrackSeverity ? getAnalyticsEventSeverity(diff, severityThresholdNormal, severityThresholdDegraded) : undefined;
115
+
116
+ if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
117
+ var _getContextIdentifier3;
118
+
119
+ var payload = {
120
+ action: ACTION.INPUT_PERF_SAMPLING,
121
+ actionSubject: ACTION_SUBJECT.EDITOR,
122
+ attributes: _objectSpread(_objectSpread({
123
+ time: diff,
124
+ nodeSize: state.doc.nodeSize
125
+ }, _nodesCount), {}, {
126
+ participants: getParticipantsCount(state),
127
+ objectId: (_getContextIdentifier3 = getContextIdentifier(state)) === null || _getContextIdentifier3 === void 0 ? void 0 : _getContextIdentifier3.objectId,
128
+ severity: severity
129
+ }),
130
+ eventType: EVENT_TYPE.OPERATIONAL
131
+ };
132
+ dispatchAnalyticsEvent(payload);
133
+ }
134
+
135
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.success(EditorExperience.typing, _objectSpread(_objectSpread({
136
+ nodeSize: state.doc.nodeSize
137
+ }, _nodesCount), {}, {
138
+ participants: getParticipantsCount(state),
139
+ objectId: (_getContextIdentifier4 = getContextIdentifier(state)) === null || _getContextIdentifier4 === void 0 ? void 0 : _getContextIdentifier4.objectId,
140
+ time: diff,
141
+ severity: severity
142
+ }));
115
143
  }
116
144
  });
117
145
  return false;
@@ -7,7 +7,9 @@ import styled from 'styled-components';
7
7
  import { headingsSharedStyles } from '@atlaskit/editor-common';
8
8
  import { Shortcut } from '../../../../ui/styles';
9
9
  export var BlockTypeMenuItem = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n > {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n }\n }\n ", ";\n"])), headingsSharedStyles, function (props) {
10
- return props.selected ? "".concat(props.tagName, " { color: white }") : '';
10
+ return (// TEMP FIX: See https://product-fabric.atlassian.net/browse/ED-13878
11
+ props.selected ? "".concat(props.tagName, " { color: white !important; }") : ''
12
+ );
11
13
  });
12
14
  export var KeyboardShortcut = styled(Shortcut)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", "\n margin-left: 16px;\n"])), function (props) {
13
15
  return props.selected ? "color: ".concat(N400, ";") : '';
@@ -1,3 +1,9 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+
1
7
  import React from 'react';
2
8
  import { inlineCard, blockCard, embedCard } from '@atlaskit/adf-schema';
3
9
  import { createPlugin } from './pm-plugins/main';
@@ -26,13 +32,18 @@ var cardPlugin = function cardPlugin(options) {
26
32
  return nodes;
27
33
  },
28
34
  pmPlugins: function pmPlugins() {
29
- var _options$allowResizin, _options$useAlternati;
35
+ var _options$allowBlockCa, _options$allowResizin, _options$useAlternati;
30
36
 
37
+ var allowBlockCards = (_options$allowBlockCa = options.allowBlockCards) !== null && _options$allowBlockCa !== void 0 ? _options$allowBlockCa : true;
31
38
  var allowResizing = (_options$allowResizin = options.allowResizing) !== null && _options$allowResizin !== void 0 ? _options$allowResizin : true;
32
39
  var useAlternativePreloader = (_options$useAlternati = options.useAlternativePreloader) !== null && _options$useAlternati !== void 0 ? _options$useAlternati : true;
33
40
  return [{
34
41
  name: 'card',
35
- plugin: createPlugin(options.platform, allowResizing, useAlternativePreloader, options.fullWidthMode, options.createAnalyticsEvent)
42
+ plugin: createPlugin(_objectSpread(_objectSpread({}, options), {}, {
43
+ allowBlockCards: allowBlockCards,
44
+ allowResizing: allowResizing,
45
+ useAlternativePreloader: useAlternativePreloader
46
+ }))
36
47
  }];
37
48
  },
38
49
  contentComponent: function contentComponent(_ref) {
@@ -258,6 +258,7 @@ export var EmbedCardComponent = /*#__PURE__*/function (_React$PureComponent) {
258
258
 
259
259
  var containerWidth = isRichMediaInsideOfBlockNode(view, pos) ? lineLength : widthStateWidth;
260
260
  var smartCard = /*#__PURE__*/React.createElement(SmartCard, {
261
+ key: url,
261
262
  url: url,
262
263
  appearance: "embed",
263
264
  onClick: _this2.onClick,
@@ -8,12 +8,17 @@ import { EmbedCard } from '../nodeviews/embedCard';
8
8
  import { BlockCard } from '../nodeviews/blockCard';
9
9
  import { InlineCard } from '../nodeviews/inlineCard';
10
10
  export { pluginKey } from './plugin-key';
11
- export var createPlugin = function createPlugin(platform, allowResizing, useAlternativePreloader, fullWidthMode, createAnalyticsEvent) {
11
+ export var createPlugin = function createPlugin(options) {
12
12
  return function (_ref) {
13
13
  var portalProviderAPI = _ref.portalProviderAPI,
14
14
  eventDispatcher = _ref.eventDispatcher,
15
15
  providerFactory = _ref.providerFactory,
16
16
  dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent;
17
+ var platform = options.platform,
18
+ allowResizing = options.allowResizing,
19
+ useAlternativePreloader = options.useAlternativePreloader,
20
+ fullWidthMode = options.fullWidthMode,
21
+ createAnalyticsEvent = options.createAnalyticsEvent;
17
22
  return new Plugin({
18
23
  state: {
19
24
  init: function init() {
@@ -71,7 +76,7 @@ export var createPlugin = function createPlugin(platform, allowResizing, useAlte
71
76
  * other tasks as per common implementations of the JavaScript event loop in browsers.
72
77
  */
73
78
  var invoke = rafSchedule(function () {
74
- return resolveWithProvider(view, outstandingRequests, provider, request);
79
+ return resolveWithProvider(view, outstandingRequests, provider, request, options);
75
80
  });
76
81
  rafCancellationCallbacks.push(invoke.cancel);
77
82
  invoke();
@@ -1,21 +1,28 @@
1
1
  import { setProvider } from '../actions';
2
- import { replaceQueuedUrlWithCard, handleFallbackWithAnalytics } from '../doc'; // ============================================================================ //
2
+ import { replaceQueuedUrlWithCard, handleFallbackWithAnalytics } from '../doc';
3
+ // ============================================================================ //
3
4
  // ============================== PROVIDER UTILS ============================== //
4
5
  // ============================================================================ //
5
6
  // Used for all interactions with the EditorCardProvider.
6
7
  // ============================================================================ //
7
-
8
- export var resolveWithProvider = function resolveWithProvider(view, outstandingRequests, provider, request) {
8
+ export var resolveWithProvider = function resolveWithProvider(view, outstandingRequests, provider, request, options) {
9
9
  var handleResolve = provider.resolve(request.url, request.appearance).then(function (resolvedCard) {
10
10
  delete outstandingRequests[request.url];
11
11
  return resolvedCard;
12
- }).then(handleResolved(view, request), handleRejected(view, request));
12
+ }).then(handleResolved(view, request, options), handleRejected(view, request));
13
13
  outstandingRequests[request.url] = handleResolve;
14
14
  return handleResolve;
15
15
  };
16
16
 
17
- var handleResolved = function handleResolved(view, request) {
17
+ var updateCardType = function updateCardType(resolvedCard, options) {
18
+ if ((resolvedCard === null || resolvedCard === void 0 ? void 0 : resolvedCard.type) === 'blockCard' && !options.allowBlockCards || (resolvedCard === null || resolvedCard === void 0 ? void 0 : resolvedCard.type) === 'embedCard' && !options.allowEmbeds) {
19
+ resolvedCard.type = 'inlineCard';
20
+ }
21
+ };
22
+
23
+ var handleResolved = function handleResolved(view, request, options) {
18
24
  return function (resolvedCard) {
25
+ updateCardType(resolvedCard, options);
19
26
  replaceQueuedUrlWithCard(request.url, resolvedCard, request.analyticsAction)(view.state, view.dispatch);
20
27
  return resolvedCard;
21
28
  };
@@ -48,7 +48,7 @@ export var getToolbarConfig = function getToolbarConfig() {
48
48
  return option.value === language;
49
49
  }) || options.find(function (option) {
50
50
  return option.alias.includes(language);
51
- }) : undefined;
51
+ }) : null;
52
52
  var languageSelect = {
53
53
  id: 'editor.codeBlock.languageOptions',
54
54
  type: 'select',
@@ -15,16 +15,12 @@ var toAvatar = function toAvatar(participant) {
15
15
  };
16
16
  };
17
17
 
18
- var participantEquals = function participantEquals(_ref, _ref2) {
18
+ export default memoizeOne(toAvatar, function participantEquals(_ref, _ref2) {
19
19
  var _ref3 = _slicedToArray(_ref, 1),
20
- aRaw = _ref3[0];
20
+ a = _ref3[0];
21
21
 
22
22
  var _ref4 = _slicedToArray(_ref2, 1),
23
- bRaw = _ref4[0];
23
+ b = _ref4[0];
24
24
 
25
- var a = aRaw;
26
- var b = bRaw;
27
25
  return a.name === b.name && a.avatar === b.avatar && a.sessionId === b.sessionId;
28
- };
29
-
30
- export default memoizeOne(toAvatar, participantEquals);
26
+ });
@@ -7,7 +7,7 @@ import { N0, N20, N900 } from '@atlaskit/theme/colors';
7
7
  import { borderRadius, fontSizeSmall, gridSize } from '@atlaskit/theme/constants';
8
8
  import { EmojiSharedCssClassName } from '@atlaskit/editor-common';
9
9
  import { SelectionStyle, getSelectionStyles, akEditorSelectedNodeClassName, relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
10
- export var emojiStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n .", " {\n cursor: pointer;\n\n &.", " > span {\n /** needed for selection style to cover custom emoji image properly */\n display: flex;\n }\n }\n\n &.", " {\n .", ",\n .", "\n > span {\n border-radius: 2px;\n ", "\n }\n }\n }\n"])), EmojiSharedCssClassName.EMOJI_CONTAINER, EmojiSharedCssClassName.EMOJI_NODE, EmojiSharedCssClassName.EMOJI_IMAGE, akEditorSelectedNodeClassName, EmojiSharedCssClassName.EMOJI_SPRITE, EmojiSharedCssClassName.EMOJI_IMAGE, getSelectionStyles([SelectionStyle.Blanket, SelectionStyle.BoxShadow]));
10
+ export var emojiStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n display: inline-block;\n\n .", " {\n cursor: pointer;\n\n &.", " > span {\n /** needed for selection style to cover custom emoji image properly */\n display: flex;\n }\n }\n\n &.", " {\n .", ",\n .", "\n > span {\n border-radius: 2px;\n ", "\n }\n }\n }\n"])), EmojiSharedCssClassName.EMOJI_CONTAINER, EmojiSharedCssClassName.EMOJI_NODE, EmojiSharedCssClassName.EMOJI_IMAGE, akEditorSelectedNodeClassName, EmojiSharedCssClassName.EMOJI_SPRITE, EmojiSharedCssClassName.EMOJI_IMAGE, getSelectionStyles([SelectionStyle.Blanket, SelectionStyle.BoxShadow]));
11
11
  var grid = gridSize() / 2;
12
12
  var fontSize = fontSizeSmall();
13
13
  var lineHeight = 4 * grid / fontSize;
@@ -251,7 +251,6 @@ var createPlugin = function createPlugin(dispatch, providerFactory, extensionHan
251
251
  var useLongPressSelection = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
252
252
  var options = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
253
253
  var state = createPluginState(dispatch, {
254
- layout: 'default',
255
254
  showEditButton: false,
256
255
  showContextPanel: false
257
256
  });
@@ -304,14 +303,12 @@ var createPlugin = function createPlugin(dispatch, providerFactory, extensionHan
304
303
  var showEditButton = shouldShowEditButton(extensionHandler, extensionProvider);
305
304
  var updateExtension = getUpdateExtensionPromise(view, extensionHandler, extensionProvider).catch(function () {// do nothing;
306
305
  });
307
- var layout = selectedExtension ? node.attrs.layout : 'default';
308
306
  updateState({
309
307
  localId: node.attrs.localId,
310
308
  showContextPanel: false,
311
309
  element: newElement,
312
310
  showEditButton: showEditButton,
313
- updateExtension: updateExtension,
314
- layout: layout
311
+ updateExtension: updateExtension
315
312
  })(state, dispatch);
316
313
  } // New DOM element doesn't necessarily mean it's a new Node
317
314
  else if (element !== newElement) {