@atlaskit/renderer 136.2.0 → 136.2.2

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,28 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 136.2.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e2be8a7b1a21b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e2be8a7b1a21b) -
8
+ Under experiment `platform_editor_adf_validator_perf`, `validationOverrides` (including the
9
+ `allowTableInPanel` override) is built in a single `useMemo` instead of a fresh object literal per
10
+ render. The unstable reference made `renderDocument`'s validation memo miss, re-validating an
11
+ unchanged document on every render. Added a test asserting the reference stays stable across
12
+ re-renders.
13
+
14
+ `RendererFunctionalComponent` now takes an `allowNestedTables` boolean in place of the
15
+ `validationOverrides` object prop, and derives the overrides itself.
16
+
17
+ - Updated dependencies
18
+
19
+ ## 136.2.1
20
+
21
+ ### Patch Changes
22
+
23
+ - [`de41cde76539d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/de41cde76539d) -
24
+ [ux] EDITOR-8647 fix sticky header mask for rounded table in panel
25
+
3
26
  ## 136.2.0
4
27
 
5
28
  ### Minor Changes
@@ -6,6 +6,7 @@
6
6
  ._13n84jg8.ak-editor-panel{align-items:normal}
7
7
  ._1554u2gc.ak-editor-panel{padding-top:var(--ds-space-100,8px)}
8
8
  ._15sp1vk5.ak-editor-panel[data-panel-type=error]{background-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
9
+ ._18hz1vk5.ak-editor-panel[data-panel-type=error]{--ak-renderer-panel-bg-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
9
10
  ._18w0h2mm.ak-editor-panel{position:relative}
10
11
  ._18y8qm1h.ak-editor-panel[data-panel-type=note] .ak-editor-panel__icon{color:var(--ds-icon-discovery,#af59e1)}
11
12
  ._19agidpf.ak-editor-panel .ak-editor-panel__content{flex-shrink:0}
@@ -37,18 +38,24 @@
37
38
  ._66ohu2gc.ak-editor-panel{padding-left:var(--ds-space-100,8px)}
38
39
  ._6qwr1hna.ak-editor-panel{word-break:break-word}
39
40
  ._7c6p1t9x.ak-editor-panel .ak-editor-panel__icon .emoji-common-emoji-image{vertical-align:var(--_1glv3p1)}
41
+ ._93eu1aok.ak-editor-panel[data-panel-type=custom]{--ak-renderer-panel-bg-color:var(--ak-renderer-panel-custom-bg-color)}
40
42
  ._9dunutpp.ak-editor-panel__no-icon{padding-left:var(--ds-space-150,9pt)}
43
+ ._a9e5p2ly.ak-editor-panel[data-panel-type=note]{--ak-renderer-panel-bg-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
41
44
  ._e5ovn729.ak-editor-panel[data-panel-type=tip]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
45
+ ._eba1ibhp.ak-editor-panel[data-panel-type=warning]{--ak-renderer-panel-bg-color:var(--ds-background-accent-yellow-subtlest,#fef7c8)}
42
46
  ._fc9iidpf.ak-editor-panel .ak-editor-panel__content{min-width:0}
43
47
  ._g8a34pcx.ak-editor-panel[data-panel-type=tip] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
44
48
  ._gb1eidpf.ak-editor-panel .ak-editor-panel__content{margin-left:0}
49
+ ._giv8n729.ak-editor-panel[data-panel-type=success]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
45
50
  ._gt7x4pcx.ak-editor-panel[data-panel-type=success] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
46
51
  ._iqv91kw7.ak-editor-panel{color:inherit}
47
52
  ._jde2v77o.ak-editor-panel .ak-editor-panel__content{margin-top:var(--ds-space-025,2px)}
53
+ ._niep1s93.ak-editor-panel{--ak-renderer-panel-bg-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
48
54
  ._nlelp2ly.ak-editor-panel[data-panel-type=note]{background-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
49
55
  ._pzbautpp.ak-editor-panel__no-icon{padding-right:var(--ds-space-150,9pt)}
50
56
  ._s4ldn729.ak-editor-panel[data-panel-type=success]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
51
57
  ._ujht1s93.ak-editor-panel{background-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
58
+ ._vy90n729.ak-editor-panel[data-panel-type=tip]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
52
59
  ._wz94glyw.ak-editor-panel .ak-editor-panel__icon{-moz-user-select:none}
53
60
  ._zs6jglyw.ak-editor-panel .ak-editor-panel__icon{-webkit-user-select:none}
54
61
  @-moz-document url-prefix(){._udsa1o8l.ak-editor-panel .ak-editor-panel__icon .emoji-common-emoji-image img{display:inline-block}}
@@ -33,6 +33,7 @@ var panelEmojiImageVerticalAlignment = panelEmojiSpriteVerticalAlignment - 1;
33
33
  var blockNodesVerticalMargin = '0.75rem';
34
34
  var akEditorTableCellMinWidth = 48;
35
35
  var panelBaseStyles = null;
36
+ var panelBackgroundColorVariableStyles = null;
36
37
  var panelHasNoIconStyles = null;
37
38
  var panelInfoIconStyles = null;
38
39
  var panelNestedIconStyles = null;
@@ -47,7 +48,7 @@ var PanelStyledCompiled = exports.PanelStyledCompiled = function PanelStyledComp
47
48
  var customBackgroundColor = backgroundColor ? (0, _editorPalette.hexToEditorBackgroundPaletteColor)(backgroundColor) || backgroundColor : undefined;
48
49
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, props, {
49
50
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- intentional: preserve existing PanelSharedCssClassName.prefix class
50
- className: (0, _runtime.ax)(["_lklzfajl _imyb1bbz _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3jmsf _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hauowts _7c6p1t9x _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === _adfSchema.PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
51
+ className: (0, _runtime.ax)(["_lklzfajl _imyb1bbz _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3jmsf _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hauowts _7c6p1t9x _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_3') && "_niep1s93 _a9e5p2ly _giv8n729 _vy90n729 _eba1ibhp _18hz1vk5 _93eu1aok", (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === _adfSchema.PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
51
52
  style: _objectSpread(_objectSpread({}, {
52
53
  // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- intentional: custom panel background is dynamic via CSS variable
53
54
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
@@ -135,6 +135,32 @@ var panelBaseStyles = (0, _react2.css)({
135
135
  }
136
136
  }
137
137
  });
138
+ var panelBackgroundColorVariableStyles = (0, _react2.css)({
139
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
140
+ '&.ak-editor-panel': {
141
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-blue-subtlest, #E9F2FE)",
142
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
143
+ '&[data-panel-type="note"]': {
144
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-purple-subtlest, #F8EEFE)"
145
+ },
146
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
147
+ '&[data-panel-type="tip"], &[data-panel-type="success"]': {
148
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-green-subtlest, #DCFFF1)"
149
+ },
150
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
151
+ '&[data-panel-type="warning"]': {
152
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-yellow-subtlest, #FEF7C8)"
153
+ },
154
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
155
+ '&[data-panel-type="error"]': {
156
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-red-subtlest, #FFECEB)"
157
+ },
158
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
159
+ '&[data-panel-type="custom"]': {
160
+ '--ak-renderer-panel-bg-color': 'var(--ak-renderer-panel-custom-bg-color)'
161
+ }
162
+ }
163
+ });
138
164
  var panelHasNoIconStyles = (0, _react2.css)({
139
165
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
140
166
  '&.ak-editor-panel': {
@@ -187,7 +213,7 @@ var PanelStyledEmotion = exports.PanelStyledEmotion = function PanelStyledEmotio
187
213
  {
188
214
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
189
215
  },
190
- css: [panelBaseStyles, (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === _adfSchema.PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
216
+ css: [panelBaseStyles, (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_3') && panelBackgroundColorVariableStyles, (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === _adfSchema.PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
191
217
  // Ignored via go/ees005
192
218
  // eslint-disable-next-line react/jsx-props-no-spreading
193
219
  }, props), props.children);
@@ -13,6 +13,7 @@ var _react = _interopRequireDefault(require("react"));
13
13
  var _react2 = require("@emotion/react");
14
14
  var _styles = require("@atlaskit/editor-common/styles");
15
15
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
16
+ var _fg = require("@atlaskit/platform-feature-flags/fg");
16
17
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
17
18
  var _table = require("./table");
18
19
  var _injectProps = require("../../utils/inject-props");
@@ -41,6 +42,17 @@ var suppressExternalStickStyles = (0, _react2.css)({
41
42
  background: "var(--ds-surface, #FFFFFF)"
42
43
  }
43
44
  });
45
+ var panelAwareStickyTableStyles = (0, _react2.css)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
46
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Override external renderer wrapper styles targeting div[mode='stick']
47
+ "&.fixed-table-div-custom-table-resizing[mode='stick']": {
48
+ background: "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")
49
+ }
50
+ }, "& .".concat(_styles.TableSharedCssClassName.TABLE_CONTAINER, ", & .").concat(_styles.TableSharedCssClassName.TABLE_STICKY_WRAPPER, " > table"), {
51
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
52
+ tr: {
53
+ background: "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")
54
+ }
55
+ }), "borderTopColor", "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")), "background", "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface-overlay, #FFFFFF)", ")")));
44
56
 
45
57
  // refactored based on fixedTableDivStaticStyles
46
58
  // TODO: DSP-4123 - Quality ticket
@@ -81,7 +93,7 @@ var FixedTableDiv = function FixedTableDiv(props) {
81
93
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
82
94
  ,
83
95
  className: allowTableResizing ? 'fixed-table-div-custom-table-resizing' : '',
84
- css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], (0, _expValEquals.expValEquals)('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles],
96
+ css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], (0, _expValEquals.expValEquals)('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles, (0, _expValEquals.expValEquals)('platform_editor_nest_table_in_panel', 'isEnabled', true) && (0, _fg.fg)('platform_editor_nest_table_in_panel_patch_3') && panelAwareStickyTableStyles],
85
97
  style: {
86
98
  '--ak-renderer-sticky-header-zindex': stickyHeaderZIndex,
87
99
  width: "".concat(wrapperWidth, "px"),
@@ -24,6 +24,7 @@ var _measureRender = require("@atlaskit/editor-common/performance/measure-render
24
24
  var _navigation = require("@atlaskit/editor-common/performance/navigation");
25
25
  var _useScrollToBlock = require("../hooks/useScrollToBlock");
26
26
  var _utils = require("@atlaskit/editor-common/utils");
27
+ var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
27
28
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
28
29
  var _types = require("@atlaskit/analytics-listeners/types");
29
30
  var _analyticsNamespacedContext = require("@atlaskit/analytics-namespaced-context");
@@ -73,7 +74,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
73
74
  var TABLE_INFO_TIMEOUT = 10000;
74
75
  var RENDER_EVENT_SAMPLE_RATE = 0.1;
75
76
  var packageName = "@atlaskit/renderer";
76
- var packageVersion = "136.1.7";
77
+ var packageVersion = "136.2.1";
77
78
  var setAsQueryContainerStyles = (0, _react2.css)({
78
79
  containerName: 'ak-renderer-wrapper',
79
80
  containerType: 'inline-size'
@@ -473,13 +474,24 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
473
474
  }, [props.featureFlags, props.isTopLevelRenderer, createRendererContext, props.timeZone]);
474
475
  var isCollapsibleHeadingsEnabled = props.allowCollapsibleHeadings === true && ['full-page', 'full-width', 'max'].includes(props.appearance || '') && rendererContext.isTopLevelRenderer && (0, _expValEquals.expValEquals)('platform_renderer_collapsible_headings', 'isEnabled', true);
475
476
  (0, _useScrollToBlock.useScrollToBlock)(editorRef, props.document, props.scrollToBlock);
477
+ var allowNestedTables = props.allowNestedTables;
478
+ var stableValidationOverrides = (0, _react.useMemo)(function () {
479
+ var schema = getSchema(props.schema, props.adfStage);
480
+ return (0, _nesting.isPanelNestingTableSupported)(schema) ? {
481
+ allowNestedTables: allowNestedTables,
482
+ allowTableInPanel: true
483
+ } : {
484
+ allowNestedTables: allowNestedTables
485
+ };
486
+ }, [allowNestedTables, getSchema, props.schema, props.adfStage]);
487
+
488
+ // Gate read only on the table-in-panel path, the one that used to build a new object every
489
+ // render; elsewhere both arms are already identical. Control keeps the copy-per-render
490
+ // behaviour, which is what makes `renderDocument`'s validation memo miss.
491
+ var validationOverrides = stableValidationOverrides.allowTableInPanel && !(0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_adf_validator_perf') ? _objectSpread({}, stableValidationOverrides) : stableValidationOverrides;
476
492
  try {
477
493
  var _rendererContext$feat, _props$media;
478
494
  var schema = getSchema(props.schema, props.adfStage);
479
- var allowTableInPanel = (0, _nesting.isPanelNestingTableSupported)(schema);
480
- var validationOverrides = allowTableInPanel ? _objectSpread(_objectSpread({}, props.validationOverrides), {}, {
481
- allowTableInPanel: true
482
- }) : props.validationOverrides;
483
495
  var _renderDocument = (0, _.renderDocument)(props.shouldRemoveEmptySpaceAroundContent ? (0, _rendererHelper.removeEmptySpaceAroundContent)(props.document) : props.document, serializer, schema, props.adfStage, props.useSpecBasedValidator, id, _fireAnalyticsEvent, props.unsupportedContentLevelsTracking, props.appearance, props.includeNodesCountInStats, props.skipValidation, validationOverrides),
484
496
  result = _renderDocument.result,
485
497
  stat = _renderDocument.stat,
@@ -595,11 +607,6 @@ function Renderer(props) {
595
607
  var _ref = (0, _react.useContext)(_ValidationContext.ValidationContext) || {},
596
608
  skipValidation = _ref.skipValidation,
597
609
  allowNestedTables = _ref.allowNestedTables;
598
- var validationOverrides = (0, _react.useMemo)(function () {
599
- return {
600
- allowNestedTables: allowNestedTables
601
- };
602
- }, [allowNestedTables]);
603
610
  return (0, _react2.jsx)(RendererFunctionalComponentWithPortalContext
604
611
  // Ignored via go/ees005
605
612
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -607,7 +614,7 @@ function Renderer(props) {
607
614
  startPos: startPos,
608
615
  isTopLevelRenderer: (_props$isTopLevelRend = props.isTopLevelRenderer) !== null && _props$isTopLevelRend !== void 0 ? _props$isTopLevelRend : isTopLevelRenderer,
609
616
  skipValidation: skipValidation,
610
- validationOverrides: validationOverrides
617
+ allowNestedTables: allowNestedTables
611
618
  }));
612
619
  }
613
620
 
@@ -5,6 +5,7 @@
5
5
  ._13n84jg8.ak-editor-panel{align-items:normal}
6
6
  ._1554u2gc.ak-editor-panel{padding-top:var(--ds-space-100,8px)}
7
7
  ._15sp1vk5.ak-editor-panel[data-panel-type=error]{background-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
8
+ ._18hz1vk5.ak-editor-panel[data-panel-type=error]{--ak-renderer-panel-bg-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
8
9
  ._18w0h2mm.ak-editor-panel{position:relative}
9
10
  ._18y8qm1h.ak-editor-panel[data-panel-type=note] .ak-editor-panel__icon{color:var(--ds-icon-discovery,#af59e1)}
10
11
  ._19agidpf.ak-editor-panel .ak-editor-panel__content{flex-shrink:0}
@@ -38,19 +39,25 @@
38
39
  ._66ohu2gc.ak-editor-panel{padding-left:var(--ds-space-100,8px)}
39
40
  ._6qwr1hna.ak-editor-panel{word-break:break-word}
40
41
  ._7c6pj39m.ak-editor-panel .ak-editor-panel__icon .emoji-common-emoji-image{vertical-align:-3px}
42
+ ._93eu1aok.ak-editor-panel[data-panel-type=custom]{--ak-renderer-panel-bg-color:var(--ak-renderer-panel-custom-bg-color)}
41
43
  ._9dunutpp.ak-editor-panel__no-icon{padding-left:var(--ds-space-150,9pt)}
44
+ ._a9e5p2ly.ak-editor-panel[data-panel-type=note]{--ak-renderer-panel-bg-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
42
45
  ._e5ovn729.ak-editor-panel[data-panel-type=tip]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
46
+ ._eba1ibhp.ak-editor-panel[data-panel-type=warning]{--ak-renderer-panel-bg-color:var(--ds-background-accent-yellow-subtlest,#fef7c8)}
43
47
  ._fc9iidpf.ak-editor-panel .ak-editor-panel__content{min-width:0}
44
48
  ._g8a34pcx.ak-editor-panel[data-panel-type=tip] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
45
49
  ._gb1eidpf.ak-editor-panel .ak-editor-panel__content{margin-left:0}
50
+ ._giv8n729.ak-editor-panel[data-panel-type=success]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
46
51
  ._gt7x4pcx.ak-editor-panel[data-panel-type=success] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
47
52
  ._iqv91kw7.ak-editor-panel{color:inherit}
48
53
  ._jde2v77o.ak-editor-panel .ak-editor-panel__content{margin-top:var(--ds-space-025,2px)}
54
+ ._niep1s93.ak-editor-panel{--ak-renderer-panel-bg-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
49
55
  ._nlelp2ly.ak-editor-panel[data-panel-type=note]{background-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
50
56
  ._pzbautpp.ak-editor-panel__no-icon{padding-right:var(--ds-space-150,9pt)}
51
57
  ._s4ldn729.ak-editor-panel[data-panel-type=success]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
52
58
  ._u70eidpf.ak-editor-panel{margin-bottom:0}
53
59
  ._ujht1s93.ak-editor-panel{background-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
60
+ ._vy90n729.ak-editor-panel[data-panel-type=tip]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
54
61
  ._wz94glyw.ak-editor-panel .ak-editor-panel__icon{-moz-user-select:none}
55
62
  ._xmo1idpf.ak-editor-panel{margin-right:0}
56
63
  ._zs6jglyw.ak-editor-panel .ak-editor-panel__icon{-webkit-user-select:none}
@@ -21,6 +21,7 @@ const panelEmojiImageVerticalAlignment = panelEmojiSpriteVerticalAlignment - 1;
21
21
  const blockNodesVerticalMargin = '0.75rem';
22
22
  const akEditorTableCellMinWidth = 48;
23
23
  const panelBaseStyles = null;
24
+ const panelBackgroundColorVariableStyles = null;
24
25
  const panelHasNoIconStyles = null;
25
26
  const panelInfoIconStyles = null;
26
27
  const panelNestedIconStyles = null;
@@ -36,7 +37,7 @@ export const PanelStyledCompiled = ({
36
37
  const customBackgroundColor = backgroundColor ? hexToEditorBackgroundPaletteColor(backgroundColor) || backgroundColor : undefined;
37
38
  return /*#__PURE__*/React.createElement("div", _extends({}, props, {
38
39
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- intentional: preserve existing PanelSharedCssClassName.prefix class
39
- className: ax(["_lklzfajl _1alzoqnp _xmo1idpf _u70eidpf _1m1jidpf _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3ckbl _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hau12gs _7c6pj39m _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
40
+ className: ax(["_lklzfajl _1alzoqnp _xmo1idpf _u70eidpf _1m1jidpf _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3ckbl _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hau12gs _7c6pj39m _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && "_niep1s93 _a9e5p2ly _giv8n729 _vy90n729 _eba1ibhp _18hz1vk5 _93eu1aok", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
40
41
  style: {
41
42
  // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- intentional: custom panel background is dynamic via CSS variable
42
43
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
@@ -127,6 +127,32 @@ const panelBaseStyles = css({
127
127
  }
128
128
  }
129
129
  });
130
+ const panelBackgroundColorVariableStyles = css({
131
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
132
+ '&.ak-editor-panel': {
133
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-blue-subtlest, #E9F2FE)",
134
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
135
+ '&[data-panel-type="note"]': {
136
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-purple-subtlest, #F8EEFE)"
137
+ },
138
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
139
+ '&[data-panel-type="tip"], &[data-panel-type="success"]': {
140
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-green-subtlest, #DCFFF1)"
141
+ },
142
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
143
+ '&[data-panel-type="warning"]': {
144
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-yellow-subtlest, #FEF7C8)"
145
+ },
146
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
147
+ '&[data-panel-type="error"]': {
148
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-red-subtlest, #FFECEB)"
149
+ },
150
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
151
+ '&[data-panel-type="custom"]': {
152
+ '--ak-renderer-panel-bg-color': 'var(--ak-renderer-panel-custom-bg-color)'
153
+ }
154
+ }
155
+ });
130
156
  const panelHasNoIconStyles = css({
131
157
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
132
158
  '&.ak-editor-panel': {
@@ -180,7 +206,7 @@ export const PanelStyledEmotion = ({
180
206
  {
181
207
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
182
208
  },
183
- css: [panelBaseStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
209
+ css: [panelBaseStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && panelBackgroundColorVariableStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
184
210
  // Ignored via go/ees005
185
211
  // eslint-disable-next-line react/jsx-props-no-spreading
186
212
  }, props), props.children);
@@ -8,6 +8,7 @@ import React from 'react';
8
8
  import { jsx, css } from '@emotion/react';
9
9
  import { TableSharedCssClassName } from '@atlaskit/editor-common/styles';
10
10
  import { akEditorStickyHeaderZIndex } from '@atlaskit/editor-shared-styles';
11
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
11
12
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
12
13
  import { Table } from './table';
13
14
  import { recursivelyInjectProps } from '../../utils/inject-props';
@@ -29,6 +30,21 @@ const suppressExternalStickStyles = css({
29
30
  background: "var(--ds-surface, #FFFFFF)"
30
31
  }
31
32
  });
33
+ const panelAwareStickyTableStyles = css({
34
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Override external renderer wrapper styles targeting div[mode='stick']
35
+ "&.fixed-table-div-custom-table-resizing[mode='stick']": {
36
+ background: `var(--ak-renderer-panel-bg-color, ${"var(--ds-surface, #FFFFFF)"})`
37
+ },
38
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-values, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
39
+ [`& .${TableSharedCssClassName.TABLE_CONTAINER}, & .${TableSharedCssClassName.TABLE_STICKY_WRAPPER} > table`]: {
40
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
41
+ tr: {
42
+ background: `var(--ak-renderer-panel-bg-color, ${"var(--ds-surface, #FFFFFF)"})`
43
+ }
44
+ },
45
+ borderTopColor: `var(--ak-renderer-panel-bg-color, ${"var(--ds-surface, #FFFFFF)"})`,
46
+ background: `var(--ak-renderer-panel-bg-color, ${"var(--ds-surface-overlay, #FFFFFF)"})`
47
+ });
32
48
 
33
49
  // refactored based on fixedTableDivStaticStyles
34
50
  // TODO: DSP-4123 - Quality ticket
@@ -82,7 +98,7 @@ const FixedTableDiv = props => {
82
98
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
83
99
  ,
84
100
  className: allowTableResizing ? 'fixed-table-div-custom-table-resizing' : '',
85
- css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles],
101
+ css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && panelAwareStickyTableStyles],
86
102
  style: {
87
103
  '--ak-renderer-sticky-header-zindex': stickyHeaderZIndex,
88
104
  width: `${wrapperWidth}px`,
@@ -18,6 +18,7 @@ import { getDistortedDurationMonitor } from '@atlaskit/editor-common/performance
18
18
  import { getResponseEndTime } from '@atlaskit/editor-common/performance/navigation';
19
19
  import { useScrollToBlock } from '../hooks/useScrollToBlock';
20
20
  import { getAnalyticsAppearance, getAnalyticsEventSeverity, shouldForceTracking } from '@atlaskit/editor-common/utils';
21
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
21
22
  import { fg } from '@atlaskit/platform-feature-flags';
22
23
  import { FabricChannel } from '@atlaskit/analytics-listeners/types';
23
24
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
@@ -59,7 +60,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
59
60
  const TABLE_INFO_TIMEOUT = 10000;
60
61
  const RENDER_EVENT_SAMPLE_RATE = 0.1;
61
62
  const packageName = "@atlaskit/renderer";
62
- const packageVersion = "136.1.7";
63
+ const packageVersion = "136.2.1";
63
64
  const setAsQueryContainerStyles = css({
64
65
  containerName: 'ak-renderer-wrapper',
65
66
  containerType: 'inline-size'
@@ -462,14 +463,28 @@ export const RendererFunctionalComponent = props => {
462
463
  }), [props.featureFlags, props.isTopLevelRenderer, createRendererContext, props.timeZone]);
463
464
  const isCollapsibleHeadingsEnabled = props.allowCollapsibleHeadings === true && ['full-page', 'full-width', 'max'].includes(props.appearance || '') && rendererContext.isTopLevelRenderer && expValEquals('platform_renderer_collapsible_headings', 'isEnabled', true);
464
465
  useScrollToBlock(editorRef, props.document, props.scrollToBlock);
466
+ const {
467
+ allowNestedTables
468
+ } = props;
469
+ const stableValidationOverrides = useMemo(() => {
470
+ const schema = getSchema(props.schema, props.adfStage);
471
+ return isPanelNestingTableSupported(schema) ? {
472
+ allowNestedTables,
473
+ allowTableInPanel: true
474
+ } : {
475
+ allowNestedTables
476
+ };
477
+ }, [allowNestedTables, getSchema, props.schema, props.adfStage]);
478
+
479
+ // Gate read only on the table-in-panel path, the one that used to build a new object every
480
+ // render; elsewhere both arms are already identical. Control keeps the copy-per-render
481
+ // behaviour, which is what makes `renderDocument`'s validation memo miss.
482
+ const validationOverrides = stableValidationOverrides.allowTableInPanel && !isExperimentEnabled('platform_editor_adf_validator_perf') ? {
483
+ ...stableValidationOverrides
484
+ } : stableValidationOverrides;
465
485
  try {
466
486
  var _rendererContext$feat, _props$media;
467
487
  const schema = getSchema(props.schema, props.adfStage);
468
- const allowTableInPanel = isPanelNestingTableSupported(schema);
469
- const validationOverrides = allowTableInPanel ? {
470
- ...props.validationOverrides,
471
- allowTableInPanel: true
472
- } : props.validationOverrides;
473
488
  const {
474
489
  result,
475
490
  stat,
@@ -585,9 +600,6 @@ export function Renderer(props) {
585
600
  skipValidation,
586
601
  allowNestedTables
587
602
  } = useContext(ValidationContext) || {};
588
- const validationOverrides = useMemo(() => ({
589
- allowNestedTables
590
- }), [allowNestedTables]);
591
603
  return jsx(RendererFunctionalComponentWithPortalContext
592
604
  // Ignored via go/ees005
593
605
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -595,7 +607,7 @@ export function Renderer(props) {
595
607
  startPos: startPos,
596
608
  isTopLevelRenderer: (_props$isTopLevelRend = props.isTopLevelRenderer) !== null && _props$isTopLevelRend !== void 0 ? _props$isTopLevelRend : isTopLevelRenderer,
597
609
  skipValidation: skipValidation,
598
- validationOverrides: validationOverrides
610
+ allowNestedTables: allowNestedTables
599
611
  }));
600
612
  }
601
613
 
@@ -6,6 +6,7 @@
6
6
  ._13n84jg8.ak-editor-panel{align-items:normal}
7
7
  ._1554u2gc.ak-editor-panel{padding-top:var(--ds-space-100,8px)}
8
8
  ._15sp1vk5.ak-editor-panel[data-panel-type=error]{background-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
9
+ ._18hz1vk5.ak-editor-panel[data-panel-type=error]{--ak-renderer-panel-bg-color:var(--ds-background-accent-red-subtlest,#ffeceb)}
9
10
  ._18w0h2mm.ak-editor-panel{position:relative}
10
11
  ._18y8qm1h.ak-editor-panel[data-panel-type=note] .ak-editor-panel__icon{color:var(--ds-icon-discovery,#af59e1)}
11
12
  ._19agidpf.ak-editor-panel .ak-editor-panel__content{flex-shrink:0}
@@ -37,18 +38,24 @@
37
38
  ._66ohu2gc.ak-editor-panel{padding-left:var(--ds-space-100,8px)}
38
39
  ._6qwr1hna.ak-editor-panel{word-break:break-word}
39
40
  ._7c6p1t9x.ak-editor-panel .ak-editor-panel__icon .emoji-common-emoji-image{vertical-align:var(--_1glv3p1)}
41
+ ._93eu1aok.ak-editor-panel[data-panel-type=custom]{--ak-renderer-panel-bg-color:var(--ak-renderer-panel-custom-bg-color)}
40
42
  ._9dunutpp.ak-editor-panel__no-icon{padding-left:var(--ds-space-150,9pt)}
43
+ ._a9e5p2ly.ak-editor-panel[data-panel-type=note]{--ak-renderer-panel-bg-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
41
44
  ._e5ovn729.ak-editor-panel[data-panel-type=tip]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
45
+ ._eba1ibhp.ak-editor-panel[data-panel-type=warning]{--ak-renderer-panel-bg-color:var(--ds-background-accent-yellow-subtlest,#fef7c8)}
42
46
  ._fc9iidpf.ak-editor-panel .ak-editor-panel__content{min-width:0}
43
47
  ._g8a34pcx.ak-editor-panel[data-panel-type=tip] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
44
48
  ._gb1eidpf.ak-editor-panel .ak-editor-panel__content{margin-left:0}
49
+ ._giv8n729.ak-editor-panel[data-panel-type=success]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
45
50
  ._gt7x4pcx.ak-editor-panel[data-panel-type=success] .ak-editor-panel__icon{color:var(--ds-icon-success,#6a9a23)}
46
51
  ._iqv91kw7.ak-editor-panel{color:inherit}
47
52
  ._jde2v77o.ak-editor-panel .ak-editor-panel__content{margin-top:var(--ds-space-025,2px)}
53
+ ._niep1s93.ak-editor-panel{--ak-renderer-panel-bg-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
48
54
  ._nlelp2ly.ak-editor-panel[data-panel-type=note]{background-color:var(--ds-background-accent-purple-subtlest,#f8eefe)}
49
55
  ._pzbautpp.ak-editor-panel__no-icon{padding-right:var(--ds-space-150,9pt)}
50
56
  ._s4ldn729.ak-editor-panel[data-panel-type=success]{background-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
51
57
  ._ujht1s93.ak-editor-panel{background-color:var(--ds-background-accent-blue-subtlest,#e9f2fe)}
58
+ ._vy90n729.ak-editor-panel[data-panel-type=tip]{--ak-renderer-panel-bg-color:var(--ds-background-accent-green-subtlest,#dcfff1)}
52
59
  ._wz94glyw.ak-editor-panel .ak-editor-panel__icon{-moz-user-select:none}
53
60
  ._zs6jglyw.ak-editor-panel .ak-editor-panel__icon{-webkit-user-select:none}
54
61
  @-moz-document url-prefix(){._udsa1o8l.ak-editor-panel .ak-editor-panel__icon .emoji-common-emoji-image img{display:inline-block}}
@@ -26,6 +26,7 @@ var panelEmojiImageVerticalAlignment = panelEmojiSpriteVerticalAlignment - 1;
26
26
  var blockNodesVerticalMargin = '0.75rem';
27
27
  var akEditorTableCellMinWidth = 48;
28
28
  var panelBaseStyles = null;
29
+ var panelBackgroundColorVariableStyles = null;
29
30
  var panelHasNoIconStyles = null;
30
31
  var panelInfoIconStyles = null;
31
32
  var panelNestedIconStyles = null;
@@ -40,7 +41,7 @@ var PanelStyledCompiled = function PanelStyledCompiled(_ref) {
40
41
  var customBackgroundColor = backgroundColor ? hexToEditorBackgroundPaletteColor(backgroundColor) || backgroundColor : undefined;
41
42
  return /*#__PURE__*/React.createElement("div", _extends({}, props, {
42
43
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- intentional: preserve existing PanelSharedCssClassName.prefix class
43
- className: ax(["_lklzfajl _imyb1bbz _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3jmsf _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hauowts _7c6p1t9x _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
44
+ className: ax(["_lklzfajl _imyb1bbz _50vakb7n _19agidpf _1q6xf1ug _jde2v77o _1bi2v77o _gb1eidpf _11k7idpf _fc9iidpf _1554u2gc _1eiopxbi _1w22u2gc _66ohu2gc _1it3jmsf _19s71txw _18w0h2mm _13n84jg8 _6qwr1hna _ujht1s93 _iqv91kw7 _1l9midpf _1v1c1ejb _11wb1ejb _1oah1ntv _1pciu2gc _1cgk1h6o _5zphglyw _wz94glyw _zs6jglyw _1n3wglyw _1yw1vq3b _1h33yhbg _1a3fnkob _1uvd116y _1hauowts _7c6p1t9x _udsa1o8l _nlelp2ly _18y8qm1h _e5ovn729 _g8a34pcx _1g6dibhp _1udservl _15sp1vk5 _1fe7s4qr _s4ldn729 _gt7x4pcx", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && "_niep1s93 _a9e5p2ly _giv8n729 _vy90n729 _eba1ibhp _18hz1vk5 _93eu1aok", expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && "_19mdyhbg", !hasIcon && "_1whxutpp _1b0jutpp", props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && "_122m1aok", "_9dunutpp _pzbautpp", "_1wvnia51", className]),
44
45
  style: _objectSpread(_objectSpread({}, {
45
46
  // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- intentional: custom panel background is dynamic via CSS variable
46
47
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
@@ -129,6 +129,32 @@ var panelBaseStyles = css({
129
129
  }
130
130
  }
131
131
  });
132
+ var panelBackgroundColorVariableStyles = css({
133
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
134
+ '&.ak-editor-panel': {
135
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-blue-subtlest, #E9F2FE)",
136
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
137
+ '&[data-panel-type="note"]': {
138
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-purple-subtlest, #F8EEFE)"
139
+ },
140
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
141
+ '&[data-panel-type="tip"], &[data-panel-type="success"]': {
142
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-green-subtlest, #DCFFF1)"
143
+ },
144
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
145
+ '&[data-panel-type="warning"]': {
146
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-yellow-subtlest, #FEF7C8)"
147
+ },
148
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
149
+ '&[data-panel-type="error"]': {
150
+ '--ak-renderer-panel-bg-color': "var(--ds-background-accent-red-subtlest, #FFECEB)"
151
+ },
152
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
153
+ '&[data-panel-type="custom"]': {
154
+ '--ak-renderer-panel-bg-color': 'var(--ak-renderer-panel-custom-bg-color)'
155
+ }
156
+ }
157
+ });
132
158
  var panelHasNoIconStyles = css({
133
159
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
134
160
  '&.ak-editor-panel': {
@@ -181,7 +207,7 @@ var PanelStyledEmotion = function PanelStyledEmotion(_ref) {
181
207
  {
182
208
  '--ak-renderer-panel-custom-bg-color': customBackgroundColor
183
209
  },
184
- css: [panelBaseStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
210
+ css: [panelBaseStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && panelBackgroundColorVariableStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_2') && panelInfoIconStyles, !hasIcon && panelHasNoIconStyles, props['data-panel-type'] === PanelType.CUSTOM && backgroundColor && panelCustomBackground, panelNestedIconStyles, nestedPanelStyles]
185
211
  // Ignored via go/ees005
186
212
  // eslint-disable-next-line react/jsx-props-no-spreading
187
213
  }, props), props.children);
@@ -11,6 +11,7 @@ import React from 'react';
11
11
  import { jsx, css } from '@emotion/react';
12
12
  import { TableSharedCssClassName } from '@atlaskit/editor-common/styles';
13
13
  import { akEditorStickyHeaderZIndex } from '@atlaskit/editor-shared-styles';
14
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
14
15
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
15
16
  import { Table } from './table';
16
17
  import { recursivelyInjectProps } from '../../utils/inject-props';
@@ -32,6 +33,17 @@ var suppressExternalStickStyles = css({
32
33
  background: "var(--ds-surface, #FFFFFF)"
33
34
  }
34
35
  });
36
+ var panelAwareStickyTableStyles = css(_defineProperty(_defineProperty(_defineProperty({
37
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Override external renderer wrapper styles targeting div[mode='stick']
38
+ "&.fixed-table-div-custom-table-resizing[mode='stick']": {
39
+ background: "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")
40
+ }
41
+ }, "& .".concat(TableSharedCssClassName.TABLE_CONTAINER, ", & .").concat(TableSharedCssClassName.TABLE_STICKY_WRAPPER, " > table"), {
42
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
43
+ tr: {
44
+ background: "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")
45
+ }
46
+ }), "borderTopColor", "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface, #FFFFFF)", ")")), "background", "var(--ak-renderer-panel-bg-color, ".concat("var(--ds-surface-overlay, #FFFFFF)", ")")));
35
47
 
36
48
  // refactored based on fixedTableDivStaticStyles
37
49
  // TODO: DSP-4123 - Quality ticket
@@ -72,7 +84,7 @@ var FixedTableDiv = function FixedTableDiv(props) {
72
84
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
73
85
  ,
74
86
  className: allowTableResizing ? 'fixed-table-div-custom-table-resizing' : '',
75
- css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles],
87
+ css: [fixedTableDivStaticStyles, modeSpecficStyles === null || modeSpecficStyles === void 0 ? void 0 : modeSpecficStyles[mode], expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && suppressExternalStickStyles, expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) && fg('platform_editor_nest_table_in_panel_patch_3') && panelAwareStickyTableStyles],
76
88
  style: {
77
89
  '--ak-renderer-sticky-header-zindex': stickyHeaderZIndex,
78
90
  width: "".concat(wrapperWidth, "px"),
@@ -23,6 +23,7 @@ import { getDistortedDurationMonitor } from '@atlaskit/editor-common/performance
23
23
  import { getResponseEndTime } from '@atlaskit/editor-common/performance/navigation';
24
24
  import { useScrollToBlock } from '../hooks/useScrollToBlock';
25
25
  import { getAnalyticsAppearance, getAnalyticsEventSeverity, shouldForceTracking } from '@atlaskit/editor-common/utils';
26
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
26
27
  import { fg } from '@atlaskit/platform-feature-flags';
27
28
  import { FabricChannel } from '@atlaskit/analytics-listeners/types';
28
29
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
@@ -64,7 +65,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
64
65
  var TABLE_INFO_TIMEOUT = 10000;
65
66
  var RENDER_EVENT_SAMPLE_RATE = 0.1;
66
67
  var packageName = "@atlaskit/renderer";
67
- var packageVersion = "136.1.7";
68
+ var packageVersion = "136.2.1";
68
69
  var setAsQueryContainerStyles = css({
69
70
  containerName: 'ak-renderer-wrapper',
70
71
  containerType: 'inline-size'
@@ -464,13 +465,24 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
464
465
  }, [props.featureFlags, props.isTopLevelRenderer, createRendererContext, props.timeZone]);
465
466
  var isCollapsibleHeadingsEnabled = props.allowCollapsibleHeadings === true && ['full-page', 'full-width', 'max'].includes(props.appearance || '') && rendererContext.isTopLevelRenderer && expValEquals('platform_renderer_collapsible_headings', 'isEnabled', true);
466
467
  useScrollToBlock(editorRef, props.document, props.scrollToBlock);
468
+ var allowNestedTables = props.allowNestedTables;
469
+ var stableValidationOverrides = useMemo(function () {
470
+ var schema = getSchema(props.schema, props.adfStage);
471
+ return isPanelNestingTableSupported(schema) ? {
472
+ allowNestedTables: allowNestedTables,
473
+ allowTableInPanel: true
474
+ } : {
475
+ allowNestedTables: allowNestedTables
476
+ };
477
+ }, [allowNestedTables, getSchema, props.schema, props.adfStage]);
478
+
479
+ // Gate read only on the table-in-panel path, the one that used to build a new object every
480
+ // render; elsewhere both arms are already identical. Control keeps the copy-per-render
481
+ // behaviour, which is what makes `renderDocument`'s validation memo miss.
482
+ var validationOverrides = stableValidationOverrides.allowTableInPanel && !isExperimentEnabled('platform_editor_adf_validator_perf') ? _objectSpread({}, stableValidationOverrides) : stableValidationOverrides;
467
483
  try {
468
484
  var _rendererContext$feat, _props$media;
469
485
  var schema = getSchema(props.schema, props.adfStage);
470
- var allowTableInPanel = isPanelNestingTableSupported(schema);
471
- var validationOverrides = allowTableInPanel ? _objectSpread(_objectSpread({}, props.validationOverrides), {}, {
472
- allowTableInPanel: true
473
- }) : props.validationOverrides;
474
486
  var _renderDocument = renderDocument(props.shouldRemoveEmptySpaceAroundContent ? removeEmptySpaceAroundContent(props.document) : props.document, serializer, schema, props.adfStage, props.useSpecBasedValidator, id, _fireAnalyticsEvent, props.unsupportedContentLevelsTracking, props.appearance, props.includeNodesCountInStats, props.skipValidation, validationOverrides),
475
487
  result = _renderDocument.result,
476
488
  stat = _renderDocument.stat,
@@ -586,11 +598,6 @@ export function Renderer(props) {
586
598
  var _ref = useContext(ValidationContext) || {},
587
599
  skipValidation = _ref.skipValidation,
588
600
  allowNestedTables = _ref.allowNestedTables;
589
- var validationOverrides = useMemo(function () {
590
- return {
591
- allowNestedTables: allowNestedTables
592
- };
593
- }, [allowNestedTables]);
594
601
  return jsx(RendererFunctionalComponentWithPortalContext
595
602
  // Ignored via go/ees005
596
603
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -598,7 +605,7 @@ export function Renderer(props) {
598
605
  startPos: startPos,
599
606
  isTopLevelRenderer: (_props$isTopLevelRend = props.isTopLevelRenderer) !== null && _props$isTopLevelRend !== void 0 ? _props$isTopLevelRend : isTopLevelRenderer,
600
607
  skipValidation: skipValidation,
601
- validationOverrides: validationOverrides
608
+ allowNestedTables: allowNestedTables
602
609
  }));
603
610
  }
604
611
 
@@ -10,11 +10,9 @@ import type { RendererAppearance, RendererContentMode } from './types';
10
10
  export declare const NORMAL_SEVERITY_THRESHOLD = 2000;
11
11
  export declare const DEGRADED_SEVERITY_THRESHOLD = 3000;
12
12
  export declare const RendererFunctionalComponent: (props: RendererProps & {
13
+ allowNestedTables?: boolean;
13
14
  skipValidation?: boolean;
14
15
  startPos?: number;
15
- validationOverrides?: {
16
- allowNestedTables?: boolean;
17
- };
18
16
  }) => jsx.JSX.Element;
19
17
  /**
20
18
  * Top-level ADF renderer: renders document content with analytics and validation context.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "136.2.0",
3
+ "version": "136.2.2",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -58,7 +58,7 @@
58
58
  "@atlaskit/media-client-react": "^6.2.0",
59
59
  "@atlaskit/media-common": "^14.5.0",
60
60
  "@atlaskit/media-filmstrip": "^52.3.0",
61
- "@atlaskit/media-ui": "^30.12.0",
61
+ "@atlaskit/media-ui": "^30.13.0",
62
62
  "@atlaskit/media-viewer": "^54.6.0",
63
63
  "@atlaskit/platform-feature-experiments": "^0.3.0",
64
64
  "@atlaskit/platform-feature-flags": "^2.1.0",
@@ -85,7 +85,7 @@
85
85
  "uuid": "^3.1.0"
86
86
  },
87
87
  "peerDependencies": {
88
- "@atlaskit/editor-common": "^119.13.0",
88
+ "@atlaskit/editor-common": "^119.15.0",
89
89
  "@atlaskit/link-provider": "^5.4.0",
90
90
  "@atlaskit/media-core": "^38.0.0",
91
91
  "react": "^18.2.0",
@@ -206,6 +206,9 @@
206
206
  "platform_editor_nest_table_in_panel_patch_2": {
207
207
  "type": "boolean"
208
208
  },
209
+ "platform_editor_nest_table_in_panel_patch_3": {
210
+ "type": "boolean"
211
+ },
209
212
  "confluence_frontend_fix_view_page_slo": {
210
213
  "type": "boolean"
211
214
  },