@atlaskit/renderer 112.8.4 → 112.8.6
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 +18 -0
- package/afm-cc/tsconfig.json +3 -0
- package/afm-jira/tsconfig.json +3 -0
- package/afm-post-office/tsconfig.json +3 -0
- package/dist/cjs/react/nodes/heading-anchor.js +6 -4
- package/dist/cjs/react/nodes/heading.js +26 -19
- package/dist/cjs/ui/Renderer/index.js +1 -1
- package/dist/cjs/ui/Renderer/style.js +1 -1
- package/dist/es2019/react/nodes/heading-anchor.js +7 -5
- package/dist/es2019/react/nodes/heading.js +26 -19
- package/dist/es2019/ui/Renderer/index.js +1 -1
- package/dist/es2019/ui/Renderer/style.js +1 -1
- package/dist/esm/react/nodes/heading-anchor.js +6 -4
- package/dist/esm/react/nodes/heading.js +26 -19
- package/dist/esm/ui/Renderer/index.js +1 -1
- package/dist/esm/ui/Renderer/style.js +1 -1
- package/dist/types/react/nodes/heading-anchor.d.ts +10 -2
- package/dist/types-ts4.5/react/nodes/heading-anchor.d.ts +10 -2
- package/package.json +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/renderer
|
|
2
2
|
|
|
3
|
+
## 112.8.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#102045](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/102045)
|
|
8
|
+
[`44f96aff22dd9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/44f96aff22dd9) -
|
|
9
|
+
[ED-26179] clean up platform_editor_elements_dnd_nested_table
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
12
|
+
## 112.8.5
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [#99556](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/99556)
|
|
17
|
+
[`861401744086f`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/861401744086f) -
|
|
18
|
+
[ux] Create VisuallyHidden heading copy button for screen reader & use aria-hidden to hide nested
|
|
19
|
+
heading copy from screen reader
|
|
20
|
+
|
|
3
21
|
## 112.8.4
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/afm-cc/tsconfig.json
CHANGED
|
@@ -104,6 +104,9 @@
|
|
|
104
104
|
{
|
|
105
105
|
"path": "../../../design-system/tooltip/afm-cc/tsconfig.json"
|
|
106
106
|
},
|
|
107
|
+
{
|
|
108
|
+
"path": "../../../design-system/visually-hidden/afm-cc/tsconfig.json"
|
|
109
|
+
},
|
|
107
110
|
{
|
|
108
111
|
"path": "../../../linking-platform/link-provider/afm-cc/tsconfig.json"
|
|
109
112
|
},
|
package/afm-jira/tsconfig.json
CHANGED
|
@@ -104,6 +104,9 @@
|
|
|
104
104
|
{
|
|
105
105
|
"path": "../../../design-system/tooltip/afm-jira/tsconfig.json"
|
|
106
106
|
},
|
|
107
|
+
{
|
|
108
|
+
"path": "../../../design-system/visually-hidden/afm-jira/tsconfig.json"
|
|
109
|
+
},
|
|
107
110
|
{
|
|
108
111
|
"path": "../../../linking-platform/link-provider/afm-jira/tsconfig.json"
|
|
109
112
|
},
|
|
@@ -104,6 +104,9 @@
|
|
|
104
104
|
{
|
|
105
105
|
"path": "../../../design-system/tooltip/afm-post-office/tsconfig.json"
|
|
106
106
|
},
|
|
107
|
+
{
|
|
108
|
+
"path": "../../../design-system/visually-hidden/afm-post-office/tsconfig.json"
|
|
109
|
+
},
|
|
107
110
|
{
|
|
108
111
|
"path": "../../../linking-platform/link-provider/afm-post-office/tsconfig.json"
|
|
109
112
|
},
|
|
@@ -49,9 +49,6 @@ var copyAnchorButtonStyles = (0, _react2.css)({
|
|
|
49
49
|
cursor: 'pointer',
|
|
50
50
|
right: 0
|
|
51
51
|
});
|
|
52
|
-
|
|
53
|
-
// Ignored via go/ees005
|
|
54
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
52
|
// Ignored via go/ees005
|
|
56
53
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
57
54
|
var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
|
|
@@ -111,11 +108,16 @@ var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
111
108
|
_this.setTooltipState(_messages.headingAnchorLinkMessages.copyHeadingLinkToClipboard);
|
|
112
109
|
});
|
|
113
110
|
(0, _defineProperty2.default)(_this, "renderAnchorButton", function () {
|
|
111
|
+
var _this$props$hideFromS = _this.props.hideFromScreenReader,
|
|
112
|
+
hideFromScreenReader = _this$props$hideFromS === void 0 ? false : _this$props$hideFromS;
|
|
114
113
|
return (0, _react2.jsx)("button", {
|
|
114
|
+
"data-testid": "anchor-button",
|
|
115
115
|
css: copyAnchorButtonStyles,
|
|
116
116
|
onMouseLeave: _this.resetMessage,
|
|
117
117
|
onClick: _this.copyToClipboard,
|
|
118
|
-
"aria-
|
|
118
|
+
"aria-hidden": hideFromScreenReader,
|
|
119
|
+
tabIndex: hideFromScreenReader ? undefined : -1,
|
|
120
|
+
"aria-label": hideFromScreenReader ? undefined : _this.state.tooltipMessage,
|
|
119
121
|
type: "button"
|
|
120
122
|
}, (0, _react2.jsx)(_link.default, {
|
|
121
123
|
label: _this.getCopyAriaLabel(),
|
|
@@ -5,8 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
11
|
var _headingAnchor = _interopRequireDefault(require("./heading-anchor"));
|
|
11
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
12
13
|
var _analyticsContext = _interopRequireDefault(require("../../analytics/analyticsContext"));
|
|
@@ -29,7 +30,8 @@ function hasRightAlignmentMark(marks) {
|
|
|
29
30
|
function WrappedHeadingAnchor(_ref) {
|
|
30
31
|
var enableNestedHeaderLinks = _ref.enableNestedHeaderLinks,
|
|
31
32
|
level = _ref.level,
|
|
32
|
-
headingId = _ref.headingId
|
|
33
|
+
headingId = _ref.headingId,
|
|
34
|
+
hideFromScreenReader = _ref.hideFromScreenReader;
|
|
33
35
|
return /*#__PURE__*/_react.default.createElement(_analyticsContext.default.Consumer, null, function (_ref2) {
|
|
34
36
|
var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
|
|
35
37
|
return /*#__PURE__*/_react.default.createElement(_headingAnchor.default, {
|
|
@@ -43,7 +45,8 @@ function WrappedHeadingAnchor(_ref) {
|
|
|
43
45
|
eventType: _analytics.EVENT_TYPE.UI
|
|
44
46
|
});
|
|
45
47
|
return (0, _clipboard.copyTextToClipboard)(getCurrentUrlWithHash(headingId));
|
|
46
|
-
}
|
|
48
|
+
},
|
|
49
|
+
hideFromScreenReader: hideFromScreenReader
|
|
47
50
|
});
|
|
48
51
|
});
|
|
49
52
|
}
|
|
@@ -58,21 +61,25 @@ function Heading(props) {
|
|
|
58
61
|
var isRightAligned = hasRightAlignmentMark(marks);
|
|
59
62
|
var enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
|
|
60
63
|
var headingIdToUse = invisible ? undefined : headingId;
|
|
61
|
-
return (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(HX, {
|
|
65
|
+
id: headingIdToUse,
|
|
66
|
+
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos']
|
|
67
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/_react.default.createElement(WrappedHeadingAnchor, {
|
|
68
|
+
level: props.level,
|
|
69
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
70
|
+
headingId: headingId,
|
|
71
|
+
hideFromScreenReader: (0, _platformFeatureFlags.fg)('platform_editor_accessible_heading_copy_link')
|
|
72
|
+
}), props.children, showAnchorLink && headingId && !isRightAligned && /*#__PURE__*/_react.default.createElement(WrappedHeadingAnchor, {
|
|
73
|
+
level: props.level,
|
|
74
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
75
|
+
headingId: headingId,
|
|
76
|
+
hideFromScreenReader: (0, _platformFeatureFlags.fg)('platform_editor_accessible_heading_copy_link')
|
|
77
|
+
}))), (0, _platformFeatureFlags.fg)('platform_editor_accessible_heading_copy_link') && /*#__PURE__*/_react.default.createElement(_visuallyHidden.default, {
|
|
78
|
+
testId: "visually-hidden-heading-anchor"
|
|
79
|
+
}, showAnchorLink && headingId && /*#__PURE__*/_react.default.createElement(WrappedHeadingAnchor, {
|
|
80
|
+
level: props.level,
|
|
81
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
82
|
+
headingId: headingId
|
|
83
|
+
})));
|
|
77
84
|
}
|
|
78
85
|
var _default = exports.default = Heading;
|
|
@@ -64,7 +64,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
64
64
|
var NORMAL_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = 2000;
|
|
65
65
|
var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
66
66
|
var packageName = "@atlaskit/renderer";
|
|
67
|
-
var packageVersion = "112.8.
|
|
67
|
+
var packageVersion = "112.8.6";
|
|
68
68
|
var setAsQueryContainerStyles = (0, _react2.css)({
|
|
69
69
|
containerName: 'ak-renderer-wrapper',
|
|
70
70
|
containerType: 'inline-size',
|
|
@@ -87,7 +87,7 @@ var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
|
|
|
87
87
|
if (allowNestedHeaderLinks) {
|
|
88
88
|
headingsCss = "\n /**\n * When the sort button is enabled we want the heading's copy link button\n * to reserve space so that it can prematurely wrap to avoid the button\n * being displayed underneath the sort button (hidden or obscured).\n *\n * The two buttons fight each other since the sort button is displayed\n * on hover of the <th /> and the copy link button is displayed on hover\n * of the heading.\n *\n * Note that this can break the WYSIWYG experience in the case where\n * a heading fills the width of the table cell and the only thing which\n * wraps is the copy link button. This is hopefully a rare fringe case.\n */\n .".concat(_headingAnchor.HeadingAnchorWrapperClassName, " {\n position: unset;\n }\n > {\n h1, h2, h3, h4, h5, h6 {\n margin-right: 30px;\n }\n }\n ");
|
|
89
89
|
}
|
|
90
|
-
return (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n\t\t.", " {\n\t\t\tpadding: 0;\n\n\t\t\t.", " {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tpadding: ", ";\n\t\t\t\tborder-width: 1.5px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: transparent;\n\n\t\t\t\t> *:first-child {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + span + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + span + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t@supports selector(:focus-visible) {\n\t\t\t\t\t&:focus {\n\t\t\t\t\t\toutline: unset;\n\t\t\t\t\t}\n\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\tborder-color: ", ";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t", "\n\t\t\t}\n\n\t\t\t", "\n\t\t}\n\t"])), _consts.RendererCssClassName.SORTABLE_COLUMN_WRAPPER, _consts.RendererCssClassName.SORTABLE_COLUMN,
|
|
90
|
+
return (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n\t\t.", " {\n\t\t\tpadding: 0;\n\n\t\t\t.", " {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tpadding: ", "px;\n\t\t\t\tborder-width: 1.5px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: transparent;\n\n\t\t\t\t> *:first-child {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + span + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + span + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t@supports selector(:focus-visible) {\n\t\t\t\t\t&:focus {\n\t\t\t\t\t\toutline: unset;\n\t\t\t\t\t}\n\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\tborder-color: ", ";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t", "\n\t\t\t}\n\n\t\t\t", "\n\t\t}\n\t"])), _consts.RendererCssClassName.SORTABLE_COLUMN_WRAPPER, _consts.RendererCssClassName.SORTABLE_COLUMN, _styles.tableCellPadding, "var(--ds-border-focused, ".concat(colors.B300, ")"), headingsCss, (0, _platformFeatureFlags.fg)('platform_editor_nested_tables_renderer_styles') ? (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\t\t// New styles\n\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\tmargin: 0;\n\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\ttransition: opacity 0.2s ease-in-out;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover:not(\n\t\t\t\t\t\t\t\t:has(\n\t\t\t\t\t\t\t\t\t\t.", "\n\t\t\t\t\t\t\t\t\t\t\t.", ":hover\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t"])), _consts.RendererCssClassName.SORTABLE_COLUMN, _consts.RendererCssClassName.SORTABLE_COLUMN_ICON_WRAPPER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME, _consts.RendererCssClassName.SORTABLE_COLUMN, _consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME, _consts.RendererCssClassName.SORTABLE_COLUMN_WRAPPER, _consts.RendererCssClassName.SORTABLE_COLUMN, _consts.RendererCssClassName.SORTABLE_COLUMN, _consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME) : (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\t\t// old styles\n\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\ttransition: opacity 0.2s ease-in-out;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t"])), _consts.RendererCssClassName.SORTABLE_COLUMN_ICON_WRAPPER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME, _consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME, _consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, _table2.SORTABLE_COLUMN_ICON_CLASSNAME));
|
|
91
91
|
};
|
|
92
92
|
var fullPageStyles = function fullPageStyles(_ref3, _ref4) {
|
|
93
93
|
var appearance = _ref3.appearance;
|
|
@@ -34,10 +34,6 @@ const copyAnchorButtonStyles = css({
|
|
|
34
34
|
cursor: 'pointer',
|
|
35
35
|
right: 0
|
|
36
36
|
});
|
|
37
|
-
|
|
38
|
-
// Ignored via go/ees005
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
|
-
|
|
41
37
|
// Ignored via go/ees005
|
|
42
38
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
43
39
|
class HeadingAnchor extends React.PureComponent {
|
|
@@ -77,11 +73,17 @@ class HeadingAnchor extends React.PureComponent {
|
|
|
77
73
|
this.setTooltipState(headingAnchorLinkMessages.copyHeadingLinkToClipboard);
|
|
78
74
|
});
|
|
79
75
|
_defineProperty(this, "renderAnchorButton", () => {
|
|
76
|
+
const {
|
|
77
|
+
hideFromScreenReader = false
|
|
78
|
+
} = this.props;
|
|
80
79
|
return jsx("button", {
|
|
80
|
+
"data-testid": "anchor-button",
|
|
81
81
|
css: copyAnchorButtonStyles,
|
|
82
82
|
onMouseLeave: this.resetMessage,
|
|
83
83
|
onClick: this.copyToClipboard,
|
|
84
|
-
"aria-
|
|
84
|
+
"aria-hidden": hideFromScreenReader,
|
|
85
|
+
tabIndex: hideFromScreenReader ? undefined : -1,
|
|
86
|
+
"aria-label": hideFromScreenReader ? undefined : this.state.tooltipMessage,
|
|
85
87
|
type: "button"
|
|
86
88
|
}, jsx(LinkIcon, {
|
|
87
89
|
label: this.getCopyAriaLabel(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
import React from 'react';
|
|
2
|
+
import VisuallyHidden from '@atlaskit/visually-hidden';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import HeadingAnchor from './heading-anchor';
|
|
4
5
|
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
|
|
5
6
|
import AnalyticsContext from '../../analytics/analyticsContext';
|
|
@@ -19,7 +20,8 @@ function hasRightAlignmentMark(marks) {
|
|
|
19
20
|
function WrappedHeadingAnchor({
|
|
20
21
|
enableNestedHeaderLinks,
|
|
21
22
|
level,
|
|
22
|
-
headingId
|
|
23
|
+
headingId,
|
|
24
|
+
hideFromScreenReader
|
|
23
25
|
}) {
|
|
24
26
|
return /*#__PURE__*/React.createElement(AnalyticsContext.Consumer, null, ({
|
|
25
27
|
fireAnalyticsEvent
|
|
@@ -34,7 +36,8 @@ function WrappedHeadingAnchor({
|
|
|
34
36
|
eventType: EVENT_TYPE.UI
|
|
35
37
|
});
|
|
36
38
|
return copyTextToClipboard(getCurrentUrlWithHash(headingId));
|
|
37
|
-
}
|
|
39
|
+
},
|
|
40
|
+
hideFromScreenReader: hideFromScreenReader
|
|
38
41
|
}));
|
|
39
42
|
}
|
|
40
43
|
function Heading(props) {
|
|
@@ -50,21 +53,25 @@ function Heading(props) {
|
|
|
50
53
|
const isRightAligned = hasRightAlignmentMark(marks);
|
|
51
54
|
const enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
|
|
52
55
|
const headingIdToUse = invisible ? undefined : headingId;
|
|
53
|
-
return (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HX, {
|
|
57
|
+
id: headingIdToUse,
|
|
58
|
+
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos']
|
|
59
|
+
}, /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
60
|
+
level: props.level,
|
|
61
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
62
|
+
headingId: headingId,
|
|
63
|
+
hideFromScreenReader: fg('platform_editor_accessible_heading_copy_link')
|
|
64
|
+
}), props.children, showAnchorLink && headingId && !isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
65
|
+
level: props.level,
|
|
66
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
67
|
+
headingId: headingId,
|
|
68
|
+
hideFromScreenReader: fg('platform_editor_accessible_heading_copy_link')
|
|
69
|
+
}))), fg('platform_editor_accessible_heading_copy_link') && /*#__PURE__*/React.createElement(VisuallyHidden, {
|
|
70
|
+
testId: "visually-hidden-heading-anchor"
|
|
71
|
+
}, showAnchorLink && headingId && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
72
|
+
level: props.level,
|
|
73
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
74
|
+
headingId: headingId
|
|
75
|
+
})));
|
|
69
76
|
}
|
|
70
77
|
export default Heading;
|
|
@@ -45,7 +45,7 @@ import { TruncatedWrapper } from './truncated-wrapper';
|
|
|
45
45
|
export const NORMAL_SEVERITY_THRESHOLD = 2000;
|
|
46
46
|
export const DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
47
47
|
const packageName = "@atlaskit/renderer";
|
|
48
|
-
const packageVersion = "112.8.
|
|
48
|
+
const packageVersion = "112.8.6";
|
|
49
49
|
const setAsQueryContainerStyles = css({
|
|
50
50
|
containerName: 'ak-renderer-wrapper',
|
|
51
51
|
containerType: 'inline-size',
|
|
@@ -225,7 +225,7 @@ const tableSortableColumnStyle = ({
|
|
|
225
225
|
.${RendererCssClassName.SORTABLE_COLUMN} {
|
|
226
226
|
width: 100%;
|
|
227
227
|
height: 100%;
|
|
228
|
-
padding: ${
|
|
228
|
+
padding: ${tableCellPadding}px;
|
|
229
229
|
border-width: 1.5px;
|
|
230
230
|
border-style: solid;
|
|
231
231
|
border-color: transparent;
|
|
@@ -43,9 +43,6 @@ var copyAnchorButtonStyles = css({
|
|
|
43
43
|
cursor: 'pointer',
|
|
44
44
|
right: 0
|
|
45
45
|
});
|
|
46
|
-
|
|
47
|
-
// Ignored via go/ees005
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
46
|
// Ignored via go/ees005
|
|
50
47
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
51
48
|
var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
|
|
@@ -105,11 +102,16 @@ var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
105
102
|
_this.setTooltipState(headingAnchorLinkMessages.copyHeadingLinkToClipboard);
|
|
106
103
|
});
|
|
107
104
|
_defineProperty(_this, "renderAnchorButton", function () {
|
|
105
|
+
var _this$props$hideFromS = _this.props.hideFromScreenReader,
|
|
106
|
+
hideFromScreenReader = _this$props$hideFromS === void 0 ? false : _this$props$hideFromS;
|
|
108
107
|
return jsx("button", {
|
|
108
|
+
"data-testid": "anchor-button",
|
|
109
109
|
css: copyAnchorButtonStyles,
|
|
110
110
|
onMouseLeave: _this.resetMessage,
|
|
111
111
|
onClick: _this.copyToClipboard,
|
|
112
|
-
"aria-
|
|
112
|
+
"aria-hidden": hideFromScreenReader,
|
|
113
|
+
tabIndex: hideFromScreenReader ? undefined : -1,
|
|
114
|
+
"aria-label": hideFromScreenReader ? undefined : _this.state.tooltipMessage,
|
|
113
115
|
type: "button"
|
|
114
116
|
}, jsx(LinkIcon, {
|
|
115
117
|
label: _this.getCopyAriaLabel(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
import React from 'react';
|
|
2
|
+
import VisuallyHidden from '@atlaskit/visually-hidden';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import HeadingAnchor from './heading-anchor';
|
|
4
5
|
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
|
|
5
6
|
import AnalyticsContext from '../../analytics/analyticsContext';
|
|
@@ -22,7 +23,8 @@ function hasRightAlignmentMark(marks) {
|
|
|
22
23
|
function WrappedHeadingAnchor(_ref) {
|
|
23
24
|
var enableNestedHeaderLinks = _ref.enableNestedHeaderLinks,
|
|
24
25
|
level = _ref.level,
|
|
25
|
-
headingId = _ref.headingId
|
|
26
|
+
headingId = _ref.headingId,
|
|
27
|
+
hideFromScreenReader = _ref.hideFromScreenReader;
|
|
26
28
|
return /*#__PURE__*/React.createElement(AnalyticsContext.Consumer, null, function (_ref2) {
|
|
27
29
|
var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
|
|
28
30
|
return /*#__PURE__*/React.createElement(HeadingAnchor, {
|
|
@@ -36,7 +38,8 @@ function WrappedHeadingAnchor(_ref) {
|
|
|
36
38
|
eventType: EVENT_TYPE.UI
|
|
37
39
|
});
|
|
38
40
|
return copyTextToClipboard(getCurrentUrlWithHash(headingId));
|
|
39
|
-
}
|
|
41
|
+
},
|
|
42
|
+
hideFromScreenReader: hideFromScreenReader
|
|
40
43
|
});
|
|
41
44
|
});
|
|
42
45
|
}
|
|
@@ -51,21 +54,25 @@ function Heading(props) {
|
|
|
51
54
|
var isRightAligned = hasRightAlignmentMark(marks);
|
|
52
55
|
var enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
|
|
53
56
|
var headingIdToUse = invisible ? undefined : headingId;
|
|
54
|
-
return (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HX, {
|
|
58
|
+
id: headingIdToUse,
|
|
59
|
+
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos']
|
|
60
|
+
}, /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
61
|
+
level: props.level,
|
|
62
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
63
|
+
headingId: headingId,
|
|
64
|
+
hideFromScreenReader: fg('platform_editor_accessible_heading_copy_link')
|
|
65
|
+
}), props.children, showAnchorLink && headingId && !isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
66
|
+
level: props.level,
|
|
67
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
68
|
+
headingId: headingId,
|
|
69
|
+
hideFromScreenReader: fg('platform_editor_accessible_heading_copy_link')
|
|
70
|
+
}))), fg('platform_editor_accessible_heading_copy_link') && /*#__PURE__*/React.createElement(VisuallyHidden, {
|
|
71
|
+
testId: "visually-hidden-heading-anchor"
|
|
72
|
+
}, showAnchorLink && headingId && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
73
|
+
level: props.level,
|
|
74
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
75
|
+
headingId: headingId
|
|
76
|
+
})));
|
|
70
77
|
}
|
|
71
78
|
export default Heading;
|
|
@@ -54,7 +54,7 @@ import { TruncatedWrapper } from './truncated-wrapper';
|
|
|
54
54
|
export var NORMAL_SEVERITY_THRESHOLD = 2000;
|
|
55
55
|
export var DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
56
56
|
var packageName = "@atlaskit/renderer";
|
|
57
|
-
var packageVersion = "112.8.
|
|
57
|
+
var packageVersion = "112.8.6";
|
|
58
58
|
var setAsQueryContainerStyles = css({
|
|
59
59
|
containerName: 'ak-renderer-wrapper',
|
|
60
60
|
containerType: 'inline-size',
|
|
@@ -77,7 +77,7 @@ var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
|
|
|
77
77
|
if (allowNestedHeaderLinks) {
|
|
78
78
|
headingsCss = "\n /**\n * When the sort button is enabled we want the heading's copy link button\n * to reserve space so that it can prematurely wrap to avoid the button\n * being displayed underneath the sort button (hidden or obscured).\n *\n * The two buttons fight each other since the sort button is displayed\n * on hover of the <th /> and the copy link button is displayed on hover\n * of the heading.\n *\n * Note that this can break the WYSIWYG experience in the case where\n * a heading fills the width of the table cell and the only thing which\n * wraps is the copy link button. This is hopefully a rare fringe case.\n */\n .".concat(HeadingAnchorWrapperClassName, " {\n position: unset;\n }\n > {\n h1, h2, h3, h4, h5, h6 {\n margin-right: 30px;\n }\n }\n ");
|
|
79
79
|
}
|
|
80
|
-
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n\t\t.", " {\n\t\t\tpadding: 0;\n\n\t\t\t.", " {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tpadding: ", ";\n\t\t\t\tborder-width: 1.5px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: transparent;\n\n\t\t\t\t> *:first-child {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + span + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + span + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t@supports selector(:focus-visible) {\n\t\t\t\t\t&:focus {\n\t\t\t\t\t\toutline: unset;\n\t\t\t\t\t}\n\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\tborder-color: ", ";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t", "\n\t\t\t}\n\n\t\t\t", "\n\t\t}\n\t"])), RendererCssClassName.SORTABLE_COLUMN_WRAPPER, RendererCssClassName.SORTABLE_COLUMN,
|
|
80
|
+
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n\t\t.", " {\n\t\t\tpadding: 0;\n\n\t\t\t.", " {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tpadding: ", "px;\n\t\t\t\tborder-width: 1.5px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: transparent;\n\n\t\t\t\t> *:first-child {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + span + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + span + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t@supports selector(:focus-visible) {\n\t\t\t\t\t&:focus {\n\t\t\t\t\t\toutline: unset;\n\t\t\t\t\t}\n\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\tborder-color: ", ";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t", "\n\t\t\t}\n\n\t\t\t", "\n\t\t}\n\t"])), RendererCssClassName.SORTABLE_COLUMN_WRAPPER, RendererCssClassName.SORTABLE_COLUMN, tableCellPadding, "var(--ds-border-focused, ".concat(colors.B300, ")"), headingsCss, fg('platform_editor_nested_tables_renderer_styles') ? css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n\t\t\t\t\t\t// New styles\n\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\tmargin: 0;\n\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\ttransition: opacity 0.2s ease-in-out;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover:not(\n\t\t\t\t\t\t\t\t:has(\n\t\t\t\t\t\t\t\t\t\t.", "\n\t\t\t\t\t\t\t\t\t\t\t.", ":hover\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t> .", "\n\t\t\t\t\t\t\t> .", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t"])), RendererCssClassName.SORTABLE_COLUMN, RendererCssClassName.SORTABLE_COLUMN_ICON_WRAPPER, SORTABLE_COLUMN_ICON_CLASSNAME, RendererCssClassName.SORTABLE_COLUMN, RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, SORTABLE_COLUMN_ICON_CLASSNAME, RendererCssClassName.SORTABLE_COLUMN_WRAPPER, RendererCssClassName.SORTABLE_COLUMN, RendererCssClassName.SORTABLE_COLUMN, RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, SORTABLE_COLUMN_ICON_CLASSNAME) : css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n\t\t\t\t\t\t// old styles\n\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\ttransition: opacity 0.2s ease-in-out;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\t.", " {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t"])), RendererCssClassName.SORTABLE_COLUMN_ICON_WRAPPER, SORTABLE_COLUMN_ICON_CLASSNAME, RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, SORTABLE_COLUMN_ICON_CLASSNAME, RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, SORTABLE_COLUMN_ICON_CLASSNAME));
|
|
81
81
|
};
|
|
82
82
|
var fullPageStyles = function fullPageStyles(_ref3, _ref4) {
|
|
83
83
|
var appearance = _ref3.appearance;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { WrappedComponentProps } from 'react-intl-next';
|
|
2
3
|
export declare const HeadingAnchorWrapperClassName = "heading-anchor-wrapper";
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
type Props = {
|
|
5
|
+
onCopyText: () => Promise<void>;
|
|
6
|
+
enableNestedHeaderLinks?: boolean;
|
|
7
|
+
level: number;
|
|
8
|
+
hideFromScreenReader?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type HeadingAnchorProps = Props & React.PropsWithChildren<unknown> & WrappedComponentProps;
|
|
11
|
+
declare const _default: React.FC<import("react-intl-next").WithIntlProps<HeadingAnchorProps>> & {
|
|
12
|
+
WrappedComponent: React.ComponentType<HeadingAnchorProps>;
|
|
5
13
|
};
|
|
6
14
|
export default _default;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { WrappedComponentProps } from 'react-intl-next';
|
|
2
3
|
export declare const HeadingAnchorWrapperClassName = "heading-anchor-wrapper";
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
type Props = {
|
|
5
|
+
onCopyText: () => Promise<void>;
|
|
6
|
+
enableNestedHeaderLinks?: boolean;
|
|
7
|
+
level: number;
|
|
8
|
+
hideFromScreenReader?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type HeadingAnchorProps = Props & React.PropsWithChildren<unknown> & WrappedComponentProps;
|
|
11
|
+
declare const _default: React.FC<import("react-intl-next").WithIntlProps<HeadingAnchorProps>> & {
|
|
12
|
+
WrappedComponent: React.ComponentType<HeadingAnchorProps>;
|
|
5
13
|
};
|
|
6
14
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/renderer",
|
|
3
|
-
"version": "112.8.
|
|
3
|
+
"version": "112.8.6",
|
|
4
4
|
"description": "Renderer component",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@atlaskit/analytics-next": "^10.2.0",
|
|
30
30
|
"@atlaskit/button": "^20.3.0",
|
|
31
31
|
"@atlaskit/code": "^15.6.0",
|
|
32
|
-
"@atlaskit/editor-common": "^99.
|
|
32
|
+
"@atlaskit/editor-common": "^99.1.0",
|
|
33
33
|
"@atlaskit/editor-json-transformer": "^8.21.0",
|
|
34
34
|
"@atlaskit/editor-palette": "1.6.4",
|
|
35
35
|
"@atlaskit/editor-prosemirror": "6.2.1",
|
|
@@ -46,13 +46,14 @@
|
|
|
46
46
|
"@atlaskit/media-ui": "^27.3.0",
|
|
47
47
|
"@atlaskit/media-viewer": "^49.6.0",
|
|
48
48
|
"@atlaskit/platform-feature-flags": "^0.3.0",
|
|
49
|
-
"@atlaskit/smart-card": "^34.
|
|
49
|
+
"@atlaskit/smart-card": "^34.1.0",
|
|
50
50
|
"@atlaskit/status": "^1.8.0",
|
|
51
51
|
"@atlaskit/task-decision": "^17.11.0",
|
|
52
52
|
"@atlaskit/theme": "^14.0.0",
|
|
53
|
-
"@atlaskit/tmp-editor-statsig": "^2.
|
|
53
|
+
"@atlaskit/tmp-editor-statsig": "^2.34.0",
|
|
54
54
|
"@atlaskit/tokens": "^3.0.0",
|
|
55
55
|
"@atlaskit/tooltip": "^19.0.0",
|
|
56
|
+
"@atlaskit/visually-hidden": "^1.5.0",
|
|
56
57
|
"@babel/runtime": "^7.0.0",
|
|
57
58
|
"@emotion/react": "^11.7.1",
|
|
58
59
|
"lodash": "^4.17.21",
|
|
@@ -174,6 +175,9 @@
|
|
|
174
175
|
},
|
|
175
176
|
"platform_editor_legacy_content_macro": {
|
|
176
177
|
"type": "boolean"
|
|
178
|
+
},
|
|
179
|
+
"platform_editor_accessible_heading_copy_link": {
|
|
180
|
+
"type": "boolean"
|
|
177
181
|
}
|
|
178
182
|
},
|
|
179
183
|
"af:exports": {
|