@atlaskit/renderer 130.2.18 → 130.3.1
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 +17 -0
- package/dist/cjs/react/marks/link-emotion.js +1 -1
- package/dist/cjs/react/nodes/bodiedExtension.js +6 -3
- package/dist/cjs/react/nodes/extension.js +41 -11
- package/dist/cjs/react/nodes/panel-emotion.js +1 -1
- package/dist/es2019/react/marks/link-emotion.js +1 -1
- package/dist/es2019/react/nodes/bodiedExtension.js +6 -3
- package/dist/es2019/react/nodes/extension.js +33 -4
- package/dist/es2019/react/nodes/panel-emotion.js +1 -1
- package/dist/esm/react/marks/link-emotion.js +1 -1
- package/dist/esm/react/nodes/bodiedExtension.js +6 -3
- package/dist/esm/react/nodes/extension.js +39 -11
- package/dist/esm/react/nodes/panel-compiled.js +2 -1
- package/dist/esm/react/nodes/panel-emotion.js +3 -2
- package/dist/types/analytics/events.d.ts +6 -2
- package/dist/types/react/nodes/bodiedExtension.d.ts +2 -0
- package/dist/types/react/nodes/extension.d.ts +2 -0
- package/dist/types-ts4.5/analytics/events.d.ts +6 -2
- package/dist/types-ts4.5/react/nodes/bodiedExtension.d.ts +2 -0
- package/dist/types-ts4.5/react/nodes/extension.d.ts +2 -0
- package/package.json +15 -12
- package/renderer.docs.tsx +25 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/renderer
|
|
2
2
|
|
|
3
|
+
## 130.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 130.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`800992939bc88`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/800992939bc88) -
|
|
14
|
+
EDITOR-6751 - Inline bodied extension: fire analytics event when rendering
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 130.2.18
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -19,7 +19,7 @@ var _linkUrl = _interopRequireDefault(require("@atlaskit/smart-card/link-url"));
|
|
|
19
19
|
* Cleanup: delete this file once the experiment has shipped.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
22
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
23
23
|
|
|
24
24
|
var anchorStyles = (0, _react.css)({
|
|
25
25
|
color: "var(--ds-link, #1868DB)",
|
|
@@ -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 =
|
|
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
|
|
63
|
-
|
|
64
|
-
isTopLevel =
|
|
65
|
-
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 (
|
|
110
|
-
var 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 (
|
|
158
|
-
var 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)) {
|
|
@@ -24,7 +24,7 @@ var _excluded = ["backgroundColor", "hasIcon"];
|
|
|
24
24
|
*
|
|
25
25
|
* Cleanup: delete this file once the experiment has shipped.
|
|
26
26
|
*/
|
|
27
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
27
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
28
28
|
// New custom icons are a little smaller than predefined icons.
|
|
29
29
|
// To fix alignment issues with custom icons, vertical alignment is updated.
|
|
30
30
|
var panelEmojiSpriteVerticalAlignment = -(8 * 3 - _consts.akEditorCustomIconSize) / 2;
|
|
@@ -10,7 +10,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
10
10
|
* Cleanup: delete this file once the experiment has shipped.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
13
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
14
14
|
import { css, jsx } from '@emotion/react';
|
|
15
15
|
import LinkUrl from '@atlaskit/smart-card/link-url';
|
|
16
16
|
const anchorStyles = css({
|
|
@@ -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
|
|
@@ -11,7 +11,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
11
11
|
*/
|
|
12
12
|
import React from 'react';
|
|
13
13
|
|
|
14
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
14
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
15
15
|
import { css, jsx } from '@emotion/react';
|
|
16
16
|
import { PanelType } from '@atlaskit/adf-schema';
|
|
17
17
|
import { akEditorCustomIconSize } from '@atlaskit/editor-shared-styles/consts';
|
|
@@ -10,7 +10,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
10
10
|
* Cleanup: delete this file once the experiment has shipped.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
13
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
14
14
|
import { css, jsx } from '@emotion/react';
|
|
15
15
|
import LinkUrl from '@atlaskit/smart-card/link-url';
|
|
16
16
|
var anchorStyles = css({
|
|
@@ -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
|
|
55
|
-
|
|
56
|
-
isTopLevel =
|
|
57
|
-
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 (
|
|
102
|
-
var 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 (
|
|
150
|
-
var 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)) {
|
|
@@ -29,7 +29,7 @@ var panelHasNoIconStyles = null;
|
|
|
29
29
|
var panelNestedIconStyles = null;
|
|
30
30
|
var nestedPanelStyles = null;
|
|
31
31
|
var panelCustomBackground = null;
|
|
32
|
-
|
|
32
|
+
var PanelStyledCompiled = function PanelStyledCompiled(_ref) {
|
|
33
33
|
var backgroundColor = _ref.backgroundColor,
|
|
34
34
|
children = _ref.children,
|
|
35
35
|
className = _ref.className,
|
|
@@ -50,4 +50,5 @@ export var PanelStyledCompiled = function PanelStyledCompiled(_ref) {
|
|
|
50
50
|
})
|
|
51
51
|
}), children);
|
|
52
52
|
};
|
|
53
|
+
export { PanelStyledCompiled };
|
|
53
54
|
PanelStyledCompiled.displayName = 'PanelStyledCompiled';
|
|
@@ -13,7 +13,7 @@ var _excluded = ["backgroundColor", "hasIcon"];
|
|
|
13
13
|
*/
|
|
14
14
|
import React from 'react';
|
|
15
15
|
|
|
16
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- intentional: emotion fallback for compiled migration
|
|
16
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports -- intentional: emotion fallback for compiled migration; `jsx` is used as the JSX pragma (see @jsx jsx above) so must be a value import
|
|
17
17
|
import { css, jsx } from '@emotion/react';
|
|
18
18
|
import { PanelType } from '@atlaskit/adf-schema';
|
|
19
19
|
import { akEditorCustomIconSize } from '@atlaskit/editor-shared-styles/consts';
|
|
@@ -160,7 +160,7 @@ var panelCustomBackground = css({
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
|
-
|
|
163
|
+
var PanelStyledEmotion = function PanelStyledEmotion(_ref) {
|
|
164
164
|
var backgroundColor = _ref.backgroundColor,
|
|
165
165
|
hasIcon = _ref.hasIcon,
|
|
166
166
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -176,4 +176,5 @@ export var PanelStyledEmotion = function PanelStyledEmotion(_ref) {
|
|
|
176
176
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
177
177
|
}, props), props.children);
|
|
178
178
|
};
|
|
179
|
+
export { PanelStyledEmotion };
|
|
179
180
|
PanelStyledEmotion.displayName = 'PanelStyledEmotion';
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "130.3.1",
|
|
4
4
|
"description": "Renderer component",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -30,21 +30,21 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@atlaskit/adf-schema": "^52.
|
|
34
|
-
"@atlaskit/adf-utils": "^19.
|
|
33
|
+
"@atlaskit/adf-schema": "^52.9.0",
|
|
34
|
+
"@atlaskit/adf-utils": "^19.29.0",
|
|
35
35
|
"@atlaskit/afm-i18n-platform-editor-renderer": "2.10.0",
|
|
36
36
|
"@atlaskit/analytics-listeners": "^10.0.0",
|
|
37
37
|
"@atlaskit/analytics-namespaced-context": "^7.2.0",
|
|
38
38
|
"@atlaskit/analytics-next": "^11.2.0",
|
|
39
39
|
"@atlaskit/browser-apis": "^0.0.1",
|
|
40
40
|
"@atlaskit/button": "^23.11.0",
|
|
41
|
-
"@atlaskit/code": "^17.
|
|
41
|
+
"@atlaskit/code": "^17.5.0",
|
|
42
42
|
"@atlaskit/editor-json-transformer": "^8.31.0",
|
|
43
43
|
"@atlaskit/editor-palette": "^2.1.0",
|
|
44
44
|
"@atlaskit/editor-prosemirror": "^7.3.0",
|
|
45
45
|
"@atlaskit/editor-shared-styles": "^3.10.0",
|
|
46
46
|
"@atlaskit/editor-smart-link-draggable": "^0.5.0",
|
|
47
|
-
"@atlaskit/emoji": "^70.
|
|
47
|
+
"@atlaskit/emoji": "^70.3.0",
|
|
48
48
|
"@atlaskit/feature-gate-js-client": "^5.5.0",
|
|
49
49
|
"@atlaskit/icon": "^34.3.0",
|
|
50
50
|
"@atlaskit/link": "^3.4.0",
|
|
@@ -62,14 +62,14 @@
|
|
|
62
62
|
"@atlaskit/platform-feature-flags-react": "^0.4.0",
|
|
63
63
|
"@atlaskit/pragmatic-drag-and-drop": "^1.8.0",
|
|
64
64
|
"@atlaskit/react-ufo": "^5.18.0",
|
|
65
|
-
"@atlaskit/smart-card": "^44.
|
|
65
|
+
"@atlaskit/smart-card": "^44.5.0",
|
|
66
66
|
"@atlaskit/status": "^4.0.0",
|
|
67
67
|
"@atlaskit/task-decision": "^20.0.0",
|
|
68
68
|
"@atlaskit/theme": "^23.2.0",
|
|
69
|
-
"@atlaskit/tmp-editor-statsig": "^74.
|
|
69
|
+
"@atlaskit/tmp-editor-statsig": "^74.7.0",
|
|
70
70
|
"@atlaskit/tokens": "^13.0.0",
|
|
71
|
-
"@atlaskit/tooltip": "^
|
|
72
|
-
"@atlaskit/visually-hidden": "^3.
|
|
71
|
+
"@atlaskit/tooltip": "^22.0.0",
|
|
72
|
+
"@atlaskit/visually-hidden": "^3.1.0",
|
|
73
73
|
"@babel/runtime": "^7.0.0",
|
|
74
74
|
"@compiled/react": "^0.20.0",
|
|
75
75
|
"@emotion/react": "^11.7.1",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"uuid": "^3.1.0"
|
|
81
81
|
},
|
|
82
82
|
"peerDependencies": {
|
|
83
|
-
"@atlaskit/editor-common": "^114.
|
|
83
|
+
"@atlaskit/editor-common": "^114.18.0",
|
|
84
84
|
"@atlaskit/link-provider": "^4.3.0",
|
|
85
85
|
"@atlaskit/media-core": "^37.0.0",
|
|
86
86
|
"react": "^18.2.0",
|
|
@@ -99,8 +99,8 @@
|
|
|
99
99
|
"@atlaskit/media-test-helpers": "^41.0.0",
|
|
100
100
|
"@atlaskit/mention": "^25.0.0",
|
|
101
101
|
"@atlaskit/modal-dialog": "^14.18.0",
|
|
102
|
-
"@atlaskit/navigation-system": "^9.
|
|
103
|
-
"@atlaskit/profilecard": "^25.
|
|
102
|
+
"@atlaskit/navigation-system": "^9.1.0",
|
|
103
|
+
"@atlaskit/profilecard": "^25.2.0",
|
|
104
104
|
"@atlaskit/side-nav-items": "^1.13.0",
|
|
105
105
|
"@atlaskit/util-data-test": "^18.5.0",
|
|
106
106
|
"@atlassian/a11y-jest-testing": "^0.11.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
|
},
|
package/renderer.docs.tsx
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
import path from 'path';
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
import type { ComponentStructuredContentSource } from '@atlassian/structured-docs-types';
|
|
10
9
|
|
|
11
10
|
import packageJson from './package.json';
|
|
@@ -35,11 +34,31 @@ const documentation: ComponentStructuredContentSource[] = [
|
|
|
35
34
|
keywords: ['editor', 'renderer', 'atlaskit'],
|
|
36
35
|
categories: ['editor'],
|
|
37
36
|
examples: [
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
{
|
|
38
|
+
name: 'Basic',
|
|
39
|
+
description: 'Basic ReactRenderer with ADF document.',
|
|
40
|
+
source: path.resolve(packagePath, './examples/0-basic.tsx'),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Full page',
|
|
44
|
+
description: 'Full-page renderer with full ADF.',
|
|
45
|
+
source: path.resolve(packagePath, './examples/0-full-page.tsx'),
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'With providers',
|
|
49
|
+
description: 'Renderer with media and other providers.',
|
|
50
|
+
source: path.resolve(packagePath, './examples/1-with-providers.tsx'),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Full page with media caption',
|
|
54
|
+
description: 'Renderer with media and captions.',
|
|
55
|
+
source: path.resolve(packagePath, './examples/0-full-page-with-media-caption.tsx'),
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Column layout',
|
|
59
|
+
description: 'Renderer with column layout.',
|
|
60
|
+
source: path.resolve(packagePath, './examples/10-column-layout.tsx'),
|
|
61
|
+
},
|
|
43
62
|
],
|
|
44
63
|
},
|
|
45
64
|
];
|