@atlaskit/renderer 91.0.0 → 93.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/cjs/analytics/enums.js +2 -0
  3. package/dist/cjs/react/marks/alignment.js +11 -12
  4. package/dist/cjs/react/marks/breakout.js +7 -9
  5. package/dist/cjs/react/marks/link.js +13 -6
  6. package/dist/cjs/react/nodes/codeBlock.js +17 -16
  7. package/dist/cjs/react/nodes/codeBlockCopyButton.js +13 -11
  8. package/dist/cjs/react/nodes/embedCard.js +25 -33
  9. package/dist/cjs/react/nodes/heading-anchor.js +7 -6
  10. package/dist/cjs/react/nodes/heading.js +4 -2
  11. package/dist/cjs/react/nodes/layoutColumn.js +7 -2
  12. package/dist/cjs/react/nodes/media.js +7 -6
  13. package/dist/cjs/react/nodes/mediaSingle/index.js +15 -4
  14. package/dist/cjs/react/nodes/mediaSingle/styles.js +7 -10
  15. package/dist/cjs/react/nodes/panel.js +26 -16
  16. package/dist/cjs/react/nodes/table/sticky.js +63 -55
  17. package/dist/cjs/react/nodes/table.js +2 -10
  18. package/dist/cjs/react/utils/inject-props.js +33 -0
  19. package/dist/cjs/react/utils/performance/RenderTracking.js +52 -0
  20. package/dist/cjs/ui/Expand.js +52 -28
  21. package/dist/cjs/ui/MediaCard.js +4 -14
  22. package/dist/cjs/ui/Renderer/index.js +72 -64
  23. package/dist/cjs/ui/Renderer/style.js +62 -55
  24. package/dist/cjs/ui/Renderer/truncated-wrapper.js +19 -21
  25. package/dist/cjs/ui/SortingIcon.js +8 -9
  26. package/dist/cjs/ui/annotations/draft/component.js +22 -12
  27. package/dist/cjs/ui/annotations/element/mark.js +9 -5
  28. package/dist/cjs/ui/renderer-props.js +1 -3
  29. package/dist/cjs/version.json +1 -1
  30. package/dist/es2019/analytics/enums.js +2 -0
  31. package/dist/es2019/react/marks/alignment.js +15 -7
  32. package/dist/es2019/react/marks/breakout.js +6 -5
  33. package/dist/es2019/react/marks/link.js +8 -5
  34. package/dist/es2019/react/nodes/codeBlock.js +25 -23
  35. package/dist/es2019/react/nodes/codeBlockCopyButton.js +12 -9
  36. package/dist/es2019/react/nodes/embedCard.js +16 -16
  37. package/dist/es2019/react/nodes/heading-anchor.js +9 -6
  38. package/dist/es2019/react/nodes/heading.js +4 -2
  39. package/dist/es2019/react/nodes/layoutColumn.js +7 -3
  40. package/dist/es2019/react/nodes/media.js +9 -5
  41. package/dist/es2019/react/nodes/mediaSingle/index.js +10 -6
  42. package/dist/es2019/react/nodes/mediaSingle/styles.js +6 -7
  43. package/dist/es2019/react/nodes/panel.js +23 -16
  44. package/dist/es2019/react/nodes/table/sticky.js +55 -37
  45. package/dist/es2019/react/nodes/table.js +2 -5
  46. package/dist/es2019/react/utils/inject-props.js +24 -0
  47. package/dist/es2019/react/utils/performance/RenderTracking.js +37 -0
  48. package/dist/es2019/ui/Expand.js +65 -36
  49. package/dist/es2019/ui/MediaCard.js +3 -6
  50. package/dist/es2019/ui/Renderer/index.js +72 -57
  51. package/dist/es2019/ui/Renderer/style.js +370 -327
  52. package/dist/es2019/ui/Renderer/truncated-wrapper.js +26 -15
  53. package/dist/es2019/ui/SortingIcon.js +9 -7
  54. package/dist/es2019/ui/annotations/draft/component.js +18 -12
  55. package/dist/es2019/ui/annotations/element/mark.js +12 -6
  56. package/dist/es2019/ui/renderer-props.js +1 -1
  57. package/dist/es2019/version.json +1 -1
  58. package/dist/esm/analytics/enums.js +2 -0
  59. package/dist/esm/react/marks/alignment.js +13 -6
  60. package/dist/esm/react/marks/breakout.js +6 -5
  61. package/dist/esm/react/marks/link.js +7 -5
  62. package/dist/esm/react/nodes/codeBlock.js +18 -14
  63. package/dist/esm/react/nodes/codeBlockCopyButton.js +10 -7
  64. package/dist/esm/react/nodes/embedCard.js +19 -19
  65. package/dist/esm/react/nodes/heading-anchor.js +8 -6
  66. package/dist/esm/react/nodes/heading.js +4 -2
  67. package/dist/esm/react/nodes/layoutColumn.js +7 -3
  68. package/dist/esm/react/nodes/media.js +8 -5
  69. package/dist/esm/react/nodes/mediaSingle/index.js +11 -6
  70. package/dist/esm/react/nodes/mediaSingle/styles.js +5 -7
  71. package/dist/esm/react/nodes/panel.js +27 -15
  72. package/dist/esm/react/nodes/table/sticky.js +64 -53
  73. package/dist/esm/react/nodes/table.js +2 -8
  74. package/dist/esm/react/utils/inject-props.js +24 -0
  75. package/dist/esm/react/utils/performance/RenderTracking.js +39 -0
  76. package/dist/esm/ui/Expand.js +57 -29
  77. package/dist/esm/ui/MediaCard.js +3 -9
  78. package/dist/esm/ui/Renderer/index.js +74 -61
  79. package/dist/esm/ui/Renderer/style.js +58 -51
  80. package/dist/esm/ui/Renderer/truncated-wrapper.js +20 -14
  81. package/dist/esm/ui/SortingIcon.js +9 -7
  82. package/dist/esm/ui/annotations/draft/component.js +18 -11
  83. package/dist/esm/ui/annotations/element/mark.js +11 -4
  84. package/dist/esm/ui/renderer-props.js +1 -1
  85. package/dist/esm/version.json +1 -1
  86. package/dist/types/analytics/enums.d.ts +2 -0
  87. package/dist/types/analytics/events.d.ts +12 -2
  88. package/dist/types/react/marks/alignment.d.ts +2 -2
  89. package/dist/types/react/marks/breakout.d.ts +4 -3
  90. package/dist/types/react/marks/link.d.ts +2 -2
  91. package/dist/types/react/nodes/codeBlock.d.ts +4 -14
  92. package/dist/types/react/nodes/embedCard.d.ts +3 -2
  93. package/dist/types/react/nodes/heading-anchor.d.ts +1 -0
  94. package/dist/types/react/nodes/heading.d.ts +1 -0
  95. package/dist/types/react/nodes/index.d.ts +1 -13
  96. package/dist/types/react/nodes/layoutColumn.d.ts +3 -1
  97. package/dist/types/react/nodes/media.d.ts +3 -1
  98. package/dist/types/react/nodes/mediaSingle/index.d.ts +1 -0
  99. package/dist/types/react/nodes/mediaSingle/styles.d.ts +2 -3
  100. package/dist/types/react/nodes/panel.d.ts +3 -1
  101. package/dist/types/react/nodes/table/sticky.d.ts +4 -2
  102. package/dist/types/react/utils/inject-props.d.ts +6 -0
  103. package/dist/types/react/utils/performance/RenderTracking.d.ts +15 -0
  104. package/dist/types/ui/Expand.d.ts +3 -2
  105. package/dist/types/ui/MediaCard.d.ts +1 -3
  106. package/dist/types/ui/Renderer/index.d.ts +3 -26
  107. package/dist/types/ui/Renderer/style.d.ts +2 -3
  108. package/dist/types/ui/Renderer/truncated-wrapper.d.ts +3 -1
  109. package/dist/types/ui/SortingIcon.d.ts +3 -3
  110. package/dist/types/ui/annotations/draft/component.d.ts +1 -0
  111. package/dist/types/ui/annotations/element/mark.d.ts +1 -0
  112. package/dist/types/ui/renderer-props.d.ts +14 -2
  113. package/package.json +22 -23
@@ -1,20 +1,22 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import React, { useContext, useLayoutEffect, useRef } from 'react';
3
+
4
+ /** @jsx jsx */
5
+ import React, { Fragment, useContext, useLayoutEffect, useRef } from 'react';
6
+ import { jsx } from '@emotion/react';
4
7
  import { PureComponent } from 'react';
5
8
  import { getSchemaBasedOnStage } from '@atlaskit/adf-schema';
6
9
  import { reduce } from '@atlaskit/adf-utils';
7
10
  import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
8
- import { UnsupportedBlock, BaseTheme, WidthProvider, WithCreateAnalyticsEvent, LegacyToNextIntlProvider, IntlLegacyFallbackProvider, IntlNextErrorBoundary } from '@atlaskit/editor-common/ui';
9
- import { getAnalyticsAppearance, getAnalyticsEventSeverity, getResponseEndTime, startMeasure, stopMeasure, shouldForceTracking } from '@atlaskit/editor-common/utils';
11
+ import { UnsupportedBlock, BaseTheme, WidthProvider, WithCreateAnalyticsEvent, IntlErrorBoundary } from '@atlaskit/editor-common/ui';
12
+ import { getAnalyticsAppearance, getAnalyticsEventSeverity, getResponseEndTime, startMeasure, stopMeasure, shouldForceTracking, measureTTI } from '@atlaskit/editor-common/utils';
10
13
  import { normalizeFeatureFlags } from '@atlaskit/editor-common/normalize-feature-flags';
11
14
  import { akEditorFullPageDefaultFontSize } from '@atlaskit/editor-shared-styles';
12
- import { IframeWidthObserverFallbackWrapper, IframeWrapperConsumer } from '@atlaskit/width-detector';
13
15
  import { FabricChannel } from '@atlaskit/analytics-listeners';
14
16
  import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
15
17
  import uuid from 'uuid/v4';
16
18
  import { ReactSerializer, renderDocument } from '../../';
17
- import { Wrapper } from './style';
19
+ import { rendererStyles } from './style';
18
20
  import { TruncatedWrapper } from './truncated-wrapper';
19
21
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../../analytics/enums';
20
22
  import { PLATFORM, MODE } from '../../analytics/events';
@@ -32,15 +34,21 @@ import { isInteractiveElement } from './click-to-edit';
32
34
  import { RendererContextProvider } from '../../renderer-context';
33
35
  import memoizeOne from 'memoize-one';
34
36
  import { ErrorBoundary } from './ErrorBoundary';
37
+ import { RenderTracking } from '../../react/utils/performance/RenderTracking';
35
38
  export const NORMAL_SEVERITY_THRESHOLD = 2000;
36
39
  export const DEGRADED_SEVERITY_THRESHOLD = 3000;
37
40
  export class Renderer extends PureComponent {
38
41
  constructor(props) {
39
42
  super(props);
40
43
 
41
- _defineProperty(this, "featureFlags", memoizeOne(featureFlags => ({
42
- featureFlags: normalizeFeatureFlags(featureFlags)
43
- })));
44
+ _defineProperty(this, "featureFlags", memoizeOne(featureFlags => {
45
+ const normalizedFeatureFlags = normalizeFeatureFlags(featureFlags, {
46
+ objectFlagKeys: ['rendererRenderTracking']
47
+ });
48
+ return {
49
+ featureFlags: normalizedFeatureFlags
50
+ };
51
+ }));
44
52
 
45
53
  _defineProperty(this, "fireAnalyticsEvent", event => {
46
54
  const {
@@ -80,6 +88,22 @@ export class Renderer extends PureComponent {
80
88
  this.editorRef = props.innerRef || /*#__PURE__*/React.createRef();
81
89
  this.id = uuid();
82
90
  startMeasure(`Renderer Render Time: ${this.id}`);
91
+ const _featureFlags = this.featureFlags(this.props.featureFlags).featureFlags;
92
+
93
+ if (_featureFlags !== null && _featureFlags !== void 0 && _featureFlags.rendererTtiTracking) {
94
+ measureTTI((tti, ttiFromInvocation, canceled) => {
95
+ this.fireAnalyticsEvent({
96
+ action: ACTION.RENDERER_TTI,
97
+ actionSubject: ACTION_SUBJECT.RENDERER,
98
+ attributes: {
99
+ tti,
100
+ ttiFromInvocation,
101
+ canceled
102
+ },
103
+ eventType: EVENT_TYPE.OPERATIONAL
104
+ });
105
+ });
106
+ }
83
107
  }
84
108
 
85
109
  anchorLinkAnalytics() {
@@ -257,6 +281,8 @@ export class Renderer extends PureComponent {
257
281
  };
258
282
 
259
283
  try {
284
+ var _this$featureFlags, _this$featureFlags$fe, _this$featureFlags$fe2;
285
+
260
286
  const schema = this.getSchema();
261
287
  const {
262
288
  result,
@@ -268,15 +294,15 @@ export class Renderer extends PureComponent {
268
294
  onComplete(stat);
269
295
  }
270
296
 
271
- const rendererOutput = /*#__PURE__*/React.createElement(RendererContextProvider, {
297
+ const rendererOutput = jsx(RendererContextProvider, {
272
298
  value: this.featureFlags(this.props.featureFlags)
273
- }, /*#__PURE__*/React.createElement(CopyTextProvider, null, /*#__PURE__*/React.createElement(ActiveHeaderIdProvider, {
299
+ }, jsx(CopyTextProvider, null, jsx(ActiveHeaderIdProvider, {
274
300
  value: getActiveHeadingId(allowHeadingAnchorLinks)
275
- }, /*#__PURE__*/React.createElement(LegacyToNextIntlProvider, null, /*#__PURE__*/React.createElement(IntlLegacyFallbackProvider, null, /*#__PURE__*/React.createElement(AnalyticsContext.Provider, {
301
+ }, jsx(AnalyticsContext.Provider, {
276
302
  value: {
277
303
  fireAnalyticsEvent: event => this.fireAnalyticsEvent(event)
278
304
  }
279
- }, /*#__PURE__*/React.createElement(SmartCardStorageProvider, null, /*#__PURE__*/React.createElement(RendererWrapper, {
305
+ }, jsx(SmartCardStorageProvider, null, jsx(RendererWrapper, {
280
306
  appearance: appearance,
281
307
  dynamicTextSizing: !!allowDynamicTextSizing,
282
308
  allowNestedHeaderLinks: allowNestedHeaderLinks,
@@ -287,23 +313,32 @@ export class Renderer extends PureComponent {
287
313
  innerRef: this.editorRef,
288
314
  onClick: handleWrapperOnClick,
289
315
  onMouseDown: this.onMouseDownEditView
290
- }, enableSsrInlineScripts ? /*#__PURE__*/React.createElement(BreakoutSSRInlineScript, {
316
+ }, enableSsrInlineScripts ? jsx(BreakoutSSRInlineScript, {
291
317
  allowDynamicTextSizing: !!allowDynamicTextSizing
292
- }) : null, /*#__PURE__*/React.createElement(RendererActionsInternalUpdater, {
318
+ }) : null, jsx(RendererActionsInternalUpdater, {
293
319
  doc: pmDoc,
294
320
  schema: schema,
295
321
  onAnalyticsEvent: this.fireAnalyticsEvent
296
- }, result)))))))));
297
- return truncated ? /*#__PURE__*/React.createElement(TruncatedWrapper, {
322
+ }, result)))))));
323
+ let rendererResult = truncated ? jsx(TruncatedWrapper, {
298
324
  height: maxHeight,
299
325
  fadeHeight: fadeOutHeight
300
326
  }, rendererOutput) : rendererOutput;
327
+ const rendererRenderTracking = (_this$featureFlags = this.featureFlags(this.props.featureFlags)) === null || _this$featureFlags === void 0 ? void 0 : (_this$featureFlags$fe = _this$featureFlags.featureFlags) === null || _this$featureFlags$fe === void 0 ? void 0 : (_this$featureFlags$fe2 = _this$featureFlags$fe.rendererRenderTracking) === null || _this$featureFlags$fe2 === void 0 ? void 0 : _this$featureFlags$fe2[ACTION_SUBJECT.RENDERER];
328
+ const reRenderTracking = (rendererRenderTracking === null || rendererRenderTracking === void 0 ? void 0 : rendererRenderTracking.enabled) && jsx(RenderTracking, {
329
+ componentProps: this.props,
330
+ action: ACTION.RE_RENDERED,
331
+ actionSubject: ACTION_SUBJECT.RENDERER,
332
+ handleAnalyticsEvent: this.fireAnalyticsEvent,
333
+ useShallow: rendererRenderTracking.useShallow
334
+ });
335
+ return jsx(Fragment, null, reRenderTracking, rendererResult);
301
336
  } catch (e) {
302
337
  if (onError) {
303
338
  onError(e);
304
339
  }
305
340
 
306
- return /*#__PURE__*/React.createElement(RendererWrapper, {
341
+ return jsx(RendererWrapper, {
307
342
  appearance: appearance,
308
343
  dynamicTextSizing: !!allowDynamicTextSizing,
309
344
  allowCopyToClipboard: allowCopyToClipboard,
@@ -311,7 +346,7 @@ export class Renderer extends PureComponent {
311
346
  allowColumnSorting: allowColumnSorting,
312
347
  allowNestedHeaderLinks: allowNestedHeaderLinks,
313
348
  onClick: handleWrapperOnClick
314
- }, /*#__PURE__*/React.createElement(UnsupportedBlock, null));
349
+ }, jsx(UnsupportedBlock, null));
315
350
  }
316
351
  }
317
352
 
@@ -332,7 +367,7 @@ export class Renderer extends PureComponent {
332
367
  }
333
368
 
334
369
  }
335
- const RendererWithAnalytics = /*#__PURE__*/React.memo(props => /*#__PURE__*/React.createElement(FabricEditorAnalyticsContext, {
370
+ const RendererWithAnalytics = /*#__PURE__*/React.memo(props => jsx(FabricEditorAnalyticsContext, {
336
371
  data: {
337
372
  appearance: getAnalyticsAppearance(props.appearance),
338
373
  packageName: name,
@@ -340,20 +375,20 @@ const RendererWithAnalytics = /*#__PURE__*/React.memo(props => /*#__PURE__*/Reac
340
375
  componentName: 'renderer',
341
376
  editorSessionId: uuid()
342
377
  }
343
- }, /*#__PURE__*/React.createElement(WithCreateAnalyticsEvent, {
378
+ }, jsx(WithCreateAnalyticsEvent, {
344
379
  render: createAnalyticsEvent => {
345
- // `IntlNextErrorBoundary` only captures Internationalisation errors, leaving others for `ErrorBoundary`.
346
- return /*#__PURE__*/React.createElement(ErrorBoundary, {
380
+ // `IntlErrorBoundary` only captures Internationalisation errors, leaving others for `ErrorBoundary`.
381
+ return jsx(ErrorBoundary, {
347
382
  component: ACTION_SUBJECT.RENDERER,
348
383
  rethrowError: true,
349
384
  fallbackComponent: null,
350
385
  createAnalyticsEvent: createAnalyticsEvent
351
- }, /*#__PURE__*/React.createElement(IntlNextErrorBoundary, null, /*#__PURE__*/React.createElement(Renderer, _extends({}, props, {
386
+ }, jsx(IntlErrorBoundary, null, jsx(Renderer, _extends({}, props, {
352
387
  createAnalyticsEvent: createAnalyticsEvent
353
388
  }))));
354
389
  }
355
390
  })));
356
- const RendererWithIframeFallbackWrapper = /*#__PURE__*/React.memo(props => {
391
+ const RendererWrapper = /*#__PURE__*/React.memo(props => {
357
392
  const {
358
393
  allowColumnSorting,
359
394
  dynamicTextSizing,
@@ -361,45 +396,25 @@ const RendererWithIframeFallbackWrapper = /*#__PURE__*/React.memo(props => {
361
396
  innerRef,
362
397
  appearance,
363
398
  children,
364
- subscribe,
365
399
  onClick,
366
400
  onMouseDown
367
401
  } = props;
368
- const renderer = /*#__PURE__*/React.createElement(WidthProvider, {
402
+ return jsx(WidthProvider, {
369
403
  className: "ak-renderer-wrapper"
370
- }, /*#__PURE__*/React.createElement(BaseTheme, {
404
+ }, jsx(BaseTheme, {
371
405
  dynamicTextSizing: dynamicTextSizing,
372
406
  baseFontSize: !dynamicTextSizing && appearance && appearance !== 'comment' ? akEditorFullPageDefaultFontSize : undefined
373
- }, /*#__PURE__*/React.createElement(Wrapper, {
374
- innerRef: innerRef,
375
- appearance: appearance,
376
- allowNestedHeaderLinks: allowNestedHeaderLinks,
377
- allowColumnSorting: !!allowColumnSorting,
407
+ }, jsx("div", {
408
+ ref: innerRef,
378
409
  onClick: onClick,
379
- onMouseDown: onMouseDown
410
+ onMouseDown: onMouseDown,
411
+ css: rendererStyles({
412
+ appearance,
413
+ allowNestedHeaderLinks,
414
+ allowColumnSorting: !!allowColumnSorting
415
+ })
380
416
  }, children)));
381
-
382
- if (!subscribe) {
383
- return /*#__PURE__*/React.createElement(IframeWidthObserverFallbackWrapper, null, renderer);
384
- }
385
-
386
- return renderer;
387
417
  });
388
- /**
389
- * When the product doesn't provide a IframeWidthObserverFallbackWrapper,
390
- * we will give one to the renderer,
391
- *
392
- * so if we have more than one `WidthProvider` on the content,
393
- * only one iframe will be created on the older browsers.
394
- */
395
-
396
- export function RendererWrapper(props) {
397
- return /*#__PURE__*/React.createElement(IframeWrapperConsumer, null, ({
398
- subscribe
399
- }) => /*#__PURE__*/React.createElement(RendererWithIframeFallbackWrapper, _extends({}, props, {
400
- subscribe: subscribe
401
- })));
402
- }
403
418
 
404
419
  function RendererActionsInternalUpdater({
405
420
  children,
@@ -430,16 +445,16 @@ const RendererWithAnnotationSelection = props => {
430
445
  const innerRef = props.innerRef || localRef;
431
446
 
432
447
  if (!allowAnnotations) {
433
- return /*#__PURE__*/React.createElement(RendererWithAnalytics, _extends({
448
+ return jsx(RendererWithAnalytics, _extends({
434
449
  innerRef: innerRef
435
450
  }, props));
436
451
  }
437
452
 
438
- return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement(AnnotationsWrapper, {
453
+ return jsx(RendererActionsContext, null, jsx(AnnotationsWrapper, {
439
454
  rendererRef: innerRef,
440
455
  adfDocument: adfDocument,
441
456
  annotationProvider: props.annotationProvider
442
- }, /*#__PURE__*/React.createElement(RendererWithAnalytics, _extends({
457
+ }, jsx(RendererWithAnalytics, _extends({
443
458
  innerRef: innerRef
444
459
  }, props))));
445
460
  };