@burdenoff/fe-libs 2026.1004.4 → 2026.1004.6
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/dist/chrome/ContextSwitcher.d.ts.map +1 -1
- package/dist/chrome/ContextSwitcher.js +73 -50
- package/dist/chrome/GlobalSearch.d.ts.map +1 -1
- package/dist/chrome/GlobalSearch.js +76 -72
- package/dist/chrome/LanguageSwitcher.d.ts.map +1 -1
- package/dist/chrome/LanguageSwitcher.js +61 -40
- package/dist/chrome/NotificationCenter.d.ts.map +1 -1
- package/dist/chrome/NotificationCenter.js +71 -68
- package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
- package/dist/chrome/ProfileSwitcher.js +87 -81
- package/dist/chrome/SideNavigation.d.ts.map +1 -1
- package/dist/chrome/SideNavigation.js +120 -76
- package/dist/shared/assistant/appControls/copy.d.ts +12 -0
- package/dist/shared/assistant/appControls/copy.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/copy.js +98 -0
- package/dist/shared/assistant/appControls/grammar.d.ts +102 -0
- package/dist/shared/assistant/appControls/grammar.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/grammar.js +236 -0
- package/dist/shared/assistant/appControls/languages.d.ts +6 -0
- package/dist/shared/assistant/appControls/languages.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/languages.js +52 -0
- package/dist/shared/assistant/appControls/names.d.ts +22 -0
- package/dist/shared/assistant/appControls/names.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/names.js +29 -0
- package/dist/shared/assistant/appControls/pageAdapters.d.ts +59 -0
- package/dist/shared/assistant/appControls/pageAdapters.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/pageAdapters.js +87 -0
- package/dist/shared/assistant/appControls/plan.d.ts +148 -0
- package/dist/shared/assistant/appControls/plan.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/plan.js +511 -0
- package/dist/shared/assistant/appControls/registry.d.ts +9 -0
- package/dist/shared/assistant/appControls/registry.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/registry.js +38 -0
- package/dist/shared/assistant/appControls/snapshot.d.ts +42 -0
- package/dist/shared/assistant/appControls/snapshot.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/snapshot.js +40 -0
- package/dist/shared/assistant/appControls/text.d.ts +7 -0
- package/dist/shared/assistant/appControls/text.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/text.js +6 -0
- package/dist/shared/assistant/appControls/types.d.ts +183 -0
- package/dist/shared/assistant/appControls/types.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/types.js +25 -0
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts +24 -0
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/useAssistantControl.js +13 -0
- package/dist/shared/assistant/conversation.d.ts +12 -1
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +130 -114
- package/dist/shared/assistant/i18nManifest.d.ts +74 -0
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +86 -12
- package/dist/shared/assistant/index.d.ts +16 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +7 -0
- package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.js +1 -1
- package/dist/shared/assistant/localUiCommands.d.ts +16 -0
- package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommands.js +92 -84
- package/dist/shared/assistant/store.d.ts +10 -0
- package/dist/shared/assistant/store.d.ts.map +1 -1
- package/dist/shared/assistant/store.js +52 -44
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +57 -49
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1085 -1016
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts +38 -0
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.js +65 -0
- package/dist/shared/assistant/ui/AssistantMoreMenu.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMoreMenu.js +58 -56
- package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantSpeechProvider.js +106 -105
- package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.d.ts +20 -0
- package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.d.ts.map +1 -0
- package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.js +39 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.d.ts +30 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.js +46 -0
- package/dist/shared/assistant/ui/useVoiceSession.d.ts +35 -2
- package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useVoiceSession.js +232 -171
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +15 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +173 -150
- package/dist/shared/assistant/voice/handsFree.d.ts +160 -0
- package/dist/shared/assistant/voice/handsFree.d.ts.map +1 -0
- package/dist/shared/assistant/voice/handsFree.js +104 -0
- package/dist/shared/assistant/voice/supersededTurns.d.ts +29 -0
- package/dist/shared/assistant/voice/supersededTurns.d.ts.map +1 -0
- package/dist/shared/assistant/voice/supersededTurns.js +17 -0
- package/dist/shared/assistant/voice/useVoiceInput.d.ts +7 -0
- package/dist/shared/assistant/voice/useVoiceInput.d.ts.map +1 -1
- package/dist/shared/assistant/voice/useVoiceInput.js +13 -10
- package/dist/shared/assistant/voice/voiceSession.d.ts +64 -20
- package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.js +120 -67
- package/dist/shared/components/KeyboardHelpDialogWrapper.d.ts.map +1 -1
- package/dist/shared/components/KeyboardHelpDialogWrapper.js +11 -9
- package/dist/shared/providers/shell/GlobalUiProvider.d.ts +2 -0
- package/dist/shared/providers/shell/GlobalUiProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/GlobalUiProvider.js +4 -1
- package/dist/shared-assistant.js +219 -203
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextSwitcher.d.ts","sourceRoot":"","sources":["../../src/chrome/ContextSwitcher.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAQ3C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAW,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ContextSwitcher.d.ts","sourceRoot":"","sources":["../../src/chrome/ContextSwitcher.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAQ3C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAW,MAAM,yBAAyB,CAAC;AAKzF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAyPpD,CAAC"}
|
|
@@ -1,31 +1,54 @@
|
|
|
1
1
|
import { Sheet as e, SheetContent as t, SheetHeader as n, SheetTitle as r } from "../ui/sheet.js";
|
|
2
|
-
import {
|
|
2
|
+
import { useAssistantControl as i } from "../shared/assistant/appControls/useAssistantControl.js";
|
|
3
|
+
import { useShellLabel as ee } from "../shared/providers/shell/useShellLabel.js";
|
|
3
4
|
import { useIsMobile as a } from "./contextSwitcher/useIsMobile.js";
|
|
4
5
|
import { TabButton as o } from "./contextSwitcher/TabButton.js";
|
|
5
6
|
import { OrganizationList as s } from "./contextSwitcher/OrganizationList.js";
|
|
6
7
|
import { WorkspaceList as c } from "./contextSwitcher/WorkspaceList.js";
|
|
7
8
|
import { ProjectList as l } from "./contextSwitcher/ProjectList.js";
|
|
8
9
|
import { TriggerButton as u } from "./contextSwitcher/TriggerButton.js";
|
|
9
|
-
import { useCallback as d, useEffect as f,
|
|
10
|
-
import { Fragment as
|
|
10
|
+
import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
|
|
11
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
12
|
//#region src/chrome/ContextSwitcher.tsx
|
|
12
|
-
var
|
|
13
|
-
let O =
|
|
13
|
+
var y = ({ organizations: y, workspaces: b, projects: x, currentOrganizationId: S, currentWorkspaceId: C, currentProjectId: w, onOrganizationChange: T, onWorkspaceChange: E, onProjectChange: D, compact: te = !1 }) => {
|
|
14
|
+
let O = ee(), [k, A] = h(!1), [j, M] = h(() => S ? "workspace" : "org"), [N, P] = h({
|
|
14
15
|
org: "",
|
|
15
16
|
workspace: "",
|
|
16
17
|
project: ""
|
|
17
|
-
}), F = a(), I =
|
|
18
|
-
R.current =
|
|
19
|
-
let z =
|
|
18
|
+
}), F = a(), I = m(null), L = m(null), R = m(S);
|
|
19
|
+
R.current = S;
|
|
20
|
+
let z = y.find((e) => e.id === S), B = b.find((e) => e.id === C), V = x.find((e) => e.id === w), H = b.filter((e) => e.organizationId === S), U = x.filter((e) => e.workspaceId === C), W = d((e, t) => {
|
|
20
21
|
if (!t.trim()) return e;
|
|
21
22
|
let n = t.toLowerCase().trim();
|
|
22
23
|
return e.filter((e) => e.name.toLowerCase().includes(n));
|
|
23
|
-
}, []), G =
|
|
24
|
+
}, []), G = m({
|
|
25
|
+
filteredWorkspaces: H,
|
|
26
|
+
currentWorkspaceId: C,
|
|
27
|
+
onWorkspaceChange: E
|
|
28
|
+
});
|
|
29
|
+
G.current = {
|
|
30
|
+
filteredWorkspaces: H,
|
|
31
|
+
currentWorkspaceId: C,
|
|
32
|
+
onWorkspaceChange: E
|
|
33
|
+
}, i("header.context", p(() => ({ run: () => k ? { status: "already" } : (A(!0), { status: "done" }) }), [k]));
|
|
34
|
+
let K = E !== void 0;
|
|
35
|
+
i("header.workspace", p(() => K ? {
|
|
36
|
+
targets: () => G.current.filteredWorkspaces.map((e) => ({
|
|
37
|
+
id: e.id,
|
|
38
|
+
label: e.name,
|
|
39
|
+
current: e.id === G.current.currentWorkspaceId
|
|
40
|
+
})),
|
|
41
|
+
switchTo: (e) => {
|
|
42
|
+
let { filteredWorkspaces: t, currentWorkspaceId: n, onWorkspaceChange: r } = G.current, i = t.find((t) => t.id === e);
|
|
43
|
+
return !i || !r ? { status: "failed" } : i.id === n ? { status: "already" } : (r(i), { status: "done" });
|
|
44
|
+
}
|
|
45
|
+
} : null, [K]));
|
|
46
|
+
let q = W(y, N.org), J = W(H, N.workspace), Y = W(U, N.project), X = d((e, t) => {
|
|
24
47
|
P((n) => ({
|
|
25
48
|
...n,
|
|
26
49
|
[e]: t
|
|
27
50
|
}));
|
|
28
|
-
}, []),
|
|
51
|
+
}, []), Z = d((e) => {
|
|
29
52
|
M(e), P({
|
|
30
53
|
org: "",
|
|
31
54
|
workspace: "",
|
|
@@ -54,98 +77,98 @@ var v = ({ organizations: v, workspaces: y, projects: b, currentOrganizationId:
|
|
|
54
77
|
project: ""
|
|
55
78
|
});
|
|
56
79
|
}, [k]);
|
|
57
|
-
let
|
|
58
|
-
w && w(e);
|
|
59
|
-
}, Z = (e) => {
|
|
80
|
+
let ne = (e) => {
|
|
60
81
|
T && T(e);
|
|
61
|
-
},
|
|
62
|
-
E && E(e)
|
|
63
|
-
},
|
|
82
|
+
}, re = (e) => {
|
|
83
|
+
E && E(e);
|
|
84
|
+
}, ie = (e) => {
|
|
85
|
+
D && D(e), A(!1);
|
|
86
|
+
}, Q = () => /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ v("div", {
|
|
64
87
|
className: "flex items-stretch border-b border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)]",
|
|
65
88
|
children: [
|
|
66
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ _(o, {
|
|
67
90
|
label: O("contextSwitcher.organization", "Organization"),
|
|
68
91
|
isActive: j === "org",
|
|
69
|
-
onClick: () =>
|
|
92
|
+
onClick: () => Z("org")
|
|
70
93
|
}),
|
|
71
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ _(o, {
|
|
72
95
|
label: O("contextSwitcher.workspace", "Workspace"),
|
|
73
96
|
isActive: j === "workspace",
|
|
74
|
-
onClick: () =>
|
|
97
|
+
onClick: () => Z("workspace")
|
|
75
98
|
}),
|
|
76
|
-
/* @__PURE__ */
|
|
99
|
+
/* @__PURE__ */ _(o, {
|
|
77
100
|
label: O("contextSwitcher.project", "Project"),
|
|
78
101
|
isActive: j === "project",
|
|
79
|
-
onClick: () =>
|
|
102
|
+
onClick: () => Z("project")
|
|
80
103
|
})
|
|
81
104
|
]
|
|
82
|
-
}), /* @__PURE__ */
|
|
105
|
+
}), /* @__PURE__ */ v("div", {
|
|
83
106
|
className: "flex-1 overflow-hidden",
|
|
84
107
|
children: [
|
|
85
|
-
j === "org" && /* @__PURE__ */
|
|
86
|
-
organizations:
|
|
87
|
-
searchedOrganizations:
|
|
88
|
-
currentOrganizationId:
|
|
108
|
+
j === "org" && /* @__PURE__ */ _(s, {
|
|
109
|
+
organizations: y,
|
|
110
|
+
searchedOrganizations: q,
|
|
111
|
+
currentOrganizationId: S,
|
|
89
112
|
searchQuery: N.org,
|
|
90
|
-
onSearchChange: (e) =>
|
|
91
|
-
onSelect:
|
|
113
|
+
onSearchChange: (e) => X("org", e),
|
|
114
|
+
onSelect: ne,
|
|
92
115
|
searchInputRef: L
|
|
93
116
|
}),
|
|
94
|
-
j === "workspace" && /* @__PURE__ */
|
|
117
|
+
j === "workspace" && /* @__PURE__ */ _(c, {
|
|
95
118
|
filteredWorkspaces: H,
|
|
96
|
-
searchedWorkspaces:
|
|
97
|
-
currentWorkspaceId:
|
|
119
|
+
searchedWorkspaces: J,
|
|
120
|
+
currentWorkspaceId: C,
|
|
98
121
|
searchQuery: N.workspace,
|
|
99
|
-
onSearchChange: (e) =>
|
|
100
|
-
onSelect:
|
|
122
|
+
onSearchChange: (e) => X("workspace", e),
|
|
123
|
+
onSelect: re,
|
|
101
124
|
searchInputRef: L
|
|
102
125
|
}),
|
|
103
|
-
j === "project" && /* @__PURE__ */
|
|
126
|
+
j === "project" && /* @__PURE__ */ _(l, {
|
|
104
127
|
filteredProjects: U,
|
|
105
|
-
searchedProjects:
|
|
106
|
-
currentProjectId:
|
|
128
|
+
searchedProjects: Y,
|
|
129
|
+
currentProjectId: w,
|
|
107
130
|
searchQuery: N.project,
|
|
108
|
-
onSearchChange: (e) =>
|
|
109
|
-
onSelect:
|
|
131
|
+
onSearchChange: (e) => X("project", e),
|
|
132
|
+
onSelect: ie,
|
|
110
133
|
searchInputRef: L
|
|
111
134
|
})
|
|
112
135
|
]
|
|
113
|
-
})] }), $ = /* @__PURE__ */
|
|
136
|
+
})] }), $ = /* @__PURE__ */ _(u, {
|
|
114
137
|
isOpen: k,
|
|
115
|
-
compact:
|
|
138
|
+
compact: te,
|
|
116
139
|
currentOrg: z,
|
|
117
140
|
currentWorkspace: B,
|
|
118
141
|
currentProject: V,
|
|
119
142
|
onToggle: () => A(!k)
|
|
120
143
|
});
|
|
121
|
-
return F ? /* @__PURE__ */
|
|
144
|
+
return F ? /* @__PURE__ */ v("div", {
|
|
122
145
|
className: "relative",
|
|
123
|
-
children: [$, /* @__PURE__ */
|
|
146
|
+
children: [$, /* @__PURE__ */ _(e, {
|
|
124
147
|
open: k,
|
|
125
148
|
onOpenChange: A,
|
|
126
|
-
children: /* @__PURE__ */
|
|
149
|
+
children: /* @__PURE__ */ v(t, {
|
|
127
150
|
side: "bottom",
|
|
128
151
|
className: "h-[70vh] flex flex-col p-0",
|
|
129
|
-
children: [/* @__PURE__ */
|
|
152
|
+
children: [/* @__PURE__ */ _(n, {
|
|
130
153
|
className: "px-4 pt-4 pb-2 border-b border-[var(--color-border-subtle)]",
|
|
131
|
-
children: /* @__PURE__ */
|
|
154
|
+
children: /* @__PURE__ */ _(r, {
|
|
132
155
|
className: "text-[var(--color-text-primary)]",
|
|
133
156
|
children: O("contextSwitcher.title", "Switch Context")
|
|
134
157
|
})
|
|
135
|
-
}), /* @__PURE__ */
|
|
158
|
+
}), /* @__PURE__ */ _("div", {
|
|
136
159
|
className: "flex-1 flex flex-col overflow-hidden",
|
|
137
160
|
children: Q()
|
|
138
161
|
})]
|
|
139
162
|
})
|
|
140
163
|
})]
|
|
141
|
-
}) : /* @__PURE__ */
|
|
164
|
+
}) : /* @__PURE__ */ v("div", {
|
|
142
165
|
className: "relative",
|
|
143
166
|
ref: I,
|
|
144
|
-
children: [$, k && /* @__PURE__ */
|
|
167
|
+
children: [$, k && /* @__PURE__ */ _("div", {
|
|
145
168
|
className: "absolute right-0 mt-2 w-[calc(100vw-2rem)] sm:w-[26rem] bg-[var(--color-bg-elevated)] border border-[var(--color-border-subtle)] rounded-card shadow-[var(--shadow-elevation-4)] z-50 flex flex-col max-h-[400px] overflow-hidden animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-200",
|
|
146
169
|
children: Q()
|
|
147
170
|
})]
|
|
148
171
|
});
|
|
149
172
|
};
|
|
150
173
|
//#endregion
|
|
151
|
-
export {
|
|
174
|
+
export { y as ContextSwitcher };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalSearch.d.ts","sourceRoot":"","sources":["../../src/chrome/GlobalSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalSearch.d.ts","sourceRoot":"","sources":["../../src/chrome/GlobalSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlF,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAU3E,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,wCAAwC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IACtC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChG,wBAAwB;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,UAAe,EACf,WAAoC,EACpC,cAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,GACV,EAAE,iBAAiB,GAAG,SAAS,CA2L/B"}
|
|
@@ -1,108 +1,112 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useGlobalUiOrNull as e } from "../shared/providers/shell/GlobalUiProvider.js";
|
|
2
|
+
import { useAssistantControl as t } from "../shared/assistant/appControls/useAssistantControl.js";
|
|
3
|
+
import { cn as n } from "../utils/cn.js";
|
|
2
4
|
import "../utils/index.js";
|
|
3
|
-
import { debounce as
|
|
4
|
-
import { SearchInput as
|
|
5
|
-
import { CategoryTabs as
|
|
6
|
-
import { SearchModeBar as
|
|
7
|
-
import { AdvancedFiltersPanel as
|
|
8
|
-
import { ResultsList as
|
|
9
|
-
import { useAdvancedFilters as
|
|
10
|
-
import { useCallback as
|
|
11
|
-
import { ExternalLink as
|
|
12
|
-
import { jsx as
|
|
5
|
+
import { debounce as r, isSearchResults as i } from "./globalSearch/utils.js";
|
|
6
|
+
import { SearchInput as a } from "./globalSearch/SearchInput.js";
|
|
7
|
+
import { CategoryTabs as o } from "./globalSearch/CategoryTabs.js";
|
|
8
|
+
import { SearchModeBar as s } from "./globalSearch/SearchModeBar.js";
|
|
9
|
+
import { AdvancedFiltersPanel as c } from "./globalSearch/AdvancedFiltersPanel.js";
|
|
10
|
+
import { ResultsList as l } from "./globalSearch/ResultsList.js";
|
|
11
|
+
import { useAdvancedFilters as u } from "./globalSearch/useAdvancedFilters.js";
|
|
12
|
+
import { useCallback as d, useEffect as f, useMemo as p, useState as m } from "react";
|
|
13
|
+
import { ExternalLink as h } from "lucide-react";
|
|
14
|
+
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
13
15
|
//#region src/chrome/GlobalSearch.tsx
|
|
14
|
-
function
|
|
15
|
-
let [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}, [
|
|
19
|
-
|
|
16
|
+
function v({ open: v, onClose: y, categories: b = [], placeholder: x = "Search everything...", recentSearches: S = [], onSearch: C, onSelect: w, onViewAllResults: T, className: E }) {
|
|
17
|
+
let [D, O] = m(""), [k, A] = m(void 0), [j, M] = m([]), [N, P] = m(!1), [F, I] = m(null), [L, R] = m(!1), z = u(), { buildFilters: B, reset: V, searchMode: H, setSearchMode: U } = z, W = e()?.openGlobalSearch, [G, K] = m(null);
|
|
18
|
+
t("header.search", p(() => W ? { run: ({ query: e }) => (K(e === null ? null : { query: e }), W(), { status: "done" }) } : null, [W])), f(() => {
|
|
19
|
+
!v || !G || (O(G.query), K(null));
|
|
20
|
+
}, [v, G]), f(() => {
|
|
21
|
+
v || (O(""), A(void 0), M([]), I(null), R(!1), V());
|
|
22
|
+
}, [v, V]), f(() => {
|
|
23
|
+
if (!v) return;
|
|
20
24
|
let e = (e) => {
|
|
21
|
-
e.key === "Escape" && (e.preventDefault(),
|
|
25
|
+
e.key === "Escape" && (e.preventDefault(), y());
|
|
22
26
|
};
|
|
23
27
|
return document.addEventListener("keydown", e), () => {
|
|
24
28
|
document.removeEventListener("keydown", e);
|
|
25
29
|
};
|
|
26
|
-
}, [
|
|
27
|
-
let
|
|
30
|
+
}, [v, y]);
|
|
31
|
+
let q = p(() => r(async (e, t, n) => {
|
|
28
32
|
if (!e.trim()) {
|
|
29
|
-
|
|
33
|
+
M([]), I(null);
|
|
30
34
|
return;
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
P(!0), I(null);
|
|
33
37
|
try {
|
|
34
|
-
let
|
|
35
|
-
if (!
|
|
36
|
-
|
|
38
|
+
let r = await C(e, t, n);
|
|
39
|
+
if (!i(r)) throw TypeError("Invalid search results format");
|
|
40
|
+
M(r);
|
|
37
41
|
} catch (e) {
|
|
38
|
-
|
|
42
|
+
I(e instanceof Error ? e.message : "Search failed"), M([]), console.error("Search error:", e);
|
|
39
43
|
} finally {
|
|
40
|
-
|
|
44
|
+
P(!1);
|
|
41
45
|
}
|
|
42
|
-
}, 300), [
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
}, 300), [C]);
|
|
47
|
+
f(() => {
|
|
48
|
+
q(D, k, B());
|
|
45
49
|
}, [
|
|
46
|
-
T,
|
|
47
50
|
D,
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
k,
|
|
52
|
+
q,
|
|
53
|
+
B
|
|
50
54
|
]);
|
|
51
|
-
let
|
|
55
|
+
let J = p(() => j.reduce((e, t) => {
|
|
52
56
|
let n = t.category;
|
|
53
57
|
return e[n] || (e[n] = []), e[n].push(t), e;
|
|
54
|
-
}, {}), [
|
|
55
|
-
|
|
56
|
-
}, [
|
|
57
|
-
return
|
|
58
|
-
className:
|
|
59
|
-
onClick:
|
|
60
|
-
"data-state":
|
|
58
|
+
}, {}), [j]), Y = d((e) => {
|
|
59
|
+
w(e), y();
|
|
60
|
+
}, [w, y]);
|
|
61
|
+
return v ? /* @__PURE__ */ g("div", {
|
|
62
|
+
className: n("fixed inset-0 z-[9999] flex items-center justify-center bg-bg-overlay backdrop-blur-md", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", E),
|
|
63
|
+
onClick: y,
|
|
64
|
+
"data-state": v ? "open" : "closed",
|
|
61
65
|
role: "dialog",
|
|
62
66
|
"aria-modal": "true",
|
|
63
|
-
children: /* @__PURE__ */
|
|
67
|
+
children: /* @__PURE__ */ g("div", {
|
|
64
68
|
className: "w-full max-w-lg mx-4 max-h-[85dvh] overflow-hidden",
|
|
65
69
|
onClick: (e) => e.stopPropagation(),
|
|
66
|
-
children: /* @__PURE__ */
|
|
70
|
+
children: /* @__PURE__ */ _("div", {
|
|
67
71
|
className: "overflow-hidden rounded-2xl border border-border-subtle bg-bg-elevated shadow-[var(--shadow-elevation-5)]",
|
|
68
72
|
children: [
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
value:
|
|
71
|
-
placeholder:
|
|
72
|
-
onChange:
|
|
73
|
-
onClear: () =>
|
|
73
|
+
/* @__PURE__ */ g(a, {
|
|
74
|
+
value: D,
|
|
75
|
+
placeholder: x,
|
|
76
|
+
onChange: O,
|
|
77
|
+
onClear: () => O("")
|
|
74
78
|
}),
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
categories:
|
|
77
|
-
selectedCategory:
|
|
78
|
-
onSelect:
|
|
79
|
+
/* @__PURE__ */ g(o, {
|
|
80
|
+
categories: b,
|
|
81
|
+
selectedCategory: k,
|
|
82
|
+
onSelect: A
|
|
79
83
|
}),
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
searchMode:
|
|
82
|
-
onSearchModeChange:
|
|
83
|
-
showAdvanced:
|
|
84
|
-
onToggleAdvanced: () =>
|
|
84
|
+
/* @__PURE__ */ g(s, {
|
|
85
|
+
searchMode: H,
|
|
86
|
+
onSearchModeChange: U,
|
|
87
|
+
showAdvanced: L,
|
|
88
|
+
onToggleAdvanced: () => R((e) => !e)
|
|
85
89
|
}),
|
|
86
|
-
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
loading:
|
|
89
|
-
error:
|
|
90
|
-
query:
|
|
91
|
-
results:
|
|
92
|
-
groupedResults:
|
|
93
|
-
recentSearches:
|
|
94
|
-
onRecentSelect:
|
|
95
|
-
onResultSelect:
|
|
90
|
+
L && /* @__PURE__ */ g(c, { filters: z }),
|
|
91
|
+
/* @__PURE__ */ g(l, {
|
|
92
|
+
loading: N,
|
|
93
|
+
error: F,
|
|
94
|
+
query: D,
|
|
95
|
+
results: j,
|
|
96
|
+
groupedResults: J,
|
|
97
|
+
recentSearches: S,
|
|
98
|
+
onRecentSelect: O,
|
|
99
|
+
onResultSelect: Y
|
|
96
100
|
}),
|
|
97
|
-
|
|
101
|
+
D && j.length > 0 && T && /* @__PURE__ */ g("div", {
|
|
98
102
|
className: "border-t border-border-subtle p-2",
|
|
99
|
-
children: /* @__PURE__ */
|
|
103
|
+
children: /* @__PURE__ */ _("button", {
|
|
100
104
|
type: "button",
|
|
101
105
|
onClick: () => {
|
|
102
|
-
|
|
106
|
+
T(D, B(), k), y();
|
|
103
107
|
},
|
|
104
108
|
className: "w-full flex items-center justify-center gap-2 py-2 text-sm font-medium text-text-link hover:bg-bg-sunken rounded-button transition-colors",
|
|
105
|
-
children: [/* @__PURE__ */
|
|
109
|
+
children: [/* @__PURE__ */ g(h, { className: "size-4" }), "View all results"]
|
|
106
110
|
})
|
|
107
111
|
})
|
|
108
112
|
]
|
|
@@ -111,4 +115,4 @@ function g({ open: g, onClose: _, categories: v = [], placeholder: y = "Search e
|
|
|
111
115
|
}) : null;
|
|
112
116
|
}
|
|
113
117
|
//#endregion
|
|
114
|
-
export {
|
|
118
|
+
export { v as GlobalSearch };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../src/chrome/LanguageSwitcher.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../src/chrome/LanguageSwitcher.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA0KtD,CAAC"}
|
|
@@ -1,85 +1,106 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useAssistantControl as e } from "../shared/assistant/appControls/useAssistantControl.js";
|
|
2
|
+
import { useShellLabel as t } from "../shared/providers/shell/useShellLabel.js";
|
|
3
|
+
import { useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
4
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
4
5
|
//#region src/chrome/LanguageSwitcher.tsx
|
|
5
|
-
var
|
|
6
|
-
let
|
|
7
|
-
|
|
6
|
+
var l = ({ languages: l, currentLanguage: u, onLanguageChange: d, compact: f = !1 }) => {
|
|
7
|
+
let p = t(), [m, h] = a(!1), g = i(null), _ = l.find((e) => e.code === u) || l[0], v = i({
|
|
8
|
+
languages: l,
|
|
9
|
+
currentLanguage: u,
|
|
10
|
+
onLanguageChange: d
|
|
11
|
+
});
|
|
12
|
+
v.current = {
|
|
13
|
+
languages: l,
|
|
14
|
+
currentLanguage: u,
|
|
15
|
+
onLanguageChange: d
|
|
16
|
+
};
|
|
17
|
+
let y = d !== void 0;
|
|
18
|
+
e("language", r(() => y ? {
|
|
19
|
+
languages: () => v.current.languages.map((e) => ({
|
|
20
|
+
code: e.code,
|
|
21
|
+
label: e.nativeName || e.name
|
|
22
|
+
})),
|
|
23
|
+
current: () => v.current.currentLanguage,
|
|
24
|
+
set: (e) => {
|
|
25
|
+
let { languages: t, currentLanguage: n, onLanguageChange: r } = v.current, i = t.find((t) => t.code.toLowerCase() === e.toLowerCase());
|
|
26
|
+
return !i || !r ? { status: "failed" } : i.code === n ? { status: "already" } : (r(i), { status: "done" });
|
|
27
|
+
}
|
|
28
|
+
} : null, [y])), n(() => {
|
|
8
29
|
let e = (e) => {
|
|
9
|
-
|
|
30
|
+
g.current && !g.current.contains(e.target) && h(!1);
|
|
10
31
|
};
|
|
11
|
-
if (
|
|
12
|
-
}, [
|
|
13
|
-
let
|
|
14
|
-
|
|
32
|
+
if (m) return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
33
|
+
}, [m]);
|
|
34
|
+
let b = (e) => {
|
|
35
|
+
d && d(e), h(!1);
|
|
15
36
|
};
|
|
16
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ c("div", {
|
|
17
38
|
className: "relative",
|
|
18
|
-
ref:
|
|
19
|
-
children: [/* @__PURE__ */
|
|
20
|
-
onClick: () =>
|
|
21
|
-
className: `flex items-center gap-2 px-3 py-2 rounded-button hover:bg-bg-sunken transition-colors ${
|
|
22
|
-
"aria-label":
|
|
23
|
-
"aria-expanded":
|
|
24
|
-
children:
|
|
39
|
+
ref: g,
|
|
40
|
+
children: [/* @__PURE__ */ s("button", {
|
|
41
|
+
onClick: () => h(!m),
|
|
42
|
+
className: `flex items-center gap-2 px-3 py-2 rounded-button hover:bg-bg-sunken transition-colors ${m ? "bg-bg-sunken" : ""}`,
|
|
43
|
+
"aria-label": p("languageSwitcher.change", "Change language"),
|
|
44
|
+
"aria-expanded": m,
|
|
45
|
+
children: f ? /* @__PURE__ */ s("svg", {
|
|
25
46
|
className: "size-5 text-text-primary",
|
|
26
47
|
fill: "none",
|
|
27
48
|
stroke: "currentColor",
|
|
28
49
|
viewBox: "0 0 24 24",
|
|
29
|
-
children: /* @__PURE__ */
|
|
50
|
+
children: /* @__PURE__ */ s("path", {
|
|
30
51
|
strokeLinecap: "round",
|
|
31
52
|
strokeLinejoin: "round",
|
|
32
53
|
strokeWidth: 2,
|
|
33
54
|
d: "M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"
|
|
34
55
|
})
|
|
35
|
-
}) : /* @__PURE__ */ o
|
|
56
|
+
}) : /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("span", {
|
|
36
57
|
className: "text-body-sm font-medium text-text-primary uppercase",
|
|
37
|
-
children:
|
|
38
|
-
}), /* @__PURE__ */
|
|
39
|
-
className: `w-4 h-4 text-text-secondary transition-transform ${
|
|
58
|
+
children: _?.code
|
|
59
|
+
}), /* @__PURE__ */ s("svg", {
|
|
60
|
+
className: `w-4 h-4 text-text-secondary transition-transform ${m ? "rotate-180" : ""}`,
|
|
40
61
|
fill: "none",
|
|
41
62
|
stroke: "currentColor",
|
|
42
63
|
viewBox: "0 0 24 24",
|
|
43
|
-
children: /* @__PURE__ */
|
|
64
|
+
children: /* @__PURE__ */ s("path", {
|
|
44
65
|
strokeLinecap: "round",
|
|
45
66
|
strokeLinejoin: "round",
|
|
46
67
|
strokeWidth: 2,
|
|
47
68
|
d: "M19 9l-7 7-7-7"
|
|
48
69
|
})
|
|
49
70
|
})] })
|
|
50
|
-
}),
|
|
71
|
+
}), m && /* @__PURE__ */ c("div", {
|
|
51
72
|
className: "absolute right-0 mt-2 w-[calc(100vw-1.5rem)] sm:w-64 max-w-64 bg-bg-elevated border border-border-subtle rounded-card shadow-[var(--shadow-elevation-4)] z-50 py-2 overflow-hidden animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-200",
|
|
52
|
-
children: [/* @__PURE__ */
|
|
73
|
+
children: [/* @__PURE__ */ s("div", {
|
|
53
74
|
className: "px-4 py-2 border-b border-border-subtle",
|
|
54
|
-
children: /* @__PURE__ */
|
|
75
|
+
children: /* @__PURE__ */ s("p", {
|
|
55
76
|
className: "text-[11px] font-medium text-text-muted uppercase tracking-wider",
|
|
56
|
-
children:
|
|
77
|
+
children: p("languageSwitcher.title", "Select Language")
|
|
57
78
|
})
|
|
58
|
-
}), /* @__PURE__ */
|
|
79
|
+
}), /* @__PURE__ */ s("div", {
|
|
59
80
|
className: "py-1 max-h-96 overflow-y-auto",
|
|
60
|
-
children:
|
|
61
|
-
onClick: () =>
|
|
62
|
-
className: `w-full flex items-center gap-3 px-4 py-2.5 text-body-sm transition-colors ${e.code ===
|
|
81
|
+
children: l.map((e) => /* @__PURE__ */ c("button", {
|
|
82
|
+
onClick: () => b(e),
|
|
83
|
+
className: `w-full flex items-center gap-3 px-4 py-2.5 text-body-sm transition-colors ${e.code === u ? "bg-[var(--color-accent-soft)] text-text-primary font-medium" : "text-text-primary hover:bg-bg-sunken"}`,
|
|
63
84
|
children: [
|
|
64
|
-
e.flag && /* @__PURE__ */
|
|
85
|
+
e.flag && /* @__PURE__ */ s("span", {
|
|
65
86
|
className: "text-xl flex-shrink-0",
|
|
66
87
|
children: e.flag
|
|
67
88
|
}),
|
|
68
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ c("div", {
|
|
69
90
|
className: "flex-1 text-left min-w-0",
|
|
70
|
-
children: [/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ s("p", {
|
|
71
92
|
className: "font-medium truncate",
|
|
72
93
|
children: e.nativeName
|
|
73
|
-
}), /* @__PURE__ */
|
|
94
|
+
}), /* @__PURE__ */ s("p", {
|
|
74
95
|
className: "text-xs text-text-secondary truncate",
|
|
75
96
|
children: e.name
|
|
76
97
|
})]
|
|
77
98
|
}),
|
|
78
|
-
e.code ===
|
|
99
|
+
e.code === u && /* @__PURE__ */ s("svg", {
|
|
79
100
|
className: "size-5 text-action-primary-bg flex-shrink-0",
|
|
80
101
|
fill: "currentColor",
|
|
81
102
|
viewBox: "0 0 20 20",
|
|
82
|
-
children: /* @__PURE__ */
|
|
103
|
+
children: /* @__PURE__ */ s("path", {
|
|
83
104
|
fillRule: "evenodd",
|
|
84
105
|
d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
|
|
85
106
|
clipRule: "evenodd"
|
|
@@ -92,4 +113,4 @@ var s = ({ languages: s, currentLanguage: c, onLanguageChange: l, compact: u = !
|
|
|
92
113
|
});
|
|
93
114
|
};
|
|
94
115
|
//#endregion
|
|
95
|
-
export {
|
|
116
|
+
export { l as LanguageSwitcher };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationCenter.d.ts","sourceRoot":"","sources":["../../src/chrome/NotificationCenter.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"NotificationCenter.d.ts","sourceRoot":"","sources":["../../src/chrome/NotificationCenter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmBnD,MAAM,WAAW,uBAAuB;IACtC,2CAA2C;IAC3C,MAAM,EAAE,YAAY,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAmH1D,CAAC"}
|