@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.
- package/CHANGELOG.md +13 -0
- package/dist/cjs/composable-editor/editor.js +11 -191
- package/dist/cjs/composable-editor/hooks/useMemoEditorProps.js +122 -0
- package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +2 -1
- package/dist/cjs/ui/ConfigPanel/FieldMessages.js +9 -3
- package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/Date.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/Number.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Fields/Select.js +1 -0
- package/dist/cjs/ui/ConfigPanel/Fields/String.js +4 -2
- package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +2 -1
- package/dist/cjs/ui/ConfigPanel/Header.js +12 -8
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/es2019/composable-editor/editor.js +7 -185
- package/dist/es2019/composable-editor/hooks/useMemoEditorProps.js +115 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +2 -1
- package/dist/es2019/ui/ConfigPanel/FieldMessages.js +9 -3
- package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/Date.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/Number.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/Select.js +1 -0
- package/dist/es2019/ui/ConfigPanel/Fields/String.js +4 -2
- package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Header.js +12 -8
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/esm/composable-editor/editor.js +9 -191
- package/dist/esm/composable-editor/hooks/useMemoEditorProps.js +115 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +2 -1
- package/dist/esm/ui/ConfigPanel/FieldMessages.js +9 -3
- package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +1 -0
- package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/Date.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/Number.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/Select.js +1 -0
- package/dist/esm/ui/ConfigPanel/Fields/String.js +4 -2
- package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +2 -1
- package/dist/esm/ui/ConfigPanel/Header.js +12 -8
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/types/composable-editor/hooks/useMemoEditorProps.d.ts +6 -0
- package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
- package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +1 -1
- package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +1 -1
- package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +3 -3
- package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +3 -3
- package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +3 -3
- package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/Fields/String.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/Header.d.ts +2 -2
- package/dist/types/ui/ContentStyles/index.d.ts +2 -2
- package/dist/types-ts4.5/composable-editor/hooks/useMemoEditorProps.d.ts +6 -0
- package/dist/types-ts4.5/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
- package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +1 -1
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +3 -3
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +3 -3
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +3 -3
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +2 -2
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +2 -2
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +2 -2
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +2 -2
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +2 -2
- package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +2 -2
- package/dist/types-ts4.5/ui/ContentStyles/index.d.ts +2 -2
- 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 =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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$
|
|
62
|
+
var _experienceStore$curr;
|
|
234
63
|
experienceStore.current = ExperienceStore.getInstance(instance.view);
|
|
235
|
-
(_experienceStore$
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
}
|
|
@@ -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.
|
|
2
|
+
export const version = "189.6.1";
|