@atlaskit/renderer 92.0.1 → 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.
- package/CHANGELOG.md +27 -0
- package/dist/cjs/analytics/enums.js +1 -0
- package/dist/cjs/react/marks/alignment.js +11 -12
- package/dist/cjs/react/marks/breakout.js +7 -9
- package/dist/cjs/react/marks/link.js +13 -6
- package/dist/cjs/react/nodes/codeBlock.js +1 -1
- package/dist/cjs/react/nodes/codeBlockCopyButton.js +13 -11
- package/dist/cjs/react/nodes/embedCard.js +25 -33
- package/dist/cjs/react/nodes/heading-anchor.js +7 -6
- package/dist/cjs/react/nodes/mediaSingle/index.js +15 -4
- package/dist/cjs/react/nodes/mediaSingle/styles.js +7 -10
- package/dist/cjs/react/nodes/panel.js +26 -16
- package/dist/cjs/react/nodes/table/sticky.js +51 -54
- package/dist/cjs/react/nodes/table.js +2 -10
- package/dist/cjs/react/utils/performance/RenderTracking.js +52 -0
- package/dist/cjs/ui/Expand.js +40 -20
- package/dist/cjs/ui/MediaCard.js +4 -14
- package/dist/cjs/ui/Renderer/index.js +37 -48
- package/dist/cjs/ui/Renderer/style.js +58 -63
- package/dist/cjs/ui/Renderer/truncated-wrapper.js +19 -21
- package/dist/cjs/ui/SortingIcon.js +8 -9
- package/dist/cjs/ui/renderer-props.js +1 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/enums.js +1 -0
- package/dist/es2019/react/marks/alignment.js +15 -7
- package/dist/es2019/react/marks/breakout.js +6 -5
- package/dist/es2019/react/marks/link.js +8 -5
- package/dist/es2019/react/nodes/codeBlock.js +1 -1
- package/dist/es2019/react/nodes/codeBlockCopyButton.js +12 -9
- package/dist/es2019/react/nodes/embedCard.js +16 -16
- package/dist/es2019/react/nodes/heading-anchor.js +9 -6
- package/dist/es2019/react/nodes/mediaSingle/index.js +10 -6
- package/dist/es2019/react/nodes/mediaSingle/styles.js +6 -7
- package/dist/es2019/react/nodes/panel.js +23 -16
- package/dist/es2019/react/nodes/table/sticky.js +48 -41
- package/dist/es2019/react/nodes/table.js +2 -5
- package/dist/es2019/react/utils/performance/RenderTracking.js +37 -0
- package/dist/es2019/ui/Expand.js +52 -28
- package/dist/es2019/ui/MediaCard.js +3 -6
- package/dist/es2019/ui/Renderer/index.js +37 -42
- package/dist/es2019/ui/Renderer/style.js +363 -336
- package/dist/es2019/ui/Renderer/truncated-wrapper.js +26 -15
- package/dist/es2019/ui/SortingIcon.js +9 -7
- package/dist/es2019/ui/renderer-props.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/enums.js +1 -0
- package/dist/esm/react/marks/alignment.js +13 -6
- package/dist/esm/react/marks/breakout.js +6 -5
- package/dist/esm/react/marks/link.js +7 -5
- package/dist/esm/react/nodes/codeBlock.js +1 -1
- package/dist/esm/react/nodes/codeBlockCopyButton.js +10 -7
- package/dist/esm/react/nodes/embedCard.js +19 -19
- package/dist/esm/react/nodes/heading-anchor.js +8 -6
- package/dist/esm/react/nodes/mediaSingle/index.js +11 -6
- package/dist/esm/react/nodes/mediaSingle/styles.js +5 -7
- package/dist/esm/react/nodes/panel.js +27 -15
- package/dist/esm/react/nodes/table/sticky.js +53 -52
- package/dist/esm/react/nodes/table.js +2 -8
- package/dist/esm/react/utils/performance/RenderTracking.js +39 -0
- package/dist/esm/ui/Expand.js +45 -21
- package/dist/esm/ui/MediaCard.js +3 -9
- package/dist/esm/ui/Renderer/index.js +38 -46
- package/dist/esm/ui/Renderer/style.js +55 -56
- package/dist/esm/ui/Renderer/truncated-wrapper.js +20 -14
- package/dist/esm/ui/SortingIcon.js +9 -7
- package/dist/esm/ui/renderer-props.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/enums.d.ts +1 -0
- package/dist/types/analytics/events.d.ts +7 -2
- package/dist/types/react/marks/alignment.d.ts +2 -2
- package/dist/types/react/marks/breakout.d.ts +4 -3
- package/dist/types/react/marks/link.d.ts +2 -2
- package/dist/types/react/nodes/embedCard.d.ts +3 -2
- package/dist/types/react/nodes/heading-anchor.d.ts +1 -0
- package/dist/types/react/nodes/mediaSingle/index.d.ts +1 -0
- package/dist/types/react/nodes/mediaSingle/styles.d.ts +2 -3
- package/dist/types/react/nodes/panel.d.ts +3 -1
- package/dist/types/react/nodes/table/sticky.d.ts +4 -2
- package/dist/types/react/utils/performance/RenderTracking.d.ts +15 -0
- package/dist/types/ui/Expand.d.ts +2 -2
- package/dist/types/ui/MediaCard.d.ts +1 -3
- package/dist/types/ui/Renderer/index.d.ts +0 -25
- package/dist/types/ui/Renderer/style.d.ts +1 -4
- package/dist/types/ui/Renderer/truncated-wrapper.d.ts +3 -1
- package/dist/types/ui/SortingIcon.d.ts +3 -3
- package/dist/types/ui/renderer-props.d.ts +14 -2
- package/package.json +17 -19
|
@@ -2,22 +2,21 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
|
|
4
4
|
/** @jsx jsx */
|
|
5
|
-
import React, { useContext, useLayoutEffect, useRef } from 'react';
|
|
5
|
+
import React, { Fragment, useContext, useLayoutEffect, useRef } from 'react';
|
|
6
6
|
import { jsx } from '@emotion/react';
|
|
7
7
|
import { PureComponent } from 'react';
|
|
8
8
|
import { getSchemaBasedOnStage } from '@atlaskit/adf-schema';
|
|
9
9
|
import { reduce } from '@atlaskit/adf-utils';
|
|
10
10
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
11
|
-
import { UnsupportedBlock, BaseTheme, WidthProvider, WithCreateAnalyticsEvent,
|
|
11
|
+
import { UnsupportedBlock, BaseTheme, WidthProvider, WithCreateAnalyticsEvent, IntlErrorBoundary } from '@atlaskit/editor-common/ui';
|
|
12
12
|
import { getAnalyticsAppearance, getAnalyticsEventSeverity, getResponseEndTime, startMeasure, stopMeasure, shouldForceTracking, measureTTI } from '@atlaskit/editor-common/utils';
|
|
13
13
|
import { normalizeFeatureFlags } from '@atlaskit/editor-common/normalize-feature-flags';
|
|
14
14
|
import { akEditorFullPageDefaultFontSize } from '@atlaskit/editor-shared-styles';
|
|
15
|
-
import { IframeWidthObserverFallbackWrapper, IframeWrapperConsumer } from '@atlaskit/width-detector';
|
|
16
15
|
import { FabricChannel } from '@atlaskit/analytics-listeners';
|
|
17
16
|
import { FabricEditorAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
|
|
18
17
|
import uuid from 'uuid/v4';
|
|
19
18
|
import { ReactSerializer, renderDocument } from '../../';
|
|
20
|
-
import {
|
|
19
|
+
import { rendererStyles } from './style';
|
|
21
20
|
import { TruncatedWrapper } from './truncated-wrapper';
|
|
22
21
|
import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../../analytics/enums';
|
|
23
22
|
import { PLATFORM, MODE } from '../../analytics/events';
|
|
@@ -35,15 +34,21 @@ import { isInteractiveElement } from './click-to-edit';
|
|
|
35
34
|
import { RendererContextProvider } from '../../renderer-context';
|
|
36
35
|
import memoizeOne from 'memoize-one';
|
|
37
36
|
import { ErrorBoundary } from './ErrorBoundary';
|
|
37
|
+
import { RenderTracking } from '../../react/utils/performance/RenderTracking';
|
|
38
38
|
export const NORMAL_SEVERITY_THRESHOLD = 2000;
|
|
39
39
|
export const DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
40
40
|
export class Renderer extends PureComponent {
|
|
41
41
|
constructor(props) {
|
|
42
42
|
super(props);
|
|
43
43
|
|
|
44
|
-
_defineProperty(this, "featureFlags", memoizeOne(featureFlags =>
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
_defineProperty(this, "featureFlags", memoizeOne(featureFlags => {
|
|
45
|
+
const normalizedFeatureFlags = normalizeFeatureFlags(featureFlags, {
|
|
46
|
+
objectFlagKeys: ['rendererRenderTracking']
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
featureFlags: normalizedFeatureFlags
|
|
50
|
+
};
|
|
51
|
+
}));
|
|
47
52
|
|
|
48
53
|
_defineProperty(this, "fireAnalyticsEvent", event => {
|
|
49
54
|
const {
|
|
@@ -276,6 +281,8 @@ export class Renderer extends PureComponent {
|
|
|
276
281
|
};
|
|
277
282
|
|
|
278
283
|
try {
|
|
284
|
+
var _this$featureFlags, _this$featureFlags$fe, _this$featureFlags$fe2;
|
|
285
|
+
|
|
279
286
|
const schema = this.getSchema();
|
|
280
287
|
const {
|
|
281
288
|
result,
|
|
@@ -291,7 +298,7 @@ export class Renderer extends PureComponent {
|
|
|
291
298
|
value: this.featureFlags(this.props.featureFlags)
|
|
292
299
|
}, jsx(CopyTextProvider, null, jsx(ActiveHeaderIdProvider, {
|
|
293
300
|
value: getActiveHeadingId(allowHeadingAnchorLinks)
|
|
294
|
-
}, jsx(
|
|
301
|
+
}, jsx(AnalyticsContext.Provider, {
|
|
295
302
|
value: {
|
|
296
303
|
fireAnalyticsEvent: event => this.fireAnalyticsEvent(event)
|
|
297
304
|
}
|
|
@@ -312,11 +319,20 @@ export class Renderer extends PureComponent {
|
|
|
312
319
|
doc: pmDoc,
|
|
313
320
|
schema: schema,
|
|
314
321
|
onAnalyticsEvent: this.fireAnalyticsEvent
|
|
315
|
-
}, result)))))))
|
|
316
|
-
|
|
322
|
+
}, result)))))));
|
|
323
|
+
let rendererResult = truncated ? jsx(TruncatedWrapper, {
|
|
317
324
|
height: maxHeight,
|
|
318
325
|
fadeHeight: fadeOutHeight
|
|
319
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);
|
|
320
336
|
} catch (e) {
|
|
321
337
|
if (onError) {
|
|
322
338
|
onError(e);
|
|
@@ -361,18 +377,18 @@ const RendererWithAnalytics = /*#__PURE__*/React.memo(props => jsx(FabricEditorA
|
|
|
361
377
|
}
|
|
362
378
|
}, jsx(WithCreateAnalyticsEvent, {
|
|
363
379
|
render: createAnalyticsEvent => {
|
|
364
|
-
// `
|
|
380
|
+
// `IntlErrorBoundary` only captures Internationalisation errors, leaving others for `ErrorBoundary`.
|
|
365
381
|
return jsx(ErrorBoundary, {
|
|
366
382
|
component: ACTION_SUBJECT.RENDERER,
|
|
367
383
|
rethrowError: true,
|
|
368
384
|
fallbackComponent: null,
|
|
369
385
|
createAnalyticsEvent: createAnalyticsEvent
|
|
370
|
-
}, jsx(
|
|
386
|
+
}, jsx(IntlErrorBoundary, null, jsx(Renderer, _extends({}, props, {
|
|
371
387
|
createAnalyticsEvent: createAnalyticsEvent
|
|
372
388
|
}))));
|
|
373
389
|
}
|
|
374
390
|
})));
|
|
375
|
-
const
|
|
391
|
+
const RendererWrapper = /*#__PURE__*/React.memo(props => {
|
|
376
392
|
const {
|
|
377
393
|
allowColumnSorting,
|
|
378
394
|
dynamicTextSizing,
|
|
@@ -380,46 +396,25 @@ const RendererWithIframeFallbackWrapper = /*#__PURE__*/React.memo(props => {
|
|
|
380
396
|
innerRef,
|
|
381
397
|
appearance,
|
|
382
398
|
children,
|
|
383
|
-
subscribe,
|
|
384
399
|
onClick,
|
|
385
400
|
onMouseDown
|
|
386
401
|
} = props;
|
|
387
|
-
|
|
402
|
+
return jsx(WidthProvider, {
|
|
388
403
|
className: "ak-renderer-wrapper"
|
|
389
404
|
}, jsx(BaseTheme, {
|
|
390
405
|
dynamicTextSizing: dynamicTextSizing,
|
|
391
406
|
baseFontSize: !dynamicTextSizing && appearance && appearance !== 'comment' ? akEditorFullPageDefaultFontSize : undefined
|
|
392
|
-
}, jsx(
|
|
393
|
-
|
|
394
|
-
appearance: appearance,
|
|
395
|
-
allowNestedHeaderLinks: allowNestedHeaderLinks,
|
|
396
|
-
allowColumnSorting: !!allowColumnSorting,
|
|
407
|
+
}, jsx("div", {
|
|
408
|
+
ref: innerRef,
|
|
397
409
|
onClick: onClick,
|
|
398
410
|
onMouseDown: onMouseDown,
|
|
399
|
-
css: rendererStyles
|
|
411
|
+
css: rendererStyles({
|
|
412
|
+
appearance,
|
|
413
|
+
allowNestedHeaderLinks,
|
|
414
|
+
allowColumnSorting: !!allowColumnSorting
|
|
415
|
+
})
|
|
400
416
|
}, children)));
|
|
401
|
-
|
|
402
|
-
if (!subscribe) {
|
|
403
|
-
return jsx(IframeWidthObserverFallbackWrapper, null, renderer);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
return renderer;
|
|
407
417
|
});
|
|
408
|
-
/**
|
|
409
|
-
* When the product doesn't provide a IframeWidthObserverFallbackWrapper,
|
|
410
|
-
* we will give one to the renderer,
|
|
411
|
-
*
|
|
412
|
-
* so if we have more than one `WidthProvider` on the content,
|
|
413
|
-
* only one iframe will be created on the older browsers.
|
|
414
|
-
*/
|
|
415
|
-
|
|
416
|
-
export function RendererWrapper(props) {
|
|
417
|
-
return jsx(IframeWrapperConsumer, null, ({
|
|
418
|
-
subscribe
|
|
419
|
-
}) => jsx(RendererWithIframeFallbackWrapper, _extends({}, props, {
|
|
420
|
-
subscribe: subscribe
|
|
421
|
-
})));
|
|
422
|
-
}
|
|
423
418
|
|
|
424
419
|
function RendererActionsInternalUpdater({
|
|
425
420
|
children,
|