@atlaskit/editor-core 189.6.0 → 189.6.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,12 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 189.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#60029](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/60029) [`b9826ea49c47`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b9826ea49c47) - Update dependencies that were impacted by HOT-106483 to latest.
8
+ - [#60013](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/60013) [`7d36e05bf828`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7d36e05bf828) - [No Issue] Cleaning up feature flag to reduce the amount of Re-renderings Editor suffers
9
+
3
10
  ## 189.6.0
4
11
 
5
12
  ### Minor Changes
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ComposableEditor = ComposableEditor;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
8
  var _react = require("react");
10
9
  var _react2 = require("@emotion/react");
11
10
  var _v = _interopRequireDefault(require("uuid/v4"));
@@ -14,7 +13,6 @@ var _analytics = require("@atlaskit/editor-common/analytics");
14
13
  var _ufo = require("@atlaskit/editor-common/ufo");
15
14
  var _utils = require("@atlaskit/editor-common/utils");
16
15
  var _editorPluginBase = require("@atlaskit/editor-plugin-base");
17
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
16
  var _actions = _interopRequireDefault(require("../actions"));
19
17
  var _featureFlagsFromProps = require("../create-editor/feature-flags-from-props");
20
18
  var _versionWrapper = require("../version-wrapper");
@@ -27,197 +25,26 @@ var _sendDurationAnalytics = _interopRequireDefault(require("./utils/sendDuratio
27
25
  var _trackEditorActions = _interopRequireDefault(require("./utils/trackEditorActions"));
28
26
  var _useMeasureEditorMountTime = _interopRequireDefault(require("./hooks/useMeasureEditorMountTime"));
29
27
  var _useProviderFactory = _interopRequireDefault(require("./hooks/useProviderFactory"));
30
- 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; }
31
- 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; } /** @jsx jsx */
28
+ var _useMemoEditorProps = _interopRequireDefault(require("./hooks/useMemoEditorProps"));
29
+ /** @jsx jsx */
30
+
32
31
  /**
33
32
  * Editor wrapper that deals with the lifecycle logic of the editor
34
33
  */
35
34
  function Editor(passedProps) {
36
- var _editorContext$editor;
37
- var defaultProps = {
38
- appearance: 'comment',
39
- disabled: false,
40
- quickInsert: true
41
- };
42
- var props = _objectSpread(_objectSpread({}, defaultProps), passedProps);
43
- var editorContext = (0, _EditorContext.useEditorContext)();
44
- var editorActions = (0, _react.useRef)((_editorContext$editor = editorContext === null || editorContext === void 0 ? void 0 : editorContext.editorActions) !== null && _editorContext$editor !== void 0 ? _editorContext$editor : new _actions.default());
45
- var startTime = (0, _react.useRef)(performance.now());
46
- var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
47
- createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
48
- var experienceStore = (0, _react.useRef)();
49
- var handleAnalyticsEvent = function handleAnalyticsEvent(data) {
50
- return (0, _analytics.fireAnalyticsEvent)(createAnalyticsEvent)(data);
51
- };
52
- (0, _hooks.useConstructor)(function () {
53
- (0, _trackEditorActions.default)(editorActions.current, props.performanceTracking, function (value) {
54
- return handleAnalyticsEvent(value);
55
- });
56
- });
57
- var getExperienceStore = function getExperienceStore() {
58
- return experienceStore.current;
59
- };
60
- var onEditorCreated = function onEditorCreated(instance) {
61
- var _props$featureFlags;
62
- editorActions.current._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, function () {
63
- return (0, _featureFlagsFromProps.createFeatureFlagsFromProps)(props);
64
- });
65
- if ((_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 && _props$featureFlags.ufo) {
66
- var _experienceStore$curr;
67
- experienceStore.current = _ufo.ExperienceStore.getInstance(instance.view);
68
- (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 || _experienceStore$curr.start(_ufo.EditorExperience.loadEditor, startTime.current);
69
- }
70
- if (props.onEditorReady) {
71
- var _props$performanceTra, _props$featureFlags2;
72
- var measureEditorReady = (props === null || props === void 0 || (_props$performanceTra = props.performanceTracking) === null || _props$performanceTra === void 0 || (_props$performanceTra = _props$performanceTra.onEditorReadyCallbackTracking) === null || _props$performanceTra === void 0 ? void 0 : _props$performanceTra.enabled) || ((_props$featureFlags2 = props.featureFlags) === null || _props$featureFlags2 === void 0 ? void 0 : _props$featureFlags2.ufo);
73
- measureEditorReady && (0, _utils.startMeasure)(_measureEnum.default.ON_EDITOR_READY_CALLBACK);
74
- props.onEditorReady(editorActions.current);
75
- measureEditorReady && (0, _utils.stopMeasure)(_measureEnum.default.ON_EDITOR_READY_CALLBACK, (0, _sendDurationAnalytics.default)(_analytics.ACTION.ON_EDITOR_READY_CALLBACK, props, getExperienceStore, createAnalyticsEvent));
76
- }
77
- };
78
- var onEditorDestroyed = function onEditorDestroyed(_instance) {
79
- var _props$onDestroy;
80
- editorActions.current._privateUnregisterEditor();
81
- (_props$onDestroy = props.onDestroy) === null || _props$onDestroy === void 0 || _props$onDestroy.call(props);
82
- };
83
- (0, _useMeasureEditorMountTime.default)(props, getExperienceStore, createAnalyticsEvent);
84
- var providerFactory = (0, _useProviderFactory.default)(props, editorActions.current, createAnalyticsEvent);
85
- return (0, _react2.jsx)(_editorInternal.EditorInternal, {
86
- props: props,
87
- handleAnalyticsEvent: handleAnalyticsEvent,
88
- createAnalyticsEvent: createAnalyticsEvent,
89
- preset: props.preset,
90
- handleSave: function handleSave(view) {
91
- var _props$onSave;
92
- return (_props$onSave = props.onSave) === null || _props$onSave === void 0 ? void 0 : _props$onSave.call(props, view);
93
- },
94
- editorActions: editorActions.current,
95
- onEditorCreated: onEditorCreated,
96
- onEditorDestroyed: onEditorDestroyed,
97
- providerFactory: providerFactory
98
- });
99
- }
100
- /**
101
- * Improved memonization for Editor wrapper that deals with the lifecycle logic of the editor
102
- */
103
- function EditorButBetter(passedProps) {
104
35
  var propsRef = (0, _react.useRef)(passedProps);
105
- var props = (0, _react.useMemo)(function () {
106
- // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
107
- var allProps = {
108
- preset: passedProps.preset,
109
- appearance: passedProps.appearance,
110
- contentComponents: passedProps.contentComponents,
111
- primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
112
- secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
113
- persistScrollGutter: passedProps.persistScrollGutter,
114
- quickInsert: passedProps.quickInsert,
115
- shouldFocus: passedProps.shouldFocus,
116
- disabled: passedProps.disabled,
117
- contextPanel: passedProps.contextPanel,
118
- errorReporterHandler: passedProps.errorReporterHandler,
119
- contentTransformerProvider: passedProps.contentTransformerProvider,
120
- maxHeight: passedProps.maxHeight,
121
- minHeight: passedProps.minHeight,
122
- placeholder: passedProps.placeholder,
123
- placeholderBracketHint: passedProps.placeholderBracketHint,
124
- defaultValue: passedProps.defaultValue,
125
- assistiveLabel: passedProps.assistiveLabel,
126
- popupsMountPoint: passedProps.popupsMountPoint,
127
- popupsBoundariesElement: passedProps.popupsBoundariesElement,
128
- popupsScrollableElement: passedProps.popupsScrollableElement,
129
- editorActions: passedProps.editorActions,
130
- onEditorReady: passedProps.onEditorReady,
131
- onDestroy: passedProps.onDestroy,
132
- onChange: passedProps.onChange,
133
- onCancel: passedProps.onCancel,
134
- inputSamplingLimit: passedProps.inputSamplingLimit,
135
- extensionProviders: passedProps.extensionProviders,
136
- UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
137
- trackValidTransactions: passedProps.trackValidTransactions,
138
- useStickyToolbar: passedProps.useStickyToolbar,
139
- featureFlags: passedProps.featureFlags,
140
- onSave: passedProps.onSave,
141
- performanceTracking: passedProps.performanceTracking,
142
- sanitizePrivateContent: passedProps.sanitizePrivateContent,
143
- media: passedProps.media,
144
- collabEdit: passedProps.collabEdit,
145
- primaryToolbarComponents: passedProps.primaryToolbarComponents,
146
- allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
147
- linking: passedProps.linking,
148
- hideAvatarGroup: passedProps.hideAvatarGroup,
149
- activityProvider: passedProps.activityProvider,
150
- searchProvider: passedProps.searchProvider,
151
- annotationProviders: passedProps.annotationProviders,
152
- collabEditProvider: passedProps.collabEditProvider,
153
- presenceProvider: passedProps.presenceProvider,
154
- emojiProvider: passedProps.emojiProvider,
155
- taskDecisionProvider: passedProps.taskDecisionProvider,
156
- legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
157
- mentionProvider: passedProps.mentionProvider,
158
- autoformattingProvider: passedProps.autoformattingProvider,
159
- macroProvider: passedProps.macroProvider,
160
- contextIdentifierProvider: passedProps.contextIdentifierProvider,
161
- allowExpand: passedProps.allowExpand,
162
- allowNestedTasks: passedProps.allowNestedTasks,
163
- allowBlockType: passedProps.allowBlockType,
164
- allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
165
- allowBreakout: passedProps.allowBreakout,
166
- allowRule: passedProps.allowRule,
167
- allowHelpDialog: passedProps.allowHelpDialog,
168
- allowJiraIssue: passedProps.allowJiraIssue,
169
- allowPanel: passedProps.allowPanel,
170
- allowExtension: passedProps.allowExtension,
171
- allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
172
- allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
173
- allowDate: passedProps.allowDate,
174
- allowLayouts: passedProps.allowLayouts,
175
- allowStatus: passedProps.allowStatus,
176
- allowTextAlignment: passedProps.allowTextAlignment,
177
- allowIndentation: passedProps.allowIndentation,
178
- showIndentationButtons: passedProps.showIndentationButtons,
179
- allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
180
- allowFindReplace: passedProps.allowFindReplace,
181
- UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
182
- allowBorderMark: passedProps.allowBorderMark,
183
- allowFragmentMark: passedProps.allowFragmentMark,
184
- autoScrollIntoView: passedProps.autoScrollIntoView,
185
- elementBrowser: passedProps.elementBrowser,
186
- maxContentSize: passedProps.maxContentSize,
187
- saveOnEnter: passedProps.saveOnEnter,
188
- feedbackInfo: passedProps.feedbackInfo,
189
- mention: passedProps.mention,
190
- mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
191
- uploadErrorHandler: passedProps.uploadErrorHandler,
192
- waitForMediaUpload: passedProps.waitForMediaUpload,
193
- extensionHandlers: passedProps.extensionHandlers,
194
- allowTextColor: passedProps.allowTextColor,
195
- allowTables: passedProps.allowTables,
196
- insertMenuItems: passedProps.insertMenuItems,
197
- UNSAFE_cards: passedProps.UNSAFE_cards,
198
- smartLinks: passedProps.smartLinks,
199
- allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
200
- codeBlock: passedProps.codeBlock,
201
- textFormatting: passedProps.textFormatting,
202
- dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
203
- };
204
- var defaultProps = {
205
- appearance: 'comment',
206
- disabled: false,
207
- quickInsert: true
208
- };
209
- var nextProps = _objectSpread(_objectSpread({}, defaultProps), allProps);
210
- propsRef.current = nextProps;
211
- return nextProps;
212
- }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
36
+ var props = (0, _useMemoEditorProps.default)(passedProps);
37
+ (0, _react.useMemo)(function () {
38
+ propsRef.current = props;
39
+ }, [props]);
213
40
  var editorContext = (0, _EditorContext.useEditorContext)();
214
41
  var editorActionsPlaceholderInstance = (0, _react.useMemo)(function () {
215
42
  return new _actions.default();
216
43
  }, []);
217
44
  var editorActions = editorContext.editorActions || editorActionsPlaceholderInstance;
218
45
  var startTime = (0, _react.useRef)(performance.now());
219
- var _useAnalyticsEvents2 = (0, _analyticsNext.useAnalyticsEvents)(),
220
- createAnalyticsEvent = _useAnalyticsEvents2.createAnalyticsEvent;
46
+ var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
47
+ createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
221
48
  var experienceStore = (0, _react.useRef)();
222
49
  var handleAnalyticsEvent = (0, _react.useCallback)(function (data) {
223
50
  (0, _analytics.fireAnalyticsEvent)(createAnalyticsEvent)(data);
@@ -241,9 +68,9 @@ function EditorButBetter(passedProps) {
241
68
  featureFlags = _propsRef$current.featureFlags;
242
69
  editorActions._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, getFeatureFlagsFromRef);
243
70
  if (featureFlags !== null && featureFlags !== void 0 && featureFlags.ufo) {
244
- var _experienceStore$curr2;
71
+ var _experienceStore$curr;
245
72
  experienceStore.current = _ufo.ExperienceStore.getInstance(instance.view);
246
- (_experienceStore$curr2 = experienceStore.current) === null || _experienceStore$curr2 === void 0 || _experienceStore$curr2.start(_ufo.EditorExperience.loadEditor, startTime.current);
73
+ (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 || _experienceStore$curr.start(_ufo.EditorExperience.loadEditor, startTime.current);
247
74
  }
248
75
  if (onEditorReady) {
249
76
  var _performanceTracking$;
@@ -294,13 +121,6 @@ function ComposableEditor(props) {
294
121
  editorSessionId: editorSessionId.current
295
122
  };
296
123
  }, [props.appearance]);
297
- if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.less-editor-props-rerendering')) {
298
- return (0, _react2.jsx)(_analyticsNamespacedContext.FabricEditorAnalyticsContext
299
- // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
300
- , {
301
- data: data
302
- }, (0, _react2.jsx)(EditorButBetter, props));
303
- }
304
124
  return (0, _react2.jsx)(_analyticsNamespacedContext.FabricEditorAnalyticsContext
305
125
  // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
306
126
  , {
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useMemoEditorProps = exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = require("react");
10
+ 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; }
11
+ 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; }
12
+ var useMemoEditorProps = exports.useMemoEditorProps = function useMemoEditorProps(passedProps) {
13
+ var memodProps = (0, _react.useMemo)(function () {
14
+ // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
15
+ var allProps = {
16
+ preset: passedProps.preset,
17
+ appearance: passedProps.appearance,
18
+ contentComponents: passedProps.contentComponents,
19
+ primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
20
+ secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
21
+ persistScrollGutter: passedProps.persistScrollGutter,
22
+ quickInsert: passedProps.quickInsert,
23
+ shouldFocus: passedProps.shouldFocus,
24
+ disabled: passedProps.disabled,
25
+ contextPanel: passedProps.contextPanel,
26
+ errorReporterHandler: passedProps.errorReporterHandler,
27
+ contentTransformerProvider: passedProps.contentTransformerProvider,
28
+ maxHeight: passedProps.maxHeight,
29
+ minHeight: passedProps.minHeight,
30
+ placeholder: passedProps.placeholder,
31
+ placeholderBracketHint: passedProps.placeholderBracketHint,
32
+ defaultValue: passedProps.defaultValue,
33
+ assistiveLabel: passedProps.assistiveLabel,
34
+ popupsMountPoint: passedProps.popupsMountPoint,
35
+ popupsBoundariesElement: passedProps.popupsBoundariesElement,
36
+ popupsScrollableElement: passedProps.popupsScrollableElement,
37
+ editorActions: passedProps.editorActions,
38
+ onEditorReady: passedProps.onEditorReady,
39
+ onDestroy: passedProps.onDestroy,
40
+ onChange: passedProps.onChange,
41
+ onCancel: passedProps.onCancel,
42
+ inputSamplingLimit: passedProps.inputSamplingLimit,
43
+ extensionProviders: passedProps.extensionProviders,
44
+ UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
45
+ trackValidTransactions: passedProps.trackValidTransactions,
46
+ useStickyToolbar: passedProps.useStickyToolbar,
47
+ featureFlags: passedProps.featureFlags,
48
+ onSave: passedProps.onSave,
49
+ performanceTracking: passedProps.performanceTracking,
50
+ sanitizePrivateContent: passedProps.sanitizePrivateContent,
51
+ media: passedProps.media,
52
+ collabEdit: passedProps.collabEdit,
53
+ primaryToolbarComponents: passedProps.primaryToolbarComponents,
54
+ allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
55
+ linking: passedProps.linking,
56
+ hideAvatarGroup: passedProps.hideAvatarGroup,
57
+ activityProvider: passedProps.activityProvider,
58
+ searchProvider: passedProps.searchProvider,
59
+ annotationProviders: passedProps.annotationProviders,
60
+ collabEditProvider: passedProps.collabEditProvider,
61
+ presenceProvider: passedProps.presenceProvider,
62
+ emojiProvider: passedProps.emojiProvider,
63
+ taskDecisionProvider: passedProps.taskDecisionProvider,
64
+ legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
65
+ mentionProvider: passedProps.mentionProvider,
66
+ autoformattingProvider: passedProps.autoformattingProvider,
67
+ macroProvider: passedProps.macroProvider,
68
+ contextIdentifierProvider: passedProps.contextIdentifierProvider,
69
+ allowExpand: passedProps.allowExpand,
70
+ allowNestedTasks: passedProps.allowNestedTasks,
71
+ allowBlockType: passedProps.allowBlockType,
72
+ allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
73
+ allowBreakout: passedProps.allowBreakout,
74
+ allowRule: passedProps.allowRule,
75
+ allowHelpDialog: passedProps.allowHelpDialog,
76
+ allowJiraIssue: passedProps.allowJiraIssue,
77
+ allowPanel: passedProps.allowPanel,
78
+ allowExtension: passedProps.allowExtension,
79
+ allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
80
+ allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
81
+ allowDate: passedProps.allowDate,
82
+ allowLayouts: passedProps.allowLayouts,
83
+ allowStatus: passedProps.allowStatus,
84
+ allowTextAlignment: passedProps.allowTextAlignment,
85
+ allowIndentation: passedProps.allowIndentation,
86
+ showIndentationButtons: passedProps.showIndentationButtons,
87
+ allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
88
+ allowFindReplace: passedProps.allowFindReplace,
89
+ UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
90
+ allowBorderMark: passedProps.allowBorderMark,
91
+ allowFragmentMark: passedProps.allowFragmentMark,
92
+ autoScrollIntoView: passedProps.autoScrollIntoView,
93
+ elementBrowser: passedProps.elementBrowser,
94
+ maxContentSize: passedProps.maxContentSize,
95
+ saveOnEnter: passedProps.saveOnEnter,
96
+ feedbackInfo: passedProps.feedbackInfo,
97
+ mention: passedProps.mention,
98
+ mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
99
+ uploadErrorHandler: passedProps.uploadErrorHandler,
100
+ waitForMediaUpload: passedProps.waitForMediaUpload,
101
+ extensionHandlers: passedProps.extensionHandlers,
102
+ allowTextColor: passedProps.allowTextColor,
103
+ allowTables: passedProps.allowTables,
104
+ insertMenuItems: passedProps.insertMenuItems,
105
+ UNSAFE_cards: passedProps.UNSAFE_cards,
106
+ smartLinks: passedProps.smartLinks,
107
+ allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
108
+ codeBlock: passedProps.codeBlock,
109
+ textFormatting: passedProps.textFormatting,
110
+ dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
111
+ };
112
+ var defaultProps = {
113
+ appearance: 'comment',
114
+ disabled: false,
115
+ quickInsert: true
116
+ };
117
+ var nextProps = _objectSpread(_objectSpread({}, defaultProps), allProps);
118
+ return nextProps;
119
+ }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
120
+ return memodProps;
121
+ };
122
+ var _default = exports.default = useMemoEditorProps;
@@ -5,4 +5,4 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.version = exports.name = void 0;
7
7
  var name = exports.name = "@atlaskit/editor-core";
8
- var version = exports.version = "189.6.0";
8
+ var version = exports.version = "189.6.1";
@@ -7,7 +7,6 @@ import { ACTION, fireAnalyticsEvent } from '@atlaskit/editor-common/analytics';
7
7
  import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
8
8
  import { getAnalyticsAppearance, startMeasure, stopMeasure } from '@atlaskit/editor-common/utils';
9
9
  import { basePlugin } from '@atlaskit/editor-plugin-base';
10
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
11
10
  import EditorActions from '../actions';
12
11
  import { createFeatureFlagsFromProps } from '../create-editor/feature-flags-from-props';
13
12
  import { name, version } from '../version-wrapper';
@@ -20,187 +19,17 @@ import sendDurationAnalytics from './utils/sendDurationAnalytics';
20
19
  import trackEditorActions from './utils/trackEditorActions';
21
20
  import useMeasureEditorMountTime from './hooks/useMeasureEditorMountTime';
22
21
  import useProviderFactory from './hooks/useProviderFactory';
22
+ import useMemoEditorProps from './hooks/useMemoEditorProps';
23
23
 
24
24
  /**
25
25
  * Editor wrapper that deals with the lifecycle logic of the editor
26
26
  */
27
27
  function Editor(passedProps) {
28
- var _editorContext$editor;
29
- const defaultProps = {
30
- appearance: 'comment',
31
- disabled: false,
32
- quickInsert: true
33
- };
34
- const props = {
35
- ...defaultProps,
36
- ...passedProps
37
- };
38
- const editorContext = useEditorContext();
39
- const editorActions = useRef((_editorContext$editor = editorContext === null || editorContext === void 0 ? void 0 : editorContext.editorActions) !== null && _editorContext$editor !== void 0 ? _editorContext$editor : new EditorActions());
40
- const startTime = useRef(performance.now());
41
- const {
42
- createAnalyticsEvent
43
- } = useAnalyticsEvents();
44
- const experienceStore = useRef();
45
- const handleAnalyticsEvent = data => fireAnalyticsEvent(createAnalyticsEvent)(data);
46
- useConstructor(() => {
47
- trackEditorActions(editorActions.current, props.performanceTracking, value => handleAnalyticsEvent(value));
48
- });
49
- const getExperienceStore = () => experienceStore.current;
50
- const onEditorCreated = instance => {
51
- var _props$featureFlags;
52
- editorActions.current._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, () => createFeatureFlagsFromProps(props));
53
- if ((_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 && _props$featureFlags.ufo) {
54
- var _experienceStore$curr;
55
- experienceStore.current = ExperienceStore.getInstance(instance.view);
56
- (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 ? void 0 : _experienceStore$curr.start(EditorExperience.loadEditor, startTime.current);
57
- }
58
- if (props.onEditorReady) {
59
- var _props$performanceTra, _props$performanceTra2, _props$featureFlags2;
60
- const measureEditorReady = (props === null || props === void 0 ? void 0 : (_props$performanceTra = props.performanceTracking) === null || _props$performanceTra === void 0 ? void 0 : (_props$performanceTra2 = _props$performanceTra.onEditorReadyCallbackTracking) === null || _props$performanceTra2 === void 0 ? void 0 : _props$performanceTra2.enabled) || ((_props$featureFlags2 = props.featureFlags) === null || _props$featureFlags2 === void 0 ? void 0 : _props$featureFlags2.ufo);
61
- measureEditorReady && startMeasure(measurements.ON_EDITOR_READY_CALLBACK);
62
- props.onEditorReady(editorActions.current);
63
- measureEditorReady && stopMeasure(measurements.ON_EDITOR_READY_CALLBACK, sendDurationAnalytics(ACTION.ON_EDITOR_READY_CALLBACK, props, getExperienceStore, createAnalyticsEvent));
64
- }
65
- };
66
- const onEditorDestroyed = _instance => {
67
- var _props$onDestroy;
68
- editorActions.current._privateUnregisterEditor();
69
- (_props$onDestroy = props.onDestroy) === null || _props$onDestroy === void 0 ? void 0 : _props$onDestroy.call(props);
70
- };
71
- useMeasureEditorMountTime(props, getExperienceStore, createAnalyticsEvent);
72
- const providerFactory = useProviderFactory(props, editorActions.current, createAnalyticsEvent);
73
- return jsx(EditorInternal, {
74
- props: props,
75
- handleAnalyticsEvent: handleAnalyticsEvent,
76
- createAnalyticsEvent: createAnalyticsEvent,
77
- preset: props.preset,
78
- handleSave: view => {
79
- var _props$onSave;
80
- return (_props$onSave = props.onSave) === null || _props$onSave === void 0 ? void 0 : _props$onSave.call(props, view);
81
- },
82
- editorActions: editorActions.current,
83
- onEditorCreated: onEditorCreated,
84
- onEditorDestroyed: onEditorDestroyed,
85
- providerFactory: providerFactory
86
- });
87
- }
88
- /**
89
- * Improved memonization for Editor wrapper that deals with the lifecycle logic of the editor
90
- */
91
- function EditorButBetter(passedProps) {
92
28
  const propsRef = useRef(passedProps);
93
- const props = useMemo(() => {
94
- // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
95
- const allProps = {
96
- preset: passedProps.preset,
97
- appearance: passedProps.appearance,
98
- contentComponents: passedProps.contentComponents,
99
- primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
100
- secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
101
- persistScrollGutter: passedProps.persistScrollGutter,
102
- quickInsert: passedProps.quickInsert,
103
- shouldFocus: passedProps.shouldFocus,
104
- disabled: passedProps.disabled,
105
- contextPanel: passedProps.contextPanel,
106
- errorReporterHandler: passedProps.errorReporterHandler,
107
- contentTransformerProvider: passedProps.contentTransformerProvider,
108
- maxHeight: passedProps.maxHeight,
109
- minHeight: passedProps.minHeight,
110
- placeholder: passedProps.placeholder,
111
- placeholderBracketHint: passedProps.placeholderBracketHint,
112
- defaultValue: passedProps.defaultValue,
113
- assistiveLabel: passedProps.assistiveLabel,
114
- popupsMountPoint: passedProps.popupsMountPoint,
115
- popupsBoundariesElement: passedProps.popupsBoundariesElement,
116
- popupsScrollableElement: passedProps.popupsScrollableElement,
117
- editorActions: passedProps.editorActions,
118
- onEditorReady: passedProps.onEditorReady,
119
- onDestroy: passedProps.onDestroy,
120
- onChange: passedProps.onChange,
121
- onCancel: passedProps.onCancel,
122
- inputSamplingLimit: passedProps.inputSamplingLimit,
123
- extensionProviders: passedProps.extensionProviders,
124
- UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
125
- trackValidTransactions: passedProps.trackValidTransactions,
126
- useStickyToolbar: passedProps.useStickyToolbar,
127
- featureFlags: passedProps.featureFlags,
128
- onSave: passedProps.onSave,
129
- performanceTracking: passedProps.performanceTracking,
130
- sanitizePrivateContent: passedProps.sanitizePrivateContent,
131
- media: passedProps.media,
132
- collabEdit: passedProps.collabEdit,
133
- primaryToolbarComponents: passedProps.primaryToolbarComponents,
134
- allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
135
- linking: passedProps.linking,
136
- hideAvatarGroup: passedProps.hideAvatarGroup,
137
- activityProvider: passedProps.activityProvider,
138
- searchProvider: passedProps.searchProvider,
139
- annotationProviders: passedProps.annotationProviders,
140
- collabEditProvider: passedProps.collabEditProvider,
141
- presenceProvider: passedProps.presenceProvider,
142
- emojiProvider: passedProps.emojiProvider,
143
- taskDecisionProvider: passedProps.taskDecisionProvider,
144
- legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
145
- mentionProvider: passedProps.mentionProvider,
146
- autoformattingProvider: passedProps.autoformattingProvider,
147
- macroProvider: passedProps.macroProvider,
148
- contextIdentifierProvider: passedProps.contextIdentifierProvider,
149
- allowExpand: passedProps.allowExpand,
150
- allowNestedTasks: passedProps.allowNestedTasks,
151
- allowBlockType: passedProps.allowBlockType,
152
- allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
153
- allowBreakout: passedProps.allowBreakout,
154
- allowRule: passedProps.allowRule,
155
- allowHelpDialog: passedProps.allowHelpDialog,
156
- allowJiraIssue: passedProps.allowJiraIssue,
157
- allowPanel: passedProps.allowPanel,
158
- allowExtension: passedProps.allowExtension,
159
- allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
160
- allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
161
- allowDate: passedProps.allowDate,
162
- allowLayouts: passedProps.allowLayouts,
163
- allowStatus: passedProps.allowStatus,
164
- allowTextAlignment: passedProps.allowTextAlignment,
165
- allowIndentation: passedProps.allowIndentation,
166
- showIndentationButtons: passedProps.showIndentationButtons,
167
- allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
168
- allowFindReplace: passedProps.allowFindReplace,
169
- UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
170
- allowBorderMark: passedProps.allowBorderMark,
171
- allowFragmentMark: passedProps.allowFragmentMark,
172
- autoScrollIntoView: passedProps.autoScrollIntoView,
173
- elementBrowser: passedProps.elementBrowser,
174
- maxContentSize: passedProps.maxContentSize,
175
- saveOnEnter: passedProps.saveOnEnter,
176
- feedbackInfo: passedProps.feedbackInfo,
177
- mention: passedProps.mention,
178
- mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
179
- uploadErrorHandler: passedProps.uploadErrorHandler,
180
- waitForMediaUpload: passedProps.waitForMediaUpload,
181
- extensionHandlers: passedProps.extensionHandlers,
182
- allowTextColor: passedProps.allowTextColor,
183
- allowTables: passedProps.allowTables,
184
- insertMenuItems: passedProps.insertMenuItems,
185
- UNSAFE_cards: passedProps.UNSAFE_cards,
186
- smartLinks: passedProps.smartLinks,
187
- allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
188
- codeBlock: passedProps.codeBlock,
189
- textFormatting: passedProps.textFormatting,
190
- dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
191
- };
192
- const defaultProps = {
193
- appearance: 'comment',
194
- disabled: false,
195
- quickInsert: true
196
- };
197
- const nextProps = {
198
- ...defaultProps,
199
- ...allProps
200
- };
201
- propsRef.current = nextProps;
202
- return nextProps;
203
- }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
29
+ const props = useMemoEditorProps(passedProps);
30
+ useMemo(() => {
31
+ propsRef.current = props;
32
+ }, [props]);
204
33
  const editorContext = useEditorContext();
205
34
  const editorActionsPlaceholderInstance = useMemo(() => new EditorActions(), []);
206
35
  const editorActions = editorContext.editorActions || editorActionsPlaceholderInstance;
@@ -230,9 +59,9 @@ function EditorButBetter(passedProps) {
230
59
  } = propsRef.current;
231
60
  editorActions._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, getFeatureFlagsFromRef);
232
61
  if (featureFlags !== null && featureFlags !== void 0 && featureFlags.ufo) {
233
- var _experienceStore$curr2;
62
+ var _experienceStore$curr;
234
63
  experienceStore.current = ExperienceStore.getInstance(instance.view);
235
- (_experienceStore$curr2 = experienceStore.current) === null || _experienceStore$curr2 === void 0 ? void 0 : _experienceStore$curr2.start(EditorExperience.loadEditor, startTime.current);
64
+ (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 ? void 0 : _experienceStore$curr.start(EditorExperience.loadEditor, startTime.current);
236
65
  }
237
66
  if (onEditorReady) {
238
67
  var _performanceTracking$;
@@ -287,13 +116,6 @@ export function ComposableEditor(props) {
287
116
  editorSessionId: editorSessionId.current
288
117
  };
289
118
  }, [props.appearance]);
290
- if (getBooleanFF('platform.editor.less-editor-props-rerendering')) {
291
- return jsx(FabricEditorAnalyticsContext
292
- // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
293
- , {
294
- data: data
295
- }, jsx(EditorButBetter, props));
296
- }
297
119
  return jsx(FabricEditorAnalyticsContext
298
120
  // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
299
121
  , {
@@ -0,0 +1,115 @@
1
+ import { useMemo } from 'react';
2
+ export const useMemoEditorProps = passedProps => {
3
+ const memodProps = useMemo(() => {
4
+ // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
5
+ const allProps = {
6
+ preset: passedProps.preset,
7
+ appearance: passedProps.appearance,
8
+ contentComponents: passedProps.contentComponents,
9
+ primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
10
+ secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
11
+ persistScrollGutter: passedProps.persistScrollGutter,
12
+ quickInsert: passedProps.quickInsert,
13
+ shouldFocus: passedProps.shouldFocus,
14
+ disabled: passedProps.disabled,
15
+ contextPanel: passedProps.contextPanel,
16
+ errorReporterHandler: passedProps.errorReporterHandler,
17
+ contentTransformerProvider: passedProps.contentTransformerProvider,
18
+ maxHeight: passedProps.maxHeight,
19
+ minHeight: passedProps.minHeight,
20
+ placeholder: passedProps.placeholder,
21
+ placeholderBracketHint: passedProps.placeholderBracketHint,
22
+ defaultValue: passedProps.defaultValue,
23
+ assistiveLabel: passedProps.assistiveLabel,
24
+ popupsMountPoint: passedProps.popupsMountPoint,
25
+ popupsBoundariesElement: passedProps.popupsBoundariesElement,
26
+ popupsScrollableElement: passedProps.popupsScrollableElement,
27
+ editorActions: passedProps.editorActions,
28
+ onEditorReady: passedProps.onEditorReady,
29
+ onDestroy: passedProps.onDestroy,
30
+ onChange: passedProps.onChange,
31
+ onCancel: passedProps.onCancel,
32
+ inputSamplingLimit: passedProps.inputSamplingLimit,
33
+ extensionProviders: passedProps.extensionProviders,
34
+ UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
35
+ trackValidTransactions: passedProps.trackValidTransactions,
36
+ useStickyToolbar: passedProps.useStickyToolbar,
37
+ featureFlags: passedProps.featureFlags,
38
+ onSave: passedProps.onSave,
39
+ performanceTracking: passedProps.performanceTracking,
40
+ sanitizePrivateContent: passedProps.sanitizePrivateContent,
41
+ media: passedProps.media,
42
+ collabEdit: passedProps.collabEdit,
43
+ primaryToolbarComponents: passedProps.primaryToolbarComponents,
44
+ allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
45
+ linking: passedProps.linking,
46
+ hideAvatarGroup: passedProps.hideAvatarGroup,
47
+ activityProvider: passedProps.activityProvider,
48
+ searchProvider: passedProps.searchProvider,
49
+ annotationProviders: passedProps.annotationProviders,
50
+ collabEditProvider: passedProps.collabEditProvider,
51
+ presenceProvider: passedProps.presenceProvider,
52
+ emojiProvider: passedProps.emojiProvider,
53
+ taskDecisionProvider: passedProps.taskDecisionProvider,
54
+ legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
55
+ mentionProvider: passedProps.mentionProvider,
56
+ autoformattingProvider: passedProps.autoformattingProvider,
57
+ macroProvider: passedProps.macroProvider,
58
+ contextIdentifierProvider: passedProps.contextIdentifierProvider,
59
+ allowExpand: passedProps.allowExpand,
60
+ allowNestedTasks: passedProps.allowNestedTasks,
61
+ allowBlockType: passedProps.allowBlockType,
62
+ allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
63
+ allowBreakout: passedProps.allowBreakout,
64
+ allowRule: passedProps.allowRule,
65
+ allowHelpDialog: passedProps.allowHelpDialog,
66
+ allowJiraIssue: passedProps.allowJiraIssue,
67
+ allowPanel: passedProps.allowPanel,
68
+ allowExtension: passedProps.allowExtension,
69
+ allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
70
+ allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
71
+ allowDate: passedProps.allowDate,
72
+ allowLayouts: passedProps.allowLayouts,
73
+ allowStatus: passedProps.allowStatus,
74
+ allowTextAlignment: passedProps.allowTextAlignment,
75
+ allowIndentation: passedProps.allowIndentation,
76
+ showIndentationButtons: passedProps.showIndentationButtons,
77
+ allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
78
+ allowFindReplace: passedProps.allowFindReplace,
79
+ UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
80
+ allowBorderMark: passedProps.allowBorderMark,
81
+ allowFragmentMark: passedProps.allowFragmentMark,
82
+ autoScrollIntoView: passedProps.autoScrollIntoView,
83
+ elementBrowser: passedProps.elementBrowser,
84
+ maxContentSize: passedProps.maxContentSize,
85
+ saveOnEnter: passedProps.saveOnEnter,
86
+ feedbackInfo: passedProps.feedbackInfo,
87
+ mention: passedProps.mention,
88
+ mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
89
+ uploadErrorHandler: passedProps.uploadErrorHandler,
90
+ waitForMediaUpload: passedProps.waitForMediaUpload,
91
+ extensionHandlers: passedProps.extensionHandlers,
92
+ allowTextColor: passedProps.allowTextColor,
93
+ allowTables: passedProps.allowTables,
94
+ insertMenuItems: passedProps.insertMenuItems,
95
+ UNSAFE_cards: passedProps.UNSAFE_cards,
96
+ smartLinks: passedProps.smartLinks,
97
+ allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
98
+ codeBlock: passedProps.codeBlock,
99
+ textFormatting: passedProps.textFormatting,
100
+ dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
101
+ };
102
+ const defaultProps = {
103
+ appearance: 'comment',
104
+ disabled: false,
105
+ quickInsert: true
106
+ };
107
+ const nextProps = {
108
+ ...defaultProps,
109
+ ...allProps
110
+ };
111
+ return nextProps;
112
+ }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
113
+ return memodProps;
114
+ };
115
+ export default useMemoEditorProps;
@@ -1,2 +1,2 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "189.6.0";
2
+ export const version = "189.6.1";
@@ -1,6 +1,3 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- 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; }
3
- 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) { _defineProperty(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; }
4
1
  /** @jsx jsx */
5
2
  import { useRef, useCallback, useMemo } from 'react';
6
3
  import { jsx } from '@emotion/react';
@@ -10,7 +7,6 @@ import { ACTION, fireAnalyticsEvent } from '@atlaskit/editor-common/analytics';
10
7
  import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
11
8
  import { getAnalyticsAppearance, startMeasure, stopMeasure } from '@atlaskit/editor-common/utils';
12
9
  import { basePlugin } from '@atlaskit/editor-plugin-base';
13
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
14
10
  import EditorActions from '../actions';
15
11
  import { createFeatureFlagsFromProps } from '../create-editor/feature-flags-from-props';
16
12
  import { name, version } from '../version-wrapper';
@@ -23,196 +19,25 @@ import sendDurationAnalytics from './utils/sendDurationAnalytics';
23
19
  import trackEditorActions from './utils/trackEditorActions';
24
20
  import useMeasureEditorMountTime from './hooks/useMeasureEditorMountTime';
25
21
  import useProviderFactory from './hooks/useProviderFactory';
22
+ import useMemoEditorProps from './hooks/useMemoEditorProps';
26
23
 
27
24
  /**
28
25
  * Editor wrapper that deals with the lifecycle logic of the editor
29
26
  */
30
27
  function Editor(passedProps) {
31
- var _editorContext$editor;
32
- var defaultProps = {
33
- appearance: 'comment',
34
- disabled: false,
35
- quickInsert: true
36
- };
37
- var props = _objectSpread(_objectSpread({}, defaultProps), passedProps);
38
- var editorContext = useEditorContext();
39
- var editorActions = useRef((_editorContext$editor = editorContext === null || editorContext === void 0 ? void 0 : editorContext.editorActions) !== null && _editorContext$editor !== void 0 ? _editorContext$editor : new EditorActions());
40
- var startTime = useRef(performance.now());
41
- var _useAnalyticsEvents = useAnalyticsEvents(),
42
- createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
43
- var experienceStore = useRef();
44
- var handleAnalyticsEvent = function handleAnalyticsEvent(data) {
45
- return fireAnalyticsEvent(createAnalyticsEvent)(data);
46
- };
47
- useConstructor(function () {
48
- trackEditorActions(editorActions.current, props.performanceTracking, function (value) {
49
- return handleAnalyticsEvent(value);
50
- });
51
- });
52
- var getExperienceStore = function getExperienceStore() {
53
- return experienceStore.current;
54
- };
55
- var onEditorCreated = function onEditorCreated(instance) {
56
- var _props$featureFlags;
57
- editorActions.current._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, function () {
58
- return createFeatureFlagsFromProps(props);
59
- });
60
- if ((_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 && _props$featureFlags.ufo) {
61
- var _experienceStore$curr;
62
- experienceStore.current = ExperienceStore.getInstance(instance.view);
63
- (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 || _experienceStore$curr.start(EditorExperience.loadEditor, startTime.current);
64
- }
65
- if (props.onEditorReady) {
66
- var _props$performanceTra, _props$featureFlags2;
67
- var measureEditorReady = (props === null || props === void 0 || (_props$performanceTra = props.performanceTracking) === null || _props$performanceTra === void 0 || (_props$performanceTra = _props$performanceTra.onEditorReadyCallbackTracking) === null || _props$performanceTra === void 0 ? void 0 : _props$performanceTra.enabled) || ((_props$featureFlags2 = props.featureFlags) === null || _props$featureFlags2 === void 0 ? void 0 : _props$featureFlags2.ufo);
68
- measureEditorReady && startMeasure(measurements.ON_EDITOR_READY_CALLBACK);
69
- props.onEditorReady(editorActions.current);
70
- measureEditorReady && stopMeasure(measurements.ON_EDITOR_READY_CALLBACK, sendDurationAnalytics(ACTION.ON_EDITOR_READY_CALLBACK, props, getExperienceStore, createAnalyticsEvent));
71
- }
72
- };
73
- var onEditorDestroyed = function onEditorDestroyed(_instance) {
74
- var _props$onDestroy;
75
- editorActions.current._privateUnregisterEditor();
76
- (_props$onDestroy = props.onDestroy) === null || _props$onDestroy === void 0 || _props$onDestroy.call(props);
77
- };
78
- useMeasureEditorMountTime(props, getExperienceStore, createAnalyticsEvent);
79
- var providerFactory = useProviderFactory(props, editorActions.current, createAnalyticsEvent);
80
- return jsx(EditorInternal, {
81
- props: props,
82
- handleAnalyticsEvent: handleAnalyticsEvent,
83
- createAnalyticsEvent: createAnalyticsEvent,
84
- preset: props.preset,
85
- handleSave: function handleSave(view) {
86
- var _props$onSave;
87
- return (_props$onSave = props.onSave) === null || _props$onSave === void 0 ? void 0 : _props$onSave.call(props, view);
88
- },
89
- editorActions: editorActions.current,
90
- onEditorCreated: onEditorCreated,
91
- onEditorDestroyed: onEditorDestroyed,
92
- providerFactory: providerFactory
93
- });
94
- }
95
- /**
96
- * Improved memonization for Editor wrapper that deals with the lifecycle logic of the editor
97
- */
98
- function EditorButBetter(passedProps) {
99
28
  var propsRef = useRef(passedProps);
100
- var props = useMemo(function () {
101
- // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
102
- var allProps = {
103
- preset: passedProps.preset,
104
- appearance: passedProps.appearance,
105
- contentComponents: passedProps.contentComponents,
106
- primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
107
- secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
108
- persistScrollGutter: passedProps.persistScrollGutter,
109
- quickInsert: passedProps.quickInsert,
110
- shouldFocus: passedProps.shouldFocus,
111
- disabled: passedProps.disabled,
112
- contextPanel: passedProps.contextPanel,
113
- errorReporterHandler: passedProps.errorReporterHandler,
114
- contentTransformerProvider: passedProps.contentTransformerProvider,
115
- maxHeight: passedProps.maxHeight,
116
- minHeight: passedProps.minHeight,
117
- placeholder: passedProps.placeholder,
118
- placeholderBracketHint: passedProps.placeholderBracketHint,
119
- defaultValue: passedProps.defaultValue,
120
- assistiveLabel: passedProps.assistiveLabel,
121
- popupsMountPoint: passedProps.popupsMountPoint,
122
- popupsBoundariesElement: passedProps.popupsBoundariesElement,
123
- popupsScrollableElement: passedProps.popupsScrollableElement,
124
- editorActions: passedProps.editorActions,
125
- onEditorReady: passedProps.onEditorReady,
126
- onDestroy: passedProps.onDestroy,
127
- onChange: passedProps.onChange,
128
- onCancel: passedProps.onCancel,
129
- inputSamplingLimit: passedProps.inputSamplingLimit,
130
- extensionProviders: passedProps.extensionProviders,
131
- UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
132
- trackValidTransactions: passedProps.trackValidTransactions,
133
- useStickyToolbar: passedProps.useStickyToolbar,
134
- featureFlags: passedProps.featureFlags,
135
- onSave: passedProps.onSave,
136
- performanceTracking: passedProps.performanceTracking,
137
- sanitizePrivateContent: passedProps.sanitizePrivateContent,
138
- media: passedProps.media,
139
- collabEdit: passedProps.collabEdit,
140
- primaryToolbarComponents: passedProps.primaryToolbarComponents,
141
- allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
142
- linking: passedProps.linking,
143
- hideAvatarGroup: passedProps.hideAvatarGroup,
144
- activityProvider: passedProps.activityProvider,
145
- searchProvider: passedProps.searchProvider,
146
- annotationProviders: passedProps.annotationProviders,
147
- collabEditProvider: passedProps.collabEditProvider,
148
- presenceProvider: passedProps.presenceProvider,
149
- emojiProvider: passedProps.emojiProvider,
150
- taskDecisionProvider: passedProps.taskDecisionProvider,
151
- legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
152
- mentionProvider: passedProps.mentionProvider,
153
- autoformattingProvider: passedProps.autoformattingProvider,
154
- macroProvider: passedProps.macroProvider,
155
- contextIdentifierProvider: passedProps.contextIdentifierProvider,
156
- allowExpand: passedProps.allowExpand,
157
- allowNestedTasks: passedProps.allowNestedTasks,
158
- allowBlockType: passedProps.allowBlockType,
159
- allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
160
- allowBreakout: passedProps.allowBreakout,
161
- allowRule: passedProps.allowRule,
162
- allowHelpDialog: passedProps.allowHelpDialog,
163
- allowJiraIssue: passedProps.allowJiraIssue,
164
- allowPanel: passedProps.allowPanel,
165
- allowExtension: passedProps.allowExtension,
166
- allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
167
- allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
168
- allowDate: passedProps.allowDate,
169
- allowLayouts: passedProps.allowLayouts,
170
- allowStatus: passedProps.allowStatus,
171
- allowTextAlignment: passedProps.allowTextAlignment,
172
- allowIndentation: passedProps.allowIndentation,
173
- showIndentationButtons: passedProps.showIndentationButtons,
174
- allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
175
- allowFindReplace: passedProps.allowFindReplace,
176
- UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
177
- allowBorderMark: passedProps.allowBorderMark,
178
- allowFragmentMark: passedProps.allowFragmentMark,
179
- autoScrollIntoView: passedProps.autoScrollIntoView,
180
- elementBrowser: passedProps.elementBrowser,
181
- maxContentSize: passedProps.maxContentSize,
182
- saveOnEnter: passedProps.saveOnEnter,
183
- feedbackInfo: passedProps.feedbackInfo,
184
- mention: passedProps.mention,
185
- mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
186
- uploadErrorHandler: passedProps.uploadErrorHandler,
187
- waitForMediaUpload: passedProps.waitForMediaUpload,
188
- extensionHandlers: passedProps.extensionHandlers,
189
- allowTextColor: passedProps.allowTextColor,
190
- allowTables: passedProps.allowTables,
191
- insertMenuItems: passedProps.insertMenuItems,
192
- UNSAFE_cards: passedProps.UNSAFE_cards,
193
- smartLinks: passedProps.smartLinks,
194
- allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
195
- codeBlock: passedProps.codeBlock,
196
- textFormatting: passedProps.textFormatting,
197
- dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
198
- };
199
- var defaultProps = {
200
- appearance: 'comment',
201
- disabled: false,
202
- quickInsert: true
203
- };
204
- var nextProps = _objectSpread(_objectSpread({}, defaultProps), allProps);
205
- propsRef.current = nextProps;
206
- return nextProps;
207
- }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
29
+ var props = useMemoEditorProps(passedProps);
30
+ useMemo(function () {
31
+ propsRef.current = props;
32
+ }, [props]);
208
33
  var editorContext = useEditorContext();
209
34
  var editorActionsPlaceholderInstance = useMemo(function () {
210
35
  return new EditorActions();
211
36
  }, []);
212
37
  var editorActions = editorContext.editorActions || editorActionsPlaceholderInstance;
213
38
  var startTime = useRef(performance.now());
214
- var _useAnalyticsEvents2 = useAnalyticsEvents(),
215
- createAnalyticsEvent = _useAnalyticsEvents2.createAnalyticsEvent;
39
+ var _useAnalyticsEvents = useAnalyticsEvents(),
40
+ createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
216
41
  var experienceStore = useRef();
217
42
  var handleAnalyticsEvent = useCallback(function (data) {
218
43
  fireAnalyticsEvent(createAnalyticsEvent)(data);
@@ -236,9 +61,9 @@ function EditorButBetter(passedProps) {
236
61
  featureFlags = _propsRef$current.featureFlags;
237
62
  editorActions._privateRegisterEditor(instance.view, instance.eventDispatcher, instance.transformer, getFeatureFlagsFromRef);
238
63
  if (featureFlags !== null && featureFlags !== void 0 && featureFlags.ufo) {
239
- var _experienceStore$curr2;
64
+ var _experienceStore$curr;
240
65
  experienceStore.current = ExperienceStore.getInstance(instance.view);
241
- (_experienceStore$curr2 = experienceStore.current) === null || _experienceStore$curr2 === void 0 || _experienceStore$curr2.start(EditorExperience.loadEditor, startTime.current);
66
+ (_experienceStore$curr = experienceStore.current) === null || _experienceStore$curr === void 0 || _experienceStore$curr.start(EditorExperience.loadEditor, startTime.current);
242
67
  }
243
68
  if (onEditorReady) {
244
69
  var _performanceTracking$;
@@ -289,13 +114,6 @@ export function ComposableEditor(props) {
289
114
  editorSessionId: editorSessionId.current
290
115
  };
291
116
  }, [props.appearance]);
292
- if (getBooleanFF('platform.editor.less-editor-props-rerendering')) {
293
- return jsx(FabricEditorAnalyticsContext
294
- // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
295
- , {
296
- data: data
297
- }, jsx(EditorButBetter, props));
298
- }
299
117
  return jsx(FabricEditorAnalyticsContext
300
118
  // @ts-expect-error Type 'string' is not assignable to type '"editorCore" | "renderer"'.
301
119
  , {
@@ -0,0 +1,115 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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) { _defineProperty(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; }
4
+ import { useMemo } from 'react';
5
+ export var useMemoEditorProps = function useMemoEditorProps(passedProps) {
6
+ var memodProps = useMemo(function () {
7
+ // That sounds awful but this is the only way to make sure we didn't missed any EditorProps
8
+ var allProps = {
9
+ preset: passedProps.preset,
10
+ appearance: passedProps.appearance,
11
+ contentComponents: passedProps.contentComponents,
12
+ primaryToolbarIconBefore: passedProps.primaryToolbarIconBefore,
13
+ secondaryToolbarComponents: passedProps.secondaryToolbarComponents,
14
+ persistScrollGutter: passedProps.persistScrollGutter,
15
+ quickInsert: passedProps.quickInsert,
16
+ shouldFocus: passedProps.shouldFocus,
17
+ disabled: passedProps.disabled,
18
+ contextPanel: passedProps.contextPanel,
19
+ errorReporterHandler: passedProps.errorReporterHandler,
20
+ contentTransformerProvider: passedProps.contentTransformerProvider,
21
+ maxHeight: passedProps.maxHeight,
22
+ minHeight: passedProps.minHeight,
23
+ placeholder: passedProps.placeholder,
24
+ placeholderBracketHint: passedProps.placeholderBracketHint,
25
+ defaultValue: passedProps.defaultValue,
26
+ assistiveLabel: passedProps.assistiveLabel,
27
+ popupsMountPoint: passedProps.popupsMountPoint,
28
+ popupsBoundariesElement: passedProps.popupsBoundariesElement,
29
+ popupsScrollableElement: passedProps.popupsScrollableElement,
30
+ editorActions: passedProps.editorActions,
31
+ onEditorReady: passedProps.onEditorReady,
32
+ onDestroy: passedProps.onDestroy,
33
+ onChange: passedProps.onChange,
34
+ onCancel: passedProps.onCancel,
35
+ inputSamplingLimit: passedProps.inputSamplingLimit,
36
+ extensionProviders: passedProps.extensionProviders,
37
+ UNSAFE_useAnalyticsContext: passedProps.UNSAFE_useAnalyticsContext,
38
+ trackValidTransactions: passedProps.trackValidTransactions,
39
+ useStickyToolbar: passedProps.useStickyToolbar,
40
+ featureFlags: passedProps.featureFlags,
41
+ onSave: passedProps.onSave,
42
+ performanceTracking: passedProps.performanceTracking,
43
+ sanitizePrivateContent: passedProps.sanitizePrivateContent,
44
+ media: passedProps.media,
45
+ collabEdit: passedProps.collabEdit,
46
+ primaryToolbarComponents: passedProps.primaryToolbarComponents,
47
+ allowUndoRedoButtons: passedProps.allowUndoRedoButtons,
48
+ linking: passedProps.linking,
49
+ hideAvatarGroup: passedProps.hideAvatarGroup,
50
+ activityProvider: passedProps.activityProvider,
51
+ searchProvider: passedProps.searchProvider,
52
+ annotationProviders: passedProps.annotationProviders,
53
+ collabEditProvider: passedProps.collabEditProvider,
54
+ presenceProvider: passedProps.presenceProvider,
55
+ emojiProvider: passedProps.emojiProvider,
56
+ taskDecisionProvider: passedProps.taskDecisionProvider,
57
+ legacyImageUploadProvider: passedProps.legacyImageUploadProvider,
58
+ mentionProvider: passedProps.mentionProvider,
59
+ autoformattingProvider: passedProps.autoformattingProvider,
60
+ macroProvider: passedProps.macroProvider,
61
+ contextIdentifierProvider: passedProps.contextIdentifierProvider,
62
+ allowExpand: passedProps.allowExpand,
63
+ allowNestedTasks: passedProps.allowNestedTasks,
64
+ allowBlockType: passedProps.allowBlockType,
65
+ allowTasksAndDecisions: passedProps.allowTasksAndDecisions,
66
+ allowBreakout: passedProps.allowBreakout,
67
+ allowRule: passedProps.allowRule,
68
+ allowHelpDialog: passedProps.allowHelpDialog,
69
+ allowJiraIssue: passedProps.allowJiraIssue,
70
+ allowPanel: passedProps.allowPanel,
71
+ allowExtension: passedProps.allowExtension,
72
+ allowConfluenceInlineComment: passedProps.allowConfluenceInlineComment,
73
+ allowTemplatePlaceholders: passedProps.allowTemplatePlaceholders,
74
+ allowDate: passedProps.allowDate,
75
+ allowLayouts: passedProps.allowLayouts,
76
+ allowStatus: passedProps.allowStatus,
77
+ allowTextAlignment: passedProps.allowTextAlignment,
78
+ allowIndentation: passedProps.allowIndentation,
79
+ showIndentationButtons: passedProps.showIndentationButtons,
80
+ allowNewInsertionBehaviour: passedProps.allowNewInsertionBehaviour,
81
+ allowFindReplace: passedProps.allowFindReplace,
82
+ UNSAFE_allowBorderMark: passedProps.UNSAFE_allowBorderMark,
83
+ allowBorderMark: passedProps.allowBorderMark,
84
+ allowFragmentMark: passedProps.allowFragmentMark,
85
+ autoScrollIntoView: passedProps.autoScrollIntoView,
86
+ elementBrowser: passedProps.elementBrowser,
87
+ maxContentSize: passedProps.maxContentSize,
88
+ saveOnEnter: passedProps.saveOnEnter,
89
+ feedbackInfo: passedProps.feedbackInfo,
90
+ mention: passedProps.mention,
91
+ mentionInsertDisplayName: passedProps.mentionInsertDisplayName,
92
+ uploadErrorHandler: passedProps.uploadErrorHandler,
93
+ waitForMediaUpload: passedProps.waitForMediaUpload,
94
+ extensionHandlers: passedProps.extensionHandlers,
95
+ allowTextColor: passedProps.allowTextColor,
96
+ allowTables: passedProps.allowTables,
97
+ insertMenuItems: passedProps.insertMenuItems,
98
+ UNSAFE_cards: passedProps.UNSAFE_cards,
99
+ smartLinks: passedProps.smartLinks,
100
+ allowAnalyticsGASV3: passedProps.allowAnalyticsGASV3,
101
+ codeBlock: passedProps.codeBlock,
102
+ textFormatting: passedProps.textFormatting,
103
+ dangerouslyAppendPlugins: passedProps.dangerouslyAppendPlugins
104
+ };
105
+ var defaultProps = {
106
+ appearance: 'comment',
107
+ disabled: false,
108
+ quickInsert: true
109
+ };
110
+ var nextProps = _objectSpread(_objectSpread({}, defaultProps), allProps);
111
+ return nextProps;
112
+ }, [passedProps.preset, passedProps.appearance, passedProps.contentComponents, passedProps.primaryToolbarIconBefore, passedProps.secondaryToolbarComponents, passedProps.persistScrollGutter, passedProps.quickInsert, passedProps.shouldFocus, passedProps.disabled, passedProps.contextPanel, passedProps.errorReporterHandler, passedProps.contentTransformerProvider, passedProps.maxHeight, passedProps.minHeight, passedProps.placeholder, passedProps.placeholderBracketHint, passedProps.defaultValue, passedProps.assistiveLabel, passedProps.popupsMountPoint, passedProps.popupsBoundariesElement, passedProps.popupsScrollableElement, passedProps.editorActions, passedProps.onEditorReady, passedProps.onDestroy, passedProps.onChange, passedProps.onCancel, passedProps.inputSamplingLimit, passedProps.extensionProviders, passedProps.UNSAFE_useAnalyticsContext, passedProps.trackValidTransactions, passedProps.useStickyToolbar, passedProps.featureFlags, passedProps.onSave, passedProps.performanceTracking, passedProps.sanitizePrivateContent, passedProps.media, passedProps.collabEdit, passedProps.primaryToolbarComponents, passedProps.allowUndoRedoButtons, passedProps.linking, passedProps.hideAvatarGroup, passedProps.activityProvider, passedProps.searchProvider, passedProps.annotationProviders, passedProps.collabEditProvider, passedProps.presenceProvider, passedProps.emojiProvider, passedProps.taskDecisionProvider, passedProps.legacyImageUploadProvider, passedProps.mentionProvider, passedProps.autoformattingProvider, passedProps.macroProvider, passedProps.contextIdentifierProvider, passedProps.allowExpand, passedProps.allowNestedTasks, passedProps.allowBlockType, passedProps.allowTasksAndDecisions, passedProps.allowBreakout, passedProps.allowRule, passedProps.allowHelpDialog, passedProps.allowJiraIssue, passedProps.allowPanel, passedProps.allowExtension, passedProps.allowConfluenceInlineComment, passedProps.allowTemplatePlaceholders, passedProps.allowDate, passedProps.allowLayouts, passedProps.allowStatus, passedProps.allowTextAlignment, passedProps.allowIndentation, passedProps.showIndentationButtons, passedProps.allowNewInsertionBehaviour, passedProps.allowFindReplace, passedProps.UNSAFE_allowBorderMark, passedProps.allowBorderMark, passedProps.allowFragmentMark, passedProps.autoScrollIntoView, passedProps.elementBrowser, passedProps.maxContentSize, passedProps.saveOnEnter, passedProps.feedbackInfo, passedProps.mention, passedProps.mentionInsertDisplayName, passedProps.uploadErrorHandler, passedProps.waitForMediaUpload, passedProps.extensionHandlers, passedProps.allowTextColor, passedProps.allowTables, passedProps.insertMenuItems, passedProps.UNSAFE_cards, passedProps.smartLinks, passedProps.allowAnalyticsGASV3, passedProps.codeBlock, passedProps.textFormatting, passedProps.dangerouslyAppendPlugins]);
113
+ return memodProps;
114
+ };
115
+ export default useMemoEditorProps;
@@ -1,2 +1,2 @@
1
1
  export var name = "@atlaskit/editor-core";
2
- export var version = "189.6.0";
2
+ export var version = "189.6.1";
@@ -0,0 +1,6 @@
1
+ import type { EditorProps, EditorNextProps } from '../../types/editor-props';
2
+ export type Complete<T> = {
3
+ [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
4
+ };
5
+ export declare const useMemoEditorProps: (passedProps: EditorProps & EditorNextProps) => EditorProps & EditorNextProps;
6
+ export default useMemoEditorProps;
@@ -0,0 +1,6 @@
1
+ import type { EditorProps, EditorNextProps } from '../../types/editor-props';
2
+ export type Complete<T> = {
3
+ [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
4
+ };
5
+ export declare const useMemoEditorProps: (passedProps: EditorProps & EditorNextProps) => EditorProps & EditorNextProps;
6
+ export default useMemoEditorProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "189.6.0",
3
+ "version": "189.6.1",
4
4
  "description": "A package contains Atlassian editor core functionality",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -50,7 +50,7 @@
50
50
  "@atlaskit/button": "^16.18.0",
51
51
  "@atlaskit/checkbox": "^13.0.0",
52
52
  "@atlaskit/date": "^0.10.0",
53
- "@atlaskit/datetime-picker": "^13.0.0",
53
+ "@atlaskit/datetime-picker": "^13.0.3",
54
54
  "@atlaskit/editor-common": "^76.26.0",
55
55
  "@atlaskit/editor-json-transformer": "^8.10.0",
56
56
  "@atlaskit/editor-markdown-transformer": "^5.2.5",
@@ -119,7 +119,7 @@
119
119
  "@atlaskit/editor-tables": "^2.3.0",
120
120
  "@atlaskit/emoji": "^67.6.0",
121
121
  "@atlaskit/empty-state": "^7.6.0",
122
- "@atlaskit/form": "^9.0.0",
122
+ "@atlaskit/form": "^9.0.3",
123
123
  "@atlaskit/icon": "^22.0.0",
124
124
  "@atlaskit/logo": "^13.14.0",
125
125
  "@atlaskit/media-card": "^77.5.0",
@@ -130,7 +130,7 @@
130
130
  "@atlaskit/prosemirror-collab": "^0.2.0",
131
131
  "@atlaskit/radio": "^6.0.0",
132
132
  "@atlaskit/section-message": "^6.4.0",
133
- "@atlaskit/select": "^17.0.0",
133
+ "@atlaskit/select": "^17.0.3",
134
134
  "@atlaskit/smart-card": "^26.43.0",
135
135
  "@atlaskit/smart-user-picker": "^6.4.0",
136
136
  "@atlaskit/spinner": "^16.0.0",
@@ -171,7 +171,7 @@
171
171
  "@af/visual-regression": "*",
172
172
  "@atlaskit/analytics-listeners": "^8.7.0",
173
173
  "@atlaskit/code": "^15.1.0",
174
- "@atlaskit/collab-provider": "9.19.0",
174
+ "@atlaskit/collab-provider": "9.20.0",
175
175
  "@atlaskit/dropdown-menu": "^12.1.0",
176
176
  "@atlaskit/editor-extension-dropbox": "^0.4.0",
177
177
  "@atlaskit/editor-palette": "1.5.2",
@@ -241,9 +241,6 @@
241
241
  },
242
242
  "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.1",
243
243
  "platform-feature-flags": {
244
- "platform.editor.less-editor-props-rerendering": {
245
- "type": "boolean"
246
- },
247
244
  "platform.editor.custom-table-width": {
248
245
  "type": "boolean"
249
246
  },