@atlaskit/renderer 137.4.6 → 138.0.1

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,27 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 138.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`8d65b130dff43`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8d65b130dff43) -
8
+ Behind the `platform_renderer_on_complete_after_commit` experiment, `onComplete` is invoked from
9
+ an effect after the rendered document is committed instead of synchronously during render. Calling
10
+ it during render let consumers set state on other components mid-render, which React forbids and
11
+ which could feed a render loop on pages that never reached commit. With the experiment off the
12
+ callback fires exactly as before.
13
+ - Updated dependencies
14
+
15
+ ## 138.0.0
16
+
17
+ ### Patch Changes
18
+
19
+ - [`3422261e7a40e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3422261e7a40e) -
20
+ Clean up experiment `platform_editor_smartlink_local_cache`.
21
+ - [`7c7646bee3e68`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7c7646bee3e68) -
22
+ Clean up feature gate `platform_editor_table_height_analytics_event`
23
+ - Updated dependencies
24
+
3
25
  ## 137.4.6
4
26
 
5
27
  ### Patch Changes
@@ -202,7 +202,7 @@ var InlineCard = function InlineCard(props) {
202
202
  }
203
203
  };
204
204
  (0, _react.useEffect)(function () {
205
- if ((0, _expValEquals.expValEquals)('platform_editor_smartlink_local_cache', 'isEnabled', true) && url) {
205
+ if (url) {
206
206
  // Refresh cache in the background
207
207
  provider === null || provider === void 0 || provider.then(function (providerInstance) {
208
208
  var _refreshCache, _ref5;
@@ -217,7 +217,7 @@ var InlineCard = function InlineCard(props) {
217
217
  }
218
218
  }, [provider, url]);
219
219
  var MaybeOverlay = cardContext !== null && cardContext !== void 0 && cardContext.value ? OverlayWithCardContext : HoverLinkOverlayNoop;
220
- if ((ssr || cardState && (0, _expValEquals.expValEquals)('platform_editor_smartlink_local_cache', 'isEnabled', true)) && url) {
220
+ if ((ssr || cardState) && url) {
221
221
  if (
222
222
  // eslint-disable-next-line @atlaskit/platform/no-invalid-feature-flag-usage
223
223
  (0, _fg.fg)('editor_inline_comments_on_inline_nodes')) {
@@ -25,7 +25,6 @@ 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
27
  var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
28
- var _fg = require("@atlaskit/platform-feature-flags/fg");
29
28
  var _types = require("@atlaskit/analytics-listeners/types");
30
29
  var _FabricEditorAnalyticsContext = require("@atlaskit/analytics-namespaced-context/FabricEditorAnalyticsContext");
31
30
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -74,7 +73,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
74
73
  var TABLE_INFO_TIMEOUT = 10000;
75
74
  var RENDER_EVENT_SAMPLE_RATE = 0.1;
76
75
  var packageName = "@atlaskit/renderer";
77
- var packageVersion = "137.4.5";
76
+ var packageVersion = "138.0.0";
78
77
  var setAsQueryContainerStyles = (0, _react2.css)({
79
78
  containerName: 'ak-renderer-wrapper',
80
79
  containerType: 'inline-size'
@@ -425,11 +424,9 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
425
424
  if (payload) {
426
425
  _fireAnalyticsEvent(payload);
427
426
  }
428
- if ((0, _fg.fg)('platform_editor_table_height_analytics_event')) {
429
- var payloadHeight = (0, _analyticsUtils.getHeightInfoPayload)(renderer);
430
- if (payloadHeight) {
431
- _fireAnalyticsEvent(payloadHeight);
432
- }
427
+ var payloadHeight = (0, _analyticsUtils.getHeightInfoPayload)(renderer);
428
+ if (payloadHeight) {
429
+ _fireAnalyticsEvent(payloadHeight);
433
430
  }
434
431
  }
435
432
  };
@@ -489,6 +486,21 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
489
486
  // render; elsewhere both arms are already identical. Control keeps the copy-per-render
490
487
  // behaviour, which is what makes `renderDocument`'s validation memo miss.
491
488
  var validationOverrides = stableValidationOverrides.allowTableInPanel && !(0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_adf_validator_perf') ? _objectSpread({}, stableValidationOverrides) : stableValidationOverrides;
489
+
490
+ // Invoking `onComplete` during render lets consumers set state on other components mid-render,
491
+ // so the stat is parked here and delivered once the rendered document has been committed.
492
+ // No dependency array: `renderDocument` produces a new stat on every render, so the callback
493
+ // must run after every commit to keep its historical once-per-render cadence.
494
+ var pendingOnCompleteStatRef = (0, _react.useRef)(null);
495
+ var onComplete = props.onComplete;
496
+ (0, _react.useEffect)(function () {
497
+ var stat = pendingOnCompleteStatRef.current;
498
+ if (stat === null || !onComplete) {
499
+ return;
500
+ }
501
+ pendingOnCompleteStatRef.current = null;
502
+ onComplete(stat);
503
+ });
492
504
  try {
493
505
  var _rendererContext$feat, _props$media;
494
506
  var schema = getSchema(props.schema, props.adfStage);
@@ -497,7 +509,11 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
497
509
  stat = _renderDocument.stat,
498
510
  pmDoc = _renderDocument.pmDoc;
499
511
  if (props.onComplete) {
500
- props.onComplete(stat);
512
+ if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_renderer_on_complete_after_commit')) {
513
+ pendingOnCompleteStatRef.current = stat;
514
+ } else {
515
+ props.onComplete(stat);
516
+ }
501
517
  }
502
518
  var rendererOutput = (0, _react2.jsx)(_rendererContext.RendererContextProvider, {
503
519
  value: rendererContext
@@ -189,7 +189,7 @@ const InlineCard = props => {
189
189
  }
190
190
  };
191
191
  useEffect(() => {
192
- if (expValEquals('platform_editor_smartlink_local_cache', 'isEnabled', true) && url) {
192
+ if (url) {
193
193
  // Refresh cache in the background
194
194
  provider === null || provider === void 0 ? void 0 : provider.then(providerInstance => {
195
195
  var _refreshCache, _ref;
@@ -204,7 +204,7 @@ const InlineCard = props => {
204
204
  }
205
205
  }, [provider, url]);
206
206
  const MaybeOverlay = cardContext !== null && cardContext !== void 0 && cardContext.value ? OverlayWithCardContext : HoverLinkOverlayNoop;
207
- if ((ssr || cardState && expValEquals('platform_editor_smartlink_local_cache', 'isEnabled', true)) && url) {
207
+ if ((ssr || cardState) && url) {
208
208
  if (
209
209
  // eslint-disable-next-line @atlaskit/platform/no-invalid-feature-flag-usage
210
210
  fg('editor_inline_comments_on_inline_nodes')) {
@@ -19,7 +19,6 @@ import { getResponseEndTime } from '@atlaskit/editor-common/performance/navigati
19
19
  import { useScrollToBlock } from '../hooks/useScrollToBlock';
20
20
  import { getAnalyticsAppearance, getAnalyticsEventSeverity, shouldForceTracking } from '@atlaskit/editor-common/utils';
21
21
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
22
- import { fg } from '@atlaskit/platform-feature-flags/fg';
23
22
  import { FabricChannel } from '@atlaskit/analytics-listeners/types';
24
23
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context/FabricEditorAnalyticsContext';
25
24
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
@@ -60,7 +59,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
60
59
  const TABLE_INFO_TIMEOUT = 10000;
61
60
  const RENDER_EVENT_SAMPLE_RATE = 0.1;
62
61
  const packageName = "@atlaskit/renderer";
63
- const packageVersion = "137.4.5";
62
+ const packageVersion = "138.0.0";
64
63
  const setAsQueryContainerStyles = css({
65
64
  containerName: 'ak-renderer-wrapper',
66
65
  containerType: 'inline-size'
@@ -415,11 +414,9 @@ export const RendererFunctionalComponent = props => {
415
414
  if (payload) {
416
415
  fireAnalyticsEvent(payload);
417
416
  }
418
- if (fg('platform_editor_table_height_analytics_event')) {
419
- const payloadHeight = getHeightInfoPayload(renderer);
420
- if (payloadHeight) {
421
- fireAnalyticsEvent(payloadHeight);
422
- }
417
+ const payloadHeight = getHeightInfoPayload(renderer);
418
+ if (payloadHeight) {
419
+ fireAnalyticsEvent(payloadHeight);
423
420
  }
424
421
  }
425
422
  };
@@ -482,6 +479,23 @@ export const RendererFunctionalComponent = props => {
482
479
  const validationOverrides = stableValidationOverrides.allowTableInPanel && !isExperimentEnabled('platform_editor_adf_validator_perf') ? {
483
480
  ...stableValidationOverrides
484
481
  } : stableValidationOverrides;
482
+
483
+ // Invoking `onComplete` during render lets consumers set state on other components mid-render,
484
+ // so the stat is parked here and delivered once the rendered document has been committed.
485
+ // No dependency array: `renderDocument` produces a new stat on every render, so the callback
486
+ // must run after every commit to keep its historical once-per-render cadence.
487
+ const pendingOnCompleteStatRef = useRef(null);
488
+ const {
489
+ onComplete
490
+ } = props;
491
+ useEffect(() => {
492
+ const stat = pendingOnCompleteStatRef.current;
493
+ if (stat === null || !onComplete) {
494
+ return;
495
+ }
496
+ pendingOnCompleteStatRef.current = null;
497
+ onComplete(stat);
498
+ });
485
499
  try {
486
500
  var _rendererContext$feat, _props$media;
487
501
  const schema = getSchema(props.schema, props.adfStage);
@@ -491,7 +505,11 @@ export const RendererFunctionalComponent = props => {
491
505
  pmDoc
492
506
  } = 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);
493
507
  if (props.onComplete) {
494
- props.onComplete(stat);
508
+ if (isExperimentEnabled('platform_renderer_on_complete_after_commit')) {
509
+ pendingOnCompleteStatRef.current = stat;
510
+ } else {
511
+ props.onComplete(stat);
512
+ }
495
513
  }
496
514
  const rendererOutput = jsx(RendererContextProvider, {
497
515
  value: rendererContext
@@ -193,7 +193,7 @@ var InlineCard = function InlineCard(props) {
193
193
  }
194
194
  };
195
195
  useEffect(function () {
196
- if (expValEquals('platform_editor_smartlink_local_cache', 'isEnabled', true) && url) {
196
+ if (url) {
197
197
  // Refresh cache in the background
198
198
  provider === null || provider === void 0 || provider.then(function (providerInstance) {
199
199
  var _refreshCache, _ref5;
@@ -208,7 +208,7 @@ var InlineCard = function InlineCard(props) {
208
208
  }
209
209
  }, [provider, url]);
210
210
  var MaybeOverlay = cardContext !== null && cardContext !== void 0 && cardContext.value ? OverlayWithCardContext : HoverLinkOverlayNoop;
211
- if ((ssr || cardState && expValEquals('platform_editor_smartlink_local_cache', 'isEnabled', true)) && url) {
211
+ if ((ssr || cardState) && url) {
212
212
  if (
213
213
  // eslint-disable-next-line @atlaskit/platform/no-invalid-feature-flag-usage
214
214
  fg('editor_inline_comments_on_inline_nodes')) {
@@ -24,7 +24,6 @@ import { getResponseEndTime } from '@atlaskit/editor-common/performance/navigati
24
24
  import { useScrollToBlock } from '../hooks/useScrollToBlock';
25
25
  import { getAnalyticsAppearance, getAnalyticsEventSeverity, shouldForceTracking } from '@atlaskit/editor-common/utils';
26
26
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
27
- import { fg } from '@atlaskit/platform-feature-flags/fg';
28
27
  import { FabricChannel } from '@atlaskit/analytics-listeners/types';
29
28
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context/FabricEditorAnalyticsContext';
30
29
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
@@ -65,7 +64,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
65
64
  var TABLE_INFO_TIMEOUT = 10000;
66
65
  var RENDER_EVENT_SAMPLE_RATE = 0.1;
67
66
  var packageName = "@atlaskit/renderer";
68
- var packageVersion = "137.4.5";
67
+ var packageVersion = "138.0.0";
69
68
  var setAsQueryContainerStyles = css({
70
69
  containerName: 'ak-renderer-wrapper',
71
70
  containerType: 'inline-size'
@@ -416,11 +415,9 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
416
415
  if (payload) {
417
416
  _fireAnalyticsEvent(payload);
418
417
  }
419
- if (fg('platform_editor_table_height_analytics_event')) {
420
- var payloadHeight = getHeightInfoPayload(renderer);
421
- if (payloadHeight) {
422
- _fireAnalyticsEvent(payloadHeight);
423
- }
418
+ var payloadHeight = getHeightInfoPayload(renderer);
419
+ if (payloadHeight) {
420
+ _fireAnalyticsEvent(payloadHeight);
424
421
  }
425
422
  }
426
423
  };
@@ -480,6 +477,21 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
480
477
  // render; elsewhere both arms are already identical. Control keeps the copy-per-render
481
478
  // behaviour, which is what makes `renderDocument`'s validation memo miss.
482
479
  var validationOverrides = stableValidationOverrides.allowTableInPanel && !isExperimentEnabled('platform_editor_adf_validator_perf') ? _objectSpread({}, stableValidationOverrides) : stableValidationOverrides;
480
+
481
+ // Invoking `onComplete` during render lets consumers set state on other components mid-render,
482
+ // so the stat is parked here and delivered once the rendered document has been committed.
483
+ // No dependency array: `renderDocument` produces a new stat on every render, so the callback
484
+ // must run after every commit to keep its historical once-per-render cadence.
485
+ var pendingOnCompleteStatRef = useRef(null);
486
+ var onComplete = props.onComplete;
487
+ useEffect(function () {
488
+ var stat = pendingOnCompleteStatRef.current;
489
+ if (stat === null || !onComplete) {
490
+ return;
491
+ }
492
+ pendingOnCompleteStatRef.current = null;
493
+ onComplete(stat);
494
+ });
483
495
  try {
484
496
  var _rendererContext$feat, _props$media;
485
497
  var schema = getSchema(props.schema, props.adfStage);
@@ -488,7 +500,11 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
488
500
  stat = _renderDocument.stat,
489
501
  pmDoc = _renderDocument.pmDoc;
490
502
  if (props.onComplete) {
491
- props.onComplete(stat);
503
+ if (isExperimentEnabled('platform_renderer_on_complete_after_commit')) {
504
+ pendingOnCompleteStatRef.current = stat;
505
+ } else {
506
+ props.onComplete(stat);
507
+ }
492
508
  }
493
509
  var rendererOutput = jsx(RendererContextProvider, {
494
510
  value: rendererContext
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "137.4.6",
3
+ "version": "138.0.1",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,7 +30,7 @@
30
30
  }
31
31
  },
32
32
  "dependencies": {
33
- "@atlaskit/adf-schema": "^57.3.0",
33
+ "@atlaskit/adf-schema": "^57.4.0",
34
34
  "@atlaskit/adf-utils": "^20.9.0",
35
35
  "@atlaskit/afm-i18n-platform-editor-renderer": "2.200.0",
36
36
  "@atlaskit/analytics-listeners": "^11.3.0",
@@ -70,7 +70,7 @@
70
70
  "@atlaskit/status": "^5.9.0",
71
71
  "@atlaskit/task-decision": "^21.9.0",
72
72
  "@atlaskit/theme": "^28.2.0",
73
- "@atlaskit/tmp-editor-statsig": "^178.0.0",
73
+ "@atlaskit/tmp-editor-statsig": "^179.0.0",
74
74
  "@atlaskit/tokens": "^16.11.0",
75
75
  "@atlaskit/tooltip": "^24.3.0",
76
76
  "@atlaskit/visually-hidden": "^4.4.0",
@@ -85,7 +85,7 @@
85
85
  "uuid": "^11.1.1"
86
86
  },
87
87
  "peerDependencies": {
88
- "@atlaskit/editor-common": "^120.16.0",
88
+ "@atlaskit/editor-common": "^121.1.0",
89
89
  "@atlaskit/link-provider": "^5.5.0",
90
90
  "@atlaskit/media-core": "^38.2.0",
91
91
  "react": "^18.2.0",
@@ -97,7 +97,7 @@
97
97
  "@af/visual-regression": "workspace:^",
98
98
  "@atlaskit/analytics-gas-types": "^6.2.0",
99
99
  "@atlaskit/checkbox": "^19.2.0",
100
- "@atlaskit/editor-plugin-media": "^18.1.0",
100
+ "@atlaskit/editor-plugin-media": "^19.1.0",
101
101
  "@atlaskit/editor-test-helpers": "workspace:^",
102
102
  "@atlaskit/inline-edit": "^16.4.0",
103
103
  "@atlaskit/json-ld-types": "^2.0.0",
@@ -212,9 +212,6 @@
212
212
  "media-perf-uplift-mutation-fix": {
213
213
  "type": "boolean"
214
214
  },
215
- "platform_editor_table_height_analytics_event": {
216
- "type": "boolean"
217
- },
218
215
  "platform_fix_macro_renders_in_layouts": {
219
216
  "type": "boolean"
220
217
  },