@atlaskit/editor-common 103.1.3 → 103.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/annotation/index.js +16 -1
  3. package/dist/cjs/annotation/manager.js +243 -0
  4. package/dist/cjs/hooks/usePluginStateEffect.js +12 -3
  5. package/dist/cjs/hooks/useSharedPluginState.js +9 -5
  6. package/dist/cjs/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +9 -3
  7. package/dist/cjs/i18n/cs.js +9 -24
  8. package/dist/cjs/i18n/da.js +9 -24
  9. package/dist/cjs/i18n/de.js +8 -24
  10. package/dist/cjs/i18n/en.js +9 -24
  11. package/dist/cjs/i18n/en_GB.js +9 -24
  12. package/dist/cjs/i18n/en_ZZ.js +9 -24
  13. package/dist/cjs/i18n/es.js +9 -24
  14. package/dist/cjs/i18n/fi.js +9 -24
  15. package/dist/cjs/i18n/fr.js +8 -24
  16. package/dist/cjs/i18n/hu.js +7 -24
  17. package/dist/cjs/i18n/it.js +9 -24
  18. package/dist/cjs/i18n/ja.js +9 -24
  19. package/dist/cjs/i18n/ko.js +10 -25
  20. package/dist/cjs/i18n/nb.js +9 -24
  21. package/dist/cjs/i18n/nl.js +9 -24
  22. package/dist/cjs/i18n/pl.js +8 -24
  23. package/dist/cjs/i18n/pt_BR.js +9 -24
  24. package/dist/cjs/i18n/ru.js +9 -24
  25. package/dist/cjs/i18n/sv.js +9 -24
  26. package/dist/cjs/i18n/th.js +9 -24
  27. package/dist/cjs/i18n/tr.js +9 -24
  28. package/dist/cjs/i18n/uk.js +9 -24
  29. package/dist/cjs/i18n/vi.js +10 -24
  30. package/dist/cjs/i18n/zh.js +9 -24
  31. package/dist/cjs/i18n/zh_TW.js +9 -24
  32. package/dist/cjs/monitoring/error.js +1 -1
  33. package/dist/cjs/ui/DropList/index.js +1 -1
  34. package/dist/es2019/annotation/index.js +22 -0
  35. package/dist/es2019/annotation/manager.js +196 -0
  36. package/dist/es2019/hooks/usePluginStateEffect.js +12 -5
  37. package/dist/es2019/hooks/useSharedPluginState.js +9 -6
  38. package/dist/es2019/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +9 -5
  39. package/dist/es2019/i18n/cs.js +9 -24
  40. package/dist/es2019/i18n/da.js +9 -24
  41. package/dist/es2019/i18n/de.js +8 -24
  42. package/dist/es2019/i18n/en.js +9 -24
  43. package/dist/es2019/i18n/en_GB.js +9 -24
  44. package/dist/es2019/i18n/en_ZZ.js +9 -24
  45. package/dist/es2019/i18n/es.js +9 -24
  46. package/dist/es2019/i18n/fi.js +9 -24
  47. package/dist/es2019/i18n/fr.js +8 -24
  48. package/dist/es2019/i18n/hu.js +7 -24
  49. package/dist/es2019/i18n/it.js +9 -24
  50. package/dist/es2019/i18n/ja.js +9 -24
  51. package/dist/es2019/i18n/ko.js +10 -25
  52. package/dist/es2019/i18n/nb.js +9 -24
  53. package/dist/es2019/i18n/nl.js +9 -24
  54. package/dist/es2019/i18n/pl.js +8 -24
  55. package/dist/es2019/i18n/pt_BR.js +9 -24
  56. package/dist/es2019/i18n/ru.js +9 -24
  57. package/dist/es2019/i18n/sv.js +9 -24
  58. package/dist/es2019/i18n/th.js +9 -24
  59. package/dist/es2019/i18n/tr.js +9 -24
  60. package/dist/es2019/i18n/uk.js +9 -24
  61. package/dist/es2019/i18n/vi.js +10 -24
  62. package/dist/es2019/i18n/zh.js +9 -24
  63. package/dist/es2019/i18n/zh_TW.js +9 -24
  64. package/dist/es2019/monitoring/error.js +1 -1
  65. package/dist/es2019/ui/DropList/index.js +1 -1
  66. package/dist/esm/annotation/index.js +23 -1
  67. package/dist/esm/annotation/manager.js +236 -0
  68. package/dist/esm/hooks/usePluginStateEffect.js +12 -3
  69. package/dist/esm/hooks/useSharedPluginState.js +9 -5
  70. package/dist/esm/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +9 -3
  71. package/dist/esm/i18n/cs.js +9 -24
  72. package/dist/esm/i18n/da.js +9 -24
  73. package/dist/esm/i18n/de.js +8 -24
  74. package/dist/esm/i18n/en.js +9 -24
  75. package/dist/esm/i18n/en_GB.js +9 -24
  76. package/dist/esm/i18n/en_ZZ.js +9 -24
  77. package/dist/esm/i18n/es.js +9 -24
  78. package/dist/esm/i18n/fi.js +9 -24
  79. package/dist/esm/i18n/fr.js +8 -24
  80. package/dist/esm/i18n/hu.js +7 -24
  81. package/dist/esm/i18n/it.js +9 -24
  82. package/dist/esm/i18n/ja.js +9 -24
  83. package/dist/esm/i18n/ko.js +10 -25
  84. package/dist/esm/i18n/nb.js +9 -24
  85. package/dist/esm/i18n/nl.js +9 -24
  86. package/dist/esm/i18n/pl.js +8 -24
  87. package/dist/esm/i18n/pt_BR.js +9 -24
  88. package/dist/esm/i18n/ru.js +9 -24
  89. package/dist/esm/i18n/sv.js +9 -24
  90. package/dist/esm/i18n/th.js +9 -24
  91. package/dist/esm/i18n/tr.js +9 -24
  92. package/dist/esm/i18n/uk.js +9 -24
  93. package/dist/esm/i18n/vi.js +10 -24
  94. package/dist/esm/i18n/zh.js +9 -24
  95. package/dist/esm/i18n/zh_TW.js +9 -24
  96. package/dist/esm/monitoring/error.js +1 -1
  97. package/dist/esm/ui/DropList/index.js +1 -1
  98. package/dist/types/annotation/index.d.ts +132 -0
  99. package/dist/types/annotation/manager.d.ts +32 -0
  100. package/dist/types/hooks/usePluginStateEffect.d.ts +4 -1
  101. package/dist/types/hooks/useSharedPluginState.d.ts +6 -1
  102. package/dist/types/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.d.ts +5 -1
  103. package/dist/types/i18n/cs.d.ts +9 -24
  104. package/dist/types/i18n/da.d.ts +9 -24
  105. package/dist/types/i18n/de.d.ts +8 -24
  106. package/dist/types/i18n/en.d.ts +9 -24
  107. package/dist/types/i18n/en_GB.d.ts +9 -24
  108. package/dist/types/i18n/en_ZZ.d.ts +9 -24
  109. package/dist/types/i18n/es.d.ts +9 -24
  110. package/dist/types/i18n/fi.d.ts +9 -24
  111. package/dist/types/i18n/fr.d.ts +8 -24
  112. package/dist/types/i18n/hu.d.ts +7 -24
  113. package/dist/types/i18n/it.d.ts +9 -24
  114. package/dist/types/i18n/ja.d.ts +9 -24
  115. package/dist/types/i18n/ko.d.ts +9 -24
  116. package/dist/types/i18n/nb.d.ts +9 -24
  117. package/dist/types/i18n/nl.d.ts +9 -24
  118. package/dist/types/i18n/pl.d.ts +8 -24
  119. package/dist/types/i18n/pt_BR.d.ts +9 -24
  120. package/dist/types/i18n/ru.d.ts +9 -24
  121. package/dist/types/i18n/sv.d.ts +9 -24
  122. package/dist/types/i18n/th.d.ts +9 -24
  123. package/dist/types/i18n/tr.d.ts +9 -24
  124. package/dist/types/i18n/uk.d.ts +9 -24
  125. package/dist/types/i18n/vi.d.ts +10 -24
  126. package/dist/types/i18n/zh.d.ts +9 -24
  127. package/dist/types/i18n/zh_TW.d.ts +9 -24
  128. package/dist/types/types/annotation/index.d.ts +2 -0
  129. package/dist/types/types/floating-toolbar.d.ts +9 -0
  130. package/dist/types-ts4.5/annotation/index.d.ts +132 -0
  131. package/dist/types-ts4.5/annotation/manager.d.ts +32 -0
  132. package/dist/types-ts4.5/hooks/usePluginStateEffect.d.ts +4 -1
  133. package/dist/types-ts4.5/hooks/useSharedPluginState.d.ts +6 -1
  134. package/dist/types-ts4.5/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.d.ts +5 -1
  135. package/dist/types-ts4.5/i18n/cs.d.ts +9 -24
  136. package/dist/types-ts4.5/i18n/da.d.ts +9 -24
  137. package/dist/types-ts4.5/i18n/de.d.ts +8 -24
  138. package/dist/types-ts4.5/i18n/en.d.ts +9 -24
  139. package/dist/types-ts4.5/i18n/en_GB.d.ts +9 -24
  140. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +9 -24
  141. package/dist/types-ts4.5/i18n/es.d.ts +9 -24
  142. package/dist/types-ts4.5/i18n/fi.d.ts +9 -24
  143. package/dist/types-ts4.5/i18n/fr.d.ts +8 -24
  144. package/dist/types-ts4.5/i18n/hu.d.ts +7 -24
  145. package/dist/types-ts4.5/i18n/it.d.ts +9 -24
  146. package/dist/types-ts4.5/i18n/ja.d.ts +9 -24
  147. package/dist/types-ts4.5/i18n/ko.d.ts +9 -24
  148. package/dist/types-ts4.5/i18n/nb.d.ts +9 -24
  149. package/dist/types-ts4.5/i18n/nl.d.ts +9 -24
  150. package/dist/types-ts4.5/i18n/pl.d.ts +8 -24
  151. package/dist/types-ts4.5/i18n/pt_BR.d.ts +9 -24
  152. package/dist/types-ts4.5/i18n/ru.d.ts +9 -24
  153. package/dist/types-ts4.5/i18n/sv.d.ts +9 -24
  154. package/dist/types-ts4.5/i18n/th.d.ts +9 -24
  155. package/dist/types-ts4.5/i18n/tr.d.ts +9 -24
  156. package/dist/types-ts4.5/i18n/uk.d.ts +9 -24
  157. package/dist/types-ts4.5/i18n/vi.d.ts +10 -24
  158. package/dist/types-ts4.5/i18n/zh.d.ts +9 -24
  159. package/dist/types-ts4.5/i18n/zh_TW.d.ts +9 -24
  160. package/dist/types-ts4.5/types/annotation/index.d.ts +2 -0
  161. package/dist/types-ts4.5/types/floating-toolbar.d.ts +9 -0
  162. package/package.json +1 -1
@@ -0,0 +1,196 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { EventEmitter } from 'events';
3
+ export class SharedAnnotationManager {
4
+ constructor() {
5
+ /**
6
+ * This is the event emitter that is used to emit events from the manager. It is used to communicate with
7
+ * other parts of the application.
8
+ */
9
+ _defineProperty(this, "emitter", new EventEmitter());
10
+ /**
11
+ * This is the map of hooks that can be added to the manager. Hooks are a 1:1 mapping of methods that can be
12
+ * called on the manager. They are used to extend the functionality of the manager.
13
+ */
14
+ _defineProperty(this, "hooks", new Map());
15
+ _defineProperty(this, "preemptiveGate", () => Promise.resolve(true));
16
+ }
17
+ setPreemptiveGate(handler) {
18
+ this.preemptiveGate = handler;
19
+ return this;
20
+ }
21
+ checkPreemptiveGate() {
22
+ return this.preemptiveGate();
23
+ }
24
+ onDraftAnnotationStarted(handler) {
25
+ this.emitter.on('draftAnnotationStarted', handler);
26
+ return this;
27
+ }
28
+ offDraftAnnotationStarted(handler) {
29
+ this.emitter.off('draftAnnotationStarted', handler);
30
+ return this;
31
+ }
32
+ onAnnotationSelectionChange(handler) {
33
+ this.emitter.on('annotationSelectionChanged', handler);
34
+ return this;
35
+ }
36
+ offAnnotationSelectionChange(handler) {
37
+ this.emitter.off('annotationSelectionChanged', handler);
38
+ return this;
39
+ }
40
+ emit(event) {
41
+ this.emitter.emit(event.name, event.data);
42
+ return this;
43
+ }
44
+ hook(method, handler) {
45
+ this.hooks.set(method, handler);
46
+ return this;
47
+ }
48
+ unhook(method, handler) {
49
+ if (!this.hooks.has(method) || this.hooks.get(method) !== handler) {
50
+ return this;
51
+ }
52
+ this.hooks.delete(method);
53
+ return this;
54
+ }
55
+ allowAnnotation() {
56
+ const fn = this.hooks.get('allowAnnotation');
57
+ if (!fn) {
58
+ return false;
59
+ }
60
+ try {
61
+ return fn();
62
+ } catch (error) {
63
+ return false;
64
+ }
65
+ }
66
+ startDraft() {
67
+ const fn = this.hooks.get('startDraft');
68
+ if (!fn) {
69
+ return {
70
+ success: false,
71
+ reason: 'manager-not-initialized'
72
+ };
73
+ }
74
+ try {
75
+ const result = fn();
76
+ if (result.success) {
77
+ this.emitter.emit('draftAnnotationStarted', {
78
+ targetElement: result.targetElement,
79
+ inlineNodeTypes: result.inlineNodeTypes,
80
+ actionResult: result.actionResult
81
+ });
82
+ }
83
+ return result;
84
+ } catch (error) {
85
+ return {
86
+ success: false,
87
+ reason: 'hook-execution-error'
88
+ };
89
+ }
90
+ }
91
+ clearDraft() {
92
+ const fn = this.hooks.get('clearDraft');
93
+ if (!fn) {
94
+ return {
95
+ success: false,
96
+ reason: 'manager-not-initialized'
97
+ };
98
+ }
99
+ try {
100
+ return fn();
101
+ } catch (error) {
102
+ return {
103
+ success: false,
104
+ reason: 'hook-execution-error'
105
+ };
106
+ }
107
+ }
108
+ applyDraft(id) {
109
+ const fn = this.hooks.get('applyDraft');
110
+ if (!fn) {
111
+ return {
112
+ success: false,
113
+ reason: 'manager-not-initialized'
114
+ };
115
+ }
116
+ try {
117
+ return fn(id);
118
+ } catch (error) {
119
+ return {
120
+ success: false,
121
+ reason: 'hook-execution-error'
122
+ };
123
+ }
124
+ }
125
+ getDraft() {
126
+ const fn = this.hooks.get('getDraft');
127
+ if (!fn) {
128
+ return {
129
+ success: false,
130
+ reason: 'manager-not-initialized'
131
+ };
132
+ }
133
+ try {
134
+ return fn();
135
+ } catch (error) {
136
+ return {
137
+ success: false,
138
+ reason: 'hook-execution-error'
139
+ };
140
+ }
141
+ }
142
+ setIsAnnotationSelected(id, isSelected) {
143
+ const fn = this.hooks.get('setIsAnnotationSelected');
144
+ if (!fn) {
145
+ return {
146
+ success: false,
147
+ reason: 'manager-not-initialized'
148
+ };
149
+ }
150
+ try {
151
+ // NOTE: The hook needs to manage the firing the annotationSelectionChanged event when a change is made. This is
152
+ // because the hook is responsible for the state of the selection. The manager is not responsible for the state of
153
+ // the selection.
154
+ return fn(id, isSelected);
155
+ } catch (error) {
156
+ return {
157
+ success: false,
158
+ reason: 'hook-execution-error'
159
+ };
160
+ }
161
+ }
162
+ setIsAnnotationHovered(id, isHovered) {
163
+ const fn = this.hooks.get('setIsAnnotationHovered');
164
+ if (!fn) {
165
+ return {
166
+ success: false,
167
+ reason: 'manager-not-initialized'
168
+ };
169
+ }
170
+ try {
171
+ return fn(id, isHovered);
172
+ } catch (error) {
173
+ return {
174
+ success: false,
175
+ reason: 'hook-execution-error'
176
+ };
177
+ }
178
+ }
179
+ clearAnnotation(id) {
180
+ const fn = this.hooks.get('clearAnnotation');
181
+ if (!fn) {
182
+ return {
183
+ success: false,
184
+ reason: 'manager-not-initialized'
185
+ };
186
+ }
187
+ try {
188
+ return fn(id);
189
+ } catch (error) {
190
+ return {
191
+ success: false,
192
+ reason: 'hook-execution-error'
193
+ };
194
+ }
195
+ }
196
+ }
@@ -71,7 +71,7 @@ function useStaticPlugins(plugins) {
71
71
  * If the callback changes the effect is not re-run - it is still recommended however to wrap your effect in `useCallback`,
72
72
  * You can return a function from your effect to call any cleanup activities which will be called on unmount and when `editorApi` changes.
73
73
  */
74
- export function usePluginStateEffect(injectionApi, plugins, effect) {
74
+ export function usePluginStateEffect(injectionApi, plugins, effect, options = {}) {
75
75
  const pluginNames = useStaticPlugins(plugins);
76
76
 
77
77
  // Create a memoized object containing the named plugins
@@ -79,9 +79,9 @@ export function usePluginStateEffect(injectionApi, plugins, effect) {
79
79
  ...acc,
80
80
  [`${String(pluginName)}State`]: injectionApi === null || injectionApi === void 0 ? void 0 : injectionApi[pluginName]
81
81
  }), {}), [injectionApi, pluginNames]);
82
- usePluginStateEffectInternal(namedExternalPlugins, effect);
82
+ usePluginStateEffectInternal(namedExternalPlugins, effect, options);
83
83
  }
84
- function usePluginStateEffectInternal(externalPlugins, effect) {
84
+ function usePluginStateEffectInternal(externalPlugins, effect, options = {}) {
85
85
  const refStates = useRef();
86
86
  const cleanup = useRef();
87
87
  const latestEffect = useRef(effect);
@@ -89,13 +89,20 @@ function usePluginStateEffectInternal(externalPlugins, effect) {
89
89
  // We should store the latest effect in a reference so it is more intuitive to the user
90
90
  // and we are not causing a memory leak by having references to old state.
91
91
  useEffect(() => {
92
+ if (options.disabled) {
93
+ return;
94
+ }
92
95
  latestEffect.current = debounce(effect);
93
96
  return () => {
94
97
  latestEffect.current = undefined;
95
98
  };
96
- }, [effect]);
99
+ }, [effect, options.disabled]);
97
100
  useLayoutEffect(() => {
98
101
  var _latestEffect$current;
102
+ if (options.disabled) {
103
+ return;
104
+ }
105
+
99
106
  // Update the reference for this plugin and activate the effect
100
107
  refStates.current = mapValues(externalPlugins, value => value === null || value === void 0 ? void 0 : value.sharedState.currentState());
101
108
  cleanup.current = (_latestEffect$current = latestEffect.current) === null || _latestEffect$current === void 0 ? void 0 : _latestEffect$current.call(latestEffect, refStates.current);
@@ -118,5 +125,5 @@ function usePluginStateEffectInternal(externalPlugins, effect) {
118
125
  };
119
126
  // Do not re-run if the `effect` changes - this is not expected with `useEffect` or similar hooks
120
127
  // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [externalPlugins]);
128
+ }, [externalPlugins, options.disabled]);
122
129
  }
@@ -27,7 +27,6 @@ function useStaticPlugins(plugins) {
27
27
  // eslint-disable-next-line react-hooks/exhaustive-deps
28
28
  return useMemo(() => plugins, []);
29
29
  }
30
-
31
30
  /**
32
31
  *
33
32
  * NOTE: Generally you may want to use `usePluginStateSelector` over this which behaves similarly
@@ -89,10 +88,11 @@ function useStaticPlugins(plugins) {
89
88
  *
90
89
  * @param injectionApi Plugin injection API from `NextEditorPlugin`
91
90
  * @param plugins Plugin names to get the shared plugin state for
91
+ * @param options The useSharedPluginState options
92
92
  * @returns A corresponding object, the keys are names of the plugin with `State` appended,
93
93
  * the values are the shared state exposed by that plugin.
94
94
  */
95
- export function useSharedPluginState(injectionApi, plugins) {
95
+ export function useSharedPluginState(injectionApi, plugins, options) {
96
96
  const pluginNames = useStaticPlugins(plugins);
97
97
 
98
98
  // Create a memoized object containing the named plugins
@@ -100,13 +100,16 @@ export function useSharedPluginState(injectionApi, plugins) {
100
100
  ...acc,
101
101
  [`${String(pluginName)}State`]: injectionApi === null || injectionApi === void 0 ? void 0 : injectionApi[pluginName]
102
102
  }), {}), [injectionApi, pluginNames]);
103
- return useSharedPluginStateInternal(namedExternalPlugins);
103
+ return useSharedPluginStateInternal(namedExternalPlugins, options);
104
104
  }
105
- function useSharedPluginStateInternal(externalPlugins) {
106
- const [pluginStates, setPluginState] = useState(mapValues(externalPlugins, value => value === null || value === void 0 ? void 0 : value.sharedState.currentState()));
105
+ function useSharedPluginStateInternal(externalPlugins, options = {}) {
106
+ const [pluginStates, setPluginState] = useState(mapValues(externalPlugins, value => options.disabled ? undefined : value === null || value === void 0 ? void 0 : value.sharedState.currentState()));
107
107
  const refStates = useRef({});
108
108
  const mounted = useRef(false);
109
109
  useLayoutEffect(() => {
110
+ if (options.disabled) {
111
+ return;
112
+ }
110
113
  const debouncedPluginStateUpdate = debounce(() => {
111
114
  setPluginState(currentPluginStates => ({
112
115
  ...currentPluginStates,
@@ -141,6 +144,6 @@ function useSharedPluginStateInternal(externalPlugins) {
141
144
  // Do not re-render due to state changes, we only need to check this when
142
145
  // setting up the initial subscription.
143
146
  // eslint-disable-next-line react-hooks/exhaustive-deps
144
- }, [externalPlugins]);
147
+ }, [externalPlugins, options.disabled]);
145
148
  return pluginStates;
146
149
  }
@@ -72,9 +72,10 @@ import { usePluginStateEffect } from '../usePluginStateEffect';
72
72
  *
73
73
  * @param api
74
74
  * @param plugin
75
+ * @param options
75
76
  * @returns
76
77
  */
77
- export function useSharedPluginStateSelector(api, plugin) {
78
+ export function useSharedPluginStateSelector(api, plugin, options = {}) {
78
79
  const transformer = useCallback(pluginState => {
79
80
  const [pluginName, ...properties] = plugin.split('.');
80
81
  if (!pluginState || (properties === null || properties === void 0 ? void 0 : properties.length) === 0) {
@@ -88,14 +89,17 @@ export function useSharedPluginStateSelector(api, plugin) {
88
89
  }, [plugin]);
89
90
  const initialState = useMemo(() => {
90
91
  var _api$pluginName;
92
+ if (options.disabled) {
93
+ return;
94
+ }
91
95
  const [pluginName] = plugin.split('.');
92
96
  return transformer({
93
97
  [`${pluginName}State`]: api === null || api === void 0 ? void 0 : (_api$pluginName = api[pluginName]) === null || _api$pluginName === void 0 ? void 0 : _api$pluginName.sharedState.currentState()
94
98
  });
95
- }, [plugin, api, transformer]);
96
- return useSharedPluginStateSelectorInternal(api, pluginNameArray, transformer, initialState);
99
+ }, [plugin, api, options.disabled, transformer]);
100
+ return useSharedPluginStateSelectorInternal(api, pluginNameArray, transformer, initialState, options);
97
101
  }
98
- function useSharedPluginStateSelectorInternal(api, plugins, transformer, initialState) {
102
+ function useSharedPluginStateSelectorInternal(api, plugins, transformer, initialState, options = {}) {
99
103
  const [selectedPluginState, setSelectedPluginState] = useState(initialState);
100
104
  usePluginStateEffect(api, plugins, pluginStates => {
101
105
  // `pluginStates`: This is the same type through inference - but typescript doesn't recognise them as they are computed slightly differently
@@ -103,6 +107,6 @@ function useSharedPluginStateSelectorInternal(api, plugins, transformer, initial
103
107
  if (!isEqual(transformedValue, selectedPluginState)) {
104
108
  setSelectedPluginState(transformedValue);
105
109
  }
106
- });
110
+ }, options);
107
111
  return selectedPluginState;
108
112
  }
@@ -32,6 +32,7 @@ export default {
32
32
  'fabric.editor.ai.atlas-prebuilt.atlasGenerateContentConfigItemDescription': 'Generuje obsah, který má být vložen do aktualizace.',
33
33
  'fabric.editor.ai.atlas-prebuilt.atlasSummarizePageConfigItemDescription': 'Shrne obsah aktualizace.',
34
34
  'fabric.editor.ai.commandPalette.promptBuilderForm.buttons.submit': 'Generovat',
35
+ 'fabric.editor.ai.commandPalette.promptBuilderForm.generateContent.ariaLabel': 'Zeptejte se Atlassian Intelligence.',
35
36
  'fabric.editor.ai.config.item.action.insert': 'Vložit',
36
37
  'fabric.editor.ai.config.item.action.insertAtTop': 'Vložit nahoru',
37
38
  'fabric.editor.ai.config.item.action.insertBelow': 'Vložit pod',
@@ -39,29 +40,6 @@ export default {
39
40
  'fabric.editor.ai.config.item.action.replaceTitle': 'Nahradit název',
40
41
  'fabric.editor.ai.config.item.action.replaceTitleTooLongDisabledTooltip': 'Název nesmí mít více znaků než {maxLength}.',
41
42
  'fabric.editor.ai.config.item.action.rovoAgents.continueInChatLabel': 'Otevřít v chatu',
42
- 'fabric.editor.ai.config.item.advanced-prompt.form.instructions.label': 'Pokyny',
43
- 'fabric.editor.ai.config.item.advancedPrompt.description': 'Upřesněte úkol, pokyny a pravidla',
44
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.label': 'Kreativita',
45
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.high': 'Vysoká',
46
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.low': 'Nízká',
47
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.medium': 'Střední',
48
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.helperMessage': 'Příklad: 1. Na začátku dokumentu uveďte stručný přehled cílů naší společnosti. 2. Vytvořte seznam klíčových členů týmu, se kterými se během prvního týdne setkají.',
49
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.placeholder': 'Zajistěte pokyny k úkolům, které pomohou generovat konkrétní výstupy.',
50
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.helperMessage': 'Příklad: Výstup musí být v souladu s pokyny společnosti pro styl a nesmějí používat neověřené údaje.',
51
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.label': 'Pravidla',
52
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.placeholder': 'Uveďte pravidla, která mají dodržovat.',
53
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.error.required': 'Zadejte úkol',
54
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.helperMessage': 'Příklad: Vytvořte nástupní dokumentaci pro nové zaměstnance, kteří se připojují k týmu.',
55
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.label': 'Úkol',
56
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.placeholder': 'Popište úkol, který je třeba dokončit.',
57
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.label': 'Tón',
58
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.casual': 'Neformální',
59
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.educational': 'Vzdělávací',
60
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.empathetic': 'Empatický',
61
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.neutral': 'Neutrální',
62
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.professional': 'Profesionální',
63
- 'fabric.editor.ai.config.item.advancedPrompt.promptLabel': 'Vytvořte pokročilou výzvu',
64
- 'fabric.editor.ai.config.item.advancedPrompt.title': 'Vytvořte pokročilou výzvu',
65
43
  'fabric.editor.ai.config.item.agent.title': 'Atlassian Intelligence – Agent Rovo',
66
44
  'fabric.editor.ai.config.item.atlas-shorten-update.description': 'Zkrátí obsah, aby byl stručnější.',
67
45
  'fabric.editor.ai.config.item.atlas-shorten-update.title': 'Zkrátit aktualizaci',
@@ -224,7 +202,6 @@ export default {
224
202
  'fabric.editor.ai.experience.suggestionGroupHeading.knowledgeSource': 'Zdroj znalostí',
225
203
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgents': 'Agenti Rovo',
226
204
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgentsCount': 'Agenti Rovo ({numberOfAgents})',
227
- 'fabric.editor.ai.experience.suggestionGroupHeading.studio': 'Studio',
228
205
  'fabric.editor.ai.experience.suggestionGroupHeading.useRovoAgentsCount': 'Použijte agenta Rovo ({numberOfAgents})',
229
206
  'fabric.editor.ai.experience.useGeneralAiKnowledgeLabel': 'Použít obecné znalosti',
230
207
  'fabric.editor.ai.experience.useRovoOrganisationKnowledgeLabel': 'Použít znalosti z vaší organizace',
@@ -421,6 +398,7 @@ export default {
421
398
  'fabric.editor.errorPanel.description': 'Chyby zobrazit v barevném panelu',
422
399
  'fabric.editor.expand': 'Rozbalení',
423
400
  'fabric.editor.expand.description': 'Vložit rozbalení',
401
+ 'fabric.editor.expandAriaLabel': 'Dejte rozbalenému obsahu název.',
424
402
  'fabric.editor.expandDefaultTitle': 'Klikněte sem pro rozbalení...',
425
403
  'fabric.editor.expandNode': 'Rozbalit obsah',
426
404
  'fabric.editor.expandPlaceholder': 'Dejte rozbalenému obsahu název...',
@@ -430,6 +408,7 @@ export default {
430
408
  'fabric.editor.extension.deleteElementTitle': 'Odstranit prvek',
431
409
  'fabric.editor.extension.sourceNoTitledName': 'tento prvek',
432
410
  'fabric.editor.extensions.config-panel.save-indicator': 'Všechny změny jsou vždy automaticky ukládány',
411
+ 'fabric.editor.externalExtensionsHeading': 'Aplikace',
433
412
  'fabric.editor.externalMediaFile': 'Externí multimediální soubor',
434
413
  'fabric.editor.failed_to_upload': 'Nahrání se nezdařilo',
435
414
  'fabric.editor.feedbackDialog': 'Poskytnout zpětnou vazbu',
@@ -541,6 +520,7 @@ export default {
541
520
  'fabric.editor.lists': 'Seznamy',
542
521
  'fabric.editor.listsFormat': 'Formátování seznamu',
543
522
  'fabric.editor.lockColumns': 'Pevné šířky sloupců',
523
+ 'fabric.editor.longEmptyNodePlaceholderText': 'Zadáním znaku / můžete vkládat prvky.',
544
524
  'fabric.editor.markdown': 'Snížení',
545
525
  'fabric.editor.matchCase': 'Rozlišovat malá a velká písmena',
546
526
  'fabric.editor.media.DefaultMediaWidthDecreased': '{newMediaWidth, plural, one {Šířka multimédia byla snížena na {newMediaWidth,number} pixel.} few {Šířka multimédia byla snížena na {newMediaWidth,number} pixely.} many {Šířka multimédia byla snížena na {newMediaWidth,number} pixelu.} other {Šířka multimédia byla snížena na {newMediaWidth,number} pixelů.}}',
@@ -609,6 +589,7 @@ export default {
609
589
  'fabric.editor.orderedList.description': 'Vytvořit seřazený seznam',
610
590
  'fabric.editor.other': 'Jiné…',
611
591
  'fabric.editor.outdent': 'Zmenšit odsazení',
592
+ 'fabric.editor.overflowMenuViewMore': 'Zobrazit více',
612
593
  'fabric.editor.pageActionsLabel': 'Akce stránky',
613
594
  'fabric.editor.panel': 'Panel',
614
595
  'fabric.editor.panel.backgroundColor': 'Barva pozadí',
@@ -658,6 +639,7 @@ export default {
658
639
  'fabric.editor.selectTableRow': 'Vybrat řádek tabulky',
659
640
  'fabric.editor.selectionExtensionDropdownButtonLabel': 'Vybrat aplikaci',
660
641
  'fabric.editor.settingsLinks': 'Přejít do předvoleb odkazů',
642
+ 'fabric.editor.shortEmptyNodePlaceholderText': '/ pro vložení',
661
643
  'fabric.editor.shortcut': 'Textový zástupce',
662
644
  'fabric.editor.single': 'Rozvržení jediného sloupce',
663
645
  'fabric.editor.singleColumns': 'Rozvržení 1 sloupce',
@@ -721,8 +703,11 @@ export default {
721
703
  'fabric.editor.time.ago': 'zpět',
722
704
  'fabric.editor.time.updated': 'Aktualizováno',
723
705
  'fabric.editor.time.viewed': 'Zobrazeno',
706
+ 'fabric.editor.toolbarAppears': 'Zobrazí se panel nástrojů',
724
707
  'fabric.editor.toolbarLabel': 'Editor',
725
708
  'fabric.editor.toolbarMediaTitle': 'Přidat obrázek, video nebo soubor',
709
+ 'fabric.editor.toolbarPositionFixedAtTop': 'Uchyceno nahoře',
710
+ 'fabric.editor.toolbarPositionInline': 'Zarovnáno s textem',
726
711
  'fabric.editor.tooltip.blockPanel': 'panel',
727
712
  'fabric.editor.tooltip.bulletList': 'seznam',
728
713
  'fabric.editor.tooltip.decisionList': 'seznam rozhodnutí',
@@ -32,6 +32,7 @@ export default {
32
32
  'fabric.editor.ai.atlas-prebuilt.atlasGenerateContentConfigItemDescription': 'Genererer indhold, der skal sættes ind i opdateringen',
33
33
  'fabric.editor.ai.atlas-prebuilt.atlasSummarizePageConfigItemDescription': 'Opsummerer opdateringens indhold',
34
34
  'fabric.editor.ai.commandPalette.promptBuilderForm.buttons.submit': 'Generér',
35
+ 'fabric.editor.ai.commandPalette.promptBuilderForm.generateContent.ariaLabel': 'Spørg Atlassian Intelligence',
35
36
  'fabric.editor.ai.config.item.action.insert': 'Indsæt',
36
37
  'fabric.editor.ai.config.item.action.insertAtTop': 'Indsæt foroven',
37
38
  'fabric.editor.ai.config.item.action.insertBelow': 'Indsæt nedenfor',
@@ -39,29 +40,6 @@ export default {
39
40
  'fabric.editor.ai.config.item.action.replaceTitle': 'Erstat titel',
40
41
  'fabric.editor.ai.config.item.action.replaceTitleTooLongDisabledTooltip': 'Titlen må højst indeholde {maxLength} tegn',
41
42
  'fabric.editor.ai.config.item.action.rovoAgents.continueInChatLabel': 'Åbn i chat',
42
- 'fabric.editor.ai.config.item.advanced-prompt.form.instructions.label': 'Instruktioner',
43
- 'fabric.editor.ai.config.item.advancedPrompt.description': 'Angiv opgave, instruktioner og regler',
44
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.label': 'Kreativitet',
45
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.high': 'Høj',
46
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.low': 'Lav',
47
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.medium': 'Middel',
48
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.helperMessage': 'For eksempel: 1. Start dokumentet med et kort overblik over vores virksomheds mål. 2. Opret en liste over vigtige teammedlemmer, som de skal møde i deres første uge.',
49
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.placeholder': 'Giv opgaveinstruktioner for at hjælpe med at generere specifikke output.',
50
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.helperMessage': 'For eksempel: Outputtet skal følge retningslinjerne for virksomhedens stil og må ikke bruge ubekræftede data.',
51
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.label': 'Regler',
52
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.placeholder': 'Beskriv eventuelle regler, du vil have skal følges.',
53
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.error.required': 'Angiv opgave',
54
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.helperMessage': 'For eksempel: Opret onboarding-dokumentation for nye medarbejdere, der slutter sig til teamet.',
55
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.label': 'Opgave',
56
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.placeholder': 'Beskriv den opgave, der skal udføres.',
57
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.label': 'Tone',
58
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.casual': 'Afslappet',
59
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.educational': 'Pædagogisk',
60
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.empathetic': 'Empatisk',
61
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.neutral': 'Neutral',
62
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.professional': 'Professionel',
63
- 'fabric.editor.ai.config.item.advancedPrompt.promptLabel': 'Generér en avanceret prompt',
64
- 'fabric.editor.ai.config.item.advancedPrompt.title': 'Generér en avanceret prompt',
65
43
  'fabric.editor.ai.config.item.agent.title': 'Atlassian Intelligence Rovo-medarbejder',
66
44
  'fabric.editor.ai.config.item.atlas-shorten-update.description': 'Forkorter indholdet for at gøre det mere kortfattet',
67
45
  'fabric.editor.ai.config.item.atlas-shorten-update.title': 'Forkort opdateringen',
@@ -223,7 +201,6 @@ export default {
223
201
  'fabric.editor.ai.experience.suggestionGroupHeading.knowledgeSource': 'Videnskilde',
224
202
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgents': 'Rovo-medarbejdere',
225
203
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgentsCount': 'Rovo-medarbejdere ({numberOfAgents})',
226
- 'fabric.editor.ai.experience.suggestionGroupHeading.studio': 'Studio',
227
204
  'fabric.editor.ai.experience.suggestionGroupHeading.useRovoAgentsCount': 'Brug en Rovo-medarbejder ({numberOfAgents})',
228
205
  'fabric.editor.ai.experience.useGeneralAiKnowledgeLabel': 'Brug generel viden',
229
206
  'fabric.editor.ai.experience.useRovoOrganisationKnowledgeLabel': 'Brug viden fra din organisation',
@@ -420,6 +397,7 @@ export default {
420
397
  'fabric.editor.errorPanel.description': 'Vis fejl i et farvel panel',
421
398
  'fabric.editor.expand': 'Udvid',
422
399
  'fabric.editor.expand.description': 'Indsæt en udvidelse',
400
+ 'fabric.editor.expandAriaLabel': 'Giv denne udvidelse en titel',
423
401
  'fabric.editor.expandDefaultTitle': 'Klik her for at udvide...',
424
402
  'fabric.editor.expandNode': 'Udvid indhold',
425
403
  'fabric.editor.expandPlaceholder': 'Giv denne udvidelse en titel...',
@@ -429,6 +407,7 @@ export default {
429
407
  'fabric.editor.extension.deleteElementTitle': 'Slet element',
430
408
  'fabric.editor.extension.sourceNoTitledName': 'dette element',
431
409
  'fabric.editor.extensions.config-panel.save-indicator': 'Alle ændringer gemmes altid automatisk',
410
+ 'fabric.editor.externalExtensionsHeading': 'Apps',
432
411
  'fabric.editor.externalMediaFile': 'Ekstern mediefil',
433
412
  'fabric.editor.failed_to_upload': 'Upload mislykkedes',
434
413
  'fabric.editor.feedbackDialog': 'Giv feedback',
@@ -540,6 +519,7 @@ export default {
540
519
  'fabric.editor.lists': 'Liste',
541
520
  'fabric.editor.listsFormat': 'Listeformatering',
542
521
  'fabric.editor.lockColumns': 'Faste søjlebredder',
522
+ 'fabric.editor.longEmptyNodePlaceholderText': 'Skriv / for at indsætte elementer',
543
523
  'fabric.editor.markdown': 'Markdown',
544
524
  'fabric.editor.matchCase': 'Match store/små bogstaver',
545
525
  'fabric.editor.media.DefaultMediaWidthDecreased': '{newMediaWidth, plural, one {Mediebredde reduceret til {newMediaWidth,number} pixel.} other {Mediebredde reduceret til {newMediaWidth,number} pixels.}}',
@@ -608,6 +588,7 @@ export default {
608
588
  'fabric.editor.orderedList.description': 'Opret en sorteret liste',
609
589
  'fabric.editor.other': 'Andet …',
610
590
  'fabric.editor.outdent': 'Ryk ud',
591
+ 'fabric.editor.overflowMenuViewMore': 'Vis mere',
611
592
  'fabric.editor.pageActionsLabel': 'Sidehandlinger',
612
593
  'fabric.editor.panel': 'Panel',
613
594
  'fabric.editor.panel.backgroundColor': 'Baggrundsfarve',
@@ -657,6 +638,7 @@ export default {
657
638
  'fabric.editor.selectTableRow': 'Vælg tabelrække',
658
639
  'fabric.editor.selectionExtensionDropdownButtonLabel': 'Vælg app',
659
640
  'fabric.editor.settingsLinks': 'Gå til Indstillinger for links',
641
+ 'fabric.editor.shortEmptyNodePlaceholderText': '/ for at indsætte',
660
642
  'fabric.editor.shortcut': 'Genvej til tekst',
661
643
  'fabric.editor.single': 'Layout med én kolonne',
662
644
  'fabric.editor.singleColumns': 'Layout med en kolonne',
@@ -720,8 +702,11 @@ export default {
720
702
  'fabric.editor.time.ago': 'siden',
721
703
  'fabric.editor.time.updated': 'Opdateret',
722
704
  'fabric.editor.time.viewed': 'Vist',
705
+ 'fabric.editor.toolbarAppears': 'Værktøjslinjen vises',
723
706
  'fabric.editor.toolbarLabel': 'Editor',
724
707
  'fabric.editor.toolbarMediaTitle': 'Tilføj billede, video eller fil',
708
+ 'fabric.editor.toolbarPositionFixedAtTop': 'Fastgjort øverst',
709
+ 'fabric.editor.toolbarPositionInline': 'På linje med tekst',
725
710
  'fabric.editor.tooltip.blockPanel': 'et panel',
726
711
  'fabric.editor.tooltip.bulletList': 'en liste',
727
712
  'fabric.editor.tooltip.decisionList': 'en beslutningsliste',
@@ -32,6 +32,7 @@ export default {
32
32
  'fabric.editor.ai.atlas-prebuilt.atlasGenerateContentConfigItemDescription': 'Erstellt Inhalte, die dem Update hinzugefügt werden',
33
33
  'fabric.editor.ai.atlas-prebuilt.atlasSummarizePageConfigItemDescription': 'Fasst die Inhalte des Updates zusammen',
34
34
  'fabric.editor.ai.commandPalette.promptBuilderForm.buttons.submit': 'Generieren',
35
+ 'fabric.editor.ai.commandPalette.promptBuilderForm.generateContent.ariaLabel': 'Atlassian Intelligence fragen',
35
36
  'fabric.editor.ai.config.item.action.insert': 'Einfügen',
36
37
  'fabric.editor.ai.config.item.action.insertAtTop': 'Oben einfügen',
37
38
  'fabric.editor.ai.config.item.action.insertBelow': 'Unten einfügen',
@@ -39,29 +40,6 @@ export default {
39
40
  'fabric.editor.ai.config.item.action.replaceTitle': 'Titel ersetzen',
40
41
  'fabric.editor.ai.config.item.action.replaceTitleTooLongDisabledTooltip': 'Der Titel darf nicht mehr als {maxLength} Zeichen enthalten.',
41
42
  'fabric.editor.ai.config.item.action.rovoAgents.continueInChatLabel': 'Im Chat öffnen',
42
- 'fabric.editor.ai.config.item.advanced-prompt.form.instructions.label': 'Anweisungen',
43
- 'fabric.editor.ai.config.item.advancedPrompt.description': 'Aufgabe, Anweisungen und Regeln angeben',
44
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.label': 'Kreativität',
45
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.high': 'Hoch',
46
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.low': 'Niedrig',
47
- 'fabric.editor.ai.config.item.advancedPrompt.form.creativity.option.medium': 'Mittel',
48
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.helperMessage': 'Ein Beispiel: 1. Geben Sie im Dokument zunächst einen kurzen Überblick über unsere Unternehmensziele. 2. Erstellen Sie eine Liste mit den wichtigsten Teammitgliedern, die neue Mitarbeiter in der ersten Woche treffen sollten.',
49
- 'fabric.editor.ai.config.item.advancedPrompt.form.instructions.placeholder': 'Stellen Sie Aufgabenanweisungen bereit, um die Generierung bestimmter Ausgaben zu unterstützen.',
50
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.helperMessage': 'Ein Beispiel: Die Ausgabe muss den Stilrichtlinien des Unternehmens entsprechen und darf keine unbestätigten Daten enthalten.',
51
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.label': 'Regeln',
52
- 'fabric.editor.ai.config.item.advancedPrompt.form.rules.placeholder': 'Beschreiben Sie alle Regeln, die befolgt werden sollen.',
53
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.error.required': 'Bitte geben Sie eine Aufgabe an.',
54
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.helperMessage': 'Ein Beispiel: Erstellen Sie eine Onboarding-Dokumentation für neue Mitarbeiter, die dem Team beitreten.',
55
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.label': 'Aufgabe',
56
- 'fabric.editor.ai.config.item.advancedPrompt.form.task.placeholder': 'Beschreiben Sie die zu erledigende Aufgabe.',
57
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.label': 'Ton',
58
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.casual': 'Locker',
59
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.educational': 'Informativ',
60
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.empathetic': 'Empathisch',
61
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.neutral': 'Neutral',
62
- 'fabric.editor.ai.config.item.advancedPrompt.form.tone.option.professional': 'Professionell',
63
- 'fabric.editor.ai.config.item.advancedPrompt.promptLabel': 'Einen erweiterten Prompt erstellen',
64
- 'fabric.editor.ai.config.item.advancedPrompt.title': 'Einen erweiterten Prompt erstellen',
65
43
  'fabric.editor.ai.config.item.agent.title': 'Rovo-Agent von Atlassian Intelligence',
66
44
  'fabric.editor.ai.config.item.atlas-shorten-update.description': 'Kürzt den Inhalt, um ihn präziser zu machen',
67
45
  'fabric.editor.ai.config.item.atlas-shorten-update.title': 'Update verkürzen',
@@ -223,7 +201,6 @@ export default {
223
201
  'fabric.editor.ai.experience.suggestionGroupHeading.knowledgeSource': 'Wissensquelle',
224
202
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgents': 'Rovo-Agenten',
225
203
  'fabric.editor.ai.experience.suggestionGroupHeading.rovoAgentsCount': 'Rovo-Agenten ({numberOfAgents})',
226
- 'fabric.editor.ai.experience.suggestionGroupHeading.studio': 'Studio',
227
204
  'fabric.editor.ai.experience.suggestionGroupHeading.useRovoAgentsCount': 'Rovo-Agenten verwenden ({numberOfAgents})',
228
205
  'fabric.editor.ai.experience.useGeneralAiKnowledgeLabel': 'Allgemeines Wissen verwenden',
229
206
  'fabric.editor.ai.experience.useRovoOrganisationKnowledgeLabel': 'Wissen aus Ihrer Organisation verwenden',
@@ -420,6 +397,7 @@ export default {
420
397
  'fabric.editor.errorPanel.description': 'Fehler in einem farbigen Panel hervorheben',
421
398
  'fabric.editor.expand': 'Erweiterung',
422
399
  'fabric.editor.expand.description': 'Eine Erweiterung einfügen',
400
+ 'fabric.editor.expandAriaLabel': 'Wählen Sie einen Titel für diese Erweiterung',
423
401
  'fabric.editor.expandDefaultTitle': 'Klicken Sie hier, um zu erweitern …',
424
402
  'fabric.editor.expandNode': 'Inhaltsanzeige erweitern',
425
403
  'fabric.editor.expandPlaceholder': 'Wählen Sie einen Titel für diese Erweiterung …',
@@ -429,6 +407,7 @@ export default {
429
407
  'fabric.editor.extension.deleteElementTitle': 'Element löschen',
430
408
  'fabric.editor.extension.sourceNoTitledName': 'dieses Element',
431
409
  'fabric.editor.extensions.config-panel.save-indicator': 'Alle Änderungen werden immer automatisch gespeichert.',
410
+ 'fabric.editor.externalExtensionsHeading': 'Apps',
432
411
  'fabric.editor.externalMediaFile': 'Externe Mediendatei',
433
412
  'fabric.editor.failed_to_upload': 'Upload fehlgeschlagen',
434
413
  'fabric.editor.feedbackDialog': 'Feedback geben',
@@ -540,6 +519,7 @@ export default {
540
519
  'fabric.editor.lists': 'Listen',
541
520
  'fabric.editor.listsFormat': 'Formatierung der Liste',
542
521
  'fabric.editor.lockColumns': 'Feste Spaltenbreiten',
522
+ 'fabric.editor.longEmptyNodePlaceholderText': 'Geben Sie "/" ein, um Elemente einzufügen.',
543
523
  'fabric.editor.markdown': 'Markdown',
544
524
  'fabric.editor.matchCase': 'Groß-/Kleinschreibung beachten',
545
525
  'fabric.editor.media.DefaultMediaWidthDecreased': '{newMediaWidth, plural, one {Die Medienbreite wurde auf {newMediaWidth,number} Pixel verringert.} other {Die Medienbreite wurde auf {newMediaWidth,number} Pixel verringert.}}',
@@ -608,6 +588,7 @@ export default {
608
588
  'fabric.editor.orderedList.description': 'Sortierte Liste erstellen',
609
589
  'fabric.editor.other': 'Sonstige …',
610
590
  'fabric.editor.outdent': 'Einzug verkleinern',
591
+ 'fabric.editor.overflowMenuViewMore': 'Mehr anzeigen',
611
592
  'fabric.editor.pageActionsLabel': 'Seitenaktionen',
612
593
  'fabric.editor.panel': 'Panel',
613
594
  'fabric.editor.panel.backgroundColor': 'Hintergrundfarbe',
@@ -657,6 +638,7 @@ export default {
657
638
  'fabric.editor.selectTableRow': 'Zeile auswählen',
658
639
  'fabric.editor.selectionExtensionDropdownButtonLabel': 'App auswählen',
659
640
  'fabric.editor.settingsLinks': 'Zu den Link-Einstellungen',
641
+ 'fabric.editor.shortEmptyNodePlaceholderText': '/ eingeben, um etwas einzufügen',
660
642
  'fabric.editor.shortcut': 'Textverknüpfung',
661
643
  'fabric.editor.single': 'Layout mit einer Spalte',
662
644
  'fabric.editor.singleColumns': 'Layout mit 1 Spalte',
@@ -720,8 +702,10 @@ export default {
720
702
  'fabric.editor.time.ago': 'vor',
721
703
  'fabric.editor.time.updated': 'Aktualisiert',
722
704
  'fabric.editor.time.viewed': 'Angesehen',
705
+ 'fabric.editor.toolbarAppears': 'Symbolleiste wird angezeigt',
723
706
  'fabric.editor.toolbarLabel': 'Editor',
724
707
  'fabric.editor.toolbarMediaTitle': 'Bild, Video oder Datei hinzufügen',
708
+ 'fabric.editor.toolbarPositionFixedAtTop': 'Oben fixiert',
725
709
  'fabric.editor.tooltip.blockPanel': 'ein Panel',
726
710
  'fabric.editor.tooltip.bulletList': 'eine Liste',
727
711
  'fabric.editor.tooltip.decisionList': 'eine Entscheidungsliste',