@atlaskit/editor-common 122.11.0 → 122.12.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.
- package/CHANGELOG.md +39 -0
- package/dist/cjs/ai-messages/ai-suggestions.js +13 -8
- package/dist/cjs/extensibility/GeneratedContentReveal.compiled.css +4 -3
- package/dist/cjs/extensibility/GeneratedContentReveal.js +7 -22
- package/dist/cjs/extensions/buildMenuItem.js +1 -1
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/quick-insert/build-quick-insert-menu-model.js +6 -5
- package/dist/cjs/quick-insert/getQuickInsertProviderMenuItemKey.js +16 -3
- package/dist/cjs/quick-insert/registered-menu-model.js +14 -0
- package/dist/cjs/quick-insert/selectQuickInsertCategoryItems.js +27 -0
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/ai-messages/ai-suggestions.js +13 -8
- package/dist/es2019/extensibility/GeneratedContentReveal.compiled.css +4 -3
- package/dist/es2019/extensibility/GeneratedContentReveal.js +6 -18
- package/dist/es2019/extensions/buildMenuItem.js +1 -1
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/quick-insert/build-quick-insert-menu-model.js +6 -5
- package/dist/es2019/quick-insert/getQuickInsertProviderMenuItemKey.js +10 -1
- package/dist/es2019/quick-insert/registered-menu-model.js +2 -0
- package/dist/es2019/quick-insert/selectQuickInsertCategoryItems.js +19 -0
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/ai-messages/ai-suggestions.js +13 -8
- package/dist/esm/extensibility/GeneratedContentReveal.compiled.css +4 -3
- package/dist/esm/extensibility/GeneratedContentReveal.js +7 -22
- package/dist/esm/extensions/buildMenuItem.js +1 -1
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/quick-insert/build-quick-insert-menu-model.js +6 -5
- package/dist/esm/quick-insert/getQuickInsertProviderMenuItemKey.js +15 -2
- package/dist/esm/quick-insert/registered-menu-model.js +2 -0
- package/dist/esm/quick-insert/selectQuickInsertCategoryItems.js +21 -0
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/ai-messages/ai-suggestions.d.ts +5 -0
- package/dist/types/collab/agent-edit-chrome.d.ts +1 -0
- package/dist/types/quick-insert/build-quick-insert-menu-model.d.ts +2 -1
- package/dist/types/quick-insert/getQuickInsertProviderMenuItemKey.d.ts +10 -1
- package/dist/types/quick-insert/registered-menu-model.d.ts +3 -0
- package/dist/types/quick-insert/selectQuickInsertCategoryItems.d.ts +7 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 122.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`b2a2413928cac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b2a2413928cac) -
|
|
8
|
+
Match agent highlights, cursors and review diffs to shared Studio and third-party brand colours
|
|
9
|
+
under the existing telepointer redesign. Use the existing purple attribution treatment for Rovo
|
|
10
|
+
review diffs and preserve square Rovo telepointer avatars.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`749f1c3c8359c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/749f1c3c8359c) -
|
|
15
|
+
Retain the first 30 category results and include the first 10 ecosystem quick-insert registrations
|
|
16
|
+
when they fall beyond that cutoff.
|
|
17
|
+
|
|
18
|
+
Limit slash-command insert-menu category browsing while preserving uncapped search results.
|
|
19
|
+
|
|
20
|
+
Classify ecosystem quick-insert provider registrations without changing compatibility keys.
|
|
21
|
+
|
|
22
|
+
Preserve app provenance for Quick Insert items while the `platform_editor_slash_command`
|
|
23
|
+
experiment is enabled.
|
|
24
|
+
|
|
25
|
+
Enable Quick Insert category analytics while the `platform_editor_slash_command` experiment is
|
|
26
|
+
enabled.
|
|
27
|
+
|
|
28
|
+
- [`ef1c909630275`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ef1c909630275) -
|
|
29
|
+
Fix Suggested Edits labels, loading-copy IDs, source tooltips, and source product icons under the
|
|
30
|
+
existing Suggested Edits rollout.
|
|
31
|
+
- [`fb2456e25ba6f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/fb2456e25ba6f) -
|
|
32
|
+
The generated content reveal animates `height` to `auto` instead of to a measured value, so the
|
|
33
|
+
node no longer reads its own height before opening.
|
|
34
|
+
- Updated dependencies
|
|
35
|
+
|
|
36
|
+
## 122.11.1
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- Updated dependencies
|
|
41
|
+
|
|
3
42
|
## 122.11.0
|
|
4
43
|
|
|
5
44
|
### Minor Changes
|
|
@@ -122,13 +122,13 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
|
|
|
122
122
|
description: 'Label for the suggestions section in the AI suggestions staging area'
|
|
123
123
|
},
|
|
124
124
|
cardCloseButtonLabel: {
|
|
125
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
125
|
+
id: 'fabric.editor.ai.suggestions.card.closeSuggestionButtonLabel.non-final',
|
|
126
126
|
defaultMessage: 'Close suggestion',
|
|
127
127
|
description: 'Label and tooltip for the close button on the AI suggestions card'
|
|
128
128
|
},
|
|
129
129
|
cardShowSidebarButtonLabel: {
|
|
130
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
131
|
-
defaultMessage: 'Show
|
|
130
|
+
id: 'fabric.editor.ai.suggestions.card.showSuggestionsButtonLabel.non-final',
|
|
131
|
+
defaultMessage: 'Show suggestions',
|
|
132
132
|
description: 'Label and tooltip for the button on the AI suggestions card that opens the suggestions sidebar'
|
|
133
133
|
},
|
|
134
134
|
cardPreviousSuggestionButtonLabel: {
|
|
@@ -196,18 +196,23 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
|
|
|
196
196
|
defaultMessage: 'Source apps',
|
|
197
197
|
description: 'Accessible name for the stack of app logos showing which apps an AI suggestion drew on'
|
|
198
198
|
},
|
|
199
|
+
cardSourceAppsTooltip: {
|
|
200
|
+
id: 'fabric.editor.ai.suggestions.card.sourceAppsTooltip.non-final',
|
|
201
|
+
defaultMessage: 'Sources from {apps}',
|
|
202
|
+
description: 'Tooltip and accessible name for the stack of product logos showing which apps an AI suggestion drew on. {apps} is a localized list of product names, such as “Confluence and Jira”.'
|
|
203
|
+
},
|
|
199
204
|
cardSourcesButtonLabel: {
|
|
200
205
|
id: 'fabric.editor.ai.suggestions.card.sourcesButtonLabel.non-final',
|
|
201
206
|
defaultMessage: 'Sources',
|
|
202
207
|
description: 'Label for the sources toggle button on the AI suggestions card'
|
|
203
208
|
},
|
|
204
209
|
cardSourcesHideButtonLabel: {
|
|
205
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
210
|
+
id: 'fabric.editor.ai.suggestions.card.hideReasoningButtonLabel.non-final',
|
|
206
211
|
defaultMessage: 'Hide reasoning',
|
|
207
212
|
description: 'Label for the sources toggle button when sources are expanded'
|
|
208
213
|
},
|
|
209
214
|
cardSourcesShowButtonLabel: {
|
|
210
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
215
|
+
id: 'fabric.editor.ai.suggestions.card.showReasoningButtonLabel.non-final',
|
|
211
216
|
defaultMessage: 'Show reasoning',
|
|
212
217
|
description: 'Label for the sources toggle button when sources are collapsed'
|
|
213
218
|
},
|
|
@@ -247,7 +252,7 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
|
|
|
247
252
|
description: 'Label for the dismiss button on the AI suggestions card'
|
|
248
253
|
},
|
|
249
254
|
cardMoreOptionsButtonLabel: {
|
|
250
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
255
|
+
id: 'fabric.editor.ai.suggestions.card.moreActionsButtonLabel.non-final',
|
|
251
256
|
defaultMessage: 'More actions',
|
|
252
257
|
description: 'Label and tooltip for the overflow actions button on the AI suggestions card'
|
|
253
258
|
},
|
|
@@ -297,12 +302,12 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
|
|
|
297
302
|
description: 'Accessible label for the stop button displayed while the AI is thinking. When clicked, it cancels the ongoing action.'
|
|
298
303
|
},
|
|
299
304
|
thinkingReviewingContent: {
|
|
300
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
305
|
+
id: 'fabric.editor.ai.suggestions.thinking.rovoReviewingPage.non-final',
|
|
301
306
|
defaultMessage: 'Rovo is reviewing your page',
|
|
302
307
|
description: 'First loading message on the AI suggestions thinking bar, shown when the name of the reviewing agent is unknown'
|
|
303
308
|
},
|
|
304
309
|
thinkingReviewingContentWithAgent: {
|
|
305
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
310
|
+
id: 'fabric.editor.ai.suggestions.thinking.agentAnalyzing.non-final',
|
|
306
311
|
defaultMessage: '{agentName} is analyzing',
|
|
307
312
|
description: 'First loading message on the AI suggestions thinking bar. The {agentName} placeholder is replaced with the reviewing agent name (for example "Content Reviewer"). Shown for a few seconds before the remaining rotating statuses.'
|
|
308
313
|
},
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
._1vs61nu9:has(.extension-label:hover) .extension-icon{display:inline}
|
|
25
25
|
._26lx1tsb .extension-label:hover.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
26
26
|
._2z44kb7n:has(.extension-edit-toggle-container:hover) .extension-label{opacity:1}
|
|
27
|
+
._4t3iidpf{height:0}
|
|
27
28
|
._54r11nu9:has(.extension-edit-toggle-container:hover) .extension-icon{display:inline}
|
|
28
29
|
._5sag15uc{animation-duration:var(--ds-duration-xlong,.4s)}
|
|
29
30
|
._9sz11bym iframe:not([data-native-embed-card-wrapper=true] iframe){animation-name:var(--ds-keyframe-fade-in,FadeIn0to100)}
|
|
30
31
|
._bcikkb7n:has(.extension-container:hover) .extension-label{opacity:1}
|
|
31
|
-
._c71lidpf{max-height:0}
|
|
32
32
|
._d1oeglyw:has(.extension-container:hover) .extension-label{box-shadow:none}
|
|
33
33
|
._decvtlke:has(.extension-edit-toggle-container:hover) .extension-label{cursor:pointer}
|
|
34
34
|
._gp9p1hrf iframe:not([data-native-embed-card-wrapper=true] iframe){animation-fill-mode:both}
|
|
35
|
-
.
|
|
35
|
+
._j7hq180b{animation-name:k1gqx0zb}
|
|
36
36
|
._jl0d1tsb:has(.extension-edit-toggle-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
37
37
|
._kqswh2mm{position:relative}
|
|
38
38
|
._ks721tsb:has(.extension-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
._mi5m1wug .extension-label:hover.always-hide-label{cursor:auto}
|
|
42
42
|
._okd3ysee:has(.extension-edit-toggle-container:hover) .extension-label{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
43
43
|
._pjh31hrf [data-native-embed-card-wrapper=true]{animation-fill-mode:both}
|
|
44
|
+
._tw1z1t97{interpolate-size:allow-keywords}
|
|
44
45
|
._x3ro1j9a .extension-label:hover.with-bodied-macro-live-page-styles{background-color:var(--ds-background-input,#fff)}
|
|
45
46
|
._xajsynbm:has(.extension-label:hover) .extension-container{box-shadow:0 0 0 1px var(--ds-border-input,#8c8f97)}
|
|
46
47
|
._y7o7idpf:has(.extension-edit-toggle-container:hover) .extension-label.always-hide-label{opacity:0}
|
|
@@ -49,5 +50,5 @@
|
|
|
49
50
|
._1ql7tlke .extension-label:hover{cursor:pointer}
|
|
50
51
|
._1tmrkb7n .extension-label:hover{opacity:1}
|
|
51
52
|
._dmn9ysee .extension-label:hover{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
52
|
-
@keyframes
|
|
53
|
+
@keyframes k1gqx0zb{0%{height:0}to{height:auto}}
|
|
53
54
|
@media (prefers-reduced-motion:reduce){._2hwzru3m{animation-duration:0s}._dxfxru3m [data-native-embed-card-wrapper=true]{animation-duration:0s}._log5ru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-duration:0s}._1pz3ru3m [data-native-embed-card-wrapper=true]{animation-delay:0s}._9hrrru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-delay:0s}}
|
|
@@ -20,8 +20,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
20
20
|
* 1. `collapsed` — clipped to zero height and `inert`. The embed loads behind it, full size but
|
|
21
21
|
* unseen, with its own loading overlay hidden.
|
|
22
22
|
* 2. `useNativeEmbedSettled` calls back once the embed has finished loading.
|
|
23
|
-
* 3. `revealing` — the
|
|
24
|
-
* open (400ms).
|
|
23
|
+
* 3. `revealing` — the node animates open to its content height (400ms).
|
|
25
24
|
* 4. The embed fades in (200ms), delayed so it follows the opening instead of overlapping it.
|
|
26
25
|
* 5. `open` — on `animationend`, when the content first becomes visible, `inert` is dropped.
|
|
27
26
|
*
|
|
@@ -39,22 +38,13 @@ var READY_TIMEOUT_MS = 30000;
|
|
|
39
38
|
|
|
40
39
|
/** For when no `animationend` arrives. Must exceed the reveal. */
|
|
41
40
|
var REVEAL_TIMEOUT_MS = 1000;
|
|
42
|
-
|
|
43
|
-
/** Set inline from the measured content height just before the animation runs. */
|
|
44
|
-
var REVEAL_HEIGHT_VARIABLE = '--extension-reveal-height';
|
|
45
41
|
var relativeStyles = null;
|
|
46
42
|
|
|
47
43
|
// Mirrors the default span's hover chrome in `ExtensionNodeWrapper`; keep the two in step.
|
|
48
44
|
var hoverStyles = null;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Animates `max-height`, so the rendered height is `min(content, max-height)` and overshooting is
|
|
52
|
-
* harmless — the measurement is taken before the embed has settled on its size. A measurement is
|
|
53
|
-
* needed because the embed writes a definite inline `height` onto `.extension-container`.
|
|
54
|
-
*/
|
|
55
45
|
var openHeight = null;
|
|
56
46
|
|
|
57
|
-
// `display: block` because `overflow` and `
|
|
47
|
+
// `display: block` because `overflow` and `height` do not apply to an inline span.
|
|
58
48
|
var clippedStyles = null;
|
|
59
49
|
|
|
60
50
|
/**
|
|
@@ -87,19 +77,17 @@ var GeneratedContentReveal = exports.GeneratedContentReveal = function Generated
|
|
|
87
77
|
setState = _useState4[1];
|
|
88
78
|
|
|
89
79
|
// Only a collapsed node opens, so whichever of the readiness signal and the fail-safe timer
|
|
90
|
-
// comes second changes nothing.
|
|
80
|
+
// comes second changes nothing.
|
|
91
81
|
var startRevealing = (0, _react.useCallback)(function () {
|
|
92
|
-
// The clipped wrapper's `scrollHeight` is the height its content wants.
|
|
93
|
-
wrapperElement === null || wrapperElement === void 0 || wrapperElement.style.setProperty(REVEAL_HEIGHT_VARIABLE, "".concat(wrapperElement.scrollHeight, "px"));
|
|
94
82
|
setState(function (current) {
|
|
95
83
|
return current === 'collapsed' ? 'revealing' : current;
|
|
96
84
|
});
|
|
97
|
-
}, [
|
|
85
|
+
}, []);
|
|
98
86
|
|
|
99
87
|
// Step 2 → 3.
|
|
100
88
|
(0, _useNativeEmbedSettled.useNativeEmbedSettled)(wrapperElement, startRevealing);
|
|
101
89
|
|
|
102
|
-
//
|
|
90
|
+
// One timer, set on mount, so the deadline never moves.
|
|
103
91
|
(0, _react.useEffect)(function () {
|
|
104
92
|
var timer = setTimeout(startRevealing, READY_TIMEOUT_MS);
|
|
105
93
|
return function () {
|
|
@@ -137,10 +125,7 @@ var GeneratedContentReveal = exports.GeneratedContentReveal = function Generated
|
|
|
137
125
|
ref: setWrapperElement
|
|
138
126
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- the block controls and the SSR cleanup find the wrapper by `span.relative`
|
|
139
127
|
,
|
|
140
|
-
className: (0, _runtime.ax)(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "
|
|
141
|
-
onAnimationEnd: onAnimationEnd
|
|
142
|
-
style: {
|
|
143
|
-
"--_1wl3sa9": (0, _runtime.ix)("var(".concat(REVEAL_HEIGHT_VARIABLE, ")"))
|
|
144
|
-
}
|
|
128
|
+
className: (0, _runtime.ax)(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "_4t3iidpf _114yglyw", state === 'revealing' && "", state === 'revealing' && "_tw1z1t97 _j7hq180b _5sag15uc _1pglindk _2hwzru3m", state !== 'collapsed' && "_10i01bym _9sz11bym _147ai9qs _lwlpi9qs _lbjpindk _17w9indk _1p7l15uc _1jbo15uc _pjh31hrf _gp9p1hrf _dxfxru3m _log5ru3m _1pz3ru3m _9hrrru3m", showMacroInteractionDesignUpdates ? 'relative' : undefined]),
|
|
129
|
+
onAnimationEnd: onAnimationEnd
|
|
145
130
|
}, children));
|
|
146
131
|
};
|
|
@@ -19,7 +19,7 @@ function buildMenuItem(manifest, extensionModule) {
|
|
|
19
19
|
if (!node) {
|
|
20
20
|
throw new Error("Couldn't find any action for ".concat(title, " (").concat(key, ")"));
|
|
21
21
|
}
|
|
22
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_app_category_analytics') ? {
|
|
22
|
+
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_app_category_analytics') || (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command') ? {
|
|
23
23
|
app: (_ref = (_extensionModule$app = extensionModule.app) !== null && _extensionModule$app !== void 0 ? _extensionModule$app : manifest.app) !== null && _ref !== void 0 ? _ref : {
|
|
24
24
|
key: manifest.key
|
|
25
25
|
}
|
|
@@ -27,7 +27,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
|
|
|
27
27
|
var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
|
|
28
28
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
29
29
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
30
|
-
var packageVersion = "122.
|
|
30
|
+
var packageVersion = "122.11.1";
|
|
31
31
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
32
32
|
// Remove URL as it has UGC
|
|
33
33
|
// Ignored via go/ees007
|
|
@@ -12,7 +12,7 @@ var _surfaceRenderer = require("@atlaskit/editor-ui-control-model/surface-render
|
|
|
12
12
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
13
13
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
14
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15
|
-
var buildQuickInsertMenuModel = exports.buildQuickInsertMenuModel = function buildQuickInsertMenuModel(components, rootComponent,
|
|
15
|
+
var buildQuickInsertMenuModel = exports.buildQuickInsertMenuModel = function buildQuickInsertMenuModel(components, rootComponent, selectCategoryItems, surfaceContext) {
|
|
16
16
|
var _resolveSurface = (0, _surfaceRenderer.resolveSurface)(components, rootComponent),
|
|
17
17
|
root = _resolveSurface.root,
|
|
18
18
|
childrenMap = _resolveSurface.childrenMap,
|
|
@@ -56,11 +56,12 @@ var buildQuickInsertMenuModel = exports.buildQuickInsertMenuModel = function bui
|
|
|
56
56
|
if (items.length === 0) {
|
|
57
57
|
continue;
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
var selectedItems = viewMoreItem !== undefined && selectCategoryItems !== undefined ? selectCategoryItems(items) : items;
|
|
60
|
+
if (selectedItems.length < items.length && viewMoreItem !== undefined) {
|
|
61
|
+
sections.push([section].concat((0, _toConsumableArray2.default)(selectedItems), [viewMoreItem]));
|
|
62
|
+
} else {
|
|
63
|
+
sections.push([section].concat((0, _toConsumableArray2.default)(selectedItems)));
|
|
62
64
|
}
|
|
63
|
-
sections.push([section].concat((0, _toConsumableArray2.default)(items)));
|
|
64
65
|
}
|
|
65
66
|
} catch (err) {
|
|
66
67
|
_iterator.e(err);
|
|
@@ -3,7 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getQuickInsertProviderMenuItemKey = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
6
|
+
exports.quickInsertProviderMenuItemKey = exports.getQuickInsertProviderMenuItemKey = void 0;
|
|
7
|
+
var QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-provider-';
|
|
8
|
+
var ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-ecosystem';
|
|
9
|
+
var getQuickInsertProviderMenuItemKey = exports.getQuickInsertProviderMenuItemKey = function getQuickInsertProviderMenuItemKey(key, app) {
|
|
10
|
+
return (app === null || app === void 0 ? void 0 : app.source) === 'ecosystem' ? "".concat(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX, "-").concat(key) : "".concat(QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX).concat(key);
|
|
11
|
+
};
|
|
12
|
+
var isEcosystemQuickInsertProviderMenuItemKey = function isEcosystemQuickInsertProviderMenuItemKey(key) {
|
|
13
|
+
return key.startsWith(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX);
|
|
14
|
+
};
|
|
15
|
+
var normalizeQuickInsertProviderMenuItemKey = function normalizeQuickInsertProviderMenuItemKey(key) {
|
|
16
|
+
return isEcosystemQuickInsertProviderMenuItemKey(key) ? "".concat(QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX).concat(key.slice("".concat(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX, "-").length)) : key;
|
|
17
|
+
};
|
|
18
|
+
var quickInsertProviderMenuItemKey = exports.quickInsertProviderMenuItemKey = {
|
|
19
|
+
get: getQuickInsertProviderMenuItemKey,
|
|
20
|
+
isEcosystem: isEcosystemQuickInsertProviderMenuItemKey,
|
|
21
|
+
normalize: normalizeQuickInsertProviderMenuItemKey
|
|
9
22
|
};
|
|
@@ -15,5 +15,19 @@ Object.defineProperty(exports, "getMatchingQuickInsertComponents", {
|
|
|
15
15
|
return _getMatchingQuickInsertComponents.getMatchingQuickInsertComponents;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "quickInsertProviderMenuItemKey", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _getQuickInsertProviderMenuItemKey.quickInsertProviderMenuItemKey;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "selectQuickInsertCategoryItems", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _selectQuickInsertCategoryItems.selectQuickInsertCategoryItems;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
18
30
|
var _buildQuickInsertMenuModel = require("./build-quick-insert-menu-model");
|
|
31
|
+
var _getQuickInsertProviderMenuItemKey = require("./getQuickInsertProviderMenuItemKey");
|
|
32
|
+
var _selectQuickInsertCategoryItems = require("./selectQuickInsertCategoryItems");
|
|
19
33
|
var _getMatchingQuickInsertComponents = require("./get-matching-quick-insert-components");
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectQuickInsertCategoryItems = void 0;
|
|
7
|
+
var _getQuickInsertProviderMenuItemKey = require("./getQuickInsertProviderMenuItemKey");
|
|
8
|
+
var DEFAULT_ITEM_LIMIT = 30;
|
|
9
|
+
var ECOSYSTEM_ITEM_LIMIT = 10;
|
|
10
|
+
var isEcosystemQuickInsertItem = function isEcosystemQuickInsertItem(item) {
|
|
11
|
+
return _getQuickInsertProviderMenuItemKey.quickInsertProviderMenuItemKey.isEcosystem(item.key);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Keeps the initial native and ecosystem results while ensuring ecosystem registrations
|
|
16
|
+
* remain discoverable beyond the default category item limit.
|
|
17
|
+
*/
|
|
18
|
+
var selectQuickInsertCategoryItems = exports.selectQuickInsertCategoryItems = function selectQuickInsertCategoryItems(items) {
|
|
19
|
+
var ecosystemItemCount = 0;
|
|
20
|
+
return items.filter(function (item, index) {
|
|
21
|
+
var isEcosystemItem = isEcosystemQuickInsertItem(item);
|
|
22
|
+
if (isEcosystemItem) {
|
|
23
|
+
ecosystemItemCount++;
|
|
24
|
+
}
|
|
25
|
+
return index < DEFAULT_ITEM_LIMIT || isEcosystemItem && ecosystemItemCount <= ECOSYSTEM_ITEM_LIMIT;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -24,7 +24,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
24
24
|
* @jsx jsx
|
|
25
25
|
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
26
26
|
var packageName = "@atlaskit/editor-common";
|
|
27
|
-
var packageVersion = "122.
|
|
27
|
+
var packageVersion = "122.11.1";
|
|
28
28
|
var halfFocusRing = 1;
|
|
29
29
|
var dropOffset = '0, 8';
|
|
30
30
|
var fadeIn = (0, _react2.keyframes)({
|
|
@@ -116,13 +116,13 @@ export const aiSuggestionsMessages = defineMessages({
|
|
|
116
116
|
description: 'Label for the suggestions section in the AI suggestions staging area'
|
|
117
117
|
},
|
|
118
118
|
cardCloseButtonLabel: {
|
|
119
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
119
|
+
id: 'fabric.editor.ai.suggestions.card.closeSuggestionButtonLabel.non-final',
|
|
120
120
|
defaultMessage: 'Close suggestion',
|
|
121
121
|
description: 'Label and tooltip for the close button on the AI suggestions card'
|
|
122
122
|
},
|
|
123
123
|
cardShowSidebarButtonLabel: {
|
|
124
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
125
|
-
defaultMessage: 'Show
|
|
124
|
+
id: 'fabric.editor.ai.suggestions.card.showSuggestionsButtonLabel.non-final',
|
|
125
|
+
defaultMessage: 'Show suggestions',
|
|
126
126
|
description: 'Label and tooltip for the button on the AI suggestions card that opens the suggestions sidebar'
|
|
127
127
|
},
|
|
128
128
|
cardPreviousSuggestionButtonLabel: {
|
|
@@ -190,18 +190,23 @@ export const aiSuggestionsMessages = defineMessages({
|
|
|
190
190
|
defaultMessage: 'Source apps',
|
|
191
191
|
description: 'Accessible name for the stack of app logos showing which apps an AI suggestion drew on'
|
|
192
192
|
},
|
|
193
|
+
cardSourceAppsTooltip: {
|
|
194
|
+
id: 'fabric.editor.ai.suggestions.card.sourceAppsTooltip.non-final',
|
|
195
|
+
defaultMessage: 'Sources from {apps}',
|
|
196
|
+
description: 'Tooltip and accessible name for the stack of product logos showing which apps an AI suggestion drew on. {apps} is a localized list of product names, such as “Confluence and Jira”.'
|
|
197
|
+
},
|
|
193
198
|
cardSourcesButtonLabel: {
|
|
194
199
|
id: 'fabric.editor.ai.suggestions.card.sourcesButtonLabel.non-final',
|
|
195
200
|
defaultMessage: 'Sources',
|
|
196
201
|
description: 'Label for the sources toggle button on the AI suggestions card'
|
|
197
202
|
},
|
|
198
203
|
cardSourcesHideButtonLabel: {
|
|
199
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
204
|
+
id: 'fabric.editor.ai.suggestions.card.hideReasoningButtonLabel.non-final',
|
|
200
205
|
defaultMessage: 'Hide reasoning',
|
|
201
206
|
description: 'Label for the sources toggle button when sources are expanded'
|
|
202
207
|
},
|
|
203
208
|
cardSourcesShowButtonLabel: {
|
|
204
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
209
|
+
id: 'fabric.editor.ai.suggestions.card.showReasoningButtonLabel.non-final',
|
|
205
210
|
defaultMessage: 'Show reasoning',
|
|
206
211
|
description: 'Label for the sources toggle button when sources are collapsed'
|
|
207
212
|
},
|
|
@@ -241,7 +246,7 @@ export const aiSuggestionsMessages = defineMessages({
|
|
|
241
246
|
description: 'Label for the dismiss button on the AI suggestions card'
|
|
242
247
|
},
|
|
243
248
|
cardMoreOptionsButtonLabel: {
|
|
244
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
249
|
+
id: 'fabric.editor.ai.suggestions.card.moreActionsButtonLabel.non-final',
|
|
245
250
|
defaultMessage: 'More actions',
|
|
246
251
|
description: 'Label and tooltip for the overflow actions button on the AI suggestions card'
|
|
247
252
|
},
|
|
@@ -291,12 +296,12 @@ export const aiSuggestionsMessages = defineMessages({
|
|
|
291
296
|
description: 'Accessible label for the stop button displayed while the AI is thinking. When clicked, it cancels the ongoing action.'
|
|
292
297
|
},
|
|
293
298
|
thinkingReviewingContent: {
|
|
294
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
299
|
+
id: 'fabric.editor.ai.suggestions.thinking.rovoReviewingPage.non-final',
|
|
295
300
|
defaultMessage: 'Rovo is reviewing your page',
|
|
296
301
|
description: 'First loading message on the AI suggestions thinking bar, shown when the name of the reviewing agent is unknown'
|
|
297
302
|
},
|
|
298
303
|
thinkingReviewingContentWithAgent: {
|
|
299
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
304
|
+
id: 'fabric.editor.ai.suggestions.thinking.agentAnalyzing.non-final',
|
|
300
305
|
defaultMessage: '{agentName} is analyzing',
|
|
301
306
|
description: 'First loading message on the AI suggestions thinking bar. The {agentName} placeholder is replaced with the reviewing agent name (for example "Content Reviewer"). Shown for a few seconds before the remaining rotating statuses.'
|
|
302
307
|
},
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
._1vs61nu9:has(.extension-label:hover) .extension-icon{display:inline}
|
|
25
25
|
._26lx1tsb .extension-label:hover.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
26
26
|
._2z44kb7n:has(.extension-edit-toggle-container:hover) .extension-label{opacity:1}
|
|
27
|
+
._4t3iidpf{height:0}
|
|
27
28
|
._54r11nu9:has(.extension-edit-toggle-container:hover) .extension-icon{display:inline}
|
|
28
29
|
._5sag15uc{animation-duration:var(--ds-duration-xlong,.4s)}
|
|
29
30
|
._9sz11bym iframe:not([data-native-embed-card-wrapper=true] iframe){animation-name:var(--ds-keyframe-fade-in,FadeIn0to100)}
|
|
30
31
|
._bcikkb7n:has(.extension-container:hover) .extension-label{opacity:1}
|
|
31
|
-
._c71lidpf{max-height:0}
|
|
32
32
|
._d1oeglyw:has(.extension-container:hover) .extension-label{box-shadow:none}
|
|
33
33
|
._decvtlke:has(.extension-edit-toggle-container:hover) .extension-label{cursor:pointer}
|
|
34
34
|
._gp9p1hrf iframe:not([data-native-embed-card-wrapper=true] iframe){animation-fill-mode:both}
|
|
35
|
-
.
|
|
35
|
+
._j7hq180b{animation-name:k1gqx0zb}
|
|
36
36
|
._jl0d1tsb:has(.extension-edit-toggle-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
37
37
|
._kqswh2mm{position:relative}
|
|
38
38
|
._ks721tsb:has(.extension-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
._mi5m1wug .extension-label:hover.always-hide-label{cursor:auto}
|
|
42
42
|
._okd3ysee:has(.extension-edit-toggle-container:hover) .extension-label{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
43
43
|
._pjh31hrf [data-native-embed-card-wrapper=true]{animation-fill-mode:both}
|
|
44
|
+
._tw1z1t97{interpolate-size:allow-keywords}
|
|
44
45
|
._x3ro1j9a .extension-label:hover.with-bodied-macro-live-page-styles{background-color:var(--ds-background-input,#fff)}
|
|
45
46
|
._xajsynbm:has(.extension-label:hover) .extension-container{box-shadow:0 0 0 1px var(--ds-border-input,#8c8f97)}
|
|
46
47
|
._y7o7idpf:has(.extension-edit-toggle-container:hover) .extension-label.always-hide-label{opacity:0}
|
|
@@ -49,5 +50,5 @@
|
|
|
49
50
|
._1ql7tlke .extension-label:hover{cursor:pointer}
|
|
50
51
|
._1tmrkb7n .extension-label:hover{opacity:1}
|
|
51
52
|
._dmn9ysee .extension-label:hover{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
52
|
-
@keyframes
|
|
53
|
+
@keyframes k1gqx0zb{0%{height:0}to{height:auto}}
|
|
53
54
|
@media (prefers-reduced-motion:reduce){._2hwzru3m{animation-duration:0s}._dxfxru3m [data-native-embed-card-wrapper=true]{animation-duration:0s}._log5ru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-duration:0s}._1pz3ru3m [data-native-embed-card-wrapper=true]{animation-delay:0s}._9hrrru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-delay:0s}}
|
|
@@ -11,8 +11,7 @@ import { useNativeEmbedSettled } from './useNativeEmbedSettled';
|
|
|
11
11
|
* 1. `collapsed` — clipped to zero height and `inert`. The embed loads behind it, full size but
|
|
12
12
|
* unseen, with its own loading overlay hidden.
|
|
13
13
|
* 2. `useNativeEmbedSettled` calls back once the embed has finished loading.
|
|
14
|
-
* 3. `revealing` — the
|
|
15
|
-
* open (400ms).
|
|
14
|
+
* 3. `revealing` — the node animates open to its content height (400ms).
|
|
16
15
|
* 4. The embed fades in (200ms), delayed so it follows the opening instead of overlapping it.
|
|
17
16
|
* 5. `open` — on `animationend`, when the content first becomes visible, `inert` is dropped.
|
|
18
17
|
*
|
|
@@ -30,22 +29,13 @@ const READY_TIMEOUT_MS = 30_000;
|
|
|
30
29
|
|
|
31
30
|
/** For when no `animationend` arrives. Must exceed the reveal. */
|
|
32
31
|
const REVEAL_TIMEOUT_MS = 1000;
|
|
33
|
-
|
|
34
|
-
/** Set inline from the measured content height just before the animation runs. */
|
|
35
|
-
const REVEAL_HEIGHT_VARIABLE = '--extension-reveal-height';
|
|
36
32
|
const relativeStyles = null;
|
|
37
33
|
|
|
38
34
|
// Mirrors the default span's hover chrome in `ExtensionNodeWrapper`; keep the two in step.
|
|
39
35
|
const hoverStyles = null;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Animates `max-height`, so the rendered height is `min(content, max-height)` and overshooting is
|
|
43
|
-
* harmless — the measurement is taken before the embed has settled on its size. A measurement is
|
|
44
|
-
* needed because the embed writes a definite inline `height` onto `.extension-container`.
|
|
45
|
-
*/
|
|
46
36
|
const openHeight = null;
|
|
47
37
|
|
|
48
|
-
// `display: block` because `overflow` and `
|
|
38
|
+
// `display: block` because `overflow` and `height` do not apply to an inline span.
|
|
49
39
|
const clippedStyles = null;
|
|
50
40
|
|
|
51
41
|
/**
|
|
@@ -73,17 +63,15 @@ export const GeneratedContentReveal = ({
|
|
|
73
63
|
const [state, setState] = useState('collapsed');
|
|
74
64
|
|
|
75
65
|
// Only a collapsed node opens, so whichever of the readiness signal and the fail-safe timer
|
|
76
|
-
// comes second changes nothing.
|
|
66
|
+
// comes second changes nothing.
|
|
77
67
|
const startRevealing = useCallback(() => {
|
|
78
|
-
// The clipped wrapper's `scrollHeight` is the height its content wants.
|
|
79
|
-
wrapperElement === null || wrapperElement === void 0 ? void 0 : wrapperElement.style.setProperty(REVEAL_HEIGHT_VARIABLE, `${wrapperElement.scrollHeight}px`);
|
|
80
68
|
setState(current => current === 'collapsed' ? 'revealing' : current);
|
|
81
|
-
}, [
|
|
69
|
+
}, []);
|
|
82
70
|
|
|
83
71
|
// Step 2 → 3.
|
|
84
72
|
useNativeEmbedSettled(wrapperElement, startRevealing);
|
|
85
73
|
|
|
86
|
-
//
|
|
74
|
+
// One timer, set on mount, so the deadline never moves.
|
|
87
75
|
useEffect(() => {
|
|
88
76
|
const timer = setTimeout(startRevealing, READY_TIMEOUT_MS);
|
|
89
77
|
return () => clearTimeout(timer);
|
|
@@ -115,7 +103,7 @@ export const GeneratedContentReveal = ({
|
|
|
115
103
|
ref: setWrapperElement
|
|
116
104
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- the block controls and the SSR cleanup find the wrapper by `span.relative`
|
|
117
105
|
,
|
|
118
|
-
className: ax(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "
|
|
106
|
+
className: ax(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "_4t3iidpf _114yglyw", state === 'revealing' && "", state === 'revealing' && "_tw1z1t97 _j7hq180b _5sag15uc _1pglindk _2hwzru3m", state !== 'collapsed' && "_10i01bym _9sz11bym _147ai9qs _lwlpi9qs _lbjpindk _17w9indk _1p7l15uc _1jbo15uc _pjh31hrf _gp9p1hrf _dxfxru3m _log5ru3m _1pz3ru3m _9hrrru3m", showMacroInteractionDesignUpdates ? 'relative' : undefined]),
|
|
119
107
|
onAnimationEnd: onAnimationEnd
|
|
120
108
|
}, children));
|
|
121
109
|
};
|
|
@@ -10,7 +10,7 @@ export function buildMenuItem(manifest, extensionModule) {
|
|
|
10
10
|
throw new Error(`Couldn't find any action for ${title} (${key})`);
|
|
11
11
|
}
|
|
12
12
|
return {
|
|
13
|
-
...(isExperimentEnabled('platform_editor_slash_app_category_analytics') ? {
|
|
13
|
+
...(isExperimentEnabled('platform_editor_slash_app_category_analytics') || isExperimentEnabled('platform_editor_slash_command') ? {
|
|
14
14
|
app: (_ref = (_extensionModule$app = extensionModule.app) !== null && _extensionModule$app !== void 0 ? _extensionModule$app : manifest.app) !== null && _ref !== void 0 ? _ref : {
|
|
15
15
|
key: manifest.key
|
|
16
16
|
}
|
|
@@ -13,7 +13,7 @@ const NETWORK_FAILURE_REGEX = /^network failure/i;
|
|
|
13
13
|
const RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
|
|
14
14
|
const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
15
15
|
const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
16
|
-
const packageVersion = "122.
|
|
16
|
+
const packageVersion = "122.11.1";
|
|
17
17
|
const sanitiseSentryEvents = (data, _hint) => {
|
|
18
18
|
// Remove URL as it has UGC
|
|
19
19
|
// Ignored via go/ees007
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isMenuFooterSectionKey } from '../type-ahead/isMenuFooterSectionKey';
|
|
2
2
|
import { isSectionOverflowItemKey } from '../type-ahead/isSectionOverflowItemKey';
|
|
3
3
|
import { getComponentIdentity, resolveSurface, willComponentRender } from '@atlaskit/editor-ui-control-model/surface-renderer';
|
|
4
|
-
export const buildQuickInsertMenuModel = (components, rootComponent,
|
|
4
|
+
export const buildQuickInsertMenuModel = (components, rootComponent, selectCategoryItems, surfaceContext) => {
|
|
5
5
|
const {
|
|
6
6
|
root,
|
|
7
7
|
childrenMap,
|
|
@@ -38,11 +38,12 @@ export const buildQuickInsertMenuModel = (components, rootComponent, sectionOver
|
|
|
38
38
|
if (items.length === 0) {
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
const selectedItems = viewMoreItem !== undefined && selectCategoryItems !== undefined ? selectCategoryItems(items) : items;
|
|
42
|
+
if (selectedItems.length < items.length && viewMoreItem !== undefined) {
|
|
43
|
+
sections.push([section, ...selectedItems, viewMoreItem]);
|
|
44
|
+
} else {
|
|
45
|
+
sections.push([section, ...selectedItems]);
|
|
44
46
|
}
|
|
45
|
-
sections.push([section, ...items]);
|
|
46
47
|
}
|
|
47
48
|
return {
|
|
48
49
|
footer,
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
const QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-provider-';
|
|
2
|
+
const ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-ecosystem';
|
|
3
|
+
export const getQuickInsertProviderMenuItemKey = (key, app) => (app === null || app === void 0 ? void 0 : app.source) === 'ecosystem' ? `${ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX}-${key}` : `${QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX}${key}`;
|
|
4
|
+
const isEcosystemQuickInsertProviderMenuItemKey = key => key.startsWith(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX);
|
|
5
|
+
const normalizeQuickInsertProviderMenuItemKey = key => isEcosystemQuickInsertProviderMenuItemKey(key) ? `${QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX}${key.slice(`${ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX}-`.length)}` : key;
|
|
6
|
+
export const quickInsertProviderMenuItemKey = {
|
|
7
|
+
get: getQuickInsertProviderMenuItemKey,
|
|
8
|
+
isEcosystem: isEcosystemQuickInsertProviderMenuItemKey,
|
|
9
|
+
normalize: normalizeQuickInsertProviderMenuItemKey
|
|
10
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
2
2
|
export { buildQuickInsertMenuModel } from './build-quick-insert-menu-model';
|
|
3
|
+
export { quickInsertProviderMenuItemKey } from './getQuickInsertProviderMenuItemKey';
|
|
4
|
+
export { selectQuickInsertCategoryItems } from './selectQuickInsertCategoryItems';
|
|
3
5
|
export { getMatchingQuickInsertComponents } from './get-matching-quick-insert-components';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { quickInsertProviderMenuItemKey } from './getQuickInsertProviderMenuItemKey';
|
|
2
|
+
const DEFAULT_ITEM_LIMIT = 30;
|
|
3
|
+
const ECOSYSTEM_ITEM_LIMIT = 10;
|
|
4
|
+
const isEcosystemQuickInsertItem = item => quickInsertProviderMenuItemKey.isEcosystem(item.key);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Keeps the initial native and ecosystem results while ensuring ecosystem registrations
|
|
8
|
+
* remain discoverable beyond the default category item limit.
|
|
9
|
+
*/
|
|
10
|
+
export const selectQuickInsertCategoryItems = items => {
|
|
11
|
+
let ecosystemItemCount = 0;
|
|
12
|
+
return items.filter((item, index) => {
|
|
13
|
+
const isEcosystemItem = isEcosystemQuickInsertItem(item);
|
|
14
|
+
if (isEcosystemItem) {
|
|
15
|
+
ecosystemItemCount++;
|
|
16
|
+
}
|
|
17
|
+
return index < DEFAULT_ITEM_LIMIT || isEcosystemItem && ecosystemItemCount <= ECOSYSTEM_ITEM_LIMIT;
|
|
18
|
+
});
|
|
19
|
+
};
|
|
@@ -14,7 +14,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
|
14
14
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
15
15
|
import Layer from '../Layer';
|
|
16
16
|
const packageName = "@atlaskit/editor-common";
|
|
17
|
-
const packageVersion = "122.
|
|
17
|
+
const packageVersion = "122.11.1";
|
|
18
18
|
const halfFocusRing = 1;
|
|
19
19
|
const dropOffset = '0, 8';
|
|
20
20
|
const fadeIn = keyframes({
|
|
@@ -116,13 +116,13 @@ export var aiSuggestionsMessages = defineMessages({
|
|
|
116
116
|
description: 'Label for the suggestions section in the AI suggestions staging area'
|
|
117
117
|
},
|
|
118
118
|
cardCloseButtonLabel: {
|
|
119
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
119
|
+
id: 'fabric.editor.ai.suggestions.card.closeSuggestionButtonLabel.non-final',
|
|
120
120
|
defaultMessage: 'Close suggestion',
|
|
121
121
|
description: 'Label and tooltip for the close button on the AI suggestions card'
|
|
122
122
|
},
|
|
123
123
|
cardShowSidebarButtonLabel: {
|
|
124
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
125
|
-
defaultMessage: 'Show
|
|
124
|
+
id: 'fabric.editor.ai.suggestions.card.showSuggestionsButtonLabel.non-final',
|
|
125
|
+
defaultMessage: 'Show suggestions',
|
|
126
126
|
description: 'Label and tooltip for the button on the AI suggestions card that opens the suggestions sidebar'
|
|
127
127
|
},
|
|
128
128
|
cardPreviousSuggestionButtonLabel: {
|
|
@@ -190,18 +190,23 @@ export var aiSuggestionsMessages = defineMessages({
|
|
|
190
190
|
defaultMessage: 'Source apps',
|
|
191
191
|
description: 'Accessible name for the stack of app logos showing which apps an AI suggestion drew on'
|
|
192
192
|
},
|
|
193
|
+
cardSourceAppsTooltip: {
|
|
194
|
+
id: 'fabric.editor.ai.suggestions.card.sourceAppsTooltip.non-final',
|
|
195
|
+
defaultMessage: 'Sources from {apps}',
|
|
196
|
+
description: 'Tooltip and accessible name for the stack of product logos showing which apps an AI suggestion drew on. {apps} is a localized list of product names, such as “Confluence and Jira”.'
|
|
197
|
+
},
|
|
193
198
|
cardSourcesButtonLabel: {
|
|
194
199
|
id: 'fabric.editor.ai.suggestions.card.sourcesButtonLabel.non-final',
|
|
195
200
|
defaultMessage: 'Sources',
|
|
196
201
|
description: 'Label for the sources toggle button on the AI suggestions card'
|
|
197
202
|
},
|
|
198
203
|
cardSourcesHideButtonLabel: {
|
|
199
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
204
|
+
id: 'fabric.editor.ai.suggestions.card.hideReasoningButtonLabel.non-final',
|
|
200
205
|
defaultMessage: 'Hide reasoning',
|
|
201
206
|
description: 'Label for the sources toggle button when sources are expanded'
|
|
202
207
|
},
|
|
203
208
|
cardSourcesShowButtonLabel: {
|
|
204
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
209
|
+
id: 'fabric.editor.ai.suggestions.card.showReasoningButtonLabel.non-final',
|
|
205
210
|
defaultMessage: 'Show reasoning',
|
|
206
211
|
description: 'Label for the sources toggle button when sources are collapsed'
|
|
207
212
|
},
|
|
@@ -241,7 +246,7 @@ export var aiSuggestionsMessages = defineMessages({
|
|
|
241
246
|
description: 'Label for the dismiss button on the AI suggestions card'
|
|
242
247
|
},
|
|
243
248
|
cardMoreOptionsButtonLabel: {
|
|
244
|
-
id: 'fabric.editor.ai.suggestions.card.
|
|
249
|
+
id: 'fabric.editor.ai.suggestions.card.moreActionsButtonLabel.non-final',
|
|
245
250
|
defaultMessage: 'More actions',
|
|
246
251
|
description: 'Label and tooltip for the overflow actions button on the AI suggestions card'
|
|
247
252
|
},
|
|
@@ -291,12 +296,12 @@ export var aiSuggestionsMessages = defineMessages({
|
|
|
291
296
|
description: 'Accessible label for the stop button displayed while the AI is thinking. When clicked, it cancels the ongoing action.'
|
|
292
297
|
},
|
|
293
298
|
thinkingReviewingContent: {
|
|
294
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
299
|
+
id: 'fabric.editor.ai.suggestions.thinking.rovoReviewingPage.non-final',
|
|
295
300
|
defaultMessage: 'Rovo is reviewing your page',
|
|
296
301
|
description: 'First loading message on the AI suggestions thinking bar, shown when the name of the reviewing agent is unknown'
|
|
297
302
|
},
|
|
298
303
|
thinkingReviewingContentWithAgent: {
|
|
299
|
-
id: 'fabric.editor.ai.suggestions.thinking.
|
|
304
|
+
id: 'fabric.editor.ai.suggestions.thinking.agentAnalyzing.non-final',
|
|
300
305
|
defaultMessage: '{agentName} is analyzing',
|
|
301
306
|
description: 'First loading message on the AI suggestions thinking bar. The {agentName} placeholder is replaced with the reviewing agent name (for example "Content Reviewer"). Shown for a few seconds before the remaining rotating statuses.'
|
|
302
307
|
},
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
._1vs61nu9:has(.extension-label:hover) .extension-icon{display:inline}
|
|
25
25
|
._26lx1tsb .extension-label:hover.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
26
26
|
._2z44kb7n:has(.extension-edit-toggle-container:hover) .extension-label{opacity:1}
|
|
27
|
+
._4t3iidpf{height:0}
|
|
27
28
|
._54r11nu9:has(.extension-edit-toggle-container:hover) .extension-icon{display:inline}
|
|
28
29
|
._5sag15uc{animation-duration:var(--ds-duration-xlong,.4s)}
|
|
29
30
|
._9sz11bym iframe:not([data-native-embed-card-wrapper=true] iframe){animation-name:var(--ds-keyframe-fade-in,FadeIn0to100)}
|
|
30
31
|
._bcikkb7n:has(.extension-container:hover) .extension-label{opacity:1}
|
|
31
|
-
._c71lidpf{max-height:0}
|
|
32
32
|
._d1oeglyw:has(.extension-container:hover) .extension-label{box-shadow:none}
|
|
33
33
|
._decvtlke:has(.extension-edit-toggle-container:hover) .extension-label{cursor:pointer}
|
|
34
34
|
._gp9p1hrf iframe:not([data-native-embed-card-wrapper=true] iframe){animation-fill-mode:both}
|
|
35
|
-
.
|
|
35
|
+
._j7hq180b{animation-name:k1gqx0zb}
|
|
36
36
|
._jl0d1tsb:has(.extension-edit-toggle-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
37
37
|
._kqswh2mm{position:relative}
|
|
38
38
|
._ks721tsb:has(.extension-container:hover) .extension-label.with-bodied-macro-live-page-styles{box-shadow:0 0 0 1px var(--ds-border,#0b120e24)}
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
._mi5m1wug .extension-label:hover.always-hide-label{cursor:auto}
|
|
42
42
|
._okd3ysee:has(.extension-edit-toggle-container:hover) .extension-label{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
43
43
|
._pjh31hrf [data-native-embed-card-wrapper=true]{animation-fill-mode:both}
|
|
44
|
+
._tw1z1t97{interpolate-size:allow-keywords}
|
|
44
45
|
._x3ro1j9a .extension-label:hover.with-bodied-macro-live-page-styles{background-color:var(--ds-background-input,#fff)}
|
|
45
46
|
._xajsynbm:has(.extension-label:hover) .extension-container{box-shadow:0 0 0 1px var(--ds-border-input,#8c8f97)}
|
|
46
47
|
._y7o7idpf:has(.extension-edit-toggle-container:hover) .extension-label.always-hide-label{opacity:0}
|
|
@@ -49,5 +50,5 @@
|
|
|
49
50
|
._1ql7tlke .extension-label:hover{cursor:pointer}
|
|
50
51
|
._1tmrkb7n .extension-label:hover{opacity:1}
|
|
51
52
|
._dmn9ysee .extension-label:hover{background-color:var(--ds-background-accent-gray-subtlest,#f0f1f2)}
|
|
52
|
-
@keyframes
|
|
53
|
+
@keyframes k1gqx0zb{0%{height:0}to{height:auto}}
|
|
53
54
|
@media (prefers-reduced-motion:reduce){._2hwzru3m{animation-duration:0s}._dxfxru3m [data-native-embed-card-wrapper=true]{animation-duration:0s}._log5ru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-duration:0s}._1pz3ru3m [data-native-embed-card-wrapper=true]{animation-delay:0s}._9hrrru3m iframe:not([data-native-embed-card-wrapper=true] iframe){animation-delay:0s}}
|
|
@@ -12,8 +12,7 @@ import { useNativeEmbedSettled } from './useNativeEmbedSettled';
|
|
|
12
12
|
* 1. `collapsed` — clipped to zero height and `inert`. The embed loads behind it, full size but
|
|
13
13
|
* unseen, with its own loading overlay hidden.
|
|
14
14
|
* 2. `useNativeEmbedSettled` calls back once the embed has finished loading.
|
|
15
|
-
* 3. `revealing` — the
|
|
16
|
-
* open (400ms).
|
|
15
|
+
* 3. `revealing` — the node animates open to its content height (400ms).
|
|
17
16
|
* 4. The embed fades in (200ms), delayed so it follows the opening instead of overlapping it.
|
|
18
17
|
* 5. `open` — on `animationend`, when the content first becomes visible, `inert` is dropped.
|
|
19
18
|
*
|
|
@@ -31,22 +30,13 @@ var READY_TIMEOUT_MS = 30000;
|
|
|
31
30
|
|
|
32
31
|
/** For when no `animationend` arrives. Must exceed the reveal. */
|
|
33
32
|
var REVEAL_TIMEOUT_MS = 1000;
|
|
34
|
-
|
|
35
|
-
/** Set inline from the measured content height just before the animation runs. */
|
|
36
|
-
var REVEAL_HEIGHT_VARIABLE = '--extension-reveal-height';
|
|
37
33
|
var relativeStyles = null;
|
|
38
34
|
|
|
39
35
|
// Mirrors the default span's hover chrome in `ExtensionNodeWrapper`; keep the two in step.
|
|
40
36
|
var hoverStyles = null;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Animates `max-height`, so the rendered height is `min(content, max-height)` and overshooting is
|
|
44
|
-
* harmless — the measurement is taken before the embed has settled on its size. A measurement is
|
|
45
|
-
* needed because the embed writes a definite inline `height` onto `.extension-container`.
|
|
46
|
-
*/
|
|
47
37
|
var openHeight = null;
|
|
48
38
|
|
|
49
|
-
// `display: block` because `overflow` and `
|
|
39
|
+
// `display: block` because `overflow` and `height` do not apply to an inline span.
|
|
50
40
|
var clippedStyles = null;
|
|
51
41
|
|
|
52
42
|
/**
|
|
@@ -79,19 +69,17 @@ export var GeneratedContentReveal = function GeneratedContentReveal(_ref) {
|
|
|
79
69
|
setState = _useState4[1];
|
|
80
70
|
|
|
81
71
|
// Only a collapsed node opens, so whichever of the readiness signal and the fail-safe timer
|
|
82
|
-
// comes second changes nothing.
|
|
72
|
+
// comes second changes nothing.
|
|
83
73
|
var startRevealing = useCallback(function () {
|
|
84
|
-
// The clipped wrapper's `scrollHeight` is the height its content wants.
|
|
85
|
-
wrapperElement === null || wrapperElement === void 0 || wrapperElement.style.setProperty(REVEAL_HEIGHT_VARIABLE, "".concat(wrapperElement.scrollHeight, "px"));
|
|
86
74
|
setState(function (current) {
|
|
87
75
|
return current === 'collapsed' ? 'revealing' : current;
|
|
88
76
|
});
|
|
89
|
-
}, [
|
|
77
|
+
}, []);
|
|
90
78
|
|
|
91
79
|
// Step 2 → 3.
|
|
92
80
|
useNativeEmbedSettled(wrapperElement, startRevealing);
|
|
93
81
|
|
|
94
|
-
//
|
|
82
|
+
// One timer, set on mount, so the deadline never moves.
|
|
95
83
|
useEffect(function () {
|
|
96
84
|
var timer = setTimeout(startRevealing, READY_TIMEOUT_MS);
|
|
97
85
|
return function () {
|
|
@@ -129,10 +117,7 @@ export var GeneratedContentReveal = function GeneratedContentReveal(_ref) {
|
|
|
129
117
|
ref: setWrapperElement
|
|
130
118
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- the block controls and the SSR cleanup find the wrapper by `span.relative`
|
|
131
119
|
,
|
|
132
|
-
className: ax(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "
|
|
133
|
-
onAnimationEnd: onAnimationEnd
|
|
134
|
-
style: {
|
|
135
|
-
"--_1wl3sa9": ix("var(".concat(REVEAL_HEIGHT_VARIABLE, ")"))
|
|
136
|
-
}
|
|
120
|
+
className: ax(["_1tr2ynbm _xajsynbm _1tmrkb7n _bcikkb7n _2z44kb7n _dmn9ysee _1ghxysee _okd3ysee _1er3glyw _d1oeglyw _15k3glyw _1ql7tlke _1nuetlke _decvtlke _1fdfidpf _1pfgidpf _y7o7idpf _mi5m1wug _1si41wug _17sh1wug _x3ro1j9a _1i8c1j9a _1a2e1j9a _26lx1tsb _ks721tsb _jl0d1tsb _1qac1nu9 _54r11nu9 _1vs61nu9 _10pdkb7n _1kr5kb7n _10t9kb7n", showMacroInteractionDesignUpdates && "_kqswh2mm", state !== 'open' && "_1reo15vq _18m915vq _1e0c1ule", state === 'collapsed' && "_4t3iidpf _114yglyw", state === 'revealing' && "", state === 'revealing' && "_tw1z1t97 _j7hq180b _5sag15uc _1pglindk _2hwzru3m", state !== 'collapsed' && "_10i01bym _9sz11bym _147ai9qs _lwlpi9qs _lbjpindk _17w9indk _1p7l15uc _1jbo15uc _pjh31hrf _gp9p1hrf _dxfxru3m _log5ru3m _1pz3ru3m _9hrrru3m", showMacroInteractionDesignUpdates ? 'relative' : undefined]),
|
|
121
|
+
onAnimationEnd: onAnimationEnd
|
|
137
122
|
}, children));
|
|
138
123
|
};
|
|
@@ -12,7 +12,7 @@ export function buildMenuItem(manifest, extensionModule) {
|
|
|
12
12
|
if (!node) {
|
|
13
13
|
throw new Error("Couldn't find any action for ".concat(title, " (").concat(key, ")"));
|
|
14
14
|
}
|
|
15
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, isExperimentEnabled('platform_editor_slash_app_category_analytics') ? {
|
|
15
|
+
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, isExperimentEnabled('platform_editor_slash_app_category_analytics') || isExperimentEnabled('platform_editor_slash_command') ? {
|
|
16
16
|
app: (_ref = (_extensionModule$app = extensionModule.app) !== null && _extensionModule$app !== void 0 ? _extensionModule$app : manifest.app) !== null && _ref !== void 0 ? _ref : {
|
|
17
17
|
key: manifest.key
|
|
18
18
|
}
|
|
@@ -19,7 +19,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
|
|
|
19
19
|
var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
|
|
20
20
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
21
21
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
22
|
-
var packageVersion = "122.
|
|
22
|
+
var packageVersion = "122.11.1";
|
|
23
23
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
24
24
|
// Remove URL as it has UGC
|
|
25
25
|
// Ignored via go/ees007
|
|
@@ -5,7 +5,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
|
|
|
5
5
|
import { isMenuFooterSectionKey } from '../type-ahead/isMenuFooterSectionKey';
|
|
6
6
|
import { isSectionOverflowItemKey } from '../type-ahead/isSectionOverflowItemKey';
|
|
7
7
|
import { getComponentIdentity, resolveSurface, willComponentRender } from '@atlaskit/editor-ui-control-model/surface-renderer';
|
|
8
|
-
export var buildQuickInsertMenuModel = function buildQuickInsertMenuModel(components, rootComponent,
|
|
8
|
+
export var buildQuickInsertMenuModel = function buildQuickInsertMenuModel(components, rootComponent, selectCategoryItems, surfaceContext) {
|
|
9
9
|
var _resolveSurface = resolveSurface(components, rootComponent),
|
|
10
10
|
root = _resolveSurface.root,
|
|
11
11
|
childrenMap = _resolveSurface.childrenMap,
|
|
@@ -49,11 +49,12 @@ export var buildQuickInsertMenuModel = function buildQuickInsertMenuModel(compon
|
|
|
49
49
|
if (items.length === 0) {
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
var selectedItems = viewMoreItem !== undefined && selectCategoryItems !== undefined ? selectCategoryItems(items) : items;
|
|
53
|
+
if (selectedItems.length < items.length && viewMoreItem !== undefined) {
|
|
54
|
+
sections.push([section].concat(_toConsumableArray(selectedItems), [viewMoreItem]));
|
|
55
|
+
} else {
|
|
56
|
+
sections.push([section].concat(_toConsumableArray(selectedItems)));
|
|
55
57
|
}
|
|
56
|
-
sections.push([section].concat(_toConsumableArray(items)));
|
|
57
58
|
}
|
|
58
59
|
} catch (err) {
|
|
59
60
|
_iterator.e(err);
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-provider-';
|
|
2
|
+
var ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX = 'quick-insert-ecosystem';
|
|
3
|
+
export var getQuickInsertProviderMenuItemKey = function getQuickInsertProviderMenuItemKey(key, app) {
|
|
4
|
+
return (app === null || app === void 0 ? void 0 : app.source) === 'ecosystem' ? "".concat(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX, "-").concat(key) : "".concat(QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX).concat(key);
|
|
5
|
+
};
|
|
6
|
+
var isEcosystemQuickInsertProviderMenuItemKey = function isEcosystemQuickInsertProviderMenuItemKey(key) {
|
|
7
|
+
return key.startsWith(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX);
|
|
8
|
+
};
|
|
9
|
+
var normalizeQuickInsertProviderMenuItemKey = function normalizeQuickInsertProviderMenuItemKey(key) {
|
|
10
|
+
return isEcosystemQuickInsertProviderMenuItemKey(key) ? "".concat(QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX).concat(key.slice("".concat(ECOSYSTEM_QUICK_INSERT_PROVIDER_MENU_ITEM_KEY_PREFIX, "-").length)) : key;
|
|
11
|
+
};
|
|
12
|
+
export var quickInsertProviderMenuItemKey = {
|
|
13
|
+
get: getQuickInsertProviderMenuItemKey,
|
|
14
|
+
isEcosystem: isEcosystemQuickInsertProviderMenuItemKey,
|
|
15
|
+
normalize: normalizeQuickInsertProviderMenuItemKey
|
|
3
16
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
2
2
|
export { buildQuickInsertMenuModel } from './build-quick-insert-menu-model';
|
|
3
|
+
export { quickInsertProviderMenuItemKey } from './getQuickInsertProviderMenuItemKey';
|
|
4
|
+
export { selectQuickInsertCategoryItems } from './selectQuickInsertCategoryItems';
|
|
3
5
|
export { getMatchingQuickInsertComponents } from './get-matching-quick-insert-components';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { quickInsertProviderMenuItemKey } from './getQuickInsertProviderMenuItemKey';
|
|
2
|
+
var DEFAULT_ITEM_LIMIT = 30;
|
|
3
|
+
var ECOSYSTEM_ITEM_LIMIT = 10;
|
|
4
|
+
var isEcosystemQuickInsertItem = function isEcosystemQuickInsertItem(item) {
|
|
5
|
+
return quickInsertProviderMenuItemKey.isEcosystem(item.key);
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Keeps the initial native and ecosystem results while ensuring ecosystem registrations
|
|
10
|
+
* remain discoverable beyond the default category item limit.
|
|
11
|
+
*/
|
|
12
|
+
export var selectQuickInsertCategoryItems = function selectQuickInsertCategoryItems(items) {
|
|
13
|
+
var ecosystemItemCount = 0;
|
|
14
|
+
return items.filter(function (item, index) {
|
|
15
|
+
var isEcosystemItem = isEcosystemQuickInsertItem(item);
|
|
16
|
+
if (isEcosystemItem) {
|
|
17
|
+
ecosystemItemCount++;
|
|
18
|
+
}
|
|
19
|
+
return index < DEFAULT_ITEM_LIMIT || isEcosystemItem && ecosystemItemCount <= ECOSYSTEM_ITEM_LIMIT;
|
|
20
|
+
});
|
|
21
|
+
};
|
|
@@ -21,7 +21,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
|
21
21
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
22
22
|
import Layer from '../Layer';
|
|
23
23
|
var packageName = "@atlaskit/editor-common";
|
|
24
|
-
var packageVersion = "122.
|
|
24
|
+
var packageVersion = "122.11.1";
|
|
25
25
|
var halfFocusRing = 1;
|
|
26
26
|
var dropOffset = '0, 8';
|
|
27
27
|
var fadeIn = keyframes({
|
|
@@ -148,6 +148,11 @@ export declare const aiSuggestionsMessages: {
|
|
|
148
148
|
description: string;
|
|
149
149
|
id: string;
|
|
150
150
|
};
|
|
151
|
+
cardSourceAppsTooltip: {
|
|
152
|
+
defaultMessage: string;
|
|
153
|
+
description: string;
|
|
154
|
+
id: string;
|
|
155
|
+
};
|
|
151
156
|
cardSourcesButtonLabel: {
|
|
152
157
|
defaultMessage: string;
|
|
153
158
|
description: string;
|
|
@@ -30,6 +30,7 @@ export type AgentEditChromeData = {
|
|
|
30
30
|
highlightBackgroundColor?: string;
|
|
31
31
|
/** Runtime CSS color value. Consumers should pass an ADS token value. */
|
|
32
32
|
highlightBorderColor?: string;
|
|
33
|
+
highlightTextColor?: string;
|
|
33
34
|
ranges: AgentEditChromeRange[];
|
|
34
35
|
/**
|
|
35
36
|
* Which badge treatment the telepointer renders. Mirrors `TelepointerAgentKind` from
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { SurfaceIdentifier } from '@atlaskit/editor-ui-control-model/surface-renderer/types';
|
|
2
2
|
import type { RegisterComponent, RegisterMenuItem, RegisterMenuSection, SurfaceContext } from '@atlaskit/editor-ui-control-model/types';
|
|
3
|
+
import type { QuickInsertCategoryItemSelectionPolicy } from './selectQuickInsertCategoryItems';
|
|
3
4
|
export type QuickInsertMenuSection = [RegisterMenuSection, ...RegisterMenuItem[]];
|
|
4
5
|
export type QuickInsertMenuModel = {
|
|
5
6
|
footer: RegisterMenuItem | undefined;
|
|
6
7
|
root: RegisterComponent | undefined;
|
|
7
8
|
sections: QuickInsertMenuSection[];
|
|
8
9
|
};
|
|
9
|
-
export declare const buildQuickInsertMenuModel: (components: RegisterComponent[], rootComponent: SurfaceIdentifier,
|
|
10
|
+
export declare const buildQuickInsertMenuModel: (components: RegisterComponent[], rootComponent: SurfaceIdentifier, selectCategoryItems?: QuickInsertCategoryItemSelectionPolicy, surfaceContext?: SurfaceContext) => QuickInsertMenuModel;
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
type AppProvenance = {
|
|
2
|
+
source?: string;
|
|
3
|
+
} | undefined;
|
|
4
|
+
export declare const getQuickInsertProviderMenuItemKey: (key: string, app?: AppProvenance) => string;
|
|
5
|
+
export declare const quickInsertProviderMenuItemKey: {
|
|
6
|
+
get: (key: string, app?: AppProvenance) => string;
|
|
7
|
+
isEcosystem: (key: string) => boolean;
|
|
8
|
+
normalize: (key: string) => string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export { buildQuickInsertMenuModel } from './build-quick-insert-menu-model';
|
|
2
|
+
export { quickInsertProviderMenuItemKey } from './getQuickInsertProviderMenuItemKey';
|
|
3
|
+
export { selectQuickInsertCategoryItems } from './selectQuickInsertCategoryItems';
|
|
2
4
|
export { getMatchingQuickInsertComponents } from './get-matching-quick-insert-components';
|
|
3
5
|
export type { QuickInsertMenuModel, QuickInsertMenuSection } from './build-quick-insert-menu-model';
|
|
6
|
+
export type { QuickInsertCategoryItemSelectionPolicy } from './selectQuickInsertCategoryItems';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RegisterMenuItem } from '@atlaskit/editor-ui-control-model/types';
|
|
2
|
+
export type QuickInsertCategoryItemSelectionPolicy = (items: RegisterMenuItem[]) => RegisterMenuItem[];
|
|
3
|
+
/**
|
|
4
|
+
* Keeps the initial native and ecosystem results while ensuring ecosystem registrations
|
|
5
|
+
* remain discoverable beyond the default category item limit.
|
|
6
|
+
*/
|
|
7
|
+
export declare const selectQuickInsertCategoryItems: QuickInsertCategoryItemSelectionPolicy;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-common",
|
|
3
|
-
"version": "122.
|
|
3
|
+
"version": "122.12.0",
|
|
4
4
|
"description": "A package that contains common classes and components for editor and renderer",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@atlaskit/media-ui": "^30.16.0",
|
|
66
66
|
"@atlaskit/media-viewer": "^54.8.0",
|
|
67
67
|
"@atlaskit/mention": "^29.2.0",
|
|
68
|
-
"@atlaskit/menu": "^
|
|
68
|
+
"@atlaskit/menu": "^11.0.0",
|
|
69
69
|
"@atlaskit/object": "^2.3.0",
|
|
70
70
|
"@atlaskit/onboarding": "^15.4.0",
|
|
71
71
|
"@atlaskit/platform-feature-experiments": "^0.3.0",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@atlaskit/profilecard": "^26.24.0",
|
|
77
77
|
"@atlaskit/prosemirror-history": "^1.2.0",
|
|
78
78
|
"@atlaskit/react-compiler-gating": "^0.2.0",
|
|
79
|
-
"@atlaskit/react-ufo": "^7.
|
|
79
|
+
"@atlaskit/react-ufo": "^7.12.0",
|
|
80
80
|
"@atlaskit/section-message": "^10.2.0",
|
|
81
81
|
"@atlaskit/smart-card": "^45.24.0",
|
|
82
82
|
"@atlaskit/smart-user-picker": "^11.8.0",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"@atlaskit/task-decision": "^21.10.0",
|
|
85
85
|
"@atlaskit/teams-app-config": "^3.1.0",
|
|
86
86
|
"@atlaskit/textfield": "^10.2.0",
|
|
87
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
88
|
-
"@atlaskit/tokens": "^
|
|
87
|
+
"@atlaskit/tmp-editor-statsig": "^199.0.0",
|
|
88
|
+
"@atlaskit/tokens": "^18.1.0",
|
|
89
89
|
"@atlaskit/tooltip": "^24.3.0",
|
|
90
90
|
"@atlaskit/width-detector": "^7.2.0",
|
|
91
91
|
"@babel/runtime": "^7.0.0",
|