@atlaskit/editor-core 150.0.1 → 151.1.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 (248) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/actions/index.js +5 -23
  3. package/dist/cjs/create-editor/ErrorBoundary.js +113 -79
  4. package/dist/cjs/create-editor/ReactEditorView.js +145 -31
  5. package/dist/cjs/create-editor/create-plugins-list.js +8 -2
  6. package/dist/cjs/editor.js +101 -40
  7. package/dist/cjs/labs/next/presets/cxhtml.js +2 -1
  8. package/dist/cjs/plugins/analytics/types/enums.js +3 -1
  9. package/dist/cjs/plugins/base/index.js +4 -3
  10. package/dist/cjs/plugins/base/pm-plugins/frozen-editor.js +66 -36
  11. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  12. package/dist/cjs/plugins/card/index.js +13 -2
  13. package/dist/cjs/plugins/card/nodeviews/embedCard.js +1 -0
  14. package/dist/cjs/plugins/card/pm-plugins/main.js +7 -2
  15. package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +10 -3
  16. package/dist/cjs/plugins/code-bidi-warning/index.js +25 -0
  17. package/dist/cjs/plugins/code-bidi-warning/plugin-key.js +11 -0
  18. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/main.js +43 -0
  19. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +118 -0
  20. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/reducer.js +12 -0
  21. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/types.js +5 -0
  22. package/dist/cjs/plugins/code-block/index.js +10 -6
  23. package/dist/cjs/plugins/code-block/nodeviews/highlighting-code-block.js +16 -5
  24. package/dist/cjs/plugins/code-block/pm-plugins/main.js +12 -3
  25. package/dist/cjs/plugins/code-block/toolbar.js +1 -1
  26. package/dist/cjs/plugins/collab-edit/ui/to-avatar.js +4 -8
  27. package/dist/cjs/plugins/emoji/styles.js +1 -1
  28. package/dist/cjs/plugins/extension/pm-plugins/main.js +1 -4
  29. package/dist/cjs/plugins/extension/toolbar.js +28 -23
  30. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +9 -3
  31. package/dist/cjs/plugins/find-replace/ui/Find.js +27 -7
  32. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +3 -3
  33. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  34. package/dist/cjs/plugins/hyperlink/utils.js +6 -69
  35. package/dist/cjs/plugins/index.js +8 -0
  36. package/dist/cjs/plugins/media/index.js +14 -3
  37. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +24 -10
  38. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +179 -0
  39. package/dist/cjs/plugins/media/pm-plugins/main.js +18 -9
  40. package/dist/cjs/plugins/media/toolbar/index.js +49 -17
  41. package/dist/cjs/plugins/media/toolbar/utils.js +20 -2
  42. package/dist/cjs/plugins/media/utils/media-files.js +67 -1
  43. package/dist/cjs/plugins/mentions/type-ahead/index.js +39 -3
  44. package/dist/cjs/plugins/panel/index.js +2 -3
  45. package/dist/cjs/plugins/panel/message.js +47 -0
  46. package/dist/cjs/plugins/panel/toolbar.js +64 -84
  47. package/dist/cjs/plugins/panel/utils.js +2 -2
  48. package/dist/cjs/plugins/paste/linkify-md-plugin.js +3 -3
  49. package/dist/cjs/plugins/rank.js +1 -1
  50. package/dist/cjs/plugins/status/styles.js +1 -1
  51. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  52. package/dist/cjs/profiler/render-count.js +82 -0
  53. package/dist/cjs/ui/Appearance/Comment/Comment.js +6 -5
  54. package/dist/cjs/utils/react-hooks/use-component-renderer-tracking/index.js +55 -19
  55. package/dist/cjs/version-wrapper.js +1 -1
  56. package/dist/cjs/version.json +1 -1
  57. package/dist/es2019/actions/index.js +6 -28
  58. package/dist/es2019/create-editor/ErrorBoundary.js +73 -60
  59. package/dist/es2019/create-editor/ReactEditorView.js +130 -23
  60. package/dist/es2019/create-editor/create-plugins-list.js +9 -3
  61. package/dist/es2019/editor.js +74 -35
  62. package/dist/es2019/labs/next/presets/cxhtml.js +2 -1
  63. package/dist/es2019/plugins/analytics/types/enums.js +3 -1
  64. package/dist/es2019/plugins/base/index.js +4 -3
  65. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +63 -35
  66. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +2 -1
  67. package/dist/es2019/plugins/card/index.js +7 -2
  68. package/dist/es2019/plugins/card/nodeviews/embedCard.js +1 -0
  69. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -2
  70. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +12 -5
  71. package/dist/es2019/plugins/code-bidi-warning/index.js +15 -0
  72. package/dist/es2019/plugins/code-bidi-warning/plugin-key.js +2 -0
  73. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/main.js +31 -0
  74. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +88 -0
  75. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/reducer.js +3 -0
  76. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/types.js +1 -0
  77. package/dist/es2019/plugins/code-block/index.js +6 -1
  78. package/dist/es2019/plugins/code-block/nodeviews/highlighting-code-block.js +16 -4
  79. package/dist/es2019/plugins/code-block/pm-plugins/main.js +50 -39
  80. package/dist/es2019/plugins/code-block/toolbar.js +1 -1
  81. package/dist/es2019/plugins/collab-edit/ui/to-avatar.js +2 -6
  82. package/dist/es2019/plugins/emoji/styles.js +2 -0
  83. package/dist/es2019/plugins/extension/pm-plugins/main.js +1 -4
  84. package/dist/es2019/plugins/extension/toolbar.js +30 -25
  85. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +9 -4
  86. package/dist/es2019/plugins/find-replace/ui/Find.js +27 -6
  87. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  88. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  89. package/dist/es2019/plugins/hyperlink/utils.js +3 -59
  90. package/dist/es2019/plugins/index.js +2 -1
  91. package/dist/es2019/plugins/media/index.js +13 -4
  92. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +16 -7
  93. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +88 -0
  94. package/dist/es2019/plugins/media/pm-plugins/main.js +20 -11
  95. package/dist/es2019/plugins/media/toolbar/index.js +44 -15
  96. package/dist/es2019/plugins/media/toolbar/utils.js +16 -0
  97. package/dist/es2019/plugins/media/utils/media-files.js +68 -2
  98. package/dist/es2019/plugins/mentions/type-ahead/index.js +21 -2
  99. package/dist/es2019/plugins/panel/index.js +3 -4
  100. package/dist/es2019/plugins/panel/message.js +38 -0
  101. package/dist/es2019/plugins/panel/toolbar.js +52 -71
  102. package/dist/es2019/plugins/panel/utils.js +2 -2
  103. package/dist/es2019/plugins/paste/linkify-md-plugin.js +2 -2
  104. package/dist/es2019/plugins/rank.js +1 -1
  105. package/dist/es2019/plugins/status/styles.js +2 -0
  106. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  107. package/dist/es2019/profiler/render-count.js +60 -0
  108. package/dist/es2019/ui/Appearance/Comment/Comment.js +4 -2
  109. package/dist/es2019/utils/react-hooks/use-component-renderer-tracking/index.js +51 -18
  110. package/dist/es2019/version-wrapper.js +1 -1
  111. package/dist/es2019/version.json +1 -1
  112. package/dist/esm/actions/index.js +6 -24
  113. package/dist/esm/create-editor/ErrorBoundary.js +113 -78
  114. package/dist/esm/create-editor/ReactEditorView.js +146 -31
  115. package/dist/esm/create-editor/create-plugins-list.js +9 -3
  116. package/dist/esm/editor.js +100 -40
  117. package/dist/esm/labs/next/presets/cxhtml.js +2 -1
  118. package/dist/esm/plugins/analytics/types/enums.js +3 -1
  119. package/dist/esm/plugins/base/index.js +4 -3
  120. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +64 -36
  121. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -1
  122. package/dist/esm/plugins/card/index.js +13 -2
  123. package/dist/esm/plugins/card/nodeviews/embedCard.js +1 -0
  124. package/dist/esm/plugins/card/pm-plugins/main.js +7 -2
  125. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +12 -5
  126. package/dist/esm/plugins/code-bidi-warning/index.js +17 -0
  127. package/dist/esm/plugins/code-bidi-warning/plugin-key.js +2 -0
  128. package/dist/esm/plugins/code-bidi-warning/pm-plugins/main.js +30 -0
  129. package/dist/esm/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +96 -0
  130. package/dist/esm/plugins/code-bidi-warning/pm-plugins/reducer.js +3 -0
  131. package/dist/esm/plugins/code-bidi-warning/pm-plugins/types.js +1 -0
  132. package/dist/esm/plugins/code-block/index.js +10 -6
  133. package/dist/esm/plugins/code-block/nodeviews/highlighting-code-block.js +16 -5
  134. package/dist/esm/plugins/code-block/pm-plugins/main.js +11 -3
  135. package/dist/esm/plugins/code-block/toolbar.js +1 -1
  136. package/dist/esm/plugins/collab-edit/ui/to-avatar.js +4 -8
  137. package/dist/esm/plugins/emoji/styles.js +1 -1
  138. package/dist/esm/plugins/extension/pm-plugins/main.js +1 -4
  139. package/dist/esm/plugins/extension/toolbar.js +28 -23
  140. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +9 -4
  141. package/dist/esm/plugins/find-replace/ui/Find.js +27 -7
  142. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +1 -1
  143. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -4
  144. package/dist/esm/plugins/hyperlink/utils.js +3 -59
  145. package/dist/esm/plugins/index.js +2 -1
  146. package/dist/esm/plugins/media/index.js +14 -4
  147. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +24 -10
  148. package/dist/esm/plugins/media/nodeviews/mediaInline.js +147 -0
  149. package/dist/esm/plugins/media/pm-plugins/main.js +19 -11
  150. package/dist/esm/plugins/media/toolbar/index.js +47 -19
  151. package/dist/esm/plugins/media/toolbar/utils.js +15 -1
  152. package/dist/esm/plugins/media/utils/media-files.js +60 -2
  153. package/dist/esm/plugins/mentions/type-ahead/index.js +39 -3
  154. package/dist/esm/plugins/panel/index.js +3 -4
  155. package/dist/esm/plugins/panel/message.js +38 -0
  156. package/dist/esm/plugins/panel/toolbar.js +57 -77
  157. package/dist/esm/plugins/panel/utils.js +2 -2
  158. package/dist/esm/plugins/paste/linkify-md-plugin.js +2 -2
  159. package/dist/esm/plugins/rank.js +1 -1
  160. package/dist/esm/plugins/status/styles.js +1 -1
  161. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +18 -2
  162. package/dist/esm/profiler/render-count.js +57 -0
  163. package/dist/esm/ui/Appearance/Comment/Comment.js +6 -5
  164. package/dist/esm/utils/react-hooks/use-component-renderer-tracking/index.js +53 -20
  165. package/dist/esm/version-wrapper.js +1 -1
  166. package/dist/esm/version.json +1 -1
  167. package/dist/types/create-editor/ErrorBoundary.d.ts +6 -6
  168. package/dist/types/create-editor/ReactEditorView.d.ts +15 -3
  169. package/dist/types/editor.d.ts +3 -1
  170. package/dist/types/plugins/analytics/analytics-queue.d.ts +1 -1
  171. package/dist/types/plugins/analytics/index.d.ts +1 -1
  172. package/dist/types/plugins/analytics/types/enums.d.ts +4 -2
  173. package/dist/types/plugins/analytics/types/events.d.ts +7 -2
  174. package/dist/types/plugins/analytics/types/general-events.d.ts +4 -1
  175. package/dist/types/plugins/analytics/types/index.d.ts +1 -1
  176. package/dist/types/plugins/analytics/types/insert-events.d.ts +6 -1
  177. package/dist/types/plugins/analytics/types/link-tool-bar-events.d.ts +1 -0
  178. package/dist/types/plugins/base/index.d.ts +1 -0
  179. package/dist/types/plugins/base/pm-plugins/frozen-editor.d.ts +3 -2
  180. package/dist/types/plugins/card/pm-plugins/main.d.ts +2 -3
  181. package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -1
  182. package/dist/types/plugins/card/types.d.ts +6 -0
  183. package/dist/types/plugins/code-bidi-warning/index.d.ts +3 -0
  184. package/dist/types/plugins/code-bidi-warning/plugin-key.d.ts +2 -0
  185. package/dist/types/plugins/code-bidi-warning/pm-plugins/main.d.ts +3 -0
  186. package/dist/types/plugins/code-bidi-warning/pm-plugins/plugin-factory.d.ts +7 -0
  187. package/dist/types/plugins/code-bidi-warning/pm-plugins/reducer.d.ts +3 -0
  188. package/dist/types/plugins/code-bidi-warning/pm-plugins/types.d.ts +5 -0
  189. package/dist/types/plugins/code-block/nodeviews/highlighting-code-block.d.ts +11 -2
  190. package/dist/types/plugins/code-block/pm-plugins/main.d.ts +5 -1
  191. package/dist/types/plugins/collab-edit/ui/to-avatar.d.ts +1 -1
  192. package/dist/types/plugins/extension/types.d.ts +0 -2
  193. package/dist/types/plugins/extension/ui/Extension/ExtensionComponent.d.ts +2 -2
  194. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  195. package/dist/types/plugins/floating-toolbar/types.d.ts +1 -1
  196. package/dist/types/plugins/floating-toolbar/ui/Select.d.ts +1 -1
  197. package/dist/types/plugins/hyperlink/utils.d.ts +0 -21
  198. package/dist/types/plugins/index.d.ts +1 -0
  199. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/create-items.d.ts +1 -1
  200. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +27 -0
  201. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -2
  202. package/dist/types/plugins/media/toolbar/utils.d.ts +2 -0
  203. package/dist/types/plugins/media/utils/media-files.d.ts +8 -0
  204. package/dist/types/plugins/panel/message.d.ts +37 -0
  205. package/dist/types/plugins/panel/toolbar.d.ts +4 -37
  206. package/dist/types/plugins/panel/types.d.ts +1 -0
  207. package/dist/types/plugins/quick-insert/index.d.ts +1 -1
  208. package/dist/types/profiler/render-count.d.ts +14 -0
  209. package/dist/types/types/feature-flags.d.ts +17 -0
  210. package/dist/types/ui/LinkSearch/types.d.ts +1 -0
  211. package/dist/types/utils/react-hooks/use-component-renderer-tracking/index.d.ts +17 -1
  212. package/package.json +22 -19
  213. package/dist/cjs/plugins/caption/nodeviews/index.test.js +0 -135
  214. package/dist/cjs/plugins/caption/pm-plugins/keymap.test.js +0 -203
  215. package/dist/cjs/plugins/caption/pm-plugins/main.test.js +0 -141
  216. package/dist/cjs/plugins/code-block/language-list.test.js +0 -74
  217. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -101
  218. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -98
  219. package/dist/cjs/plugins/media/commands/captions.test.js +0 -149
  220. package/dist/cjs/plugins/media/commands/linking.test.js +0 -296
  221. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -50
  222. package/dist/cjs/plugins/panel/toolbar.test.js +0 -250
  223. package/dist/cjs/ui/ColorPickerButton/index.test.js +0 -123
  224. package/dist/cjs/ui/PortalProvider/index.test.js +0 -139
  225. package/dist/es2019/plugins/caption/nodeviews/index.test.js +0 -122
  226. package/dist/es2019/plugins/caption/pm-plugins/keymap.test.js +0 -193
  227. package/dist/es2019/plugins/caption/pm-plugins/main.test.js +0 -132
  228. package/dist/es2019/plugins/code-block/language-list.test.js +0 -69
  229. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -83
  230. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  231. package/dist/es2019/plugins/media/commands/captions.test.js +0 -126
  232. package/dist/es2019/plugins/media/commands/linking.test.js +0 -208
  233. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  234. package/dist/es2019/plugins/panel/toolbar.test.js +0 -200
  235. package/dist/es2019/ui/ColorPickerButton/index.test.js +0 -88
  236. package/dist/es2019/ui/PortalProvider/index.test.js +0 -115
  237. package/dist/esm/plugins/caption/nodeviews/index.test.js +0 -125
  238. package/dist/esm/plugins/caption/pm-plugins/keymap.test.js +0 -195
  239. package/dist/esm/plugins/caption/pm-plugins/main.test.js +0 -124
  240. package/dist/esm/plugins/code-block/language-list.test.js +0 -71
  241. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.test.js +0 -92
  242. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +0 -85
  243. package/dist/esm/plugins/media/commands/captions.test.js +0 -135
  244. package/dist/esm/plugins/media/commands/linking.test.js +0 -268
  245. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.test.js +0 -41
  246. package/dist/esm/plugins/panel/toolbar.test.js +0 -230
  247. package/dist/esm/ui/ColorPickerButton/index.test.js +0 -107
  248. 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
  };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _main = require("./pm-plugins/main");
9
+
10
+ var codeBidiWarning = function codeBidiWarning() {
11
+ return {
12
+ name: 'codeBidiWarning',
13
+ pmPlugins: function pmPlugins() {
14
+ return [{
15
+ name: 'codeBidiWarning',
16
+ plugin: function plugin(options) {
17
+ return (0, _main.createPlugin)(options);
18
+ }
19
+ }];
20
+ }
21
+ };
22
+ };
23
+
24
+ var _default = codeBidiWarning;
25
+ exports.default = _default;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.codeBidiWarningPluginKey = void 0;
7
+
8
+ var _prosemirrorState = require("prosemirror-state");
9
+
10
+ var codeBidiWarningPluginKey = new _prosemirrorState.PluginKey('codeBidiWarningPlugin');
11
+ exports.codeBidiWarningPluginKey = codeBidiWarningPluginKey;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createPlugin = void 0;
7
+
8
+ var _prosemirrorState = require("prosemirror-state");
9
+
10
+ var _messages = require("@atlaskit/editor-common/messages");
11
+
12
+ var _pluginKey = require("../plugin-key");
13
+
14
+ var _pluginFactory = require("./plugin-factory");
15
+
16
+ var createPlugin = function createPlugin(_ref) {
17
+ var dispatch = _ref.dispatch,
18
+ reactContext = _ref.reactContext;
19
+ var intl = reactContext().intl;
20
+ var codeBidiWarningLabel = intl.formatMessage(_messages.codeBidiWarningMessages.label);
21
+ return new _prosemirrorState.Plugin({
22
+ key: _pluginKey.codeBidiWarningPluginKey,
23
+ state: (0, _pluginFactory.createPluginState)(dispatch, function (state) {
24
+ return {
25
+ decorationSet: (0, _pluginFactory.createBidiWarningsDecorationSetFromDoc)({
26
+ doc: state.doc,
27
+ codeBidiWarningLabel: codeBidiWarningLabel
28
+ }),
29
+ codeBidiWarningLabel: codeBidiWarningLabel
30
+ };
31
+ }),
32
+ props: {
33
+ decorations: function decorations(state) {
34
+ var _getPluginState = (0, _pluginFactory.getPluginState)(state),
35
+ decorationSet = _getPluginState.decorationSet;
36
+
37
+ return decorationSet;
38
+ }
39
+ }
40
+ });
41
+ };
42
+
43
+ exports.createPlugin = createPlugin;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createBidiWarningsDecorationSetFromDoc = createBidiWarningsDecorationSetFromDoc;
9
+ exports.getPluginState = exports.createPluginState = void 0;
10
+
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+
13
+ var _react = _interopRequireDefault(require("react"));
14
+
15
+ var _reactDom = _interopRequireDefault(require("react-dom"));
16
+
17
+ var _prosemirrorView = require("prosemirror-view");
18
+
19
+ var _bidiWarning = _interopRequireDefault(require("@atlaskit/code/bidi-warning"));
20
+
21
+ var _bidiWarningDecorator = _interopRequireDefault(require("@atlaskit/code/bidi-warning-decorator"));
22
+
23
+ var _pluginStateFactory = require("../../../utils/plugin-state-factory");
24
+
25
+ var _step = require("../../../utils/step");
26
+
27
+ var _pluginKey = require("../plugin-key");
28
+
29
+ var _reducer = _interopRequireDefault(require("./reducer"));
30
+
31
+ 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; }
32
+
33
+ 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; }
34
+
35
+ var _pluginFactory = (0, _pluginStateFactory.pluginFactory)(_pluginKey.codeBidiWarningPluginKey, _reducer.default, {
36
+ onDocChanged: function onDocChanged(tr, pluginState) {
37
+ if (!tr.steps.find(_step.stepHasSlice)) {
38
+ return pluginState;
39
+ }
40
+
41
+ var newBidiWarningsDecorationSet = createBidiWarningsDecorationSetFromDoc({
42
+ doc: tr.doc,
43
+ codeBidiWarningLabel: pluginState.codeBidiWarningLabel
44
+ });
45
+ return _objectSpread(_objectSpread({}, pluginState), {}, {
46
+ decorationSet: newBidiWarningsDecorationSet
47
+ });
48
+ }
49
+ }),
50
+ createPluginState = _pluginFactory.createPluginState,
51
+ getPluginState = _pluginFactory.getPluginState;
52
+
53
+ exports.getPluginState = getPluginState;
54
+ exports.createPluginState = createPluginState;
55
+
56
+ function createBidiWarningsDecorationSetFromDoc(_ref) {
57
+ var doc = _ref.doc,
58
+ codeBidiWarningLabel = _ref.codeBidiWarningLabel;
59
+ var bidiCharactersAndTheirPositions = [];
60
+ doc.descendants(function (node, pos) {
61
+ var isTextWithCodeMark = node.type.name === 'text' && node.marks && node.marks.some(function (mark) {
62
+ return mark.type.name === 'code';
63
+ });
64
+
65
+ if (isTextWithCodeMark) {
66
+ (0, _bidiWarningDecorator.default)(node.textContent, function (_ref2) {
67
+ var bidiCharacter = _ref2.bidiCharacter,
68
+ index = _ref2.index;
69
+ bidiCharactersAndTheirPositions.push({
70
+ position: pos + index,
71
+ bidiCharacter: bidiCharacter
72
+ });
73
+ });
74
+ return false;
75
+ }
76
+
77
+ var isCodeBlock = node.type.name === 'codeBlock';
78
+
79
+ if (isCodeBlock) {
80
+ (0, _bidiWarningDecorator.default)(node.textContent, function (_ref3) {
81
+ var bidiCharacter = _ref3.bidiCharacter,
82
+ index = _ref3.index;
83
+ bidiCharactersAndTheirPositions.push({
84
+ position: pos + index + 1,
85
+ bidiCharacter: bidiCharacter
86
+ });
87
+ });
88
+ }
89
+ }); // Bidi characters are not expected to commonly appear in code snippets, so recreating the decoration set
90
+ // for documents rather than reusing existing decorations seems a reasonable performance/complexity tradeoff.
91
+
92
+ if (bidiCharactersAndTheirPositions.length === 0) {
93
+ return _prosemirrorView.DecorationSet.empty;
94
+ }
95
+
96
+ var newBidiWarningsDecorationSet = _prosemirrorView.DecorationSet.create(doc, bidiCharactersAndTheirPositions.map(function (_ref4) {
97
+ var position = _ref4.position,
98
+ bidiCharacter = _ref4.bidiCharacter;
99
+ return _prosemirrorView.Decoration.widget(position, function () {
100
+ return renderDOM(bidiCharacter, codeBidiWarningLabel);
101
+ });
102
+ }));
103
+
104
+ return newBidiWarningsDecorationSet;
105
+ }
106
+
107
+ function renderDOM(bidiCharacter, codeBidiWarningLabel) {
108
+ var element = document.createElement('span'); // Note: we use this pattern elsewhere (see highlighting code block, and drop cursor widget decoration)
109
+ // we should investigate if there is a memory leak with such usage.
110
+
111
+ _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_bidiWarning.default, {
112
+ bidiCharacter: bidiCharacter,
113
+ skipChildren: true,
114
+ label: codeBidiWarningLabel
115
+ }), element);
116
+
117
+ return element;
118
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _default = function _default(pluginState, action) {
9
+ return pluginState;
10
+ };
11
+
12
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -40,8 +40,12 @@ var codeBlockPlugin = function codeBlockPlugin() {
40
40
  pmPlugins: function pmPlugins() {
41
41
  return [{
42
42
  name: 'codeBlock',
43
- plugin: function plugin() {
44
- return (0, _main.createPlugin)(options.useLongPressSelection);
43
+ plugin: function plugin(_ref) {
44
+ var reactContext = _ref.reactContext;
45
+ return (0, _main.createPlugin)({
46
+ useLongPressSelection: options.useLongPressSelection,
47
+ reactContext: reactContext
48
+ });
45
49
  }
46
50
  }, {
47
51
  name: 'codeBlockIDEKeyBindings',
@@ -50,8 +54,8 @@ var codeBlockPlugin = function codeBlockPlugin() {
50
54
  }
51
55
  }, {
52
56
  name: 'codeBlockKeyMap',
53
- plugin: function plugin(_ref) {
54
- var schema = _ref.schema;
57
+ plugin: function plugin(_ref2) {
58
+ var schema = _ref2.schema;
55
59
  return (0, _keymaps.default)(schema);
56
60
  }
57
61
  }];
@@ -62,8 +66,8 @@ var codeBlockPlugin = function codeBlockPlugin() {
62
66
  (0, _refreshBrowserSelection.default)(props.originalTransaction, props.newEditorState);
63
67
  },
64
68
  pluginsOptions: {
65
- quickInsert: function quickInsert(_ref2) {
66
- var formatMessage = _ref2.formatMessage;
69
+ quickInsert: function quickInsert(_ref3) {
70
+ var formatMessage = _ref3.formatMessage;
67
71
  return [{
68
72
  id: 'codeblock',
69
73
  title: formatMessage(_messages.messages.codeblock),
@@ -50,7 +50,7 @@ var toDOM = function toDOM(node) {
50
50
  };
51
51
 
52
52
  var CodeBlockView = /*#__PURE__*/function () {
53
- function CodeBlockView(_node, view, getPos) {
53
+ function CodeBlockView(_node, view, getPos, codeBidiWarningOptions) {
54
54
  var _this = this;
55
55
 
56
56
  (0, _classCallCheck2.default)(this, CodeBlockView);
@@ -77,6 +77,7 @@ var CodeBlockView = /*#__PURE__*/function () {
77
77
  dom = _DOMSerializer$render.dom,
78
78
  contentDOM = _DOMSerializer$render.contentDOM;
79
79
 
80
+ this.codeBidiWarningOptions = codeBidiWarningOptions;
80
81
  this.getPos = getPos;
81
82
  this.view = view;
82
83
  this.node = _node;
@@ -130,7 +131,9 @@ var CodeBlockView = /*#__PURE__*/function () {
130
131
  _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_code.CodeBlock, {
131
132
  text: node.textContent,
132
133
  language: node.attrs.language,
133
- showLineNumbers: false
134
+ showLineNumbers: false,
135
+ codeBidiWarnings: this.codeBidiWarningOptions.enabled,
136
+ codeBidiWarningLabel: this.codeBidiWarningOptions.label
134
137
  }), highlighting);
135
138
 
136
139
  this.measure(performance.now() - start);
@@ -164,7 +167,10 @@ var CodeBlockView = /*#__PURE__*/function () {
164
167
  value: function ignoreMutation(record) {
165
168
  var _this$highlighting$co, _this$highlighting;
166
169
 
167
- return record.target === this.lineNumberGutter || record.target.parentNode === this.lineNumberGutter || ((_this$highlighting$co = (_this$highlighting = this.highlighting) === null || _this$highlighting === void 0 ? void 0 : _this$highlighting.contains(record.target)) !== null && _this$highlighting$co !== void 0 ? _this$highlighting$co : false);
170
+ var lineNumberChanges = record.target === this.lineNumberGutter || record.target.parentNode === this.lineNumberGutter;
171
+ var outsideTheCodeBlockChanges = (_this$highlighting$co = (_this$highlighting = this.highlighting) === null || _this$highlighting === void 0 ? void 0 : _this$highlighting.contains(record.target)) !== null && _this$highlighting$co !== void 0 ? _this$highlighting$co : false;
172
+ var codeBidiWarningDecorationChanges = record.type === 'attributes' && record.attributeName === 'aria-describedby';
173
+ return lineNumberChanges || outsideTheCodeBlockChanges || codeBidiWarningDecorationChanges;
168
174
  }
169
175
  }]);
170
176
  return CodeBlockView;
@@ -172,9 +178,14 @@ var CodeBlockView = /*#__PURE__*/function () {
172
178
 
173
179
  exports.CodeBlockView = CodeBlockView;
174
180
 
175
- var highlightingCodeBlockNodeView = function highlightingCodeBlockNodeView() {
181
+ var highlightingCodeBlockNodeView = function highlightingCodeBlockNodeView(_ref) {
182
+ var codeBidiWarnings = _ref.codeBidiWarnings,
183
+ codeBidiWarningLabel = _ref.codeBidiWarningLabel;
176
184
  return function (node, view, getPos) {
177
- return new CodeBlockView(node, view, getPos);
185
+ return new CodeBlockView(node, view, getPos, {
186
+ enabled: codeBidiWarnings,
187
+ label: codeBidiWarningLabel
188
+ });
178
189
  };
179
190
  };
180
191