@atlaskit/renderer 81.1.1 → 82.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 82.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`3c5548e50da`](https://bitbucket.org/atlassian/atlassian-frontend/commits/3c5548e50da) - [ux] Introducing new Media Inline component to renderer
8
+
9
+ ### Minor Changes
10
+
11
+ - [`971845eac0d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/971845eac0d) - CETI-96 Added new rule to emoji to solve the duplicate icon issue when we copy from renderer
12
+
13
+ ### Patch Changes
14
+
15
+ - [`f897443ad45`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f897443ad45) - Revert AK-279
16
+ - [`87865d3284f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/87865d3284f) - CETI-122 Fix Rendering of hybrid renderer when the prop UNSAFE_allowCustomPanels changed.
17
+ - [`a554946e674`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a554946e674) - Skipping flakey tests to unblock the weasal release
18
+ - [`33bca2a18bb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/33bca2a18bb) - Skipping a flaky test to unblock the weasal release
19
+ - Updated dependencies
20
+
3
21
  ## 81.1.1
4
22
 
5
23
  ### Patch Changes
@@ -220,6 +220,9 @@ var ReactSerializer = /*#__PURE__*/function () {
220
220
  case 'mediaGroup':
221
221
  return this.getMediaGroupProps(node);
222
222
 
223
+ case 'mediaInline':
224
+ return this.getMediaInlineProps(node);
225
+
223
226
  case 'mediaSingle':
224
227
  return this.getMediaSingleProps(node, path);
225
228
 
@@ -478,6 +481,11 @@ var ReactSerializer = /*#__PURE__*/function () {
478
481
  enableDownloadButton: (_this$media = this.media) === null || _this$media === void 0 ? void 0 : _this$media.enableDownloadButton
479
482
  });
480
483
  }
484
+ }, {
485
+ key: "getMediaInlineProps",
486
+ value: function getMediaInlineProps(node) {
487
+ return _objectSpread({}, this.getProps(node));
488
+ }
481
489
  }, {
482
490
  key: "getTaskItemProps",
483
491
  value: function getTaskItemProps(node) {
@@ -135,8 +135,7 @@ var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
135
135
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderAnchorButton", function () {
136
136
  return /*#__PURE__*/_react.default.createElement(CopyAnchorButton, {
137
137
  onMouseLeave: _this.resetMessage,
138
- onClick: _this.copyToClipboard,
139
- "aria-label": _this.state.tooltipMessage
138
+ onClick: _this.copyToClipboard
140
139
  }, /*#__PURE__*/_react.default.createElement(_link.default, {
141
140
  label: "copy",
142
141
  size: _this.props.level > 3 ? 'small' : 'medium',
@@ -55,11 +55,9 @@ function Heading(props) {
55
55
  var showAnchorLink = !!props.showAnchorLink;
56
56
  var isRightAligned = hasRightAlignmentMark(marks);
57
57
  var enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
58
- return /*#__PURE__*/_react.default.createElement("div", {
59
- className: "heading-wrapper ".concat(HX)
60
- }, /*#__PURE__*/_react.default.createElement(HX, (0, _extends2.default)({
58
+ return /*#__PURE__*/_react.default.createElement(HX, (0, _extends2.default)({
61
59
  id: headingId
62
- }, dataAttributes), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children)), showAnchorLink && /*#__PURE__*/_react.default.createElement(_copyTextProvider.CopyTextConsumer, null, function (_ref) {
60
+ }, dataAttributes), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children, showAnchorLink && /*#__PURE__*/_react.default.createElement(_copyTextProvider.CopyTextConsumer, null, function (_ref) {
63
61
  var copyTextToClipboard = _ref.copyTextToClipboard;
64
62
  return headingId && /*#__PURE__*/_react.default.createElement(_analyticsContext.default.Consumer, null, function (_ref2) {
65
63
  var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
@@ -77,7 +75,7 @@ function Heading(props) {
77
75
  }
78
76
  });
79
77
  });
80
- }));
78
+ })));
81
79
  }
82
80
 
83
81
  var _default = Heading;
@@ -162,7 +162,7 @@ Object.defineProperty(exports, "EmbedCard", {
162
162
  return _embedCard.default;
163
163
  }
164
164
  });
165
- exports.TaskItem = exports.Status = exports.Mention = exports.MediaGroup = exports.Media = exports.InlineCard = exports.Expand = exports.Emoji = exports.DecisionItem = exports.Date = exports.CodeBlock = exports.BlockCard = exports.isEmojiDoc = exports.isTextWrapper = exports.isText = exports.mergeTextNodes = exports.toReact = exports.nodeToReact = void 0;
165
+ exports.TaskItem = exports.Status = exports.Mention = exports.MediaInline = exports.MediaGroup = exports.Media = exports.InlineCard = exports.Expand = exports.Emoji = exports.DecisionItem = exports.Date = exports.CodeBlock = exports.BlockCard = exports.isEmojiDoc = exports.isTextWrapper = exports.isText = exports.mergeTextNodes = exports.toReact = exports.nodeToReact = void 0;
166
166
 
167
167
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
168
168
 
@@ -354,6 +354,19 @@ var MediaGroup = (0, _reactLoadable.default)({
354
354
  }
355
355
  });
356
356
  exports.MediaGroup = MediaGroup;
357
+ var MediaInline = (0, _reactLoadable.default)({
358
+ loader: function loader() {
359
+ return Promise.resolve().then(function () {
360
+ return _interopRequireWildcard(require('./mediaInline'));
361
+ }).then(function (mod) {
362
+ return mod.default;
363
+ });
364
+ },
365
+ loading: function loading() {
366
+ return null;
367
+ }
368
+ });
369
+ exports.MediaInline = MediaInline;
357
370
  var Mention = (0, _reactLoadable.default)({
358
371
  loader: function loader() {
359
372
  return Promise.resolve().then(function () {
@@ -402,6 +415,7 @@ var nodeToReact = {
402
415
  listItem: _listItem.default,
403
416
  media: Media,
404
417
  mediaGroup: MediaGroup,
418
+ mediaInline: MediaInline,
405
419
  mediaSingle: _mediaSingle.default,
406
420
  mention: Mention,
407
421
  orderedList: _orderedList.default,
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.RenderMediaInline = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _mediaCard = require("@atlaskit/media-card");
21
+
22
+ var _editorCommon = require("@atlaskit/editor-common");
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ var RenderMediaInline = function RenderMediaInline(props) {
29
+ var mediaProvider = props.mediaProvider;
30
+
31
+ var _useState = (0, _react.useState)({}),
32
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
33
+ viewMediaClientConfigState = _useState2[0],
34
+ setViewMediaClientConfigState = _useState2[1];
35
+
36
+ (0, _react.useEffect)(function () {
37
+ updateViewMediaClientConfigState(mediaProvider);
38
+ }, [mediaProvider]);
39
+
40
+ var updateViewMediaClientConfigState = /*#__PURE__*/function () {
41
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaProvider) {
42
+ var mediaClientConfig;
43
+ return _regenerator.default.wrap(function _callee$(_context) {
44
+ while (1) {
45
+ switch (_context.prev = _context.next) {
46
+ case 0:
47
+ if (!mediaProvider) {
48
+ _context.next = 5;
49
+ break;
50
+ }
51
+
52
+ _context.next = 3;
53
+ return mediaProvider;
54
+
55
+ case 3:
56
+ mediaClientConfig = _context.sent;
57
+ setViewMediaClientConfigState(mediaClientConfig.viewMediaClientConfig);
58
+
59
+ case 5:
60
+ case "end":
61
+ return _context.stop();
62
+ }
63
+ }
64
+ }, _callee);
65
+ }));
66
+
67
+ return function updateViewMediaClientConfigState(_x) {
68
+ return _ref.apply(this, arguments);
69
+ };
70
+ }();
71
+
72
+ return /*#__PURE__*/_react.default.createElement(_mediaCard.MediaInlineCard, {
73
+ identifier: props.identifier,
74
+ shouldOpenMediaViewer: true,
75
+ mediaClientConfig: viewMediaClientConfigState
76
+ });
77
+ };
78
+
79
+ exports.RenderMediaInline = RenderMediaInline;
80
+
81
+ var MediaInline = function MediaInline(props) {
82
+ var collection = props.collection,
83
+ id = props.id,
84
+ providers = props.providers;
85
+ var identifier = {
86
+ id: id,
87
+ mediaItemType: 'file',
88
+ collectionName: collection
89
+ };
90
+ return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_editorCommon.WithProviders, {
91
+ providers: ['mediaProvider'],
92
+ providerFactory: providers,
93
+ renderNode: function renderNode(providers) {
94
+ var mediaProvider = providers.mediaProvider;
95
+ return /*#__PURE__*/_react.default.createElement(RenderMediaInline, {
96
+ identifier: identifier,
97
+ mediaProvider: mediaProvider
98
+ });
99
+ }
100
+ }));
101
+ };
102
+
103
+ var _default = MediaInline;
104
+ exports.default = _default;
@@ -93,7 +93,7 @@ var Panel = function Panel(props) {
93
93
  var icon = getIcon();
94
94
 
95
95
  if (icon) {
96
- return /*#__PURE__*/_react.default.createElement("span", {
96
+ return /*#__PURE__*/_react.default.createElement("div", {
97
97
  className: _editorCommon.PanelSharedCssClassName.icon
98
98
  }, icon);
99
99
  }
@@ -223,7 +223,7 @@ var Renderer = /*#__PURE__*/function (_PureComponent) {
223
223
  var nextMedia = nextProps.media || {};
224
224
  var media = this.props.media || {};
225
225
 
226
- if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
226
+ if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.UNSAFE_allowCustomPanels !== this.props.UNSAFE_allowCustomPanels || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
227
227
  this.serializer = new _.ReactSerializer(this.deriveSerializerProps(nextProps));
228
228
  }
229
229
  }
@@ -65,7 +65,7 @@ var headingSizes = {
65
65
  exports.headingSizes = headingSizes;
66
66
 
67
67
  var headingAnchorStyle = function headingAnchorStyle(headingTag) {
68
- return (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n /**\n * The copy link button doesn't reserve space in the DOM so that\n * the text alignment isn't impacted by the button/icon's space.\n */\n display: inline-block;\n & + .", " {\n position: absolute;\n margin-left: 6px;\n button {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n /**\n * Applies hover effects to the heading anchor link button\n * to fade in when the user rolls over the heading.\n *\n * The link is persistent on mobile, so we use feature detection\n * to enable hover effects for systems that support it (desktop).\n *\n * @see https://caniuse.com/mdn-css_at-rules_media_hover\n */\n @media (hover: hover) and (pointer: fine) {\n & + .", " {\n > button {\n opacity: 0;\n transform: translate(-8px, 0px);\n transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;\n &:focus {\n opacity: 1;\n transform: none !important;\n outline: solid 2px ", ";\n }\n }\n }\n }\n "])), _headingAnchor.HeadingAnchorWrapperClassName, _headingAnchor.HeadingAnchorWrapperClassName, colors.B200);
68
+ return (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n /**\n * The copy link button doesn't reserve space in the DOM so that\n * the text alignment isn't impacted by the button/icon's space.\n */\n .", " {\n position: absolute;\n height: ", "em;\n\n margin-left: 6px;\n\n button {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n /**\n * Applies hover effects to the heading anchor link button\n * to fade in when the user rolls over the heading.\n *\n * The link is persistent on mobile, so we use feature detection\n * to enable hover effects for systems that support it (desktop).\n *\n * @see https://caniuse.com/mdn-css_at-rules_media_hover\n */\n @media (hover: hover) and (pointer: fine) {\n .", " {\n > button {\n opacity: 0;\n transform: translate(-8px, 0px);\n transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;\n }\n }\n\n &:hover {\n .", " > button {\n opacity: 1;\n transform: none !important;\n }\n }\n }\n "])), _headingAnchor.HeadingAnchorWrapperClassName, headingSizes[headingTag].lineHeight, _headingAnchor.HeadingAnchorWrapperClassName, _headingAnchor.HeadingAnchorWrapperClassName);
69
69
  };
70
70
 
71
71
  var alignedHeadingAnchorStyle = function alignedHeadingAnchorStyle(_ref) {
@@ -75,7 +75,7 @@ var alignedHeadingAnchorStyle = function alignedHeadingAnchorStyle(_ref) {
75
75
  return '';
76
76
  }
77
77
 
78
- return "\n .fabric-editor-block-mark[data-align] > {\n h1, h2, h3, h4, h5, h6 {\n position: relative;\n }\n }\n\n /**\n * For right-alignment we flip the link to be before the heading\n * text so that the text is flush up against the edge of the editor's\n * container edge.\n */\n .fabric-editor-block-mark:not([data-align='center'])[data-align] {\n .heading-wrapper {\n // Using right to left text to achieve the inverse effect\n // of where the copy link button icon sits for left/center\n // alignment.\n // Although this is unorthodox it's the only approach which\n // allows the button to sit flush against the left edge of\n // bottom line of text.\n direction: rtl;\n\n // By default RTL will negatively impact the layout of special\n // characters within the heading text, and potentially other\n // nested inline nodes. To prevent this we insert pseudo elements\n // containing HTML entities to retain LTR for all heading content\n // except for the copy link button.\n > *:not(.".concat(_headingAnchor.HeadingAnchorWrapperClassName, "):not(br) {\n ::before {\n // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm\n content: '\u202A';\n }\n ::after {\n // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm\n content: '\u202C';\n }\n }\n }\n }\n .").concat(_headingAnchor.HeadingAnchorWrapperClassName, " {\n margin: 0 6px 0 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n .").concat(_headingAnchor.HeadingAnchorWrapperClassName, " > button {\n transform: translate(8px, 0);\n }\n }\n }\n ");
78
+ return "\n .fabric-editor-block-mark[data-align] > {\n h1, h2, h3, h4, h5, h6 {\n position: relative;\n }\n }\n\n /**\n * For right-alignment we flip the link to be before the heading\n * text so that the text is flush up against the edge of the editor's\n * container edge.\n */\n .fabric-editor-block-mark:not([data-align='center'])[data-align] {\n > {\n h1, h2, h3, h4, h5, h6 {\n // Using right to left text to achieve the inverse effect\n // of where the copy link button icon sits for left/center\n // alignment.\n // Although this is unorthodox it's the only approach which\n // allows the button to sit flush against the left edge of\n // bottom line of text.\n direction: rtl;\n\n // By default RTL will negatively impact the layout of special\n // characters within the heading text, and potentially other\n // nested inline nodes. To prevent this we insert pseudo elements\n // containing HTML entities to retain LTR for all heading content\n // except for the copy link button.\n > *:not(.".concat(_headingAnchor.HeadingAnchorWrapperClassName, "):not(br) {\n ::before {\n // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm\n content: '\u202A';\n }\n ::after {\n // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm\n content: '\u202C';\n }\n }\n }\n }\n .").concat(_headingAnchor.HeadingAnchorWrapperClassName, " {\n margin: 0 6px 0 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n .").concat(_headingAnchor.HeadingAnchorWrapperClassName, " > button {\n transform: translate(8px, 0px);\n }\n }\n }\n }\n ");
79
79
  };
80
80
 
81
81
  var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
@@ -89,7 +89,7 @@ var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
89
89
  var headingsCss = '';
90
90
 
91
91
  if (allowNestedHeaderLinks) {
92
- 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 .heading-wrapper {\n margin-right: 30px;\n }\n ");
92
+ 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 ");
93
93
  }
94
94
 
95
95
  return "\n .".concat(_consts.RendererCssClassName.SORTABLE_COLUMN, " {\n padding: 0;\n\n .").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_BUTTON, " {\n width: 100%;\n height: 100%;\n cursor: pointer;\n padding: ").concat(_editorCommon.tableCellPadding, "px;\n border-width: 1.5px;\n border-style: solid;\n border-color: transparent;\n\n > *:first-child {\n margin-top: 0;\n }\n\n > .ProseMirror-gapcursor.-right:first-child + * {\n margin-top: 0;\n }\n\n > .ProseMirror-gapcursor:first-child + span + * {\n margin-top: 0;\n }\n\n @supports selector(:focus-visible) {\n &:focus {\n outline: unset;\n }\n &:focus-visible {\n border-color: ").concat(colors.B300, ";\n }\n }\n\n ").concat(headingsCss, "\n }\n\n &.").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_NOT_ALLOWED, " .").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_BUTTON, " {\n cursor: default;\n }\n\n .").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_ICON, " {\n margin: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n .").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, " {\n opacity: 0;\n }\n\n &:hover {\n .").concat(_consts.RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, " {\n opacity: 1;\n }\n }\n }\n ");
@@ -117,10 +117,10 @@ var fullWidthStyles = function fullWidthStyles(_ref4) {
117
117
  }; // prettier-ignore
118
118
 
119
119
 
120
- var Wrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n line-height: 1.5rem;\n color: ", ";\n\n ", "\n ", "\n\n div.heading-wrapper{\n position: relative;\n h1, h2, h3, h4, h5, h6{\n margin-top: 0;\n font-size: inherit;\n }\n &.h1 {\n ", ";\n margin-top: 1.667em;\n }\n &.h2 {\n ", ";\n margin-top: 1.8em;\n }\n &.h3 {\n ", ";\n margin-top: 2em;\n }\n &.h4 {\n ", ";\n margin-top: 1.357em;\n }\n &.h5 {\n ", ";\n margin-top: 1.667em;\n }\n &.h6 {\n ", ";\n margin-top: 1.455em;\n }\n /* show copy button on heading wrapper hover */\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n .", " > button{\n opacity: 1;\n transform: none !important;\n }\n }\n }\n }\n\n & h1 {\n ", "\n }\n\n & h2 {\n ", "\n }\n\n & h3 {\n ", "\n }\n\n & h4 {\n ", "\n }\n\n & h5 {\n ", "\n }\n\n & h6 {\n ", "\n }\n\n & span.akActionMark {\n color: ", ";\n text-decoration: none;\n\n &:hover {\n color: ", ";\n text-decoration: underline;\n }\n }\n\n & span.akActionMark {\n cursor: pointer;\n }\n\n & span[data-placeholder] {\n color: ", ";\n }\n\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", "\n\n & .UnknownBlock {\n font-family: ", ";\n font-size: ", ";\n font-weight: 400;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n & span.date-node {\n background: ", ";\n border-radius: ", "px;\n color: ", ";\n padding: 2px 4px;\n margin: 0 1px;\n transition: background 0.3s;\n }\n\n & span.date-node-highlighted {\n background: ", ";\n color: ", ";\n }\n\n & .renderer-image {\n max-width: 100%;\n display: block;\n margin: ", "px 0;\n }\n\n .", ".rich-media-wrapped + .", ":not(.rich-media-wrapped) {\n clear: both;\n }\n\n & .code-block,\n & blockquote,\n & hr,\n & > div > div:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + .rich-media-wrapped + *:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + div:not(.rich-media-wrapped),\n .", ".image-align-start,\n .", ".image-center,\n .", ".image-align-end {\n clear: both;\n }\n\n & .rich-media-wrapped {\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n margin-top: 8px;\n }\n }\n\n ", "\n\n ", " &\n div[class^='image-wrap-'] + div[class^='image-wrap-'] {\n margin-left: 0;\n margin-right: 0;\n }\n\n /* Breakout for tables and extensions */\n .", " > {\n * .", " {\n width: 100% !important;\n left: 0 !important;\n }\n\n * .", " {\n overflow-x: auto;\n }\n\n & .", ":first-child {\n margin-top: 0;\n }\n }\n\n .", " {\n margin-top: ", ";\n }\n\n .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n .", " {\n overflow-x: auto;\n }\n\n ", "\n\n .", " {\n z-index: 0;\n transition: all 0.1s linear;\n display: flex; /* needed to avoid position: fixed jumpiness in Chrome */\n\n /** Shadow overrides */\n &.", "::after, &.", "::before {\n top: ", "px;\n height: calc(100% - ", "px);\n z-index: ", ";\n }\n\n /**\n * A hack for making all the <th /> heights equal in case some have shorter\n * content than others.\n *\n * This is done to make sort buttons fill entire <th />.\n */\n table {\n height: 1px; /* will be ignored */\n ", ";\n margin-left: 0;\n margin-right: 0;\n }\n\n table tr:first-child {\n height: 100%;\n\n td, th {\n position: relative;\n }\n }\n\n table[data-number-column='true'] {\n .", " {\n background-color: ", ";\n border-right: 1px solid ", ";\n width: ", "px;\n text-align: center;\n color: ", ";\n font-size: ", ";\n }\n\n .fixed .", " {\n border-right: 0px none;\n }\n }\n }\n\n tr[data-header-row].fixed {\n position: fixed !important;\n display: flex;\n overflow: hidden;\n z-index: ", ";\n\n border-right: 1px solid ", ";\n border-bottom: 1px solid ", ";\n\n /* this is to compensate for the table border */\n transform: translateX(-1px);\n }\n\n .sticky > th {\n z-index: ", ";\n position: sticky !important;\n top: 0;\n }\n\n /* Make the number column header sticky */\n .sticky > td {\n position: sticky !important;\n top: 0;\n }\n\n /* add border for position: sticky\n and work around background-clip: padding-box\n bug for FF causing box-shadow bug in Chrome */\n .sticky th, .sticky td {\n box-shadow: 0px 1px ", ", 0px -0.5px ", ", inset -1px 0px ", ", 0px -1px ", ";\n }\n\n /* this will remove jumpiness caused in Chrome for sticky headers */\n .fixed + tr {\n min-height: 0px;\n }\n\n /*\n * We wrap CodeBlock in a grid to prevent it from overflowing the container of the renderer.\n * See ED-4159.\n */\n & .code-block {\n max-width: 100%;\n /* -ms- properties are necessary until MS supports the latest version of the grid spec */\n /* stylelint-disable value-no-vendor-prefix, declaration-block-no-duplicate-properties */\n display: -ms-grid;\n display: grid;\n -ms-grid-columns: auto 1fr;\n /* stylelint-enable */\n\n grid-template-columns: minmax(0, 1fr);\n position: relative;\n border-radius: ", "px;\n\n /*\n * The overall renderer has word-wrap: break; which causes issues with\n * code block line numbers in Safari / iOS.\n */\n word-wrap: normal;\n\n & > span {\n /* stylelint-disable value-no-vendor-prefix */\n -ms-grid-row: 1;\n -ms-grid-column: 2;\n /* stylelint-enable */\n grid-column: 1;\n }\n }\n\n & .MediaGroup,\n & .code-block {\n margin-top: ", ";\n\n &:first-child {\n margin-top: 0;\n }\n\n &:hover button.copy-to-clipboard{\n opacity: 1;\n position: absolute;\n height: 32px;\n width: 32px;\n right: 6px;\n top: 4px;\n padding: 2px;\n }\n }\n\n ", ";\n & [data-layout-section] {\n margin-top: ", "px;\n & > div + div {\n margin-left: ", "px;\n }\n\n @media screen and (max-width: ", "px) {\n & > div + div {\n margin-left: 0;\n }\n }\n }\n"])), _editorSharedStyles.editorFontSize, (0, _components.themed)({
120
+ var Wrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n line-height: 1.5rem;\n color: ", ";\n\n ", "\n ", "\n\n & h1 {\n ", "\n }\n\n & h2 {\n ", "\n }\n\n & h3 {\n ", "\n }\n\n & h4 {\n ", "\n }\n\n & h5 {\n ", "\n }\n\n & h6 {\n ", "\n }\n\n & span.akActionMark {\n color: ", ";\n text-decoration: none;\n\n &:hover {\n color: ", ";\n text-decoration: underline;\n }\n }\n\n & span.akActionMark {\n cursor: pointer;\n }\n\n & span[data-placeholder] {\n color: ", ";\n }\n\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", "\n\n & .UnknownBlock {\n font-family: ", ";\n font-size: ", ";\n font-weight: 400;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n & span.date-node {\n background: ", ";\n border-radius: ", "px;\n color: ", ";\n padding: 2px 4px;\n margin: 0 1px;\n transition: background 0.3s;\n }\n\n & span.date-node-highlighted {\n background: ", ";\n color: ", ";\n }\n\n & .renderer-image {\n max-width: 100%;\n display: block;\n margin: ", "px 0;\n }\n\n .", ".rich-media-wrapped + .", ":not(.rich-media-wrapped) {\n clear: both;\n }\n\n & .code-block,\n & blockquote,\n & hr,\n & > div > div:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + .rich-media-wrapped + *:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + div:not(.rich-media-wrapped),\n .", ".image-align-start,\n .", ".image-center,\n .", ".image-align-end {\n clear: both;\n }\n\n & .rich-media-wrapped {\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n margin-top: 8px;\n }\n }\n\n ", "\n\n ", " &\n div[class^='image-wrap-'] + div[class^='image-wrap-'] {\n margin-left: 0;\n margin-right: 0;\n }\n\n /* Breakout for tables and extensions */\n .", " > {\n * .", " {\n width: 100% !important;\n left: 0 !important;\n }\n\n * .", " {\n overflow-x: auto;\n }\n\n & .", ":first-child {\n margin-top: 0;\n }\n }\n\n .", " {\n margin-top: ", ";\n }\n\n .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n .", " {\n overflow-x: auto;\n }\n\n ", "\n\n .", " {\n z-index: 0;\n transition: all 0.1s linear;\n display: flex; /* needed to avoid position: fixed jumpiness in Chrome */\n\n /** Shadow overrides */\n &.", "::after, &.", "::before {\n top: ", "px;\n height: calc(100% - ", "px);\n z-index: ", ";\n }\n\n /**\n * A hack for making all the <th /> heights equal in case some have shorter\n * content than others.\n *\n * This is done to make sort buttons fill entire <th />.\n */\n table {\n height: 1px; /* will be ignored */\n ", ";\n margin-left: 0;\n margin-right: 0;\n }\n\n table tr:first-child {\n height: 100%;\n\n td, th {\n position: relative;\n }\n }\n\n table[data-number-column='true'] {\n .", " {\n background-color: ", ";\n border-right: 1px solid ", ";\n width: ", "px;\n text-align: center;\n color: ", ";\n font-size: ", ";\n }\n\n .fixed .", " {\n border-right: 0px none;\n }\n }\n }\n\n tr[data-header-row].fixed {\n position: fixed !important;\n display: flex;\n overflow: hidden;\n z-index: ", ";\n\n border-right: 1px solid ", ";\n border-bottom: 1px solid ", ";\n\n /* this is to compensate for the table border */\n transform: translateX(-1px);\n }\n\n .sticky > th {\n z-index: ", ";\n position: sticky !important;\n top: 0;\n }\n\n /* Make the number column header sticky */\n .sticky > td {\n position: sticky !important;\n top: 0;\n }\n\n /* add border for position: sticky\n and work around background-clip: padding-box\n bug for FF causing box-shadow bug in Chrome */\n .sticky th, .sticky td {\n box-shadow: 0px 1px ", ", 0px -0.5px ", ", inset -1px 0px ", ", 0px -1px ", ";\n }\n\n /* this will remove jumpiness caused in Chrome for sticky headers */\n .fixed + tr {\n min-height: 0px;\n }\n\n /*\n * We wrap CodeBlock in a grid to prevent it from overflowing the container of the renderer.\n * See ED-4159.\n */\n & .code-block {\n max-width: 100%;\n /* -ms- properties are necessary until MS supports the latest version of the grid spec */\n /* stylelint-disable value-no-vendor-prefix, declaration-block-no-duplicate-properties */\n display: -ms-grid;\n display: grid;\n -ms-grid-columns: auto 1fr;\n /* stylelint-enable */\n\n grid-template-columns: minmax(0, 1fr);\n position: relative;\n border-radius: ", "px;\n\n /*\n * The overall renderer has word-wrap: break; which causes issues with\n * code block line numbers in Safari / iOS.\n */\n word-wrap: normal;\n\n & > span {\n /* stylelint-disable value-no-vendor-prefix */\n -ms-grid-row: 1;\n -ms-grid-column: 2;\n /* stylelint-enable */\n grid-column: 1;\n }\n }\n\n & .MediaGroup,\n & .code-block {\n margin-top: ", ";\n\n &:first-child {\n margin-top: 0;\n }\n\n &:hover button.copy-to-clipboard{\n opacity: 1;\n position: absolute;\n height: 32px;\n width: 32px;\n right: 6px;\n top: 4px;\n padding: 2px;\n }\n }\n\n ", ";\n & [data-layout-section] {\n margin-top: ", "px;\n & > div + div {\n margin-left: ", "px;\n }\n\n @media screen and (max-width: ", "px) {\n & > div + div {\n margin-left: 0;\n }\n }\n }\n"])), _editorSharedStyles.editorFontSize, (0, _components.themed)({
121
121
  light: colors.N800,
122
122
  dark: '#B8C7E0'
123
- }), fullPageStyles, fullWidthStyles, _typography.h700, _typography.h600, _typography.h500, _typography.h400, _typography.h300, _typography.h100, _headingAnchor.HeadingAnchorWrapperClassName, headingAnchorStyle('h1'), headingAnchorStyle('h2'), headingAnchorStyle('h3'), headingAnchorStyle('h4'), headingAnchorStyle('h5'), headingAnchorStyle('h6'), colors.B400, colors.B300, colors.placeholderText, _editorCommon.whitespaceSharedStyles, _editorCommon.blockquoteSharedStyles, _editorCommon.headingsSharedStyles, _editorCommon.panelSharedStyles, _editorCommon.ruleSharedStyles, _editorCommon.paragraphSharedStyles, _editorCommon.listsSharedStyles, _editorCommon.indentationSharedStyles, _editorCommon.blockMarksSharedStyles, _editorCommon.codeMarkSharedStyles, _editorCommon.shadowSharedStyle, _editorCommon.dateSharedStyle, _editorCommon.tasksAndDecisionsStyles, _editorCommon.smartCardSharedStyles, (0, _constants.fontFamily)(), (0, _editorSharedStyles.relativeFontSizeToBase16)((0, _constants.fontSize)()), (0, _components.themed)({
123
+ }), fullPageStyles, fullWidthStyles, headingAnchorStyle('h1'), headingAnchorStyle('h2'), headingAnchorStyle('h3'), headingAnchorStyle('h4'), headingAnchorStyle('h5'), headingAnchorStyle('h6'), colors.B400, colors.B300, colors.placeholderText, _editorCommon.whitespaceSharedStyles, _editorCommon.blockquoteSharedStyles, _editorCommon.headingsSharedStyles, _editorCommon.panelSharedStyles, _editorCommon.ruleSharedStyles, _editorCommon.paragraphSharedStyles, _editorCommon.listsSharedStyles, _editorCommon.indentationSharedStyles, _editorCommon.blockMarksSharedStyles, _editorCommon.codeMarkSharedStyles, _editorCommon.shadowSharedStyle, _editorCommon.dateSharedStyle, _editorCommon.tasksAndDecisionsStyles, _editorCommon.smartCardSharedStyles, (0, _constants.fontFamily)(), (0, _editorSharedStyles.relativeFontSizeToBase16)((0, _constants.fontSize)()), (0, _components.themed)({
124
124
  light: colors.N30A,
125
125
  dark: colors.DN70
126
126
  }), (0, _constants.borderRadius)(), (0, _components.themed)({
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "81.1.1",
3
+ "version": "82.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -192,6 +192,9 @@ export default class ReactSerializer {
192
192
  case 'mediaGroup':
193
193
  return this.getMediaGroupProps(node);
194
194
 
195
+ case 'mediaInline':
196
+ return this.getMediaInlineProps(node);
197
+
195
198
  case 'mediaSingle':
196
199
  return this.getMediaSingleProps(node, path);
197
200
 
@@ -410,6 +413,11 @@ export default class ReactSerializer {
410
413
  };
411
414
  }
412
415
 
416
+ getMediaInlineProps(node) {
417
+ return { ...this.getProps(node)
418
+ };
419
+ }
420
+
413
421
  getTaskItemProps(node, path = []) {
414
422
  return { ...this.getProps(node, path),
415
423
  disabled: this.disableActions
@@ -66,8 +66,7 @@ class HeadingAnchor extends React.PureComponent {
66
66
  _defineProperty(this, "renderAnchorButton", () => {
67
67
  return /*#__PURE__*/React.createElement(CopyAnchorButton, {
68
68
  onMouseLeave: this.resetMessage,
69
- onClick: this.copyToClipboard,
70
- "aria-label": this.state.tooltipMessage
69
+ onClick: this.copyToClipboard
71
70
  }, /*#__PURE__*/React.createElement(LinkIcon, {
72
71
  label: "copy",
73
72
  size: this.props.level > 3 ? 'small' : 'medium',
@@ -39,11 +39,9 @@ function Heading(props) {
39
39
  const showAnchorLink = !!props.showAnchorLink;
40
40
  const isRightAligned = hasRightAlignmentMark(marks);
41
41
  const enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
42
- return /*#__PURE__*/React.createElement("div", {
43
- className: `heading-wrapper ${HX}`
44
- }, /*#__PURE__*/React.createElement(HX, _extends({
42
+ return /*#__PURE__*/React.createElement(HX, _extends({
45
43
  id: headingId
46
- }, dataAttributes), /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children)), showAnchorLink && /*#__PURE__*/React.createElement(CopyTextConsumer, null, ({
44
+ }, dataAttributes), /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children, showAnchorLink && /*#__PURE__*/React.createElement(CopyTextConsumer, null, ({
47
45
  copyTextToClipboard
48
46
  }) => {
49
47
  return headingId && /*#__PURE__*/React.createElement(AnalyticsContext.Consumer, null, ({
@@ -61,7 +59,7 @@ function Heading(props) {
61
59
  return copyTextToClipboard(getCurrentUrlWithHash(headingId));
62
60
  }
63
61
  }));
64
- }));
62
+ })));
65
63
  }
66
64
 
67
65
  export default Heading;
@@ -85,6 +85,12 @@ const MediaGroup = Loadable({
85
85
  './mediaGroup').then(mod => mod.default),
86
86
  loading: () => null
87
87
  });
88
+ const MediaInline = Loadable({
89
+ loader: () => import(
90
+ /* webpackChunkName: "@atlaskit-internal_renderer-node_MediaInline" */
91
+ './mediaInline').then(mod => mod.default),
92
+ loading: () => null
93
+ });
88
94
  const Mention = Loadable({
89
95
  loader: () => import(
90
96
  /* webpackChunkName: "@atlaskit-internal_renderer-node_Mention" */
@@ -119,6 +125,7 @@ export const nodeToReact = {
119
125
  listItem: ListItem,
120
126
  media: Media,
121
127
  mediaGroup: MediaGroup,
128
+ mediaInline: MediaInline,
122
129
  mediaSingle: MediaSingle,
123
130
  mention: Mention,
124
131
  orderedList: OrderedList,
@@ -278,4 +285,4 @@ const isEmojiBlock = pnode => {
278
285
  return emojiCount > 0;
279
286
  };
280
287
 
281
- export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard };
288
+ export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaInline, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard };
@@ -0,0 +1,53 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { MediaInlineCard } from '@atlaskit/media-card';
3
+ import { WithProviders } from '@atlaskit/editor-common';
4
+ export const RenderMediaInline = props => {
5
+ const {
6
+ mediaProvider
7
+ } = props;
8
+ const [viewMediaClientConfigState, setViewMediaClientConfigState] = useState({});
9
+ useEffect(() => {
10
+ updateViewMediaClientConfigState(mediaProvider);
11
+ }, [mediaProvider]);
12
+
13
+ const updateViewMediaClientConfigState = async mediaProvider => {
14
+ if (mediaProvider) {
15
+ const mediaClientConfig = await mediaProvider;
16
+ setViewMediaClientConfigState(mediaClientConfig.viewMediaClientConfig);
17
+ }
18
+ };
19
+
20
+ return /*#__PURE__*/React.createElement(MediaInlineCard, {
21
+ identifier: props.identifier,
22
+ shouldOpenMediaViewer: true,
23
+ mediaClientConfig: viewMediaClientConfigState
24
+ });
25
+ };
26
+
27
+ const MediaInline = props => {
28
+ const {
29
+ collection,
30
+ id,
31
+ providers
32
+ } = props;
33
+ const identifier = {
34
+ id,
35
+ mediaItemType: 'file',
36
+ collectionName: collection
37
+ };
38
+ return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(WithProviders, {
39
+ providers: ['mediaProvider'],
40
+ providerFactory: providers,
41
+ renderNode: providers => {
42
+ const {
43
+ mediaProvider
44
+ } = providers;
45
+ return /*#__PURE__*/React.createElement(RenderMediaInline, {
46
+ identifier: identifier,
47
+ mediaProvider: mediaProvider
48
+ });
49
+ }
50
+ }));
51
+ };
52
+
53
+ export default MediaInline;
@@ -77,7 +77,7 @@ const Panel = props => {
77
77
  const icon = getIcon();
78
78
 
79
79
  if (icon) {
80
- return /*#__PURE__*/React.createElement("span", {
80
+ return /*#__PURE__*/React.createElement("div", {
81
81
  className: PanelSharedCssClassName.icon
82
82
  }, icon);
83
83
  }
@@ -147,7 +147,7 @@ export class Renderer extends PureComponent {
147
147
  const nextMedia = nextProps.media || {};
148
148
  const media = this.props.media || {};
149
149
 
150
- if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
150
+ if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.UNSAFE_allowCustomPanels !== this.props.UNSAFE_allowCustomPanels || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
151
151
  this.serializer = new ReactSerializer(this.deriveSerializerProps(nextProps));
152
152
  }
153
153
  }
@@ -7,7 +7,6 @@ import { tableSharedStyle, columnLayoutSharedStyle, blockquoteSharedStyles, head
7
7
  import { editorFontSize, blockNodesVerticalMargin, akEditorTableToolbar, akEditorTableToolbarDark, akEditorTableBorder, akEditorTableBorderDark, akEditorTableNumberColumnWidth, gridMediumMaxWidth, akEditorFullWidthLayoutWidth, akEditorStickyHeaderZIndex, relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
8
8
  import { RendererCssClassName } from '../../consts';
9
9
  import { HeadingAnchorWrapperClassName } from '../../react/nodes/heading-anchor';
10
- import { h100, h300, h400, h500, h600, h700 } from '@atlaskit/theme/typography';
11
10
  export const FullPagePadding = 32;
12
11
 
13
12
  const getLineHeight = fontCode => headingSizesImport[fontCode].lineHeight / headingSizesImport[fontCode].size;
@@ -38,10 +37,12 @@ const headingAnchorStyle = headingTag => css`
38
37
  * The copy link button doesn't reserve space in the DOM so that
39
38
  * the text alignment isn't impacted by the button/icon's space.
40
39
  */
41
- display: inline-block;
42
- & + .${HeadingAnchorWrapperClassName} {
40
+ .${HeadingAnchorWrapperClassName} {
43
41
  position: absolute;
42
+ height: ${headingSizes[headingTag].lineHeight}em;
43
+
44
44
  margin-left: 6px;
45
+
45
46
  button {
46
47
  padding-left: 0;
47
48
  padding-right: 0;
@@ -58,16 +59,18 @@ const headingAnchorStyle = headingTag => css`
58
59
  * @see https://caniuse.com/mdn-css_at-rules_media_hover
59
60
  */
60
61
  @media (hover: hover) and (pointer: fine) {
61
- & + .${HeadingAnchorWrapperClassName} {
62
+ .${HeadingAnchorWrapperClassName} {
62
63
  > button {
63
64
  opacity: 0;
64
65
  transform: translate(-8px, 0px);
65
66
  transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;
66
- &:focus {
67
- opacity: 1;
68
- transform: none !important;
69
- outline: solid 2px ${colors.B200};
70
- }
67
+ }
68
+ }
69
+
70
+ &:hover {
71
+ .${HeadingAnchorWrapperClassName} > button {
72
+ opacity: 1;
73
+ transform: none !important;
71
74
  }
72
75
  }
73
76
  }
@@ -93,39 +96,41 @@ const alignedHeadingAnchorStyle = ({
93
96
  * container edge.
94
97
  */
95
98
  .fabric-editor-block-mark:not([data-align='center'])[data-align] {
96
- .heading-wrapper {
97
- // Using right to left text to achieve the inverse effect
98
- // of where the copy link button icon sits for left/center
99
- // alignment.
100
- // Although this is unorthodox it's the only approach which
101
- // allows the button to sit flush against the left edge of
102
- // bottom line of text.
103
- direction: rtl;
104
-
105
- // By default RTL will negatively impact the layout of special
106
- // characters within the heading text, and potentially other
107
- // nested inline nodes. To prevent this we insert pseudo elements
108
- // containing HTML entities to retain LTR for all heading content
109
- // except for the copy link button.
110
- > *:not(.${HeadingAnchorWrapperClassName}):not(br) {
111
- ::before {
112
- // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm
113
- content: '\u202A';
114
- }
115
- ::after {
116
- // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm
117
- content: '\u202C';
99
+ > {
100
+ h1, h2, h3, h4, h5, h6 {
101
+ // Using right to left text to achieve the inverse effect
102
+ // of where the copy link button icon sits for left/center
103
+ // alignment.
104
+ // Although this is unorthodox it's the only approach which
105
+ // allows the button to sit flush against the left edge of
106
+ // bottom line of text.
107
+ direction: rtl;
108
+
109
+ // By default RTL will negatively impact the layout of special
110
+ // characters within the heading text, and potentially other
111
+ // nested inline nodes. To prevent this we insert pseudo elements
112
+ // containing HTML entities to retain LTR for all heading content
113
+ // except for the copy link button.
114
+ > *:not(.${HeadingAnchorWrapperClassName}):not(br) {
115
+ ::before {
116
+ // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm
117
+ content: '\u202A';
118
+ }
119
+ ::after {
120
+ // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm
121
+ content: '\u202C';
122
+ }
118
123
  }
119
124
  }
120
125
  }
121
- }
122
- .${HeadingAnchorWrapperClassName} {
123
- margin: 0 6px 0 0;
124
- }
126
+ .${HeadingAnchorWrapperClassName} {
127
+ margin: 0 6px 0 0;
128
+ }
125
129
 
126
- @media (hover: hover) and (pointer: fine) {
127
- .${HeadingAnchorWrapperClassName} > button {
128
- transform: translate(8px, 0);
130
+ @media (hover: hover) and (pointer: fine) {
131
+ .${HeadingAnchorWrapperClassName} > button {
132
+ transform: translate(8px, 0px);
133
+ }
129
134
  }
130
135
  }
131
136
  }
@@ -160,8 +165,10 @@ const tableSortableColumnStyle = ({
160
165
  .${HeadingAnchorWrapperClassName} {
161
166
  position: unset;
162
167
  }
163
- .heading-wrapper {
164
- margin-right: 30px;
168
+ > {
169
+ h1, h2, h3, h4, h5, h6 {
170
+ margin-right: 30px;
171
+ }
165
172
  }
166
173
  `;
167
174
  }
@@ -272,47 +279,6 @@ export const Wrapper = styled.div`
272
279
  ${fullPageStyles}
273
280
  ${fullWidthStyles}
274
281
 
275
- div.heading-wrapper{
276
- position: relative;
277
- h1, h2, h3, h4, h5, h6{
278
- margin-top: 0;
279
- font-size: inherit;
280
- }
281
- &.h1 {
282
- ${h700};
283
- margin-top: 1.667em;
284
- }
285
- &.h2 {
286
- ${h600};
287
- margin-top: 1.8em;
288
- }
289
- &.h3 {
290
- ${h500};
291
- margin-top: 2em;
292
- }
293
- &.h4 {
294
- ${h400};
295
- margin-top: 1.357em;
296
- }
297
- &.h5 {
298
- ${h300};
299
- margin-top: 1.667em;
300
- }
301
- &.h6 {
302
- ${h100};
303
- margin-top: 1.455em;
304
- }
305
- /* show copy button on heading wrapper hover */
306
- @media (hover: hover) and (pointer: fine) {
307
- &:hover {
308
- .${HeadingAnchorWrapperClassName} > button{
309
- opacity: 1;
310
- transform: none !important;
311
- }
312
- }
313
- }
314
- }
315
-
316
282
  & h1 {
317
283
  ${headingAnchorStyle('h1')}
318
284
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "81.1.1",
3
+ "version": "82.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -212,6 +212,9 @@ var ReactSerializer = /*#__PURE__*/function () {
212
212
  case 'mediaGroup':
213
213
  return this.getMediaGroupProps(node);
214
214
 
215
+ case 'mediaInline':
216
+ return this.getMediaInlineProps(node);
217
+
215
218
  case 'mediaSingle':
216
219
  return this.getMediaSingleProps(node, path);
217
220
 
@@ -470,6 +473,11 @@ var ReactSerializer = /*#__PURE__*/function () {
470
473
  enableDownloadButton: (_this$media = this.media) === null || _this$media === void 0 ? void 0 : _this$media.enableDownloadButton
471
474
  });
472
475
  }
476
+ }, {
477
+ key: "getMediaInlineProps",
478
+ value: function getMediaInlineProps(node) {
479
+ return _objectSpread({}, this.getProps(node));
480
+ }
473
481
  }, {
474
482
  key: "getTaskItemProps",
475
483
  value: function getTaskItemProps(node) {
@@ -111,8 +111,7 @@ var HeadingAnchor = /*#__PURE__*/function (_React$PureComponent) {
111
111
  _defineProperty(_assertThisInitialized(_this), "renderAnchorButton", function () {
112
112
  return /*#__PURE__*/React.createElement(CopyAnchorButton, {
113
113
  onMouseLeave: _this.resetMessage,
114
- onClick: _this.copyToClipboard,
115
- "aria-label": _this.state.tooltipMessage
114
+ onClick: _this.copyToClipboard
116
115
  }, /*#__PURE__*/React.createElement(LinkIcon, {
117
116
  label: "copy",
118
117
  size: _this.props.level > 3 ? 'small' : 'medium',
@@ -40,11 +40,9 @@ function Heading(props) {
40
40
  var showAnchorLink = !!props.showAnchorLink;
41
41
  var isRightAligned = hasRightAlignmentMark(marks);
42
42
  var enableNestedHeaderLinks = allowHeadingAnchorLinks && allowHeadingAnchorLinks.allowNestedHeaderLinks;
43
- return /*#__PURE__*/React.createElement("div", {
44
- className: "heading-wrapper ".concat(HX)
45
- }, /*#__PURE__*/React.createElement(HX, _extends({
43
+ return /*#__PURE__*/React.createElement(HX, _extends({
46
44
  id: headingId
47
- }, dataAttributes), /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children)), showAnchorLink && /*#__PURE__*/React.createElement(CopyTextConsumer, null, function (_ref) {
45
+ }, dataAttributes), /*#__PURE__*/React.createElement(React.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children, showAnchorLink && /*#__PURE__*/React.createElement(CopyTextConsumer, null, function (_ref) {
48
46
  var copyTextToClipboard = _ref.copyTextToClipboard;
49
47
  return headingId && /*#__PURE__*/React.createElement(AnalyticsContext.Consumer, null, function (_ref2) {
50
48
  var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
@@ -62,7 +60,7 @@ function Heading(props) {
62
60
  }
63
61
  });
64
62
  });
65
- }));
63
+ })));
66
64
  }
67
65
 
68
66
  export default Heading;
@@ -145,6 +145,18 @@ var MediaGroup = Loadable({
145
145
  return null;
146
146
  }
147
147
  });
148
+ var MediaInline = Loadable({
149
+ loader: function loader() {
150
+ return import(
151
+ /* webpackChunkName: "@atlaskit-internal_renderer-node_MediaInline" */
152
+ './mediaInline').then(function (mod) {
153
+ return mod.default;
154
+ });
155
+ },
156
+ loading: function loading() {
157
+ return null;
158
+ }
159
+ });
148
160
  var Mention = Loadable({
149
161
  loader: function loader() {
150
162
  return import(
@@ -191,6 +203,7 @@ export var nodeToReact = {
191
203
  listItem: ListItem,
192
204
  media: Media,
193
205
  mediaGroup: MediaGroup,
206
+ mediaInline: MediaInline,
194
207
  mediaSingle: MediaSingle,
195
208
  mention: Mention,
196
209
  orderedList: OrderedList,
@@ -354,4 +367,4 @@ var isEmojiBlock = function isEmojiBlock(pnode) {
354
367
  return emojiCount > 0;
355
368
  };
356
369
 
357
- export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard };
370
+ export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaInline, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard };
@@ -0,0 +1,80 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import React, { useEffect, useState } from 'react';
5
+ import { MediaInlineCard } from '@atlaskit/media-card';
6
+ import { WithProviders } from '@atlaskit/editor-common';
7
+ export var RenderMediaInline = function RenderMediaInline(props) {
8
+ var mediaProvider = props.mediaProvider;
9
+
10
+ var _useState = useState({}),
11
+ _useState2 = _slicedToArray(_useState, 2),
12
+ viewMediaClientConfigState = _useState2[0],
13
+ setViewMediaClientConfigState = _useState2[1];
14
+
15
+ useEffect(function () {
16
+ updateViewMediaClientConfigState(mediaProvider);
17
+ }, [mediaProvider]);
18
+
19
+ var updateViewMediaClientConfigState = /*#__PURE__*/function () {
20
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(mediaProvider) {
21
+ var mediaClientConfig;
22
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
23
+ while (1) {
24
+ switch (_context.prev = _context.next) {
25
+ case 0:
26
+ if (!mediaProvider) {
27
+ _context.next = 5;
28
+ break;
29
+ }
30
+
31
+ _context.next = 3;
32
+ return mediaProvider;
33
+
34
+ case 3:
35
+ mediaClientConfig = _context.sent;
36
+ setViewMediaClientConfigState(mediaClientConfig.viewMediaClientConfig);
37
+
38
+ case 5:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }
43
+ }, _callee);
44
+ }));
45
+
46
+ return function updateViewMediaClientConfigState(_x) {
47
+ return _ref.apply(this, arguments);
48
+ };
49
+ }();
50
+
51
+ return /*#__PURE__*/React.createElement(MediaInlineCard, {
52
+ identifier: props.identifier,
53
+ shouldOpenMediaViewer: true,
54
+ mediaClientConfig: viewMediaClientConfigState
55
+ });
56
+ };
57
+
58
+ var MediaInline = function MediaInline(props) {
59
+ var collection = props.collection,
60
+ id = props.id,
61
+ providers = props.providers;
62
+ var identifier = {
63
+ id: id,
64
+ mediaItemType: 'file',
65
+ collectionName: collection
66
+ };
67
+ return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(WithProviders, {
68
+ providers: ['mediaProvider'],
69
+ providerFactory: providers,
70
+ renderNode: function renderNode(providers) {
71
+ var mediaProvider = providers.mediaProvider;
72
+ return /*#__PURE__*/React.createElement(RenderMediaInline, {
73
+ identifier: identifier,
74
+ mediaProvider: mediaProvider
75
+ });
76
+ }
77
+ }));
78
+ };
79
+
80
+ export default MediaInline;
@@ -72,7 +72,7 @@ var Panel = function Panel(props) {
72
72
  var icon = getIcon();
73
73
 
74
74
  if (icon) {
75
- return /*#__PURE__*/React.createElement("span", {
75
+ return /*#__PURE__*/React.createElement("div", {
76
76
  className: PanelSharedCssClassName.icon
77
77
  }, icon);
78
78
  }
@@ -174,7 +174,7 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
174
174
  var nextMedia = nextProps.media || {};
175
175
  var media = this.props.media || {};
176
176
 
177
- if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
177
+ if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.UNSAFE_allowCustomPanels !== this.props.UNSAFE_allowCustomPanels || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextMedia.allowLinking !== media.allowLinking) {
178
178
  this.serializer = new ReactSerializer(this.deriveSerializerProps(nextProps));
179
179
  }
180
180
  }
@@ -11,7 +11,6 @@ import { tableSharedStyle, columnLayoutSharedStyle, blockquoteSharedStyles, head
11
11
  import { editorFontSize, blockNodesVerticalMargin, akEditorTableToolbar, akEditorTableToolbarDark, akEditorTableBorder, akEditorTableBorderDark, akEditorTableNumberColumnWidth, gridMediumMaxWidth, akEditorFullWidthLayoutWidth, akEditorStickyHeaderZIndex, relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
12
12
  import { RendererCssClassName } from '../../consts';
13
13
  import { HeadingAnchorWrapperClassName } from '../../react/nodes/heading-anchor';
14
- import { h100, h300, h400, h500, h600, h700 } from '@atlaskit/theme/typography';
15
14
  export var FullPagePadding = 32;
16
15
 
17
16
  var getLineHeight = function getLineHeight(fontCode) {
@@ -40,7 +39,7 @@ export var headingSizes = {
40
39
  };
41
40
 
42
41
  var headingAnchorStyle = function headingAnchorStyle(headingTag) {
43
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n /**\n * The copy link button doesn't reserve space in the DOM so that\n * the text alignment isn't impacted by the button/icon's space.\n */\n display: inline-block;\n & + .", " {\n position: absolute;\n margin-left: 6px;\n button {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n /**\n * Applies hover effects to the heading anchor link button\n * to fade in when the user rolls over the heading.\n *\n * The link is persistent on mobile, so we use feature detection\n * to enable hover effects for systems that support it (desktop).\n *\n * @see https://caniuse.com/mdn-css_at-rules_media_hover\n */\n @media (hover: hover) and (pointer: fine) {\n & + .", " {\n > button {\n opacity: 0;\n transform: translate(-8px, 0px);\n transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;\n &:focus {\n opacity: 1;\n transform: none !important;\n outline: solid 2px ", ";\n }\n }\n }\n }\n "])), HeadingAnchorWrapperClassName, HeadingAnchorWrapperClassName, colors.B200);
42
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n /**\n * The copy link button doesn't reserve space in the DOM so that\n * the text alignment isn't impacted by the button/icon's space.\n */\n .", " {\n position: absolute;\n height: ", "em;\n\n margin-left: 6px;\n\n button {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n /**\n * Applies hover effects to the heading anchor link button\n * to fade in when the user rolls over the heading.\n *\n * The link is persistent on mobile, so we use feature detection\n * to enable hover effects for systems that support it (desktop).\n *\n * @see https://caniuse.com/mdn-css_at-rules_media_hover\n */\n @media (hover: hover) and (pointer: fine) {\n .", " {\n > button {\n opacity: 0;\n transform: translate(-8px, 0px);\n transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;\n }\n }\n\n &:hover {\n .", " > button {\n opacity: 1;\n transform: none !important;\n }\n }\n }\n "])), HeadingAnchorWrapperClassName, headingSizes[headingTag].lineHeight, HeadingAnchorWrapperClassName, HeadingAnchorWrapperClassName);
44
43
  };
45
44
 
46
45
  var alignedHeadingAnchorStyle = function alignedHeadingAnchorStyle(_ref) {
@@ -50,7 +49,7 @@ var alignedHeadingAnchorStyle = function alignedHeadingAnchorStyle(_ref) {
50
49
  return '';
51
50
  }
52
51
 
53
- return "\n .fabric-editor-block-mark[data-align] > {\n h1, h2, h3, h4, h5, h6 {\n position: relative;\n }\n }\n\n /**\n * For right-alignment we flip the link to be before the heading\n * text so that the text is flush up against the edge of the editor's\n * container edge.\n */\n .fabric-editor-block-mark:not([data-align='center'])[data-align] {\n .heading-wrapper {\n // Using right to left text to achieve the inverse effect\n // of where the copy link button icon sits for left/center\n // alignment.\n // Although this is unorthodox it's the only approach which\n // allows the button to sit flush against the left edge of\n // bottom line of text.\n direction: rtl;\n\n // By default RTL will negatively impact the layout of special\n // characters within the heading text, and potentially other\n // nested inline nodes. To prevent this we insert pseudo elements\n // containing HTML entities to retain LTR for all heading content\n // except for the copy link button.\n > *:not(.".concat(HeadingAnchorWrapperClassName, "):not(br) {\n ::before {\n // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm\n content: '\u202A';\n }\n ::after {\n // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm\n content: '\u202C';\n }\n }\n }\n }\n .").concat(HeadingAnchorWrapperClassName, " {\n margin: 0 6px 0 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n .").concat(HeadingAnchorWrapperClassName, " > button {\n transform: translate(8px, 0);\n }\n }\n }\n ");
52
+ return "\n .fabric-editor-block-mark[data-align] > {\n h1, h2, h3, h4, h5, h6 {\n position: relative;\n }\n }\n\n /**\n * For right-alignment we flip the link to be before the heading\n * text so that the text is flush up against the edge of the editor's\n * container edge.\n */\n .fabric-editor-block-mark:not([data-align='center'])[data-align] {\n > {\n h1, h2, h3, h4, h5, h6 {\n // Using right to left text to achieve the inverse effect\n // of where the copy link button icon sits for left/center\n // alignment.\n // Although this is unorthodox it's the only approach which\n // allows the button to sit flush against the left edge of\n // bottom line of text.\n direction: rtl;\n\n // By default RTL will negatively impact the layout of special\n // characters within the heading text, and potentially other\n // nested inline nodes. To prevent this we insert pseudo elements\n // containing HTML entities to retain LTR for all heading content\n // except for the copy link button.\n > *:not(.".concat(HeadingAnchorWrapperClassName, "):not(br) {\n ::before {\n // Open LTR: https://www.fileformat.info/info/unicode/char/202a/index.htm\n content: '\u202A';\n }\n ::after {\n // Close LTR: https://www.fileformat.info/info/unicode/char/202c/index.htm\n content: '\u202C';\n }\n }\n }\n }\n .").concat(HeadingAnchorWrapperClassName, " {\n margin: 0 6px 0 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n .").concat(HeadingAnchorWrapperClassName, " > button {\n transform: translate(8px, 0px);\n }\n }\n }\n }\n ");
54
53
  };
55
54
 
56
55
  var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
@@ -64,7 +63,7 @@ var tableSortableColumnStyle = function tableSortableColumnStyle(_ref2) {
64
63
  var headingsCss = '';
65
64
 
66
65
  if (allowNestedHeaderLinks) {
67
- 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 .heading-wrapper {\n margin-right: 30px;\n }\n ");
66
+ 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 ");
68
67
  }
69
68
 
70
69
  return "\n .".concat(RendererCssClassName.SORTABLE_COLUMN, " {\n padding: 0;\n\n .").concat(RendererCssClassName.SORTABLE_COLUMN_BUTTON, " {\n width: 100%;\n height: 100%;\n cursor: pointer;\n padding: ").concat(tableCellPadding, "px;\n border-width: 1.5px;\n border-style: solid;\n border-color: transparent;\n\n > *:first-child {\n margin-top: 0;\n }\n\n > .ProseMirror-gapcursor.-right:first-child + * {\n margin-top: 0;\n }\n\n > .ProseMirror-gapcursor:first-child + span + * {\n margin-top: 0;\n }\n\n @supports selector(:focus-visible) {\n &:focus {\n outline: unset;\n }\n &:focus-visible {\n border-color: ").concat(colors.B300, ";\n }\n }\n\n ").concat(headingsCss, "\n }\n\n &.").concat(RendererCssClassName.SORTABLE_COLUMN_NOT_ALLOWED, " .").concat(RendererCssClassName.SORTABLE_COLUMN_BUTTON, " {\n cursor: default;\n }\n\n .").concat(RendererCssClassName.SORTABLE_COLUMN_ICON, " {\n margin: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n .").concat(RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, " {\n opacity: 0;\n }\n\n &:hover {\n .").concat(RendererCssClassName.SORTABLE_COLUMN_NO_ORDER, " {\n opacity: 1;\n }\n }\n }\n ");
@@ -92,10 +91,10 @@ var fullWidthStyles = function fullWidthStyles(_ref4) {
92
91
  }; // prettier-ignore
93
92
 
94
93
 
95
- export var Wrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-size: ", "px;\n line-height: 1.5rem;\n color: ", ";\n\n ", "\n ", "\n\n div.heading-wrapper{\n position: relative;\n h1, h2, h3, h4, h5, h6{\n margin-top: 0;\n font-size: inherit;\n }\n &.h1 {\n ", ";\n margin-top: 1.667em;\n }\n &.h2 {\n ", ";\n margin-top: 1.8em;\n }\n &.h3 {\n ", ";\n margin-top: 2em;\n }\n &.h4 {\n ", ";\n margin-top: 1.357em;\n }\n &.h5 {\n ", ";\n margin-top: 1.667em;\n }\n &.h6 {\n ", ";\n margin-top: 1.455em;\n }\n /* show copy button on heading wrapper hover */\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n .", " > button{\n opacity: 1;\n transform: none !important;\n }\n }\n }\n }\n\n & h1 {\n ", "\n }\n\n & h2 {\n ", "\n }\n\n & h3 {\n ", "\n }\n\n & h4 {\n ", "\n }\n\n & h5 {\n ", "\n }\n\n & h6 {\n ", "\n }\n\n & span.akActionMark {\n color: ", ";\n text-decoration: none;\n\n &:hover {\n color: ", ";\n text-decoration: underline;\n }\n }\n\n & span.akActionMark {\n cursor: pointer;\n }\n\n & span[data-placeholder] {\n color: ", ";\n }\n\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", "\n\n & .UnknownBlock {\n font-family: ", ";\n font-size: ", ";\n font-weight: 400;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n & span.date-node {\n background: ", ";\n border-radius: ", "px;\n color: ", ";\n padding: 2px 4px;\n margin: 0 1px;\n transition: background 0.3s;\n }\n\n & span.date-node-highlighted {\n background: ", ";\n color: ", ";\n }\n\n & .renderer-image {\n max-width: 100%;\n display: block;\n margin: ", "px 0;\n }\n\n .", ".rich-media-wrapped + .", ":not(.rich-media-wrapped) {\n clear: both;\n }\n\n & .code-block,\n & blockquote,\n & hr,\n & > div > div:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + .rich-media-wrapped + *:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + div:not(.rich-media-wrapped),\n .", ".image-align-start,\n .", ".image-center,\n .", ".image-align-end {\n clear: both;\n }\n\n & .rich-media-wrapped {\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n margin-top: 8px;\n }\n }\n\n ", "\n\n ", " &\n div[class^='image-wrap-'] + div[class^='image-wrap-'] {\n margin-left: 0;\n margin-right: 0;\n }\n\n /* Breakout for tables and extensions */\n .", " > {\n * .", " {\n width: 100% !important;\n left: 0 !important;\n }\n\n * .", " {\n overflow-x: auto;\n }\n\n & .", ":first-child {\n margin-top: 0;\n }\n }\n\n .", " {\n margin-top: ", ";\n }\n\n .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n .", " {\n overflow-x: auto;\n }\n\n ", "\n\n .", " {\n z-index: 0;\n transition: all 0.1s linear;\n display: flex; /* needed to avoid position: fixed jumpiness in Chrome */\n\n /** Shadow overrides */\n &.", "::after, &.", "::before {\n top: ", "px;\n height: calc(100% - ", "px);\n z-index: ", ";\n }\n\n /**\n * A hack for making all the <th /> heights equal in case some have shorter\n * content than others.\n *\n * This is done to make sort buttons fill entire <th />.\n */\n table {\n height: 1px; /* will be ignored */\n ", ";\n margin-left: 0;\n margin-right: 0;\n }\n\n table tr:first-child {\n height: 100%;\n\n td, th {\n position: relative;\n }\n }\n\n table[data-number-column='true'] {\n .", " {\n background-color: ", ";\n border-right: 1px solid ", ";\n width: ", "px;\n text-align: center;\n color: ", ";\n font-size: ", ";\n }\n\n .fixed .", " {\n border-right: 0px none;\n }\n }\n }\n\n tr[data-header-row].fixed {\n position: fixed !important;\n display: flex;\n overflow: hidden;\n z-index: ", ";\n\n border-right: 1px solid ", ";\n border-bottom: 1px solid ", ";\n\n /* this is to compensate for the table border */\n transform: translateX(-1px);\n }\n\n .sticky > th {\n z-index: ", ";\n position: sticky !important;\n top: 0;\n }\n\n /* Make the number column header sticky */\n .sticky > td {\n position: sticky !important;\n top: 0;\n }\n\n /* add border for position: sticky\n and work around background-clip: padding-box\n bug for FF causing box-shadow bug in Chrome */\n .sticky th, .sticky td {\n box-shadow: 0px 1px ", ", 0px -0.5px ", ", inset -1px 0px ", ", 0px -1px ", ";\n }\n\n /* this will remove jumpiness caused in Chrome for sticky headers */\n .fixed + tr {\n min-height: 0px;\n }\n\n /*\n * We wrap CodeBlock in a grid to prevent it from overflowing the container of the renderer.\n * See ED-4159.\n */\n & .code-block {\n max-width: 100%;\n /* -ms- properties are necessary until MS supports the latest version of the grid spec */\n /* stylelint-disable value-no-vendor-prefix, declaration-block-no-duplicate-properties */\n display: -ms-grid;\n display: grid;\n -ms-grid-columns: auto 1fr;\n /* stylelint-enable */\n\n grid-template-columns: minmax(0, 1fr);\n position: relative;\n border-radius: ", "px;\n\n /*\n * The overall renderer has word-wrap: break; which causes issues with\n * code block line numbers in Safari / iOS.\n */\n word-wrap: normal;\n\n & > span {\n /* stylelint-disable value-no-vendor-prefix */\n -ms-grid-row: 1;\n -ms-grid-column: 2;\n /* stylelint-enable */\n grid-column: 1;\n }\n }\n\n & .MediaGroup,\n & .code-block {\n margin-top: ", ";\n\n &:first-child {\n margin-top: 0;\n }\n\n &:hover button.copy-to-clipboard{\n opacity: 1;\n position: absolute;\n height: 32px;\n width: 32px;\n right: 6px;\n top: 4px;\n padding: 2px;\n }\n }\n\n ", ";\n & [data-layout-section] {\n margin-top: ", "px;\n & > div + div {\n margin-left: ", "px;\n }\n\n @media screen and (max-width: ", "px) {\n & > div + div {\n margin-left: 0;\n }\n }\n }\n"])), editorFontSize, themed({
94
+ export var Wrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-size: ", "px;\n line-height: 1.5rem;\n color: ", ";\n\n ", "\n ", "\n\n & h1 {\n ", "\n }\n\n & h2 {\n ", "\n }\n\n & h3 {\n ", "\n }\n\n & h4 {\n ", "\n }\n\n & h5 {\n ", "\n }\n\n & h6 {\n ", "\n }\n\n & span.akActionMark {\n color: ", ";\n text-decoration: none;\n\n &:hover {\n color: ", ";\n text-decoration: underline;\n }\n }\n\n & span.akActionMark {\n cursor: pointer;\n }\n\n & span[data-placeholder] {\n color: ", ";\n }\n\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", ";\n ", "\n\n & .UnknownBlock {\n font-family: ", ";\n font-size: ", ";\n font-weight: 400;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n & span.date-node {\n background: ", ";\n border-radius: ", "px;\n color: ", ";\n padding: 2px 4px;\n margin: 0 1px;\n transition: background 0.3s;\n }\n\n & span.date-node-highlighted {\n background: ", ";\n color: ", ";\n }\n\n & .renderer-image {\n max-width: 100%;\n display: block;\n margin: ", "px 0;\n }\n\n .", ".rich-media-wrapped + .", ":not(.rich-media-wrapped) {\n clear: both;\n }\n\n & .code-block,\n & blockquote,\n & hr,\n & > div > div:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + .rich-media-wrapped + *:not(.rich-media-wrapped),\n .", ".rich-media-wrapped + div:not(.rich-media-wrapped),\n .", ".image-align-start,\n .", ".image-center,\n .", ".image-align-end {\n clear: both;\n }\n\n & .rich-media-wrapped {\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n margin-top: 8px;\n }\n }\n\n ", "\n\n ", " &\n div[class^='image-wrap-'] + div[class^='image-wrap-'] {\n margin-left: 0;\n margin-right: 0;\n }\n\n /* Breakout for tables and extensions */\n .", " > {\n * .", " {\n width: 100% !important;\n left: 0 !important;\n }\n\n * .", " {\n overflow-x: auto;\n }\n\n & .", ":first-child {\n margin-top: 0;\n }\n }\n\n .", " {\n margin-top: ", ";\n }\n\n .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n .", " {\n overflow-x: auto;\n }\n\n ", "\n\n .", " {\n z-index: 0;\n transition: all 0.1s linear;\n display: flex; /* needed to avoid position: fixed jumpiness in Chrome */\n\n /** Shadow overrides */\n &.", "::after, &.", "::before {\n top: ", "px;\n height: calc(100% - ", "px);\n z-index: ", ";\n }\n\n /**\n * A hack for making all the <th /> heights equal in case some have shorter\n * content than others.\n *\n * This is done to make sort buttons fill entire <th />.\n */\n table {\n height: 1px; /* will be ignored */\n ", ";\n margin-left: 0;\n margin-right: 0;\n }\n\n table tr:first-child {\n height: 100%;\n\n td, th {\n position: relative;\n }\n }\n\n table[data-number-column='true'] {\n .", " {\n background-color: ", ";\n border-right: 1px solid ", ";\n width: ", "px;\n text-align: center;\n color: ", ";\n font-size: ", ";\n }\n\n .fixed .", " {\n border-right: 0px none;\n }\n }\n }\n\n tr[data-header-row].fixed {\n position: fixed !important;\n display: flex;\n overflow: hidden;\n z-index: ", ";\n\n border-right: 1px solid ", ";\n border-bottom: 1px solid ", ";\n\n /* this is to compensate for the table border */\n transform: translateX(-1px);\n }\n\n .sticky > th {\n z-index: ", ";\n position: sticky !important;\n top: 0;\n }\n\n /* Make the number column header sticky */\n .sticky > td {\n position: sticky !important;\n top: 0;\n }\n\n /* add border for position: sticky\n and work around background-clip: padding-box\n bug for FF causing box-shadow bug in Chrome */\n .sticky th, .sticky td {\n box-shadow: 0px 1px ", ", 0px -0.5px ", ", inset -1px 0px ", ", 0px -1px ", ";\n }\n\n /* this will remove jumpiness caused in Chrome for sticky headers */\n .fixed + tr {\n min-height: 0px;\n }\n\n /*\n * We wrap CodeBlock in a grid to prevent it from overflowing the container of the renderer.\n * See ED-4159.\n */\n & .code-block {\n max-width: 100%;\n /* -ms- properties are necessary until MS supports the latest version of the grid spec */\n /* stylelint-disable value-no-vendor-prefix, declaration-block-no-duplicate-properties */\n display: -ms-grid;\n display: grid;\n -ms-grid-columns: auto 1fr;\n /* stylelint-enable */\n\n grid-template-columns: minmax(0, 1fr);\n position: relative;\n border-radius: ", "px;\n\n /*\n * The overall renderer has word-wrap: break; which causes issues with\n * code block line numbers in Safari / iOS.\n */\n word-wrap: normal;\n\n & > span {\n /* stylelint-disable value-no-vendor-prefix */\n -ms-grid-row: 1;\n -ms-grid-column: 2;\n /* stylelint-enable */\n grid-column: 1;\n }\n }\n\n & .MediaGroup,\n & .code-block {\n margin-top: ", ";\n\n &:first-child {\n margin-top: 0;\n }\n\n &:hover button.copy-to-clipboard{\n opacity: 1;\n position: absolute;\n height: 32px;\n width: 32px;\n right: 6px;\n top: 4px;\n padding: 2px;\n }\n }\n\n ", ";\n & [data-layout-section] {\n margin-top: ", "px;\n & > div + div {\n margin-left: ", "px;\n }\n\n @media screen and (max-width: ", "px) {\n & > div + div {\n margin-left: 0;\n }\n }\n }\n"])), editorFontSize, themed({
96
95
  light: colors.N800,
97
96
  dark: '#B8C7E0'
98
- }), fullPageStyles, fullWidthStyles, h700, h600, h500, h400, h300, h100, HeadingAnchorWrapperClassName, headingAnchorStyle('h1'), headingAnchorStyle('h2'), headingAnchorStyle('h3'), headingAnchorStyle('h4'), headingAnchorStyle('h5'), headingAnchorStyle('h6'), colors.B400, colors.B300, colors.placeholderText, whitespaceSharedStyles, blockquoteSharedStyles, headingsSharedStyles, panelSharedStyles, ruleSharedStyles, paragraphSharedStyles, listsSharedStyles, indentationSharedStyles, blockMarksSharedStyles, codeMarkSharedStyles, shadowSharedStyle, dateSharedStyle, tasksAndDecisionsStyles, smartCardSharedStyles, fontFamily(), relativeFontSizeToBase16(fontSize()), themed({
97
+ }), fullPageStyles, fullWidthStyles, headingAnchorStyle('h1'), headingAnchorStyle('h2'), headingAnchorStyle('h3'), headingAnchorStyle('h4'), headingAnchorStyle('h5'), headingAnchorStyle('h6'), colors.B400, colors.B300, colors.placeholderText, whitespaceSharedStyles, blockquoteSharedStyles, headingsSharedStyles, panelSharedStyles, ruleSharedStyles, paragraphSharedStyles, listsSharedStyles, indentationSharedStyles, blockMarksSharedStyles, codeMarkSharedStyles, shadowSharedStyle, dateSharedStyle, tasksAndDecisionsStyles, smartCardSharedStyles, fontFamily(), relativeFontSizeToBase16(fontSize()), themed({
99
98
  light: colors.N30A,
100
99
  dark: colors.DN70
101
100
  }), borderRadius(), themed({
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "81.1.1",
3
+ "version": "82.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -88,6 +88,7 @@ export default class ReactSerializer implements Serializer<JSX.Element> {
88
88
  private getMediaProps;
89
89
  private getEmbedCardProps;
90
90
  private getMediaGroupProps;
91
+ private getMediaInlineProps;
91
92
  private getTaskItemProps;
92
93
  private getHardBreakProps;
93
94
  private getCodeBlockProps;
@@ -60,6 +60,7 @@ declare const BlockCard: (React.ComponentClass<{
60
60
  }> & Loadable.LoadableComponent);
61
61
  declare const Media: (React.ComponentClass<import("./media").MediaProps, any> & Loadable.LoadableComponent) | (React.FunctionComponent<import("./media").MediaProps> & Loadable.LoadableComponent);
62
62
  declare const MediaGroup: (React.ComponentClass<import("./mediaGroup").MediaGroupProps, any> & Loadable.LoadableComponent) | (React.FunctionComponent<import("./mediaGroup").MediaGroupProps> & Loadable.LoadableComponent);
63
+ declare const MediaInline: (React.ComponentClass<import("./mediaInline").MediaInlineProps, any> & Loadable.LoadableComponent) | (React.FunctionComponent<import("./mediaInline").MediaInlineProps> & Loadable.LoadableComponent);
63
64
  declare const Mention: (React.ComponentClass<import("./mention").Props, any> & Loadable.LoadableComponent) | (React.FunctionComponent<import("./mention").Props> & Loadable.LoadableComponent);
64
65
  declare const Expand: (React.ComponentClass<import("../../ui/Expand").ExpandProps, any> & Loadable.LoadableComponent) | (React.FunctionComponent<import("../../ui/Expand").ExpandProps> & Loadable.LoadableComponent);
65
66
  export declare const nodeToReact: {
@@ -93,5 +94,5 @@ export declare function isTextNode(node: Node | Mark): node is Node;
93
94
  * whose content satisfies the condition for an emoji block
94
95
  */
95
96
  export declare const isEmojiDoc: (doc: Fragment) => boolean;
96
- export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard, };
97
+ export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaInline, MediaSingle, Mention, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard, };
97
98
  export type { BodiedExtensionProps, ExtensionProps, InlineExtensionProps };
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { ProviderFactory } from '@atlaskit/editor-common';
3
+ import { FileIdentifier } from '@atlaskit/media-client';
4
+ import { MediaProvider } from '../../ui/MediaCard';
5
+ export declare type RenderMediaInlineProps = {
6
+ identifier: FileIdentifier;
7
+ mediaProvider?: Promise<MediaProvider>;
8
+ children?: React.ReactNode;
9
+ };
10
+ export declare type MediaInlineProps = {
11
+ id: string;
12
+ collection?: string;
13
+ providers: ProviderFactory;
14
+ };
15
+ export declare const RenderMediaInline: React.FC<RenderMediaInlineProps>;
16
+ declare const MediaInline: React.FC<MediaInlineProps>;
17
+ export default MediaInline;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "81.1.1",
3
+ "version": "82.0.0",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -24,19 +24,19 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "@atlaskit/adf-schema": "^19.2.0",
27
+ "@atlaskit/adf-schema": "^19.3.0",
28
28
  "@atlaskit/adf-utils": "^14.3.0",
29
29
  "@atlaskit/analytics-listeners": "^8.0.0",
30
30
  "@atlaskit/analytics-namespaced-context": "^6.3.0",
31
31
  "@atlaskit/analytics-next": "^8.2.0",
32
32
  "@atlaskit/button": "^16.1.0",
33
33
  "@atlaskit/code": "^14.1.0",
34
- "@atlaskit/editor-common": "^60.1.0",
34
+ "@atlaskit/editor-common": "^60.2.0",
35
35
  "@atlaskit/editor-json-transformer": "^8.6.0",
36
36
  "@atlaskit/editor-shared-styles": "^1.6.0",
37
37
  "@atlaskit/icon": "^21.9.0",
38
- "@atlaskit/media-card": "^71.0.0",
39
- "@atlaskit/media-client": "^14.2.0",
38
+ "@atlaskit/media-card": "^72.0.0",
39
+ "@atlaskit/media-client": "^14.3.0",
40
40
  "@atlaskit/media-common": "^2.9.0",
41
41
  "@atlaskit/media-filmstrip": "^42.1.0",
42
42
  "@atlaskit/media-viewer": "^45.8.0",
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@atlaskit/media-core": "^32.2.0",
61
- "@atlaskit/smart-card": "^16.1.1",
61
+ "@atlaskit/smart-card": "^16.2.0",
62
62
  "react": "^16.8.0",
63
63
  "react-dom": "^16.8.0",
64
64
  "styled-components": "^3.2.6"
@@ -67,10 +67,10 @@
67
67
  "@atlaskit/analytics-gas-types": "^5.0.5",
68
68
  "@atlaskit/avatar": "^20.5.0",
69
69
  "@atlaskit/build-utils": "^2.6.2",
70
- "@atlaskit/css-reset": "^6.1.0",
70
+ "@atlaskit/css-reset": "^6.2.0",
71
71
  "@atlaskit/docs": "*",
72
- "@atlaskit/editor-core": "^150.0.0",
73
- "@atlaskit/editor-test-helpers": "^15.4.0",
72
+ "@atlaskit/editor-core": "^151.0.0",
73
+ "@atlaskit/editor-test-helpers": "^15.5.0",
74
74
  "@atlaskit/field-range": "^9.0.0",
75
75
  "@atlaskit/logo": "^13.5.0",
76
76
  "@atlaskit/media-core": "^32.2.0",
@@ -78,9 +78,9 @@
78
78
  "@atlaskit/media-test-helpers": "^28.8.0",
79
79
  "@atlaskit/mention": "^19.7.0",
80
80
  "@atlaskit/navigation-next": "^9.0.0",
81
- "@atlaskit/profilecard": "^15.0.0",
81
+ "@atlaskit/profilecard": "^15.8.0",
82
82
  "@atlaskit/radio": "^5.3.0",
83
- "@atlaskit/smart-card": "^16.1.0",
83
+ "@atlaskit/smart-card": "^16.2.0",
84
84
  "@atlaskit/ssr": "^0.2.0",
85
85
  "@atlaskit/util-data-test": "^16.0.0",
86
86
  "@atlaskit/visual-regression": "*",