@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.
- package/CHANGELOG.md +49 -0
- package/dist/cjs/analytics/enums.js +2 -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 +17 -16
- 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/heading.js +4 -2
- package/dist/cjs/react/nodes/layoutColumn.js +7 -2
- package/dist/cjs/react/nodes/media.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 +63 -55
- package/dist/cjs/react/nodes/table.js +2 -10
- package/dist/cjs/react/utils/inject-props.js +33 -0
- package/dist/cjs/react/utils/performance/RenderTracking.js +52 -0
- package/dist/cjs/ui/Expand.js +52 -28
- package/dist/cjs/ui/MediaCard.js +4 -14
- package/dist/cjs/ui/Renderer/index.js +72 -64
- package/dist/cjs/ui/Renderer/style.js +62 -55
- package/dist/cjs/ui/Renderer/truncated-wrapper.js +19 -21
- package/dist/cjs/ui/SortingIcon.js +8 -9
- package/dist/cjs/ui/annotations/draft/component.js +22 -12
- package/dist/cjs/ui/annotations/element/mark.js +9 -5
- package/dist/cjs/ui/renderer-props.js +1 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/enums.js +2 -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 +25 -23
- 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/heading.js +4 -2
- package/dist/es2019/react/nodes/layoutColumn.js +7 -3
- package/dist/es2019/react/nodes/media.js +9 -5
- 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 +55 -37
- package/dist/es2019/react/nodes/table.js +2 -5
- package/dist/es2019/react/utils/inject-props.js +24 -0
- package/dist/es2019/react/utils/performance/RenderTracking.js +37 -0
- package/dist/es2019/ui/Expand.js +65 -36
- package/dist/es2019/ui/MediaCard.js +3 -6
- package/dist/es2019/ui/Renderer/index.js +72 -57
- package/dist/es2019/ui/Renderer/style.js +370 -327
- package/dist/es2019/ui/Renderer/truncated-wrapper.js +26 -15
- package/dist/es2019/ui/SortingIcon.js +9 -7
- package/dist/es2019/ui/annotations/draft/component.js +18 -12
- package/dist/es2019/ui/annotations/element/mark.js +12 -6
- package/dist/es2019/ui/renderer-props.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/enums.js +2 -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 +18 -14
- 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/heading.js +4 -2
- package/dist/esm/react/nodes/layoutColumn.js +7 -3
- package/dist/esm/react/nodes/media.js +8 -5
- 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 +64 -53
- package/dist/esm/react/nodes/table.js +2 -8
- package/dist/esm/react/utils/inject-props.js +24 -0
- package/dist/esm/react/utils/performance/RenderTracking.js +39 -0
- package/dist/esm/ui/Expand.js +57 -29
- package/dist/esm/ui/MediaCard.js +3 -9
- package/dist/esm/ui/Renderer/index.js +74 -61
- package/dist/esm/ui/Renderer/style.js +58 -51
- package/dist/esm/ui/Renderer/truncated-wrapper.js +20 -14
- package/dist/esm/ui/SortingIcon.js +9 -7
- package/dist/esm/ui/annotations/draft/component.js +18 -11
- package/dist/esm/ui/annotations/element/mark.js +11 -4
- package/dist/esm/ui/renderer-props.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/enums.d.ts +2 -0
- package/dist/types/analytics/events.d.ts +12 -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/codeBlock.d.ts +4 -14
- 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/heading.d.ts +1 -0
- package/dist/types/react/nodes/index.d.ts +1 -13
- package/dist/types/react/nodes/layoutColumn.d.ts +3 -1
- package/dist/types/react/nodes/media.d.ts +3 -1
- 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/inject-props.d.ts +6 -0
- package/dist/types/react/utils/performance/RenderTracking.d.ts +15 -0
- package/dist/types/ui/Expand.d.ts +3 -2
- package/dist/types/ui/MediaCard.d.ts +1 -3
- package/dist/types/ui/Renderer/index.d.ts +3 -26
- package/dist/types/ui/Renderer/style.d.ts +2 -3
- package/dist/types/ui/Renderer/truncated-wrapper.d.ts +3 -1
- package/dist/types/ui/SortingIcon.d.ts +3 -3
- package/dist/types/ui/annotations/draft/component.d.ts +1 -0
- package/dist/types/ui/annotations/element/mark.d.ts +1 -0
- package/dist/types/ui/renderer-props.d.ts +14 -2
- 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
|
-
|
|
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,
|
|
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 {
|
|
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
|
-
|
|
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 =
|
|
297
|
+
const rendererOutput = jsx(RendererContextProvider, {
|
|
272
298
|
value: this.featureFlags(this.props.featureFlags)
|
|
273
|
-
},
|
|
299
|
+
}, jsx(CopyTextProvider, null, jsx(ActiveHeaderIdProvider, {
|
|
274
300
|
value: getActiveHeadingId(allowHeadingAnchorLinks)
|
|
275
|
-
},
|
|
301
|
+
}, jsx(AnalyticsContext.Provider, {
|
|
276
302
|
value: {
|
|
277
303
|
fireAnalyticsEvent: event => this.fireAnalyticsEvent(event)
|
|
278
304
|
}
|
|
279
|
-
},
|
|
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 ?
|
|
316
|
+
}, enableSsrInlineScripts ? jsx(BreakoutSSRInlineScript, {
|
|
291
317
|
allowDynamicTextSizing: !!allowDynamicTextSizing
|
|
292
|
-
}) : null,
|
|
318
|
+
}) : null, jsx(RendererActionsInternalUpdater, {
|
|
293
319
|
doc: pmDoc,
|
|
294
320
|
schema: schema,
|
|
295
321
|
onAnalyticsEvent: this.fireAnalyticsEvent
|
|
296
|
-
}, result)))))))
|
|
297
|
-
|
|
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
|
|
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
|
-
},
|
|
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 =>
|
|
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
|
-
},
|
|
378
|
+
}, jsx(WithCreateAnalyticsEvent, {
|
|
344
379
|
render: createAnalyticsEvent => {
|
|
345
|
-
// `
|
|
346
|
-
return
|
|
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
|
-
},
|
|
386
|
+
}, jsx(IntlErrorBoundary, null, jsx(Renderer, _extends({}, props, {
|
|
352
387
|
createAnalyticsEvent: createAnalyticsEvent
|
|
353
388
|
}))));
|
|
354
389
|
}
|
|
355
390
|
})));
|
|
356
|
-
const
|
|
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
|
-
|
|
402
|
+
return jsx(WidthProvider, {
|
|
369
403
|
className: "ak-renderer-wrapper"
|
|
370
|
-
},
|
|
404
|
+
}, jsx(BaseTheme, {
|
|
371
405
|
dynamicTextSizing: dynamicTextSizing,
|
|
372
406
|
baseFontSize: !dynamicTextSizing && appearance && appearance !== 'comment' ? akEditorFullPageDefaultFontSize : undefined
|
|
373
|
-
},
|
|
374
|
-
|
|
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
|
|
448
|
+
return jsx(RendererWithAnalytics, _extends({
|
|
434
449
|
innerRef: innerRef
|
|
435
450
|
}, props));
|
|
436
451
|
}
|
|
437
452
|
|
|
438
|
-
return
|
|
453
|
+
return jsx(RendererActionsContext, null, jsx(AnnotationsWrapper, {
|
|
439
454
|
rendererRef: innerRef,
|
|
440
455
|
adfDocument: adfDocument,
|
|
441
456
|
annotationProvider: props.annotationProvider
|
|
442
|
-
},
|
|
457
|
+
}, jsx(RendererWithAnalytics, _extends({
|
|
443
458
|
innerRef: innerRef
|
|
444
459
|
}, props))));
|
|
445
460
|
};
|