@atlaskit/renderer 126.2.2 → 126.2.4
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 +15 -0
- package/dist/cjs/react/index.js +12 -4
- package/dist/cjs/react/nodes/emoji.js +4 -8
- package/dist/cjs/react/nodes/heading.js +3 -1
- package/dist/cjs/react/nodes/paragraph.js +4 -2
- package/dist/cjs/react/utils/{merge-inlined-extension.js → markBlockAsInline.js} +29 -53
- package/dist/cjs/ui/Renderer/RendererStyleContainer.js +21 -19
- package/dist/cjs/ui/Renderer/index.js +1 -1
- package/dist/es2019/react/index.js +10 -2
- package/dist/es2019/react/nodes/emoji.js +3 -7
- package/dist/es2019/react/nodes/heading.js +3 -1
- package/dist/es2019/react/nodes/paragraph.js +4 -2
- package/dist/es2019/react/utils/markBlockAsInline.js +47 -0
- package/dist/es2019/ui/Renderer/RendererStyleContainer.js +14 -5
- package/dist/es2019/ui/Renderer/index.js +1 -1
- package/dist/esm/react/index.js +12 -4
- package/dist/esm/react/nodes/emoji.js +3 -7
- package/dist/esm/react/nodes/heading.js +3 -1
- package/dist/esm/react/nodes/paragraph.js +4 -2
- package/dist/esm/react/utils/{merge-inlined-extension.js → markBlockAsInline.js} +27 -52
- package/dist/esm/ui/Renderer/RendererStyleContainer.js +21 -19
- package/dist/esm/ui/Renderer/index.js +1 -1
- package/dist/types/react/index.d.ts +1 -0
- package/dist/types/react/nodes/emoji.d.ts +3 -10
- package/dist/types/react/nodes/paragraph.d.ts +1 -1
- package/dist/types/react/types.d.ts +1 -0
- package/dist/types/react/utils/markBlockAsInline.d.ts +10 -0
- package/dist/types-ts4.5/react/index.d.ts +1 -0
- package/dist/types-ts4.5/react/nodes/emoji.d.ts +3 -10
- package/dist/types-ts4.5/react/nodes/paragraph.d.ts +1 -1
- package/dist/types-ts4.5/react/types.d.ts +1 -0
- package/dist/types-ts4.5/react/utils/markBlockAsInline.d.ts +10 -0
- package/package.json +7 -3
- package/dist/es2019/react/utils/merge-inlined-extension.js +0 -75
- package/dist/types/react/utils/merge-inlined-extension.d.ts +0 -25
- package/dist/types-ts4.5/react/utils/merge-inlined-extension.d.ts +0 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/renderer
|
|
2
2
|
|
|
3
|
+
## 126.2.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`16e318bcceb16`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/16e318bcceb16) -
|
|
8
|
+
[ux] EDITOR-4603 - Inline Bodied Extension: Can not create inline comments on merged text nodes
|
|
9
|
+
|
|
10
|
+
## 126.2.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`dac15aa628811`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dac15aa628811) -
|
|
15
|
+
[ux] fix wrapped media/embed link is displayed out of border in synced block
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
3
18
|
## 126.2.2
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/cjs/react/index.js
CHANGED
|
@@ -29,7 +29,7 @@ var _rendererNode = require("./renderer-node");
|
|
|
29
29
|
var _renderTextSegments = require("./utils/render-text-segments");
|
|
30
30
|
var _segmentText = require("./utils/segment-text");
|
|
31
31
|
var _getStandaloneBackgroundColorMarks = require("./utils/getStandaloneBackgroundColorMarks");
|
|
32
|
-
var
|
|
32
|
+
var _markBlockAsInline = require("./utils/markBlockAsInline");
|
|
33
33
|
var _excluded = ["key"];
|
|
34
34
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
35
35
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -65,6 +65,7 @@ var ReactSerializer = exports.default = /*#__PURE__*/function () {
|
|
|
65
65
|
(0, _defineProperty2.default)(this, "surroundTextNodesWithTextWrapper", false);
|
|
66
66
|
(0, _defineProperty2.default)(this, "allowAnnotations", false);
|
|
67
67
|
(0, _defineProperty2.default)(this, "standaloneBackgroundColorMarks", []);
|
|
68
|
+
(0, _defineProperty2.default)(this, "inlinePositions", new Set());
|
|
68
69
|
(0, _defineProperty2.default)(this, "serializeFragmentChild", function (node, _ref) {
|
|
69
70
|
var index = _ref.index,
|
|
70
71
|
parentInfo = _ref.parentInfo;
|
|
@@ -642,6 +643,7 @@ var ReactSerializer = exports.default = /*#__PURE__*/function () {
|
|
|
642
643
|
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
643
644
|
var startPos = this.startPos + path.length;
|
|
644
645
|
return _objectSpread({
|
|
646
|
+
asInline: this.inlinePositions.has(startPos) ? 'on' : undefined,
|
|
645
647
|
text: node.text,
|
|
646
648
|
providers: this.providers,
|
|
647
649
|
eventHandlers: this.eventHandlers,
|
|
@@ -768,14 +770,20 @@ var ReactSerializer = exports.default = /*#__PURE__*/function () {
|
|
|
768
770
|
}, {
|
|
769
771
|
key: "getChildNodes",
|
|
770
772
|
value: function getChildNodes(fragment) {
|
|
773
|
+
var _this8 = this;
|
|
771
774
|
var children = [];
|
|
772
775
|
fragment.forEach(function (node) {
|
|
773
776
|
children.push(node);
|
|
774
777
|
});
|
|
775
778
|
children = (0, _nodes.mergeTextNodes)(children);
|
|
776
779
|
if (!!this.shouldDisplayExtensionAsInline && (0, _expValEquals.expValEquals)('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true)) {
|
|
777
|
-
|
|
780
|
+
(0, _markBlockAsInline.markBlockAsInline)({
|
|
778
781
|
nodes: children,
|
|
782
|
+
onMark: function onMark(_ref5) {
|
|
783
|
+
var pos = _ref5.pos;
|
|
784
|
+
_this8.inlinePositions.add(pos);
|
|
785
|
+
},
|
|
786
|
+
parentPos: this.startPos,
|
|
779
787
|
shouldDisplayExtensionAsInline: this.shouldDisplayExtensionAsInline
|
|
780
788
|
});
|
|
781
789
|
}
|
|
@@ -792,9 +800,9 @@ var ReactSerializer = exports.default = /*#__PURE__*/function () {
|
|
|
792
800
|
}, {
|
|
793
801
|
key: "buildMarkStructure",
|
|
794
802
|
value: function buildMarkStructure(content) {
|
|
795
|
-
var
|
|
803
|
+
var _this9 = this;
|
|
796
804
|
return mergeMarks(content.map(function (node) {
|
|
797
|
-
var nodeMarks =
|
|
805
|
+
var nodeMarks = _this9.getMarks(node);
|
|
798
806
|
if (nodeMarks.length === 0) {
|
|
799
807
|
return node;
|
|
800
808
|
}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.default = exports.EmojiItemComponent = void 0;
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -96,7 +96,7 @@ var EmojiNode = /*#__PURE__*/function (_PureComponent) {
|
|
|
96
96
|
(0, _defineProperty2.default)(EmojiNode, "defaultProps", {
|
|
97
97
|
showTooltip: true
|
|
98
98
|
});
|
|
99
|
-
function
|
|
99
|
+
var EmojiItemComponent = exports.EmojiItemComponent = function EmojiItemComponent(props) {
|
|
100
100
|
var id = props.id,
|
|
101
101
|
providers = props.providers,
|
|
102
102
|
shortName = props.shortName,
|
|
@@ -128,9 +128,5 @@ function EmojiItem(props) {
|
|
|
128
128
|
fitToHeight: fitToHeight,
|
|
129
129
|
resourceConfig: resourceConfig
|
|
130
130
|
});
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Working around an issue with pre existing tests using react-test-renderer
|
|
134
|
-
// https://github.com/facebook/react/issues/17301#issuecomment-557765213
|
|
135
|
-
EmojiItem.defaultProps = {};
|
|
136
|
-
var _default = exports.default = /*#__PURE__*/(0, _react2.memo)(EmojiItem);
|
|
131
|
+
};
|
|
132
|
+
var _default = exports.default = /*#__PURE__*/(0, _react2.memo)(EmojiItemComponent);
|
|
@@ -57,7 +57,8 @@ function Heading(props) {
|
|
|
57
57
|
allowHeadingAnchorLinks = props.allowHeadingAnchorLinks,
|
|
58
58
|
marks = props.marks,
|
|
59
59
|
invisible = props.invisible,
|
|
60
|
-
localId = props.localId
|
|
60
|
+
localId = props.localId,
|
|
61
|
+
asInline = props.asInline;
|
|
61
62
|
var HX = "h".concat(props.level);
|
|
62
63
|
var mouseEntered = _react.default.useRef(false);
|
|
63
64
|
var showAnchorLink = !!props.showAnchorLink;
|
|
@@ -77,6 +78,7 @@ function Heading(props) {
|
|
|
77
78
|
id: headingIdToUse,
|
|
78
79
|
"data-local-id": localId,
|
|
79
80
|
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos'],
|
|
81
|
+
"data-as-inline": asInline,
|
|
80
82
|
onMouseEnter: mouseEnterHandler
|
|
81
83
|
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/_react.default.createElement(WrappedHeadingAnchor, {
|
|
82
84
|
level: props.level,
|
|
@@ -11,7 +11,8 @@ var _inline = _interopRequireDefault(require("./inline"));
|
|
|
11
11
|
function Paragraph(_ref) {
|
|
12
12
|
var children = _ref.children,
|
|
13
13
|
dataAttributes = _ref.dataAttributes,
|
|
14
|
-
localId = _ref.localId
|
|
14
|
+
localId = _ref.localId,
|
|
15
|
+
asInline = _ref.asInline;
|
|
15
16
|
return (
|
|
16
17
|
/*#__PURE__*/
|
|
17
18
|
// ignore the eslint warning Text primitive does not support dataAttributes
|
|
@@ -19,7 +20,8 @@ function Paragraph(_ref) {
|
|
|
19
20
|
// Ignored via go/ees005
|
|
20
21
|
// eslint-disable-next-line react/jsx-props-no-spreading, @atlaskit/design-system/use-primitives-text
|
|
21
22
|
_react.default.createElement("p", (0, _extends2.default)({}, dataAttributes, {
|
|
22
|
-
"data-local-id": localId
|
|
23
|
+
"data-local-id": localId,
|
|
24
|
+
"data-as-inline": asInline
|
|
23
25
|
}), /*#__PURE__*/_react.default.createElement(_inline.default, null, children))
|
|
24
26
|
);
|
|
25
27
|
}
|
|
@@ -1,34 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
exports.
|
|
7
|
+
exports.markBlockAsInline = markBlockAsInline;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
7
9
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
8
10
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
9
11
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
10
|
-
|
|
11
|
-
* Merges extensions (displayed as inline) with adjacent textblocks
|
|
12
|
-
*
|
|
13
|
-
* Input:
|
|
14
|
-
* [
|
|
15
|
-
* { type: 'paragraph', content: [ { type: 'text', text: 'Hello' } ] },
|
|
16
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
17
|
-
* { type: 'paragraph', content: [ { type: 'text', text: '!' } ] },
|
|
18
|
-
* ]
|
|
19
|
-
*
|
|
20
|
-
* Output:
|
|
21
|
-
* [
|
|
22
|
-
* { type: 'paragraph', content: [
|
|
23
|
-
* { type: 'text', text: 'Hello' },
|
|
24
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
25
|
-
* { type: 'text', text: '!' }
|
|
26
|
-
* ] },
|
|
27
|
-
* ]
|
|
28
|
-
*/
|
|
29
|
-
function mergeInlinedExtension(_ref) {
|
|
12
|
+
function markBlockAsInline(_ref) {
|
|
30
13
|
var nodes = _ref.nodes,
|
|
14
|
+
onMark = _ref.onMark,
|
|
15
|
+
parentPos = _ref.parentPos,
|
|
31
16
|
shouldDisplayExtensionAsInline = _ref.shouldDisplayExtensionAsInline;
|
|
17
|
+
if (!nodes || nodes.length === 0 || nodes[0].isInline) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
32
20
|
function isInlineBodiedExtension(node) {
|
|
33
21
|
var _node$attrs, _node$attrs2, _node$attrs3, _node$attrs4;
|
|
34
22
|
return Boolean((node === null || node === void 0 ? void 0 : node.type.name) === 'bodiedExtension' && shouldDisplayExtensionAsInline({
|
|
@@ -41,52 +29,40 @@ function mergeInlinedExtension(_ref) {
|
|
|
41
29
|
}));
|
|
42
30
|
}
|
|
43
31
|
try {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var newNodes = [];
|
|
49
|
-
var _iterator = _createForOfIteratorHelper(nodes),
|
|
32
|
+
var prevPos = parentPos;
|
|
33
|
+
var pos = parentPos;
|
|
34
|
+
var prevTextBlockType;
|
|
35
|
+
var _iterator = _createForOfIteratorHelper(nodes.entries()),
|
|
50
36
|
_step;
|
|
51
37
|
try {
|
|
52
38
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!previousNode) {
|
|
58
|
-
newNodes.push(node);
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
39
|
+
var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
|
|
40
|
+
index = _step$value[0],
|
|
41
|
+
node = _step$value[1];
|
|
42
|
+
var prevNode = nodes[index - 1];
|
|
61
43
|
|
|
62
44
|
// textblock + inlinedBodiedExtension
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
else if (node.isTextblock && previousNode.isTextblock && isInlineBodiedExtension(previousNode.content.lastChild)) {
|
|
68
|
-
newNodes[newNodes.length - 1] = previousNode.copy(previousNode.content.append(node.content));
|
|
45
|
+
if (prevNode !== null && prevNode !== void 0 && prevNode.isTextblock && isInlineBodiedExtension(node)) {
|
|
46
|
+
onMark({
|
|
47
|
+
pos: prevPos
|
|
48
|
+
});
|
|
69
49
|
}
|
|
70
50
|
// inlinedBodiedExtension + textblock
|
|
71
|
-
else if (isInlineBodiedExtension(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
else if (isInlineBodiedExtension(previousNode) && !node.isTextblock) {
|
|
76
|
-
newNodes[newNodes.length - 1] = node.type.schema.nodes.paragraph.create(null, previousNode);
|
|
77
|
-
newNodes.push(node);
|
|
51
|
+
else if (isInlineBodiedExtension(prevNode) && node.isTextblock && (!prevTextBlockType || node.type === prevTextBlockType)) {
|
|
52
|
+
onMark({
|
|
53
|
+
pos: pos
|
|
54
|
+
});
|
|
78
55
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
newNodes.push(node);
|
|
56
|
+
if (!isInlineBodiedExtension(node)) {
|
|
57
|
+
prevTextBlockType = node.isTextblock ? node.type : undefined;
|
|
82
58
|
}
|
|
59
|
+
prevPos = pos;
|
|
60
|
+
pos += node.nodeSize;
|
|
83
61
|
}
|
|
84
62
|
} catch (err) {
|
|
85
63
|
_iterator.e(err);
|
|
86
64
|
} finally {
|
|
87
65
|
_iterator.f();
|
|
88
66
|
}
|
|
89
|
-
return newNodes;
|
|
90
67
|
} catch (_unused) {}
|
|
91
|
-
return nodes;
|
|
92
68
|
}
|
|
@@ -30,7 +30,7 @@ var _emoji = require("@atlaskit/editor-common/emoji");
|
|
|
30
30
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
31
31
|
var _syncBlock = require("@atlaskit/editor-common/sync-block");
|
|
32
32
|
var _css, _css7;
|
|
33
|
-
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles */
|
|
33
|
+
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-selectors */
|
|
34
34
|
/* eslint-disable @atlaskit/ui-styling-standard/no-imported-style-values */
|
|
35
35
|
/* eslint-disable @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-values */
|
|
36
36
|
/**
|
|
@@ -709,23 +709,21 @@ var extensionStyle = (0, _react.css)({
|
|
|
709
709
|
fontSize: 'var(--ak-renderer-base-font-size)'
|
|
710
710
|
}
|
|
711
711
|
});
|
|
712
|
-
var extensionAsInlineStyle = (0, _react.css)({
|
|
713
|
-
'
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
'
|
|
726
|
-
|
|
727
|
-
}
|
|
728
|
-
});
|
|
712
|
+
var extensionAsInlineStyle = (0, _react.css)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, ".".concat(_consts.RendererCssClassName.DOCUMENT, " [data-as-inline=\"on\"]"), {
|
|
713
|
+
display: 'inline-block'
|
|
714
|
+
}), ".".concat(_consts.RendererCssClassName.DOCUMENT, " .").concat(_consts.RendererCssClassName.EXTENSION_AS_INLINE), {
|
|
715
|
+
display: 'inline-block',
|
|
716
|
+
// use !important here because the current width has !important applied to it and it's not working when used in React style prop
|
|
717
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles
|
|
718
|
+
width: 'auto !important',
|
|
719
|
+
marginTop: 0
|
|
720
|
+
}), ".".concat(_consts.RendererCssClassName.EXTENSION_AS_INLINE, " .").concat(_consts.RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER), {
|
|
721
|
+
display: 'inline-block',
|
|
722
|
+
overflowX: 'visible',
|
|
723
|
+
containerType: 'normal'
|
|
724
|
+
}), ".".concat(_consts.RendererCssClassName.EXTENSION_AS_INLINE, " div, .").concat(_consts.RendererCssClassName.EXTENSION_AS_INLINE, " p"), {
|
|
725
|
+
display: 'inline-block'
|
|
726
|
+
}));
|
|
729
727
|
var shadowSharedStyle = (0, _react.css)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "& .".concat(_ui.shadowClassNames.RIGHT_SHADOW, "::before, .").concat(_ui.shadowClassNames.RIGHT_SHADOW, "::after, .").concat(_ui.shadowClassNames.LEFT_SHADOW, "::before, .").concat(_ui.shadowClassNames.LEFT_SHADOW, "::after"), {
|
|
730
728
|
display: 'none',
|
|
731
729
|
position: 'absolute',
|
|
@@ -1631,6 +1629,10 @@ var syncBlockStyles = (0, _react.css)((0, _defineProperty2.default)((0, _defineP
|
|
|
1631
1629
|
}), ".".concat(_syncBlock.SyncBlockSharedCssClassName.loading), {
|
|
1632
1630
|
boxShadow: "0 0 0 1px ".concat("var(--ds-border, #0B120E24)")
|
|
1633
1631
|
}));
|
|
1632
|
+
var syncBlockOverflowStyles = (0, _react.css)((0, _defineProperty2.default)({}, ".".concat(_syncBlock.SyncBlockSharedCssClassName.renderer, ", .").concat(_syncBlock.BodiedSyncBlockSharedCssClassName.renderer, ", .").concat(_syncBlock.SyncBlockSharedCssClassName.error, ", .").concat(_syncBlock.SyncBlockSharedCssClassName.loading), {
|
|
1633
|
+
// Contain floated elements (wrap-left/wrap-right) within synced block borders
|
|
1634
|
+
overflow: 'hidden'
|
|
1635
|
+
}));
|
|
1634
1636
|
var RendererStyleContainer = exports.RendererStyleContainer = function RendererStyleContainer(props) {
|
|
1635
1637
|
var onClick = props.onClick,
|
|
1636
1638
|
onMouseDown = props.onMouseDown,
|
|
@@ -1677,7 +1679,7 @@ var RendererStyleContainer = exports.RendererStyleContainer = function RendererS
|
|
|
1677
1679
|
// this should be placed after baseOtherStyles
|
|
1678
1680
|
(0, _expValEquals.expValEquals)('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true) && extensionAsInlineStyle, allowNestedHeaderLinks && alignedHeadingAnchorStyle, mediaSingleSharedStyle,
|
|
1679
1681
|
// merge firstWrappedMediaStyles with mediaSingleSharedStyle when clean up platform_editor_fix_media_in_renderer
|
|
1680
|
-
(0, _platformFeatureFlags.fg)('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, (0, _platformFeatureFlags.fg)('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, (0, _platformFeatureFlags.fg)('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, (0, _table.isStickyScrollbarEnabled)(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && ((0, _expValEquals.expValEquals)('editor_tinymce_full_width_mode', 'isEnabled', true) || (0, _expValEquals.expValEquals)('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, (0, _expValEquals.expValEquals)('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, (0, _expValEquals.expValEquals)('platform_synced_block', 'isEnabled', true) && syncBlockStyles],
|
|
1682
|
+
(0, _platformFeatureFlags.fg)('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, (0, _platformFeatureFlags.fg)('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, (0, _platformFeatureFlags.fg)('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, (0, _table.isStickyScrollbarEnabled)(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && ((0, _expValEquals.expValEquals)('editor_tinymce_full_width_mode', 'isEnabled', true) || (0, _expValEquals.expValEquals)('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, (0, _expValEquals.expValEquals)('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, (0, _expValEquals.expValEquals)('platform_synced_block', 'isEnabled', true) && syncBlockStyles, (0, _expValEquals.expValEquals)('platform_synced_block', 'isEnabled', true) && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') && syncBlockOverflowStyles],
|
|
1681
1683
|
"data-testid": testId
|
|
1682
1684
|
}, children)
|
|
1683
1685
|
);
|
|
@@ -70,7 +70,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
70
70
|
var TABLE_INFO_TIMEOUT = 10000;
|
|
71
71
|
var RENDER_EVENT_SAMPLE_RATE = 0.2;
|
|
72
72
|
var packageName = "@atlaskit/renderer";
|
|
73
|
-
var packageVersion = "126.2.
|
|
73
|
+
var packageVersion = "126.2.3";
|
|
74
74
|
var setAsQueryContainerStyles = (0, _react2.css)({
|
|
75
75
|
containerName: 'ak-renderer-wrapper',
|
|
76
76
|
containerType: 'inline-size'
|
|
@@ -18,7 +18,7 @@ import { insideBlockNode, insideBreakoutExpand, insideBreakoutLayout, insideMult
|
|
|
18
18
|
import { renderTextSegments } from './utils/render-text-segments';
|
|
19
19
|
import { segmentText } from './utils/segment-text';
|
|
20
20
|
import { getStandaloneBackgroundColorMarks } from './utils/getStandaloneBackgroundColorMarks';
|
|
21
|
-
import {
|
|
21
|
+
import { markBlockAsInline } from './utils/markBlockAsInline';
|
|
22
22
|
function mergeMarks(marksAndNodes) {
|
|
23
23
|
return marksAndNodes.reduce((acc, markOrNode) => {
|
|
24
24
|
const prev = acc.length && acc[acc.length - 1] || null;
|
|
@@ -49,6 +49,7 @@ export default class ReactSerializer {
|
|
|
49
49
|
_defineProperty(this, "surroundTextNodesWithTextWrapper", false);
|
|
50
50
|
_defineProperty(this, "allowAnnotations", false);
|
|
51
51
|
_defineProperty(this, "standaloneBackgroundColorMarks", []);
|
|
52
|
+
_defineProperty(this, "inlinePositions", new Set());
|
|
52
53
|
_defineProperty(this, "serializeFragmentChild", (node, {
|
|
53
54
|
index,
|
|
54
55
|
parentInfo
|
|
@@ -573,6 +574,7 @@ export default class ReactSerializer {
|
|
|
573
574
|
getProps(node, path = []) {
|
|
574
575
|
const startPos = this.startPos + path.length;
|
|
575
576
|
return {
|
|
577
|
+
asInline: this.inlinePositions.has(startPos) ? 'on' : undefined,
|
|
576
578
|
text: node.text,
|
|
577
579
|
providers: this.providers,
|
|
578
580
|
eventHandlers: this.eventHandlers,
|
|
@@ -687,8 +689,14 @@ export default class ReactSerializer {
|
|
|
687
689
|
});
|
|
688
690
|
children = mergeTextNodes(children);
|
|
689
691
|
if (!!this.shouldDisplayExtensionAsInline && expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true)) {
|
|
690
|
-
|
|
692
|
+
markBlockAsInline({
|
|
691
693
|
nodes: children,
|
|
694
|
+
onMark: ({
|
|
695
|
+
pos
|
|
696
|
+
}) => {
|
|
697
|
+
this.inlinePositions.add(pos);
|
|
698
|
+
},
|
|
699
|
+
parentPos: this.startPos,
|
|
692
700
|
shouldDisplayExtensionAsInline: this.shouldDisplayExtensionAsInline
|
|
693
701
|
});
|
|
694
702
|
}
|
|
@@ -76,7 +76,7 @@ _defineProperty(EmojiNode, "displayName", 'EmojiNode');
|
|
|
76
76
|
_defineProperty(EmojiNode, "defaultProps", {
|
|
77
77
|
showTooltip: true
|
|
78
78
|
});
|
|
79
|
-
|
|
79
|
+
export const EmojiItemComponent = props => {
|
|
80
80
|
const {
|
|
81
81
|
id,
|
|
82
82
|
providers,
|
|
@@ -110,9 +110,5 @@ function EmojiItem(props) {
|
|
|
110
110
|
fitToHeight: fitToHeight,
|
|
111
111
|
resourceConfig: resourceConfig
|
|
112
112
|
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Working around an issue with pre existing tests using react-test-renderer
|
|
116
|
-
// https://github.com/facebook/react/issues/17301#issuecomment-557765213
|
|
117
|
-
EmojiItem.defaultProps = {};
|
|
118
|
-
export default /*#__PURE__*/memo(EmojiItem);
|
|
113
|
+
};
|
|
114
|
+
export default /*#__PURE__*/memo(EmojiItemComponent);
|
|
@@ -48,7 +48,8 @@ function Heading(props) {
|
|
|
48
48
|
allowHeadingAnchorLinks,
|
|
49
49
|
marks,
|
|
50
50
|
invisible,
|
|
51
|
-
localId
|
|
51
|
+
localId,
|
|
52
|
+
asInline
|
|
52
53
|
} = props;
|
|
53
54
|
const HX = `h${props.level}`;
|
|
54
55
|
const mouseEntered = React.useRef(false);
|
|
@@ -69,6 +70,7 @@ function Heading(props) {
|
|
|
69
70
|
id: headingIdToUse,
|
|
70
71
|
"data-local-id": localId,
|
|
71
72
|
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos'],
|
|
73
|
+
"data-as-inline": asInline,
|
|
72
74
|
onMouseEnter: mouseEnterHandler
|
|
73
75
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
74
76
|
level: props.level,
|
|
@@ -4,7 +4,8 @@ import Inline from './inline';
|
|
|
4
4
|
export default function Paragraph({
|
|
5
5
|
children,
|
|
6
6
|
dataAttributes,
|
|
7
|
-
localId
|
|
7
|
+
localId,
|
|
8
|
+
asInline
|
|
8
9
|
}) {
|
|
9
10
|
return (
|
|
10
11
|
/*#__PURE__*/
|
|
@@ -13,7 +14,8 @@ export default function Paragraph({
|
|
|
13
14
|
// Ignored via go/ees005
|
|
14
15
|
// eslint-disable-next-line react/jsx-props-no-spreading, @atlaskit/design-system/use-primitives-text
|
|
15
16
|
React.createElement("p", _extends({}, dataAttributes, {
|
|
16
|
-
"data-local-id": localId
|
|
17
|
+
"data-local-id": localId,
|
|
18
|
+
"data-as-inline": asInline
|
|
17
19
|
}), /*#__PURE__*/React.createElement(Inline, null, children))
|
|
18
20
|
);
|
|
19
21
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function markBlockAsInline({
|
|
2
|
+
nodes,
|
|
3
|
+
onMark,
|
|
4
|
+
parentPos,
|
|
5
|
+
shouldDisplayExtensionAsInline
|
|
6
|
+
}) {
|
|
7
|
+
if (!nodes || nodes.length === 0 || nodes[0].isInline) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
function isInlineBodiedExtension(node) {
|
|
11
|
+
var _node$attrs, _node$attrs2, _node$attrs3, _node$attrs4;
|
|
12
|
+
return Boolean((node === null || node === void 0 ? void 0 : node.type.name) === 'bodiedExtension' && shouldDisplayExtensionAsInline({
|
|
13
|
+
type: node.type.name,
|
|
14
|
+
extensionKey: (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.extensionKey,
|
|
15
|
+
extensionType: (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.extensionType,
|
|
16
|
+
parameters: (_node$attrs3 = node.attrs) === null || _node$attrs3 === void 0 ? void 0 : _node$attrs3.parameters,
|
|
17
|
+
content: node.content,
|
|
18
|
+
localId: (_node$attrs4 = node.attrs) === null || _node$attrs4 === void 0 ? void 0 : _node$attrs4.localId
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
let prevPos = parentPos;
|
|
23
|
+
let pos = parentPos;
|
|
24
|
+
let prevTextBlockType;
|
|
25
|
+
for (const [index, node] of nodes.entries()) {
|
|
26
|
+
const prevNode = nodes[index - 1];
|
|
27
|
+
|
|
28
|
+
// textblock + inlinedBodiedExtension
|
|
29
|
+
if (prevNode !== null && prevNode !== void 0 && prevNode.isTextblock && isInlineBodiedExtension(node)) {
|
|
30
|
+
onMark({
|
|
31
|
+
pos: prevPos
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// inlinedBodiedExtension + textblock
|
|
35
|
+
else if (isInlineBodiedExtension(prevNode) && node.isTextblock && (!prevTextBlockType || node.type === prevTextBlockType)) {
|
|
36
|
+
onMark({
|
|
37
|
+
pos
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (!isInlineBodiedExtension(node)) {
|
|
41
|
+
prevTextBlockType = node.isTextblock ? node.type : undefined;
|
|
42
|
+
}
|
|
43
|
+
prevPos = pos;
|
|
44
|
+
pos += node.nodeSize;
|
|
45
|
+
}
|
|
46
|
+
} catch {}
|
|
47
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles */
|
|
1
|
+
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-selectors */
|
|
2
2
|
/* eslint-disable @atlaskit/ui-styling-standard/no-imported-style-values */
|
|
3
3
|
/* eslint-disable @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-values */
|
|
4
4
|
/**
|
|
@@ -817,19 +817,22 @@ const extensionStyle = css({
|
|
|
817
817
|
}
|
|
818
818
|
});
|
|
819
819
|
const extensionAsInlineStyle = css({
|
|
820
|
-
|
|
820
|
+
[`.${RendererCssClassName.DOCUMENT} [data-as-inline="on"]`]: {
|
|
821
|
+
display: 'inline-block'
|
|
822
|
+
},
|
|
823
|
+
[`.${RendererCssClassName.DOCUMENT} .${RendererCssClassName.EXTENSION_AS_INLINE}`]: {
|
|
821
824
|
display: 'inline-block',
|
|
822
825
|
// use !important here because the current width has !important applied to it and it's not working when used in React style prop
|
|
823
826
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles
|
|
824
827
|
width: 'auto !important',
|
|
825
828
|
marginTop: 0
|
|
826
829
|
},
|
|
827
|
-
|
|
830
|
+
[`.${RendererCssClassName.EXTENSION_AS_INLINE} .${RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER}`]: {
|
|
828
831
|
display: 'inline-block',
|
|
829
832
|
overflowX: 'visible',
|
|
830
833
|
containerType: 'normal'
|
|
831
834
|
},
|
|
832
|
-
|
|
835
|
+
[`.${RendererCssClassName.EXTENSION_AS_INLINE} div, .${RendererCssClassName.EXTENSION_AS_INLINE} p`]: {
|
|
833
836
|
display: 'inline-block'
|
|
834
837
|
}
|
|
835
838
|
});
|
|
@@ -2058,6 +2061,12 @@ const syncBlockStyles = css({
|
|
|
2058
2061
|
boxShadow: `0 0 0 1px ${"var(--ds-border, #0B120E24)"}`
|
|
2059
2062
|
}
|
|
2060
2063
|
});
|
|
2064
|
+
const syncBlockOverflowStyles = css({
|
|
2065
|
+
[`.${SyncBlockSharedCssClassName.renderer}, .${BodiedSyncBlockSharedCssClassName.renderer}, .${SyncBlockSharedCssClassName.error}, .${SyncBlockSharedCssClassName.loading}`]: {
|
|
2066
|
+
// Contain floated elements (wrap-left/wrap-right) within synced block borders
|
|
2067
|
+
overflow: 'hidden'
|
|
2068
|
+
}
|
|
2069
|
+
});
|
|
2061
2070
|
export const RendererStyleContainer = props => {
|
|
2062
2071
|
const {
|
|
2063
2072
|
onClick,
|
|
@@ -2106,7 +2115,7 @@ export const RendererStyleContainer = props => {
|
|
|
2106
2115
|
// this should be placed after baseOtherStyles
|
|
2107
2116
|
expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true) && extensionAsInlineStyle, allowNestedHeaderLinks && alignedHeadingAnchorStyle, mediaSingleSharedStyle,
|
|
2108
2117
|
// merge firstWrappedMediaStyles with mediaSingleSharedStyle when clean up platform_editor_fix_media_in_renderer
|
|
2109
|
-
fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, expValEquals('platform_synced_block', 'isEnabled', true) && syncBlockStyles],
|
|
2118
|
+
fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, expValEquals('platform_synced_block', 'isEnabled', true) && syncBlockStyles, expValEquals('platform_synced_block', 'isEnabled', true) && fg('platform_synced_block_dogfooding') && syncBlockOverflowStyles],
|
|
2110
2119
|
"data-testid": testId
|
|
2111
2120
|
}, children)
|
|
2112
2121
|
);
|
|
@@ -56,7 +56,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
56
56
|
const TABLE_INFO_TIMEOUT = 10000;
|
|
57
57
|
const RENDER_EVENT_SAMPLE_RATE = 0.2;
|
|
58
58
|
const packageName = "@atlaskit/renderer";
|
|
59
|
-
const packageVersion = "126.2.
|
|
59
|
+
const packageVersion = "126.2.3";
|
|
60
60
|
const setAsQueryContainerStyles = css({
|
|
61
61
|
containerName: 'ak-renderer-wrapper',
|
|
62
62
|
containerType: 'inline-size'
|
package/dist/esm/react/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import { insideBlockNode, insideBreakoutExpand, insideBreakoutLayout, insideMult
|
|
|
25
25
|
import { renderTextSegments } from './utils/render-text-segments';
|
|
26
26
|
import { segmentText } from './utils/segment-text';
|
|
27
27
|
import { getStandaloneBackgroundColorMarks } from './utils/getStandaloneBackgroundColorMarks';
|
|
28
|
-
import {
|
|
28
|
+
import { markBlockAsInline } from './utils/markBlockAsInline';
|
|
29
29
|
function mergeMarks(marksAndNodes) {
|
|
30
30
|
return marksAndNodes.reduce(function (acc, markOrNode) {
|
|
31
31
|
var prev = acc.length && acc[acc.length - 1] || null;
|
|
@@ -58,6 +58,7 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
58
58
|
_defineProperty(this, "surroundTextNodesWithTextWrapper", false);
|
|
59
59
|
_defineProperty(this, "allowAnnotations", false);
|
|
60
60
|
_defineProperty(this, "standaloneBackgroundColorMarks", []);
|
|
61
|
+
_defineProperty(this, "inlinePositions", new Set());
|
|
61
62
|
_defineProperty(this, "serializeFragmentChild", function (node, _ref) {
|
|
62
63
|
var index = _ref.index,
|
|
63
64
|
parentInfo = _ref.parentInfo;
|
|
@@ -635,6 +636,7 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
635
636
|
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
636
637
|
var startPos = this.startPos + path.length;
|
|
637
638
|
return _objectSpread({
|
|
639
|
+
asInline: this.inlinePositions.has(startPos) ? 'on' : undefined,
|
|
638
640
|
text: node.text,
|
|
639
641
|
providers: this.providers,
|
|
640
642
|
eventHandlers: this.eventHandlers,
|
|
@@ -761,14 +763,20 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
761
763
|
}, {
|
|
762
764
|
key: "getChildNodes",
|
|
763
765
|
value: function getChildNodes(fragment) {
|
|
766
|
+
var _this8 = this;
|
|
764
767
|
var children = [];
|
|
765
768
|
fragment.forEach(function (node) {
|
|
766
769
|
children.push(node);
|
|
767
770
|
});
|
|
768
771
|
children = mergeTextNodes(children);
|
|
769
772
|
if (!!this.shouldDisplayExtensionAsInline && expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true)) {
|
|
770
|
-
|
|
773
|
+
markBlockAsInline({
|
|
771
774
|
nodes: children,
|
|
775
|
+
onMark: function onMark(_ref5) {
|
|
776
|
+
var pos = _ref5.pos;
|
|
777
|
+
_this8.inlinePositions.add(pos);
|
|
778
|
+
},
|
|
779
|
+
parentPos: this.startPos,
|
|
772
780
|
shouldDisplayExtensionAsInline: this.shouldDisplayExtensionAsInline
|
|
773
781
|
});
|
|
774
782
|
}
|
|
@@ -785,9 +793,9 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
785
793
|
}, {
|
|
786
794
|
key: "buildMarkStructure",
|
|
787
795
|
value: function buildMarkStructure(content) {
|
|
788
|
-
var
|
|
796
|
+
var _this9 = this;
|
|
789
797
|
return mergeMarks(content.map(function (node) {
|
|
790
|
-
var nodeMarks =
|
|
798
|
+
var nodeMarks = _this9.getMarks(node);
|
|
791
799
|
if (nodeMarks.length === 0) {
|
|
792
800
|
return node;
|
|
793
801
|
}
|
|
@@ -91,7 +91,7 @@ _defineProperty(EmojiNode, "displayName", 'EmojiNode');
|
|
|
91
91
|
_defineProperty(EmojiNode, "defaultProps", {
|
|
92
92
|
showTooltip: true
|
|
93
93
|
});
|
|
94
|
-
function
|
|
94
|
+
export var EmojiItemComponent = function EmojiItemComponent(props) {
|
|
95
95
|
var id = props.id,
|
|
96
96
|
providers = props.providers,
|
|
97
97
|
shortName = props.shortName,
|
|
@@ -123,9 +123,5 @@ function EmojiItem(props) {
|
|
|
123
123
|
fitToHeight: fitToHeight,
|
|
124
124
|
resourceConfig: resourceConfig
|
|
125
125
|
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Working around an issue with pre existing tests using react-test-renderer
|
|
129
|
-
// https://github.com/facebook/react/issues/17301#issuecomment-557765213
|
|
130
|
-
EmojiItem.defaultProps = {};
|
|
131
|
-
export default /*#__PURE__*/memo(EmojiItem);
|
|
126
|
+
};
|
|
127
|
+
export default /*#__PURE__*/memo(EmojiItemComponent);
|
|
@@ -50,7 +50,8 @@ function Heading(props) {
|
|
|
50
50
|
allowHeadingAnchorLinks = props.allowHeadingAnchorLinks,
|
|
51
51
|
marks = props.marks,
|
|
52
52
|
invisible = props.invisible,
|
|
53
|
-
localId = props.localId
|
|
53
|
+
localId = props.localId,
|
|
54
|
+
asInline = props.asInline;
|
|
54
55
|
var HX = "h".concat(props.level);
|
|
55
56
|
var mouseEntered = React.useRef(false);
|
|
56
57
|
var showAnchorLink = !!props.showAnchorLink;
|
|
@@ -70,6 +71,7 @@ function Heading(props) {
|
|
|
70
71
|
id: headingIdToUse,
|
|
71
72
|
"data-local-id": localId,
|
|
72
73
|
"data-renderer-start-pos": dataAttributes['data-renderer-start-pos'],
|
|
74
|
+
"data-as-inline": asInline,
|
|
73
75
|
onMouseEnter: mouseEnterHandler
|
|
74
76
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && headingId && isRightAligned && /*#__PURE__*/React.createElement(WrappedHeadingAnchor, {
|
|
75
77
|
level: props.level,
|
|
@@ -4,7 +4,8 @@ import Inline from './inline';
|
|
|
4
4
|
export default function Paragraph(_ref) {
|
|
5
5
|
var children = _ref.children,
|
|
6
6
|
dataAttributes = _ref.dataAttributes,
|
|
7
|
-
localId = _ref.localId
|
|
7
|
+
localId = _ref.localId,
|
|
8
|
+
asInline = _ref.asInline;
|
|
8
9
|
return (
|
|
9
10
|
/*#__PURE__*/
|
|
10
11
|
// ignore the eslint warning Text primitive does not support dataAttributes
|
|
@@ -12,7 +13,8 @@ export default function Paragraph(_ref) {
|
|
|
12
13
|
// Ignored via go/ees005
|
|
13
14
|
// eslint-disable-next-line react/jsx-props-no-spreading, @atlaskit/design-system/use-primitives-text
|
|
14
15
|
React.createElement("p", _extends({}, dataAttributes, {
|
|
15
|
-
"data-local-id": localId
|
|
16
|
+
"data-local-id": localId,
|
|
17
|
+
"data-as-inline": asInline
|
|
16
18
|
}), /*#__PURE__*/React.createElement(Inline, null, children))
|
|
17
19
|
);
|
|
18
20
|
}
|
|
@@ -1,28 +1,15 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
2
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
2
3
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
3
4
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4
|
-
|
|
5
|
-
* Merges extensions (displayed as inline) with adjacent textblocks
|
|
6
|
-
*
|
|
7
|
-
* Input:
|
|
8
|
-
* [
|
|
9
|
-
* { type: 'paragraph', content: [ { type: 'text', text: 'Hello' } ] },
|
|
10
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
11
|
-
* { type: 'paragraph', content: [ { type: 'text', text: '!' } ] },
|
|
12
|
-
* ]
|
|
13
|
-
*
|
|
14
|
-
* Output:
|
|
15
|
-
* [
|
|
16
|
-
* { type: 'paragraph', content: [
|
|
17
|
-
* { type: 'text', text: 'Hello' },
|
|
18
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
19
|
-
* { type: 'text', text: '!' }
|
|
20
|
-
* ] },
|
|
21
|
-
* ]
|
|
22
|
-
*/
|
|
23
|
-
export function mergeInlinedExtension(_ref) {
|
|
5
|
+
export function markBlockAsInline(_ref) {
|
|
24
6
|
var nodes = _ref.nodes,
|
|
7
|
+
onMark = _ref.onMark,
|
|
8
|
+
parentPos = _ref.parentPos,
|
|
25
9
|
shouldDisplayExtensionAsInline = _ref.shouldDisplayExtensionAsInline;
|
|
10
|
+
if (!nodes || nodes.length === 0 || nodes[0].isInline) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
26
13
|
function isInlineBodiedExtension(node) {
|
|
27
14
|
var _node$attrs, _node$attrs2, _node$attrs3, _node$attrs4;
|
|
28
15
|
return Boolean((node === null || node === void 0 ? void 0 : node.type.name) === 'bodiedExtension' && shouldDisplayExtensionAsInline({
|
|
@@ -35,52 +22,40 @@ export function mergeInlinedExtension(_ref) {
|
|
|
35
22
|
}));
|
|
36
23
|
}
|
|
37
24
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var newNodes = [];
|
|
43
|
-
var _iterator = _createForOfIteratorHelper(nodes),
|
|
25
|
+
var prevPos = parentPos;
|
|
26
|
+
var pos = parentPos;
|
|
27
|
+
var prevTextBlockType;
|
|
28
|
+
var _iterator = _createForOfIteratorHelper(nodes.entries()),
|
|
44
29
|
_step;
|
|
45
30
|
try {
|
|
46
31
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (!previousNode) {
|
|
52
|
-
newNodes.push(node);
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
32
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
33
|
+
index = _step$value[0],
|
|
34
|
+
node = _step$value[1];
|
|
35
|
+
var prevNode = nodes[index - 1];
|
|
55
36
|
|
|
56
37
|
// textblock + inlinedBodiedExtension
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
else if (node.isTextblock && previousNode.isTextblock && isInlineBodiedExtension(previousNode.content.lastChild)) {
|
|
62
|
-
newNodes[newNodes.length - 1] = previousNode.copy(previousNode.content.append(node.content));
|
|
38
|
+
if (prevNode !== null && prevNode !== void 0 && prevNode.isTextblock && isInlineBodiedExtension(node)) {
|
|
39
|
+
onMark({
|
|
40
|
+
pos: prevPos
|
|
41
|
+
});
|
|
63
42
|
}
|
|
64
43
|
// inlinedBodiedExtension + textblock
|
|
65
|
-
else if (isInlineBodiedExtension(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
else if (isInlineBodiedExtension(previousNode) && !node.isTextblock) {
|
|
70
|
-
newNodes[newNodes.length - 1] = node.type.schema.nodes.paragraph.create(null, previousNode);
|
|
71
|
-
newNodes.push(node);
|
|
44
|
+
else if (isInlineBodiedExtension(prevNode) && node.isTextblock && (!prevTextBlockType || node.type === prevTextBlockType)) {
|
|
45
|
+
onMark({
|
|
46
|
+
pos: pos
|
|
47
|
+
});
|
|
72
48
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
newNodes.push(node);
|
|
49
|
+
if (!isInlineBodiedExtension(node)) {
|
|
50
|
+
prevTextBlockType = node.isTextblock ? node.type : undefined;
|
|
76
51
|
}
|
|
52
|
+
prevPos = pos;
|
|
53
|
+
pos += node.nodeSize;
|
|
77
54
|
}
|
|
78
55
|
} catch (err) {
|
|
79
56
|
_iterator.e(err);
|
|
80
57
|
} finally {
|
|
81
58
|
_iterator.f();
|
|
82
59
|
}
|
|
83
|
-
return newNodes;
|
|
84
60
|
} catch (_unused) {}
|
|
85
|
-
return nodes;
|
|
86
61
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
var _css, _css7;
|
|
3
|
-
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles */
|
|
3
|
+
/* eslint-disable @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-selectors */
|
|
4
4
|
/* eslint-disable @atlaskit/ui-styling-standard/no-imported-style-values */
|
|
5
5
|
/* eslint-disable @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-values */
|
|
6
6
|
/**
|
|
@@ -702,23 +702,21 @@ var extensionStyle = css({
|
|
|
702
702
|
fontSize: 'var(--ak-renderer-base-font-size)'
|
|
703
703
|
}
|
|
704
704
|
});
|
|
705
|
-
var extensionAsInlineStyle = css({
|
|
706
|
-
'
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
'
|
|
719
|
-
|
|
720
|
-
}
|
|
721
|
-
});
|
|
705
|
+
var extensionAsInlineStyle = css(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ".".concat(RendererCssClassName.DOCUMENT, " [data-as-inline=\"on\"]"), {
|
|
706
|
+
display: 'inline-block'
|
|
707
|
+
}), ".".concat(RendererCssClassName.DOCUMENT, " .").concat(RendererCssClassName.EXTENSION_AS_INLINE), {
|
|
708
|
+
display: 'inline-block',
|
|
709
|
+
// use !important here because the current width has !important applied to it and it's not working when used in React style prop
|
|
710
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles
|
|
711
|
+
width: 'auto !important',
|
|
712
|
+
marginTop: 0
|
|
713
|
+
}), ".".concat(RendererCssClassName.EXTENSION_AS_INLINE, " .").concat(RendererCssClassName.EXTENSION_OVERFLOW_CONTAINER), {
|
|
714
|
+
display: 'inline-block',
|
|
715
|
+
overflowX: 'visible',
|
|
716
|
+
containerType: 'normal'
|
|
717
|
+
}), ".".concat(RendererCssClassName.EXTENSION_AS_INLINE, " div, .").concat(RendererCssClassName.EXTENSION_AS_INLINE, " p"), {
|
|
718
|
+
display: 'inline-block'
|
|
719
|
+
}));
|
|
722
720
|
var shadowSharedStyle = css(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "& .".concat(shadowClassNames.RIGHT_SHADOW, "::before, .").concat(shadowClassNames.RIGHT_SHADOW, "::after, .").concat(shadowClassNames.LEFT_SHADOW, "::before, .").concat(shadowClassNames.LEFT_SHADOW, "::after"), {
|
|
723
721
|
display: 'none',
|
|
724
722
|
position: 'absolute',
|
|
@@ -1624,6 +1622,10 @@ var syncBlockStyles = css(_defineProperty(_defineProperty(_defineProperty(_defin
|
|
|
1624
1622
|
}), ".".concat(SyncBlockSharedCssClassName.loading), {
|
|
1625
1623
|
boxShadow: "0 0 0 1px ".concat("var(--ds-border, #0B120E24)")
|
|
1626
1624
|
}));
|
|
1625
|
+
var syncBlockOverflowStyles = css(_defineProperty({}, ".".concat(SyncBlockSharedCssClassName.renderer, ", .").concat(BodiedSyncBlockSharedCssClassName.renderer, ", .").concat(SyncBlockSharedCssClassName.error, ", .").concat(SyncBlockSharedCssClassName.loading), {
|
|
1626
|
+
// Contain floated elements (wrap-left/wrap-right) within synced block borders
|
|
1627
|
+
overflow: 'hidden'
|
|
1628
|
+
}));
|
|
1627
1629
|
export var RendererStyleContainer = function RendererStyleContainer(props) {
|
|
1628
1630
|
var onClick = props.onClick,
|
|
1629
1631
|
onMouseDown = props.onMouseDown,
|
|
@@ -1670,7 +1672,7 @@ export var RendererStyleContainer = function RendererStyleContainer(props) {
|
|
|
1670
1672
|
// this should be placed after baseOtherStyles
|
|
1671
1673
|
expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true) && extensionAsInlineStyle, allowNestedHeaderLinks && alignedHeadingAnchorStyle, mediaSingleSharedStyle,
|
|
1672
1674
|
// merge firstWrappedMediaStyles with mediaSingleSharedStyle when clean up platform_editor_fix_media_in_renderer
|
|
1673
|
-
fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, expValEquals('platform_synced_block', 'isEnabled', true) && syncBlockStyles],
|
|
1675
|
+
fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks, rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, expValEquals('platform_synced_block', 'isEnabled', true) && syncBlockStyles, expValEquals('platform_synced_block', 'isEnabled', true) && fg('platform_synced_block_dogfooding') && syncBlockOverflowStyles],
|
|
1674
1676
|
"data-testid": testId
|
|
1675
1677
|
}, children)
|
|
1676
1678
|
);
|
|
@@ -61,7 +61,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
61
61
|
var TABLE_INFO_TIMEOUT = 10000;
|
|
62
62
|
var RENDER_EVENT_SAMPLE_RATE = 0.2;
|
|
63
63
|
var packageName = "@atlaskit/renderer";
|
|
64
|
-
var packageVersion = "126.2.
|
|
64
|
+
var packageVersion = "126.2.3";
|
|
65
65
|
var setAsQueryContainerStyles = css({
|
|
66
66
|
containerName: 'ak-renderer-wrapper',
|
|
67
67
|
containerType: 'inline-size'
|
|
@@ -115,6 +115,7 @@ export default class ReactSerializer implements Serializer<JSX.Element> {
|
|
|
115
115
|
private standaloneBackgroundColorMarks;
|
|
116
116
|
private onSetLinkTarget?;
|
|
117
117
|
private shouldDisplayExtensionAsInline?;
|
|
118
|
+
private inlinePositions;
|
|
118
119
|
constructor(init: ReactSerializerInit);
|
|
119
120
|
private resetState;
|
|
120
121
|
private getNodeProps;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @jsxRuntime classic
|
|
3
|
-
* @jsx jsx
|
|
4
|
-
*/
|
|
5
|
-
import { jsx } from '@emotion/react';
|
|
6
1
|
import { type EmojiResourceConfig } from '@atlaskit/emoji/resource';
|
|
2
|
+
import { type FC } from 'react';
|
|
7
3
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
8
4
|
import type { EmojiId } from '@atlaskit/emoji/types';
|
|
9
5
|
import { type MarkDataAttributes } from '../../ui/annotations/element/useInlineAnnotationProps';
|
|
@@ -15,9 +11,6 @@ export interface EmojiProps extends EmojiId, EmojiAttributes, MarkDataAttributes
|
|
|
15
11
|
resourceConfig?: EmojiResourceConfig;
|
|
16
12
|
showTooltip?: boolean;
|
|
17
13
|
}
|
|
18
|
-
declare
|
|
19
|
-
declare
|
|
20
|
-
var defaultProps: {};
|
|
21
|
-
}
|
|
22
|
-
declare const _default: import("react").MemoExoticComponent<typeof EmojiItem>;
|
|
14
|
+
export declare const EmojiItemComponent: FC<EmojiProps>;
|
|
15
|
+
declare const _default: import("react").NamedExoticComponent<EmojiProps>;
|
|
23
16
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type NodeProps } from '../types';
|
|
3
|
-
export default function Paragraph({ children, dataAttributes, localId, }: NodeProps): React.JSX.Element;
|
|
3
|
+
export default function Paragraph({ children, dataAttributes, localId, asInline, }: NodeProps): React.JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
|
+
import type { ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
|
|
3
|
+
export declare function markBlockAsInline({ nodes, onMark, parentPos, shouldDisplayExtensionAsInline, }: {
|
|
4
|
+
nodes: PMNode[];
|
|
5
|
+
onMark: ({ pos }: {
|
|
6
|
+
pos: number;
|
|
7
|
+
}) => void;
|
|
8
|
+
parentPos: number;
|
|
9
|
+
shouldDisplayExtensionAsInline: (extensionParams: ExtensionParams<Parameters>) => boolean;
|
|
10
|
+
}): void;
|
|
@@ -115,6 +115,7 @@ export default class ReactSerializer implements Serializer<JSX.Element> {
|
|
|
115
115
|
private standaloneBackgroundColorMarks;
|
|
116
116
|
private onSetLinkTarget?;
|
|
117
117
|
private shouldDisplayExtensionAsInline?;
|
|
118
|
+
private inlinePositions;
|
|
118
119
|
constructor(init: ReactSerializerInit);
|
|
119
120
|
private resetState;
|
|
120
121
|
private getNodeProps;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @jsxRuntime classic
|
|
3
|
-
* @jsx jsx
|
|
4
|
-
*/
|
|
5
|
-
import { jsx } from '@emotion/react';
|
|
6
1
|
import { type EmojiResourceConfig } from '@atlaskit/emoji/resource';
|
|
2
|
+
import { type FC } from 'react';
|
|
7
3
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
8
4
|
import type { EmojiId } from '@atlaskit/emoji/types';
|
|
9
5
|
import { type MarkDataAttributes } from '../../ui/annotations/element/useInlineAnnotationProps';
|
|
@@ -15,9 +11,6 @@ export interface EmojiProps extends EmojiId, EmojiAttributes, MarkDataAttributes
|
|
|
15
11
|
resourceConfig?: EmojiResourceConfig;
|
|
16
12
|
showTooltip?: boolean;
|
|
17
13
|
}
|
|
18
|
-
declare
|
|
19
|
-
declare
|
|
20
|
-
var defaultProps: {};
|
|
21
|
-
}
|
|
22
|
-
declare const _default: import("react").MemoExoticComponent<typeof EmojiItem>;
|
|
14
|
+
export declare const EmojiItemComponent: FC<EmojiProps>;
|
|
15
|
+
declare const _default: import("react").NamedExoticComponent<EmojiProps>;
|
|
23
16
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type NodeProps } from '../types';
|
|
3
|
-
export default function Paragraph({ children, dataAttributes, localId, }: NodeProps): React.JSX.Element;
|
|
3
|
+
export default function Paragraph({ children, dataAttributes, localId, asInline, }: NodeProps): React.JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
|
+
import type { ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
|
|
3
|
+
export declare function markBlockAsInline({ nodes, onMark, parentPos, shouldDisplayExtensionAsInline, }: {
|
|
4
|
+
nodes: PMNode[];
|
|
5
|
+
onMark: ({ pos }: {
|
|
6
|
+
pos: number;
|
|
7
|
+
}) => void;
|
|
8
|
+
parentPos: number;
|
|
9
|
+
shouldDisplayExtensionAsInline: (extensionParams: ExtensionParams<Parameters>) => boolean;
|
|
10
|
+
}): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/renderer",
|
|
3
|
-
"version": "126.2.
|
|
3
|
+
"version": "126.2.4",
|
|
4
4
|
"description": "Renderer component",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@atlaskit/status": "^3.1.0",
|
|
58
58
|
"@atlaskit/task-decision": "^19.2.0",
|
|
59
59
|
"@atlaskit/theme": "^21.0.0",
|
|
60
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
60
|
+
"@atlaskit/tmp-editor-statsig": "^17.1.0",
|
|
61
61
|
"@atlaskit/tokens": "^10.1.0",
|
|
62
62
|
"@atlaskit/tooltip": "^20.14.0",
|
|
63
63
|
"@atlaskit/visually-hidden": "^3.0.0",
|
|
@@ -90,10 +90,11 @@
|
|
|
90
90
|
"@atlaskit/mention": "^24.4.0",
|
|
91
91
|
"@atlaskit/modal-dialog": "^14.10.0",
|
|
92
92
|
"@atlaskit/navigation-next": "patch:@atlaskit/navigation-next@npm%3A9.0.17#~/.yarn/patches/@atlaskit-navigation-next-npm-9.0.17-958ca0ab9d.patch",
|
|
93
|
-
"@atlaskit/profilecard": "^24.
|
|
93
|
+
"@atlaskit/profilecard": "^24.34.0",
|
|
94
94
|
"@atlaskit/util-data-test": "^18.5.0",
|
|
95
95
|
"@atlassian/a11y-jest-testing": "^0.8.0",
|
|
96
96
|
"@atlassian/feature-flags-test-utils": "^1.0.0",
|
|
97
|
+
"@atlassian/testing-library": "^0.4.0",
|
|
97
98
|
"@testing-library/react": "^16.3.0",
|
|
98
99
|
"@testing-library/user-event": "^14.4.3",
|
|
99
100
|
"@types/react-loadable": "^5.4.1",
|
|
@@ -248,6 +249,9 @@
|
|
|
248
249
|
},
|
|
249
250
|
"confluence_inline_insert_excerpt_width_bugfix": {
|
|
250
251
|
"type": "boolean"
|
|
252
|
+
},
|
|
253
|
+
"platform_synced_block_dogfooding": {
|
|
254
|
+
"type": "boolean"
|
|
251
255
|
}
|
|
252
256
|
}
|
|
253
257
|
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Merges extensions (displayed as inline) with adjacent textblocks
|
|
3
|
-
*
|
|
4
|
-
* Input:
|
|
5
|
-
* [
|
|
6
|
-
* { type: 'paragraph', content: [ { type: 'text', text: 'Hello' } ] },
|
|
7
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
8
|
-
* { type: 'paragraph', content: [ { type: 'text', text: '!' } ] },
|
|
9
|
-
* ]
|
|
10
|
-
*
|
|
11
|
-
* Output:
|
|
12
|
-
* [
|
|
13
|
-
* { type: 'paragraph', content: [
|
|
14
|
-
* { type: 'text', text: 'Hello' },
|
|
15
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
16
|
-
* { type: 'text', text: '!' }
|
|
17
|
-
* ] },
|
|
18
|
-
* ]
|
|
19
|
-
*/
|
|
20
|
-
export function mergeInlinedExtension({
|
|
21
|
-
nodes,
|
|
22
|
-
shouldDisplayExtensionAsInline
|
|
23
|
-
}) {
|
|
24
|
-
function isInlineBodiedExtension(node) {
|
|
25
|
-
var _node$attrs, _node$attrs2, _node$attrs3, _node$attrs4;
|
|
26
|
-
return Boolean((node === null || node === void 0 ? void 0 : node.type.name) === 'bodiedExtension' && shouldDisplayExtensionAsInline({
|
|
27
|
-
type: node.type.name,
|
|
28
|
-
extensionKey: (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.extensionKey,
|
|
29
|
-
extensionType: (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.extensionType,
|
|
30
|
-
parameters: (_node$attrs3 = node.attrs) === null || _node$attrs3 === void 0 ? void 0 : _node$attrs3.parameters,
|
|
31
|
-
content: node.content,
|
|
32
|
-
localId: (_node$attrs4 = node.attrs) === null || _node$attrs4 === void 0 ? void 0 : _node$attrs4.localId
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
// if it's [inlinedBodiedExtension], wrap it in a textblock
|
|
37
|
-
if (nodes.length === 1 && isInlineBodiedExtension(nodes[0])) {
|
|
38
|
-
return [nodes[0].type.schema.nodes.paragraph.create(null, nodes[0])];
|
|
39
|
-
}
|
|
40
|
-
const newNodes = [];
|
|
41
|
-
for (const node of nodes) {
|
|
42
|
-
const previousNode = newNodes[newNodes.length - 1];
|
|
43
|
-
|
|
44
|
-
// first node
|
|
45
|
-
if (!previousNode) {
|
|
46
|
-
newNodes.push(node);
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// textblock + inlinedBodiedExtension
|
|
51
|
-
if (isInlineBodiedExtension(node) && previousNode.isTextblock) {
|
|
52
|
-
newNodes[newNodes.length - 1] = previousNode.copy(previousNode.content.addToEnd(node));
|
|
53
|
-
}
|
|
54
|
-
// textblock(..., inlinedBodiedExtension) + textblock
|
|
55
|
-
else if (node.isTextblock && previousNode.isTextblock && isInlineBodiedExtension(previousNode.content.lastChild)) {
|
|
56
|
-
newNodes[newNodes.length - 1] = previousNode.copy(previousNode.content.append(node.content));
|
|
57
|
-
}
|
|
58
|
-
// inlinedBodiedExtension + textblock
|
|
59
|
-
else if (isInlineBodiedExtension(previousNode) && node.isTextblock) {
|
|
60
|
-
newNodes[newNodes.length - 1] = node.copy(node.content.addToStart(previousNode));
|
|
61
|
-
}
|
|
62
|
-
// inlinedBodiedExtension + non-textblock
|
|
63
|
-
else if (isInlineBodiedExtension(previousNode) && !node.isTextblock) {
|
|
64
|
-
newNodes[newNodes.length - 1] = node.type.schema.nodes.paragraph.create(null, previousNode);
|
|
65
|
-
newNodes.push(node);
|
|
66
|
-
}
|
|
67
|
-
// default case
|
|
68
|
-
else {
|
|
69
|
-
newNodes.push(node);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return newNodes;
|
|
73
|
-
} catch {}
|
|
74
|
-
return nodes;
|
|
75
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
|
-
import type { ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
|
|
3
|
-
/**
|
|
4
|
-
* Merges extensions (displayed as inline) with adjacent textblocks
|
|
5
|
-
*
|
|
6
|
-
* Input:
|
|
7
|
-
* [
|
|
8
|
-
* { type: 'paragraph', content: [ { type: 'text', text: 'Hello' } ] },
|
|
9
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
10
|
-
* { type: 'paragraph', content: [ { type: 'text', text: '!' } ] },
|
|
11
|
-
* ]
|
|
12
|
-
*
|
|
13
|
-
* Output:
|
|
14
|
-
* [
|
|
15
|
-
* { type: 'paragraph', content: [
|
|
16
|
-
* { type: 'text', text: 'Hello' },
|
|
17
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
18
|
-
* { type: 'text', text: '!' }
|
|
19
|
-
* ] },
|
|
20
|
-
* ]
|
|
21
|
-
*/
|
|
22
|
-
export declare function mergeInlinedExtension({ nodes, shouldDisplayExtensionAsInline, }: {
|
|
23
|
-
nodes: PMNode[];
|
|
24
|
-
shouldDisplayExtensionAsInline: (extensionParams: ExtensionParams<Parameters>) => boolean;
|
|
25
|
-
}): PMNode[];
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
|
-
import type { ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions';
|
|
3
|
-
/**
|
|
4
|
-
* Merges extensions (displayed as inline) with adjacent textblocks
|
|
5
|
-
*
|
|
6
|
-
* Input:
|
|
7
|
-
* [
|
|
8
|
-
* { type: 'paragraph', content: [ { type: 'text', text: 'Hello' } ] },
|
|
9
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
10
|
-
* { type: 'paragraph', content: [ { type: 'text', text: '!' } ] },
|
|
11
|
-
* ]
|
|
12
|
-
*
|
|
13
|
-
* Output:
|
|
14
|
-
* [
|
|
15
|
-
* { type: 'paragraph', content: [
|
|
16
|
-
* { type: 'text', text: 'Hello' },
|
|
17
|
-
* { type: 'bodiedExtension', content: [ { type: 'text', text: 'World' } ] },
|
|
18
|
-
* { type: 'text', text: '!' }
|
|
19
|
-
* ] },
|
|
20
|
-
* ]
|
|
21
|
-
*/
|
|
22
|
-
export declare function mergeInlinedExtension({ nodes, shouldDisplayExtensionAsInline, }: {
|
|
23
|
-
nodes: PMNode[];
|
|
24
|
-
shouldDisplayExtensionAsInline: (extensionParams: ExtensionParams<Parameters>) => boolean;
|
|
25
|
-
}): PMNode[];
|