@atlaskit/renderer 85.0.0 → 89.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.
Files changed (74) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/cjs/analytics/enums.js +1 -0
  3. package/dist/cjs/messages.js +47 -1
  4. package/dist/cjs/react/hooks/use-observed-width.js +94 -0
  5. package/dist/cjs/react/index.js +2 -0
  6. package/dist/cjs/react/nodes/copy-text-provider.js +2 -1
  7. package/dist/cjs/react/nodes/heading-anchor.js +8 -2
  8. package/dist/cjs/react/nodes/inlineCard.js +12 -1
  9. package/dist/cjs/react/nodes/mediaSingle/index.js +145 -151
  10. package/dist/cjs/react/nodes/mention.js +0 -2
  11. package/dist/cjs/react/nodes/status.js +2 -1
  12. package/dist/cjs/react/nodes/tableCell.js +19 -8
  13. package/dist/cjs/react/nodes/task-item-with-providers.js +4 -2
  14. package/dist/cjs/react/nodes/taskItem.js +1 -0
  15. package/dist/cjs/render-document.js +17 -1
  16. package/dist/cjs/types/smartLinksOptions.js +5 -0
  17. package/dist/cjs/ui/Renderer/breakout-ssr.js +47 -4
  18. package/dist/cjs/ui/Renderer/index.js +1 -0
  19. package/dist/cjs/ui/SortingIcon.js +22 -9
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/analytics/enums.js +1 -0
  22. package/dist/es2019/messages.js +44 -0
  23. package/dist/es2019/react/hooks/use-observed-width.js +59 -0
  24. package/dist/es2019/react/index.js +2 -0
  25. package/dist/es2019/react/nodes/copy-text-provider.js +2 -1
  26. package/dist/es2019/react/nodes/heading-anchor.js +11 -2
  27. package/dist/es2019/react/nodes/inlineCard.js +11 -1
  28. package/dist/es2019/react/nodes/mediaSingle/index.js +132 -112
  29. package/dist/es2019/react/nodes/mention.js +0 -2
  30. package/dist/es2019/react/nodes/status.js +2 -1
  31. package/dist/es2019/react/nodes/tableCell.js +20 -9
  32. package/dist/es2019/react/nodes/task-item-with-providers.js +3 -1
  33. package/dist/es2019/react/nodes/taskItem.js +1 -0
  34. package/dist/es2019/render-document.js +17 -1
  35. package/dist/es2019/types/smartLinksOptions.js +1 -0
  36. package/dist/es2019/ui/Renderer/breakout-ssr.js +45 -4
  37. package/dist/es2019/ui/Renderer/index.js +1 -0
  38. package/dist/es2019/ui/SortingIcon.js +22 -10
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/esm/analytics/enums.js +1 -0
  41. package/dist/esm/messages.js +44 -0
  42. package/dist/esm/react/hooks/use-observed-width.js +80 -0
  43. package/dist/esm/react/index.js +2 -0
  44. package/dist/esm/react/nodes/copy-text-provider.js +2 -1
  45. package/dist/esm/react/nodes/heading-anchor.js +9 -2
  46. package/dist/esm/react/nodes/inlineCard.js +11 -1
  47. package/dist/esm/react/nodes/mediaSingle/index.js +140 -141
  48. package/dist/esm/react/nodes/mention.js +0 -2
  49. package/dist/esm/react/nodes/status.js +2 -1
  50. package/dist/esm/react/nodes/tableCell.js +17 -8
  51. package/dist/esm/react/nodes/task-item-with-providers.js +4 -2
  52. package/dist/esm/react/nodes/taskItem.js +1 -0
  53. package/dist/esm/render-document.js +16 -1
  54. package/dist/esm/types/smartLinksOptions.js +1 -0
  55. package/dist/esm/ui/Renderer/breakout-ssr.js +47 -4
  56. package/dist/esm/ui/Renderer/index.js +1 -0
  57. package/dist/esm/ui/SortingIcon.js +20 -10
  58. package/dist/esm/version.json +1 -1
  59. package/dist/types/analytics/enums.d.ts +2 -1
  60. package/dist/types/analytics/events.d.ts +2 -1
  61. package/dist/types/messages.d.ts +44 -0
  62. package/dist/types/react/hooks/use-observed-width.d.ts +3 -0
  63. package/dist/types/react/index.d.ts +3 -0
  64. package/dist/types/react/nodes/index.d.ts +1 -1
  65. package/dist/types/react/nodes/inlineCard.d.ts +22 -20
  66. package/dist/types/react/nodes/mediaSingle/index.d.ts +3 -7
  67. package/dist/types/react/nodes/mediaSingle/styles.d.ts +1 -1
  68. package/dist/types/react/nodes/mention.d.ts +0 -1
  69. package/dist/types/react/nodes/tableCell.d.ts +6 -59
  70. package/dist/types/react/nodes/task-item-with-providers.d.ts +1 -0
  71. package/dist/types/types/smartLinksOptions.d.ts +3 -0
  72. package/dist/types/ui/SortingIcon.d.ts +6 -3
  73. package/dist/types/ui/renderer-props.d.ts +2 -0
  74. package/package.json +15 -15
@@ -1,23 +1,12 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
- import _inherits from "@babel/runtime/helpers/inherits";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
9
-
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
-
12
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
-
14
- import { mapBreakpointToLayoutMaxWidth, WidthConsumer } from '@atlaskit/editor-common/ui';
15
- import { akEditorFullWidthLayoutWidth, getAkEditorFullPageMaxWidth, akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
16
- import { Component, default as React } from 'react';
2
+ import { default as React } from 'react';
17
3
  import { injectIntl } from 'react-intl-next';
4
+ import { getMediaFeatureFlag } from '@atlaskit/media-common';
5
+ import { mapBreakpointToLayoutMaxWidth, getBreakpoint, WidthConsumer } from '@atlaskit/editor-common/ui';
6
+ import { akEditorFullWidthLayoutWidth, getAkEditorFullPageMaxWidth, akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
18
7
  import { FullPagePadding } from '../../../ui/Renderer/style';
8
+ import { useObservedWidth } from '../../hooks/use-observed-width';
19
9
  import { ExtendedUIMediaSingle } from './styles';
20
- import { getMediaFeatureFlag } from '@atlaskit/media-common';
21
10
  var DEFAULT_WIDTH = 250;
22
11
  var DEFAULT_HEIGHT = 200;
23
12
 
@@ -53,146 +42,156 @@ export var getMediaContainerWidth = function getMediaContainerWidth(currentConta
53
42
  return !currentContainerWidth && layout !== 'full-width' && layout !== 'wide' ? akEditorDefaultLayoutWidth : currentContainerWidth;
54
43
  };
55
44
 
56
- var MediaSingle = /*#__PURE__*/function (_Component) {
57
- _inherits(MediaSingle, _Component);
58
-
59
- var _super = _createSuper(MediaSingle);
60
-
61
- function MediaSingle(props) {
62
- var _this;
63
-
64
- _classCallCheck(this, MediaSingle);
45
+ var MediaSingle = function MediaSingle(props) {
46
+ var _ref$current;
47
+
48
+ var rendererAppearance = props.rendererAppearance,
49
+ featureFlags = props.featureFlags,
50
+ isInsideOfBlockNode = props.isInsideOfBlockNode,
51
+ allowDynamicTextSizing = props.allowDynamicTextSizing,
52
+ layout = props.layout,
53
+ children = props.children,
54
+ pctWidth = props.width;
55
+ var isCaptionsFlaggedOn = getMediaFeatureFlag('captions', featureFlags);
56
+
57
+ var _React$useState = React.useState({
58
+ width: 0,
59
+ height: 0
60
+ }),
61
+ _React$useState2 = _slicedToArray(_React$useState, 2),
62
+ externalImageDimensions = _React$useState2[0],
63
+ setExternalImageDimensions = _React$useState2[1];
64
+
65
+ var ref = React.useRef(null);
66
+ var onExternalImageLoaded = React.useCallback(function (_ref2) {
67
+ var width = _ref2.width,
68
+ height = _ref2.height;
69
+ setExternalImageDimensions({
70
+ width: width,
71
+ height: height
72
+ });
73
+ }, []);
74
+ var observedWidthFlag = getMediaFeatureFlag('observedWidth', featureFlags);
65
75
 
66
- _this = _super.call(this, props);
76
+ var _useObservedWidth = useObservedWidth((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.parentElement, observedWidthFlag),
77
+ observedWidth = _useObservedWidth.width;
67
78
 
68
- _defineProperty(_assertThisInitialized(_this), "onExternalImageLoaded", function (_ref2) {
69
- var width = _ref2.width,
70
- height = _ref2.height;
79
+ var media;
71
80
 
72
- _this.setState({
73
- width: width,
74
- height: height
75
- });
76
- });
81
+ var _React$Children$toArr3 = React.Children.toArray(children),
82
+ _React$Children$toArr4 = _slicedToArray(_React$Children$toArr3, 2),
83
+ node = _React$Children$toArr4[0],
84
+ caption = _React$Children$toArr4[1];
77
85
 
78
- _defineProperty(_assertThisInitialized(_this), "isCaptionsFlaggedOn", getMediaFeatureFlag('captions', _this.props.featureFlags));
86
+ if (!isMediaElement(node)) {
87
+ var mediaElement = checkForMediaElement(node.props.children);
79
88
 
80
- _this.state = {}; // Need to initialize with empty state.
89
+ if (!mediaElement) {
90
+ return node;
91
+ }
81
92
 
82
- return _this;
93
+ media = mediaElement;
94
+ } else {
95
+ media = node;
83
96
  }
84
97
 
85
- _createClass(MediaSingle, [{
86
- key: "render",
87
- value: function render() {
88
- var _this2 = this;
89
-
90
- var props = this.props;
91
- var media;
98
+ var _media$props = media.props,
99
+ _media$props$width = _media$props.width,
100
+ width = _media$props$width === void 0 ? DEFAULT_WIDTH : _media$props$width,
101
+ _media$props$height = _media$props.height,
102
+ height = _media$props$height === void 0 ? DEFAULT_HEIGHT : _media$props$height,
103
+ type = _media$props.type;
92
104
 
93
- var _React$Children$toArr3 = React.Children.toArray(props.children),
94
- _React$Children$toArr4 = _slicedToArray(_React$Children$toArr3, 2),
95
- node = _React$Children$toArr4[0],
96
- caption = _React$Children$toArr4[1];
105
+ if (type === 'external') {
106
+ var stateWidth = externalImageDimensions.width,
107
+ stateHeight = externalImageDimensions.height;
97
108
 
98
- if (!isMediaElement(node)) {
99
- var mediaElement = checkForMediaElement(node.props.children);
109
+ if (width === null) {
110
+ width = stateWidth || DEFAULT_WIDTH;
111
+ }
100
112
 
101
- if (!mediaElement) {
102
- return node;
103
- }
113
+ if (height === null) {
114
+ height = stateHeight || DEFAULT_HEIGHT;
115
+ }
116
+ }
104
117
 
105
- media = mediaElement;
118
+ if (width === null) {
119
+ width = DEFAULT_WIDTH;
120
+ height = DEFAULT_HEIGHT;
121
+ } // TODO: put appearance-based padding into theme instead
122
+
123
+
124
+ var padding = rendererAppearance === 'full-page' ? FullPagePadding * 2 : 0;
125
+ var isFullWidth = rendererAppearance === 'full-width';
126
+
127
+ var calcDimensions = function calcDimensions(mediaContainerWidth, mediaBreakpoint) {
128
+ var containerWidth = getMediaContainerWidth(mediaContainerWidth, layout);
129
+ var breakpoint = mediaBreakpoint || getBreakpoint(containerWidth);
130
+ var maxWidth = containerWidth;
131
+ var maxHeight = height / width * maxWidth;
132
+ var cardDimensions = {
133
+ width: "".concat(maxWidth, "px"),
134
+ height: "".concat(maxHeight, "px")
135
+ };
136
+ var nonFullWidthSize = containerWidth;
137
+
138
+ if (!isInsideOfBlockNode && rendererAppearance !== 'comment') {
139
+ var isContainerSizeGreaterThanMaxFullPageWidth = containerWidth - padding >= getAkEditorFullPageMaxWidth(allowDynamicTextSizing);
140
+
141
+ if (isContainerSizeGreaterThanMaxFullPageWidth && allowDynamicTextSizing) {
142
+ nonFullWidthSize = mapBreakpointToLayoutMaxWidth(breakpoint);
143
+ } else if (isContainerSizeGreaterThanMaxFullPageWidth) {
144
+ nonFullWidthSize = getAkEditorFullPageMaxWidth(allowDynamicTextSizing);
106
145
  } else {
107
- media = node;
146
+ nonFullWidthSize = containerWidth - padding;
108
147
  }
109
-
110
- var _media$props = media.props,
111
- _media$props$width = _media$props.width,
112
- width = _media$props$width === void 0 ? DEFAULT_WIDTH : _media$props$width,
113
- _media$props$height = _media$props.height,
114
- height = _media$props$height === void 0 ? DEFAULT_HEIGHT : _media$props$height,
115
- type = _media$props.type;
116
-
117
- if (type === 'external') {
118
- var _this$state = this.state,
119
- stateWidth = _this$state.width,
120
- stateHeight = _this$state.height;
121
-
122
- if (width === null) {
123
- width = stateWidth || DEFAULT_WIDTH;
124
- }
125
-
126
- if (height === null) {
127
- height = stateHeight || DEFAULT_HEIGHT;
128
- }
129
- }
130
-
131
- if (width === null) {
132
- width = DEFAULT_WIDTH;
133
- height = DEFAULT_HEIGHT;
134
- } // TODO: put appearance-based padding into theme instead
135
-
136
-
137
- var _this$props = this.props,
138
- rendererAppearance = _this$props.rendererAppearance,
139
- featureFlags = _this$props.featureFlags;
140
- var padding = rendererAppearance === 'full-page' ? FullPagePadding * 2 : 0;
141
- return /*#__PURE__*/React.createElement(WidthConsumer, null, function (_ref3) {
142
- var widthConsumerValue = _ref3.width,
143
- breakpoint = _ref3.breakpoint;
144
- var containerWidth = getMediaContainerWidth(widthConsumerValue, props.layout);
145
- var _this2$props = _this2.props,
146
- isInsideOfBlockNode = _this2$props.isInsideOfBlockNode,
147
- allowDynamicTextSizing = _this2$props.allowDynamicTextSizing;
148
- var maxWidth = containerWidth;
149
- var maxHeight = height / width * maxWidth;
150
- var cardDimensions = {
151
- width: "".concat(maxWidth, "px"),
152
- height: "".concat(maxHeight, "px")
153
- };
154
- var isFullWidth = rendererAppearance === 'full-width';
155
- var nonFullWidthSize = containerWidth;
156
-
157
- if (!isInsideOfBlockNode && rendererAppearance !== 'comment') {
158
- var isContainerSizeGreaterThanMaxFullPageWidth = containerWidth - padding >= getAkEditorFullPageMaxWidth(allowDynamicTextSizing);
159
-
160
- if (isContainerSizeGreaterThanMaxFullPageWidth && allowDynamicTextSizing) {
161
- nonFullWidthSize = mapBreakpointToLayoutMaxWidth(breakpoint);
162
- } else if (isContainerSizeGreaterThanMaxFullPageWidth) {
163
- nonFullWidthSize = getAkEditorFullPageMaxWidth(allowDynamicTextSizing);
164
- } else {
165
- nonFullWidthSize = containerWidth - padding;
166
- }
167
- }
168
-
169
- var lineLength = isFullWidth ? Math.min(akEditorFullWidthLayoutWidth, containerWidth - padding) : nonFullWidthSize;
170
- var originalDimensions = {
171
- height: height,
172
- width: width
173
- };
174
- var mediaComponent = /*#__PURE__*/React.cloneElement(media, {
175
- resizeMode: 'stretchy-fit',
176
- cardDimensions: cardDimensions,
177
- originalDimensions: originalDimensions,
178
- onExternalImageLoaded: _this2.onExternalImageLoaded,
179
- disableOverlay: true,
180
- featureFlags: featureFlags
181
- });
182
- return /*#__PURE__*/React.createElement(ExtendedUIMediaSingle, {
183
- layout: props.layout,
184
- width: width,
185
- height: height,
186
- lineLength: isInsideOfBlockNode ? containerWidth : lineLength,
187
- containerWidth: containerWidth,
188
- pctWidth: props.width,
189
- fullWidthMode: isFullWidth
190
- }, /*#__PURE__*/React.createElement(React.Fragment, null, mediaComponent), _this2.isCaptionsFlaggedOn && caption);
191
- });
192
148
  }
193
- }]);
194
149
 
195
- return MediaSingle;
196
- }(Component);
150
+ var minWidth = Math.min(akEditorFullWidthLayoutWidth, containerWidth - padding);
151
+ var lineLength = isFullWidth ? minWidth : nonFullWidthSize;
152
+ return {
153
+ cardDimensions: cardDimensions,
154
+ lineLength: lineLength,
155
+ containerWidth: containerWidth
156
+ };
157
+ };
158
+
159
+ var originalDimensions = {
160
+ height: height,
161
+ width: width
162
+ };
163
+
164
+ var renderMediaSingle = function renderMediaSingle(renderWidth, mediaBreakpoint) {
165
+ var _calcDimensions = calcDimensions(renderWidth, mediaBreakpoint),
166
+ cardDimensions = _calcDimensions.cardDimensions,
167
+ lineLength = _calcDimensions.lineLength,
168
+ containerWidth = _calcDimensions.containerWidth;
169
+
170
+ var mediaComponent = /*#__PURE__*/React.cloneElement(media, {
171
+ resizeMode: 'stretchy-fit',
172
+ cardDimensions: cardDimensions,
173
+ originalDimensions: originalDimensions,
174
+ onExternalImageLoaded: onExternalImageLoaded,
175
+ disableOverlay: true,
176
+ featureFlags: featureFlags
177
+ });
178
+ return /*#__PURE__*/React.createElement(ExtendedUIMediaSingle, {
179
+ handleMediaSingleRef: ref,
180
+ layout: layout,
181
+ width: width,
182
+ height: height,
183
+ lineLength: isInsideOfBlockNode ? containerWidth : lineLength,
184
+ containerWidth: containerWidth,
185
+ pctWidth: pctWidth,
186
+ fullWidthMode: isFullWidth
187
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, mediaComponent), isCaptionsFlaggedOn && caption);
188
+ };
189
+
190
+ return observedWidthFlag ? renderMediaSingle(observedWidth || document.body.offsetWidth) : /*#__PURE__*/React.createElement(WidthConsumer, null, function (_ref3) {
191
+ var width = _ref3.width,
192
+ breakpoint = _ref3.breakpoint;
193
+ return renderMediaSingle(width, breakpoint);
194
+ });
195
+ };
197
196
 
198
197
  export default injectIntl(MediaSingle);
@@ -29,7 +29,6 @@ var MentionItem = /*#__PURE__*/function (_PureComponent) {
29
29
  var _this$props = this.props,
30
30
  eventHandlers = _this$props.eventHandlers,
31
31
  id = _this$props.id,
32
- portal = _this$props.portal,
33
32
  providers = _this$props.providers,
34
33
  text = _this$props.text,
35
34
  accessLevel = _this$props.accessLevel;
@@ -38,7 +37,6 @@ var MentionItem = /*#__PURE__*/function (_PureComponent) {
38
37
  text: text,
39
38
  accessLevel: accessLevel,
40
39
  providers: providers,
41
- portal: portal,
42
40
  eventHandlers: eventHandlers && eventHandlers.mention
43
41
  });
44
42
  }
@@ -38,7 +38,8 @@ var Status = /*#__PURE__*/function (_PureComponent) {
38
38
  }, /*#__PURE__*/React.createElement(AkStatus, {
39
39
  text: text,
40
40
  color: color,
41
- localId: localId
41
+ localId: localId,
42
+ role: "presentation"
42
43
  }));
43
44
  }
44
45
  }]);
@@ -19,6 +19,8 @@ import SortingIcon from '../../ui/SortingIcon';
19
19
  import { MODE, PLATFORM } from '../../analytics/events';
20
20
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../../analytics/enums';
21
21
  import { RendererCssClassName } from '../../consts';
22
+ import { injectIntl } from 'react-intl-next';
23
+ import { tableCellMessages } from '../../messages';
22
24
  var IgnoreSorting = ['LABEL', 'INPUT'];
23
25
 
24
26
  var nextStatusOrder = function nextStatusOrder(currentSortOrder) {
@@ -36,19 +38,23 @@ var nextStatusOrder = function nextStatusOrder(currentSortOrder) {
36
38
  return SortOrder.NO_ORDER;
37
39
  };
38
40
 
39
- var getSortOrderLabel = function getSortOrderLabel(currentSortOrder) {
41
+ var getSortOrderLabel = function getSortOrderLabel(intl, currentSortOrder) {
42
+ var noneSortingLabel = tableCellMessages.noneSortingLabel,
43
+ ascSortingLabel = tableCellMessages.ascSortingLabel,
44
+ descSortingLabel = tableCellMessages.descSortingLabel;
45
+
40
46
  switch (currentSortOrder) {
41
47
  case SortOrder.NO_ORDER:
42
- return 'none';
48
+ return intl.formatMessage(noneSortingLabel);
43
49
 
44
50
  case SortOrder.ASC:
45
- return 'ascending';
51
+ return intl.formatMessage(ascSortingLabel);
46
52
 
47
53
  case SortOrder.DESC:
48
- return 'descending';
54
+ return intl.formatMessage(descSortingLabel);
49
55
 
50
56
  default:
51
- return 'none';
57
+ return intl.formatMessage(noneSortingLabel);
52
58
  }
53
59
  };
54
60
 
@@ -126,7 +132,7 @@ var withCellProps = function withCellProps(WrapperComponent) {
126
132
  };
127
133
 
128
134
  export var withSortableColumn = function withSortableColumn(WrapperComponent) {
129
- return /*#__PURE__*/function (_React$Component2) {
135
+ var WithSortableColumn = /*#__PURE__*/function (_React$Component2) {
130
136
  _inherits(WithSortableColumn, _React$Component2);
131
137
 
132
138
  var _super2 = _createSuper(WithSortableColumn);
@@ -201,7 +207,8 @@ export var withSortableColumn = function withSortableColumn(WrapperComponent) {
201
207
  onSorting = _this$props3.onSorting,
202
208
  children = _this$props3.children,
203
209
  sortOrdered = _this$props3.sortOrdered,
204
- isHeaderRow = _this$props3.isHeaderRow;
210
+ isHeaderRow = _this$props3.isHeaderRow,
211
+ intl = _this$props3.intl;
205
212
  var sortOrderedClassName = sortOrdered === SortOrder.NO_ORDER ? RendererCssClassName.SORTABLE_COLUMN_NO_ORDER : '';
206
213
 
207
214
  if (!allowColumnSorting || !isHeaderRow) {
@@ -216,7 +223,7 @@ export var withSortableColumn = function withSortableColumn(WrapperComponent) {
216
223
 
217
224
  return /*#__PURE__*/React.createElement(WrapperComponent, _extends({}, this.props, {
218
225
  className: className,
219
- ariaSort: getSortOrderLabel(sortOrdered)
226
+ ariaSort: getSortOrderLabel(intl, sortOrdered)
220
227
  }), /*#__PURE__*/React.createElement("div", {
221
228
  className: RendererCssClassName.SORTABLE_COLUMN_BUTTON,
222
229
  role: "button",
@@ -236,6 +243,8 @@ export var withSortableColumn = function withSortableColumn(WrapperComponent) {
236
243
 
237
244
  return WithSortableColumn;
238
245
  }(React.Component);
246
+
247
+ return injectIntl(WithSortableColumn);
239
248
  };
240
249
  export var TableHeader = compose(withSortableColumn, withCellProps)('th');
241
250
  export var TableCell = withCellProps('td');
@@ -9,7 +9,7 @@ import _inherits from "@babel/runtime/helpers/inherits";
9
9
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
10
10
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
11
11
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
12
- var _excluded = ["contextIdentifierProvider", "objectAri"];
12
+ var _excluded = ["contextIdentifierProvider", "objectAri", "isRenderer"];
13
13
 
14
14
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15
15
 
@@ -116,11 +116,13 @@ var TaskItemWithProviders = /*#__PURE__*/function (_Component) {
116
116
  var _this$props = this.props,
117
117
  contextIdentifierProvider = _this$props.contextIdentifierProvider,
118
118
  objectAri = _this$props.objectAri,
119
+ isRenderer = _this$props.isRenderer,
119
120
  otherProps = _objectWithoutProperties(_this$props, _excluded);
120
121
 
121
122
  var resolvedObjectId = this.state.resolvedContextProvider && this.state.resolvedContextProvider.objectId || objectAri;
122
123
  return /*#__PURE__*/React.createElement(ResourcedTaskItem, _extends({}, otherProps, {
123
- objectAri: resolvedObjectId
124
+ objectAri: resolvedObjectId,
125
+ isRenderer: isRenderer
124
126
  }));
125
127
  }
126
128
  }]);
@@ -52,6 +52,7 @@ var TaskItem = /*#__PURE__*/function (_PureComponent) {
52
52
  objectAri: objectAri,
53
53
  taskId: localId,
54
54
  isDone: state === 'DONE',
55
+ isRenderer: true,
55
56
  disabled: disabled,
56
57
  taskDecisionProvider: taskDecisionProvider,
57
58
  contextIdentifierProvider: contextIdentifierProvider,
@@ -4,6 +4,7 @@ import { validateADFEntity, findAndTrackUnsupportedContentNodes } from '@atlaski
4
4
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from './analytics/enums';
5
5
  import { PLATFORM } from './analytics/events';
6
6
  import { trackUnsupportedContentLevels } from './analytics/unsupported-content';
7
+ import { transformMediaLinkMarks } from '@atlaskit/adf-utils';
7
8
  var SUPPORTS_HIRES_TIMER_API = !!(window.performance && performance.now);
8
9
 
9
10
  var withStopwatch = function withStopwatch(cb) {
@@ -31,7 +32,21 @@ export var renderDocument = function renderDocument(doc, serializer) {
31
32
 
32
33
  var _withStopwatch = withStopwatch(function () {
33
34
  if (useSpecBasedValidator) {
34
- return validateADFEntity(schema, doc, dispatchAnalyticsEvent);
35
+ // link mark on mediaSingle is deprecated, need to move link mark to child media node
36
+ // https://product-fabric.atlassian.net/browse/ED-14043
37
+ var _transformMediaLinkMa = transformMediaLinkMarks(doc),
38
+ transformedAdf = _transformMediaLinkMa.transformedAdf,
39
+ isTransformed = _transformMediaLinkMa.isTransformed;
40
+
41
+ if (isTransformed && dispatchAnalyticsEvent) {
42
+ dispatchAnalyticsEvent({
43
+ action: ACTION.MEDIA_LINK_TRANSFORMED,
44
+ actionSubject: ACTION_SUBJECT.RENDERER,
45
+ eventType: EVENT_TYPE.OPERATIONAL
46
+ });
47
+ }
48
+
49
+ return validateADFEntity(schema, transformedAdf || doc, dispatchAnalyticsEvent);
35
50
  }
36
51
 
37
52
  return getValidDocument(doc, schema, adfStage);
@@ -0,0 +1 @@
1
+ export {};
@@ -33,13 +33,16 @@ export function createBreakoutInlineScript(id, allowDynamicTextSizing) {
33
33
  export var breakoutInlineScriptContext = "\n var breakoutConsts = ".concat(JSON.stringify(breakoutConsts), ";\n breakoutConsts.mapBreakpointToLayoutMaxWidth = ").concat(breakoutConsts.mapBreakpointToLayoutMaxWidth.toString(), ";\n breakoutConsts.getBreakpoint = ").concat(breakoutConsts.getBreakpoint.toString(), ";\n breakoutConsts.calcBreakoutWidth = ").concat(breakoutConsts.calcBreakoutWidth.toString(), ";\n breakoutConsts.calcLineLength = ").concat(breakoutConsts.calcLineLength.toString(), ";\n breakoutConsts.calcWideWidth = ").concat(breakoutConsts.calcWideWidth.toString(), ";\n");
34
34
 
35
35
  function applyBreakoutAfterSSR(id, allowDynamicTextSizing, breakoutConsts) {
36
- function findUp(element, selector) {
36
+ var MEDIA_NODE_TYPE = 'mediaSingle';
37
+ var WIDE_LAYOUT_MODES = ['full-width', 'wide'];
38
+
39
+ function findUp(element, condition) {
37
40
  if (!element) {
38
41
  return;
39
42
  }
40
43
 
41
44
  while (element.parentElement) {
42
- if (element.parentElement.classList.contains(selector)) {
45
+ if (condition(element)) {
43
46
  return element.parentElement;
44
47
  }
45
48
 
@@ -47,7 +50,11 @@ function applyBreakoutAfterSSR(id, allowDynamicTextSizing, breakoutConsts) {
47
50
  }
48
51
  }
49
52
 
50
- var renderer = findUp(document.querySelector('[data-breakout-script-id="' + id + '"]'), 'ak-renderer-wrapper');
53
+ var renderer = findUp(document.querySelector('[data-breakout-script-id="' + id + '"]'), function (elem) {
54
+ var _elem$parentElement;
55
+
56
+ return !!((_elem$parentElement = elem.parentElement) !== null && _elem$parentElement !== void 0 && _elem$parentElement.classList.contains('ak-renderer-wrapper'));
57
+ });
51
58
 
52
59
  if (!renderer) {
53
60
  return;
@@ -64,7 +71,7 @@ function applyBreakoutAfterSSR(id, allowDynamicTextSizing, breakoutConsts) {
64
71
  var node = maybeNode;
65
72
  var mode = node.dataset.mode || node.dataset.layout || '';
66
73
 
67
- if (!mode || !['full-width', 'wide'].includes(mode)) {
74
+ if (!mode || !WIDE_LAYOUT_MODES.includes(mode)) {
68
75
  return;
69
76
  }
70
77
 
@@ -87,9 +94,45 @@ function applyBreakoutAfterSSR(id, allowDynamicTextSizing, breakoutConsts) {
87
94
  }
88
95
  }
89
96
  });
97
+ } else if (
98
+ /**
99
+ * The mutation observer is only called once per added node.
100
+ * The above condition only deals with direct children of <div class="ak-renderer-document" />
101
+ * When it is initially called on the direct children, not all the sub children have loaded.
102
+ * So nested media elements which are not immediately loaded as sub children are not availabe in the above conditional.
103
+ * Thus adding this conditional to deal with all meida elements directly.
104
+ */
105
+ item.target.dataset.nodeType === MEDIA_NODE_TYPE) {
106
+ applyMediaBreakout(item.target);
90
107
  }
91
108
  });
92
109
  });
110
+
111
+ var applyMediaBreakout = function applyMediaBreakout(card) {
112
+ // width was already set by another breakout script
113
+ if (card.style.width) {
114
+ return;
115
+ }
116
+
117
+ var tableParent = findUp(card, function (elem) {
118
+ return elem instanceof HTMLTableCellElement;
119
+ }); // only apply the breakout to media elements not nested inside table
120
+ // table sizing is not based on percentage width
121
+
122
+ if (tableParent) {
123
+ return;
124
+ }
125
+
126
+ var mode = card.dataset.mode || card.dataset.layout || '';
127
+ var width = card.dataset.width;
128
+
129
+ if (WIDE_LAYOUT_MODES.includes(mode)) {
130
+ card.style.width = '100%';
131
+ } else if (width) {
132
+ card.style.width = "".concat(width, "%");
133
+ }
134
+ };
135
+
93
136
  observer.observe(renderer, {
94
137
  childList: true,
95
138
  subtree: true
@@ -208,6 +208,7 @@ export var Renderer = /*#__PURE__*/function (_PureComponent) {
208
208
  allowMediaLinking: props.media && props.media.allowLinking,
209
209
  surroundTextNodesWithTextWrapper: allowAnnotationsDraftMode,
210
210
  media: props.media,
211
+ smartLinks: props.smartLinks,
211
212
  allowCopyToClipboard: props.allowCopyToClipboard,
212
213
  allowCustomPanels: props.allowCustomPanels,
213
214
  allowAnnotations: props.allowAnnotations,
@@ -7,7 +7,9 @@ import styled from 'styled-components';
7
7
  import Tooltip from '@atlaskit/tooltip';
8
8
  import { gridSize } from '@atlaskit/theme/constants';
9
9
  import { N20, N30 } from '@atlaskit/theme/colors';
10
- import { SortOrder } from '@atlaskit/editor-common/types'; // We use data url here because of this issue:
10
+ import { SortOrder } from '@atlaskit/editor-common/types';
11
+ import { sortingIconMessages } from '../messages';
12
+ import { injectIntl } from 'react-intl-next'; // We use data url here because of this issue:
11
13
  // https://product-fabric.atlassian.net/browse/ED-8001
12
14
  // Remove this workaround if Firefox has fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=1664350
13
15
 
@@ -38,29 +40,37 @@ var getClassName = function getClassName(status) {
38
40
  }
39
41
  };
40
42
 
41
- var getTooltipTitle = function getTooltipTitle(status) {
43
+ var getTooltipTitle = function getTooltipTitle(intl, isSortingAllowed, status) {
44
+ var noOrderLabel = sortingIconMessages.noOrderLabel,
45
+ ascOrderLabel = sortingIconMessages.ascOrderLabel,
46
+ descOrderLabel = sortingIconMessages.descOrderLabel,
47
+ invalidLabel = sortingIconMessages.invalidLabel;
48
+
49
+ if (!isSortingAllowed) {
50
+ return intl.formatMessage(invalidLabel);
51
+ }
52
+
42
53
  switch (status) {
43
54
  case SortOrder.NO_ORDER:
44
- return 'Sort column A to Z';
55
+ return intl.formatMessage(noOrderLabel);
45
56
 
46
57
  case SortOrder.ASC:
47
- return 'Sort column Z to A';
58
+ return intl.formatMessage(ascOrderLabel);
48
59
 
49
60
  case SortOrder.DESC:
50
- return 'Clear sorting';
61
+ return intl.formatMessage(descOrderLabel);
51
62
  }
52
63
 
53
64
  return '';
54
65
  };
55
66
 
56
- var notAllowedTooltip = "\u26A0\uFE0F You can't sort a table with merged cell";
57
-
58
67
  var SortingIcon = function SortingIcon(_ref) {
59
68
  var isSortingAllowed = _ref.isSortingAllowed,
60
- sortOrdered = _ref.sortOrdered;
69
+ sortOrdered = _ref.sortOrdered,
70
+ intl = _ref.intl;
61
71
  var activated = sortOrdered !== SortOrder.NO_ORDER;
62
72
  var wrapperClassName = !isSortingAllowed ? StatusClassNames.SORTING_NOT_ALLOWED : '';
63
- var content = isSortingAllowed ? getTooltipTitle(sortOrdered) : notAllowedTooltip;
73
+ var content = getTooltipTitle(intl, isSortingAllowed, sortOrdered);
64
74
  return /*#__PURE__*/React.createElement(Tooltip, {
65
75
  delay: 0,
66
76
  content: content,
@@ -72,4 +82,4 @@ var SortingIcon = function SortingIcon(_ref) {
72
82
  })));
73
83
  };
74
84
 
75
- export default SortingIcon;
85
+ export default injectIntl(SortingIcon);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "85.0.0",
3
+ "version": "89.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -25,7 +25,8 @@ export declare enum ACTION {
25
25
  RESOLVED = "resolved",
26
26
  CREATE_NOT_ALLOWED = "createNotAllowed",
27
27
  UNSUPPORTED_CONTENT_LEVELS_TRACKING_SUCCEEDED = "unsupportedContentLevelsTrackingSucceeded",
28
- UNSUPPORTED_CONTENT_LEVELS_TRACKING_ERRORED = "unsupportedContentLevelsTrackingErrored"
28
+ UNSUPPORTED_CONTENT_LEVELS_TRACKING_ERRORED = "unsupportedContentLevelsTrackingErrored",
29
+ MEDIA_LINK_TRANSFORMED = "mediaLinkTransformed"
29
30
  }
30
31
  export declare enum ACTION_SUBJECT {
31
32
  RENDERER = "renderer",