@atlaskit/renderer 114.10.2 → 114.11.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.
@@ -7,13 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.NORMAL_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = void 0;
9
9
  exports.Renderer = Renderer;
10
- exports.default = exports.__RendererClassComponent = exports.RendererWithAnalytics = void 0;
10
+ exports.default = exports.RendererWithAnalytics = exports.RendererFunctionalComponent = void 0;
11
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
13
  var _react = _interopRequireWildcard(require("react"));
19
14
  var _schemaDefault = require("@atlaskit/adf-schema/schema-default");
@@ -31,7 +26,6 @@ var _types = require("@atlaskit/analytics-listeners/types");
31
26
  var _analyticsNamespacedContext = require("@atlaskit/analytics-namespaced-context");
32
27
  var _analytics = require("@atlaskit/editor-common/analytics");
33
28
  var _normalizeFeatureFlags = require("@atlaskit/editor-common/normalize-feature-flags");
34
- var _memoizeOne = _interopRequireDefault(require("memoize-one"));
35
29
  var _v = _interopRequireDefault(require("uuid/v4"));
36
30
  var _ = require("../../");
37
31
  var _analyticsContext = _interopRequireDefault(require("../../analytics/analyticsContext"));
@@ -57,9 +51,7 @@ var _rendererHelper = require("./rendererHelper");
57
51
  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); }
58
52
  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; }
59
53
  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; }
60
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
61
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
62
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /**
54
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
63
55
  * @jsxRuntime classic
64
56
  * @jsx jsx
65
57
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
@@ -67,416 +59,14 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
67
59
  var NORMAL_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = 2000;
68
60
  var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
69
61
  var packageName = "@atlaskit/renderer";
70
- var packageVersion = "114.10.2";
62
+ var packageVersion = "114.11.1";
71
63
  var setAsQueryContainerStyles = (0, _react2.css)({
72
64
  containerName: 'ak-renderer-wrapper',
73
65
  containerType: 'inline-size',
74
66
  contain: 'layout style inline-size'
75
67
  });
76
-
77
- /**
78
- * Exported due to enzyme test reliance on this component.
79
- */
80
- // eslint-disable-next-line @repo/internal/react/no-class-components
81
- var __RendererClassComponent = exports.__RendererClassComponent = /*#__PURE__*/function (_PureComponent) {
82
- function __RendererClassComponent(props) {
83
- var _this;
84
- (0, _classCallCheck2.default)(this, __RendererClassComponent);
85
- _this = _callSuper(this, __RendererClassComponent, [props]);
86
- /**
87
- * This is used in measuring the Renderer Mount time and is then
88
- * deleted once that measurement occurs.
89
- */
90
- (0, _defineProperty2.default)(_this, "renderedMeasurementDistortedDurationMonitor", (0, _measureRender.getDistortedDurationMonitor)());
91
- (0, _defineProperty2.default)(_this, "createRendererContext", (0, _memoizeOne.default)(function (featureFlags, isTopLevelRenderer) {
92
- var normalizedFeatureFlags = (0, _normalizeFeatureFlags.normalizeFeatureFlags)(featureFlags);
93
- return {
94
- featureFlags: normalizedFeatureFlags,
95
- // The context is uninitialized at the top level. In nested levels it's all false
96
- isTopLevelRenderer: isTopLevelRenderer === undefined
97
- };
98
- }));
99
- (0, _defineProperty2.default)(_this, "fireAnalyticsEvent", function (event) {
100
- var createAnalyticsEvent = _this.props.createAnalyticsEvent;
101
- if (createAnalyticsEvent) {
102
- var channel = _types.FabricChannel.editor;
103
- createAnalyticsEvent(event).fire(channel);
104
- }
105
- });
106
- (0, _defineProperty2.default)(_this, "getSchema", (0, _memoizeOne.default)(function (schema, adfStage) {
107
- if (schema) {
108
- return schema;
109
- }
110
- return (0, _schemaDefault.getSchemaBasedOnStage)(adfStage);
111
- }));
112
- (0, _defineProperty2.default)(_this, "onMouseDownEditView", function () {
113
- // When the user is deselecting text on the screen by clicking, if they are clicking outside
114
- // the current selection, by the time the onclick handler is called the window.getSelection()
115
- // value will already be cleared.
116
- // The mousedown callback is called before the selection is cleared.
117
- var windowSelection = window.getSelection();
118
- _this.mouseDownSelection = windowSelection !== null ? windowSelection.toString() : undefined;
119
- });
120
- (0, _defineProperty2.default)(_this, "handleMouseTripleClickInTables", function (event) {
121
- var _parentElement, _parentElement2;
122
- if (_browser.browser.ios || _browser.browser.android) {
123
- return;
124
- }
125
- var badBrowser = _browser.browser.chrome || _browser.browser.safari;
126
- var tripleClick = event.detail >= 3;
127
- if (!(badBrowser && tripleClick)) {
128
- return;
129
- }
130
- var selection = window.getSelection();
131
- if (!selection) {
132
- return;
133
- }
134
- var type = selection.type,
135
- anchorNode = selection.anchorNode,
136
- focusNode = selection.focusNode;
137
- var rangeSelection = Boolean(type === 'Range' && anchorNode && focusNode);
138
- if (!rangeSelection) {
139
- return;
140
- }
141
- // Ignored via go/ees005
142
- // eslint-disable-next-line @atlaskit/editor/no-as-casting
143
- var target = event.target;
144
- var tableCell = target.closest('td,th');
145
- var clickedInCell = Boolean(tableCell);
146
- if (!clickedInCell) {
147
- return;
148
- }
149
- // Ignored via go/ees005
150
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
151
- var anchorInCell = tableCell.contains(anchorNode);
152
- // Ignored via go/ees005
153
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
154
- var focusInCell = tableCell.contains(focusNode);
155
- var selectionStartsOrEndsOutsideClickedCell = !(anchorInCell && focusInCell);
156
- if (!selectionStartsOrEndsOutsideClickedCell) {
157
- return;
158
- }
159
- // If selection starts or ends in a different cell than the clicked cell,
160
- // we select the node inside the clicked cell (or if both are in a different
161
- // cell, we select the cell's contents instead). We want to select the nearest
162
- // parent block, so that a whole line of text/content is selected (rather than
163
- // selecting a span that would select one specific chunk of text).
164
- var elementToSelect = anchorInCell ? // Ignored via go/ees005
165
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
166
- (_parentElement = anchorNode.parentElement) === null || _parentElement === void 0 ? void 0 : _parentElement.closest('div,p') : focusInCell ? // Ignored via go/ees005
167
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
168
- (_parentElement2 = focusNode.parentElement) === null || _parentElement2 === void 0 ? void 0 : _parentElement2.closest('div,p') : tableCell;
169
- if (elementToSelect) {
170
- selection.selectAllChildren(elementToSelect);
171
- }
172
- });
173
- _this.providerFactory = props.dataProviders || new _providerFactory.ProviderFactory();
174
- _this.serializer = new _.ReactSerializer(_this.deriveSerializerProps(props));
175
- _this.editorRef = props.innerRef || /*#__PURE__*/_react.default.createRef();
176
- _this.id = (0, _v.default)();
177
- (0, _performanceMeasures.startMeasure)("Renderer Render Time: ".concat(_this.id));
178
- return _this;
179
- }
180
- (0, _inherits2.default)(__RendererClassComponent, _PureComponent);
181
- return (0, _createClass2.default)(__RendererClassComponent, [{
182
- key: "anchorLinkAnalytics",
183
- value: function anchorLinkAnalytics() {
184
- var hash = window.location.hash && decodeURIComponent(window.location.hash.slice(1));
185
- var disableHeadingIDs = this.props.disableHeadingIDs;
186
- if (!disableHeadingIDs && hash && this.editorRef && this.editorRef.current instanceof HTMLElement) {
187
- var anchorLinkElement = document.getElementById(hash);
188
- // We are not use this.editorRef.querySelector here, instead we have this.editorRef.contains
189
- // because querySelector might fail if there are special characters in hash, and CSS.escape is still experimental.
190
- if (anchorLinkElement && this.editorRef.current.contains(anchorLinkElement)) {
191
- this.fireAnalyticsEvent({
192
- action: _analytics.ACTION.VIEWED,
193
- actionSubject: _analytics.ACTION_SUBJECT.ANCHOR_LINK,
194
- attributes: {
195
- platform: _events.PLATFORM.WEB,
196
- mode: _events.MODE.RENDERER
197
- },
198
- eventType: _analytics.EVENT_TYPE.UI
199
- });
200
- }
201
- }
202
- }
203
- }, {
204
- key: "componentDidMount",
205
- value: function componentDidMount() {
206
- var _this2 = this;
207
- this.fireAnalyticsEvent({
208
- action: _analytics.ACTION.STARTED,
209
- actionSubject: _analytics.ACTION_SUBJECT.RENDERER,
210
- attributes: {
211
- platform: _events.PLATFORM.WEB
212
- },
213
- eventType: _analytics.EVENT_TYPE.UI
214
- });
215
- this.rafID = requestAnimationFrame(function () {
216
- (0, _performanceMeasures.stopMeasure)("Renderer Render Time: ".concat(_this2.id), function (duration) {
217
- var _analyticsEventSeveri, _analyticsEventSeveri2, _this2$props;
218
- var analyticsEventSeverityTracking = _this2.props.analyticsEventSeverityTracking;
219
- var forceSeverityTracking = typeof analyticsEventSeverityTracking === 'undefined' && (0, _utils.shouldForceTracking)();
220
- var severity = !!forceSeverityTracking || analyticsEventSeverityTracking !== null && analyticsEventSeverityTracking !== void 0 && analyticsEventSeverityTracking.enabled ? (0, _utils.getAnalyticsEventSeverity)(duration, (_analyticsEventSeveri = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityNormalThreshold) !== null && _analyticsEventSeveri !== void 0 ? _analyticsEventSeveri : NORMAL_SEVERITY_THRESHOLD, (_analyticsEventSeveri2 = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityDegradedThreshold) !== null && _analyticsEventSeveri2 !== void 0 ? _analyticsEventSeveri2 : DEGRADED_SEVERITY_THRESHOLD) : undefined;
221
-
222
- // ED-16320: Check for explicit disable so that by default
223
- // it will still be enabled as it currently is. Then we can
224
- // progressively opt out synthetic tenants.
225
- var isTTRTrackingExplicitlyDisabled = ((_this2$props = _this2.props) === null || _this2$props === void 0 || (_this2$props = _this2$props.analyticsEventSeverityTracking) === null || _this2$props === void 0 ? void 0 : _this2$props.enabled) === false;
226
- if (!isTTRTrackingExplicitlyDisabled) {
227
- _this2.fireAnalyticsEvent({
228
- action: _analytics.ACTION.RENDERED,
229
- actionSubject: _analytics.ACTION_SUBJECT.RENDERER,
230
- attributes: {
231
- platform: _events.PLATFORM.WEB,
232
- duration: duration,
233
- distortedDuration:
234
- // Ignored via go/ees005
235
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
236
- _this2.renderedMeasurementDistortedDurationMonitor.distortedDuration,
237
- ttfb: (0, _navigation.getResponseEndTime)(),
238
- nodes: (0, _countNodes.countNodes)(_this2.props.document),
239
- severity: severity
240
- },
241
- eventType: _analytics.EVENT_TYPE.OPERATIONAL
242
- });
243
- }
244
-
245
- // Ignored via go/ees005
246
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
247
- _this2.renderedMeasurementDistortedDurationMonitor.cleanup();
248
- delete _this2.renderedMeasurementDistortedDurationMonitor;
249
- });
250
- _this2.anchorLinkAnalytics();
251
- });
252
- }
253
-
254
- // Ignored via go/ees005
255
- // eslint-disable-next-line react/no-unsafe
256
- }, {
257
- key: "UNSAFE_componentWillReceiveProps",
258
- value: function UNSAFE_componentWillReceiveProps(nextProps) {
259
- var nextMedia = nextProps.media || {};
260
- var media = this.props.media || {};
261
- if (nextProps.portal !== this.props.portal || nextProps.appearance !== this.props.appearance || nextProps.stickyHeaders !== this.props.stickyHeaders || nextProps.disableActions !== this.props.disableActions || nextProps.allowCustomPanels !== this.props.allowCustomPanels || nextProps.extensionHandlers !== this.props.extensionHandlers || nextProps.allowHeadingAnchorLinks !== this.props.allowHeadingAnchorLinks || nextProps.UNSTABLE_isPresentational !== this.props.UNSTABLE_isPresentational || nextMedia.allowLinking !== media.allowLinking) {
262
- this.serializer = new _.ReactSerializer(this.deriveSerializerProps(nextProps));
263
- }
264
- }
265
- }, {
266
- key: "deriveSerializerProps",
267
- value: function deriveSerializerProps(props) {
268
- // if just passed a boolean, change shape into object to simplify type
269
- var stickyHeaders = props.stickyHeaders ? props.stickyHeaders === true ? {} : props.stickyHeaders : undefined;
270
- var annotationProvider = props.annotationProvider;
271
- var allowAnnotationsDraftMode = Boolean(annotationProvider && annotationProvider.inlineComment && annotationProvider.inlineComment.allowDraftMode);
272
- var _this$createRendererC = this.createRendererContext(props.featureFlags, props.isTopLevelRenderer),
273
- featureFlags = _this$createRendererC.featureFlags;
274
- return {
275
- startPos: props.startPos,
276
- providers: this.providerFactory,
277
- eventHandlers: props.eventHandlers,
278
- extensionHandlers: props.extensionHandlers,
279
- portal: props.portal,
280
- objectContext: _objectSpread({
281
- adDoc: props.document,
282
- schema: props.schema
283
- }, props.rendererContext),
284
- appearance: props.appearance,
285
- disableHeadingIDs: props.disableHeadingIDs,
286
- disableActions: props.disableActions,
287
- allowHeadingAnchorLinks: props.allowHeadingAnchorLinks,
288
- allowColumnSorting: props.allowColumnSorting,
289
- fireAnalyticsEvent: this.fireAnalyticsEvent,
290
- shouldOpenMediaViewer: props.shouldOpenMediaViewer,
291
- allowAltTextOnImages: props.allowAltTextOnImages,
292
- stickyHeaders: stickyHeaders,
293
- allowMediaLinking: props.media && props.media.allowLinking,
294
- surroundTextNodesWithTextWrapper: allowAnnotationsDraftMode,
295
- media: props.media,
296
- emojiResourceConfig: props.emojiResourceConfig,
297
- smartLinks: props.smartLinks,
298
- extensionViewportSizes: props.extensionViewportSizes,
299
- allowCopyToClipboard: props.allowCopyToClipboard,
300
- allowWrapCodeBlock: props.allowWrapCodeBlock,
301
- allowCustomPanels: props.allowCustomPanels,
302
- allowAnnotations: props.allowAnnotations,
303
- allowSelectAllTrap: props.allowSelectAllTrap,
304
- allowPlaceholderText: props.allowPlaceholderText,
305
- nodeComponents: props.nodeComponents,
306
- isPresentational: props.UNSTABLE_isPresentational,
307
- // does not currently support SSR, should not be enabled in environments where Renderer is SSR-ed
308
- allowWindowedCodeBlock: featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.allowWindowedCodeBlock,
309
- isInsideOfInlineExtension: props.isInsideOfInlineExtension,
310
- textHighlighter: props.textHighlighter || props.UNSTABLE_textHighlighter,
311
- allowTableAlignment: props.UNSTABLE_allowTableAlignment,
312
- allowTableResizing: props.UNSTABLE_allowTableResizing
313
- };
314
- }
315
- }, {
316
- key: "render",
317
- value: function render() {
318
- var _this3 = this;
319
- var _this$props = this.props,
320
- adfDocument = _this$props.document,
321
- onComplete = _this$props.onComplete,
322
- onError = _this$props.onError,
323
- appearance = _this$props.appearance,
324
- allowAnnotations = _this$props.allowAnnotations,
325
- adfStage = _this$props.adfStage,
326
- truncated = _this$props.truncated,
327
- maxHeight = _this$props.maxHeight,
328
- fadeOutHeight = _this$props.fadeOutHeight,
329
- enableSsrInlineScripts = _this$props.enableSsrInlineScripts,
330
- noOpSSRInlineScript = _this$props.noOpSSRInlineScript,
331
- allowHeadingAnchorLinks = _this$props.allowHeadingAnchorLinks,
332
- allowPlaceholderText = _this$props.allowPlaceholderText,
333
- allowColumnSorting = _this$props.allowColumnSorting,
334
- allowCopyToClipboard = _this$props.allowCopyToClipboard,
335
- allowWrapCodeBlock = _this$props.allowWrapCodeBlock,
336
- allowCustomPanels = _this$props.allowCustomPanels,
337
- media = _this$props.media,
338
- skipValidation = _this$props.skipValidation;
339
- var rendererContext = this.createRendererContext(this.props.featureFlags, this.props.isTopLevelRenderer);
340
- var allowNestedHeaderLinks = (0, _links.isNestedHeaderLinksEnabled)(allowHeadingAnchorLinks);
341
- /**
342
- * Handle clicks inside renderer. If the click isn't on media, in the media picker, or on a
343
- * link, call the onUnhandledClick eventHandler (which in Jira for example, may switch the
344
- * renderer out for the editor).
345
- * @param event Click event anywhere inside renderer
346
- */
347
- var handleWrapperOnClick = function handleWrapperOnClick(event) {
348
- var _this3$props$eventHan;
349
- // Ignored via go/ees005
350
- // eslint-disable-next-line @atlaskit/editor/no-as-casting
351
- var targetElement = event.target;
352
-
353
- // ED-14862: When a user triple clicks to select a line of content inside a
354
- // a table cell, but the browser incorrectly moves the selection start or end into
355
- // a different table cell, we manually set the selection back to within the original
356
- // table cell the user intended to target
357
- _this3.handleMouseTripleClickInTables(event);
358
- if (!((_this3$props$eventHan = _this3.props.eventHandlers) !== null && _this3$props$eventHan !== void 0 && _this3$props$eventHan.onUnhandledClick)) {
359
- return;
360
- }
361
- if (!(targetElement instanceof window.Element)) {
362
- return;
363
- }
364
-
365
- // Ignored via go/ees005
366
- // eslint-disable-next-line @atlaskit/editor/no-as-casting
367
- var rendererWrapper = event.currentTarget;
368
-
369
- // Check if the click was on an interactive element
370
- var isInteractiveElementInTree = (0, _utils2.findInTree)(targetElement, rendererWrapper, _clickToEdit.isInteractiveElement);
371
- if (isInteractiveElementInTree) {
372
- return;
373
- }
374
-
375
- // Ensure that selecting text in the renderer doesn't trigger onUnhandledClick
376
- // This logic originated in jira-frontend:
377
- // src/packages/issue/issue-view/src/views/field/rich-text/rich-text-inline-edit-view.js
378
-
379
- // The selection is required to be checked in `onMouseDown` and here. If not here, a new
380
- // selection isn't reported; if not in `onMouseDown`, a click outside the selection will
381
- // return an empty selection, which will erroneously fire onUnhandledClick.
382
- var windowSelection = window.getSelection();
383
- var selection = windowSelection !== null ? windowSelection.toString() : undefined;
384
- var hasSelection = selection && selection.length !== 0;
385
- var hasSelectionMouseDown = _this3.mouseDownSelection && _this3.mouseDownSelection.length !== 0;
386
- var allowEditBasedOnSelection = !hasSelection && !hasSelectionMouseDown;
387
- if (allowEditBasedOnSelection) {
388
- _this3.props.eventHandlers.onUnhandledClick(event);
389
- }
390
- };
391
- try {
392
- var _rendererContext$feat;
393
- var schema = this.getSchema(this.props.schema, this.props.adfStage);
394
- var _renderDocument = (0, _.renderDocument)(this.props.shouldRemoveEmptySpaceAroundContent ? (0, _rendererHelper.removeEmptySpaceAroundContent)(adfDocument) : adfDocument, this.serializer, schema, adfStage, this.props.useSpecBasedValidator, this.id, this.fireAnalyticsEvent, this.props.unsupportedContentLevelsTracking, this.props.appearance, this.props.includeNodesCountInStats, skipValidation),
395
- result = _renderDocument.result,
396
- stat = _renderDocument.stat,
397
- pmDoc = _renderDocument.pmDoc;
398
- if (onComplete) {
399
- onComplete(stat);
400
- }
401
- var rendererOutput = (0, _react2.jsx)(_rendererContext.RendererContextProvider, {
402
- value: rendererContext
403
- }, (0, _react2.jsx)(_activeHeaderIdProvider.ActiveHeaderIdProvider, {
404
- value: (0, _links.getActiveHeadingId)(allowHeadingAnchorLinks)
405
- }, (0, _react2.jsx)(_analyticsContext.default.Provider, {
406
- value: {
407
- fireAnalyticsEvent: function fireAnalyticsEvent(event) {
408
- return _this3.fireAnalyticsEvent(event);
409
- }
410
- }
411
- }, (0, _react2.jsx)(_SmartCardStorage.Provider, null, (0, _react2.jsx)(_providerFactory.ProviderFactoryProvider, {
412
- value: this.providerFactory
413
- }, (0, _react2.jsx)(RendererWrapper, {
414
- allowAnnotations: allowAnnotations,
415
- appearance: appearance,
416
- allowNestedHeaderLinks: allowNestedHeaderLinks,
417
- allowColumnSorting: allowColumnSorting,
418
- allowCopyToClipboard: allowCopyToClipboard,
419
- allowWrapCodeBlock: allowWrapCodeBlock,
420
- allowCustomPanels: allowCustomPanels,
421
- allowPlaceholderText: allowPlaceholderText,
422
- useBlockRenderForCodeBlock: (_rendererContext$feat = rendererContext.featureFlags.useBlockRenderForCodeBlock) !== null && _rendererContext$feat !== void 0 ? _rendererContext$feat : true,
423
- addTelepointer: this.props.addTelepointer,
424
- innerRef: this.editorRef,
425
- onClick: handleWrapperOnClick,
426
- onMouseDown: this.onMouseDownEditView,
427
- ssr: media === null || media === void 0 ? void 0 : media.ssr,
428
- isInsideOfInlineExtension: this.props.isInsideOfInlineExtension,
429
- isTopLevelRenderer: rendererContext.isTopLevelRenderer
430
- }, enableSsrInlineScripts || noOpSSRInlineScript ? (0, _react2.jsx)(_breakoutSsr.BreakoutSSRInlineScript, {
431
- noOpSSRInlineScript: Boolean(noOpSSRInlineScript)
432
- }) : null, (0, _react2.jsx)(RendererActionsInternalUpdater, {
433
- doc: pmDoc,
434
- schema: schema,
435
- onAnalyticsEvent: this.fireAnalyticsEvent
436
- }, result)))))));
437
- var rendererResult = truncated ? (0, _react2.jsx)(_truncatedWrapper.TruncatedWrapper, {
438
- height: maxHeight,
439
- fadeHeight: fadeOutHeight
440
- }, rendererOutput) : rendererOutput;
441
- return (0, _react2.jsx)(_react.Fragment, null, rendererResult);
442
- } catch (e) {
443
- var _rendererContext$feat2;
444
- if (onError) {
445
- onError(e);
446
- }
447
- return (0, _react2.jsx)(RendererWrapper, {
448
- allowAnnotations: allowAnnotations,
449
- appearance: appearance,
450
- allowCopyToClipboard: allowCopyToClipboard,
451
- allowWrapCodeBlock: allowWrapCodeBlock,
452
- allowPlaceholderText: allowPlaceholderText,
453
- allowColumnSorting: allowColumnSorting,
454
- allowNestedHeaderLinks: allowNestedHeaderLinks,
455
- useBlockRenderForCodeBlock: (_rendererContext$feat2 = rendererContext.featureFlags.useBlockRenderForCodeBlock) !== null && _rendererContext$feat2 !== void 0 ? _rendererContext$feat2 : true,
456
- addTelepointer: this.props.addTelepointer,
457
- onClick: handleWrapperOnClick,
458
- isTopLevelRenderer: rendererContext.isTopLevelRenderer
459
- }, (0, _react2.jsx)(_ui.UnsupportedBlock, null));
460
- }
461
- }
462
- }, {
463
- key: "componentWillUnmount",
464
- value: function componentWillUnmount() {
465
- var dataProviders = this.props.dataProviders;
466
- if (this.rafID) {
467
- window.cancelAnimationFrame(this.rafID);
468
- }
469
-
470
- // if this is the ProviderFactory which was created in constructor
471
- // it's safe to destroy it on Renderer unmount
472
- if (!dataProviders) {
473
- this.providerFactory.destroy();
474
- }
475
- }
476
- }]);
477
- }(_react.PureComponent);
478
68
  var handleMouseTripleClickInTables = function handleMouseTripleClickInTables(event) {
479
- var _parentElement3, _parentElement4;
69
+ var _parentElement, _parentElement2;
480
70
  if (_browser.browser.ios || _browser.browser.android) {
481
71
  return;
482
72
  }
@@ -525,9 +115,9 @@ var handleMouseTripleClickInTables = function handleMouseTripleClickInTables(eve
525
115
 
526
116
  var elementToSelect = anchorInCell ? // Ignored via go/ees005
527
117
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
528
- (_parentElement3 = anchorNode.parentElement) === null || _parentElement3 === void 0 ? void 0 : _parentElement3.closest('div,p') : focusInCell ? // Ignored via go/ees005
118
+ (_parentElement = anchorNode.parentElement) === null || _parentElement === void 0 ? void 0 : _parentElement.closest('div,p') : focusInCell ? // Ignored via go/ees005
529
119
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
530
- (_parentElement4 = focusNode.parentElement) === null || _parentElement4 === void 0 ? void 0 : _parentElement4.closest('div,p') : tableCell;
120
+ (_parentElement2 = focusNode.parentElement) === null || _parentElement2 === void 0 ? void 0 : _parentElement2.closest('div,p') : tableCell;
531
121
  if (elementToSelect) {
532
122
  selection.selectAllChildren(elementToSelect);
533
123
  }
@@ -581,7 +171,11 @@ var handleWrapperOnClick = function handleWrapperOnClick(event, props, mouseDown
581
171
  props.eventHandlers.onUnhandledClick(event);
582
172
  }
583
173
  };
584
- var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
174
+
175
+ /**
176
+ * Exported due to enzyme test reliance on this component.
177
+ */
178
+ var RendererFunctionalComponent = exports.RendererFunctionalComponent = function RendererFunctionalComponent(props) {
585
179
  var createAnalyticsEvent = props.createAnalyticsEvent;
586
180
  var mouseDownSelection = (0, _react.useRef)(undefined);
587
181
  var providerFactory = (0, _react.useMemo)(function () {
@@ -729,9 +323,9 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
729
323
  });
730
324
  rafID = requestAnimationFrame(function () {
731
325
  (0, _performanceMeasures.stopMeasure)("Renderer Render Time: ".concat(id), function (duration) {
732
- var _analyticsEventSeveri3, _analyticsEventSeveri4;
326
+ var _analyticsEventSeveri, _analyticsEventSeveri2;
733
327
  var forceSeverityTracking = typeof analyticsEventSeverityTracking === 'undefined' && (0, _utils.shouldForceTracking)();
734
- var severity = !!forceSeverityTracking || analyticsEventSeverityTracking !== null && analyticsEventSeverityTracking !== void 0 && analyticsEventSeverityTracking.enabled ? (0, _utils.getAnalyticsEventSeverity)(duration, (_analyticsEventSeveri3 = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityNormalThreshold) !== null && _analyticsEventSeveri3 !== void 0 ? _analyticsEventSeveri3 : NORMAL_SEVERITY_THRESHOLD, (_analyticsEventSeveri4 = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityDegradedThreshold) !== null && _analyticsEventSeveri4 !== void 0 ? _analyticsEventSeveri4 : DEGRADED_SEVERITY_THRESHOLD) : undefined;
328
+ var severity = !!forceSeverityTracking || analyticsEventSeverityTracking !== null && analyticsEventSeverityTracking !== void 0 && analyticsEventSeverityTracking.enabled ? (0, _utils.getAnalyticsEventSeverity)(duration, (_analyticsEventSeveri = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityNormalThreshold) !== null && _analyticsEventSeveri !== void 0 ? _analyticsEventSeveri : NORMAL_SEVERITY_THRESHOLD, (_analyticsEventSeveri2 = analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.severityDegradedThreshold) !== null && _analyticsEventSeveri2 !== void 0 ? _analyticsEventSeveri2 : DEGRADED_SEVERITY_THRESHOLD) : undefined;
735
329
  var isTTRTrackingExplicitlyDisabled = (analyticsEventSeverityTracking === null || analyticsEventSeverityTracking === void 0 ? void 0 : analyticsEventSeverityTracking.enabled) === false;
736
330
  if (!isTTRTrackingExplicitlyDisabled) {
737
331
  _fireAnalyticsEvent({
@@ -775,18 +369,21 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
775
369
  // having a dependency array means we run stopMeasure twice per render
776
370
  // eslint-disable-next-line react-hooks/exhaustive-deps
777
371
  }, []);
372
+ var rendererContext = (0, _react.useMemo)(function () {
373
+ return createRendererContext(props.featureFlags, props.isTopLevelRenderer);
374
+ }, [props.featureFlags, props.isTopLevelRenderer, createRendererContext]);
778
375
  try {
779
- var _createRendererContex2, _props$media;
376
+ var _rendererContext$feat, _props$media;
780
377
  var schema = getSchema(props.schema, props.adfStage);
781
- var _renderDocument2 = (0, _.renderDocument)(props.shouldRemoveEmptySpaceAroundContent ? (0, _rendererHelper.removeEmptySpaceAroundContent)(props.document) : props.document, serializer, schema, props.adfStage, props.useSpecBasedValidator, id, _fireAnalyticsEvent, props.unsupportedContentLevelsTracking, props.appearance, props.includeNodesCountInStats, props.skipValidation),
782
- result = _renderDocument2.result,
783
- stat = _renderDocument2.stat,
784
- pmDoc = _renderDocument2.pmDoc;
378
+ var _renderDocument = (0, _.renderDocument)(props.shouldRemoveEmptySpaceAroundContent ? (0, _rendererHelper.removeEmptySpaceAroundContent)(props.document) : props.document, serializer, schema, props.adfStage, props.useSpecBasedValidator, id, _fireAnalyticsEvent, props.unsupportedContentLevelsTracking, props.appearance, props.includeNodesCountInStats, props.skipValidation),
379
+ result = _renderDocument.result,
380
+ stat = _renderDocument.stat,
381
+ pmDoc = _renderDocument.pmDoc;
785
382
  if (props.onComplete) {
786
383
  props.onComplete(stat);
787
384
  }
788
385
  var rendererOutput = (0, _react2.jsx)(_rendererContext.RendererContextProvider, {
789
- value: createRendererContext(props.featureFlags, props.isTopLevelRenderer)
386
+ value: rendererContext
790
387
  }, (0, _react2.jsx)(_activeHeaderIdProvider.ActiveHeaderIdProvider, {
791
388
  value: (0, _links.getActiveHeadingId)(props.allowHeadingAnchorLinks)
792
389
  }, (0, _react2.jsx)(_analyticsContext.default.Provider, {
@@ -806,7 +403,7 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
806
403
  allowWrapCodeBlock: props.allowWrapCodeBlock,
807
404
  allowCustomPanels: props.allowCustomPanels,
808
405
  allowPlaceholderText: props.allowPlaceholderText,
809
- useBlockRenderForCodeBlock: (_createRendererContex2 = createRendererContext(props.featureFlags, props.isTopLevelRenderer).featureFlags.useBlockRenderForCodeBlock) !== null && _createRendererContex2 !== void 0 ? _createRendererContex2 : true,
406
+ useBlockRenderForCodeBlock: (_rendererContext$feat = rendererContext.featureFlags.useBlockRenderForCodeBlock) !== null && _rendererContext$feat !== void 0 ? _rendererContext$feat : true,
810
407
  addTelepointer: props.addTelepointer,
811
408
  innerRef: editorRef,
812
409
  onClick: function onClick(event) {
@@ -815,7 +412,7 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
815
412
  onMouseDown: onMouseDownEditView,
816
413
  ssr: (_props$media = props.media) === null || _props$media === void 0 ? void 0 : _props$media.ssr,
817
414
  isInsideOfInlineExtension: props.isInsideOfInlineExtension,
818
- isTopLevelRenderer: createRendererContext(props.featureFlags, props.isTopLevelRenderer).isTopLevelRenderer,
415
+ isTopLevelRenderer: rendererContext.isTopLevelRenderer,
819
416
  shouldRemoveEmptySpaceAroundContent: props.shouldRemoveEmptySpaceAroundContent
820
417
  }, props.enableSsrInlineScripts || props.noOpSSRInlineScript ? (0, _react2.jsx)(_breakoutSsr.BreakoutSSRInlineScript, {
821
418
  noOpSSRInlineScript: Boolean(props.noOpSSRInlineScript)
@@ -830,7 +427,7 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
830
427
  }, rendererOutput) : rendererOutput;
831
428
  return (0, _react2.jsx)(_react.Fragment, null, rendererResult);
832
429
  } catch (e) {
833
- var _createRendererContex3;
430
+ var _rendererContext$feat2;
834
431
  if (props.onError) {
835
432
  props.onError(e);
836
433
  }
@@ -842,12 +439,12 @@ var RendererFunctionalComponent = function RendererFunctionalComponent(props) {
842
439
  allowPlaceholderText: props.allowPlaceholderText,
843
440
  allowColumnSorting: props.allowColumnSorting,
844
441
  allowNestedHeaderLinks: (0, _links.isNestedHeaderLinksEnabled)(props.allowHeadingAnchorLinks),
845
- useBlockRenderForCodeBlock: (_createRendererContex3 = createRendererContext(props.featureFlags, props.isTopLevelRenderer).featureFlags.useBlockRenderForCodeBlock) !== null && _createRendererContex3 !== void 0 ? _createRendererContex3 : true,
442
+ useBlockRenderForCodeBlock: (_rendererContext$feat2 = rendererContext.featureFlags.useBlockRenderForCodeBlock) !== null && _rendererContext$feat2 !== void 0 ? _rendererContext$feat2 : true,
846
443
  addTelepointer: props.addTelepointer,
847
444
  onClick: function onClick(event) {
848
445
  return handleWrapperOnClick(event, props, mouseDownSelection);
849
446
  },
850
- isTopLevelRenderer: createRendererContext(props.featureFlags, props.isTopLevelRenderer).isTopLevelRenderer
447
+ isTopLevelRenderer: rendererContext.isTopLevelRenderer
851
448
  }, (0, _react2.jsx)(_ui.UnsupportedBlock, null));
852
449
  }
853
450
  };
@@ -858,16 +455,7 @@ function Renderer(props) {
858
455
  isTopLevelRenderer = _useRendererContext.isTopLevelRenderer;
859
456
  var _ref = (0, _react.useContext)(_ValidationContext.ValidationContext) || {},
860
457
  skipValidation = _ref.skipValidation;
861
- return (0, _platformFeatureFlags.fg)('platform_editor_react18_renderer') ? (0, _react2.jsx)(RendererFunctionalComponent
862
- // Ignored via go/ees005
863
- // eslint-disable-next-line react/jsx-props-no-spreading
864
- , (0, _extends2.default)({}, props, {
865
- startPos: startPos,
866
- isTopLevelRenderer: isTopLevelRenderer,
867
- skipValidation: skipValidation
868
- })) :
869
- // eslint-disable-next-line react/jsx-pascal-case
870
- (0, _react2.jsx)(__RendererClassComponent
458
+ return (0, _react2.jsx)(RendererFunctionalComponent
871
459
  // Ignored via go/ees005
872
460
  // eslint-disable-next-line react/jsx-props-no-spreading
873
461
  , (0, _extends2.default)({}, props, {
@@ -63,6 +63,22 @@ var SelectionInlineCommentMounter = exports.SelectionInlineCommentMounter = /*#_
63
63
  // but we want to prioritize draft positions if they are being used by consumers
64
64
  var positionToAnnotate = draftDocumentPosition || documentPosition;
65
65
  if (!positionToAnnotate || !applyAnnotation) {
66
+ // TODO: EDITOR-595 - This analytic event is temporary and should be removed once the following issue
67
+ // has been identified and fixed: https://atlassian.slack.com/archives/C08JK0WSCH5/p1745902609966999
68
+ if (createAnalyticsEvent && (0, _platformFeatureFlags.fg)('platform_renderer_annotations_create_debug_logging')) {
69
+ createAnalyticsEvent({
70
+ action: 'failed',
71
+ actionSubject: 'applyAnnotation',
72
+ actionSubjectId: 'inlineCommentFailureReason',
73
+ attributes: {
74
+ reason: 'Annotation Position invalid',
75
+ draftDocumentPosition: draftDocumentPosition,
76
+ documentPosition: documentPosition,
77
+ applyAnnotation: !!applyAnnotation
78
+ },
79
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL
80
+ }).fire(_types.FabricChannel.editor);
81
+ }
66
82
  return false;
67
83
  }
68
84