@atlaskit/editor-common 84.5.0 → 85.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 (66) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/afm-jira/tsconfig.json +3 -0
  3. package/dist/cjs/analytics/types/enums.js +2 -0
  4. package/dist/cjs/element-browser/components/ElementList/ElementList.js +27 -91
  5. package/dist/cjs/extensibility/extensionNodeView.js +1 -2
  6. package/dist/cjs/keymaps/keymap.js +25 -43
  7. package/dist/cjs/link/ConfigureLinkOverlay/Dropdown.js +34 -9
  8. package/dist/cjs/link/ConfigureLinkOverlay/index.js +15 -5
  9. package/dist/cjs/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +46 -0
  10. package/dist/cjs/messages/table.js +30 -0
  11. package/dist/cjs/monitoring/error.js +1 -1
  12. package/dist/cjs/react-node-view/getInlineNodeViewProducer.js +2 -4
  13. package/dist/cjs/react-node-view/index.js +4 -10
  14. package/dist/cjs/selection-based-node-view/SelectionBasedNodeView.js +2 -5
  15. package/dist/cjs/ui/DropList/index.js +1 -1
  16. package/dist/es2019/analytics/types/enums.js +2 -0
  17. package/dist/es2019/element-browser/components/ElementList/ElementList.js +7 -70
  18. package/dist/es2019/extensibility/extensionNodeView.js +1 -2
  19. package/dist/es2019/keymaps/keymap.js +25 -43
  20. package/dist/es2019/link/ConfigureLinkOverlay/Dropdown.js +33 -7
  21. package/dist/es2019/link/ConfigureLinkOverlay/index.js +16 -5
  22. package/dist/es2019/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +39 -0
  23. package/dist/es2019/messages/table.js +30 -0
  24. package/dist/es2019/monitoring/error.js +1 -1
  25. package/dist/es2019/react-node-view/getInlineNodeViewProducer.js +2 -4
  26. package/dist/es2019/react-node-view/index.js +5 -7
  27. package/dist/es2019/selection-based-node-view/SelectionBasedNodeView.js +3 -2
  28. package/dist/es2019/ui/DropList/index.js +1 -1
  29. package/dist/esm/analytics/types/enums.js +2 -0
  30. package/dist/esm/element-browser/components/ElementList/ElementList.js +27 -91
  31. package/dist/esm/extensibility/extensionNodeView.js +1 -2
  32. package/dist/esm/keymaps/keymap.js +25 -43
  33. package/dist/esm/link/ConfigureLinkOverlay/Dropdown.js +34 -9
  34. package/dist/esm/link/ConfigureLinkOverlay/index.js +15 -5
  35. package/dist/esm/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +40 -0
  36. package/dist/esm/messages/table.js +30 -0
  37. package/dist/esm/monitoring/error.js +1 -1
  38. package/dist/esm/react-node-view/getInlineNodeViewProducer.js +2 -4
  39. package/dist/esm/react-node-view/index.js +4 -10
  40. package/dist/esm/selection-based-node-view/SelectionBasedNodeView.js +3 -5
  41. package/dist/esm/ui/DropList/index.js +1 -1
  42. package/dist/types/analytics/types/enums.d.ts +3 -1
  43. package/dist/types/extensibility/extensionNodeView.d.ts +1 -2
  44. package/dist/types/link/ConfigureLinkOverlay/Dropdown.d.ts +5 -4
  45. package/dist/types/link/ConfigureLinkOverlay/index.d.ts +2 -2
  46. package/dist/types/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.d.ts +5 -0
  47. package/dist/types/messages/table.d.ts +30 -0
  48. package/dist/types/react-node-view/index.d.ts +2 -5
  49. package/dist/types/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -2
  50. package/dist/types/types/plugin-factory.d.ts +1 -2
  51. package/dist/types-ts4.5/analytics/types/enums.d.ts +3 -1
  52. package/dist/types-ts4.5/extensibility/extensionNodeView.d.ts +1 -2
  53. package/dist/types-ts4.5/link/ConfigureLinkOverlay/Dropdown.d.ts +5 -4
  54. package/dist/types-ts4.5/link/ConfigureLinkOverlay/index.d.ts +2 -2
  55. package/dist/types-ts4.5/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.d.ts +5 -0
  56. package/dist/types-ts4.5/messages/table.d.ts +30 -0
  57. package/dist/types-ts4.5/react-node-view/index.d.ts +2 -5
  58. package/dist/types-ts4.5/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -2
  59. package/dist/types-ts4.5/types/plugin-factory.d.ts +1 -2
  60. package/package.json +6 -14
  61. package/dist/cjs/ui/PortalProvider/index.js +0 -235
  62. package/dist/es2019/ui/PortalProvider/index.js +0 -171
  63. package/dist/esm/ui/PortalProvider/index.js +0 -229
  64. package/dist/types/ui/PortalProvider/index.d.ts +0 -48
  65. package/dist/types-ts4.5/ui/PortalProvider/index.d.ts +0 -48
  66. package/portal-provider/package.json +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 85.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#119966](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119966)
8
+ [`596ad24e38929`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/596ad24e38929) -
9
+ Clean up typescript references to LegacyPortalProviderAPI
10
+
11
+ ### Minor Changes
12
+
13
+ - [#120060](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/120060)
14
+ [`932c75860b5c2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/932c75860b5c2) -
15
+ Add card plugin analytics for live pages
16
+
17
+ ### Patch Changes
18
+
19
+ - [#119412](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119412)
20
+ [`a714be7c47d68`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a714be7c47d68) -
21
+ [ux] [ED-23047] Remove FF platform.editor.text-alignment-keyboard-shortcuts and make feature
22
+ flagged functionality default
23
+ - Updated dependencies
24
+
25
+ ## 84.5.1
26
+
27
+ ### Patch Changes
28
+
29
+ - [#119559](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119559)
30
+ [`7c1b0299f4fba`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7c1b0299f4fba) -
31
+ ED-22510:Screen reader support for column/row selection and up/down movements
32
+ - [#119860](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119860)
33
+ [`2f8a2041b5477`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2f8a2041b5477) -
34
+ [ECA11Y-185] Removed platform.editor.a11y-element-browser FF
35
+ - Updated dependencies
36
+
3
37
  ## 84.5.0
4
38
 
5
39
  ### Minor Changes
@@ -71,6 +71,9 @@
71
71
  {
72
72
  "path": "../../../design-system/icon-object/afm-jira/tsconfig.json"
73
73
  },
74
+ {
75
+ "path": "../../../linking-platform/link-datasource/afm-jira/tsconfig.json"
76
+ },
74
77
  {
75
78
  "path": "../../../linking-platform/link-picker/afm-jira/tsconfig.json"
76
79
  },
@@ -241,6 +241,7 @@ var ACTION_SUBJECT = exports.ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJ
241
241
  ACTION_SUBJECT["DRAG"] = "drag";
242
242
  ACTION_SUBJECT["ELEMENT"] = "element";
243
243
  ACTION_SUBJECT["CONTEXT_MENU"] = "contextMenu";
244
+ ACTION_SUBJECT["INLINE_DIALOG"] = "inlineDialog";
244
245
  return ACTION_SUBJECT;
245
246
  }({});
246
247
  var ACTION_SUBJECT_ID = exports.ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
@@ -355,6 +356,7 @@ var ACTION_SUBJECT_ID = exports.ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTIO
355
356
  ACTION_SUBJECT_ID["SAVE"] = "save";
356
357
  ACTION_SUBJECT_ID["SECTION"] = "section";
357
358
  ACTION_SUBJECT_ID["SMART_LINK"] = "smartLink";
359
+ ACTION_SUBJECT_ID["SMART_LINK_TOOLBAR"] = "smartLinkToolbar";
358
360
  ACTION_SUBJECT_ID["STATUS"] = "status";
359
361
  ACTION_SUBJECT_ID["SYMBOL"] = "symbol";
360
362
  ACTION_SUBJECT_ID["TABLE"] = "table";
@@ -15,12 +15,10 @@ var _react2 = require("@emotion/react");
15
15
  var _reactVirtualized = require("react-virtualized");
16
16
  var _AutoSizer = require("react-virtualized/dist/commonjs/AutoSizer");
17
17
  var _CellMeasurer = require("react-virtualized/dist/commonjs/CellMeasurer");
18
- var _Collection = require("react-virtualized/dist/commonjs/Collection");
19
18
  var _analyticsNext = require("@atlaskit/analytics-next");
20
19
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
21
20
  var _shortcut = require("@atlaskit/editor-shared-styles/shortcut");
22
21
  var _menu = require("@atlaskit/menu");
23
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
24
22
  var _colors = require("@atlaskit/theme/colors");
25
23
  var _constants = require("@atlaskit/theme/constants");
26
24
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
@@ -30,7 +28,6 @@ var _constants2 = require("../../constants");
30
28
  var _useContainerWidth2 = _interopRequireDefault(require("../../hooks/use-container-width"));
31
29
  var _useFocus = _interopRequireDefault(require("../../hooks/use-focus"));
32
30
  var _types = require("../../types");
33
- var _cellSizeAndPositionGetter = _interopRequireDefault(require("./cellSizeAndPositionGetter"));
34
31
  var _EmptyState = _interopRequireDefault(require("./EmptyState"));
35
32
  var _utils = require("./utils");
36
33
  var _excluded = ["items", "mode", "selectedItemIndex", "focusedItemIndex", "columnCount", "setColumnCount", "createAnalyticsEvent", "emptyStateHandler", "selectedCategory", "selectedCategoryIndex", "searchTerm", "setFocusedCategoryIndex", "setFocusedItemIndex"];
@@ -123,58 +120,11 @@ function ElementList(_ref) {
123
120
  };
124
121
  var cellRenderer = (0, _react.useMemo)(function () {
125
122
  return function (_ref3) {
126
- var index = _ref3.index,
123
+ var columnIndex = _ref3.columnIndex,
127
124
  key = _ref3.key,
125
+ parent = _ref3.parent,
126
+ rowIndex = _ref3.rowIndex,
128
127
  style = _ref3.style;
129
- if (items[index] == null) {
130
- return;
131
- }
132
- return (0, _react2.jsx)("div", {
133
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
134
- style: style,
135
- key: key
136
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
137
- ,
138
- className: "element-item-wrapper",
139
- css: elementItemWrapper,
140
- onKeyDown: function onKeyDown(e) {
141
- if (e.key === 'Tab') {
142
- if (e.shiftKey && index === 0) {
143
- if (setFocusedCategoryIndex) {
144
- if (!!selectedCategoryIndex) {
145
- setFocusedCategoryIndex(selectedCategoryIndex);
146
- } else {
147
- setFocusedCategoryIndex(0);
148
- }
149
- e.preventDefault();
150
- }
151
- }
152
- // before focus jumps from elements list we need to rerender react-virtualized collection.
153
- // Otherwise on the next render 'scrollToCell' will have same cached value
154
- // and collection will not be scrolled to top.
155
- // So Tab press on category will not work anymore due to invisible 1-t element.
156
- else if (index === items.length - 2) {
157
- setFocusedItemIndex(items.length - 1);
158
- }
159
- }
160
- }
161
- }, (0, _react2.jsx)(MemoizedElementItem, (0, _extends2.default)({
162
- inlineMode: !fullMode,
163
- index: index,
164
- item: items[index],
165
- selected: selectedItemIndex === index,
166
- focus: focusedItemIndex === index,
167
- setFocusedItemIndex: setFocusedItemIndex
168
- }, props)));
169
- };
170
- }, [items, fullMode, selectedItemIndex, focusedItemIndex, selectedCategoryIndex, setFocusedCategoryIndex, setFocusedItemIndex, props]);
171
- var gridCellRenderer = (0, _react.useMemo)(function () {
172
- return function (_ref4) {
173
- var columnIndex = _ref4.columnIndex,
174
- key = _ref4.key,
175
- parent = _ref4.parent,
176
- rowIndex = _ref4.rowIndex,
177
- style = _ref4.style;
178
128
  var index = rowIndex * columnCount + columnIndex;
179
129
  if (items[index] == null) {
180
130
  return;
@@ -205,9 +155,9 @@ function ElementList(_ref) {
205
155
  e.preventDefault();
206
156
  }
207
157
  }
208
- // before focus jumps from elements list we need to rerender react-virtualized collection.
158
+ // before focus jumps from elements list we need to rerender react-virtualized grid.
209
159
  // Otherwise on the next render 'scrollToCell' will have same cached value
210
- // and collection will not be scrolled to top.
160
+ // and grid will not be scrolled to top.
211
161
  // So Tab press on category will not work anymore due to invisible 1-t element.
212
162
  else if (index === items.length - 2) {
213
163
  setFocusedItemIndex(items.length - 1);
@@ -241,10 +191,10 @@ function ElementList(_ref) {
241
191
  onExternalLinkClick: onExternalLinkClick
242
192
  }) : (0, _react2.jsx)(_react.Fragment, null, containerWidth > 0 && (0, _react2.jsx)(_AutoSizer.AutoSizer, {
243
193
  disableWidth: true
244
- }, function (_ref5) {
245
- var height = _ref5.height;
246
- return (0, _platformFeatureFlags.fg)('platform.editor.a11y-element-browser') ? (0, _react2.jsx)(_reactVirtualized.Grid, (0, _extends2.default)({
247
- cellRenderer: gridCellRenderer,
194
+ }, function (_ref4) {
195
+ var height = _ref4.height;
196
+ return (0, _react2.jsx)(_reactVirtualized.Grid, (0, _extends2.default)({
197
+ cellRenderer: cellRenderer,
248
198
  height: height,
249
199
  width: containerWidth - _constants2.ELEMENT_LIST_PADDING * 2 // containerWidth - padding on Left/Right (for focus outline)
250
200
  /**
@@ -261,33 +211,19 @@ function ElementList(_ref) {
261
211
  deferredMeasurementCache: cache
262
212
  }, selectedItemIndex !== undefined && {
263
213
  scrollToRow: Math.floor(selectedItemIndex / columnCount)
264
- })) : (0, _react2.jsx)(_Collection.Collection, {
265
- cellCount: items.length,
266
- cellRenderer: cellRenderer,
267
- cellSizeAndPositionGetter: (0, _cellSizeAndPositionGetter.default)(containerWidth - _constants2.ELEMENT_LIST_PADDING * 2, scrollbarWidth),
268
- height: height,
269
- width: containerWidth - _constants2.ELEMENT_LIST_PADDING * 2 // containerWidth - padding on Left/Right (for focus outline)
270
- /**
271
- * Refresh Collection on WidthObserver value change.
272
- * Length of the items used to force re-render to solve Firefox bug with react-virtualized retaining
273
- * scroll position after updating the data. If new data has different number of cells, a re-render
274
- * is forced to prevent the scroll position render bug.
275
- */,
276
- key: containerWidth + items.length,
277
- scrollToCell: selectedItemIndex
278
- });
214
+ }));
279
215
  }))));
280
216
  }
281
217
  var MemoizedElementItem = /*#__PURE__*/(0, _react.memo)(ElementItem);
282
218
  MemoizedElementItem.displayName = 'MemoizedElementItem';
283
- function ElementItem(_ref6) {
284
- var inlineMode = _ref6.inlineMode,
285
- selected = _ref6.selected,
286
- item = _ref6.item,
287
- index = _ref6.index,
288
- onInsertItem = _ref6.onInsertItem,
289
- focus = _ref6.focus,
290
- setFocusedItemIndex = _ref6.setFocusedItemIndex;
219
+ function ElementItem(_ref5) {
220
+ var inlineMode = _ref5.inlineMode,
221
+ selected = _ref5.selected,
222
+ item = _ref5.item,
223
+ index = _ref5.index,
224
+ onInsertItem = _ref5.onInsertItem,
225
+ focus = _ref5.focus,
226
+ setFocusedItemIndex = _ref5.setFocusedItemIndex;
291
227
  var ref = (0, _useFocus.default)(focus);
292
228
 
293
229
  /**
@@ -352,17 +288,17 @@ function ElementItem(_ref6) {
352
288
  var itemStyleOverrides = {
353
289
  alignItems: 'flex-start'
354
290
  };
355
- var ElementBefore = /*#__PURE__*/(0, _react.memo)(function (_ref7) {
356
- var icon = _ref7.icon,
357
- title = _ref7.title;
291
+ var ElementBefore = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
292
+ var icon = _ref6.icon,
293
+ title = _ref6.title;
358
294
  return (0, _react2.jsx)("div", {
359
295
  css: [itemIcon, itemIconStyle]
360
296
  }, icon ? icon() : (0, _react2.jsx)(_quickInsert.IconFallback, null));
361
297
  });
362
- var ItemContent = /*#__PURE__*/(0, _react.memo)(function (_ref8) {
363
- var title = _ref8.title,
364
- description = _ref8.description,
365
- keyshortcut = _ref8.keyshortcut;
298
+ var ItemContent = /*#__PURE__*/(0, _react.memo)(function (_ref7) {
299
+ var title = _ref7.title,
300
+ description = _ref7.description,
301
+ keyshortcut = _ref7.keyshortcut;
366
302
  return (
367
303
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
368
304
  (0, _react2.jsx)("div", {
@@ -391,7 +327,7 @@ var elementItemsWrapper = (0, _react2.css)({
391
327
  overflow: 'hidden',
392
328
  padding: "var(--ds-space-025, 2px)",
393
329
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
394
- '.ReactVirtualized__Collection, .ReactVirtualized__Grid': {
330
+ '.ReactVirtualized__Grid': {
395
331
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
396
332
  borderRadius: '3px',
397
333
  outline: 'none',
@@ -401,7 +337,7 @@ var elementItemsWrapper = (0, _react2.css)({
401
337
  }
402
338
  },
403
339
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
404
- '.ReactVirtualized__Collection__innerScrollContainer, .ReactVirtualized__Grid__innerScrollContainer': {
340
+ '.ReactVirtualized__Grid__innerScrollContainer': {
405
341
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
406
342
  "div[class='element-item-wrapper']:last-child": {
407
343
  paddingBottom: "var(--ds-space-050, 4px)"
@@ -82,13 +82,12 @@ var ExtensionNode = exports.ExtensionNode = /*#__PURE__*/function (_ReactNodeVie
82
82
  }(_reactNodeView.default);
83
83
  function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags) {
84
84
  return function (node, view, getPos) {
85
- var hasIntlContext = true;
86
85
  return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
87
86
  providerFactory: providerFactory,
88
87
  extensionHandlers: extensionHandlers,
89
88
  extensionNodeViewOptions: extensionNodeViewOptions,
90
89
  pluginInjectionApi: pluginInjectionApi,
91
90
  macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags
92
- }, undefined, undefined, undefined, hasIntlContext).init();
91
+ }).init();
93
92
  };
94
93
  }
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.keymap = keymap;
7
7
  var _w3cKeyname = require("w3c-keyname");
8
8
  var _keymap = require("@atlaskit/editor-prosemirror/keymap");
9
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
9
  var _safePlugin = require("../safe-plugin");
11
10
  /**
12
11
  * A workaround for mostly Cyrillic but should have a positive affect
@@ -19,52 +18,35 @@ function keymap(bindings) {
19
18
  return new _safePlugin.SafePlugin({
20
19
  props: {
21
20
  handleKeyDown: function handleKeyDown(view, event) {
22
- if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.text-alignment-keyboard-shortcuts')) {
23
- var name = (0, _w3cKeyname.keyName)(event);
24
- var keyboardEvent = event;
21
+ var name = (0, _w3cKeyname.keyName)(event);
22
+ var keyboardEvent = event;
25
23
 
26
- // We will try to bypass the keycode only if any of mod keys are pressed,
27
- // to allow users to use non-latin and Dead characters.
28
- var isModKeyPressed = event.ctrlKey || event.metaKey;
24
+ // We will try to bypass the keycode only if any of mod keys are pressed,
25
+ // to allow users to use non-latin and Dead characters.
26
+ var isModKeyPressed = event.ctrlKey || event.metaKey;
29
27
 
30
- // Check the unicode of the character to assert that it's not an ASCII character.
31
- // These are characters outside latin's range.
32
- var isNonLatinKey = name.length === 1 && /[^\u0000-\u007f]/.test(name);
28
+ // Check the unicode of the character to assert that it's not an ASCII character.
29
+ // These are characters outside latin's range.
30
+ var isNonLatinKey = name.length === 1 && /[^\u0000-\u007f]/.test(name);
33
31
 
34
- // The `Dead` key is a key that combines with a following key to produce a combined character.
35
- // It will have `even.key === 'Dead'` in some browsers but the `keyCode` will be the same as in a qwerty-keyboard.
36
- // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key and https://en.wikipedia.org/wiki/Dead_key
37
- var isDeadKey = name === 'Dead';
38
- if (isModKeyPressed && (isNonLatinKey || isDeadKey)) {
39
- keyboardEvent = new KeyboardEvent(event.type, {
40
- // FIXME: The event.keyCode is deprecated (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode),
41
- // and could be removed in any time, but the w3c-keyname library doesn't provide a way to get
42
- // a key by event.code.
43
- key: _w3cKeyname.base[event.keyCode],
44
- code: event.code,
45
- ctrlKey: event.ctrlKey,
46
- altKey: event.altKey,
47
- metaKey: event.metaKey,
48
- shiftKey: event.shiftKey
49
- });
50
- }
51
- return (0, _keymap.keydownHandler)(bindings)(view, keyboardEvent);
52
- } else {
53
- var _name = (0, _w3cKeyname.keyName)(event);
54
- var _keyboardEvent = event;
55
- if (event.ctrlKey && _name.length === 1 &&
56
- // Check the unicode of the character to
57
- // assert that its not an ASCII character.
58
- // These are characters outside Latin's range.
59
- /[^\u0000-\u007f]/.test(_name)) {
60
- _keyboardEvent = new KeyboardEvent('keydown', {
61
- key: _w3cKeyname.base[event.keyCode],
62
- code: event.code,
63
- ctrlKey: true
64
- });
65
- }
66
- return (0, _keymap.keydownHandler)(bindings)(view, _keyboardEvent);
32
+ // The `Dead` key is a key that combines with a following key to produce a combined character.
33
+ // It will have `even.key === 'Dead'` in some browsers but the `keyCode` will be the same as in a qwerty-keyboard.
34
+ // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key and https://en.wikipedia.org/wiki/Dead_key
35
+ var isDeadKey = name === 'Dead';
36
+ if (isModKeyPressed && (isNonLatinKey || isDeadKey)) {
37
+ keyboardEvent = new KeyboardEvent(event.type, {
38
+ // FIXME: The event.keyCode is deprecated (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode),
39
+ // and could be removed in any time, but the w3c-keyname library doesn't provide a way to get
40
+ // a key by event.code.
41
+ key: _w3cKeyname.base[event.keyCode],
42
+ code: event.code,
43
+ ctrlKey: event.ctrlKey,
44
+ altKey: event.altKey,
45
+ metaKey: event.metaKey,
46
+ shiftKey: event.shiftKey
47
+ });
67
48
  }
49
+ return (0, _keymap.keydownHandler)(bindings)(view, keyboardEvent);
68
50
  }
69
51
  }
70
52
  });
@@ -11,31 +11,48 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
11
11
  var _react = require("react");
12
12
  var _react2 = require("@emotion/react");
13
13
  var _reactIntlNext = require("react-intl-next");
14
+ var _analyticsNext = require("@atlaskit/analytics-next");
14
15
  var _dropdownMenu = _interopRequireWildcard(require("@atlaskit/dropdown-menu"));
15
16
  var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
16
17
  var _preferences = _interopRequireDefault(require("@atlaskit/icon/glyph/preferences"));
17
18
  var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
18
19
  var _messages = require("../../messages");
19
20
  var _StyledButton = require("./StyledButton");
20
- var _excluded = ["triggerRef"];
21
+ var _useLinkOverlayAnalyticsEvents = require("./useLinkOverlayAnalyticsEvents");
22
+ var _excluded = ["onClick", "triggerRef"];
21
23
  /** @jsx jsx */
22
24
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
23
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
+ var SMALL_LINK_TOOLBAR_ANALYTICS_SOURCE = 'smallLinkToolbar';
25
28
  var Dropdown = function Dropdown(_ref) {
26
- var testId = _ref.testId,
27
- onDropdownChange = _ref.onDropdownChange;
29
+ var onDropdownChange = _ref.onDropdownChange,
30
+ testId = _ref.testId;
28
31
  var _useIntl = (0, _reactIntlNext.useIntl)(),
29
32
  formatMessage = _useIntl.formatMessage;
30
33
  var configureLinkLabel = formatMessage(_messages.cardMessages.inlineConfigureLink);
31
34
  var goToLinkLabel = formatMessage(_messages.cardMessages.inlineGoToLink);
35
+ var _useLinkOverlayAnalyt = (0, _useLinkOverlayAnalyticsEvents.useLinkOverlayAnalyticsEvents)(),
36
+ fireActionClickEvent = _useLinkOverlayAnalyt.fireActionClickEvent,
37
+ fireLinkClickEvent = _useLinkOverlayAnalyt.fireLinkClickEvent,
38
+ fireToolbarViewEvent = _useLinkOverlayAnalyt.fireToolbarViewEvent;
32
39
  var onOpenChange = (0, _react.useCallback)(function (_ref2) {
33
40
  var isOpen = _ref2.isOpen;
34
41
  onDropdownChange === null || onDropdownChange === void 0 || onDropdownChange(isOpen);
35
- }, [onDropdownChange]);
42
+ if (isOpen) {
43
+ fireToolbarViewEvent();
44
+ }
45
+ }, [fireToolbarViewEvent, onDropdownChange]);
46
+ var onGoToLinkClick = (0, _react.useCallback)(function () {
47
+ fireActionClickEvent('goToLink');
48
+ }, [fireActionClickEvent]);
49
+ var onConfigureClick = (0, _react.useCallback)(function () {
50
+ fireActionClickEvent('configureLink');
51
+ }, [fireActionClickEvent]);
36
52
  return (0, _react2.jsx)(_dropdownMenu.default, {
37
53
  trigger: function trigger(_ref3) {
38
- var triggerRef = _ref3.triggerRef,
54
+ var _onClick = _ref3.onClick,
55
+ triggerRef = _ref3.triggerRef,
39
56
  props = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
40
57
  return (0, _react2.jsx)(_StyledButton.StyledButton, (0, _extends2.default)({
41
58
  innerRef: triggerRef
@@ -43,7 +60,11 @@ var Dropdown = function Dropdown(_ref) {
43
60
  iconBefore: (0, _react2.jsx)(_chevronDown.default, {
44
61
  label: configureLinkLabel,
45
62
  size: 'small'
46
- })
63
+ }),
64
+ onClick: function onClick(e) {
65
+ _onClick === null || _onClick === void 0 || _onClick(e);
66
+ fireLinkClickEvent();
67
+ }
47
68
  }));
48
69
  },
49
70
  testId: "".concat(testId, "-dropdown"),
@@ -52,12 +73,16 @@ var Dropdown = function Dropdown(_ref) {
52
73
  elemBefore: (0, _react2.jsx)(_shortcut.default, {
53
74
  label: goToLinkLabel,
54
75
  size: 'medium'
55
- })
76
+ }),
77
+ onClick: onGoToLinkClick
56
78
  }, goToLinkLabel), (0, _react2.jsx)(_dropdownMenu.DropdownItem, {
57
79
  elemBefore: (0, _react2.jsx)(_preferences.default, {
58
80
  label: configureLinkLabel,
59
81
  size: 'medium'
60
- })
82
+ }),
83
+ onClick: onConfigureClick
61
84
  }, configureLinkLabel)));
62
85
  };
63
- var _default = exports.default = Dropdown;
86
+ var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)({
87
+ source: SMALL_LINK_TOOLBAR_ANALYTICS_SOURCE
88
+ })(Dropdown);
@@ -9,6 +9,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
9
9
  var _react = require("react");
10
10
  var _react2 = require("@emotion/react");
11
11
  var _reactIntlNext = require("react-intl-next");
12
+ var _analyticsNext = require("@atlaskit/analytics-next");
12
13
  var _state = require("@atlaskit/editor-prosemirror/state");
13
14
  var _preferences = _interopRequireDefault(require("@atlaskit/icon/glyph/preferences"));
14
15
  var _colors = require("@atlaskit/theme/colors");
@@ -17,6 +18,7 @@ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
17
18
  var _messages = require("../../messages");
18
19
  var _Dropdown = _interopRequireDefault(require("./Dropdown"));
19
20
  var _StyledButton = require("./StyledButton");
21
+ var _useLinkOverlayAnalyticsEvents = require("./useLinkOverlayAnalyticsEvents");
20
22
  /** @jsx jsx */
21
23
 
22
24
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
@@ -31,7 +33,7 @@ var buttonWrapperStyles = (0, _react2.css)({
31
33
  borderRadius: "var(--ds-border-radius, 3px)"
32
34
  });
33
35
  var showDropdownThresholdPx = 50;
34
- var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
36
+ var OverlayButton = exports.OverlayButton = (0, _analyticsNext.withAnalyticsContext)()(function (_ref) {
35
37
  var _docNode$nodeSize;
36
38
  var editorView = _ref.editorView,
37
39
  _ref$testId = _ref.testId,
@@ -46,6 +48,9 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
46
48
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
47
49
  showDropdown = _useState2[0],
48
50
  setShowDropdown = _useState2[1];
51
+ var _useLinkOverlayAnalyt = (0, _useLinkOverlayAnalyticsEvents.useLinkOverlayAnalyticsEvents)(),
52
+ fireLinkClickEvent = _useLinkOverlayAnalyt.fireLinkClickEvent,
53
+ fireActionClickEvent = _useLinkOverlayAnalyt.fireActionClickEvent;
49
54
  (0, _react.useLayoutEffect)(function () {
50
55
  var _domNode;
51
56
  var domNode = editorView.nodeDOM(targetElementPos);
@@ -63,7 +68,7 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
63
68
  var docNode = editorView.state.doc.nodeAt(targetElementPos);
64
69
  var nodeEnd = targetElementPos + ((_docNode$nodeSize = docNode === null || docNode === void 0 ? void 0 : docNode.nodeSize) !== null && _docNode$nodeSize !== void 0 ? _docNode$nodeSize : 0);
65
70
  var isText = docNode === null || docNode === void 0 ? void 0 : docNode.isText;
66
- var handleClick = (0, _react.useCallback)(function () {
71
+ var handleConfigureClick = (0, _react.useCallback)(function () {
67
72
  var tr = editorView.state.tr;
68
73
  if (isText) {
69
74
  tr.setSelection(_state.TextSelection.create(tr.doc, targetElementPos, Math.min(nodeEnd, tr.doc.nodeSize)));
@@ -71,7 +76,12 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
71
76
  tr.setSelection(_state.NodeSelection.create(tr.doc, targetElementPos));
72
77
  }
73
78
  editorView.dispatch(tr);
74
- }, [isText, editorView, nodeEnd, targetElementPos]);
79
+ }, [editorView, isText, targetElementPos, nodeEnd]);
80
+ var handleConfigureClickWithAnalytics = (0, _react.useCallback)(function () {
81
+ fireLinkClickEvent();
82
+ fireActionClickEvent('configureLink');
83
+ handleConfigureClick();
84
+ }, [fireActionClickEvent, fireLinkClickEvent, handleConfigureClick]);
75
85
  var _editorView$state$sel = editorView.state.selection,
76
86
  from = _editorView$state$sel.from,
77
87
  to = _editorView$state$sel.to;
@@ -90,11 +100,11 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
90
100
  hideTooltipOnClick: true,
91
101
  testId: "".concat(testId, "-tooltip")
92
102
  }, (0, _react2.jsx)(_StyledButton.StyledButton, {
93
- onClick: handleClick,
103
+ onClick: handleConfigureClickWithAnalytics,
94
104
  iconBefore: (0, _react2.jsx)(_preferences.default, {
95
105
  label: configureLinkLabel,
96
106
  size: "small",
97
107
  testId: "".concat(testId, "-configure-icon")
98
108
  })
99
109
  })));
100
- };
110
+ });
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLinkOverlayAnalyticsEvents = void 0;
7
+ var _react = require("react");
8
+ var _analyticsListeners = require("@atlaskit/analytics-listeners");
9
+ var _analyticsNext = require("@atlaskit/analytics-next");
10
+ var _analytics = require("../../analytics");
11
+ var useLinkOverlayAnalyticsEvents = exports.useLinkOverlayAnalyticsEvents = function useLinkOverlayAnalyticsEvents() {
12
+ var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
13
+ createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
14
+ return (0, _react.useMemo)(function () {
15
+ return {
16
+ fireActionClickEvent: function fireActionClickEvent(linkAction) {
17
+ createAnalyticsEvent({
18
+ action: _analytics.ACTION.CLICKED,
19
+ actionSubject: _analytics.ACTION_SUBJECT.BUTTON,
20
+ eventType: _analytics.EVENT_TYPE.UI,
21
+ attributes: {
22
+ action: linkAction
23
+ }
24
+ }).fire(_analyticsListeners.FabricChannel.media);
25
+ },
26
+ fireLinkClickEvent: function fireLinkClickEvent() {
27
+ createAnalyticsEvent({
28
+ action: _analytics.ACTION.CLICKED,
29
+ actionSubject: _analytics.ACTION_SUBJECT.LINK,
30
+ eventType: _analytics.EVENT_TYPE.UI
31
+ }).fire(_analyticsListeners.FabricChannel.media);
32
+ },
33
+ fireToolbarViewEvent: function fireToolbarViewEvent() {
34
+ createAnalyticsEvent({
35
+ action: _analytics.ACTION.VIEWED,
36
+ actionSubject: _analytics.ACTION_SUBJECT.INLINE_DIALOG,
37
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SMART_LINK_TOOLBAR,
38
+ eventType: _analytics.EVENT_TYPE.SCREEN,
39
+ attributes: {
40
+ linkType: 'smallLink'
41
+ }
42
+ }).fire(_analyticsListeners.FabricChannel.media);
43
+ }
44
+ };
45
+ }, [createAnalyticsEvent]);
46
+ };
@@ -131,6 +131,21 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
131
131
  defaultMessage: '{count, plural, one {The row has been} other {{count} rows have been}} removed',
132
132
  description: 'Assistive message following the removal of row(s)'
133
133
  },
134
+ rowSelected: {
135
+ id: 'fabric.editor.rowSelected',
136
+ defaultMessage: 'Row {index} of {total} selected',
137
+ description: 'Assistive message following the selection of a row'
138
+ },
139
+ rowMovedUp: {
140
+ id: 'fabric.editor.rowMovedUp',
141
+ defaultMessage: 'Row moved up to {index} of {total}',
142
+ description: 'Assistive message following the upward movement of a row'
143
+ },
144
+ rowMovedDown: {
145
+ id: 'fabric.editor.rowMovedDown',
146
+ defaultMessage: 'Row moved down to {index} of {total}',
147
+ description: 'Assistive message following the downward movement of a row'
148
+ },
134
149
  columnsAreInserted: {
135
150
  id: 'fabric.editor.columnsAreInserted',
136
151
  defaultMessage: '{count, plural, one {A column has been} other {{count} columns have been}} inserted',
@@ -141,6 +156,21 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
141
156
  defaultMessage: '{count, plural, one {The column has been} other {{count} columns have been}} removed',
142
157
  description: 'Assistive message following the removal of column(s)'
143
158
  },
159
+ columnSelected: {
160
+ id: 'fabric.editor.columnSelected',
161
+ defaultMessage: 'Column {index} of {total} selected',
162
+ description: 'Assistive message following the selection of a column'
163
+ },
164
+ columnMovedLeft: {
165
+ id: 'fabric.editor.columnMovedLeft',
166
+ defaultMessage: 'Column moved left to {index} of {total}',
167
+ description: 'Assistive message following the left movement of a column'
168
+ },
169
+ columnMovedRight: {
170
+ id: 'fabric.editor.columnMovedRight',
171
+ defaultMessage: 'Column moved right to {index} of {total}',
172
+ description: 'Assistive message following the right movement of a column'
173
+ },
144
174
  cellOptions: {
145
175
  id: 'fabric.editor.cellOptions',
146
176
  defaultMessage: 'Cell options',
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
19
19
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
20
- var packageVersion = "84.5.0";
20
+ var packageVersion = "85.0.0";
21
21
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
22
22
  // Remove URL as it has UGC
23
23
  // TODO: Sanitise the URL instead of just removing it
@@ -65,9 +65,7 @@ function createNodeView(_ref) {
65
65
  nodeViewParams: nodeViewParams,
66
66
  Component: Component,
67
67
  extraComponentProps: extraComponentProps
68
- }), domRef, key, false,
69
- // node views should be rendered with intl context
70
- true);
68
+ }), domRef, key);
71
69
  }
72
70
  var _getPerformanceOption = (0, _utils.getPerformanceOptions)(nodeViewParams.view),
73
71
  samplingRate = _getPerformanceOption.samplingRate,
@@ -123,7 +121,7 @@ function createNodeView(_ref) {
123
121
  // When prosemirror destroys the node view, we need to clean up
124
122
  // what we have previously rendered using the editor portal
125
123
  // provider api.
126
- pmPluginFactoryParams.portalProviderAPI.remove(key, domRef);
124
+ pmPluginFactoryParams.portalProviderAPI.remove(key);
127
125
  // @ts-expect-error Expect an error as domRef is expected to be
128
126
  // of HTMLSpanElement type however once the node view has
129
127
  // been destroyed no other consumers should still be using it.