@atlaskit/renderer 126.9.5 → 126.10.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 (31) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/consts.js +11 -0
  3. package/dist/cjs/react/index.js +3 -4
  4. package/dist/cjs/react/marks/breakout.js +39 -2
  5. package/dist/cjs/react/nodes/blockCard.js +29 -2
  6. package/dist/cjs/react/nodes/embedCard.js +43 -26
  7. package/dist/cjs/react/nodes/extension.js +11 -2
  8. package/dist/cjs/react/nodes/multiBodiedExtension.js +23 -6
  9. package/dist/cjs/ui/Renderer/RendererStyleContainer.js +85 -16
  10. package/dist/cjs/ui/Renderer/index.js +1 -1
  11. package/dist/es2019/consts.js +11 -0
  12. package/dist/es2019/react/index.js +3 -4
  13. package/dist/es2019/react/marks/breakout.js +40 -2
  14. package/dist/es2019/react/nodes/blockCard.js +45 -16
  15. package/dist/es2019/react/nodes/embedCard.js +43 -26
  16. package/dist/es2019/react/nodes/extension.js +33 -22
  17. package/dist/es2019/react/nodes/multiBodiedExtension.js +30 -11
  18. package/dist/es2019/ui/Renderer/RendererStyleContainer.js +121 -10
  19. package/dist/es2019/ui/Renderer/index.js +1 -1
  20. package/dist/esm/consts.js +11 -0
  21. package/dist/esm/react/index.js +3 -4
  22. package/dist/esm/react/marks/breakout.js +40 -2
  23. package/dist/esm/react/nodes/blockCard.js +29 -2
  24. package/dist/esm/react/nodes/embedCard.js +43 -26
  25. package/dist/esm/react/nodes/extension.js +11 -2
  26. package/dist/esm/react/nodes/multiBodiedExtension.js +23 -6
  27. package/dist/esm/ui/Renderer/RendererStyleContainer.js +85 -16
  28. package/dist/esm/ui/Renderer/index.js +1 -1
  29. package/dist/types/consts.d.ts +11 -0
  30. package/dist/types-ts4.5/consts.d.ts +11 -0
  31. package/package.json +1 -1
@@ -8,13 +8,26 @@ import { css, jsx } from '@emotion/react';
8
8
  import { akEditorFullWidthLayoutWidth, akEditorMaxLayoutWidth, blockNodesVerticalMargin } from '@atlaskit/editor-shared-styles';
9
9
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
10
10
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
- var wrapperStyles = css({
11
+ import { RendererCssClassName } from '../../consts';
12
+
13
+ // Legacy centering (breaks position: sticky in nested content).
14
+ var legacyWrapperStyles = css({
12
15
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
13
16
  margin: "".concat(blockNodesVerticalMargin, " 0"),
14
17
  // eslint-disable-next-line @atlaskit/design-system/use-tokens-space
15
18
  marginLeft: '50%',
16
19
  transform: 'translateX(-50%)'
17
20
  });
21
+ var flexWrapperStyles = css({
22
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
23
+ margin: "".concat(blockNodesVerticalMargin, " 0")
24
+ });
25
+
26
+ // Flex item: no vertical margin so flex container height = content height (matches legacy single-wrapper height).
27
+ // flexShrink: 0 so the inner div keeps its width (matches legacy behaviour; flex items default to flex-shrink: 1).
28
+ var innerWrapperStyles = css({
29
+ flexShrink: 0
30
+ });
18
31
  var getWidth = function getWidth(width, mode) {
19
32
  if (editorExperiment('advanced_layouts', true) && width) {
20
33
  return "min(".concat(width, "px, var(--ak-editor--breakout-container-without-gutter-width))");
@@ -40,8 +53,33 @@ var getWidth = function getWidth(width, mode) {
40
53
  * @returns The rendered breakout mark as a React element.
41
54
  */
42
55
  export default function Breakout(props) {
56
+ var width = getWidth('width' in props ? props.width : null, props.mode);
57
+ var useStickySafeCentering = expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
58
+ if (useStickySafeCentering) {
59
+ return jsx("div", {
60
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
61
+ className: RendererCssClassName.STICKY_SAFE_BREAKOUT_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER,
62
+ css: flexWrapperStyles
63
+ }, jsx("div", _extends({
64
+ css: innerWrapperStyles
65
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
66
+ ,
67
+ className: "".concat(RendererCssClassName.STICKY_SAFE_BREAKOUT_INNER, " fabric-editor-breakout-mark fabric-editor-block-mark"),
68
+ "data-mode": props.mode
69
+ // Ignored via go/ees005
70
+ // eslint-disable-next-line react/jsx-props-no-spreading
71
+ }, editorExperiment('advanced_layouts', true) && {
72
+ 'data-has-width': !!props.width,
73
+ 'data-width': props.width
74
+ }, {
75
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
76
+ style: {
77
+ width: width
78
+ }
79
+ }), props.children));
80
+ }
43
81
  return jsx("div", _extends({
44
- css: wrapperStyles,
82
+ css: legacyWrapperStyles,
45
83
  "data-mode": props.mode
46
84
  // Ignored via go/ees005
47
85
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -14,10 +14,30 @@ import { AnalyticsContext } from '@atlaskit/analytics-next';
14
14
  import { DatasourceTableView } from '@atlaskit/link-datasource';
15
15
  import { CardSSR } from '@atlaskit/smart-card/ssr';
16
16
  import { fg } from '@atlaskit/platform-feature-flags';
17
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
17
18
  import { N40 } from '@atlaskit/theme/colors';
18
19
  import { calcBreakoutWidth, canRenderDatasource } from '@atlaskit/editor-common/utils';
19
20
  import { usePortal } from '../../ui/Renderer/PortalContext';
21
+ import { RendererCssClassName } from '../../consts';
22
+ var datasourceCenterWrapperStyles = css({
23
+ marginTop: "var(--ds-space-150, 0.75rem)",
24
+ marginBottom: "var(--ds-space-150, 0.75rem)"
25
+ });
20
26
  var datasourceContainerStyleWithMarginTop = css({
27
+ borderRadius: "var(--ds-radius-large, 8px)",
28
+ border: "var(--ds-border-width, 1px)".concat(" solid ", "var(--ds-border, ".concat(N40, ")")),
29
+ overflow: 'hidden',
30
+ marginTop: "var(--ds-space-150, 0.75rem)",
31
+ marginBottom: "var(--ds-space-150, 0.75rem)"
32
+ });
33
+
34
+ // No vertical margin when inside center wrapper (wrapper has margin so it participates in collapse). Styles from datasourceContainerStyleLegacy
35
+ var datasourceContainerStyleNoVerticalMargin = css({
36
+ borderRadius: "var(--ds-radius-large, 8px)",
37
+ border: "var(--ds-border-width, 1px)".concat(" solid ", "var(--ds-border, ".concat(N40, ")")),
38
+ overflow: 'hidden'
39
+ });
40
+ var datasourceContainerStyleLegacy = css({
21
41
  borderRadius: "var(--ds-radius-large, 8px)",
22
42
  border: "var(--ds-border-width, 1px)".concat(" solid ", "var(--ds-border, ".concat(N40, ")")),
23
43
  overflow: 'hidden',
@@ -100,8 +120,10 @@ export default function BlockCard(props) {
100
120
  // eslint-disable-next-line react/jsx-props-no-spreading
101
121
  }, cardProps), jsx(WidthConsumer, null, function (_ref5) {
102
122
  var width = _ref5.width;
103
- return jsx("div", {
104
- css: datasourceContainerStyleWithMarginTop,
123
+ var useStickySafeCentering = expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
124
+ var useCenterWrapper = !isNodeNested && useStickySafeCentering;
125
+ var datasourceDiv = jsx("div", {
126
+ css: useCenterWrapper ? datasourceContainerStyleNoVerticalMargin : useStickySafeCentering ? datasourceContainerStyleWithMarginTop : datasourceContainerStyleLegacy,
105
127
  "data-testid": "renderer-datasource-table",
106
128
  "data-local-id": localId,
107
129
  style: {
@@ -116,6 +138,11 @@ export default function BlockCard(props) {
116
138
  wrappedColumnKeys: wrappedColumnKeys && wrappedColumnKeys.length > 0 ? wrappedColumnKeys : undefined,
117
139
  url: url
118
140
  }));
141
+ return useCenterWrapper ? jsx("div", {
142
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
143
+ className: RendererCssClassName.BLOCK_CARD_DATASOURCE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER,
144
+ css: datasourceCenterWrapperStyles
145
+ }, datasourceDiv) : datasourceDiv;
119
146
  })));
120
147
  }
121
148
  return jsx(InlineCard, {
@@ -15,8 +15,10 @@ import { WidthConsumer, UnsupportedBlock, MediaSingle as UIMediaSingle, WidthCon
15
15
  import { akEditorDefaultLayoutWidth, akEditorFullPageNarrowBreakout, akEditorFullWidthLayoutWidth, DEFAULT_EMBED_CARD_HEIGHT, DEFAULT_EMBED_CARD_WIDTH } from '@atlaskit/editor-shared-styles';
16
16
  import { fg } from '@atlaskit/platform-feature-flags';
17
17
  import { componentWithCondition } from '@atlaskit/platform-feature-flags-react';
18
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
18
19
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
19
20
  import { CardErrorBoundary } from './fallback';
21
+ import { RendererCssClassName } from '../../consts';
20
22
  import { FullPagePadding } from '../../ui/Renderer/style';
21
23
  import { getCardClickHandler } from '../utils/getCardClickHandler';
22
24
  import { AnalyticsContext } from '@atlaskit/analytics-next';
@@ -35,9 +37,15 @@ var embedCardWrapperStyles = css({
35
37
  },
36
38
  margin: '0 auto'
37
39
  });
40
+ var embedCardCenterWrapperStyles = css({
41
+ // Match MediaSingle calcMargin(layout) default for wide/full-width: 24px top/bottom (so wrapper participates in collapse)
42
+ // eslint-disable-next-line @atlaskit/design-system/use-tokens-space -- Matches editor-common MediaSingle calcMargin
43
+ margin: '24px 0'
44
+ });
38
45
 
46
+ // Legacy centering when platform_editor_flex_based_centering is off.
39
47
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
40
- var uIMediaSingleLayoutStyles = css({
48
+ var uIMediaSingleLayoutStylesLegacy = css({
41
49
  // eslint-disable-next-line @atlaskit/design-system/use-tokens-space
42
50
  marginLeft: '50%',
43
51
  transform: 'translateX(-50%)'
@@ -142,7 +150,8 @@ function EmbedCardInternal(props) {
142
150
  }
143
151
  }
144
152
  var lineLength = isFullWidth ? Math.min(akEditorFullWidthLayoutWidth, containerWidth - padding) : nonFullWidthSize;
145
- var uiMediaSingleStyles = layout === 'full-width' || layout === 'wide' ? uIMediaSingleLayoutStyles : '';
153
+ var useStickySafeCentering = expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
154
+ var uiMediaSingleStyles = layout === 'full-width' || layout === 'wide' ? useStickySafeCentering ? undefined : uIMediaSingleLayoutStylesLegacy : '';
146
155
  var onError = function onError(_ref4) {
147
156
  var err = _ref4.err;
148
157
  if (err) {
@@ -191,30 +200,38 @@ function EmbedCardInternal(props) {
191
200
  }, cardProps), jsx(EmbedResizeMessageListener, {
192
201
  embedIframeRef: embedIframeRef,
193
202
  onHeightUpdate: setLiveHeight
194
- }, jsx(UIMediaSingle, {
195
- css: uiMediaSingleStyles,
196
- layout: layout,
197
- width: originalWidth,
198
- containerWidth: containerWidth,
199
- pctWidth: width,
200
- height: originalHeight,
201
- fullWidthMode: isFullWidth,
202
- nodeType: "embedCard",
203
- lineLength: isInsideOfBlockNode ? containerWidth : lineLength,
204
- hasFallbackContainer: hasPreview,
205
- isInsideOfInlineExtension: isInsideOfInlineExtension
206
- }, jsx("div", {
207
- css: embedCardWrapperStyles
208
- }, jsx("div", {
209
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
210
- className: "embedCardView-content-wrap",
211
- "data-embed-card": true,
212
- "data-layout": layout,
213
- "data-width": width,
214
- "data-card-data": data ? JSON.stringify(data) : undefined,
215
- "data-card-url": url,
216
- "data-card-original-height": originalHeight
217
- }, cardComponent)))))
203
+ }, function () {
204
+ var useCenterWrapper = (layout === 'full-width' || layout === 'wide') && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
205
+ var mediaSingle = jsx(UIMediaSingle, {
206
+ css: uiMediaSingleStyles,
207
+ layout: layout,
208
+ width: originalWidth,
209
+ containerWidth: containerWidth,
210
+ pctWidth: width,
211
+ height: originalHeight,
212
+ fullWidthMode: isFullWidth,
213
+ nodeType: "embedCard",
214
+ lineLength: isInsideOfBlockNode ? containerWidth : lineLength,
215
+ hasFallbackContainer: hasPreview,
216
+ isInsideOfInlineExtension: isInsideOfInlineExtension
217
+ }, jsx("div", {
218
+ css: embedCardWrapperStyles
219
+ }, jsx("div", {
220
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
221
+ className: "embedCardView-content-wrap",
222
+ "data-embed-card": true,
223
+ "data-layout": layout,
224
+ "data-width": width,
225
+ "data-card-data": data ? JSON.stringify(data) : undefined,
226
+ "data-card-url": url,
227
+ "data-card-original-height": originalHeight
228
+ }, cardComponent)));
229
+ return useCenterWrapper ? jsx("div", {
230
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
231
+ className: RendererCssClassName.EMBED_CARD_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER,
232
+ css: embedCardCenterWrapperStyles
233
+ }, mediaSingle) : mediaSingle;
234
+ }()))
218
235
  );
219
236
  }));
220
237
  }
@@ -70,7 +70,7 @@ export var renderExtension = function renderExtension(content, layout) {
70
70
  var isInline = (shouldDisplayExtensionAsInline === null || shouldDisplayExtensionAsInline === void 0 ? void 0 : shouldDisplayExtensionAsInline(node)) && expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true);
71
71
  var inlineClassName = isInline ? RendererCssClassName.EXTENSION_AS_INLINE : '';
72
72
  if (expValEquals('platform_editor_renderer_extension_width_fix', 'isEnabled', true)) {
73
- return jsx("div", {
73
+ var extensionDiv = jsx("div", {
74
74
  ref: options.handleRef
75
75
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
76
76
  ,
@@ -93,15 +93,20 @@ export var renderExtension = function renderExtension(content, layout) {
93
93
  className: overflowContainerClass,
94
94
  css: [!(isInsideOfInlineExtension && expValEquals('confluence_inline_insert_excerpt_width_bugfix', 'isEnabled', true)) && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
95
95
  }, content));
96
+ return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
97
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
98
+ className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
99
+ }, extensionDiv) : extensionDiv;
96
100
  }
97
101
  return jsx(WidthConsumer, null, function (_ref2) {
98
102
  var width = _ref2.width;
99
- return jsx("div", {
103
+ var extensionDiv = jsx("div", {
100
104
  ref: options.handleRef
101
105
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
102
106
  ,
103
107
  className: "".concat(RendererCssClassName.EXTENSION, " ").concat(inlineClassName, " ").concat(options.shadowClassNames, " ").concat(centerAlignClass),
104
108
  style: {
109
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
105
110
  width: isInline ? undefined : (expValEquals('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? isCustomLayout : isTopLevel) ?
106
111
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
107
112
  calcBreakoutWidth(layout, width) : expValEquals('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? undefined : '100%',
@@ -117,6 +122,10 @@ export var renderExtension = function renderExtension(content, layout) {
117
122
  className: overflowContainerClass,
118
123
  css: [!(isInsideOfInlineExtension && expValEquals('confluence_inline_insert_excerpt_width_bugfix', 'isEnabled', true)) && fg('platform_fix_macro_renders_in_layouts') && containerStyle]
119
124
  }, content));
125
+ return centerAlignClass && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) ? jsx("div", {
126
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
127
+ className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
128
+ }, extensionDiv) : extensionDiv;
120
129
  });
121
130
  };
122
131
  var Extension = function Extension(props) {
@@ -23,6 +23,11 @@ var containerStyles = css({
23
23
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-nested-selectors
24
24
  '&:first-child > .ak-renderer-extension': {
25
25
  marginTop: 0
26
+ },
27
+ // When patch is on, direct child is center wrapper (not extension); same first-child behaviour
28
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-nested-selectors
29
+ '&:first-child > .ak-renderer-sticky-safe-center-wrapper': {
30
+ marginTop: 0
26
31
  }
27
32
  });
28
33
  var MultiBodiedExtensionChildrenContainer = function MultiBodiedExtensionChildrenContainer(_ref) {
@@ -158,6 +163,13 @@ var MultiBodiedExtension = function MultiBodiedExtension(props) {
158
163
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression
159
164
  var containerActiveFrameStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t& [data-extension-frame='true']:nth-of-type(", ") {\n\t\t\tdisplay: block;\n\t\t}\n\t"])), activeChildIndex + 1);
160
165
  if (expValEquals('platform_editor_renderer_extension_width_fix', 'isEnabled', true)) {
166
+ var _isTopLevel = path.length < 1;
167
+ var _useCenterWrapper = _isTopLevel && ['wide', 'full-width'].includes(layout) && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
168
+ var wrapper = jsx(MultiBodiedExtensionWrapperNext, {
169
+ layout: layout,
170
+ path: path,
171
+ rendererAppearance: rendererAppearance
172
+ }, renderContent());
161
173
  return jsx("section", {
162
174
  css: [containerStyles, containerActiveFrameStyles],
163
175
  "data-testid": "multiBodiedExtension--container",
@@ -166,12 +178,13 @@ var MultiBodiedExtension = function MultiBodiedExtension(props) {
166
178
  "data-layout": layout,
167
179
  "data-local-id": localId,
168
180
  "data-node-type": "multiBodiedExtension"
169
- }, jsx(MultiBodiedExtensionWrapperNext, {
170
- layout: layout,
171
- path: path,
172
- rendererAppearance: rendererAppearance
173
- }, renderContent()));
181
+ }, _useCenterWrapper ? jsx("div", {
182
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
183
+ className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
184
+ }, wrapper) : wrapper);
174
185
  }
186
+ var isTopLevel = path.length < 1;
187
+ var useCenterWrapper = isTopLevel && ['wide', 'full-width'].includes(layout) && expValEquals('platform_editor_flex_based_centering', 'isEnabled', true);
175
188
  return jsx("section", {
176
189
  css: [containerStyles, containerActiveFrameStyles],
177
190
  "data-testid": "multiBodiedExtension--container",
@@ -181,12 +194,16 @@ var MultiBodiedExtension = function MultiBodiedExtension(props) {
181
194
  "data-local-id": localId
182
195
  }, jsx(WidthConsumer, null, function (_ref5) {
183
196
  var width = _ref5.width;
184
- return jsx(MultiBodiedExtensionWrapperLegacy, {
197
+ var wrapper = jsx(MultiBodiedExtensionWrapperLegacy, {
185
198
  layout: layout,
186
199
  width: width,
187
200
  path: path,
188
201
  rendererAppearance: rendererAppearance
189
202
  }, renderContent());
203
+ return useCenterWrapper ? jsx("div", {
204
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
205
+ className: RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER + ' ' + RendererCssClassName.FLEX_CENTER_WRAPPER
206
+ }, wrapper) : wrapper;
190
207
  }));
191
208
  };
192
209
  export default MultiBodiedExtension;
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- var _css8;
2
+ var _css8, _$concat3, _$concat6;
3
3
  /* eslint-disable @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-selectors */
4
4
  /* eslint-disable @atlaskit/ui-styling-standard/no-imported-style-values */
5
5
  /* eslint-disable @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-values */
@@ -989,6 +989,22 @@ var headerSmartCardStyles = css({
989
989
  }
990
990
  }
991
991
  });
992
+
993
+ // Flex wrapper for centering without transform (platform_editor_flex_based_centering).
994
+ // flex: 1 1 0% + minWidth: 0 so the wrapper takes full width when it's a flex item (full-width nodes otherwise render narrow).
995
+ // flexShrink: 0 on child so the node keeps size.
996
+ var centerWrapperStyles = css(_defineProperty({}, ".".concat(RendererCssClassName.FLEX_CENTER_WRAPPER), {
997
+ display: 'flex',
998
+ justifyContent: 'center',
999
+ alignItems: 'flex-start',
1000
+ width: '100%',
1001
+ flex: '1 1 0%',
1002
+ minWidth: 0,
1003
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
1004
+ '& > *': {
1005
+ flexShrink: 0
1006
+ }
1007
+ }));
992
1008
  var baseOtherStylesDuplicateAnchor = css(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
993
1009
  '& .UnknownBlock': {
994
1010
  fontFamily: "var(--ds-font-family-body, \"Atlassian Sans\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
@@ -1034,7 +1050,7 @@ var baseOtherStylesDuplicateAnchor = css(_defineProperty(_defineProperty(_define
1034
1050
  }), 'div[class^="image-wrap-"] + div[class^="image-wrap-"]', {
1035
1051
  marginLeft: 0,
1036
1052
  marginRight: 0
1037
- }), ".".concat(RendererCssClassName.DOCUMENT, " >"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "*:not([data-mark-type='fragment']) .".concat(TableSharedCssClassName.TABLE_CONTAINER), {
1053
+ }), ".".concat(RendererCssClassName.DOCUMENT, " >"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "*:not([data-mark-type='fragment']) .".concat(TableSharedCssClassName.TABLE_CONTAINER), {
1038
1054
  // Temporarily ignoring the below the owning team can add the ticket number for the TODO. Context: https://atlassian.slack.com/archives/CPUEVD9MY/p1741565387326829
1039
1055
  // eslint-disable-next-line @atlaskit/editor/enforce-todo-comment-format
1040
1056
  // TODO - improve inline style logic on table container so important styles aren't required here
@@ -1050,16 +1066,45 @@ var baseOtherStylesDuplicateAnchor = css(_defineProperty(_defineProperty(_define
1050
1066
  overflowX: 'auto'
1051
1067
  }), "& .".concat(RendererCssClassName.EXTENSION, ":first-child"), {
1052
1068
  marginTop: 0
1053
- })), ".".concat(RendererCssClassName.DOCUMENT), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ".".concat(RendererCssClassName.EXTENSION), {
1069
+ }), "& .".concat(RendererCssClassName.FLEX_CENTER_WRAPPER, ":first-child"), {
1070
+ marginTop: 0
1071
+ })), ".".concat(RendererCssClassName.DOCUMENT), (_$concat3 = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_$concat3, ".".concat(RendererCssClassName.EXTENSION), {
1054
1072
  marginTop: "".concat(blockNodesVerticalMargin)
1055
- }), ".".concat(RendererCssClassName.EXTENSION_CENTER_ALIGN), {
1056
- // eslint-disable-next-line @atlaskit/design-system/use-tokens-space
1057
- marginLeft: '50%',
1058
- transform: 'translateX(-50%)'
1073
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER), {
1074
+ marginTop: "".concat(blockNodesVerticalMargin)
1075
+ }), ".".concat(RendererCssClassName.DOCUMENT, " [data-multiBodiedExtension-container]:first-child .").concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER), {
1076
+ marginTop: 0
1077
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION), {
1078
+ marginTop: 0,
1079
+ marginBottom: 0
1080
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " .mediaSingleView-content-wrap"), {
1081
+ marginTop: 0,
1082
+ marginBottom: 0
1083
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_BREAKOUT_INNER, " > *:first-child"), {
1084
+ marginTop: 0
1085
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_BREAKOUT_INNER, " > *:last-child"), {
1086
+ marginBottom: 0
1087
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " > .mediaSingleView-content-wrap > *:first-child"), {
1088
+ marginTop: 0
1089
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " > .mediaSingleView-content-wrap > *:last-child"), {
1090
+ marginBottom: 0
1091
+ }), ".".concat(RendererCssClassName.BLOCK_CARD_DATASOURCE_CENTER_WRAPPER, " > div > *:first-child"), {
1092
+ marginTop: 0
1093
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_$concat3, ".".concat(RendererCssClassName.BLOCK_CARD_DATASOURCE_CENTER_WRAPPER, " > div > *:last-child"), {
1094
+ marginBottom: 0
1095
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION, " > *:first-child"), {
1096
+ marginTop: 0
1097
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION, " > *:last-child"), {
1098
+ marginBottom: 0
1059
1099
  }), ".".concat(TableSharedCssClassName.TABLE_NODE_WRAPPER), {
1060
1100
  overflowX: 'auto'
1061
1101
  }), ".".concat(shadowObserverClassNames.SHADOW_CONTAINER, " .").concat(TableSharedCssClassName.TABLE_NODE_WRAPPER), {
1062
1102
  display: 'flex'
1103
+ }))));
1104
+ var extensionCenterAlignLegacyStyles = css(_defineProperty({}, ".".concat(RendererCssClassName.DOCUMENT), _defineProperty({}, ".".concat(RendererCssClassName.EXTENSION_CENTER_ALIGN), {
1105
+ // eslint-disable-next-line @atlaskit/design-system/use-tokens-space
1106
+ marginLeft: '50%',
1107
+ transform: 'translateX(-50%)'
1063
1108
  })));
1064
1109
  var baseOtherStyles = css(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
1065
1110
  '& .UnknownBlock': {
@@ -1106,7 +1151,7 @@ var baseOtherStyles = css(_defineProperty(_defineProperty(_defineProperty(_defin
1106
1151
  }), 'div[class^="image-wrap-"] + div[class^="image-wrap-"]', {
1107
1152
  marginLeft: 0,
1108
1153
  marginRight: 0
1109
- }), ".".concat(RendererCssClassName.DOCUMENT, " >"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "*:not([data-mark-type='fragment']) .".concat(TableSharedCssClassName.TABLE_CONTAINER), {
1154
+ }), ".".concat(RendererCssClassName.DOCUMENT, " >"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "*:not([data-mark-type='fragment']) .".concat(TableSharedCssClassName.TABLE_CONTAINER), {
1110
1155
  // Temporarily ignoring the below the owning team can add the ticket number for the TODO. Context: https://atlassian.slack.com/archives/CPUEVD9MY/p1741565387326829
1111
1156
  // eslint-disable-next-line @atlaskit/editor/enforce-todo-comment-format
1112
1157
  // TODO - improve inline style logic on table container so important styles aren't required here
@@ -1122,17 +1167,41 @@ var baseOtherStyles = css(_defineProperty(_defineProperty(_defineProperty(_defin
1122
1167
  overflowX: 'auto'
1123
1168
  }), "& .".concat(RendererCssClassName.EXTENSION, ":first-child"), {
1124
1169
  marginTop: 0
1125
- })), ".".concat(RendererCssClassName.DOCUMENT), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ".".concat(RendererCssClassName.EXTENSION), {
1170
+ }), "& .".concat(RendererCssClassName.FLEX_CENTER_WRAPPER, ":first-child"), {
1171
+ marginTop: 0
1172
+ })), ".".concat(RendererCssClassName.DOCUMENT), (_$concat6 = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_$concat6, ".".concat(RendererCssClassName.EXTENSION), {
1126
1173
  marginTop: "".concat(blockNodesVerticalMargin)
1127
- }), ".".concat(RendererCssClassName.EXTENSION_CENTER_ALIGN), {
1128
- // eslint-disable-next-line @atlaskit/design-system/use-tokens-space
1129
- marginLeft: '50%',
1130
- transform: 'translateX(-50%)'
1174
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER), {
1175
+ marginTop: "".concat(blockNodesVerticalMargin)
1176
+ }), ".".concat(RendererCssClassName.DOCUMENT, " [data-multiBodiedExtension-container]:first-child .").concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER), {
1177
+ marginTop: 0
1178
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION), {
1179
+ marginTop: 0,
1180
+ marginBottom: 0
1181
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " .mediaSingleView-content-wrap"), {
1182
+ marginTop: 0,
1183
+ marginBottom: 0
1184
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_BREAKOUT_INNER, " > *:first-child"), {
1185
+ marginTop: 0
1186
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_BREAKOUT_INNER, " > *:last-child"), {
1187
+ marginBottom: 0
1188
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " > .mediaSingleView-content-wrap > *:first-child"), {
1189
+ marginTop: 0
1190
+ }), ".".concat(RendererCssClassName.EMBED_CARD_CENTER_WRAPPER, " > .mediaSingleView-content-wrap > *:last-child"), {
1191
+ marginBottom: 0
1192
+ }), ".".concat(RendererCssClassName.BLOCK_CARD_DATASOURCE_CENTER_WRAPPER, " > div > *:first-child"), {
1193
+ marginTop: 0
1194
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_$concat6, ".".concat(RendererCssClassName.BLOCK_CARD_DATASOURCE_CENTER_WRAPPER, " > div > *:last-child"), {
1195
+ marginBottom: 0
1196
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION, " > *:first-child"), {
1197
+ marginTop: 0
1198
+ }), ".".concat(RendererCssClassName.STICKY_SAFE_CENTER_WRAPPER, " .").concat(RendererCssClassName.EXTENSION, " > *:last-child"), {
1199
+ marginBottom: 0
1131
1200
  }), ".".concat(TableSharedCssClassName.TABLE_NODE_WRAPPER), {
1132
1201
  overflowX: 'auto'
1133
1202
  }), ".".concat(shadowObserverClassNames.SHADOW_CONTAINER, " .").concat(TableSharedCssClassName.TABLE_NODE_WRAPPER), {
1134
1203
  display: 'flex'
1135
- })));
1204
+ }))));
1136
1205
  var alignedHeadingAnchorStyleDuplicateAnchor = css({
1137
1206
  // Temporarily ignoring the below the owning team can add the ticket number for the TODO. Context: https://atlassian.slack.com/archives/CPUEVD9MY/p1741565387326829
1138
1207
  // eslint-disable-next-line @atlaskit/editor/enforce-todo-comment-format
@@ -1937,11 +2006,11 @@ export var RendererStyleContainer = function RendererStyleContainer(props) {
1937
2006
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values
1938
2007
  textHighlightPaddingStyles, tasksAndDecisionsStyles, expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) && headingPanelStyles, smartCardStyles, smartCardStylesAvatarFix, editorExperiment('platform_editor_preview_panel_linking_exp', true) && headerSmartCardStyles, smartCardStylesAvatarMarginFix, smartCardStylesAvatarListZeroMarginTop, fg('editor_inline_comments_on_inline_nodes') && rendererAnnotationStyles,
1939
2008
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
1940
- fg('editor_inline_comments_on_inline_nodes') && rendererAnnotationStylesCommentHeightFix, expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) ? baseOtherStyles : baseOtherStylesDuplicateAnchor,
2009
+ fg('editor_inline_comments_on_inline_nodes') && rendererAnnotationStylesCommentHeightFix, expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) ? baseOtherStyles : baseOtherStylesDuplicateAnchor, !expValEquals('platform_editor_flex_based_centering', 'isEnabled', true) && extensionCenterAlignLegacyStyles,
1941
2010
  // this should be placed after baseOtherStyles
1942
2011
  expValEquals('platform_editor_render_bodied_extension_as_inline', 'isEnabled', true) && (expValEquals('platform_editor_remove_important_in_render_ext', 'isEnabled', true) ? extensionAsInlineStyle : oldExtensionAsInlineStyle), expValEquals('confluence_insert_excerpt_inline_vertical_align', 'isEnabled', true) && inlineExtensionRendererMarginFix, allowNestedHeaderLinks && (expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) ? alignedHeadingAnchorStyle : alignedHeadingAnchorStyleDuplicateAnchor), mediaSingleSharedStyle,
1943
2012
  // merge firstWrappedMediaStyles with mediaSingleSharedStyle when clean up platform_editor_fix_media_in_renderer
1944
- fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && (expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) ? rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks : rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinksDuplicateAnchor), rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, editorExperiment('platform_synced_block', true) && syncBlockStyles, editorExperiment('platform_synced_block', true) && syncBlockOverflowStyles, editorExperiment('platform_synced_block', true) && fg('platform_synced_block_patch_2') && syncBlockPatch2Styles],
2013
+ fg('platform_editor_fix_media_in_renderer') && firstWrappedMediaStyles, tableSharedStyle, tableRendererHeaderStylesForTableCellOnly, fg('platform_editor_bordered_panel_nested_in_table') && tableRendererNestedPanelStyles, isBackgroundClipBrowserFixNeeded() && tableStylesBackGroundClipForGeckoForTableCellOnly, fg('platform_editor_nested_dnd_styles_changes') ? firstNodeWithNotMarginTopWithNestedDnD : firstNodeWithNotMarginTop, rendererTableStyles, isStickyScrollbarEnabled(appearance) && stickyScrollbarStyles, rendererTableHeaderEqualHeightStylesForTableCellOnly, allowColumnSorting && rendererTableSortableColumnStyles, allowColumnSorting && allowNestedHeaderLinks && (expValEquals('platform_editor_copy_link_a11y_inconsistency_fix', 'isEnabled', true) ? rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinks : rendererTableHeaderEqualHeightStylesAllowNestedHeaderLinksDuplicateAnchor), rendererTableColumnStyles, stickyHeaderStyles, codeBlockAndLayoutStyles, columnLayoutSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveSharedStyle, isAdvancedLayoutsOn && columnLayoutResponsiveRendererStyles, isAdvancedLayoutsOn && layoutSectionForAdvancedLayoutsStyles, !useBlockRenderForCodeBlock && gridRenderForCodeBlockStyles, browser.safari && codeBlockInListSafariFixStyles, appearance === 'full-page' && !isPreviewPanelResponsivenessOn && responsiveBreakoutWidth, appearance === 'full-page' && isPreviewPanelResponsivenessOn && responsiveBreakoutWidthWithReducedPadding, (appearance === 'full-width' || appearance === 'max' && (expValEquals('editor_tinymce_full_width_mode', 'isEnabled', true) || expValEquals('confluence_max_width_content_appearance', 'isEnabled', true))) && responsiveBreakoutWidthFullWidth, expValEquals('platform_editor_lovability_emoji_scaling', 'isEnabled', true) ? isCompactModeEnabled ? scaledDenseEmojiStyles : scaledEmojiStyles : isCompactModeEnabled ? denseStyles : undefined, editorExperiment('platform_synced_block', true) && syncBlockStyles, editorExperiment('platform_synced_block', true) && syncBlockOverflowStyles, editorExperiment('platform_synced_block', true) && fg('platform_synced_block_patch_2') && syncBlockPatch2Styles, centerWrapperStyles],
1945
2014
  "data-testid": testId
1946
2015
  }, children)
1947
2016
  );
@@ -62,7 +62,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
62
62
  var TABLE_INFO_TIMEOUT = 10000;
63
63
  var RENDER_EVENT_SAMPLE_RATE = 0.2;
64
64
  var packageName = "@atlaskit/renderer";
65
- var packageVersion = "126.9.4";
65
+ var packageVersion = "126.9.5";
66
66
  var setAsQueryContainerStyles = css({
67
67
  containerName: 'ak-renderer-wrapper',
68
68
  containerType: 'inline-size'
@@ -1,9 +1,20 @@
1
1
  export declare const RendererCssClassName: {
2
+ FLEX_CENTER_WRAPPER: string;
2
3
  DOCUMENT: string;
3
4
  EXTENSION: string;
4
5
  EXTENSION_AS_INLINE: string;
5
6
  EXTENSION_CENTER_ALIGN: string;
6
7
  EXTENSION_OVERFLOW_CONTAINER: string;
8
+ /** Wrapper for center-aligned extensions/MBE; margin here so it participates in collapse */
9
+ STICKY_SAFE_CENTER_WRAPPER: string;
10
+ /** Wrapper for center-aligned embed card (wide/full-width); margin here so it participates in collapse */
11
+ EMBED_CARD_CENTER_WRAPPER: string;
12
+ /** Wrapper for center-aligned block card datasource (wide/full-width); margin here so it participates in collapse */
13
+ BLOCK_CARD_DATASOURCE_CENTER_WRAPPER: string;
14
+ /** Outer flex wrapper for sticky-safe breakout (has vertical margin); zero margin when first in doc */
15
+ STICKY_SAFE_BREAKOUT_WRAPPER: string;
16
+ /** Flex item in sticky-safe breakout; zero first/last child margin so flex container height matches legacy */
17
+ STICKY_SAFE_BREAKOUT_INNER: string;
7
18
  NUMBER_COLUMN: string;
8
19
  SORTABLE_COLUMN_WRAPPER: string;
9
20
  SORTABLE_COLUMN: string;
@@ -1,9 +1,20 @@
1
1
  export declare const RendererCssClassName: {
2
+ FLEX_CENTER_WRAPPER: string;
2
3
  DOCUMENT: string;
3
4
  EXTENSION: string;
4
5
  EXTENSION_AS_INLINE: string;
5
6
  EXTENSION_CENTER_ALIGN: string;
6
7
  EXTENSION_OVERFLOW_CONTAINER: string;
8
+ /** Wrapper for center-aligned extensions/MBE; margin here so it participates in collapse */
9
+ STICKY_SAFE_CENTER_WRAPPER: string;
10
+ /** Wrapper for center-aligned embed card (wide/full-width); margin here so it participates in collapse */
11
+ EMBED_CARD_CENTER_WRAPPER: string;
12
+ /** Wrapper for center-aligned block card datasource (wide/full-width); margin here so it participates in collapse */
13
+ BLOCK_CARD_DATASOURCE_CENTER_WRAPPER: string;
14
+ /** Outer flex wrapper for sticky-safe breakout (has vertical margin); zero margin when first in doc */
15
+ STICKY_SAFE_BREAKOUT_WRAPPER: string;
16
+ /** Flex item in sticky-safe breakout; zero first/last child margin so flex container height matches legacy */
17
+ STICKY_SAFE_BREAKOUT_INNER: string;
7
18
  NUMBER_COLUMN: string;
8
19
  SORTABLE_COLUMN_WRAPPER: string;
9
20
  SORTABLE_COLUMN: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "126.9.5",
3
+ "version": "126.10.0",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"