@atlaskit/renderer 114.13.0 → 114.13.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,14 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 114.13.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#148536](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/148536)
8
+ [`da7c16d27cfcc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/da7c16d27cfcc) -
9
+ Update fragment serializer logic
10
+ - Updated dependencies
11
+
3
12
  ## 114.13.0
4
13
 
5
14
  ### Minor Changes
@@ -48,6 +48,7 @@ var _ValidationContext = require("./ValidationContext");
48
48
  var _RendererStyleContainer = require("./RendererStyleContainer");
49
49
  var _getBaseFontSize = require("./get-base-font-size");
50
50
  var _rendererHelper = require("./rendererHelper");
51
+ var _useMemoFromPropsDerivative = require("./useMemoFromPropsDerivative");
51
52
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
52
53
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
53
54
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -59,7 +60,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
59
60
  var NORMAL_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = 2000;
60
61
  var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
61
62
  var packageName = "@atlaskit/renderer";
62
- var packageVersion = "114.13.0";
63
+ var packageVersion = "114.13.1";
63
64
  var setAsQueryContainerStyles = (0, _react2.css)({
64
65
  containerName: 'ak-renderer-wrapper',
65
66
  containerType: 'inline-size',
@@ -207,13 +208,14 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
207
208
  exposure: true
208
209
  }) ? fireAnalyticsEventNew : fireAnalyticsEventOld;
209
210
  var deriveSerializerProps = (0, _react.useCallback)(function (props) {
211
+ var _props$startPos;
210
212
  var stickyHeaders = props.stickyHeaders ? props.stickyHeaders === true ? {} : props.stickyHeaders : undefined;
211
213
  var annotationProvider = props.annotationProvider;
212
214
  var allowAnnotationsDraftMode = Boolean(annotationProvider && annotationProvider.inlineComment && annotationProvider.inlineComment.allowDraftMode);
213
215
  var _createRendererContex = createRendererContext(props.featureFlags, props.isTopLevelRenderer),
214
216
  featureFlags = _createRendererContex.featureFlags;
215
217
  return {
216
- startPos: props.startPos,
218
+ startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0,
217
219
  providers: providerFactory,
218
220
  eventHandlers: props.eventHandlers,
219
221
  extensionHandlers: props.extensionHandlers,
@@ -252,20 +254,11 @@ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function
252
254
  allowTableResizing: props.UNSTABLE_allowTableResizing
253
255
  };
254
256
  }, [createRendererContext, providerFactory, _fireAnalyticsEvent]);
255
- var serializer = (0, _react.useMemo)(function () {
256
- var _props$startPos;
257
- var init = deriveSerializerProps(_objectSpread(_objectSpread({}, props), {}, {
258
- startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0
259
- }));
260
- if ((0, _platformFeatureFlags.fg)('cc_complexit_fe_progressive_adf_rendering')) {
261
- var _props$createSerializ;
262
- var newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
263
- if (newSerializer) {
264
- return newSerializer;
265
- }
266
- }
267
- return new _.ReactSerializer(init);
268
- }, [deriveSerializerProps, props]);
257
+
258
+ // Abstract out the logic into its own function
259
+ var serializer = (0, _useMemoFromPropsDerivative.useMemoFromPropsDerivative)(function (serializerProps) {
260
+ return new _.ReactSerializer(serializerProps);
261
+ }, deriveSerializerProps, props);
269
262
  var localRef = (0, _react.useRef)(null);
270
263
  var editorRef = props.innerRef || localRef;
271
264
  var id = (0, _react.useMemo)(function () {
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useMemoFromPropsDerivative = useMemoFromPropsDerivative;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
+ function useMemoFromPropsDerivative(factory, propsDerivator, props) {
12
+ // cache the last set of props
13
+ var prev = (0, _react.useRef)(props);
14
+ var prevFactory = (0, _react.useRef)(null);
15
+ return (0, _react.useMemo)(function () {
16
+ var init = propsDerivator(props);
17
+ if ((0, _platformFeatureFlags.fg)('cc_complexit_fe_reduce_fragment_serialization')) {
18
+ // check if the serializer is already created
19
+ var shouldCreate = !prevFactory.current;
20
+ // check each prop to see if value has changed and also check if the number of props has changed
21
+ if (prev.current !== props) {
22
+ // @ts-ignore - error TS2769: No overload matches this call.
23
+ var propsEntries = Object.entries(props);
24
+ // Break these into its own const to skip TS checks.
25
+ // @ts-ignore - error TS2769: No overload matches this call.
26
+ var isLengthDifferent = propsEntries.length !== Object.keys(prev.current).length;
27
+ // @ts-ignore
28
+ var isValueDifferent = propsEntries.some(function (_ref) {
29
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
30
+ key = _ref2[0],
31
+ prop = _ref2[1];
32
+ return prev.current[key] !== prop;
33
+ });
34
+ shouldCreate = isLengthDifferent || isValueDifferent;
35
+ }
36
+ prev.current = props;
37
+ // If first time or any prop value has changed, create a new serializer
38
+ if (shouldCreate) {
39
+ prevFactory.current = factory(init);
40
+ }
41
+ }
42
+
43
+ // If progressive rendering is enabled, create a new serializer
44
+ if ((0, _platformFeatureFlags.fg)('cc_complexit_fe_progressive_adf_rendering')) {
45
+ var _props$createSerializ;
46
+ // @ts-ignore - erorr TS2339 Property 'createSerializer' does not exist on type 'Props'.
47
+ var newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
48
+ if (newSerializer) {
49
+ return newSerializer;
50
+ }
51
+ }
52
+ return (0, _platformFeatureFlags.fg)('cc_complexit_fe_reduce_fragment_serialization') ? prevFactory.current : factory(init);
53
+ },
54
+ // To keep deps consistent, here disable the exhaustive-deps rule to drop factory from the deps array
55
+ // eslint-disable-next-line react-hooks/exhaustive-deps
56
+ [propsDerivator, props]);
57
+ }
@@ -43,10 +43,11 @@ import { ValidationContext } from './ValidationContext';
43
43
  import { RendererStyleContainer } from './RendererStyleContainer';
44
44
  import { getBaseFontSize } from './get-base-font-size';
45
45
  import { removeEmptySpaceAroundContent } from './rendererHelper';
46
+ import { useMemoFromPropsDerivative } from './useMemoFromPropsDerivative';
46
47
  export const NORMAL_SEVERITY_THRESHOLD = 2000;
47
48
  export const DEGRADED_SEVERITY_THRESHOLD = 3000;
48
49
  const packageName = "@atlaskit/renderer";
49
- const packageVersion = "114.13.0";
50
+ const packageVersion = "114.13.1";
50
51
  const setAsQueryContainerStyles = css({
51
52
  containerName: 'ak-renderer-wrapper',
52
53
  containerType: 'inline-size',
@@ -196,6 +197,7 @@ export const RendererFunctionalComponent = props => {
196
197
  exposure: true
197
198
  }) ? fireAnalyticsEventNew : fireAnalyticsEventOld;
198
199
  const deriveSerializerProps = useCallback(props => {
200
+ var _props$startPos;
199
201
  const stickyHeaders = props.stickyHeaders ? props.stickyHeaders === true ? {} : props.stickyHeaders : undefined;
200
202
  const {
201
203
  annotationProvider
@@ -205,7 +207,7 @@ export const RendererFunctionalComponent = props => {
205
207
  featureFlags
206
208
  } = createRendererContext(props.featureFlags, props.isTopLevelRenderer);
207
209
  return {
208
- startPos: props.startPos,
210
+ startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0,
209
211
  providers: providerFactory,
210
212
  eventHandlers: props.eventHandlers,
211
213
  extensionHandlers: props.extensionHandlers,
@@ -245,21 +247,9 @@ export const RendererFunctionalComponent = props => {
245
247
  allowTableResizing: props.UNSTABLE_allowTableResizing
246
248
  };
247
249
  }, [createRendererContext, providerFactory, fireAnalyticsEvent]);
248
- const serializer = useMemo(() => {
249
- var _props$startPos;
250
- const init = deriveSerializerProps({
251
- ...props,
252
- startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0
253
- });
254
- if (fg('cc_complexit_fe_progressive_adf_rendering')) {
255
- var _props$createSerializ;
256
- const newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
257
- if (newSerializer) {
258
- return newSerializer;
259
- }
260
- }
261
- return new ReactSerializer(init);
262
- }, [deriveSerializerProps, props]);
250
+
251
+ // Abstract out the logic into its own function
252
+ const serializer = useMemoFromPropsDerivative(serializerProps => new ReactSerializer(serializerProps), deriveSerializerProps, props);
263
253
  const localRef = useRef(null);
264
254
  const editorRef = props.innerRef || localRef;
265
255
  const id = useMemo(() => uuid(), []);
@@ -0,0 +1,44 @@
1
+ import { useMemo, useRef } from 'react';
2
+ import { fg } from '@atlaskit/platform-feature-flags';
3
+ export function useMemoFromPropsDerivative(factory, propsDerivator, props) {
4
+ // cache the last set of props
5
+ const prev = useRef(props);
6
+ const prevFactory = useRef(null);
7
+ return useMemo(() => {
8
+ const init = propsDerivator(props);
9
+ if (fg('cc_complexit_fe_reduce_fragment_serialization')) {
10
+ // check if the serializer is already created
11
+ let shouldCreate = !prevFactory.current;
12
+ // check each prop to see if value has changed and also check if the number of props has changed
13
+ if (prev.current !== props) {
14
+ // @ts-ignore - error TS2769: No overload matches this call.
15
+ const propsEntries = Object.entries(props);
16
+ // Break these into its own const to skip TS checks.
17
+ // @ts-ignore - error TS2769: No overload matches this call.
18
+ const isLengthDifferent = propsEntries.length !== Object.keys(prev.current).length;
19
+ // @ts-ignore
20
+ const isValueDifferent = propsEntries.some(([key, prop]) => prev.current[key] !== prop);
21
+ shouldCreate = isLengthDifferent || isValueDifferent;
22
+ }
23
+ prev.current = props;
24
+ // If first time or any prop value has changed, create a new serializer
25
+ if (shouldCreate) {
26
+ prevFactory.current = factory(init);
27
+ }
28
+ }
29
+
30
+ // If progressive rendering is enabled, create a new serializer
31
+ if (fg('cc_complexit_fe_progressive_adf_rendering')) {
32
+ var _props$createSerializ;
33
+ // @ts-ignore - erorr TS2339 Property 'createSerializer' does not exist on type 'Props'.
34
+ const newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
35
+ if (newSerializer) {
36
+ return newSerializer;
37
+ }
38
+ }
39
+ return fg('cc_complexit_fe_reduce_fragment_serialization') ? prevFactory.current : factory(init);
40
+ },
41
+ // To keep deps consistent, here disable the exhaustive-deps rule to drop factory from the deps array
42
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
+ [propsDerivator, props]);
44
+ }
@@ -46,10 +46,11 @@ import { ValidationContext } from './ValidationContext';
46
46
  import { RendererStyleContainer } from './RendererStyleContainer';
47
47
  import { getBaseFontSize } from './get-base-font-size';
48
48
  import { removeEmptySpaceAroundContent } from './rendererHelper';
49
+ import { useMemoFromPropsDerivative } from './useMemoFromPropsDerivative';
49
50
  export var NORMAL_SEVERITY_THRESHOLD = 2000;
50
51
  export var DEGRADED_SEVERITY_THRESHOLD = 3000;
51
52
  var packageName = "@atlaskit/renderer";
52
- var packageVersion = "114.13.0";
53
+ var packageVersion = "114.13.1";
53
54
  var setAsQueryContainerStyles = css({
54
55
  containerName: 'ak-renderer-wrapper',
55
56
  containerType: 'inline-size',
@@ -197,13 +198,14 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
197
198
  exposure: true
198
199
  }) ? fireAnalyticsEventNew : fireAnalyticsEventOld;
199
200
  var deriveSerializerProps = useCallback(function (props) {
201
+ var _props$startPos;
200
202
  var stickyHeaders = props.stickyHeaders ? props.stickyHeaders === true ? {} : props.stickyHeaders : undefined;
201
203
  var annotationProvider = props.annotationProvider;
202
204
  var allowAnnotationsDraftMode = Boolean(annotationProvider && annotationProvider.inlineComment && annotationProvider.inlineComment.allowDraftMode);
203
205
  var _createRendererContex = createRendererContext(props.featureFlags, props.isTopLevelRenderer),
204
206
  featureFlags = _createRendererContex.featureFlags;
205
207
  return {
206
- startPos: props.startPos,
208
+ startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0,
207
209
  providers: providerFactory,
208
210
  eventHandlers: props.eventHandlers,
209
211
  extensionHandlers: props.extensionHandlers,
@@ -242,20 +244,11 @@ export var RendererFunctionalComponent = function RendererFunctionalComponent(pr
242
244
  allowTableResizing: props.UNSTABLE_allowTableResizing
243
245
  };
244
246
  }, [createRendererContext, providerFactory, _fireAnalyticsEvent]);
245
- var serializer = useMemo(function () {
246
- var _props$startPos;
247
- var init = deriveSerializerProps(_objectSpread(_objectSpread({}, props), {}, {
248
- startPos: (_props$startPos = props.startPos) !== null && _props$startPos !== void 0 ? _props$startPos : 0
249
- }));
250
- if (fg('cc_complexit_fe_progressive_adf_rendering')) {
251
- var _props$createSerializ;
252
- var newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
253
- if (newSerializer) {
254
- return newSerializer;
255
- }
256
- }
257
- return new ReactSerializer(init);
258
- }, [deriveSerializerProps, props]);
247
+
248
+ // Abstract out the logic into its own function
249
+ var serializer = useMemoFromPropsDerivative(function (serializerProps) {
250
+ return new ReactSerializer(serializerProps);
251
+ }, deriveSerializerProps, props);
259
252
  var localRef = useRef(null);
260
253
  var editorRef = props.innerRef || localRef;
261
254
  var id = useMemo(function () {
@@ -0,0 +1,50 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useMemo, useRef } from 'react';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
4
+ export function useMemoFromPropsDerivative(factory, propsDerivator, props) {
5
+ // cache the last set of props
6
+ var prev = useRef(props);
7
+ var prevFactory = useRef(null);
8
+ return useMemo(function () {
9
+ var init = propsDerivator(props);
10
+ if (fg('cc_complexit_fe_reduce_fragment_serialization')) {
11
+ // check if the serializer is already created
12
+ var shouldCreate = !prevFactory.current;
13
+ // check each prop to see if value has changed and also check if the number of props has changed
14
+ if (prev.current !== props) {
15
+ // @ts-ignore - error TS2769: No overload matches this call.
16
+ var propsEntries = Object.entries(props);
17
+ // Break these into its own const to skip TS checks.
18
+ // @ts-ignore - error TS2769: No overload matches this call.
19
+ var isLengthDifferent = propsEntries.length !== Object.keys(prev.current).length;
20
+ // @ts-ignore
21
+ var isValueDifferent = propsEntries.some(function (_ref) {
22
+ var _ref2 = _slicedToArray(_ref, 2),
23
+ key = _ref2[0],
24
+ prop = _ref2[1];
25
+ return prev.current[key] !== prop;
26
+ });
27
+ shouldCreate = isLengthDifferent || isValueDifferent;
28
+ }
29
+ prev.current = props;
30
+ // If first time or any prop value has changed, create a new serializer
31
+ if (shouldCreate) {
32
+ prevFactory.current = factory(init);
33
+ }
34
+ }
35
+
36
+ // If progressive rendering is enabled, create a new serializer
37
+ if (fg('cc_complexit_fe_progressive_adf_rendering')) {
38
+ var _props$createSerializ;
39
+ // @ts-ignore - erorr TS2339 Property 'createSerializer' does not exist on type 'Props'.
40
+ var newSerializer = (_props$createSerializ = props.createSerializer) === null || _props$createSerializ === void 0 ? void 0 : _props$createSerializ.call(props, init);
41
+ if (newSerializer) {
42
+ return newSerializer;
43
+ }
44
+ }
45
+ return fg('cc_complexit_fe_reduce_fragment_serialization') ? prevFactory.current : factory(init);
46
+ },
47
+ // To keep deps consistent, here disable the exhaustive-deps rule to drop factory from the deps array
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ [propsDerivator, props]);
50
+ }
@@ -0,0 +1 @@
1
+ export declare function useMemoFromPropsDerivative<Memo, PropsDerivative, Props>(factory: (propsDerivative: PropsDerivative) => Memo, propsDerivator: (props: Props) => PropsDerivative, props: Props): any;
@@ -0,0 +1 @@
1
+ export declare function useMemoFromPropsDerivative<Memo, PropsDerivative, Props>(factory: (propsDerivative: PropsDerivative) => Memo, propsDerivator: (props: Props) => PropsDerivative, props: Props): any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "114.13.0",
3
+ "version": "114.13.1",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -31,7 +31,7 @@
31
31
  "@atlaskit/analytics-next": "^11.0.0",
32
32
  "@atlaskit/button": "^23.0.0",
33
33
  "@atlaskit/code": "^17.1.0",
34
- "@atlaskit/editor-common": "^103.22.0",
34
+ "@atlaskit/editor-common": "^103.24.0",
35
35
  "@atlaskit/editor-json-transformer": "^8.24.0",
36
36
  "@atlaskit/editor-palette": "^2.1.0",
37
37
  "@atlaskit/editor-prosemirror": "7.0.0",
@@ -51,7 +51,7 @@
51
51
  "@atlaskit/platform-feature-flags": "^1.1.0",
52
52
  "@atlaskit/platform-feature-flags-react": "^0.1.0",
53
53
  "@atlaskit/react-ufo": "^3.9.0",
54
- "@atlaskit/smart-card": "^36.13.0",
54
+ "@atlaskit/smart-card": "^36.14.0",
55
55
  "@atlaskit/status": "^3.0.0",
56
56
  "@atlaskit/task-decision": "^19.2.0",
57
57
  "@atlaskit/theme": "^18.0.0",
@@ -130,6 +130,9 @@
130
130
  "cc_perf_reduce_rerenders": {
131
131
  "type": "boolean"
132
132
  },
133
+ "cc_complexit_fe_reduce_fragment_serialization": {
134
+ "type": "boolean"
135
+ },
133
136
  "platform_renderer_annotations_create_debug_logging": {
134
137
  "type": "boolean"
135
138
  },
@@ -198,10 +201,6 @@
198
201
  "platform_editor_multi_body_extension_extensibility": {
199
202
  "type": "boolean"
200
203
  },
201
- "platform-smart-card-icon-migration": {
202
- "type": "boolean",
203
- "referenceOnly": true
204
- },
205
204
  "platform_editor_add_media_from_url_rollout": {
206
205
  "type": "boolean"
207
206
  },