@atlaskit/editor-core 150.0.3 → 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 (195) hide show
  1. package/CHANGELOG.md +47 -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/emoji/styles.js +1 -1
  18. package/dist/cjs/plugins/extension/pm-plugins/main.js +1 -4
  19. package/dist/cjs/plugins/extension/toolbar.js +28 -23
  20. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +8 -3
  21. package/dist/cjs/plugins/find-replace/ui/Find.js +27 -7
  22. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +3 -3
  23. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  24. package/dist/cjs/plugins/hyperlink/utils.js +6 -69
  25. package/dist/cjs/plugins/media/index.js +14 -3
  26. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +24 -10
  27. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +179 -0
  28. package/dist/cjs/plugins/media/pm-plugins/main.js +18 -9
  29. package/dist/cjs/plugins/media/toolbar/index.js +49 -17
  30. package/dist/cjs/plugins/media/toolbar/utils.js +20 -2
  31. package/dist/cjs/plugins/media/utils/media-files.js +67 -1
  32. package/dist/cjs/plugins/panel/index.js +2 -3
  33. package/dist/cjs/plugins/panel/message.js +47 -0
  34. package/dist/cjs/plugins/panel/toolbar.js +64 -84
  35. package/dist/cjs/plugins/panel/utils.js +2 -2
  36. package/dist/cjs/plugins/paste/linkify-md-plugin.js +3 -3
  37. package/dist/cjs/plugins/status/styles.js +1 -1
  38. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  39. package/dist/cjs/profiler/render-count.js +82 -0
  40. package/dist/cjs/ui/Appearance/Comment/Comment.js +6 -5
  41. package/dist/cjs/utils/react-hooks/use-component-renderer-tracking/index.js +55 -19
  42. package/dist/cjs/version-wrapper.js +1 -1
  43. package/dist/cjs/version.json +1 -1
  44. package/dist/es2019/actions/index.js +6 -28
  45. package/dist/es2019/create-editor/ErrorBoundary.js +73 -60
  46. package/dist/es2019/create-editor/ReactEditorView.js +130 -23
  47. package/dist/es2019/create-editor/create-plugins-list.js +4 -2
  48. package/dist/es2019/editor.js +74 -35
  49. package/dist/es2019/labs/next/presets/cxhtml.js +2 -1
  50. package/dist/es2019/plugins/analytics/types/enums.js +3 -1
  51. package/dist/es2019/plugins/base/index.js +4 -3
  52. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +63 -35
  53. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +2 -1
  54. package/dist/es2019/plugins/card/index.js +7 -2
  55. package/dist/es2019/plugins/card/nodeviews/embedCard.js +1 -0
  56. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -2
  57. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +12 -5
  58. package/dist/es2019/plugins/code-block/toolbar.js +1 -1
  59. package/dist/es2019/plugins/emoji/styles.js +2 -0
  60. package/dist/es2019/plugins/extension/pm-plugins/main.js +1 -4
  61. package/dist/es2019/plugins/extension/toolbar.js +30 -25
  62. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +8 -4
  63. package/dist/es2019/plugins/find-replace/ui/Find.js +27 -6
  64. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  65. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  66. package/dist/es2019/plugins/hyperlink/utils.js +3 -59
  67. package/dist/es2019/plugins/media/index.js +13 -4
  68. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +16 -7
  69. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +88 -0
  70. package/dist/es2019/plugins/media/pm-plugins/main.js +20 -11
  71. package/dist/es2019/plugins/media/toolbar/index.js +44 -15
  72. package/dist/es2019/plugins/media/toolbar/utils.js +16 -0
  73. package/dist/es2019/plugins/media/utils/media-files.js +68 -2
  74. package/dist/es2019/plugins/panel/index.js +3 -4
  75. package/dist/es2019/plugins/panel/message.js +38 -0
  76. package/dist/es2019/plugins/panel/toolbar.js +52 -71
  77. package/dist/es2019/plugins/panel/utils.js +2 -2
  78. package/dist/es2019/plugins/paste/linkify-md-plugin.js +2 -2
  79. package/dist/es2019/plugins/status/styles.js +2 -0
  80. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  81. package/dist/es2019/profiler/render-count.js +60 -0
  82. package/dist/es2019/ui/Appearance/Comment/Comment.js +4 -2
  83. package/dist/es2019/utils/react-hooks/use-component-renderer-tracking/index.js +51 -18
  84. package/dist/es2019/version-wrapper.js +1 -1
  85. package/dist/es2019/version.json +1 -1
  86. package/dist/esm/actions/index.js +6 -24
  87. package/dist/esm/create-editor/ErrorBoundary.js +113 -78
  88. package/dist/esm/create-editor/ReactEditorView.js +146 -31
  89. package/dist/esm/create-editor/create-plugins-list.js +4 -2
  90. package/dist/esm/editor.js +100 -40
  91. package/dist/esm/labs/next/presets/cxhtml.js +2 -1
  92. package/dist/esm/plugins/analytics/types/enums.js +3 -1
  93. package/dist/esm/plugins/base/index.js +4 -3
  94. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +64 -36
  95. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  96. package/dist/esm/plugins/card/index.js +13 -2
  97. package/dist/esm/plugins/card/nodeviews/embedCard.js +1 -0
  98. package/dist/esm/plugins/card/pm-plugins/main.js +7 -2
  99. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +12 -5
  100. package/dist/esm/plugins/code-block/toolbar.js +1 -1
  101. package/dist/esm/plugins/emoji/styles.js +1 -1
  102. package/dist/esm/plugins/extension/pm-plugins/main.js +1 -4
  103. package/dist/esm/plugins/extension/toolbar.js +28 -23
  104. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +8 -4
  105. package/dist/esm/plugins/find-replace/ui/Find.js +27 -7
  106. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  107. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  108. package/dist/esm/plugins/hyperlink/utils.js +3 -59
  109. package/dist/esm/plugins/media/index.js +14 -4
  110. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +24 -10
  111. package/dist/esm/plugins/media/nodeviews/mediaInline.js +147 -0
  112. package/dist/esm/plugins/media/pm-plugins/main.js +19 -11
  113. package/dist/esm/plugins/media/toolbar/index.js +47 -19
  114. package/dist/esm/plugins/media/toolbar/utils.js +15 -1
  115. package/dist/esm/plugins/media/utils/media-files.js +60 -2
  116. package/dist/esm/plugins/panel/index.js +3 -4
  117. package/dist/esm/plugins/panel/message.js +38 -0
  118. package/dist/esm/plugins/panel/toolbar.js +57 -77
  119. package/dist/esm/plugins/panel/utils.js +2 -2
  120. package/dist/esm/plugins/paste/linkify-md-plugin.js +2 -2
  121. package/dist/esm/plugins/status/styles.js +1 -1
  122. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  123. package/dist/esm/profiler/render-count.js +57 -0
  124. package/dist/esm/ui/Appearance/Comment/Comment.js +6 -5
  125. package/dist/esm/utils/react-hooks/use-component-renderer-tracking/index.js +53 -20
  126. package/dist/esm/version-wrapper.js +1 -1
  127. package/dist/esm/version.json +1 -1
  128. package/dist/types/create-editor/ErrorBoundary.d.ts +6 -6
  129. package/dist/types/create-editor/ReactEditorView.d.ts +15 -3
  130. package/dist/types/editor.d.ts +2 -0
  131. package/dist/types/plugins/analytics/index.d.ts +1 -1
  132. package/dist/types/plugins/analytics/types/enums.d.ts +4 -2
  133. package/dist/types/plugins/analytics/types/events.d.ts +7 -2
  134. package/dist/types/plugins/analytics/types/general-events.d.ts +4 -1
  135. package/dist/types/plugins/analytics/types/index.d.ts +1 -1
  136. package/dist/types/plugins/analytics/types/insert-events.d.ts +6 -1
  137. package/dist/types/plugins/analytics/types/link-tool-bar-events.d.ts +1 -0
  138. package/dist/types/plugins/base/index.d.ts +1 -0
  139. package/dist/types/plugins/base/pm-plugins/frozen-editor.d.ts +3 -2
  140. package/dist/types/plugins/card/pm-plugins/main.d.ts +2 -3
  141. package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -1
  142. package/dist/types/plugins/card/types.d.ts +6 -0
  143. package/dist/types/plugins/extension/types.d.ts +0 -2
  144. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  145. package/dist/types/plugins/floating-toolbar/types.d.ts +1 -1
  146. package/dist/types/plugins/floating-toolbar/ui/Select.d.ts +1 -1
  147. package/dist/types/plugins/hyperlink/utils.d.ts +0 -21
  148. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +27 -0
  149. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -2
  150. package/dist/types/plugins/media/toolbar/utils.d.ts +2 -0
  151. package/dist/types/plugins/media/utils/media-files.d.ts +8 -0
  152. package/dist/types/plugins/panel/message.d.ts +37 -0
  153. package/dist/types/plugins/panel/toolbar.d.ts +4 -37
  154. package/dist/types/plugins/panel/types.d.ts +1 -0
  155. package/dist/types/profiler/render-count.d.ts +14 -0
  156. package/dist/types/types/feature-flags.d.ts +8 -0
  157. package/dist/types/ui/LinkSearch/types.d.ts +1 -0
  158. package/dist/types/utils/react-hooks/use-component-renderer-tracking/index.d.ts +17 -1
  159. package/package.json +19 -16
  160. package/dist/cjs/plugins/caption/nodeviews/index.test.js +0 -135
  161. package/dist/cjs/plugins/caption/pm-plugins/keymap.test.js +0 -203
  162. package/dist/cjs/plugins/caption/pm-plugins/main.test.js +0 -141
  163. package/dist/cjs/plugins/code-block/language-list.test.js +0 -74
  164. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -101
  165. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -98
  166. package/dist/cjs/plugins/media/commands/captions.test.js +0 -149
  167. package/dist/cjs/plugins/media/commands/linking.test.js +0 -296
  168. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -50
  169. package/dist/cjs/plugins/panel/toolbar.test.js +0 -250
  170. package/dist/cjs/ui/ColorPickerButton/index.test.js +0 -123
  171. package/dist/cjs/ui/PortalProvider/index.test.js +0 -139
  172. package/dist/es2019/plugins/caption/nodeviews/index.test.js +0 -122
  173. package/dist/es2019/plugins/caption/pm-plugins/keymap.test.js +0 -193
  174. package/dist/es2019/plugins/caption/pm-plugins/main.test.js +0 -132
  175. package/dist/es2019/plugins/code-block/language-list.test.js +0 -69
  176. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -83
  177. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  178. package/dist/es2019/plugins/media/commands/captions.test.js +0 -126
  179. package/dist/es2019/plugins/media/commands/linking.test.js +0 -208
  180. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  181. package/dist/es2019/plugins/panel/toolbar.test.js +0 -200
  182. package/dist/es2019/ui/ColorPickerButton/index.test.js +0 -88
  183. package/dist/es2019/ui/PortalProvider/index.test.js +0 -115
  184. package/dist/esm/plugins/caption/nodeviews/index.test.js +0 -125
  185. package/dist/esm/plugins/caption/pm-plugins/keymap.test.js +0 -195
  186. package/dist/esm/plugins/caption/pm-plugins/main.test.js +0 -124
  187. package/dist/esm/plugins/code-block/language-list.test.js +0 -71
  188. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -92
  189. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  190. package/dist/esm/plugins/media/commands/captions.test.js +0 -135
  191. package/dist/esm/plugins/media/commands/linking.test.js +0 -268
  192. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  193. package/dist/esm/plugins/panel/toolbar.test.js +0 -230
  194. package/dist/esm/ui/ColorPickerButton/index.test.js +0 -107
  195. package/dist/esm/ui/PortalProvider/index.test.js +0 -129
@@ -102,6 +102,7 @@ exports.ACTION = ACTION;
102
102
  ACTION["ON_EDITOR_READY_CALLBACK"] = "onEditorReadyCallback";
103
103
  ACTION["ON_CHANGE_CALLBACK"] = "onChangeCalled";
104
104
  ACTION["REMOVE_ICON"] = "removedIcon";
105
+ ACTION["UFO_SESSION_COMPLETE"] = "ufoSessionComplete";
105
106
  })(ACTION || (exports.ACTION = ACTION = {}));
106
107
 
107
108
  var INPUT_METHOD;
@@ -246,8 +247,9 @@ exports.ACTION_SUBJECT_ID = ACTION_SUBJECT_ID;
246
247
  ACTION_SUBJECT_ID["LINK"] = "link";
247
248
  ACTION_SUBJECT_ID["LINK_PREVIEW"] = "linkPreview";
248
249
  ACTION_SUBJECT_ID["MEDIA"] = "media";
249
- ACTION_SUBJECT_ID["MEDIA_SINGLE"] = "mediaSingle";
250
250
  ACTION_SUBJECT_ID["MEDIA_GROUP"] = "mediaGroup";
251
+ ACTION_SUBJECT_ID["MEDIA_INLINE"] = "mediaInline";
252
+ ACTION_SUBJECT_ID["MEDIA_SINGLE"] = "mediaSingle";
251
253
  ACTION_SUBJECT_ID["MEDIA_LINK"] = "mediaLink";
252
254
  ACTION_SUBJECT_ID["MENTION"] = "mention";
253
255
  ACTION_SUBJECT_ID["NESTED_EXPAND"] = "nestedExpand";
@@ -81,9 +81,10 @@ var basePlugin = function basePlugin(options) {
81
81
  }, {
82
82
  name: 'frozenEditor',
83
83
  plugin: function plugin(_ref3) {
84
- var dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent,
85
- providerFactory = _ref3.providerFactory;
86
- return options && options.inputTracking && options.inputTracking.enabled ? (0, _frozenEditor.default)(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking) : undefined;
84
+ var _options$inputTrackin;
85
+
86
+ var dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
87
+ 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 ? (0, _frozenEditor.default)(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
87
88
  }
88
89
  }, {
89
90
  name: 'decorationPlugin',
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL = exports.DEGRADED_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = exports.DEFAULT_FREEZE_THRESHOLD = void 0;
8
+ exports.default = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL = exports.DEGRADED_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = exports.DEFAULT_FREEZE_THRESHOLD = exports.frozenEditorPluginKey = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -13,6 +13,8 @@ var _prosemirrorState = require("prosemirror-state");
13
13
 
14
14
  var _editorCommon = require("@atlaskit/editor-common");
15
15
 
16
+ var _ufo = require("@atlaskit/editor-common/ufo");
17
+
16
18
  var _analytics = require("../../analytics");
17
19
 
18
20
  var _getParticipantsCount = require("../../collab-edit/get-participants-count");
@@ -29,6 +31,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
29
31
 
30
32
  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) { (0, _defineProperty2.default)(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; }
31
33
 
34
+ var frozenEditorPluginKey = new _prosemirrorState.PluginKey('frozenEditor');
35
+ exports.frozenEditorPluginKey = frozenEditorPluginKey;
32
36
  var DEFAULT_KEYSTROKE_SAMPLING_LIMIT = 100;
33
37
  var DEFAULT_SLOW_THRESHOLD = 300;
34
38
  var DEFAULT_FREEZE_THRESHOLD = 600;
@@ -64,7 +68,7 @@ var dispatchLongTaskEvent = function dispatchLongTaskEvent(dispatchAnalyticsEven
64
68
  });
65
69
  };
66
70
 
67
- var _default = function _default(dispatchAnalyticsEvent, inputTracking, browserFreezeTracking) {
71
+ var _default = function _default(dispatchAnalyticsEvent, inputTracking, browserFreezeTracking, ufo) {
68
72
  var keystrokeCount = 0;
69
73
  var interactionType;
70
74
 
@@ -80,6 +84,7 @@ var _default = function _default(dispatchAnalyticsEvent, inputTracking, browserF
80
84
  var severityThresholdNormal = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityNormalThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL;
81
85
  var severityThresholdDegraded = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityDegradedThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED;
82
86
  return new _prosemirrorState.Plugin({
87
+ key: frozenEditorPluginKey,
83
88
  props: (0, _editorCommon.isPerformanceAPIAvailable)() ? {
84
89
  handleTextInput: function handleTextInput(view) {
85
90
  var state = view.state;
@@ -89,51 +94,76 @@ var _default = function _default(dispatchAnalyticsEvent, inputTracking, browserF
89
94
  interactionType = _analytics.BROWSER_FREEZE_INTERACTION_TYPE.TYPING;
90
95
  }
91
96
 
97
+ var experienceStore = ufo ? _ufo.ExperienceStore.getInstance(view) : undefined;
98
+ var trackTyping = samplingRate && ++keystrokeCount === samplingRate;
99
+
100
+ if (trackTyping) {
101
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.start(_ufo.EditorExperience.typing);
102
+ }
103
+
92
104
  requestAnimationFrame(function () {
93
105
  var diff = (0, _getPerformanceTiming.getTimeSince)(now);
94
106
 
95
- if (samplingRate && ++keystrokeCount === samplingRate) {
96
- var _getContextIdentifier2;
97
-
107
+ if (diff > slowThreshold) {
98
108
  var nodesCount = allowCountNodes ? (0, _countNodes.countNodes)(view.state) : {};
99
- keystrokeCount = 0;
100
- var payload = {
101
- action: _analytics.ACTION.INPUT_PERF_SAMPLING,
102
- actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
103
- attributes: _objectSpread(_objectSpread({
104
- time: diff,
105
- nodeSize: state.doc.nodeSize
106
- }, nodesCount), {}, {
107
- participants: (0, _getParticipantsCount.getParticipantsCount)(state),
108
- objectId: (_getContextIdentifier2 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier2 === void 0 ? void 0 : _getContextIdentifier2.objectId
109
- }),
110
- eventType: _analytics.EVENT_TYPE.OPERATIONAL
111
- };
112
-
113
- if (shouldTrackSeverity) {
114
- payload.attributes.severity = (0, _editorCommon.getAnalyticsEventSeverity)(diff, severityThresholdNormal, severityThresholdDegraded);
109
+
110
+ if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
111
+ var _getContextIdentifier2;
112
+
113
+ dispatchAnalyticsEvent({
114
+ action: _analytics.ACTION.SLOW_INPUT,
115
+ actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
116
+ attributes: _objectSpread(_objectSpread({
117
+ time: diff,
118
+ nodeSize: state.doc.nodeSize
119
+ }, nodesCount), {}, {
120
+ participants: (0, _getParticipantsCount.getParticipantsCount)(state),
121
+ objectId: (_getContextIdentifier2 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier2 === void 0 ? void 0 : _getContextIdentifier2.objectId
122
+ }),
123
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL
124
+ });
115
125
  }
116
126
 
117
- dispatchAnalyticsEvent(payload);
127
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.addMetadata(_ufo.EditorExperience.typing, {
128
+ slowInput: true
129
+ });
118
130
  }
119
131
 
120
- if (diff > slowThreshold) {
121
- var _getContextIdentifier3;
132
+ if (trackTyping) {
133
+ var _getContextIdentifier4;
122
134
 
123
135
  var _nodesCount = allowCountNodes ? (0, _countNodes.countNodes)(view.state) : {};
124
136
 
125
- dispatchAnalyticsEvent({
126
- action: _analytics.ACTION.SLOW_INPUT,
127
- actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
128
- attributes: _objectSpread(_objectSpread({
129
- time: diff,
130
- nodeSize: state.doc.nodeSize
131
- }, _nodesCount), {}, {
132
- participants: (0, _getParticipantsCount.getParticipantsCount)(state),
133
- objectId: (_getContextIdentifier3 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier3 === void 0 ? void 0 : _getContextIdentifier3.objectId
134
- }),
135
- eventType: _analytics.EVENT_TYPE.OPERATIONAL
136
- });
137
+ keystrokeCount = 0;
138
+ var severity = shouldTrackSeverity ? (0, _editorCommon.getAnalyticsEventSeverity)(diff, severityThresholdNormal, severityThresholdDegraded) : undefined;
139
+
140
+ if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
141
+ var _getContextIdentifier3;
142
+
143
+ var payload = {
144
+ action: _analytics.ACTION.INPUT_PERF_SAMPLING,
145
+ actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
146
+ attributes: _objectSpread(_objectSpread({
147
+ time: diff,
148
+ nodeSize: state.doc.nodeSize
149
+ }, _nodesCount), {}, {
150
+ participants: (0, _getParticipantsCount.getParticipantsCount)(state),
151
+ objectId: (_getContextIdentifier3 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier3 === void 0 ? void 0 : _getContextIdentifier3.objectId,
152
+ severity: severity
153
+ }),
154
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL
155
+ };
156
+ dispatchAnalyticsEvent(payload);
157
+ }
158
+
159
+ experienceStore === null || experienceStore === void 0 ? void 0 : experienceStore.success(_ufo.EditorExperience.typing, _objectSpread(_objectSpread({
160
+ nodeSize: state.doc.nodeSize
161
+ }, _nodesCount), {}, {
162
+ participants: (0, _getParticipantsCount.getParticipantsCount)(state),
163
+ objectId: (_getContextIdentifier4 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier4 === void 0 ? void 0 : _getContextIdentifier4.objectId,
164
+ time: diff,
165
+ severity: severity
166
+ }));
137
167
  }
138
168
  });
139
169
  return false;
@@ -20,7 +20,9 @@ var _styles = require("../../../../ui/styles");
20
20
  var _templateObject, _templateObject2;
21
21
 
22
22
  var BlockTypeMenuItem = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", ";\n > {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n }\n }\n ", ";\n"])), _editorCommon.headingsSharedStyles, function (props) {
23
- return props.selected ? "".concat(props.tagName, " { color: white }") : '';
23
+ return (// TEMP FIX: See https://product-fabric.atlassian.net/browse/ED-13878
24
+ props.selected ? "".concat(props.tagName, " { color: white !important; }") : ''
25
+ );
24
26
  });
25
27
 
26
28
  exports.BlockTypeMenuItem = BlockTypeMenuItem;
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
12
14
  var _adfSchema = require("@atlaskit/adf-schema");
@@ -17,6 +19,10 @@ var _toolbar = require("./toolbar");
17
19
 
18
20
  var _EditorSmartCardEvents = require("./ui/EditorSmartCardEvents");
19
21
 
22
+ 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; }
23
+
24
+ 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) { (0, _defineProperty2.default)(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; }
25
+
20
26
  var cardPlugin = function cardPlugin(options) {
21
27
  return {
22
28
  name: 'card',
@@ -39,13 +45,18 @@ var cardPlugin = function cardPlugin(options) {
39
45
  return nodes;
40
46
  },
41
47
  pmPlugins: function pmPlugins() {
42
- var _options$allowResizin, _options$useAlternati;
48
+ var _options$allowBlockCa, _options$allowResizin, _options$useAlternati;
43
49
 
50
+ var allowBlockCards = (_options$allowBlockCa = options.allowBlockCards) !== null && _options$allowBlockCa !== void 0 ? _options$allowBlockCa : true;
44
51
  var allowResizing = (_options$allowResizin = options.allowResizing) !== null && _options$allowResizin !== void 0 ? _options$allowResizin : true;
45
52
  var useAlternativePreloader = (_options$useAlternati = options.useAlternativePreloader) !== null && _options$useAlternati !== void 0 ? _options$useAlternati : true;
46
53
  return [{
47
54
  name: 'card',
48
- plugin: (0, _main.createPlugin)(options.platform, allowResizing, useAlternativePreloader, options.fullWidthMode, options.createAnalyticsEvent)
55
+ plugin: (0, _main.createPlugin)(_objectSpread(_objectSpread({}, options), {}, {
56
+ allowBlockCards: allowBlockCards,
57
+ allowResizing: allowResizing,
58
+ useAlternativePreloader: useAlternativePreloader
59
+ }))
49
60
  }];
50
61
  },
51
62
  contentComponent: function contentComponent(_ref) {
@@ -284,6 +284,7 @@ var EmbedCardComponent = /*#__PURE__*/function (_React$PureComponent) {
284
284
  var containerWidth = (0, _richMediaUtils.isRichMediaInsideOfBlockNode)(view, pos) ? lineLength : widthStateWidth;
285
285
 
286
286
  var smartCard = /*#__PURE__*/_react.default.createElement(_smartCard.Card, {
287
+ key: url,
287
288
  url: url,
288
289
  appearance: "embed",
289
290
  onClick: _this2.onClick,
@@ -31,12 +31,17 @@ var _blockCard = require("../nodeviews/blockCard");
31
31
 
32
32
  var _inlineCard = require("../nodeviews/inlineCard");
33
33
 
34
- var createPlugin = function createPlugin(platform, allowResizing, useAlternativePreloader, fullWidthMode, createAnalyticsEvent) {
34
+ var createPlugin = function createPlugin(options) {
35
35
  return function (_ref) {
36
36
  var portalProviderAPI = _ref.portalProviderAPI,
37
37
  eventDispatcher = _ref.eventDispatcher,
38
38
  providerFactory = _ref.providerFactory,
39
39
  dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent;
40
+ var platform = options.platform,
41
+ allowResizing = options.allowResizing,
42
+ useAlternativePreloader = options.useAlternativePreloader,
43
+ fullWidthMode = options.fullWidthMode,
44
+ createAnalyticsEvent = options.createAnalyticsEvent;
40
45
  return new _prosemirrorState.Plugin({
41
46
  state: {
42
47
  init: function init() {
@@ -94,7 +99,7 @@ var createPlugin = function createPlugin(platform, allowResizing, useAlternative
94
99
  * other tasks as per common implementations of the JavaScript event loop in browsers.
95
100
  */
96
101
  var invoke = (0, _rafSchd.default)(function () {
97
- return (0, _resolve.resolveWithProvider)(view, outstandingRequests, provider, request);
102
+ return (0, _resolve.resolveWithProvider)(view, outstandingRequests, provider, request, options);
98
103
  });
99
104
  rafCancellationCallbacks.push(invoke.cancel);
100
105
  invoke();
@@ -14,19 +14,26 @@ var _doc = require("../doc");
14
14
  // ============================================================================ //
15
15
  // Used for all interactions with the EditorCardProvider.
16
16
  // ============================================================================ //
17
- var resolveWithProvider = function resolveWithProvider(view, outstandingRequests, provider, request) {
17
+ var resolveWithProvider = function resolveWithProvider(view, outstandingRequests, provider, request, options) {
18
18
  var handleResolve = provider.resolve(request.url, request.appearance).then(function (resolvedCard) {
19
19
  delete outstandingRequests[request.url];
20
20
  return resolvedCard;
21
- }).then(handleResolved(view, request), handleRejected(view, request));
21
+ }).then(handleResolved(view, request, options), handleRejected(view, request));
22
22
  outstandingRequests[request.url] = handleResolve;
23
23
  return handleResolve;
24
24
  };
25
25
 
26
26
  exports.resolveWithProvider = resolveWithProvider;
27
27
 
28
- var handleResolved = function handleResolved(view, request) {
28
+ var updateCardType = function updateCardType(resolvedCard, options) {
29
+ 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) {
30
+ resolvedCard.type = 'inlineCard';
31
+ }
32
+ };
33
+
34
+ var handleResolved = function handleResolved(view, request, options) {
29
35
  return function (resolvedCard) {
36
+ updateCardType(resolvedCard, options);
30
37
  (0, _doc.replaceQueuedUrlWithCard)(request.url, resolvedCard, request.analyticsAction)(view.state, view.dispatch);
31
38
  return resolvedCard;
32
39
  };
@@ -70,7 +70,7 @@ var getToolbarConfig = function getToolbarConfig() {
70
70
  return option.value === language;
71
71
  }) || options.find(function (option) {
72
72
  return option.alias.includes(language);
73
- }) : undefined;
73
+ }) : null;
74
74
  var languageSelect = {
75
75
  id: 'editor.codeBlock.languageOptions',
76
76
  type: 'select',
@@ -21,7 +21,7 @@ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
21
21
 
22
22
  var _templateObject, _templateObject2;
23
23
 
24
- var emojiStyles = (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\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"])), _editorCommon.EmojiSharedCssClassName.EMOJI_CONTAINER, _editorCommon.EmojiSharedCssClassName.EMOJI_NODE, _editorCommon.EmojiSharedCssClassName.EMOJI_IMAGE, _editorSharedStyles.akEditorSelectedNodeClassName, _editorCommon.EmojiSharedCssClassName.EMOJI_SPRITE, _editorCommon.EmojiSharedCssClassName.EMOJI_IMAGE, (0, _editorSharedStyles.getSelectionStyles)([_editorSharedStyles.SelectionStyle.Blanket, _editorSharedStyles.SelectionStyle.BoxShadow]));
24
+ var emojiStyles = (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\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"])), _editorCommon.EmojiSharedCssClassName.EMOJI_CONTAINER, _editorCommon.EmojiSharedCssClassName.EMOJI_NODE, _editorCommon.EmojiSharedCssClassName.EMOJI_IMAGE, _editorSharedStyles.akEditorSelectedNodeClassName, _editorCommon.EmojiSharedCssClassName.EMOJI_SPRITE, _editorCommon.EmojiSharedCssClassName.EMOJI_IMAGE, (0, _editorSharedStyles.getSelectionStyles)([_editorSharedStyles.SelectionStyle.Blanket, _editorSharedStyles.SelectionStyle.BoxShadow]));
25
25
  exports.emojiStyles = emojiStyles;
26
26
  var grid = (0, _constants.gridSize)() / 2;
27
27
  var fontSize = (0, _constants.fontSizeSmall)();
@@ -295,7 +295,6 @@ var createPlugin = function createPlugin(dispatch, providerFactory, extensionHan
295
295
  var useLongPressSelection = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
296
296
  var options = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
297
297
  var state = (0, _pluginFactory.createPluginState)(dispatch, {
298
- layout: 'default',
299
298
  showEditButton: false,
300
299
  showContextPanel: false
301
300
  });
@@ -348,14 +347,12 @@ var createPlugin = function createPlugin(dispatch, providerFactory, extensionHan
348
347
  var showEditButton = shouldShowEditButton(extensionHandler, extensionProvider);
349
348
  var updateExtension = getUpdateExtensionPromise(view, extensionHandler, extensionProvider).catch(function () {// do nothing;
350
349
  });
351
- var layout = selectedExtension ? node.attrs.layout : 'default';
352
350
  (0, _commands.updateState)({
353
351
  localId: node.attrs.localId,
354
352
  showContextPanel: false,
355
353
  element: newElement,
356
354
  showEditButton: showEditButton,
357
- updateExtension: updateExtension,
358
- layout: layout
355
+ updateExtension: updateExtension
359
356
  })(state, dispatch);
360
357
  } // New DOM element doesn't necessarily mean it's a new Node
361
358
  else if (element !== newElement) {
@@ -62,28 +62,33 @@ var isLayoutSupported = function isLayoutSupported(state, selectedExtNode) {
62
62
  return !!((selectedExtNode.node.type === bodiedExtension || selectedExtNode.node.type === extension && !(0, _prosemirrorUtils.hasParentNodeOfType)([bodiedExtension, table, expand].filter(Boolean))(selection)) && !(0, _prosemirrorUtils.hasParentNodeOfType)([layoutSection])(selection));
63
63
  };
64
64
 
65
- var breakoutOptions = function breakoutOptions(state, formatMessage, extensionState, breakoutEnabled) {
66
- var nodeWithPos = (0, _utils.getSelectedExtension)(state, true);
67
- var layout = extensionState.layout;
68
- return nodeWithPos && breakoutEnabled && isLayoutSupported(state, nodeWithPos) ? [{
69
- type: 'button',
70
- icon: _mediaCenter.default,
71
- onClick: (0, _commands.updateExtensionLayout)('default'),
72
- selected: layout === 'default',
73
- title: formatMessage(_messages.default.layoutFixedWidth)
74
- }, {
75
- type: 'button',
76
- icon: _mediaWide.default,
77
- onClick: (0, _commands.updateExtensionLayout)('wide'),
78
- selected: layout === 'wide',
79
- title: formatMessage(_messages.default.layoutWide)
80
- }, {
81
- type: 'button',
82
- icon: _mediaFullWidth.default,
83
- onClick: (0, _commands.updateExtensionLayout)('full-width'),
84
- selected: layout === 'full-width',
85
- title: formatMessage(_messages.default.layoutFullWidth)
86
- }] : [];
65
+ var breakoutOptions = function breakoutOptions(state, formatMessage, breakoutEnabled) {
66
+ var nodeWithPos = (0, _utils.getSelectedExtension)(state, true); // we should only return breakout options when breakouts are enabled and the node supports them
67
+
68
+ if (nodeWithPos && breakoutEnabled && isLayoutSupported(state, nodeWithPos)) {
69
+ var layout = nodeWithPos.node.attrs.layout;
70
+ return [{
71
+ type: 'button',
72
+ icon: _mediaCenter.default,
73
+ onClick: (0, _commands.updateExtensionLayout)('default'),
74
+ selected: layout === 'default',
75
+ title: formatMessage(_messages.default.layoutFixedWidth)
76
+ }, {
77
+ type: 'button',
78
+ icon: _mediaWide.default,
79
+ onClick: (0, _commands.updateExtensionLayout)('wide'),
80
+ selected: layout === 'wide',
81
+ title: formatMessage(_messages.default.layoutWide)
82
+ }, {
83
+ type: 'button',
84
+ icon: _mediaFullWidth.default,
85
+ onClick: (0, _commands.updateExtensionLayout)('full-width'),
86
+ selected: layout === 'full-width',
87
+ title: formatMessage(_messages.default.layoutFullWidth)
88
+ }];
89
+ }
90
+
91
+ return [];
87
92
  };
88
93
 
89
94
  var editButton = function editButton(formatMessage, extensionState) {
@@ -119,7 +124,7 @@ var getToolbarConfig = function getToolbarConfig() {
119
124
  if (extensionState && !extensionState.showContextPanel && extensionState.element) {
120
125
  var nodeType = [state.schema.nodes.extension, state.schema.nodes.inlineExtension, state.schema.nodes.bodiedExtension];
121
126
  var editButtonArray = editButton(formatMessage, extensionState);
122
- var breakoutButtonArray = breakoutOptions(state, formatMessage, extensionState, breakoutEnabled);
127
+ var breakoutButtonArray = breakoutOptions(state, formatMessage, breakoutEnabled);
123
128
  return {
124
129
  title: 'Extension floating controls',
125
130
  getDomRef: function getDomRef() {
@@ -13,6 +13,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
13
13
 
14
14
  var _normalizeFeatureFlags = require("@atlaskit/editor-common/normalize-feature-flags");
15
15
 
16
+ var _editorCommon = require("@atlaskit/editor-common");
17
+
16
18
  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; }
17
19
 
18
20
  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) { (0, _defineProperty2.default)(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; }
@@ -22,9 +24,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
22
24
  * which is used by both current and archv3 editors.
23
25
  */
24
26
  function createFeatureFlagsFromProps(props) {
25
- var _props$allowTextColor, _props$performanceTra, _props$performanceTra2, _props$featureFlags, _props$featureFlags2, _props$featureFlags3, _props$allowTables, _props$featureFlags4, _props$featureFlags5, _props$allowTables2, _props$featureFlags6, _props$featureFlags7, _props$allowTables3, _props$featureFlags8, _props$featureFlags9, _props$allowTables4, _props$featureFlags10, _props$featureFlags11, _props$allowTables5, _props$allowExtension, _props$featureFlags12, _props$featureFlags13, _props$featureFlags14, _props$featureFlags15, _props$featureFlags16, _props$featureFlags17, _props$featureFlags18, _props$featureFlags19, _props$featureFlags20, _props$featureFlags21, _props$featureFlags22, _props$featureFlags23, _props$featureFlags24, _props$featureFlags25;
27
+ var _props$allowTextColor, _props$performanceTra, _props$performanceTra2, _props$featureFlags, _props$featureFlags2, _props$featureFlags3, _props$allowTables, _props$featureFlags4, _props$featureFlags5, _props$allowTables2, _props$featureFlags6, _props$featureFlags7, _props$allowTables3, _props$featureFlags8, _props$featureFlags9, _props$allowTables4, _props$featureFlags10, _props$featureFlags11, _props$allowTables5, _props$allowExtension, _props$featureFlags12, _props$featureFlags13, _props$featureFlags14, _props$featureFlags15, _props$featureFlags16, _props$featureFlags17, _props$featureFlags18, _props$featureFlags19, _props$featureFlags20, _props$featureFlags21, _props$featureFlags22, _props$featureFlags23, _props$featureFlags24, _props$featureFlags25, _props$featureFlags26, _props$featureFlags27;
26
28
 
27
- return _objectSpread(_objectSpread({}, (0, _normalizeFeatureFlags.normalizeFeatureFlags)(props.featureFlags)), {}, {
29
+ var normalizedFeatureFlags = (0, _normalizeFeatureFlags.normalizeFeatureFlags)(props.featureFlags);
30
+ return _objectSpread(_objectSpread({}, normalizedFeatureFlags), {}, {
28
31
  newInsertionBehaviour: props.allowNewInsertionBehaviour,
29
32
  interactiveExpand: typeof props.allowExpand === 'boolean' ? props.allowExpand : Boolean(props.allowExpand && props.allowExpand.allowInteractiveExpand !== false),
30
33
  placeholderBracketHint: !!props.placeholderBracketHint,
@@ -49,6 +52,8 @@ function createFeatureFlagsFromProps(props) {
49
52
  errorBoundaryDocStructure: Boolean(typeof ((_props$featureFlags18 = props.featureFlags) === null || _props$featureFlags18 === void 0 ? void 0 : _props$featureFlags18.useErrorBoundaryDocStructure) === 'boolean' ? !!((_props$featureFlags19 = props.featureFlags) !== null && _props$featureFlags19 !== void 0 && _props$featureFlags19.useErrorBoundaryDocStructure) : false),
50
53
  synchronyErrorDocStructure: Boolean(typeof ((_props$featureFlags20 = props.featureFlags) === null || _props$featureFlags20 === void 0 ? void 0 : _props$featureFlags20.synchronyErrorDocStructure) === 'boolean' ? !!((_props$featureFlags21 = props.featureFlags) !== null && _props$featureFlags21 !== void 0 && _props$featureFlags21.synchronyErrorDocStructure) : false),
51
54
  enableViewUpdateSubscription: Boolean(typeof ((_props$featureFlags22 = props.featureFlags) === null || _props$featureFlags22 === void 0 ? void 0 : _props$featureFlags22.enableViewUpdateSubscription) === 'boolean' ? !!((_props$featureFlags23 = props.featureFlags) !== null && _props$featureFlags23 !== void 0 && _props$featureFlags23.enableViewUpdateSubscription) : false),
52
- collabAvatarScroll: Boolean(typeof ((_props$featureFlags24 = props.featureFlags) === null || _props$featureFlags24 === void 0 ? void 0 : _props$featureFlags24.collabAvatarScroll) === 'boolean' ? !!((_props$featureFlags25 = props.featureFlags) !== null && _props$featureFlags25 !== void 0 && _props$featureFlags25.collabAvatarScroll) : false)
55
+ collabAvatarScroll: Boolean(typeof ((_props$featureFlags24 = props.featureFlags) === null || _props$featureFlags24 === void 0 ? void 0 : _props$featureFlags24.collabAvatarScroll) === 'boolean' ? !!((_props$featureFlags25 = props.featureFlags) !== null && _props$featureFlags25 !== void 0 && _props$featureFlags25.collabAvatarScroll) : false),
56
+ ufo: Boolean(typeof ((_props$featureFlags26 = props.featureFlags) === null || _props$featureFlags26 === void 0 ? void 0 : _props$featureFlags26.ufo) === 'boolean' ? !!((_props$featureFlags27 = props.featureFlags) !== null && _props$featureFlags27 !== void 0 && _props$featureFlags27.ufo) : false),
57
+ codeBlockSyntaxHighlighting: Boolean(typeof normalizedFeatureFlags.codeBlockSyntaxHighlighting === 'boolean' ? !!normalizedFeatureFlags.codeBlockSyntaxHighlighting && !_editorCommon.browser.safari : false)
53
58
  });
54
59
  }
@@ -110,12 +110,16 @@ var Find = /*#__PURE__*/function (_React$Component) {
110
110
  }
111
111
  });
112
112
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleFindChange", function (event) {
113
- return _this.skipWhileComposing(function () {
114
- _this.updateFindValue(event.target.value);
115
- });
113
+ _this.updateFindValue(event.target.value);
116
114
  });
117
115
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateFindValue", function (value) {
118
- _this.props.onFind(value);
116
+ _this.setState({
117
+ localFindText: value
118
+ });
119
+
120
+ _this.skipWhileComposing(function () {
121
+ _this.props.onFind(value);
122
+ });
119
123
  });
120
124
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleFindKeyDown", function (event) {
121
125
  return _this.skipWhileComposing(function () {
@@ -187,7 +191,13 @@ var Find = /*#__PURE__*/function (_React$Component) {
187
191
  });
188
192
  _this.closeIcon = /*#__PURE__*/_react.default.createElement(_close.default, {
189
193
  label: _this.closeFindReplaceDialog
190
- });
194
+ }); // We locally manage the value of the input inside this component in order to support compositions.
195
+ // This requires some additional work inside componentDidUpdate to ensure we support changes that
196
+ // occur to this value which do not originate from this component.
197
+
198
+ _this.state = {
199
+ localFindText: _this.props.findText || ''
200
+ };
191
201
  return _this;
192
202
  }
193
203
 
@@ -200,7 +210,17 @@ var Find = /*#__PURE__*/function (_React$Component) {
200
210
  }, {
201
211
  key: "componentDidUpdate",
202
212
  value: function componentDidUpdate() {
203
- this.focusFindTextfield();
213
+ this.focusFindTextfield(); // If the external prop findText changes and we aren't in a composition we should update to the
214
+ // use the external prop value.
215
+ //
216
+ // An example of where this may happen is when a find occurs through the user selecting some text
217
+ // and pressing Mod-f.
218
+
219
+ if (!this.isComposing && this.props.findText !== this.state.localFindText) {
220
+ this.setState({
221
+ localFindText: this.props.findText || ''
222
+ });
223
+ }
204
224
  }
205
225
  }, {
206
226
  key: "render",
@@ -219,7 +239,7 @@ var Find = /*#__PURE__*/function (_React$Component) {
219
239
  name: "find",
220
240
  appearance: "none",
221
241
  placeholder: this.find,
222
- value: findText,
242
+ value: this.state.localFindText,
223
243
  ref: this.findTextfieldRef,
224
244
  autoComplete: "off",
225
245
  onChange: this.handleFindChange,
@@ -10,9 +10,9 @@ exports.default = void 0;
10
10
 
11
11
  var _prosemirrorKeymap = require("prosemirror-keymap");
12
12
 
13
- var keymaps = _interopRequireWildcard(require("../../../keymaps"));
13
+ var _adfSchema = require("@atlaskit/adf-schema");
14
14
 
15
- var _utils = require("../utils");
15
+ var keymaps = _interopRequireWildcard(require("../../../keymaps"));
16
16
 
17
17
  var _main = require("../pm-plugins/main");
18
18
 
@@ -62,7 +62,7 @@ var mayConvertLastWordToHyperlink = function mayConvertLastWordToHyperlink(skipA
62
62
 
63
63
  var words = nodeBefore.text.split(' ');
64
64
  var lastWord = words[words.length - 1];
65
- var match = (0, _utils.getLinkMatch)(lastWord);
65
+ var match = (0, _adfSchema.getLinkMatch)(lastWord);
66
66
 
67
67
  if (match) {
68
68
  var hyperlinkedText = match.raw;
@@ -144,7 +144,8 @@ var mapActivityProviderResultToLinkSearchItemData = function mapActivityProvider
144
144
  container: container,
145
145
  iconUrl: iconUrl,
146
146
  url: url,
147
- lastViewedDate: viewedTimestamp ? new Date(viewedTimestamp) : undefined
147
+ lastViewedDate: viewedTimestamp ? new Date(viewedTimestamp) : undefined,
148
+ prefetch: true
148
149
  };
149
150
  };
150
151
 
@@ -161,7 +162,8 @@ var mapSearchProviderResultToLinkSearchItemData = function mapSearchProviderResu
161
162
  name: title,
162
163
  url: url,
163
164
  lastUpdatedDate: updatedTimestamp ? new Date(updatedTimestamp) : undefined,
164
- icon: contentType && _utils2.mapContentTypeToIcon[contentType] || defaultIcon
165
+ icon: contentType && _utils2.mapContentTypeToIcon[contentType] || defaultIcon,
166
+ prefetch: false
165
167
  };
166
168
  };
167
169
 
@@ -502,7 +504,7 @@ var HyperlinkLinkAddToolbar = /*#__PURE__*/function (_PureComponent) {
502
504
  }
503
505
 
504
506
  if (interaction === 'click' || _this.isUrlPopulatedWithSelectedItem()) {
505
- var _pluginState$searchSe3;
507
+ var _pluginState$searchSe3, _selectedItem$prefetc;
506
508
 
507
509
  /**
508
510
  * When it's a mouse click even or the selectedItem.url matches displayUrl, we think
@@ -520,7 +522,8 @@ var HyperlinkLinkAddToolbar = /*#__PURE__*/function (_PureComponent) {
520
522
  trigger: interaction,
521
523
  resultCount: items.length,
522
524
  selectedResultId: selectedItem.objectId,
523
- selectedRelativePosition: selectedIndex
525
+ selectedRelativePosition: selectedIndex,
526
+ prefetch: (_selectedItem$prefetc = selectedItem.prefetch) !== null && _selectedItem$prefetc !== void 0 ? _selectedItem$prefetc : false
524
527
  },
525
528
  eventType: _analytics.EVENT_TYPE.UI
526
529
  });