@atlaskit/renderer 130.2.18 → 130.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 130.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`800992939bc88`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/800992939bc88) -
8
+ EDITOR-6751 - Inline bodied extension: fire analytics event when rendering
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
3
14
  ## 130.2.18
4
15
 
5
16
  ### Patch Changes
@@ -28,7 +28,8 @@ var BodiedExtension = function BodiedExtension(props) {
28
28
  parameters = props.parameters,
29
29
  extensionViewportSizes = props.extensionViewportSizes,
30
30
  localId = props.localId,
31
- shouldDisplayExtensionAsInline = props.shouldDisplayExtensionAsInline;
31
+ shouldDisplayExtensionAsInline = props.shouldDisplayExtensionAsInline,
32
+ fireAnalyticsEvent = props.fireAnalyticsEvent;
32
33
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
33
34
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
34
35
  var removeOverflow = _react.default.Children.toArray(children)
@@ -66,7 +67,8 @@ var BodiedExtension = function BodiedExtension(props) {
66
67
  // Return the content directly if it's a valid JSX.Element
67
68
  return (0, _extension.renderExtension)(result, layout, {
68
69
  isTopLevel: path.length < 1,
69
- rendererAppearance: props.rendererAppearance
70
+ rendererAppearance: props.rendererAppearance,
71
+ fireAnalyticsEvent: fireAnalyticsEvent
70
72
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
71
73
  }
72
74
  } catch (_unused) {
@@ -77,7 +79,8 @@ var BodiedExtension = function BodiedExtension(props) {
77
79
  // Always return default content if anything goes wrong
78
80
  return (0, _extension.renderExtension)(children, layout, {
79
81
  isTopLevel: path.length < 1,
80
- rendererAppearance: props.rendererAppearance
82
+ rendererAppearance: props.rendererAppearance,
83
+ fireAnalyticsEvent: fireAnalyticsEvent
81
84
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
82
85
  }))));
83
86
  };
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.renderExtension = exports.default = void 0;
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _react = require("@emotion/react");
10
- var _react2 = _interopRequireDefault(require("react"));
11
+ var _react2 = _interopRequireWildcard(require("react"));
12
+ var _analytics = require("@atlaskit/editor-common/analytics");
11
13
  var _ExtensionRenderer = _interopRequireDefault(require("../../ui/ExtensionRenderer"));
12
14
  var _ui = require("@atlaskit/editor-common/ui");
13
15
  var _utils = require("@atlaskit/editor-common/utils");
@@ -15,6 +17,7 @@ var _consts = require("../../consts");
15
17
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
16
18
  var _breakout = require("../utils/breakout");
17
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
21
  /**
19
22
  * @jsxRuntime classic
20
23
  * @jsx jsx
@@ -46,6 +49,28 @@ var getViewportSize = function getViewportSize(extensionId, extensionViewportSiz
46
49
  var containerStyle = (0, _react.css)({
47
50
  containerType: 'inline-size'
48
51
  });
52
+ /**
53
+ * Fires an analytics event once on mount when a bodied extension is rendered as an inline element.
54
+ * The node is stored in a ref to avoid re-firing if the node reference changes.
55
+ */
56
+ var FireExtensionAsInlineAnalytics = function FireExtensionAsInlineAnalytics(_ref) {
57
+ var fireAnalyticsEvent = _ref.fireAnalyticsEvent,
58
+ node = _ref.node;
59
+ var nodeRef = (0, _react2.useRef)(node);
60
+ (0, _react2.useEffect)(function () {
61
+ fireAnalyticsEvent({
62
+ action: _analytics.ACTION.RENDERED,
63
+ actionSubject: _analytics.ACTION_SUBJECT.EXTENSION_AS_INLINE,
64
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.EXTENSION_BODIED,
65
+ attributes: {
66
+ extensionKey: nodeRef.current.extensionKey,
67
+ extensionType: nodeRef.current.extensionType
68
+ },
69
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL
70
+ });
71
+ }, [fireAnalyticsEvent]);
72
+ return null;
73
+ };
49
74
  var renderExtension = exports.renderExtension = function renderExtension(content, layout) {
50
75
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
51
76
  var removeOverflow = arguments.length > 3 ? arguments[3] : undefined;
@@ -59,10 +84,11 @@ var renderExtension = exports.renderExtension = function renderExtension(content
59
84
  var overflowContainerClass = !removeOverflow ? _consts.RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER : '';
60
85
 
61
86
  // by default, we assume the extension is at top level, (direct child of doc node)
62
- var _ref = options || {},
63
- _ref$isTopLevel = _ref.isTopLevel,
64
- isTopLevel = _ref$isTopLevel === void 0 ? true : _ref$isTopLevel,
65
- rendererAppearance = _ref.rendererAppearance;
87
+ var _ref2 = options || {},
88
+ _ref2$isTopLevel = _ref2.isTopLevel,
89
+ isTopLevel = _ref2$isTopLevel === void 0 ? true : _ref2$isTopLevel,
90
+ rendererAppearance = _ref2.rendererAppearance,
91
+ fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
66
92
  // we should only use custom layout for full-page appearance
67
93
  var canUseCustomLayout = (0, _expValEquals.expValEquals)('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? rendererAppearance === 'full-page' : true;
68
94
  var isCustomLayout = isTopLevel && ['wide', 'full-width'].includes(layout) && canUseCustomLayout;
@@ -77,6 +103,10 @@ var renderExtension = exports.renderExtension = function renderExtension(content
77
103
  var extensionHeight = nodeHeight || viewportSize;
78
104
  var isInline = (shouldDisplayExtensionAsInline === null || shouldDisplayExtensionAsInline === void 0 ? void 0 : shouldDisplayExtensionAsInline(node)) && (0, _expValEquals.expValEquals)('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true);
79
105
  var inlineClassName = isInline ? _consts.RendererCssClassName.EXTENSION_AS_INLINE : '';
106
+ var asInlineAnalytics = isInline && fireAnalyticsEvent && node && (0, _platformFeatureFlags.fg)('platform_editor_render_inline_extension_analytics') ? (0, _react.jsx)(FireExtensionAsInlineAnalytics, {
107
+ fireAnalyticsEvent: fireAnalyticsEvent,
108
+ node: node
109
+ }) : null;
80
110
  if ((0, _expValEquals.expValEquals)('platform_editor_renderer_extension_width_fix', 'isEnabled', true)) {
81
111
  var extensionDiv = (0, _react.jsx)("div", {
82
112
  ref: options.handleRef
@@ -100,14 +130,14 @@ var renderExtension = exports.renderExtension = function renderExtension(content
100
130
  ,
101
131
  className: "".concat(_consts.RendererCssClassName.EXTENSION_INNER_WRAPPER, " ").concat(overflowContainerClass),
102
132
  css: [!isInsideOfInlineExtension && (0, _platformFeatureFlags.fg)('platform_fix_macro_renders_in_layouts') && containerStyle]
103
- }, content));
133
+ }, asInlineAnalytics, content));
104
134
  return centerAlignClass && (0, _expValEquals.expValEquals)('platform_editor_flex_based_centering', 'isEnabled', true) ? (0, _react.jsx)("div", {
105
135
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
106
136
  className: _consts.RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + _consts.RendererCssClassName.FLEX_CENTER_WRAPPER
107
137
  }, extensionDiv) : extensionDiv;
108
138
  }
109
- return (0, _react.jsx)(_ui.WidthConsumer, null, function (_ref2) {
110
- var width = _ref2.width;
139
+ return (0, _react.jsx)(_ui.WidthConsumer, null, function (_ref3) {
140
+ var width = _ref3.width;
111
141
  var extensionDiv = (0, _react.jsx)("div", {
112
142
  ref: options.handleRef
113
143
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
@@ -129,7 +159,7 @@ var renderExtension = exports.renderExtension = function renderExtension(content
129
159
  ,
130
160
  className: "".concat(_consts.RendererCssClassName.EXTENSION_INNER_WRAPPER, " ").concat(overflowContainerClass),
131
161
  css: [!isInsideOfInlineExtension && (0, _platformFeatureFlags.fg)('platform_fix_macro_renders_in_layouts') && containerStyle]
132
- }, content));
162
+ }, asInlineAnalytics, content));
133
163
  return centerAlignClass && (0, _expValEquals.expValEquals)('platform_editor_flex_based_centering', 'isEnabled', true) ? (0, _react.jsx)("div", {
134
164
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
135
165
  className: _consts.RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + _consts.RendererCssClassName.FLEX_CENTER_WRAPPER
@@ -154,8 +184,8 @@ var Extension = function Extension(props) {
154
184
  // eslint-disable-next-line react/jsx-props-no-spreading
155
185
  , (0, _extends2.default)({}, props, {
156
186
  type: "extension"
157
- }), function (_ref3) {
158
- var result = _ref3.result;
187
+ }), function (_ref4) {
188
+ var result = _ref4.result;
159
189
  try {
160
190
  // Return the result directly if it's a valid JSX.Element
161
191
  if (result && /*#__PURE__*/_react2.default.isValidElement(result)) {
@@ -71,7 +71,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
71
71
  var TABLE_INFO_TIMEOUT = 10000;
72
72
  var RENDER_EVENT_SAMPLE_RATE = 0.2;
73
73
  var packageName = "@atlaskit/renderer";
74
- var packageVersion = "0.0.0-development";
74
+ var packageVersion = "130.2.18";
75
75
  var setAsQueryContainerStyles = (0, _react2.css)({
76
76
  containerName: 'ak-renderer-wrapper',
77
77
  containerType: 'inline-size'
@@ -18,7 +18,8 @@ const BodiedExtension = props => {
18
18
  parameters,
19
19
  extensionViewportSizes,
20
20
  localId,
21
- shouldDisplayExtensionAsInline
21
+ shouldDisplayExtensionAsInline,
22
+ fireAnalyticsEvent
22
23
  } = props;
23
24
  const {
24
25
  createAnalyticsEvent
@@ -55,7 +56,8 @@ const BodiedExtension = props => {
55
56
  // Return the content directly if it's a valid JSX.Element
56
57
  return renderExtension(result, layout, {
57
58
  isTopLevel: path.length < 1,
58
- rendererAppearance: props.rendererAppearance
59
+ rendererAppearance: props.rendererAppearance,
60
+ fireAnalyticsEvent
59
61
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
60
62
  }
61
63
  } catch {
@@ -66,7 +68,8 @@ const BodiedExtension = props => {
66
68
  // Always return default content if anything goes wrong
67
69
  return renderExtension(children, layout, {
68
70
  isTopLevel: path.length < 1,
69
- rendererAppearance: props.rendererAppearance
71
+ rendererAppearance: props.rendererAppearance,
72
+ fireAnalyticsEvent
70
73
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
71
74
  }))));
72
75
  };
@@ -6,7 +6,8 @@ import _extends from "@babel/runtime/helpers/extends";
6
6
 
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
8
  import { jsx, css } from '@emotion/react';
9
- import React from 'react';
9
+ import React, { useEffect, useRef } from 'react';
10
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
10
11
  import ExtensionRenderer from '../../ui/ExtensionRenderer';
11
12
  import { overflowShadow, WidthConsumer } from '@atlaskit/editor-common/ui';
12
13
  import { calcBreakoutWidth } from '@atlaskit/editor-common/utils';
@@ -36,13 +37,37 @@ const getViewportSize = (extensionId, extensionViewportSizes) => {
36
37
  const containerStyle = css({
37
38
  containerType: 'inline-size'
38
39
  });
40
+ /**
41
+ * Fires an analytics event once on mount when a bodied extension is rendered as an inline element.
42
+ * The node is stored in a ref to avoid re-firing if the node reference changes.
43
+ */
44
+ const FireExtensionAsInlineAnalytics = ({
45
+ fireAnalyticsEvent,
46
+ node
47
+ }) => {
48
+ const nodeRef = useRef(node);
49
+ useEffect(() => {
50
+ fireAnalyticsEvent({
51
+ action: ACTION.RENDERED,
52
+ actionSubject: ACTION_SUBJECT.EXTENSION_AS_INLINE,
53
+ actionSubjectId: ACTION_SUBJECT_ID.EXTENSION_BODIED,
54
+ attributes: {
55
+ extensionKey: nodeRef.current.extensionKey,
56
+ extensionType: nodeRef.current.extensionType
57
+ },
58
+ eventType: EVENT_TYPE.OPERATIONAL
59
+ });
60
+ }, [fireAnalyticsEvent]);
61
+ return null;
62
+ };
39
63
  export const renderExtension = (content, layout, options = {}, removeOverflow, extensionId, extensionViewportSizes, nodeHeight, localId, shouldDisplayExtensionAsInline, node, isInsideOfInlineExtension) => {
40
64
  const overflowContainerClass = !removeOverflow ? RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER : '';
41
65
 
42
66
  // by default, we assume the extension is at top level, (direct child of doc node)
43
67
  const {
44
68
  isTopLevel = true,
45
- rendererAppearance
69
+ rendererAppearance,
70
+ fireAnalyticsEvent
46
71
  } = options || {};
47
72
  // we should only use custom layout for full-page appearance
48
73
  const canUseCustomLayout = expValEquals('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? rendererAppearance === 'full-page' : true;
@@ -58,6 +83,10 @@ export const renderExtension = (content, layout, options = {}, removeOverflow, e
58
83
  const extensionHeight = nodeHeight || viewportSize;
59
84
  const isInline = (shouldDisplayExtensionAsInline === null || shouldDisplayExtensionAsInline === void 0 ? void 0 : shouldDisplayExtensionAsInline(node)) && expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true);
60
85
  const inlineClassName = isInline ? RendererCssClassName.EXTENSION_AS_INLINE : '';
86
+ const asInlineAnalytics = isInline && fireAnalyticsEvent && node && fg('platform_editor_render_inline_extension_analytics') ? jsx(FireExtensionAsInlineAnalytics, {
87
+ fireAnalyticsEvent: fireAnalyticsEvent,
88
+ node: node
89
+ }) : null;
61
90
  if (expValEquals('platform_editor_renderer_extension_width_fix', 'isEnabled', true)) {
62
91
  const extensionDiv = jsx("div", {
63
92
  ref: options.handleRef
@@ -81,7 +110,7 @@ export const renderExtension = (content, layout, options = {}, removeOverflow, e
81
110
  ,
82
111
  className: `${RendererCssClassName.EXTENSION_INNER_WRAPPER} ${overflowContainerClass}`,
83
112
  css: [!isInsideOfInlineExtension && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
84
- }, content));
113
+ }, asInlineAnalytics, content));
85
114
  return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
86
115
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
87
116
  className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
@@ -111,7 +140,7 @@ export const renderExtension = (content, layout, options = {}, removeOverflow, e
111
140
  ,
112
141
  className: `${RendererCssClassName.EXTENSION_INNER_WRAPPER} ${overflowContainerClass}`,
113
142
  css: [!isInsideOfInlineExtension && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
114
- }, content));
143
+ }, asInlineAnalytics, content));
115
144
  return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
116
145
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
117
146
  className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
@@ -57,7 +57,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
57
57
  const TABLE_INFO_TIMEOUT = 10000;
58
58
  const RENDER_EVENT_SAMPLE_RATE = 0.2;
59
59
  const packageName = "@atlaskit/renderer";
60
- const packageVersion = "0.0.0-development";
60
+ const packageVersion = "130.2.18";
61
61
  const setAsQueryContainerStyles = css({
62
62
  containerName: 'ak-renderer-wrapper',
63
63
  containerType: 'inline-size'
@@ -19,7 +19,8 @@ var BodiedExtension = function BodiedExtension(props) {
19
19
  parameters = props.parameters,
20
20
  extensionViewportSizes = props.extensionViewportSizes,
21
21
  localId = props.localId,
22
- shouldDisplayExtensionAsInline = props.shouldDisplayExtensionAsInline;
22
+ shouldDisplayExtensionAsInline = props.shouldDisplayExtensionAsInline,
23
+ fireAnalyticsEvent = props.fireAnalyticsEvent;
23
24
  var _useAnalyticsEvents = useAnalyticsEvents(),
24
25
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
25
26
  var removeOverflow = React.Children.toArray(children)
@@ -57,7 +58,8 @@ var BodiedExtension = function BodiedExtension(props) {
57
58
  // Return the content directly if it's a valid JSX.Element
58
59
  return renderExtension(result, layout, {
59
60
  isTopLevel: path.length < 1,
60
- rendererAppearance: props.rendererAppearance
61
+ rendererAppearance: props.rendererAppearance,
62
+ fireAnalyticsEvent: fireAnalyticsEvent
61
63
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
62
64
  }
63
65
  } catch (_unused) {
@@ -68,7 +70,8 @@ var BodiedExtension = function BodiedExtension(props) {
68
70
  // Always return default content if anything goes wrong
69
71
  return renderExtension(children, layout, {
70
72
  isTopLevel: path.length < 1,
71
- rendererAppearance: props.rendererAppearance
73
+ rendererAppearance: props.rendererAppearance,
74
+ fireAnalyticsEvent: fireAnalyticsEvent
72
75
  }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node);
73
76
  }))));
74
77
  };
@@ -6,7 +6,8 @@ import _extends from "@babel/runtime/helpers/extends";
6
6
 
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
8
  import { jsx, css } from '@emotion/react';
9
- import React from 'react';
9
+ import React, { useEffect, useRef } from 'react';
10
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
10
11
  import ExtensionRenderer from '../../ui/ExtensionRenderer';
11
12
  import { overflowShadow, WidthConsumer } from '@atlaskit/editor-common/ui';
12
13
  import { calcBreakoutWidth } from '@atlaskit/editor-common/utils';
@@ -38,6 +39,28 @@ var getViewportSize = function getViewportSize(extensionId, extensionViewportSiz
38
39
  var containerStyle = css({
39
40
  containerType: 'inline-size'
40
41
  });
42
+ /**
43
+ * Fires an analytics event once on mount when a bodied extension is rendered as an inline element.
44
+ * The node is stored in a ref to avoid re-firing if the node reference changes.
45
+ */
46
+ var FireExtensionAsInlineAnalytics = function FireExtensionAsInlineAnalytics(_ref) {
47
+ var fireAnalyticsEvent = _ref.fireAnalyticsEvent,
48
+ node = _ref.node;
49
+ var nodeRef = useRef(node);
50
+ useEffect(function () {
51
+ fireAnalyticsEvent({
52
+ action: ACTION.RENDERED,
53
+ actionSubject: ACTION_SUBJECT.EXTENSION_AS_INLINE,
54
+ actionSubjectId: ACTION_SUBJECT_ID.EXTENSION_BODIED,
55
+ attributes: {
56
+ extensionKey: nodeRef.current.extensionKey,
57
+ extensionType: nodeRef.current.extensionType
58
+ },
59
+ eventType: EVENT_TYPE.OPERATIONAL
60
+ });
61
+ }, [fireAnalyticsEvent]);
62
+ return null;
63
+ };
41
64
  export var renderExtension = function renderExtension(content, layout) {
42
65
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
43
66
  var removeOverflow = arguments.length > 3 ? arguments[3] : undefined;
@@ -51,10 +74,11 @@ export var renderExtension = function renderExtension(content, layout) {
51
74
  var overflowContainerClass = !removeOverflow ? RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER : '';
52
75
 
53
76
  // by default, we assume the extension is at top level, (direct child of doc node)
54
- var _ref = options || {},
55
- _ref$isTopLevel = _ref.isTopLevel,
56
- isTopLevel = _ref$isTopLevel === void 0 ? true : _ref$isTopLevel,
57
- rendererAppearance = _ref.rendererAppearance;
77
+ var _ref2 = options || {},
78
+ _ref2$isTopLevel = _ref2.isTopLevel,
79
+ isTopLevel = _ref2$isTopLevel === void 0 ? true : _ref2$isTopLevel,
80
+ rendererAppearance = _ref2.rendererAppearance,
81
+ fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
58
82
  // we should only use custom layout for full-page appearance
59
83
  var canUseCustomLayout = expValEquals('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? rendererAppearance === 'full-page' : true;
60
84
  var isCustomLayout = isTopLevel && ['wide', 'full-width'].includes(layout) && canUseCustomLayout;
@@ -69,6 +93,10 @@ export var renderExtension = function renderExtension(content, layout) {
69
93
  var extensionHeight = nodeHeight || viewportSize;
70
94
  var isInline = (shouldDisplayExtensionAsInline === null || shouldDisplayExtensionAsInline === void 0 ? void 0 : shouldDisplayExtensionAsInline(node)) && expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true);
71
95
  var inlineClassName = isInline ? RendererCssClassName.EXTENSION_AS_INLINE : '';
96
+ var asInlineAnalytics = isInline && fireAnalyticsEvent && node && fg('platform_editor_render_inline_extension_analytics') ? jsx(FireExtensionAsInlineAnalytics, {
97
+ fireAnalyticsEvent: fireAnalyticsEvent,
98
+ node: node
99
+ }) : null;
72
100
  if (expValEquals('platform_editor_renderer_extension_width_fix', 'isEnabled', true)) {
73
101
  var extensionDiv = jsx("div", {
74
102
  ref: options.handleRef
@@ -92,14 +120,14 @@ export var renderExtension = function renderExtension(content, layout) {
92
120
  ,
93
121
  className: "".concat(RendererCssClassName.EXTENSION_INNER_WRAPPER, " ").concat(overflowContainerClass),
94
122
  css: [!isInsideOfInlineExtension && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
95
- }, content));
123
+ }, asInlineAnalytics, content));
96
124
  return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
97
125
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
98
126
  className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
99
127
  }, extensionDiv) : extensionDiv;
100
128
  }
101
- return jsx(WidthConsumer, null, function (_ref2) {
102
- var width = _ref2.width;
129
+ return jsx(WidthConsumer, null, function (_ref3) {
130
+ var width = _ref3.width;
103
131
  var extensionDiv = jsx("div", {
104
132
  ref: options.handleRef
105
133
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
@@ -121,7 +149,7 @@ export var renderExtension = function renderExtension(content, layout) {
121
149
  ,
122
150
  className: "".concat(RendererCssClassName.EXTENSION_INNER_WRAPPER, " ").concat(overflowContainerClass),
123
151
  css: [!isInsideOfInlineExtension && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
124
- }, content));
152
+ }, asInlineAnalytics, content));
125
153
  return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
126
154
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
127
155
  className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
@@ -146,8 +174,8 @@ var Extension = function Extension(props) {
146
174
  // eslint-disable-next-line react/jsx-props-no-spreading
147
175
  , _extends({}, props, {
148
176
  type: "extension"
149
- }), function (_ref3) {
150
- var result = _ref3.result;
177
+ }), function (_ref4) {
178
+ var result = _ref4.result;
151
179
  try {
152
180
  // Return the result directly if it's a valid JSX.Element
153
181
  if (result && /*#__PURE__*/React.isValidElement(result)) {
@@ -62,7 +62,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
62
62
  var TABLE_INFO_TIMEOUT = 10000;
63
63
  var RENDER_EVENT_SAMPLE_RATE = 0.2;
64
64
  var packageName = "@atlaskit/renderer";
65
- var packageVersion = "0.0.0-development";
65
+ var packageVersion = "130.2.18";
66
66
  var setAsQueryContainerStyles = css({
67
67
  containerName: 'ak-renderer-wrapper',
68
68
  containerType: 'inline-size'
@@ -1,4 +1,4 @@
1
- import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP, ExperienceEventPayload, TABLE_ACTION, SyncedBlockSSRErrorAEP } from '@atlaskit/editor-common/analytics';
1
+ import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP, ExperienceEventPayload, TABLE_ACTION, SyncedBlockSSRErrorAEP, ExtensionType } from '@atlaskit/editor-common/analytics';
2
2
  import type { AEP } from './enums';
3
3
  import type { SortOrder } from '@atlaskit/editor-common/types';
4
4
  import type { SEVERITY, UNSUPPORTED_CONTENT_LEVEL_SEVERITY, UnsupportedContentPayload, UnsupportedContentTooltipPayload } from '@atlaskit/editor-common/utils';
@@ -172,6 +172,10 @@ type ReferenceSyncedBlockUpdateErrorAEP = OperationalAEP<ACTION.ERROR, ACTION_SU
172
172
  error: string;
173
173
  resourceId?: string;
174
174
  }>;
175
- export type AnalyticsEventPayload<_T = void> = RendererStartAEP | RendererRenderedAEP | RendererRenderedSampledAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | HoverLabelAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | TableWidthInfoAEP | TableRendererHeightInfoAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | NestedTableTransformedAEP | NativeEmbedsTransformedAEP | MediaRenderErrorEvent | SyncedBlockFetchErrorAEP | SyncedBlockGetSourceInfoErrorAEP | SyncedBlockSSRErrorAEP | ReferenceSyncedBlockUpdateErrorAEP | SyncedBlockFetchSuccessAEP | ExperienceEventPayload;
175
+ type ExtensionRenderedAsInlineAEP = OperationalAEP<ACTION.RENDERED, ACTION_SUBJECT.EXTENSION_AS_INLINE, ExtensionType, {
176
+ extensionKey: string;
177
+ extensionType: string;
178
+ }>;
179
+ export type AnalyticsEventPayload<_T = void> = RendererStartAEP | RendererRenderedAEP | RendererRenderedSampledAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | HoverLabelAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | TableWidthInfoAEP | TableRendererHeightInfoAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | NestedTableTransformedAEP | NativeEmbedsTransformedAEP | MediaRenderErrorEvent | SyncedBlockFetchErrorAEP | SyncedBlockGetSourceInfoErrorAEP | SyncedBlockSSRErrorAEP | ReferenceSyncedBlockUpdateErrorAEP | SyncedBlockFetchSuccessAEP | ExperienceEventPayload | ExtensionRenderedAsInlineAEP;
176
180
  export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
177
181
  export {};
@@ -6,12 +6,14 @@ import type { ExtensionLayout } from '@atlaskit/adf-schema';
6
6
  import type { ExtensionHandlers, ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
7
7
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
8
8
  import type { RendererAppearance } from '../../ui/Renderer/types';
9
+ import type { AnalyticsEventPayload } from '../../analytics/events';
9
10
  interface Props {
10
11
  content?: any;
11
12
  extensionHandlers?: ExtensionHandlers;
12
13
  extensionKey: string;
13
14
  extensionType: string;
14
15
  extensionViewportSizes?: ExtensionViewportSize[];
16
+ fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void;
15
17
  layout?: ExtensionLayout;
16
18
  localId?: string;
17
19
  marks?: PMMark[];
@@ -10,6 +10,7 @@ import type { ExtensionHandlers, ExtensionParams, Parameters } from '@atlaskit/e
10
10
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
11
11
  import type { OverflowShadowProps, OverflowShadowState, ShadowObserver } from '@atlaskit/editor-common/ui';
12
12
  import type { RendererAppearance } from '../../ui/Renderer/types';
13
+ import type { AnalyticsEventPayload } from '../../analytics/events';
13
14
  interface Props {
14
15
  extensionHandlers?: ExtensionHandlers;
15
16
  extensionKey: string;
@@ -32,6 +33,7 @@ type AllOrNone<T> = T | {
32
33
  [K in keyof T]?: never;
33
34
  };
34
35
  type RenderExtensionOptions = {
36
+ fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void;
35
37
  isTopLevel?: boolean;
36
38
  rendererAppearance?: RendererAppearance;
37
39
  } & AllOrNone<OverflowShadowProps>;
@@ -1,4 +1,4 @@
1
- import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP, ExperienceEventPayload, TABLE_ACTION, SyncedBlockSSRErrorAEP } from '@atlaskit/editor-common/analytics';
1
+ import type { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, OperationalAEP, ExperienceEventPayload, TABLE_ACTION, SyncedBlockSSRErrorAEP, ExtensionType } from '@atlaskit/editor-common/analytics';
2
2
  import type { AEP } from './enums';
3
3
  import type { SortOrder } from '@atlaskit/editor-common/types';
4
4
  import type { SEVERITY, UNSUPPORTED_CONTENT_LEVEL_SEVERITY, UnsupportedContentPayload, UnsupportedContentTooltipPayload } from '@atlaskit/editor-common/utils';
@@ -172,6 +172,10 @@ type ReferenceSyncedBlockUpdateErrorAEP = OperationalAEP<ACTION.ERROR, ACTION_SU
172
172
  error: string;
173
173
  resourceId?: string;
174
174
  }>;
175
- export type AnalyticsEventPayload<_T = void> = RendererStartAEP | RendererRenderedAEP | RendererRenderedSampledAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | HoverLabelAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | TableWidthInfoAEP | TableRendererHeightInfoAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | NestedTableTransformedAEP | NativeEmbedsTransformedAEP | MediaRenderErrorEvent | SyncedBlockFetchErrorAEP | SyncedBlockGetSourceInfoErrorAEP | SyncedBlockSSRErrorAEP | ReferenceSyncedBlockUpdateErrorAEP | SyncedBlockFetchSuccessAEP | ExperienceEventPayload;
175
+ type ExtensionRenderedAsInlineAEP = OperationalAEP<ACTION.RENDERED, ACTION_SUBJECT.EXTENSION_AS_INLINE, ExtensionType, {
176
+ extensionKey: string;
177
+ extensionType: string;
178
+ }>;
179
+ export type AnalyticsEventPayload<_T = void> = RendererStartAEP | RendererRenderedAEP | RendererRenderedSampledAEP | ComponentCrashErrorAEP | RendererUnsupportedContentLevelsTrackingSucceeded | RendererUnsupportedContentLevelsTrackingErrored | RendererSelectAllCaughtAEP | RendererSelectAllEscapedAEP | CodeBlockCopyAEP | CodeBlockWrapAEP | HeadingAnchorLinkButtonAEP | HoverLabelAEP | AnchorLinkAEP | TableSortColumnNotAllowedAEP | TableSortColumnAEP | TableWidthInfoAEP | TableRendererHeightInfoAEP | VisitLinkAEP | VisitMediaLinkAEP | ExpandAEP | UnsupportedContentPayload | UnsupportedContentTooltipPayload | AnnotationAEP | AnnotationDeleteAEP | MediaLnkTransformedAEP | InvalidProsemirrorDocumentErrorAEP | NestedTableTransformedAEP | NativeEmbedsTransformedAEP | MediaRenderErrorEvent | SyncedBlockFetchErrorAEP | SyncedBlockGetSourceInfoErrorAEP | SyncedBlockSSRErrorAEP | ReferenceSyncedBlockUpdateErrorAEP | SyncedBlockFetchSuccessAEP | ExperienceEventPayload | ExtensionRenderedAsInlineAEP;
176
180
  export type FireAnalyticsCallback = <T = void>(payload: AnalyticsEventPayload<T>) => void | undefined;
177
181
  export {};
@@ -6,12 +6,14 @@ import type { ExtensionLayout } from '@atlaskit/adf-schema';
6
6
  import type { ExtensionHandlers, ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
7
7
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
8
8
  import type { RendererAppearance } from '../../ui/Renderer/types';
9
+ import type { AnalyticsEventPayload } from '../../analytics/events';
9
10
  interface Props {
10
11
  content?: any;
11
12
  extensionHandlers?: ExtensionHandlers;
12
13
  extensionKey: string;
13
14
  extensionType: string;
14
15
  extensionViewportSizes?: ExtensionViewportSize[];
16
+ fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void;
15
17
  layout?: ExtensionLayout;
16
18
  localId?: string;
17
19
  marks?: PMMark[];
@@ -10,6 +10,7 @@ import type { ExtensionHandlers, ExtensionParams, Parameters } from '@atlaskit/e
10
10
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
11
11
  import type { OverflowShadowProps, OverflowShadowState, ShadowObserver } from '@atlaskit/editor-common/ui';
12
12
  import type { RendererAppearance } from '../../ui/Renderer/types';
13
+ import type { AnalyticsEventPayload } from '../../analytics/events';
13
14
  interface Props {
14
15
  extensionHandlers?: ExtensionHandlers;
15
16
  extensionKey: string;
@@ -32,6 +33,7 @@ type AllOrNone<T> = T | {
32
33
  [K in keyof T]?: never;
33
34
  };
34
35
  type RenderExtensionOptions = {
36
+ fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void;
35
37
  isTopLevel?: boolean;
36
38
  rendererAppearance?: RendererAppearance;
37
39
  } & AllOrNone<OverflowShadowProps>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "130.2.18",
3
+ "version": "130.3.0",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -80,7 +80,7 @@
80
80
  "uuid": "^3.1.0"
81
81
  },
82
82
  "peerDependencies": {
83
- "@atlaskit/editor-common": "^114.15.0",
83
+ "@atlaskit/editor-common": "^114.16.0",
84
84
  "@atlaskit/link-provider": "^4.3.0",
85
85
  "@atlaskit/media-core": "^37.0.0",
86
86
  "react": "^18.2.0",
@@ -140,6 +140,9 @@
140
140
  }
141
141
  },
142
142
  "platform-feature-flags": {
143
+ "platform_editor_render_inline_extension_analytics": {
144
+ "type": "boolean"
145
+ },
143
146
  "confluence_frontend_fix_date_hydration_error": {
144
147
  "type": "boolean"
145
148
  },