@atlaskit/renderer 109.53.1 → 109.53.3

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 (33) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/analytics/enums.js +0 -1
  3. package/dist/cjs/react/nodes/codeBlock/components/codeBlockCopyButton.js +1 -1
  4. package/dist/cjs/react/nodes/codeBlock/components/codeBlockWrapButton.js +1 -1
  5. package/dist/cjs/steps/index.js +1 -0
  6. package/dist/cjs/ui/Renderer/index.js +6 -17
  7. package/dist/cjs/ui/annotations/hooks/user-selection.js +23 -0
  8. package/dist/es2019/analytics/enums.js +0 -1
  9. package/dist/es2019/react/nodes/codeBlock/components/codeBlockCopyButton.js +1 -1
  10. package/dist/es2019/react/nodes/codeBlock/components/codeBlockWrapButton.js +1 -1
  11. package/dist/es2019/steps/index.js +1 -1
  12. package/dist/es2019/ui/Renderer/index.js +6 -17
  13. package/dist/es2019/ui/annotations/hooks/user-selection.js +25 -0
  14. package/dist/esm/analytics/enums.js +0 -1
  15. package/dist/esm/react/nodes/codeBlock/components/codeBlockCopyButton.js +1 -1
  16. package/dist/esm/react/nodes/codeBlock/components/codeBlockWrapButton.js +1 -1
  17. package/dist/esm/steps/index.js +1 -1
  18. package/dist/esm/ui/Renderer/index.js +6 -17
  19. package/dist/esm/ui/annotations/hooks/user-selection.js +23 -0
  20. package/dist/types/analytics/enums.d.ts +0 -1
  21. package/dist/types/analytics/events.d.ts +3 -7
  22. package/dist/types/steps/index.d.ts +1 -0
  23. package/dist/types/ui/renderer-props.d.ts +0 -9
  24. package/dist/types-ts4.5/analytics/enums.d.ts +0 -1
  25. package/dist/types-ts4.5/analytics/events.d.ts +3 -7
  26. package/dist/types-ts4.5/steps/index.d.ts +1 -0
  27. package/dist/types-ts4.5/ui/renderer-props.d.ts +0 -9
  28. package/package.json +5 -2
  29. package/dist/cjs/react/utils/performance/RenderTracking.js +0 -44
  30. package/dist/es2019/react/utils/performance/RenderTracking.js +0 -36
  31. package/dist/esm/react/utils/performance/RenderTracking.js +0 -37
  32. package/dist/types/react/utils/performance/RenderTracking.d.ts +0 -15
  33. package/dist/types-ts4.5/react/utils/performance/RenderTracking.d.ts +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 109.53.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#138899](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/138899)
8
+ [`e18d6c037fd51`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/e18d6c037fd51) -
9
+ Fix comment button disabled on triple click
10
+
11
+ ## 109.53.2
12
+
13
+ ### Patch Changes
14
+
15
+ - [#139453](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/139453)
16
+ [`6ca31cec5324f`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6ca31cec5324f) -
17
+ EDF-957 Removed renderer re-render tracking analytics.
18
+
3
19
  ## 109.53.1
4
20
 
5
21
  ### Patch Changes
@@ -14,7 +14,6 @@ var EVENT_TYPE = exports.EVENT_TYPE = /*#__PURE__*/function (EVENT_TYPE) {
14
14
  var ACTION = exports.ACTION = /*#__PURE__*/function (ACTION) {
15
15
  ACTION["STARTED"] = "started";
16
16
  ACTION["RENDERED"] = "rendered";
17
- ACTION["RE_RENDERED"] = "reRendered";
18
17
  ACTION["RENDERER_TTI"] = "tti";
19
18
  ACTION["CRASHED"] = "unhandledErrorCaught";
20
19
  ACTION["INVALID_PROSEMIRROR_DOCUMENT"] = "invalidProsemirrorDocument";
@@ -57,7 +57,7 @@ var CopyButton = function CopyButton(_ref) {
57
57
  }),
58
58
  onClick: function onClick(event) {
59
59
  fireAnalyticsEvent({
60
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
60
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
61
61
  // This error was introduced after upgrading to TypeScript 5
62
62
  action: _enums.ACTION.CLICKED,
63
63
  actionSubject: _enums.ACTION_SUBJECT.BUTTON,
@@ -59,7 +59,7 @@ var CodeBlockWrapButton = function CodeBlockWrapButton(_ref) {
59
59
  isSelected: wrapLongLines,
60
60
  onClick: function onClick(event) {
61
61
  fireAnalyticsEvent({
62
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
62
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
63
63
  // This error was introduced after upgrading to TypeScript 5
64
64
  action: _enums.ACTION.CLICKED,
65
65
  actionSubject: _enums.ACTION_SUBJECT.BUTTON,
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAnnotationStep = createAnnotationStep;
7
7
  exports.getPosFromRange = getPosFromRange;
8
+ exports.isRoot = isRoot;
8
9
  exports.resolvePos = resolvePos;
9
10
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
11
  var _transform = require("@atlaskit/editor-prosemirror/transform");
@@ -49,7 +49,6 @@ var _clickToEdit = require("./click-to-edit");
49
49
  var _rendererContext = require("../../renderer-context");
50
50
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
51
51
  var _ErrorBoundary = require("./ErrorBoundary");
52
- var _RenderTracking = require("../../react/utils/performance/RenderTracking");
53
52
  var _EditorMediaClientProvider = require("../../react/utils/EditorMediaClientProvider");
54
53
  var _nodes = require("../../react/nodes");
55
54
  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); }
@@ -64,7 +63,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
64
63
  var NORMAL_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = 2000;
65
64
  var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
66
65
  var packageName = "@atlaskit/renderer";
67
- var packageVersion = "109.53.1";
66
+ var packageVersion = "109.53.3";
68
67
  var defaultNodeComponents = exports.defaultNodeComponents = _nodes.nodeToReact;
69
68
  var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
70
69
  (0, _inherits2.default)(Renderer, _PureComponent);
@@ -79,9 +78,7 @@ var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
79
78
  */
80
79
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderedMeasurementDistortedDurationMonitor", (0, _measureRender.getDistortedDurationMonitor)());
81
80
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "featureFlags", (0, _memoizeOne.default)(function (featureFlags) {
82
- var normalizedFeatureFlags = (0, _normalizeFeatureFlags.normalizeFeatureFlags)(featureFlags, {
83
- objectFlagKeys: ['rendererRenderTracking']
84
- });
81
+ var normalizedFeatureFlags = (0, _normalizeFeatureFlags.normalizeFeatureFlags)(featureFlags);
85
82
  return {
86
83
  featureFlags: normalizedFeatureFlags
87
84
  };
@@ -368,7 +365,7 @@ var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
368
365
  }
369
366
  };
370
367
  try {
371
- var _featureFlags$feature, _featureFlags$feature2;
368
+ var _featureFlags$feature;
372
369
  var schema = this.getSchema(this.props.schema, this.props.adfStage);
373
370
  var _renderDocument = (0, _.renderDocument)(adfDocument, this.serializer, schema, adfStage, this.props.useSpecBasedValidator, this.id, this.fireAnalyticsEvent, this.props.unsupportedContentLevelsTracking, this.props.appearance),
374
371
  result = _renderDocument.result,
@@ -414,17 +411,9 @@ var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
414
411
  height: maxHeight,
415
412
  fadeHeight: fadeOutHeight
416
413
  }, rendererOutput) : rendererOutput;
417
- var rendererRenderTracking = featureFlags === null || featureFlags === void 0 || (_featureFlags$feature2 = featureFlags.featureFlags) === null || _featureFlags$feature2 === void 0 || (_featureFlags$feature2 = _featureFlags$feature2.rendererRenderTracking) === null || _featureFlags$feature2 === void 0 ? void 0 : _featureFlags$feature2[_analytics.ACTION_SUBJECT.RENDERER];
418
- var reRenderTracking = (rendererRenderTracking === null || rendererRenderTracking === void 0 ? void 0 : rendererRenderTracking.enabled) && (0, _react2.jsx)(_RenderTracking.RenderTracking, {
419
- componentProps: this.props,
420
- action: _analytics.ACTION.RE_RENDERED,
421
- actionSubject: _analytics.ACTION_SUBJECT.RENDERER,
422
- handleAnalyticsEvent: this.fireAnalyticsEvent,
423
- useShallow: rendererRenderTracking.useShallow
424
- });
425
- return (0, _react2.jsx)(_react.Fragment, null, reRenderTracking, rendererResult);
414
+ return (0, _react2.jsx)(_react.Fragment, null, rendererResult);
426
415
  } catch (e) {
427
- var _featureFlags$feature3;
416
+ var _featureFlags$feature2;
428
417
  if (onError) {
429
418
  onError(e);
430
419
  }
@@ -436,7 +425,7 @@ var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
436
425
  allowPlaceholderText: allowPlaceholderText,
437
426
  allowColumnSorting: allowColumnSorting,
438
427
  allowNestedHeaderLinks: allowNestedHeaderLinks,
439
- useBlockRenderForCodeBlock: (_featureFlags$feature3 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature3 !== void 0 ? _featureFlags$feature3 : true,
428
+ useBlockRenderForCodeBlock: (_featureFlags$feature2 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature2 !== void 0 ? _featureFlags$feature2 : true,
440
429
  addTelepointer: this.props.addTelepointer,
441
430
  onClick: handleWrapperOnClick
442
431
  }, (0, _react2.jsx)(_ui.UnsupportedBlock, null));
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useUserSelectionRange = void 0;
7
7
  var _react = require("react");
8
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
8
9
  var _AnnotationRangeContext = require("../contexts/AnnotationRangeContext");
9
10
  var _utils = require("./utils");
11
+ var _steps = require("../../../steps");
10
12
  var useUserSelectionRange = exports.useUserSelectionRange = function useUserSelectionRange(props) {
11
13
  var rendererDOM = props.rendererRef.current;
12
14
  var selectionTimeoutRef = (0, _react.useRef)();
@@ -32,6 +34,27 @@ var useUserSelectionRange = exports.useUserSelectionRange = function useUserSele
32
34
  }
33
35
  var _range = sel.getRangeAt(0);
34
36
  if (rendererDOM && (0, _utils.isRangeInsideOfRendererContainer)(rendererDOM, _range)) {
37
+ if ((0, _platformFeatureFlags.fg)('platform_editor_allow_annotation_triple_click')) {
38
+ var startContainer = _range.startContainer,
39
+ endContainer = _range.endContainer,
40
+ commonAncestorContainer = _range.commonAncestorContainer;
41
+
42
+ // ED-23493
43
+ // On triple-click in Chrome and Safari, the native Selection API's range has endContainer as a non-text node
44
+ // and commonAncestorContainer as root level div.ak-renderer-document when the node is followed by div or hr.
45
+
46
+ // Triple clicks are the only case that can cause the endContainer to be a non-text node
47
+ // Same check for highlight range logic in confluence/next/packages/comments-util/src/domUtils.ts Line 180
48
+ var isTripleClick = endContainer.nodeType !== Node.TEXT_NODE;
49
+
50
+ // isAnnotationAllowedOnRange range validation is checking if the parent container is root element and disable the comment if it is.
51
+ // platform/packages/editor/renderer/src/steps/index.ts Line 180
52
+
53
+ // This workaround ensures the endContainer is set to a text node when endContainer is non-text and the parent container is the root element
54
+ if (isTripleClick && (0, _steps.isRoot)(commonAncestorContainer)) {
55
+ _range.setEnd(startContainer, startContainer.length || 0);
56
+ }
57
+ }
35
58
  setRange(_range.cloneRange());
36
59
  }
37
60
  }, 250);
@@ -8,7 +8,6 @@ export let EVENT_TYPE = /*#__PURE__*/function (EVENT_TYPE) {
8
8
  export let ACTION = /*#__PURE__*/function (ACTION) {
9
9
  ACTION["STARTED"] = "started";
10
10
  ACTION["RENDERED"] = "rendered";
11
- ACTION["RE_RENDERED"] = "reRendered";
12
11
  ACTION["RENDERER_TTI"] = "tti";
13
12
  ACTION["CRASHED"] = "unhandledErrorCaught";
14
13
  ACTION["INVALID_PROSEMIRROR_DOCUMENT"] = "invalidProsemirrorDocument";
@@ -43,7 +43,7 @@ const CopyButton = ({
43
43
  }),
44
44
  onClick: event => {
45
45
  fireAnalyticsEvent({
46
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
46
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
47
47
  // This error was introduced after upgrading to TypeScript 5
48
48
  action: ACTION.CLICKED,
49
49
  actionSubject: ACTION_SUBJECT.BUTTON,
@@ -52,7 +52,7 @@ const CodeBlockWrapButton = ({
52
52
  isSelected: wrapLongLines,
53
53
  onClick: event => {
54
54
  fireAnalyticsEvent({
55
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
55
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
56
56
  // This error was introduced after upgrading to TypeScript 5
57
57
  action: ACTION.CLICKED,
58
58
  actionSubject: ACTION_SUBJECT.BUTTON,
@@ -124,7 +124,7 @@ function resolveNodePos(node) {
124
124
  }
125
125
  return resolvedPos;
126
126
  }
127
- function isRoot(element) {
127
+ export function isRoot(element) {
128
128
  return !!element && element.classList.contains('ak-renderer-document');
129
129
  }
130
130
  export function resolvePos(node, offset, findEnd = false) {
@@ -40,13 +40,12 @@ import { isInteractiveElement } from './click-to-edit';
40
40
  import { RendererContextProvider } from '../../renderer-context';
41
41
  import memoizeOne from 'memoize-one';
42
42
  import { ErrorBoundary } from './ErrorBoundary';
43
- import { RenderTracking } from '../../react/utils/performance/RenderTracking';
44
43
  import { EditorMediaClientProvider } from '../../react/utils/EditorMediaClientProvider';
45
44
  import { nodeToReact } from '../../react/nodes';
46
45
  export const NORMAL_SEVERITY_THRESHOLD = 2000;
47
46
  export const DEGRADED_SEVERITY_THRESHOLD = 3000;
48
47
  const packageName = "@atlaskit/renderer";
49
- const packageVersion = "109.53.1";
48
+ const packageVersion = "109.53.3";
50
49
  export const defaultNodeComponents = nodeToReact;
51
50
  export class Renderer extends PureComponent {
52
51
  constructor(props) {
@@ -57,9 +56,7 @@ export class Renderer extends PureComponent {
57
56
  */
58
57
  _defineProperty(this, "renderedMeasurementDistortedDurationMonitor", getDistortedDurationMonitor());
59
58
  _defineProperty(this, "featureFlags", memoizeOne(featureFlags => {
60
- const normalizedFeatureFlags = normalizeFeatureFlags(featureFlags, {
61
- objectFlagKeys: ['rendererRenderTracking']
62
- });
59
+ const normalizedFeatureFlags = normalizeFeatureFlags(featureFlags);
63
60
  return {
64
61
  featureFlags: normalizedFeatureFlags
65
62
  };
@@ -346,7 +343,7 @@ export class Renderer extends PureComponent {
346
343
  }
347
344
  };
348
345
  try {
349
- var _featureFlags$feature, _featureFlags$feature2, _featureFlags$feature3;
346
+ var _featureFlags$feature;
350
347
  const schema = this.getSchema(this.props.schema, this.props.adfStage);
351
348
  const {
352
349
  result,
@@ -391,17 +388,9 @@ export class Renderer extends PureComponent {
391
388
  height: maxHeight,
392
389
  fadeHeight: fadeOutHeight
393
390
  }, rendererOutput) : rendererOutput;
394
- const rendererRenderTracking = featureFlags === null || featureFlags === void 0 ? void 0 : (_featureFlags$feature2 = featureFlags.featureFlags) === null || _featureFlags$feature2 === void 0 ? void 0 : (_featureFlags$feature3 = _featureFlags$feature2.rendererRenderTracking) === null || _featureFlags$feature3 === void 0 ? void 0 : _featureFlags$feature3[ACTION_SUBJECT.RENDERER];
395
- const reRenderTracking = (rendererRenderTracking === null || rendererRenderTracking === void 0 ? void 0 : rendererRenderTracking.enabled) && jsx(RenderTracking, {
396
- componentProps: this.props,
397
- action: ACTION.RE_RENDERED,
398
- actionSubject: ACTION_SUBJECT.RENDERER,
399
- handleAnalyticsEvent: this.fireAnalyticsEvent,
400
- useShallow: rendererRenderTracking.useShallow
401
- });
402
- return jsx(Fragment, null, reRenderTracking, rendererResult);
391
+ return jsx(Fragment, null, rendererResult);
403
392
  } catch (e) {
404
- var _featureFlags$feature4;
393
+ var _featureFlags$feature2;
405
394
  if (onError) {
406
395
  onError(e);
407
396
  }
@@ -413,7 +402,7 @@ export class Renderer extends PureComponent {
413
402
  allowPlaceholderText: allowPlaceholderText,
414
403
  allowColumnSorting: allowColumnSorting,
415
404
  allowNestedHeaderLinks: allowNestedHeaderLinks,
416
- useBlockRenderForCodeBlock: (_featureFlags$feature4 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature4 !== void 0 ? _featureFlags$feature4 : true,
405
+ useBlockRenderForCodeBlock: (_featureFlags$feature2 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature2 !== void 0 ? _featureFlags$feature2 : true,
417
406
  addTelepointer: this.props.addTelepointer,
418
407
  onClick: handleWrapperOnClick
419
408
  }, jsx(UnsupportedBlock, null));
@@ -1,6 +1,8 @@
1
1
  import { useEffect, useRef } from 'react';
2
+ import { fg } from '@atlaskit/platform-feature-flags';
2
3
  import { useAnnotationRangeDispatch, useAnnotationRangeState } from '../contexts/AnnotationRangeContext';
3
4
  import { isRangeInsideOfRendererContainer } from './utils';
5
+ import { isRoot } from '../../../steps';
4
6
  export const useUserSelectionRange = props => {
5
7
  const {
6
8
  rendererRef: {
@@ -32,6 +34,29 @@ export const useUserSelectionRange = props => {
32
34
  }
33
35
  const _range = sel.getRangeAt(0);
34
36
  if (rendererDOM && isRangeInsideOfRendererContainer(rendererDOM, _range)) {
37
+ if (fg('platform_editor_allow_annotation_triple_click')) {
38
+ const {
39
+ startContainer,
40
+ endContainer,
41
+ commonAncestorContainer
42
+ } = _range;
43
+
44
+ // ED-23493
45
+ // On triple-click in Chrome and Safari, the native Selection API's range has endContainer as a non-text node
46
+ // and commonAncestorContainer as root level div.ak-renderer-document when the node is followed by div or hr.
47
+
48
+ // Triple clicks are the only case that can cause the endContainer to be a non-text node
49
+ // Same check for highlight range logic in confluence/next/packages/comments-util/src/domUtils.ts Line 180
50
+ const isTripleClick = endContainer.nodeType !== Node.TEXT_NODE;
51
+
52
+ // isAnnotationAllowedOnRange range validation is checking if the parent container is root element and disable the comment if it is.
53
+ // platform/packages/editor/renderer/src/steps/index.ts Line 180
54
+
55
+ // This workaround ensures the endContainer is set to a text node when endContainer is non-text and the parent container is the root element
56
+ if (isTripleClick && isRoot(commonAncestorContainer)) {
57
+ _range.setEnd(startContainer, startContainer.length || 0);
58
+ }
59
+ }
35
60
  setRange(_range.cloneRange());
36
61
  }
37
62
  }, 250);
@@ -8,7 +8,6 @@ export var EVENT_TYPE = /*#__PURE__*/function (EVENT_TYPE) {
8
8
  export var ACTION = /*#__PURE__*/function (ACTION) {
9
9
  ACTION["STARTED"] = "started";
10
10
  ACTION["RENDERED"] = "rendered";
11
- ACTION["RE_RENDERED"] = "reRendered";
12
11
  ACTION["RENDERER_TTI"] = "tti";
13
12
  ACTION["CRASHED"] = "unhandledErrorCaught";
14
13
  ACTION["INVALID_PROSEMIRROR_DOCUMENT"] = "invalidProsemirrorDocument";
@@ -49,7 +49,7 @@ var CopyButton = function CopyButton(_ref) {
49
49
  }),
50
50
  onClick: function onClick(event) {
51
51
  fireAnalyticsEvent({
52
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
52
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'.
53
53
  // This error was introduced after upgrading to TypeScript 5
54
54
  action: ACTION.CLICKED,
55
55
  actionSubject: ACTION_SUBJECT.BUTTON,
@@ -51,7 +51,7 @@ var CodeBlockWrapButton = function CodeBlockWrapButton(_ref) {
51
51
  isSelected: wrapLongLines,
52
52
  onClick: function onClick(event) {
53
53
  fireAnalyticsEvent({
54
- // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.RE_RENDERED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
54
+ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.EDITOR_TTI | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'
55
55
  // This error was introduced after upgrading to TypeScript 5
56
56
  action: ACTION.CLICKED,
57
57
  actionSubject: ACTION_SUBJECT.BUTTON,
@@ -120,7 +120,7 @@ function resolveNodePos(node) {
120
120
  }
121
121
  return resolvedPos;
122
122
  }
123
- function isRoot(element) {
123
+ export function isRoot(element) {
124
124
  return !!element && element.classList.contains('ak-renderer-document');
125
125
  }
126
126
  export function resolvePos(node, offset) {
@@ -50,13 +50,12 @@ import { isInteractiveElement } from './click-to-edit';
50
50
  import { RendererContextProvider } from '../../renderer-context';
51
51
  import memoizeOne from 'memoize-one';
52
52
  import { ErrorBoundary } from './ErrorBoundary';
53
- import { RenderTracking } from '../../react/utils/performance/RenderTracking';
54
53
  import { EditorMediaClientProvider } from '../../react/utils/EditorMediaClientProvider';
55
54
  import { nodeToReact } from '../../react/nodes';
56
55
  export var NORMAL_SEVERITY_THRESHOLD = 2000;
57
56
  export var DEGRADED_SEVERITY_THRESHOLD = 3000;
58
57
  var packageName = "@atlaskit/renderer";
59
- var packageVersion = "109.53.1";
58
+ var packageVersion = "109.53.3";
60
59
  export var defaultNodeComponents = nodeToReact;
61
60
  export var Renderer = /*#__PURE__*/function (_PureComponent) {
62
61
  _inherits(Renderer, _PureComponent);
@@ -71,9 +70,7 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
71
70
  */
72
71
  _defineProperty(_assertThisInitialized(_this), "renderedMeasurementDistortedDurationMonitor", getDistortedDurationMonitor());
73
72
  _defineProperty(_assertThisInitialized(_this), "featureFlags", memoizeOne(function (featureFlags) {
74
- var normalizedFeatureFlags = normalizeFeatureFlags(featureFlags, {
75
- objectFlagKeys: ['rendererRenderTracking']
76
- });
73
+ var normalizedFeatureFlags = normalizeFeatureFlags(featureFlags);
77
74
  return {
78
75
  featureFlags: normalizedFeatureFlags
79
76
  };
@@ -360,7 +357,7 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
360
357
  }
361
358
  };
362
359
  try {
363
- var _featureFlags$feature, _featureFlags$feature2;
360
+ var _featureFlags$feature;
364
361
  var schema = this.getSchema(this.props.schema, this.props.adfStage);
365
362
  var _renderDocument = renderDocument(adfDocument, this.serializer, schema, adfStage, this.props.useSpecBasedValidator, this.id, this.fireAnalyticsEvent, this.props.unsupportedContentLevelsTracking, this.props.appearance),
366
363
  result = _renderDocument.result,
@@ -406,17 +403,9 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
406
403
  height: maxHeight,
407
404
  fadeHeight: fadeOutHeight
408
405
  }, rendererOutput) : rendererOutput;
409
- var rendererRenderTracking = featureFlags === null || featureFlags === void 0 || (_featureFlags$feature2 = featureFlags.featureFlags) === null || _featureFlags$feature2 === void 0 || (_featureFlags$feature2 = _featureFlags$feature2.rendererRenderTracking) === null || _featureFlags$feature2 === void 0 ? void 0 : _featureFlags$feature2[ACTION_SUBJECT.RENDERER];
410
- var reRenderTracking = (rendererRenderTracking === null || rendererRenderTracking === void 0 ? void 0 : rendererRenderTracking.enabled) && jsx(RenderTracking, {
411
- componentProps: this.props,
412
- action: ACTION.RE_RENDERED,
413
- actionSubject: ACTION_SUBJECT.RENDERER,
414
- handleAnalyticsEvent: this.fireAnalyticsEvent,
415
- useShallow: rendererRenderTracking.useShallow
416
- });
417
- return jsx(Fragment, null, reRenderTracking, rendererResult);
406
+ return jsx(Fragment, null, rendererResult);
418
407
  } catch (e) {
419
- var _featureFlags$feature3;
408
+ var _featureFlags$feature2;
420
409
  if (onError) {
421
410
  onError(e);
422
411
  }
@@ -428,7 +417,7 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
428
417
  allowPlaceholderText: allowPlaceholderText,
429
418
  allowColumnSorting: allowColumnSorting,
430
419
  allowNestedHeaderLinks: allowNestedHeaderLinks,
431
- useBlockRenderForCodeBlock: (_featureFlags$feature3 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature3 !== void 0 ? _featureFlags$feature3 : true,
420
+ useBlockRenderForCodeBlock: (_featureFlags$feature2 = featureFlags.featureFlags.useBlockRenderForCodeBlock) !== null && _featureFlags$feature2 !== void 0 ? _featureFlags$feature2 : true,
432
421
  addTelepointer: this.props.addTelepointer,
433
422
  onClick: handleWrapperOnClick
434
423
  }, jsx(UnsupportedBlock, null));
@@ -1,6 +1,8 @@
1
1
  import { useEffect, useRef } from 'react';
2
+ import { fg } from '@atlaskit/platform-feature-flags';
2
3
  import { useAnnotationRangeDispatch, useAnnotationRangeState } from '../contexts/AnnotationRangeContext';
3
4
  import { isRangeInsideOfRendererContainer } from './utils';
5
+ import { isRoot } from '../../../steps';
4
6
  export var useUserSelectionRange = function useUserSelectionRange(props) {
5
7
  var rendererDOM = props.rendererRef.current;
6
8
  var selectionTimeoutRef = useRef();
@@ -26,6 +28,27 @@ export var useUserSelectionRange = function useUserSelectionRange(props) {
26
28
  }
27
29
  var _range = sel.getRangeAt(0);
28
30
  if (rendererDOM && isRangeInsideOfRendererContainer(rendererDOM, _range)) {
31
+ if (fg('platform_editor_allow_annotation_triple_click')) {
32
+ var startContainer = _range.startContainer,
33
+ endContainer = _range.endContainer,
34
+ commonAncestorContainer = _range.commonAncestorContainer;
35
+
36
+ // ED-23493
37
+ // On triple-click in Chrome and Safari, the native Selection API's range has endContainer as a non-text node
38
+ // and commonAncestorContainer as root level div.ak-renderer-document when the node is followed by div or hr.
39
+
40
+ // Triple clicks are the only case that can cause the endContainer to be a non-text node
41
+ // Same check for highlight range logic in confluence/next/packages/comments-util/src/domUtils.ts Line 180
42
+ var isTripleClick = endContainer.nodeType !== Node.TEXT_NODE;
43
+
44
+ // isAnnotationAllowedOnRange range validation is checking if the parent container is root element and disable the comment if it is.
45
+ // platform/packages/editor/renderer/src/steps/index.ts Line 180
46
+
47
+ // This workaround ensures the endContainer is set to a text node when endContainer is non-text and the parent container is the root element
48
+ if (isTripleClick && isRoot(commonAncestorContainer)) {
49
+ _range.setEnd(startContainer, startContainer.length || 0);
50
+ }
51
+ }
29
52
  setRange(_range.cloneRange());
30
53
  }
31
54
  }, 250);
@@ -7,7 +7,6 @@ export declare enum EVENT_TYPE {
7
7
  export declare enum ACTION {
8
8
  STARTED = "started",
9
9
  RENDERED = "rendered",
10
- RE_RENDERED = "reRendered",
11
10
  RENDERER_TTI = "tti",
12
11
  CRASHED = "unhandledErrorCaught",
13
12
  INVALID_PROSEMIRROR_DOCUMENT = "invalidProsemirrorDocument",
@@ -1,6 +1,6 @@
1
1
  import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP } from '@atlaskit/editor-common/analytics';
2
2
  import type { AEP } from './enums';
3
- import type { PropsDifference, SEVERITY, ShallowPropsDifference, UNSUPPORTED_CONTENT_LEVEL_SEVERITY } from '@atlaskit/editor-common/utils';
3
+ import type { SEVERITY, UNSUPPORTED_CONTENT_LEVEL_SEVERITY } from '@atlaskit/editor-common/utils';
4
4
  import type { UnsupportedContentPayload, UnsupportedContentTooltipPayload } from '@atlaskit/editor-common/utils';
5
5
  import type { SortOrder } from '@atlaskit/editor-common/types';
6
6
  export declare enum PLATFORM {
@@ -23,11 +23,6 @@ type RendererRenderedAEP = AEP<ACTION.RENDERED, ACTION_SUBJECT.RENDERER, undefin
23
23
  nodes: Record<string, number>;
24
24
  severity?: SEVERITY;
25
25
  }, EVENT_TYPE.OPERATIONAL>;
26
- type RendererReRenderedAEP<Props> = AEP<ACTION.RE_RENDERED, ACTION_SUBJECT.RENDERER, undefined, {
27
- propsDifference: PropsDifference<Props> | ShallowPropsDifference<Props>;
28
- count: number;
29
- componentId?: string;
30
- }, EVENT_TYPE.OPERATIONAL>;
31
26
  export type ComponentCrashErrorAEP = OperationalAEP<ACTION.CRASHED, ACTION_SUBJECT.RENDERER, ACTION_SUBJECT_ID, {
32
27
  platform: PLATFORM.WEB;
33
28
  errorMessage?: string;
@@ -119,5 +114,6 @@ type RendererTTIAEP = AEP<ACTION.RENDERER_TTI, ACTION_SUBJECT.RENDERER, undefine
119
114
  ttiFromInvocation: number;
120
115
  canceled: boolean;
121
116
  }, EVENT_TYPE.OPERATIONAL>;
122
- export type AnalyticsEventPayload<T = void> = RendererStartAEP | RendererRenderedAEP | RendererReRenderedAEP<T> | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | RendererTTIAEP;
117
+ export type AnalyticsEventPayload<T = void> = RendererStartAEP | RendererRenderedAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | RendererTTIAEP;
118
+ export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
123
119
  export {};
@@ -1,5 +1,6 @@
1
1
  import type { Schema } from '@atlaskit/editor-prosemirror/model';
2
2
  import { AddMarkStep } from '@atlaskit/editor-prosemirror/transform';
3
+ export declare function isRoot(element: HTMLElement | null): boolean;
3
4
  export declare function resolvePos(node: Node | null, offset: number, findEnd?: boolean): number | false;
4
5
  interface AnnotationStepOptions {
5
6
  schema: Schema;
@@ -13,21 +13,12 @@ import type { RenderOutputStat } from '../render-document';
13
13
  import type { RendererAppearance, StickyHeaderProps, HeadingAnchorLinksProps, NodeComponentsProps } from './Renderer/types';
14
14
  import type { MediaOptions } from '../types/mediaOptions';
15
15
  import type { SmartLinksOptions } from '../types/smartLinksOptions';
16
- import type { ACTION_SUBJECT } from '@atlaskit/editor-common/analytics';
17
16
  import type { DocNode } from '@atlaskit/adf-schema';
18
17
  import type { TextHighlighter } from '../react/types';
19
18
  export type { NodeComponentsProps } from './Renderer/types';
20
19
  interface RawObjectFeatureFlags {
21
20
  ['renderer-render-tracking']: string;
22
21
  }
23
- export interface NormalizedObjectFeatureFlags {
24
- rendererRenderTracking: {
25
- [ACTION_SUBJECT.RENDERER]: {
26
- enabled: boolean;
27
- useShallow: boolean;
28
- };
29
- };
30
- }
31
22
  export interface RendererProps {
32
23
  document: DocNode;
33
24
  dataProviders?: ProviderFactory;
@@ -7,7 +7,6 @@ export declare enum EVENT_TYPE {
7
7
  export declare enum ACTION {
8
8
  STARTED = "started",
9
9
  RENDERED = "rendered",
10
- RE_RENDERED = "reRendered",
11
10
  RENDERER_TTI = "tti",
12
11
  CRASHED = "unhandledErrorCaught",
13
12
  INVALID_PROSEMIRROR_DOCUMENT = "invalidProsemirrorDocument",
@@ -1,6 +1,6 @@
1
1
  import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP } from '@atlaskit/editor-common/analytics';
2
2
  import type { AEP } from './enums';
3
- import type { PropsDifference, SEVERITY, ShallowPropsDifference, UNSUPPORTED_CONTENT_LEVEL_SEVERITY } from '@atlaskit/editor-common/utils';
3
+ import type { SEVERITY, UNSUPPORTED_CONTENT_LEVEL_SEVERITY } from '@atlaskit/editor-common/utils';
4
4
  import type { UnsupportedContentPayload, UnsupportedContentTooltipPayload } from '@atlaskit/editor-common/utils';
5
5
  import type { SortOrder } from '@atlaskit/editor-common/types';
6
6
  export declare enum PLATFORM {
@@ -23,11 +23,6 @@ type RendererRenderedAEP = AEP<ACTION.RENDERED, ACTION_SUBJECT.RENDERER, undefin
23
23
  nodes: Record<string, number>;
24
24
  severity?: SEVERITY;
25
25
  }, EVENT_TYPE.OPERATIONAL>;
26
- type RendererReRenderedAEP<Props> = AEP<ACTION.RE_RENDERED, ACTION_SUBJECT.RENDERER, undefined, {
27
- propsDifference: PropsDifference<Props> | ShallowPropsDifference<Props>;
28
- count: number;
29
- componentId?: string;
30
- }, EVENT_TYPE.OPERATIONAL>;
31
26
  export type ComponentCrashErrorAEP = OperationalAEP<ACTION.CRASHED, ACTION_SUBJECT.RENDERER, ACTION_SUBJECT_ID, {
32
27
  platform: PLATFORM.WEB;
33
28
  errorMessage?: string;
@@ -119,5 +114,6 @@ type RendererTTIAEP = AEP<ACTION.RENDERER_TTI, ACTION_SUBJECT.RENDERER, undefine
119
114
  ttiFromInvocation: number;
120
115
  canceled: boolean;
121
116
  }, EVENT_TYPE.OPERATIONAL>;
122
- export type AnalyticsEventPayload<T = void> = RendererStartAEP | RendererRenderedAEP | RendererReRenderedAEP<T> | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | RendererTTIAEP;
117
+ export type AnalyticsEventPayload<T = void> = RendererStartAEP | RendererRenderedAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | RendererTTIAEP;
118
+ export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
123
119
  export {};
@@ -1,5 +1,6 @@
1
1
  import type { Schema } from '@atlaskit/editor-prosemirror/model';
2
2
  import { AddMarkStep } from '@atlaskit/editor-prosemirror/transform';
3
+ export declare function isRoot(element: HTMLElement | null): boolean;
3
4
  export declare function resolvePos(node: Node | null, offset: number, findEnd?: boolean): number | false;
4
5
  interface AnnotationStepOptions {
5
6
  schema: Schema;
@@ -13,21 +13,12 @@ import type { RenderOutputStat } from '../render-document';
13
13
  import type { RendererAppearance, StickyHeaderProps, HeadingAnchorLinksProps, NodeComponentsProps } from './Renderer/types';
14
14
  import type { MediaOptions } from '../types/mediaOptions';
15
15
  import type { SmartLinksOptions } from '../types/smartLinksOptions';
16
- import type { ACTION_SUBJECT } from '@atlaskit/editor-common/analytics';
17
16
  import type { DocNode } from '@atlaskit/adf-schema';
18
17
  import type { TextHighlighter } from '../react/types';
19
18
  export type { NodeComponentsProps } from './Renderer/types';
20
19
  interface RawObjectFeatureFlags {
21
20
  ['renderer-render-tracking']: string;
22
21
  }
23
- export interface NormalizedObjectFeatureFlags {
24
- rendererRenderTracking: {
25
- [ACTION_SUBJECT.RENDERER]: {
26
- enabled: boolean;
27
- useShallow: boolean;
28
- };
29
- };
30
- }
31
22
  export interface RendererProps {
32
23
  document: DocNode;
33
24
  dataProviders?: ProviderFactory;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "109.53.1",
3
+ "version": "109.53.3",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -46,7 +46,7 @@
46
46
  "@atlaskit/media-ui": "^25.11.0",
47
47
  "@atlaskit/media-viewer": "^48.7.0",
48
48
  "@atlaskit/platform-feature-flags": "^0.3.0",
49
- "@atlaskit/smart-card": "^28.0.0",
49
+ "@atlaskit/smart-card": "^28.1.0",
50
50
  "@atlaskit/status": "^1.4.0",
51
51
  "@atlaskit/task-decision": "^17.10.0",
52
52
  "@atlaskit/theme": "^13.0.0",
@@ -145,6 +145,9 @@
145
145
  },
146
146
  "platform-fix-table-ssr-resizing": {
147
147
  "type": "boolean"
148
+ },
149
+ "platform_editor_allow_annotation_triple_click": {
150
+ "type": "boolean"
148
151
  }
149
152
  },
150
153
  "af:exports": {
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.RenderTracking = RenderTracking;
8
- var _react = require("react");
9
- var _debounce = _interopRequireDefault(require("lodash/debounce"));
10
- var _useComponentRenderTracking = require("@atlaskit/editor-common/use-component-render-tracking");
11
- var _analytics = require("@atlaskit/editor-common/analytics");
12
- function RenderTracking(props) {
13
- var debouncedHandleAnalyticsEvent = (0, _react.useMemo)(function () {
14
- return (0, _debounce.default)(props.handleAnalyticsEvent, 500);
15
- }, [props.handleAnalyticsEvent]);
16
- (0, _useComponentRenderTracking.useComponentRenderTracking)({
17
- onRender: function onRender(_ref) {
18
- var renderCount = _ref.renderCount,
19
- propsDifference = _ref.propsDifference,
20
- componentId = _ref.componentId;
21
- if (!renderCount) {
22
- return;
23
- }
24
- debouncedHandleAnalyticsEvent({
25
- action: props.action,
26
- actionSubject: props.actionSubject,
27
- attributes: {
28
- count: renderCount,
29
- propsDifference: propsDifference,
30
- componentId: componentId
31
- },
32
- eventType: _analytics.EVENT_TYPE.OPERATIONAL
33
- });
34
- },
35
- propsDiffingOptions: {
36
- enabled: true,
37
- props: props.componentProps,
38
- propsToIgnore: props.propsToIgnore,
39
- useShallow: props.useShallow
40
- },
41
- zeroBasedCount: true
42
- });
43
- return null;
44
- }
@@ -1,36 +0,0 @@
1
- import { useMemo } from 'react';
2
- import debounce from 'lodash/debounce';
3
- import { useComponentRenderTracking } from '@atlaskit/editor-common/use-component-render-tracking';
4
- import { EVENT_TYPE } from '@atlaskit/editor-common/analytics';
5
- export function RenderTracking(props) {
6
- const debouncedHandleAnalyticsEvent = useMemo(() => debounce(props.handleAnalyticsEvent, 500), [props.handleAnalyticsEvent]);
7
- useComponentRenderTracking({
8
- onRender: ({
9
- renderCount,
10
- propsDifference,
11
- componentId
12
- }) => {
13
- if (!renderCount) {
14
- return;
15
- }
16
- debouncedHandleAnalyticsEvent({
17
- action: props.action,
18
- actionSubject: props.actionSubject,
19
- attributes: {
20
- count: renderCount,
21
- propsDifference: propsDifference,
22
- componentId
23
- },
24
- eventType: EVENT_TYPE.OPERATIONAL
25
- });
26
- },
27
- propsDiffingOptions: {
28
- enabled: true,
29
- props: props.componentProps,
30
- propsToIgnore: props.propsToIgnore,
31
- useShallow: props.useShallow
32
- },
33
- zeroBasedCount: true
34
- });
35
- return null;
36
- }
@@ -1,37 +0,0 @@
1
- import { useMemo } from 'react';
2
- import debounce from 'lodash/debounce';
3
- import { useComponentRenderTracking } from '@atlaskit/editor-common/use-component-render-tracking';
4
- import { EVENT_TYPE } from '@atlaskit/editor-common/analytics';
5
- export function RenderTracking(props) {
6
- var debouncedHandleAnalyticsEvent = useMemo(function () {
7
- return debounce(props.handleAnalyticsEvent, 500);
8
- }, [props.handleAnalyticsEvent]);
9
- useComponentRenderTracking({
10
- onRender: function onRender(_ref) {
11
- var renderCount = _ref.renderCount,
12
- propsDifference = _ref.propsDifference,
13
- componentId = _ref.componentId;
14
- if (!renderCount) {
15
- return;
16
- }
17
- debouncedHandleAnalyticsEvent({
18
- action: props.action,
19
- actionSubject: props.actionSubject,
20
- attributes: {
21
- count: renderCount,
22
- propsDifference: propsDifference,
23
- componentId: componentId
24
- },
25
- eventType: EVENT_TYPE.OPERATIONAL
26
- });
27
- },
28
- propsDiffingOptions: {
29
- enabled: true,
30
- props: props.componentProps,
31
- propsToIgnore: props.propsToIgnore,
32
- useShallow: props.useShallow
33
- },
34
- zeroBasedCount: true
35
- });
36
- return null;
37
- }
@@ -1,15 +0,0 @@
1
- import type { AnalyticsEventPayload } from '../../../analytics/events';
2
- import { type ACTION_SUBJECT, type ACTION } from '@atlaskit/editor-common/analytics';
3
- export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
4
- type RenderActions = ACTION.RE_RENDERED;
5
- type RenderActionSubjects = ACTION_SUBJECT.RENDERER;
6
- type RenderTrackingProps<ComponentProps> = {
7
- componentProps: ComponentProps;
8
- action: RenderActions;
9
- actionSubject: RenderActionSubjects;
10
- handleAnalyticsEvent: FireAnalyticsCallback;
11
- propsToIgnore?: Array<keyof ComponentProps>;
12
- useShallow?: boolean;
13
- };
14
- export declare function RenderTracking<Props>(props: RenderTrackingProps<Props>): null;
15
- export {};
@@ -1,15 +0,0 @@
1
- import type { AnalyticsEventPayload } from '../../../analytics/events';
2
- import { type ACTION_SUBJECT, type ACTION } from '@atlaskit/editor-common/analytics';
3
- export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
4
- type RenderActions = ACTION.RE_RENDERED;
5
- type RenderActionSubjects = ACTION_SUBJECT.RENDERER;
6
- type RenderTrackingProps<ComponentProps> = {
7
- componentProps: ComponentProps;
8
- action: RenderActions;
9
- actionSubject: RenderActionSubjects;
10
- handleAnalyticsEvent: FireAnalyticsCallback;
11
- propsToIgnore?: Array<keyof ComponentProps>;
12
- useShallow?: boolean;
13
- };
14
- export declare function RenderTracking<Props>(props: RenderTrackingProps<Props>): null;
15
- export {};