@atlaskit/editor-core 189.5.11 → 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.
Files changed (78) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/composable-editor/editor.js +11 -191
  3. package/dist/cjs/composable-editor/hooks/useMemoEditorProps.js +122 -0
  4. package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +2 -1
  5. package/dist/cjs/ui/ConfigPanel/FieldMessages.js +9 -3
  6. package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +2 -1
  7. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
  8. package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
  9. package/dist/cjs/ui/ConfigPanel/Fields/Date.js +2 -1
  10. package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +2 -1
  11. package/dist/cjs/ui/ConfigPanel/Fields/Number.js +2 -1
  12. package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  13. package/dist/cjs/ui/ConfigPanel/Fields/Select.js +1 -0
  14. package/dist/cjs/ui/ConfigPanel/Fields/String.js +4 -2
  15. package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +2 -1
  16. package/dist/cjs/ui/ConfigPanel/Header.js +12 -8
  17. package/dist/cjs/version-wrapper.js +1 -1
  18. package/dist/es2019/composable-editor/editor.js +7 -185
  19. package/dist/es2019/composable-editor/hooks/useMemoEditorProps.js +115 -0
  20. package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +2 -1
  21. package/dist/es2019/ui/ConfigPanel/FieldMessages.js +9 -3
  22. package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +2 -1
  23. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
  24. package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
  25. package/dist/es2019/ui/ConfigPanel/Fields/Date.js +2 -1
  26. package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +2 -1
  27. package/dist/es2019/ui/ConfigPanel/Fields/Number.js +2 -1
  28. package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  29. package/dist/es2019/ui/ConfigPanel/Fields/Select.js +1 -0
  30. package/dist/es2019/ui/ConfigPanel/Fields/String.js +4 -2
  31. package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +2 -1
  32. package/dist/es2019/ui/ConfigPanel/Header.js +12 -8
  33. package/dist/es2019/version-wrapper.js +1 -1
  34. package/dist/esm/composable-editor/editor.js +9 -191
  35. package/dist/esm/composable-editor/hooks/useMemoEditorProps.js +115 -0
  36. package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +2 -1
  37. package/dist/esm/ui/ConfigPanel/FieldMessages.js +9 -3
  38. package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +2 -1
  39. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
  40. package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
  41. package/dist/esm/ui/ConfigPanel/Fields/Date.js +2 -1
  42. package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +2 -1
  43. package/dist/esm/ui/ConfigPanel/Fields/Number.js +2 -1
  44. package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
  45. package/dist/esm/ui/ConfigPanel/Fields/Select.js +1 -0
  46. package/dist/esm/ui/ConfigPanel/Fields/String.js +4 -2
  47. package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +2 -1
  48. package/dist/esm/ui/ConfigPanel/Header.js +12 -8
  49. package/dist/esm/version-wrapper.js +1 -1
  50. package/dist/types/composable-editor/hooks/useMemoEditorProps.d.ts +6 -0
  51. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  52. package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +1 -1
  53. package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +1 -1
  54. package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +3 -3
  55. package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +3 -3
  56. package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +3 -3
  57. package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +2 -2
  58. package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +2 -2
  59. package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +2 -2
  60. package/dist/types/ui/ConfigPanel/Fields/String.d.ts +2 -2
  61. package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +2 -2
  62. package/dist/types/ui/ConfigPanel/Header.d.ts +2 -2
  63. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  64. package/dist/types-ts4.5/composable-editor/hooks/useMemoEditorProps.d.ts +6 -0
  65. package/dist/types-ts4.5/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  66. package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +1 -1
  67. package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +1 -1
  68. package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +3 -3
  69. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +3 -3
  70. package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +3 -3
  71. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +2 -2
  72. package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +2 -2
  73. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +2 -2
  74. package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +2 -2
  75. package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +2 -2
  76. package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +2 -2
  77. package/dist/types-ts4.5/ui/ContentStyles/index.d.ts +2 -2
  78. package/package.json +6 -9
@@ -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;
@@ -18,7 +18,8 @@ const ConfigPanelErrorMessage = ({
18
18
  description: errorMessage,
19
19
  renderImage: () => /*#__PURE__*/React.createElement(ErrorImage, null),
20
20
  size: "narrow",
21
- imageHeight: 80
21
+ imageHeight: 80,
22
+ testId: "config-panel-error-message"
22
23
  });
23
24
  };
24
25
  export default injectIntl(ConfigPanelErrorMessage);
@@ -81,11 +81,17 @@ const FieldMessages = function ({
81
81
  }
82
82
  switch (error) {
83
83
  case ValidationError.Required:
84
- return /*#__PURE__*/React.createElement(ErrorMessage, null, intl.formatMessage(messages.required));
84
+ return /*#__PURE__*/React.createElement(ErrorMessage, {
85
+ testId: "config-panel-error-message"
86
+ }, intl.formatMessage(messages.required));
85
87
  case ValidationError.Invalid:
86
- return /*#__PURE__*/React.createElement(ErrorMessage, null, intl.formatMessage(messages.invalid));
88
+ return /*#__PURE__*/React.createElement(ErrorMessage, {
89
+ testId: "config-panel-error-message"
90
+ }, intl.formatMessage(messages.invalid));
87
91
  case FieldTypeError.isMultipleAndRadio:
88
- return /*#__PURE__*/React.createElement(ErrorMessage, null, intl.formatMessage(messages.isMultipleAndRadio));
92
+ return /*#__PURE__*/React.createElement(ErrorMessage, {
93
+ testId: "config-panel-error-message"
94
+ }, intl.formatMessage(messages.isMultipleAndRadio));
89
95
  default:
90
96
  return null;
91
97
  }
@@ -87,7 +87,8 @@ function Toggle({
87
87
  name: name,
88
88
  isRequired: isRequired,
89
89
  validate: value => validate(value, isRequired),
90
- defaultValue: defaultValue
90
+ defaultValue: defaultValue,
91
+ testId: `config-panel-toggle-${name}`
91
92
  }, ({
92
93
  fieldProps,
93
94
  error
@@ -370,6 +370,7 @@ const ColorPickerField = ({
370
370
  name: name,
371
371
  isRequired: isRequired,
372
372
  defaultValue: defaultValue,
373
+ testId: `config-panel-color-picker-${name}`,
373
374
  validate: value => validate(field, value || '')
374
375
  }, ({
375
376
  fieldProps,
@@ -95,7 +95,8 @@ function CustomSelect({
95
95
  label: label,
96
96
  isRequired: isRequired,
97
97
  defaultValue: defaultValue,
98
- validate: value => validate(field, value)
98
+ validate: value => validate(field, value),
99
+ testId: `config-panel-custom-select-${name}`
99
100
  }, ({
100
101
  fieldProps,
101
102
  error
@@ -24,7 +24,8 @@ function Date({
24
24
  label: label,
25
25
  defaultValue: defaultValue,
26
26
  isRequired: isRequired,
27
- validate: value => validate(field, value)
27
+ validate: value => validate(field, value),
28
+ testId: `config-panel-date-picker-${name}`
28
29
  }, ({
29
30
  fieldProps,
30
31
  error
@@ -93,7 +93,8 @@ const DateRange = function ({
93
93
  label: field.label,
94
94
  defaultValue: currentValue,
95
95
  isRequired: field.isRequired,
96
- validate: value => validate(field, value || '')
96
+ validate: value => validate(field, value || ''),
97
+ testId: `config-panel-date-range-${name}`
97
98
  }, ({
98
99
  fieldProps,
99
100
  error
@@ -37,7 +37,8 @@ export default function Number({
37
37
  label: label,
38
38
  defaultValue: defaultValue === undefined ? '' : String(defaultValue),
39
39
  isRequired: isRequired,
40
- validate: validateNumber
40
+ validate: validateNumber,
41
+ testId: `config-panel-number-${name}`
41
42
  }, ({
42
43
  fieldProps,
43
44
  error,
@@ -20,7 +20,8 @@ export default function RadioField({
20
20
  label: field.label,
21
21
  defaultValue: field.defaultValue,
22
22
  isRequired: field.isRequired,
23
- validate: value => validate(field, value)
23
+ validate: value => validate(field, value),
24
+ testId: `config-panel-radio-group-${field.name}`
24
25
  }, ({
25
26
  fieldProps,
26
27
  error
@@ -20,6 +20,7 @@ export default function SelectField({
20
20
  name: name,
21
21
  label: field.label,
22
22
  defaultValue: getOptionFromValue(field.items, field.defaultValue),
23
+ testId: `config-panel-select-${name}`,
23
24
  isRequired: field.isRequired,
24
25
  validate: value => {
25
26
  return validate(field, value);
@@ -23,7 +23,8 @@ export default function String({
23
23
  label: label,
24
24
  defaultValue: defaultValue || '',
25
25
  isRequired: isRequired,
26
- validate: value => validate(field, value || '')
26
+ validate: value => validate(field, value || ''),
27
+ testId: `config-panel-string-${name}`
27
28
  }, ({
28
29
  fieldProps,
29
30
  error,
@@ -43,7 +44,8 @@ export default function String({
43
44
  fieldProps.onBlur();
44
45
  onFieldChange(name, meta.dirty);
45
46
  },
46
- placeholder: placeholder
47
+ placeholder: placeholder,
48
+ "data-testid": `config-panel-textarea-${name}`
47
49
  })), /*#__PURE__*/React.createElement(FieldMessages, {
48
50
  error: error,
49
51
  description: description
@@ -161,7 +161,8 @@ export default function UserSelect({
161
161
  label: label,
162
162
  isRequired: isRequired,
163
163
  defaultValue: defaultValue,
164
- validate: value => validate(field, value)
164
+ validate: value => validate(field, value),
165
+ testId: `config-panel-user-select-${name}`
165
166
  }, ({
166
167
  fieldProps,
167
168
  error
@@ -15,7 +15,7 @@ const margin = 16;
15
15
  const gapSizeForEllipsis = iconWidth + buttonWidth + margin * 2;
16
16
  const item = css`
17
17
  display: flex;
18
- margin-bottom: 24px;
18
+ margin-bottom: ${"var(--ds-space-300, 24px)"};
19
19
  `;
20
20
  const itemIcon = css`
21
21
  width: ${iconWidth}px;
@@ -40,7 +40,7 @@ const itemBody = css`
40
40
  flex-wrap: nowrap;
41
41
  justify-content: space-between;
42
42
  line-height: 1.4;
43
- margin: 0 16px;
43
+ margin: 0 ${"var(--ds-space-200, 16px)"};
44
44
  flex-grow: 3;
45
45
  max-width: calc(100% - ${gapSizeForEllipsis}px);
46
46
  `;
@@ -55,7 +55,7 @@ const itemText = css`
55
55
  .item-summary {
56
56
  font-size: ${relativeFontSizeToBase16(11.67)};
57
57
  color: ${`var(--ds-text-subtlest, ${N200})`};
58
- margin-top: 4px;
58
+ margin-top: ${"var(--ds-space-050, 4px)"};
59
59
 
60
60
  white-space: nowrap;
61
61
  overflow: hidden;
@@ -63,7 +63,7 @@ const itemText = css`
63
63
  }
64
64
  `;
65
65
  const descriptionStyle = css`
66
- margin-bottom: 24px;
66
+ margin-bottom: ${"var(--ds-space-300, 24px)"};
67
67
  `;
68
68
  const closeButtonWrapper = css`
69
69
  width: ${buttonWidth}px;
@@ -94,12 +94,14 @@ const Header = ({
94
94
  css: itemText
95
95
  }, jsx("div", {
96
96
  className: "item-title",
97
- id: "context-panel-title"
97
+ id: "context-panel-title",
98
+ "data-testId": "context-panel-title"
98
99
  }, title), jsx("div", {
99
100
  className: "item-summary"
100
101
  }, summary)) : jsx("div", {
101
102
  css: centeredItemTitle,
102
- id: "context-panel-title"
103
+ id: "context-panel-title",
104
+ "data-testId": "context-panel-title"
103
105
  }, title)), jsx("div", {
104
106
  css: closeButtonWrapper
105
107
  }, jsx(Button, {
@@ -109,11 +111,13 @@ const Header = ({
109
111
  }),
110
112
  onClick: onClose
111
113
  }))), (description || documentationUrl) && jsx("p", {
112
- css: descriptionStyle
114
+ css: descriptionStyle,
115
+ "data-testid": "config-panel-header-description"
113
116
  }, description && jsx(Fragment, null, description.replace(/([^.])$/, '$1.'), " "), documentationUrl && jsx("a", {
114
117
  target: "_blank",
115
118
  rel: "noopener noreferrer",
116
- href: documentationUrl
119
+ href: documentationUrl,
120
+ "data-testid": "config-panel-header-documentation-link"
117
121
  }, intl.formatMessage(messages.documentation))));
118
122
  };
119
123
  export default injectIntl(Header);
@@ -1,2 +1,2 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "189.5.11";
2
+ export const version = "189.6.1";