@atlaskit/editor-common 111.12.6 → 111.13.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 (34) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/analytics/types/enums.js +1 -0
  3. package/dist/cjs/extensions/extension-handlers.js +14 -7
  4. package/dist/cjs/extensions.js +6 -0
  5. package/dist/cjs/monitoring/error.js +1 -1
  6. package/dist/cjs/ui/DropList/index.js +1 -1
  7. package/dist/cjs/ui/HoverLinkOverlay/index.js +9 -186
  8. package/dist/cjs/utils/compareNodes.js +2 -2
  9. package/dist/es2019/analytics/types/enums.js +1 -0
  10. package/dist/es2019/extensions/extension-handlers.js +4 -0
  11. package/dist/es2019/extensions.js +1 -1
  12. package/dist/es2019/monitoring/error.js +1 -1
  13. package/dist/es2019/ui/DropList/index.js +1 -1
  14. package/dist/es2019/ui/HoverLinkOverlay/index.js +9 -170
  15. package/dist/esm/analytics/types/enums.js +1 -0
  16. package/dist/esm/extensions/extension-handlers.js +13 -7
  17. package/dist/esm/extensions.js +1 -1
  18. package/dist/esm/monitoring/error.js +1 -1
  19. package/dist/esm/ui/DropList/index.js +1 -1
  20. package/dist/esm/ui/HoverLinkOverlay/index.js +9 -186
  21. package/dist/esm/utils/compareNodes.js +2 -2
  22. package/dist/types/analytics/types/enums.d.ts +1 -0
  23. package/dist/types/analytics/types/extension-events.d.ts +8 -2
  24. package/dist/types/extensions/extension-handlers.d.ts +2 -1
  25. package/dist/types/extensions.d.ts +1 -1
  26. package/dist/types/types/copy-button.d.ts +1 -0
  27. package/dist/types/ui/HoverLinkOverlay/index.d.ts +2 -1
  28. package/dist/types-ts4.5/analytics/types/enums.d.ts +1 -0
  29. package/dist/types-ts4.5/analytics/types/extension-events.d.ts +8 -2
  30. package/dist/types-ts4.5/extensions/extension-handlers.d.ts +2 -1
  31. package/dist/types-ts4.5/extensions.d.ts +1 -1
  32. package/dist/types-ts4.5/types/copy-button.d.ts +1 -0
  33. package/dist/types-ts4.5/ui/HoverLinkOverlay/index.d.ts +2 -1
  34. package/package.json +2 -2
@@ -14,7 +14,6 @@ import GrowDiagonalIcon from '@atlaskit/icon/core/grow-diagonal';
14
14
  import LinkExternalIcon from '@atlaskit/icon/core/link-external';
15
15
  import PanelRightIcon from '@atlaskit/icon/core/panel-right';
16
16
  import { fg } from '@atlaskit/platform-feature-flags';
17
- import { componentWithCondition } from '@atlaskit/platform-feature-flags-react';
18
17
  // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- to be migrated to @atlaskit/primitives/compiled – go/akcss
19
18
  import { Anchor, Box, Text, xcss } from '@atlaskit/primitives';
20
19
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
@@ -27,25 +26,16 @@ import { cardMessages } from '../../messages';
27
26
  * Otherwise, uses default value with token('space.025').
28
27
  */
29
28
  const DYNAMIC_PADDING_BLOCK = `clamp(1px, calc((var(--ak-editor-base-font-size, ${akEditorFullPageDefaultFontSize}px) - ${akEditorFullPageDenseFontSize}px) * 999), ${"var(--ds-space-025, 2px)"})`;
30
- const containerStylesOld = css({
31
- position: 'relative'
32
- });
33
29
  const containerStyles = css({
34
- position: 'relative',
35
- whiteSpace: 'nowrap'
30
+ position: 'relative'
36
31
  });
37
- const iconWrapperStylesOld = xcss({
32
+ const iconWrapperStyles = xcss({
38
33
  display: 'inline-flex',
39
34
  justifyContent: 'center',
40
35
  alignItems: 'center',
41
36
  height: '17px',
42
37
  width: '17px'
43
38
  });
44
- const iconWrapperStyles = xcss({
45
- display: 'inline-flex',
46
- justifyContent: 'center',
47
- alignItems: 'center'
48
- });
49
39
  const hiddenTextStyle = css({
50
40
  overflow: 'hidden',
51
41
  whiteSpace: 'nowrap',
@@ -68,37 +58,18 @@ const linkStylesCommon = xcss({
68
58
  color: 'color.text.subtle',
69
59
  textDecoration: 'none',
70
60
  whiteSpace: 'nowrap',
61
+ top: '0px',
62
+ height: '1.2em',
71
63
  ':hover': {
72
64
  backgroundColor: 'elevation.surface.hovered',
73
65
  color: 'color.text.subtle',
74
66
  textDecoration: 'none'
75
67
  }
76
68
  });
77
- const linkStylesOld = xcss({
78
- top: '-1px'
79
- });
80
- const linkStylesHeightFix = xcss({
81
- top: '0px',
82
- height: '1.2em'
83
- });
84
- const linkStylesNewWithHeightFix = xcss({
85
- top: '0px',
86
- visibility: 'hidden',
87
- height: '1.2em'
88
- });
89
- const linkStylesVisible = xcss({
90
- visibility: 'visible'
91
- });
92
- const iconAndLabelStyles = xcss({
93
- display: 'flex',
94
- alignItems: 'center',
95
- height: '100%',
96
- gap: 'space.025'
97
- });
98
69
  const MIN_AVAILABLE_SPACE_WITH_LABEL_OVERLAY = 45;
99
70
  const ICON_WIDTH = 16;
100
71
  const DEFAULT_OPEN_TEXT_WIDTH = 28; // Default open text width in English
101
- const MIN_CARD_WIDTH_NOT_COVERED_BY_OVERLAY = 30;
72
+
102
73
  const visitCardLinkAnalytics = (editorAnalyticsApi, inputMethod) => (state, dispatch) => {
103
74
  if (!(state.selection instanceof NodeSelection)) {
104
75
  return false;
@@ -115,7 +86,7 @@ const visitCardLinkAnalytics = (editorAnalyticsApi, inputMethod) => (state, disp
115
86
  }
116
87
  return true;
117
88
  };
118
- const HoverLinkOverlayOriginal = ({
89
+ const HoverLinkOverlay = ({
119
90
  children,
120
91
  isVisible = false,
121
92
  url,
@@ -228,7 +199,7 @@ const HoverLinkOverlayOriginal = ({
228
199
  }
229
200
  return jsx("span", {
230
201
  ref: containerRef,
231
- css: containerStylesOld,
202
+ css: containerStyles,
232
203
  onDoubleClick: handleDoubleClick
233
204
  // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
234
205
  ,
@@ -245,7 +216,7 @@ const HoverLinkOverlayOriginal = ({
245
216
  maxLines: 1
246
217
  }, label)), isHovered && jsx(Anchor, {
247
218
  ref: hoverLinkButtonRef,
248
- xcss: [linkStylesCommon, expValEquals('platform_editor_hoverlink_ui_fixes_exp', 'cohort', 'css_changes_only') ? linkStylesHeightFix : linkStylesOld],
219
+ xcss: linkStylesCommon,
249
220
  href: url,
250
221
  target: "_blank",
251
222
  style: {
@@ -254,7 +225,7 @@ const HoverLinkOverlayOriginal = ({
254
225
  onClick: handleClick,
255
226
  testId: "inline-card-hoverlink-overlay"
256
227
  }, jsx(Box, {
257
- xcss: iconWrapperStylesOld,
228
+ xcss: iconWrapperStyles,
258
229
  "data-inlinecard-button-overlay": "icon-wrapper-line-height",
259
230
  testId: "inline-card-hoverlink-overlay-icon"
260
231
  }, icon), showLabel && jsx(Text, {
@@ -264,136 +235,4 @@ const HoverLinkOverlayOriginal = ({
264
235
  testId: "inline-card-hoverlink-overlay-label"
265
236
  }, label)));
266
237
  };
267
- const HoverLinkOverlayNew = ({
268
- children,
269
- isVisible = false,
270
- url,
271
- compactPadding = false,
272
- editorAnalyticsApi,
273
- view,
274
- onClick,
275
- showPanelButton = false,
276
- showPanelButtonIcon
277
- }) => {
278
- const {
279
- formatMessage
280
- } = useIntl();
281
- const containerRef = useRef(null);
282
- const iconRef = useRef(null);
283
- const iconLeftRef = useRef(0);
284
- const iconAndLabelRef = useRef(null);
285
- const minMaxWidthRef = useRef();
286
- const [showLabel, setShowLabel] = useState(false);
287
- const [isHovered, setHovered] = useState(false);
288
- const [showOverlay, setShowOverlay] = useState(false);
289
- useLayoutEffect(() => {
290
- if (!isVisible && !isHovered) {
291
- return;
292
- }
293
- if (!containerRef.current) {
294
- return;
295
- }
296
- if (iconRef.current && iconAndLabelRef.current) {
297
- const iconRect = iconRef.current.getBoundingClientRect();
298
- iconLeftRef.current = iconRect.left;
299
- minMaxWidthRef.current = {
300
- min: iconRect.width,
301
- max: iconAndLabelRef.current.getBoundingClientRect().width
302
- };
303
- }
304
- if (!iconLeftRef.current || !minMaxWidthRef.current) {
305
- return;
306
- }
307
- const containerDomRect = containerRef.current.getBoundingClientRect();
308
- const containerStyles = getComputedStyle(containerRef.current);
309
- const containerHeight = containerDomRect.height - parseFloat(containerStyles.paddingTop) - parseFloat(containerStyles.paddingBottom) - parseFloat(containerStyles.borderTopWidth) - parseFloat(containerStyles.borderBottomWidth);
310
- const oneLine = parseFloat(containerStyles.lineHeight) >= containerHeight;
311
- const firstLineWidth = containerDomRect.right - iconLeftRef.current;
312
-
313
- // We don't want HoverLinkOverlay to cover the entire card if it is oneline. It allows the user to click on the card itself.
314
- const reservedWidth = oneLine ? MIN_CARD_WIDTH_NOT_COVERED_BY_OVERLAY : 0;
315
- const availableWidth = firstLineWidth - reservedWidth;
316
-
317
- // True when icon and label can be shown
318
- setShowLabel(availableWidth >= minMaxWidthRef.current.max);
319
- // True when at least an icon can be shown
320
- setShowOverlay(availableWidth >= minMaxWidthRef.current.min);
321
- }, [isVisible, isHovered]);
322
- const handleOverlayChange = isHovered => {
323
- setHovered(isHovered);
324
- };
325
- const sendVisitLinkAnalytics = inputMethod => {
326
- if (editorAnalyticsApi && view) {
327
- visitCardLinkAnalytics(editorAnalyticsApi, inputMethod)(view.state, view.dispatch);
328
- }
329
- };
330
- const handleDoubleClick = () => {
331
- if (!showPanelButton) {
332
- sendVisitLinkAnalytics(INPUT_METHOD.DOUBLE_CLICK);
333
-
334
- // Double click opens the link in a new tab
335
- window.open(url, '_blank');
336
- }
337
- };
338
- const handleClick = event => {
339
- if (showPanelButton && onClick) {
340
- onClick(event);
341
- } else {
342
- sendVisitLinkAnalytics(INPUT_METHOD.BUTTON);
343
- }
344
- };
345
- const isPreviewButton = showPanelButton && editorExperiment('platform_editor_preview_panel_linking_exp', true);
346
- const label = isPreviewButton ? formatMessage(cardMessages.previewButtonTitle) : formatMessage(cardMessages.openButtonTitle);
347
- let icon = null;
348
- if (isPreviewButton && showPanelButtonIcon === 'panel') {
349
- icon = jsx(PanelRightIcon, {
350
- label: ""
351
- });
352
- } else if (isPreviewButton && showPanelButtonIcon === 'modal') {
353
- icon = jsx(GrowDiagonalIcon, {
354
- label: ""
355
- });
356
- } else {
357
- icon = jsx(LinkExternalIcon, {
358
- label: ""
359
- });
360
- }
361
- return jsx("span", {
362
- ref: containerRef,
363
- css: containerStyles,
364
- onDoubleClick: handleDoubleClick,
365
- onMouseEnter: () => handleOverlayChange(true),
366
- onMouseLeave: () => handleOverlayChange(false),
367
- role: "presentation" // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
368
- ,
369
- onFocus: () => {} // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
370
- ,
371
- onBlur: () => {} // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
372
- }, isHovered && jsx(Anchor, {
373
- xcss: [linkStylesCommon, linkStylesNewWithHeightFix, showOverlay && linkStylesVisible],
374
- href: url,
375
- target: "_blank",
376
- style: {
377
- paddingBlock: compactPadding ? '1px' : expValEquals('confluence_compact_text_format', 'isEnabled', true) || expValEquals('cc_editor_ai_content_mode', 'variant', 'test') && fg('platform_editor_content_mode_button_mvp') ? DYNAMIC_PADDING_BLOCK : "var(--ds-space-025, 2px)"
378
- },
379
- onClick: handleClick,
380
- testId: "inline-card-hoverlink-overlay"
381
- }, jsx(Box, {
382
- as: "span",
383
- xcss: iconAndLabelStyles,
384
- ref: iconAndLabelRef
385
- }, jsx(Box, {
386
- ref: iconRef,
387
- as: "span",
388
- xcss: iconWrapperStyles,
389
- "data-inlinecard-button-overlay": "icon-wrapper-line-height",
390
- testId: "inline-card-hoverlink-overlay-icon"
391
- }, icon), (showLabel || !minMaxWidthRef.current) && jsx(Text, {
392
- size: "small",
393
- color: "color.text.subtle",
394
- maxLines: 1,
395
- testId: "inline-card-hoverlink-overlay-label"
396
- }, label))), children);
397
- };
398
- const HoverLinkOverlay = componentWithCondition(() => expValEquals('platform_editor_hoverlink_ui_fixes_exp', 'cohort', 'css_js_changes'), HoverLinkOverlayNew, HoverLinkOverlayOriginal);
399
238
  export default HoverLinkOverlay;
@@ -32,6 +32,7 @@ export var ACTION = /*#__PURE__*/function (ACTION) {
32
32
  ACTION["CONNECTED_NODES"] = "connectedNodes";
33
33
  ACTION["CONVERTED"] = "converted";
34
34
  ACTION["COPIED"] = "copied";
35
+ ACTION["COPY_FAILED"] = "copyFailed";
35
36
  ACTION["CUT"] = "cut";
36
37
  ACTION["DEACTIVATED"] = "deactivated";
37
38
  ACTION["DECREMENTED"] = "decremented";
@@ -1,5 +1,5 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  import React from 'react';
5
5
  import { useIntl } from 'react-intl-next';
@@ -22,16 +22,22 @@ manifest, extKey, nodeKey, extensionType, extensionKey) {
22
22
  }
23
23
  return node;
24
24
  }
25
+ export function getExtensionManifest(extensionProvider, extensionType, extensionKey) {
26
+ var _getExtensionKeyAndNo = getExtensionKeyAndNodeKey(extensionKey, extensionType),
27
+ _getExtensionKeyAndNo2 = _slicedToArray(_getExtensionKeyAndNo, 1),
28
+ extKey = _getExtensionKeyAndNo2[0];
29
+ return extensionProvider.getExtension(extensionType, extKey);
30
+ }
25
31
  export function getExtensionModuleNode(_x, _x2, _x3) {
26
32
  return _getExtensionModuleNode.apply(this, arguments);
27
33
  }
28
34
  function _getExtensionModuleNode() {
29
35
  _getExtensionModuleNode = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(extensionProvider, extensionType, extensionKey) {
30
- var _getExtensionKeyAndNo3, _getExtensionKeyAndNo4, extKey, nodeKey, manifest;
36
+ var _getExtensionKeyAndNo5, _getExtensionKeyAndNo6, extKey, nodeKey, manifest;
31
37
  return _regeneratorRuntime.wrap(function _callee$(_context) {
32
38
  while (1) switch (_context.prev = _context.next) {
33
39
  case 0:
34
- _getExtensionKeyAndNo3 = getExtensionKeyAndNodeKey(extensionKey, extensionType), _getExtensionKeyAndNo4 = _slicedToArray(_getExtensionKeyAndNo3, 2), extKey = _getExtensionKeyAndNo4[0], nodeKey = _getExtensionKeyAndNo4[1];
40
+ _getExtensionKeyAndNo5 = getExtensionKeyAndNodeKey(extensionKey, extensionType), _getExtensionKeyAndNo6 = _slicedToArray(_getExtensionKeyAndNo5, 2), extKey = _getExtensionKeyAndNo6[0], nodeKey = _getExtensionKeyAndNo6[1];
35
41
  _context.next = 3;
36
42
  return extensionProvider.getExtension(extensionType, extKey);
37
43
  case 3:
@@ -49,10 +55,10 @@ export function getExtensionModuleNodeMaybePreloaded(extensionProvider, extensio
49
55
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
56
  ) {
51
57
  var _extensionProvider$ge;
52
- var _getExtensionKeyAndNo = getExtensionKeyAndNodeKey(extensionKey, extensionType),
53
- _getExtensionKeyAndNo2 = _slicedToArray(_getExtensionKeyAndNo, 2),
54
- extKey = _getExtensionKeyAndNo2[0],
55
- nodeKey = _getExtensionKeyAndNo2[1];
58
+ var _getExtensionKeyAndNo3 = getExtensionKeyAndNodeKey(extensionKey, extensionType),
59
+ _getExtensionKeyAndNo4 = _slicedToArray(_getExtensionKeyAndNo3, 2),
60
+ extKey = _getExtensionKeyAndNo4[0],
61
+ nodeKey = _getExtensionKeyAndNo4[1];
56
62
  var manifest = extensionProvider === null || extensionProvider === void 0 || (_extensionProvider$ge = extensionProvider.getPreloadedExtension) === null || _extensionProvider$ge === void 0 ? void 0 : _extensionProvider$ge.call(extensionProvider, extensionType, extKey);
57
63
  if (manifest) {
58
64
  return getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey);
@@ -6,6 +6,6 @@ export { createAutoConverterRunner, getExtensionAutoConvertersFromProvider, getQ
6
6
  export { default as DefaultExtensionProvider } from './extensions/default-extension-provider';
7
7
  export { default as combineExtensionProviders } from './extensions/combine-extension-providers';
8
8
  export { getExtensionKeyAndNodeKey, resolveImport } from './extensions/manifest-helpers';
9
- export { getExtensionModuleNode, getNodeRenderer, getExtensionModuleNodePrivateProps } from './extensions/extension-handlers';
9
+ export { getExtensionModuleNode, getNodeRenderer, getExtensionModuleNodePrivateProps, getExtensionManifest } from './extensions/extension-handlers';
10
10
  export { getCustomFieldResolver, getFieldSerializer, getFieldDeserializer, getUserFieldContextProvider } from './extensions/extension-fields-helpers';
11
11
  export { configPanelMessages, messages } from './extensions/messages';
@@ -10,7 +10,7 @@ import { isFedRamp } from './environment';
10
10
  import { normaliseSentryBreadcrumbs, SERIALIZABLE_ATTRIBUTES } from './normalise-sentry-breadcrumbs';
11
11
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
12
12
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
13
- var packageVersion = "111.12.5";
13
+ var packageVersion = "111.12.7";
14
14
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
15
15
  // Remove URL as it has UGC
16
16
  // Ignored via go/ees007
@@ -21,7 +21,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import { fg } from '@atlaskit/platform-feature-flags';
22
22
  import Layer from '../Layer';
23
23
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "111.12.5";
24
+ var packageVersion = "111.12.7";
25
25
  var halfFocusRing = 1;
26
26
  var dropOffset = '0, 8';
27
27
  var fadeIn = keyframes({
@@ -15,7 +15,6 @@ import GrowDiagonalIcon from '@atlaskit/icon/core/grow-diagonal';
15
15
  import LinkExternalIcon from '@atlaskit/icon/core/link-external';
16
16
  import PanelRightIcon from '@atlaskit/icon/core/panel-right';
17
17
  import { fg } from '@atlaskit/platform-feature-flags';
18
- import { componentWithCondition } from '@atlaskit/platform-feature-flags-react';
19
18
  // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- to be migrated to @atlaskit/primitives/compiled – go/akcss
20
19
  import { Anchor, Box, Text, xcss } from '@atlaskit/primitives';
21
20
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
@@ -28,25 +27,16 @@ import { cardMessages } from '../../messages';
28
27
  * Otherwise, uses default value with token('space.025').
29
28
  */
30
29
  var DYNAMIC_PADDING_BLOCK = "clamp(1px, calc((var(--ak-editor-base-font-size, ".concat(akEditorFullPageDefaultFontSize, "px) - ").concat(akEditorFullPageDenseFontSize, "px) * 999), ", "var(--ds-space-025, 2px)", ")");
31
- var containerStylesOld = css({
32
- position: 'relative'
33
- });
34
30
  var containerStyles = css({
35
- position: 'relative',
36
- whiteSpace: 'nowrap'
31
+ position: 'relative'
37
32
  });
38
- var iconWrapperStylesOld = xcss({
33
+ var iconWrapperStyles = xcss({
39
34
  display: 'inline-flex',
40
35
  justifyContent: 'center',
41
36
  alignItems: 'center',
42
37
  height: '17px',
43
38
  width: '17px'
44
39
  });
45
- var iconWrapperStyles = xcss({
46
- display: 'inline-flex',
47
- justifyContent: 'center',
48
- alignItems: 'center'
49
- });
50
40
  var hiddenTextStyle = css({
51
41
  overflow: 'hidden',
52
42
  whiteSpace: 'nowrap',
@@ -69,37 +59,18 @@ var linkStylesCommon = xcss({
69
59
  color: 'color.text.subtle',
70
60
  textDecoration: 'none',
71
61
  whiteSpace: 'nowrap',
62
+ top: '0px',
63
+ height: '1.2em',
72
64
  ':hover': {
73
65
  backgroundColor: 'elevation.surface.hovered',
74
66
  color: 'color.text.subtle',
75
67
  textDecoration: 'none'
76
68
  }
77
69
  });
78
- var linkStylesOld = xcss({
79
- top: '-1px'
80
- });
81
- var linkStylesHeightFix = xcss({
82
- top: '0px',
83
- height: '1.2em'
84
- });
85
- var linkStylesNewWithHeightFix = xcss({
86
- top: '0px',
87
- visibility: 'hidden',
88
- height: '1.2em'
89
- });
90
- var linkStylesVisible = xcss({
91
- visibility: 'visible'
92
- });
93
- var iconAndLabelStyles = xcss({
94
- display: 'flex',
95
- alignItems: 'center',
96
- height: '100%',
97
- gap: 'space.025'
98
- });
99
70
  var MIN_AVAILABLE_SPACE_WITH_LABEL_OVERLAY = 45;
100
71
  var ICON_WIDTH = 16;
101
72
  var DEFAULT_OPEN_TEXT_WIDTH = 28; // Default open text width in English
102
- var MIN_CARD_WIDTH_NOT_COVERED_BY_OVERLAY = 30;
73
+
103
74
  var visitCardLinkAnalytics = function visitCardLinkAnalytics(editorAnalyticsApi, inputMethod) {
104
75
  return function (state, dispatch) {
105
76
  if (!(state.selection instanceof NodeSelection)) {
@@ -114,7 +85,7 @@ var visitCardLinkAnalytics = function visitCardLinkAnalytics(editorAnalyticsApi,
114
85
  return true;
115
86
  };
116
87
  };
117
- var HoverLinkOverlayOriginal = function HoverLinkOverlayOriginal(_ref) {
88
+ var HoverLinkOverlay = function HoverLinkOverlay(_ref) {
118
89
  var children = _ref.children,
119
90
  _ref$isVisible = _ref.isVisible,
120
91
  isVisible = _ref$isVisible === void 0 ? false : _ref$isVisible,
@@ -234,7 +205,7 @@ var HoverLinkOverlayOriginal = function HoverLinkOverlayOriginal(_ref) {
234
205
  }
235
206
  return jsx("span", {
236
207
  ref: containerRef,
237
- css: containerStylesOld,
208
+ css: containerStyles,
238
209
  onDoubleClick: handleDoubleClick
239
210
  // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
240
211
  ,
@@ -255,7 +226,7 @@ var HoverLinkOverlayOriginal = function HoverLinkOverlayOriginal(_ref) {
255
226
  maxLines: 1
256
227
  }, label)), isHovered && jsx(Anchor, {
257
228
  ref: hoverLinkButtonRef,
258
- xcss: [linkStylesCommon, expValEquals('platform_editor_hoverlink_ui_fixes_exp', 'cohort', 'css_changes_only') ? linkStylesHeightFix : linkStylesOld],
229
+ xcss: linkStylesCommon,
259
230
  href: url,
260
231
  target: "_blank",
261
232
  style: {
@@ -264,7 +235,7 @@ var HoverLinkOverlayOriginal = function HoverLinkOverlayOriginal(_ref) {
264
235
  onClick: handleClick,
265
236
  testId: "inline-card-hoverlink-overlay"
266
237
  }, jsx(Box, {
267
- xcss: iconWrapperStylesOld,
238
+ xcss: iconWrapperStyles,
268
239
  "data-inlinecard-button-overlay": "icon-wrapper-line-height",
269
240
  testId: "inline-card-hoverlink-overlay-icon"
270
241
  }, icon), showLabel && jsx(Text, {
@@ -274,152 +245,4 @@ var HoverLinkOverlayOriginal = function HoverLinkOverlayOriginal(_ref) {
274
245
  testId: "inline-card-hoverlink-overlay-label"
275
246
  }, label)));
276
247
  };
277
- var HoverLinkOverlayNew = function HoverLinkOverlayNew(_ref2) {
278
- var children = _ref2.children,
279
- _ref2$isVisible = _ref2.isVisible,
280
- isVisible = _ref2$isVisible === void 0 ? false : _ref2$isVisible,
281
- url = _ref2.url,
282
- _ref2$compactPadding = _ref2.compactPadding,
283
- compactPadding = _ref2$compactPadding === void 0 ? false : _ref2$compactPadding,
284
- editorAnalyticsApi = _ref2.editorAnalyticsApi,
285
- view = _ref2.view,
286
- onClick = _ref2.onClick,
287
- _ref2$showPanelButton = _ref2.showPanelButton,
288
- showPanelButton = _ref2$showPanelButton === void 0 ? false : _ref2$showPanelButton,
289
- showPanelButtonIcon = _ref2.showPanelButtonIcon;
290
- var _useIntl2 = useIntl(),
291
- formatMessage = _useIntl2.formatMessage;
292
- var containerRef = useRef(null);
293
- var iconRef = useRef(null);
294
- var iconLeftRef = useRef(0);
295
- var iconAndLabelRef = useRef(null);
296
- var minMaxWidthRef = useRef();
297
- var _useState5 = useState(false),
298
- _useState6 = _slicedToArray(_useState5, 2),
299
- showLabel = _useState6[0],
300
- setShowLabel = _useState6[1];
301
- var _useState7 = useState(false),
302
- _useState8 = _slicedToArray(_useState7, 2),
303
- isHovered = _useState8[0],
304
- setHovered = _useState8[1];
305
- var _useState9 = useState(false),
306
- _useState0 = _slicedToArray(_useState9, 2),
307
- showOverlay = _useState0[0],
308
- setShowOverlay = _useState0[1];
309
- useLayoutEffect(function () {
310
- if (!isVisible && !isHovered) {
311
- return;
312
- }
313
- if (!containerRef.current) {
314
- return;
315
- }
316
- if (iconRef.current && iconAndLabelRef.current) {
317
- var iconRect = iconRef.current.getBoundingClientRect();
318
- iconLeftRef.current = iconRect.left;
319
- minMaxWidthRef.current = {
320
- min: iconRect.width,
321
- max: iconAndLabelRef.current.getBoundingClientRect().width
322
- };
323
- }
324
- if (!iconLeftRef.current || !minMaxWidthRef.current) {
325
- return;
326
- }
327
- var containerDomRect = containerRef.current.getBoundingClientRect();
328
- var containerStyles = getComputedStyle(containerRef.current);
329
- var containerHeight = containerDomRect.height - parseFloat(containerStyles.paddingTop) - parseFloat(containerStyles.paddingBottom) - parseFloat(containerStyles.borderTopWidth) - parseFloat(containerStyles.borderBottomWidth);
330
- var oneLine = parseFloat(containerStyles.lineHeight) >= containerHeight;
331
- var firstLineWidth = containerDomRect.right - iconLeftRef.current;
332
-
333
- // We don't want HoverLinkOverlay to cover the entire card if it is oneline. It allows the user to click on the card itself.
334
- var reservedWidth = oneLine ? MIN_CARD_WIDTH_NOT_COVERED_BY_OVERLAY : 0;
335
- var availableWidth = firstLineWidth - reservedWidth;
336
-
337
- // True when icon and label can be shown
338
- setShowLabel(availableWidth >= minMaxWidthRef.current.max);
339
- // True when at least an icon can be shown
340
- setShowOverlay(availableWidth >= minMaxWidthRef.current.min);
341
- }, [isVisible, isHovered]);
342
- var handleOverlayChange = function handleOverlayChange(isHovered) {
343
- setHovered(isHovered);
344
- };
345
- var sendVisitLinkAnalytics = function sendVisitLinkAnalytics(inputMethod) {
346
- if (editorAnalyticsApi && view) {
347
- visitCardLinkAnalytics(editorAnalyticsApi, inputMethod)(view.state, view.dispatch);
348
- }
349
- };
350
- var handleDoubleClick = function handleDoubleClick() {
351
- if (!showPanelButton) {
352
- sendVisitLinkAnalytics(INPUT_METHOD.DOUBLE_CLICK);
353
-
354
- // Double click opens the link in a new tab
355
- window.open(url, '_blank');
356
- }
357
- };
358
- var handleClick = function handleClick(event) {
359
- if (showPanelButton && onClick) {
360
- onClick(event);
361
- } else {
362
- sendVisitLinkAnalytics(INPUT_METHOD.BUTTON);
363
- }
364
- };
365
- var isPreviewButton = showPanelButton && editorExperiment('platform_editor_preview_panel_linking_exp', true);
366
- var label = isPreviewButton ? formatMessage(cardMessages.previewButtonTitle) : formatMessage(cardMessages.openButtonTitle);
367
- var icon = null;
368
- if (isPreviewButton && showPanelButtonIcon === 'panel') {
369
- icon = jsx(PanelRightIcon, {
370
- label: ""
371
- });
372
- } else if (isPreviewButton && showPanelButtonIcon === 'modal') {
373
- icon = jsx(GrowDiagonalIcon, {
374
- label: ""
375
- });
376
- } else {
377
- icon = jsx(LinkExternalIcon, {
378
- label: ""
379
- });
380
- }
381
- return jsx("span", {
382
- ref: containerRef,
383
- css: containerStyles,
384
- onDoubleClick: handleDoubleClick,
385
- onMouseEnter: function onMouseEnter() {
386
- return handleOverlayChange(true);
387
- },
388
- onMouseLeave: function onMouseLeave() {
389
- return handleOverlayChange(false);
390
- },
391
- role: "presentation" // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
392
- ,
393
- onFocus: function onFocus() {} // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
394
- ,
395
- onBlur: function onBlur() {} // remove as part of platform_editor_hoverlink_ui_fixes_exp cleanup
396
- }, isHovered && jsx(Anchor, {
397
- xcss: [linkStylesCommon, linkStylesNewWithHeightFix, showOverlay && linkStylesVisible],
398
- href: url,
399
- target: "_blank",
400
- style: {
401
- paddingBlock: compactPadding ? '1px' : expValEquals('confluence_compact_text_format', 'isEnabled', true) || expValEquals('cc_editor_ai_content_mode', 'variant', 'test') && fg('platform_editor_content_mode_button_mvp') ? DYNAMIC_PADDING_BLOCK : "var(--ds-space-025, 2px)"
402
- },
403
- onClick: handleClick,
404
- testId: "inline-card-hoverlink-overlay"
405
- }, jsx(Box, {
406
- as: "span",
407
- xcss: iconAndLabelStyles,
408
- ref: iconAndLabelRef
409
- }, jsx(Box, {
410
- ref: iconRef,
411
- as: "span",
412
- xcss: iconWrapperStyles,
413
- "data-inlinecard-button-overlay": "icon-wrapper-line-height",
414
- testId: "inline-card-hoverlink-overlay-icon"
415
- }, icon), (showLabel || !minMaxWidthRef.current) && jsx(Text, {
416
- size: "small",
417
- color: "color.text.subtle",
418
- maxLines: 1,
419
- testId: "inline-card-hoverlink-overlay-label"
420
- }, label))), children);
421
- };
422
- var HoverLinkOverlay = componentWithCondition(function () {
423
- return expValEquals('platform_editor_hoverlink_ui_fixes_exp', 'cohort', 'css_js_changes');
424
- }, HoverLinkOverlayNew, HoverLinkOverlayOriginal);
425
248
  export default HoverLinkOverlay;
@@ -33,10 +33,10 @@ export function createNormalizeTextParser() {
33
33
  var locale = window.navigator.language;
34
34
  var thousandSeparator = Intl.NumberFormat(locale).format(11111)
35
35
  // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
36
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
36
+ .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
37
37
  var decimalSeparator = Intl.NumberFormat(locale).format(1.1)
38
38
  // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
39
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
39
+ .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
40
40
 
41
41
  // Ignored via go/ees005
42
42
  // eslint-disable-next-line require-unicode-regexp
@@ -31,6 +31,7 @@ export declare enum ACTION {
31
31
  CONNECTED_NODES = "connectedNodes",
32
32
  CONVERTED = "converted",
33
33
  COPIED = "copied",
34
+ COPY_FAILED = "copyFailed",
34
35
  CUT = "cut",
35
36
  DEACTIVATED = "deactivated",
36
37
  DECREMENTED = "decremented",
@@ -1,6 +1,6 @@
1
1
  import type { ExtensionLayout } from '@atlaskit/adf-schema';
2
2
  import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, INPUT_METHOD } from './enums';
3
- import type { SELECTION_TYPE, TrackAEP } from './utils';
3
+ import type { SELECTION_TYPE, OperationalAEP, TrackAEP } from './utils';
4
4
  export declare enum GAP_CURSOR_POSITION {
5
5
  LEFT = "left",
6
6
  RIGHT = "right"
@@ -36,8 +36,14 @@ type ExtensionDeletedAEP = TrackAEP<ACTION.DELETED, ACTION_SUBJECT.EXTENSION, Ex
36
36
  inputMethod?: INPUT_METHOD.TOOLBAR | INPUT_METHOD.FLOATING_TB;
37
37
  localId: string;
38
38
  }, INPUT_METHOD.TOOLBAR | INPUT_METHOD.FLOATING_TB>;
39
+ type ExtensionCopyFailedAEP = OperationalAEP<ACTION.COPY_FAILED, ACTION_SUBJECT.EXTENSION, ExtensionType, {
40
+ errorMessage: string;
41
+ errorStack?: string;
42
+ extensionKey: string;
43
+ extensionType: string;
44
+ }>;
39
45
  type ExtensionAPICalledPayload = TrackAEP<ACTION.INVOKED, ACTION_SUBJECT.EXTENSION, ACTION_SUBJECT_ID.EXTENSION_API, {
40
46
  functionName: string;
41
47
  }, INPUT_METHOD.EXTENSION_API>;
42
- export type ExtensionEventPayload = ExtensionUpdateAEP | ExtensionDeletedAEP | ExtensionAPICalledPayload;
48
+ export type ExtensionEventPayload = ExtensionUpdateAEP | ExtensionDeletedAEP | ExtensionCopyFailedAEP | ExtensionAPICalledPayload;
43
49
  export {};