@feedmepos/mf-report 5.31.2-beta.0 → 5.31.3-beta.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/dist/{App-BS7p-1_C.js → App-j08Hk0tX.js} +4 -4
- package/dist/{DateRangeSelect-CU1zLhsi.js → DateRangeSelect-AJd7gYva.js} +1 -1
- package/dist/{Default.vue_vue_type_script_setup_true_lang-BbIP6Sxr.js → Default.vue_vue_type_script_setup_true_lang-CIVlgjSX.js} +1 -1
- package/dist/{DynamicWidget.vue_vue_type_script_setup_true_lang-CzSVopxn.js → DynamicWidget.vue_vue_type_script_setup_true_lang-BKHx9p3R.js} +7 -7
- package/dist/{GlobalFilterSelect.vue_vue_type_script_setup_true_lang-V9SzUzmd.js → GlobalFilterSelect.vue_vue_type_script_setup_true_lang-qQi-7kuX.js} +63 -63
- package/dist/{InsightView-BY5Sgoxt.js → InsightView-noFPHcRY.js} +5 -5
- package/dist/{Integration-YOGVHjkr.js → Integration-UwZP3vYt.js} +3 -3
- package/dist/{Integrations-DLn3wHzm.js → Integrations-BMhJuw20.js} +2 -2
- package/dist/{Layout-B8HhRlSf.js → Layout-CofH0rzo.js} +1 -1
- package/dist/{LocationSelect.vue_vue_type_script_setup_true_lang-C2yXmZru.js → LocationSelect.vue_vue_type_script_setup_true_lang-BsdJx7gt.js} +2 -2
- package/dist/{MenuTab.vue_vue_type_script_setup_true_lang-CZFM47wC.js → MenuTab.vue_vue_type_script_setup_true_lang-BMJHW2E2.js} +5 -5
- package/dist/{NavigationTab.vue_vue_type_script_setup_true_lang-BriXZRy-.js → NavigationTab.vue_vue_type_script_setup_true_lang-b6hgoVnw.js} +5 -5
- package/dist/{OverviewView-B4auEUPK.js → OverviewView-V-KcUYld.js} +5 -5
- package/dist/{Report-dar8N8tM.js → Report-Cxfxa7EK.js} +3 -3
- package/dist/{ReportCanvasView-J-TOAEDk.js → ReportCanvasView-DDNkVmlA.js} +435 -347
- package/dist/{ReportEditor-GUrAEUjy.js → ReportEditor-syPuiUDA.js} +7 -7
- package/dist/{ReportView-ok4zqyiS.js → ReportView-Dqc89voW.js} +6 -6
- package/dist/{ReportViewRoute-BcYLz9D0.js → ReportViewRoute-BE4Olg2t.js} +2 -2
- package/dist/{Setting-CW-iwHV7.js → Setting-CSZG2_pc.js} +3 -3
- package/dist/{Template-CYnlmr86.js → Template-DE8y5xA7.js} +3 -3
- package/dist/{TileEditor-btcTn9w6.js → TileEditor-DCLCIQqG.js} +6 -6
- package/dist/{TilePageStack.vue_vue_type_script_setup_true_lang-Be_qbuOb.js → TilePageStack.vue_vue_type_script_setup_true_lang-BKM30woJ.js} +2 -2
- package/dist/{TransitionFade-B3zeQDvF.js → TransitionFade-DSKakW7L.js} +5 -5
- package/dist/{app-Bw-zsS2R.js → app-BxEbZEnS.js} +76 -12
- package/dist/app.js +1 -1
- package/dist/assets/formatChartData.worker-R9EGYsk6.js +544 -0
- package/dist/assets/processTableData.worker-CxpDa0tB.js +544 -0
- package/dist/{currency-DmsNWBQ3.js → currency-lmnrd1Gz.js} +1 -1
- package/dist/{index-B5Reb-CL.js → index-Co3j0l3d.js} +2906 -2802
- package/dist/{report-CblaE0LI.js → report-Dsp2krIZ.js} +1 -1
- package/dist/report-canvas-libs/chartjs-chart-geo-4.js +2 -0
- package/dist/report-canvas-libs/chartjs-chart-sankey-0.js +7 -0
- package/dist/report-canvas-libs/components-1.js +1293 -50
- package/dist/report-canvas-libs/geo-outlines-1.js +5 -0
- package/dist/{useRestaurantPermission-BZR1kItv.js → useRestaurantPermission-D8xwhBHn.js} +1 -1
- package/package.json +3 -1
- package/dist/assets/formatChartData.worker-UoGYoYc3.js +0 -495
- package/dist/assets/processTableData.worker-DxE4bjxG.js +0 -495
|
@@ -2,39 +2,39 @@ import { defineComponent as Ze, computed as V, ref as _, watch as ge, onBeforeUn
|
|
|
2
2
|
import { useRoute as jn, useRouter as Dn } from "vue-router";
|
|
3
3
|
import { u as et, _ as mt } from "./_plugin-vue_export-helper-C6QDExPN.js";
|
|
4
4
|
import { storeToRefs as qe } from "pinia";
|
|
5
|
-
import { r as _e, F as Se, u as ut, a as Nt, Z as Vn, _ as Bn, $ as Fn, a0 as qn, a1 as Un, a2 as Hn, i as Wn } from "./app-
|
|
6
|
-
import { _ as Gn } from "./LocationSelect.vue_vue_type_script_setup_true_lang-
|
|
7
|
-
import { D as Yn } from "./DateRangeSelect-
|
|
5
|
+
import { r as _e, F as Se, u as ut, a as Nt, Z as Vn, _ as Bn, $ as Fn, a0 as qn, a1 as Un, a2 as Hn, i as Wn } from "./app-BxEbZEnS.js";
|
|
6
|
+
import { _ as Gn } from "./LocationSelect.vue_vue_type_script_setup_true_lang-BsdJx7gt.js";
|
|
7
|
+
import { D as Yn } from "./DateRangeSelect-AJd7gYva.js";
|
|
8
8
|
import { detectLocale as Jn } from "@feedmepos/mf-common";
|
|
9
|
-
import { c as Kn } from "./currency-
|
|
10
|
-
import { v as Ut, u as Xn } from "./report-
|
|
9
|
+
import { c as Kn } from "./currency-lmnrd1Gz.js";
|
|
10
|
+
import { v as Ut, u as Xn } from "./report-Dsp2krIZ.js";
|
|
11
11
|
import { r as Qn } from "./i18n-DbyciK4x.js";
|
|
12
12
|
const Zn = /^(?:https?:\/\/|mailto:)[^\s]+$/i, St = /`([^`]+)`|(!?)\[([^\]]*)\]\(([^)\s]*)\)|\*\*([\s\S]+?)\*\*|\*([^*\n]+)\*/g;
|
|
13
|
-
function It(
|
|
13
|
+
function It(a, e) {
|
|
14
14
|
if (!e) return;
|
|
15
|
-
const t =
|
|
16
|
-
(t == null ? void 0 : t.type) === "text" ? t.text += e :
|
|
15
|
+
const t = a[a.length - 1];
|
|
16
|
+
(t == null ? void 0 : t.type) === "text" ? t.text += e : a.push({ type: "text", text: e });
|
|
17
17
|
}
|
|
18
|
-
function At(
|
|
18
|
+
function At(a) {
|
|
19
19
|
const e = [];
|
|
20
20
|
let t = 0;
|
|
21
21
|
St.lastIndex = 0;
|
|
22
|
-
for (let r = St.exec(
|
|
23
|
-
It(e,
|
|
24
|
-
const [,
|
|
25
|
-
|
|
22
|
+
for (let r = St.exec(a); r; r = St.exec(a)) {
|
|
23
|
+
It(e, a.slice(t, r.index)), t = r.index + r[0].length;
|
|
24
|
+
const [, n, f, u, w, k, x] = r;
|
|
25
|
+
n !== void 0 ? e.push({ type: "code", text: n }) : u !== void 0 ? !f && Zn.test(w) ? e.push({ type: "link", text: u || w, href: w }) : It(e, r[0]) : k !== void 0 ? e.push({ type: "strong", text: k }) : x !== void 0 && e.push({ type: "em", text: x });
|
|
26
26
|
}
|
|
27
|
-
return It(e,
|
|
27
|
+
return It(e, a.slice(t)), e;
|
|
28
28
|
}
|
|
29
29
|
const ea = /^\s*```/, ta = /^\s{0,3}(#{1,6})\s+(.*)$/, na = /^\s*[-*+]\s+(.*)$/, aa = /^\s*\d{1,3}[.)]\s+(.*)$/;
|
|
30
|
-
function Ht(
|
|
31
|
-
const e = [], t = String(
|
|
32
|
-
let r = [],
|
|
30
|
+
function Ht(a) {
|
|
31
|
+
const e = [], t = String(a ?? "").split(/\r?\n/);
|
|
32
|
+
let r = [], n = null, f = null;
|
|
33
33
|
function u() {
|
|
34
34
|
r.length && (e.push({ type: "p", inline: At(r.join(" ")) }), r = []);
|
|
35
35
|
}
|
|
36
36
|
function w() {
|
|
37
|
-
|
|
37
|
+
n && (e.push({ type: "list", ordered: n.ordered, items: n.items }), n = null);
|
|
38
38
|
}
|
|
39
39
|
function k() {
|
|
40
40
|
u(), w();
|
|
@@ -57,18 +57,18 @@ function Ht(n) {
|
|
|
57
57
|
else if (R || M) {
|
|
58
58
|
u();
|
|
59
59
|
const T = !R;
|
|
60
|
-
(!
|
|
60
|
+
(!n || n.ordered !== T) && (w(), n = { ordered: T, items: [] }), n.items.push(At((R ?? M)[1]));
|
|
61
61
|
} else
|
|
62
62
|
w(), r.push(x.trim());
|
|
63
63
|
}
|
|
64
64
|
return f != null && f.length && e.push({ type: "pre", text: f.join(`
|
|
65
65
|
`) }), k(), e;
|
|
66
66
|
}
|
|
67
|
-
function ra(
|
|
68
|
-
const t = String(
|
|
67
|
+
function ra(a, e) {
|
|
68
|
+
const t = String(a ?? "").trim();
|
|
69
69
|
if (t.length <= e) return t;
|
|
70
|
-
const r = t.slice(0, e),
|
|
71
|
-
return `${(
|
|
70
|
+
const r = t.slice(0, e), n = r.lastIndexOf(" ");
|
|
71
|
+
return `${(n > e * 0.6 ? r.slice(0, n) : r).trimEnd()}…`;
|
|
72
72
|
}
|
|
73
73
|
const Wt = 600, ct = [
|
|
74
74
|
"reviewing",
|
|
@@ -125,95 +125,95 @@ const Wt = 600, ct = [
|
|
|
125
125
|
"turn_failed",
|
|
126
126
|
"step"
|
|
127
127
|
]);
|
|
128
|
-
function cn(
|
|
129
|
-
return
|
|
128
|
+
function cn(a) {
|
|
129
|
+
return a && oa[a] || "working";
|
|
130
130
|
}
|
|
131
|
-
function Gt(
|
|
131
|
+
function Gt(a, e) {
|
|
132
132
|
const t = ct.indexOf(e);
|
|
133
|
-
return t < 0 ||
|
|
133
|
+
return t < 0 || a && ct.indexOf(a) >= t ? a : e;
|
|
134
134
|
}
|
|
135
|
-
function sa(
|
|
136
|
-
const e = new Set(
|
|
135
|
+
function sa(a) {
|
|
136
|
+
const e = new Set(a.map(cn));
|
|
137
137
|
return ct.filter((t) => e.has(t));
|
|
138
138
|
}
|
|
139
|
-
function mn(
|
|
139
|
+
function mn(a) {
|
|
140
140
|
var t;
|
|
141
141
|
const e = [];
|
|
142
|
-
for (const r of
|
|
143
|
-
const
|
|
144
|
-
if (r.type !== "data-step" || typeof
|
|
145
|
-
const f = ct.find((u) => u ===
|
|
142
|
+
for (const r of a) {
|
|
143
|
+
const n = (t = r.data) == null ? void 0 : t.step;
|
|
144
|
+
if (r.type !== "data-step" || typeof n != "string") continue;
|
|
145
|
+
const f = ct.find((u) => u === n);
|
|
146
146
|
f && !e.includes(f) && e.push(f);
|
|
147
147
|
}
|
|
148
148
|
return e;
|
|
149
149
|
}
|
|
150
|
-
function la(
|
|
151
|
-
return
|
|
150
|
+
function la(a) {
|
|
151
|
+
return a ? a.steps.length ? a.steps : sa(a.signals) : [];
|
|
152
152
|
}
|
|
153
|
-
function fa(
|
|
154
|
-
return mn((
|
|
153
|
+
function fa(a) {
|
|
154
|
+
return mn((a == null ? void 0 : a.parts) ?? []).pop() ?? null;
|
|
155
155
|
}
|
|
156
|
-
function Ct(
|
|
157
|
-
return
|
|
156
|
+
function Ct(a) {
|
|
157
|
+
return a.filter((e) => e.type === "text").map((e) => String(e.text ?? "").trim()).filter(Boolean).join(`
|
|
158
158
|
|
|
159
159
|
`);
|
|
160
160
|
}
|
|
161
|
-
function da(
|
|
161
|
+
function da(a) {
|
|
162
162
|
const e = [];
|
|
163
|
-
for (const t of
|
|
163
|
+
for (const t of a) {
|
|
164
164
|
const r = t.type.startsWith("tool-") || t.type.startsWith("data-") ? t.type.slice(5) : "";
|
|
165
165
|
r && !ia.has(r) && e.push(r);
|
|
166
166
|
}
|
|
167
167
|
return e;
|
|
168
168
|
}
|
|
169
|
-
function ca(
|
|
169
|
+
function ca(a) {
|
|
170
170
|
var r;
|
|
171
|
-
const e =
|
|
171
|
+
const e = a.find((n) => n.type === "data-turn_stats"), t = (r = e == null ? void 0 : e.data) == null ? void 0 : r.ms;
|
|
172
172
|
return typeof t == "number" && t >= 0 ? t : void 0;
|
|
173
173
|
}
|
|
174
|
-
function ma(
|
|
175
|
-
const e = Math.max(0, Math.floor(
|
|
174
|
+
function ma(a) {
|
|
175
|
+
const e = Math.max(0, Math.floor(a / 1e3));
|
|
176
176
|
return e < 60 ? `${e}s` : `${Math.floor(e / 60)}m ${String(e % 60).padStart(2, "0")}s`;
|
|
177
177
|
}
|
|
178
|
-
function ua(
|
|
179
|
-
const e =
|
|
178
|
+
function ua(a) {
|
|
179
|
+
const e = a / 1e3;
|
|
180
180
|
return e < 60 ? `${e.toFixed(1)}s` : `${Math.floor(e / 60)}m ${String(Math.round(e % 60)).padStart(2, "0")}s`;
|
|
181
181
|
}
|
|
182
|
-
function pa(
|
|
183
|
-
return
|
|
182
|
+
function pa(a) {
|
|
183
|
+
return a === "too_costly" || a === "timeout" ? "tooLarge" : a === "deadline" ? "outOfTime" : "ours";
|
|
184
184
|
}
|
|
185
|
-
function ha(
|
|
185
|
+
function ha(a) {
|
|
186
186
|
var t;
|
|
187
|
-
const e = (t =
|
|
187
|
+
const e = (t = a.find((r) => r.type === "data-turn_failed")) == null ? void 0 : t.data;
|
|
188
188
|
if (e)
|
|
189
189
|
return {
|
|
190
190
|
code: typeof e.code == "string" ? e.code : "unknown",
|
|
191
191
|
...typeof e.ref == "string" ? { ref: e.ref } : {}
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
|
-
function ba(
|
|
195
|
-
const e =
|
|
194
|
+
function ba(a) {
|
|
195
|
+
const e = a.find((t) => t.type === "data-edit-target");
|
|
196
196
|
return e ? e.data : void 0;
|
|
197
197
|
}
|
|
198
|
-
function ga(
|
|
198
|
+
function ga(a) {
|
|
199
199
|
const e = [[]];
|
|
200
|
-
for (const t of
|
|
200
|
+
for (const t of a)
|
|
201
201
|
t.type === "step-start" ? e.push([]) : e[e.length - 1].push(t);
|
|
202
202
|
return e.filter((t) => t.length > 0);
|
|
203
203
|
}
|
|
204
|
-
function Yt(
|
|
205
|
-
return
|
|
204
|
+
function Yt(a) {
|
|
205
|
+
return a.some((e) => e.type.startsWith("tool-"));
|
|
206
206
|
}
|
|
207
|
-
function va(
|
|
207
|
+
function va(a, e = {}) {
|
|
208
208
|
var r;
|
|
209
209
|
const t = [];
|
|
210
|
-
for (const
|
|
211
|
-
const f =
|
|
212
|
-
if (
|
|
210
|
+
for (const n of a ?? []) {
|
|
211
|
+
const f = n.parts ?? [], u = da(f), w = ba(f);
|
|
212
|
+
if (n.role === "user") {
|
|
213
213
|
const G = Ct(f);
|
|
214
214
|
t.push({
|
|
215
|
-
id:
|
|
216
|
-
turnId:
|
|
215
|
+
id: n.id,
|
|
216
|
+
turnId: n.turnId ?? n.id,
|
|
217
217
|
role: "user",
|
|
218
218
|
target: w,
|
|
219
219
|
answer: G,
|
|
@@ -226,15 +226,15 @@ function va(n, e = {}) {
|
|
|
226
226
|
});
|
|
227
227
|
continue;
|
|
228
228
|
}
|
|
229
|
-
const k = !!e.streamingId &&
|
|
230
|
-
if (
|
|
229
|
+
const k = !!e.streamingId && n.id === e.streamingId;
|
|
230
|
+
if (n.inProgress && !k) continue;
|
|
231
231
|
const x = ga(f), j = x[x.length - 1] ?? [], R = x.some(Yt), M = R && !f.some((G) => G.type === "step-start");
|
|
232
232
|
let T = "";
|
|
233
233
|
k || (!R || M ? T = Ct(f) : Yt(j) || (T = Ct(j)));
|
|
234
234
|
const X = !!T && (M || T.length > Wt), I = k ? void 0 : ha(f);
|
|
235
235
|
!T && !u.length && !k || t.push({
|
|
236
|
-
id:
|
|
237
|
-
turnId:
|
|
236
|
+
id: n.id,
|
|
237
|
+
turnId: n.turnId ?? n.id,
|
|
238
238
|
role: "assistant",
|
|
239
239
|
target: w,
|
|
240
240
|
answer: T,
|
|
@@ -244,7 +244,7 @@ function va(n, e = {}) {
|
|
|
244
244
|
steps: mn(f),
|
|
245
245
|
pending: k,
|
|
246
246
|
noSummary: !k && !T && R,
|
|
247
|
-
ms: k ? void 0 : ca(f) ?? ((r =
|
|
247
|
+
ms: k ? void 0 : ca(f) ?? ((r = n.stats) == null ? void 0 : r.ms),
|
|
248
248
|
...I ? { failure: I } : {}
|
|
249
249
|
});
|
|
250
250
|
}
|
|
@@ -317,8 +317,8 @@ const ya = {
|
|
|
317
317
|
retryError: {}
|
|
318
318
|
},
|
|
319
319
|
emits: ["retry", "askBuilder", "checkStatus"],
|
|
320
|
-
setup(
|
|
321
|
-
const t =
|
|
320
|
+
setup(a, { emit: e }) {
|
|
321
|
+
const t = a, r = e, { t: n } = et(), f = V(() => {
|
|
322
322
|
var I;
|
|
323
323
|
return ((I = t.run) == null ? void 0 : I.sections) ?? [];
|
|
324
324
|
}), u = V(() => f.value.filter((I) => I.status === "ok").length), w = V(() => f.value.filter((I) => I.status === "error")), k = V(() => {
|
|
@@ -358,7 +358,7 @@ const ya = {
|
|
|
358
358
|
size: "sm"
|
|
359
359
|
})
|
|
360
360
|
]),
|
|
361
|
-
v("span", ka, y(o(
|
|
361
|
+
v("span", ka, y(o(n)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
|
|
362
362
|
]))), 128)),
|
|
363
363
|
v("li", _a, [
|
|
364
364
|
G[2] || (G[2] = v("span", { class: "flex h-[21px] w-16 shrink-0 items-center justify-center" }, [
|
|
@@ -366,21 +366,21 @@ const ya = {
|
|
|
366
366
|
], -1)),
|
|
367
367
|
v("div", Sa, [
|
|
368
368
|
v("div", Ia, [
|
|
369
|
-
v("p", Aa, y(o(
|
|
369
|
+
v("p", Aa, y(o(n)(`reportV5.reportAi.chat.phase.${I.phase}`)), 1),
|
|
370
370
|
M.value ? (l(), d("span", Ca, y(M.value), 1)) : L("", !0)
|
|
371
371
|
]),
|
|
372
|
-
f.value.length ? (l(), d("p", Ea, y(o(
|
|
373
|
-
I.slow ? (l(), d("p", Ta, y(o(
|
|
372
|
+
f.value.length ? (l(), d("p", Ea, y(o(n)("reportV5.reportAi.build.prepared", { done: u.value, total: f.value.length })), 1)) : L("", !0),
|
|
373
|
+
I.slow ? (l(), d("p", Ta, y(o(n)("reportV5.reportAi.build.slow")) + " " + y(o(n)("reportV5.reportAi.build.safeToLeave")), 1)) : L("", !0)
|
|
374
374
|
])
|
|
375
375
|
])
|
|
376
376
|
])) : L("", !0),
|
|
377
|
-
I.interrupted ? (l(), d("p", Oa, y(o(
|
|
377
|
+
I.interrupted ? (l(), d("p", Oa, y(o(n)("reportV5.reportAi.build.interrupted")), 1)) : L("", !0),
|
|
378
378
|
I.stale ? (l(), d("div", za, [
|
|
379
|
-
v("p", $a, y(o(
|
|
379
|
+
v("p", $a, y(o(n)("reportV5.reportAi.build.stalled")), 1),
|
|
380
380
|
v("button", {
|
|
381
381
|
class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary underline",
|
|
382
382
|
onClick: G[0] || (G[0] = (h) => r("checkStatus"))
|
|
383
|
-
}, y(o(
|
|
383
|
+
}, y(o(n)("reportV5.reportAi.build.checkStatus")), 1)
|
|
384
384
|
])) : L("", !0),
|
|
385
385
|
w.value.length ? (l(), d("ul", Ra, [
|
|
386
386
|
(l(!0), d(Ae, null, Re(w.value, (h) => (l(), d("li", {
|
|
@@ -389,7 +389,7 @@ const ya = {
|
|
|
389
389
|
}, [
|
|
390
390
|
v("div", Na, [
|
|
391
391
|
v("p", La, y(h.title), 1),
|
|
392
|
-
v("p", Ma, y(o(
|
|
392
|
+
v("p", Ma, y(o(n)(
|
|
393
393
|
h.retries ? "reportV5.reportAi.build.retriedWidget" : "reportV5.reportAi.build.failedWidget"
|
|
394
394
|
)), 1)
|
|
395
395
|
]),
|
|
@@ -398,15 +398,15 @@ const ya = {
|
|
|
398
398
|
"data-testid": "report-canvas-retry",
|
|
399
399
|
class: "fm-typo-en-body-sm-600 shrink-0 text-fm-color-typo-secondary underline",
|
|
400
400
|
onClick: (B) => r("retry", h.id)
|
|
401
|
-
}, y(o(
|
|
401
|
+
}, y(o(n)("reportV5.reportAi.build.retry")), 9, Pa)) : k.value ? (l(), d("button", {
|
|
402
402
|
key: 1,
|
|
403
403
|
"data-testid": "report-canvas-ask-builder",
|
|
404
404
|
class: "fm-typo-en-body-sm-600 shrink-0 text-fm-color-typo-secondary underline",
|
|
405
405
|
onClick: (B) => r("askBuilder", h.title)
|
|
406
|
-
}, y(o(
|
|
406
|
+
}, y(o(n)("reportV5.reportAi.build.askBuilder")), 9, ja)) : L("", !0)
|
|
407
407
|
]))), 128))
|
|
408
408
|
])) : L("", !0),
|
|
409
|
-
I.retryError ? (l(), d("p", Da, y(o(
|
|
409
|
+
I.retryError ? (l(), d("p", Da, y(o(n)("reportV5.reportAi.build.retryFailed")), 1)) : L("", !0),
|
|
410
410
|
X.value ? (l(), d("div", Va, [
|
|
411
411
|
v("button", {
|
|
412
412
|
"data-testid": "report-canvas-details-toggle",
|
|
@@ -418,7 +418,7 @@ const ya = {
|
|
|
418
418
|
name: T.value ? "expand_more" : "chevron_right",
|
|
419
419
|
size: "sm"
|
|
420
420
|
}, null, 8, ["name"]),
|
|
421
|
-
Ke(" " + y(o(
|
|
421
|
+
Ke(" " + y(o(n)("reportV5.reportAi.build.details")), 1)
|
|
422
422
|
], 8, Ba),
|
|
423
423
|
T.value ? (l(), d("div", Fa, [
|
|
424
424
|
I.active ? L("", !0) : (l(!0), d(Ae, { key: 0 }, Re(I.phases, (h) => (l(), d("p", {
|
|
@@ -431,13 +431,13 @@ const ya = {
|
|
|
431
431
|
size: "sm"
|
|
432
432
|
})
|
|
433
433
|
]),
|
|
434
|
-
Ke(" " + y(o(
|
|
434
|
+
Ke(" " + y(o(n)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
|
|
435
435
|
]))), 128)),
|
|
436
436
|
(l(!0), d(Ae, null, Re(f.value, (h) => (l(), d("p", {
|
|
437
437
|
key: h.id,
|
|
438
438
|
"data-testid": "report-canvas-widget-state",
|
|
439
439
|
class: "fm-typo-en-body-sm-400 flex items-center gap-8 pl-24 text-fm-color-typo-secondary",
|
|
440
|
-
title: o(
|
|
440
|
+
title: o(n)(`reportV5.reportAi.build.state.${h.status}`)
|
|
441
441
|
}, [
|
|
442
442
|
v("span", Ha, [
|
|
443
443
|
h.status === "ok" ? (l(), ye(q, {
|
|
@@ -458,7 +458,7 @@ const ya = {
|
|
|
458
458
|
}))
|
|
459
459
|
]),
|
|
460
460
|
v("span", Ga, y(h.title), 1),
|
|
461
|
-
h.status === "error" ? (l(), d("span", Ya, y(o(
|
|
461
|
+
h.status === "error" ? (l(), d("span", Ya, y(o(n)("reportV5.reportAi.build.state.error")), 1)) : (l(), d("span", Ja, y(o(n)(`reportV5.reportAi.build.state.${h.status}`)), 1))
|
|
462
462
|
], 8, Ua))), 128))
|
|
463
463
|
])) : L("", !0)
|
|
464
464
|
])) : L("", !0)
|
|
@@ -491,8 +491,8 @@ const ya = {
|
|
|
491
491
|
stopping: { type: Boolean }
|
|
492
492
|
},
|
|
493
493
|
emits: ["update:draft", "submit", "clearTarget", "stop"],
|
|
494
|
-
setup(
|
|
495
|
-
const r =
|
|
494
|
+
setup(a, { expose: e, emit: t }) {
|
|
495
|
+
const r = a, n = t, { t: f } = et(), u = Kt * 2, w = Kt * 6, k = _(), x = _(!1);
|
|
496
496
|
function j() {
|
|
497
497
|
const h = k.value;
|
|
498
498
|
h && (h.style.height = "auto", h.style.height = `${Math.min(Math.max(h.scrollHeight, u), w)}px`);
|
|
@@ -502,14 +502,14 @@ const ya = {
|
|
|
502
502
|
() => void De(j)
|
|
503
503
|
);
|
|
504
504
|
function R(h) {
|
|
505
|
-
|
|
505
|
+
n("update:draft", h.target.value);
|
|
506
506
|
}
|
|
507
507
|
function M(h) {
|
|
508
508
|
h.key !== "Enter" || h.shiftKey || x.value || h.isComposing || (h.preventDefault(), X());
|
|
509
509
|
}
|
|
510
510
|
const T = V(() => !!r.draft.trim() && !r.streaming && !r.targetStale);
|
|
511
511
|
function X() {
|
|
512
|
-
T.value &&
|
|
512
|
+
T.value && n("submit");
|
|
513
513
|
}
|
|
514
514
|
function I() {
|
|
515
515
|
var h;
|
|
@@ -572,7 +572,7 @@ const ya = {
|
|
|
572
572
|
"aria-label": o(f)(
|
|
573
573
|
h.target.element ? "reportV5.reportAi.chat.removeElement" : "reportV5.reportAi.chat.removeTarget"
|
|
574
574
|
),
|
|
575
|
-
onClick: B[2] || (B[2] = (Z) =>
|
|
575
|
+
onClick: B[2] || (B[2] = (Z) => n("clearTarget"))
|
|
576
576
|
}, [
|
|
577
577
|
ae(ne, {
|
|
578
578
|
name: "close",
|
|
@@ -588,7 +588,7 @@ const ya = {
|
|
|
588
588
|
disabled: h.stopping,
|
|
589
589
|
"aria-label": o(f)(h.stopping ? "reportV5.reportAi.chat.stopping" : "reportV5.reportAi.chat.stop"),
|
|
590
590
|
title: o(f)(h.stopping ? "reportV5.reportAi.chat.stopping" : "reportV5.reportAi.chat.stop"),
|
|
591
|
-
onClick: B[3] || (B[3] = (Z) =>
|
|
591
|
+
onClick: B[3] || (B[3] = (Z) => n("stop"))
|
|
592
592
|
}, [
|
|
593
593
|
ae(ne, {
|
|
594
594
|
name: "stop",
|
|
@@ -617,8 +617,8 @@ const ya = {
|
|
|
617
617
|
};
|
|
618
618
|
}
|
|
619
619
|
}), cr = "rounded-sm bg-fm-color-neutral-gray-100 px-4 font-mono text-[0.9em]";
|
|
620
|
-
function Xt(
|
|
621
|
-
return
|
|
620
|
+
function Xt(a) {
|
|
621
|
+
return a.map((e) => e.type === "strong" ? Be("strong", { class: "font-semibold" }, e.text) : e.type === "em" ? Be("em", e.text) : e.type === "code" ? Be("code", { class: cr }, e.text) : e.type === "link" ? Be(
|
|
622
622
|
"a",
|
|
623
623
|
{
|
|
624
624
|
href: e.href,
|
|
@@ -629,10 +629,10 @@ function Xt(n) {
|
|
|
629
629
|
e.text
|
|
630
630
|
) : e.text);
|
|
631
631
|
}
|
|
632
|
-
const mr = (
|
|
632
|
+
const mr = (a) => Be(
|
|
633
633
|
"div",
|
|
634
634
|
{ class: "fm-typo-en-body-md-400 flex flex-col items-stretch gap-8 !leading-[21px]" },
|
|
635
|
-
(
|
|
635
|
+
(a.blocks ?? []).map((e) => e.type === "pre" ? Be(
|
|
636
636
|
"pre",
|
|
637
637
|
{
|
|
638
638
|
class: "overflow-x-auto rounded-md bg-fm-color-neutral-gray-100 p-8 font-mono text-xs"
|
|
@@ -653,15 +653,15 @@ const mr = (n) => Be(
|
|
|
653
653
|
blocks: {},
|
|
654
654
|
preview: {}
|
|
655
655
|
},
|
|
656
|
-
setup(
|
|
657
|
-
const e =
|
|
656
|
+
setup(a) {
|
|
657
|
+
const e = a, { t } = et(), r = _(!1);
|
|
658
658
|
ge(
|
|
659
659
|
() => e.preview,
|
|
660
660
|
() => r.value = !1
|
|
661
661
|
);
|
|
662
|
-
const
|
|
662
|
+
const n = V(() => e.preview && !r.value ? e.preview : e.blocks);
|
|
663
663
|
return (f, u) => (l(), d("div", null, [
|
|
664
|
-
ae(o(mr), { blocks:
|
|
664
|
+
ae(o(mr), { blocks: n.value }, null, 8, ["blocks"]),
|
|
665
665
|
f.preview ? (l(), d("button", {
|
|
666
666
|
key: 0,
|
|
667
667
|
"data-testid": "report-canvas-full-reply",
|
|
@@ -783,9 +783,9 @@ const mr = (n) => Be(
|
|
|
783
783
|
homeDraftModifiers: {}
|
|
784
784
|
}),
|
|
785
785
|
emits: /* @__PURE__ */ Vt(["update:draft", "submit", "close", "retry", "undo", "resend", "askAgain", "editRequest", "askBuilder", "checkStatus", "clearTarget", "newChat", "selectChat", "loadChats", "loadMoreChats", "loadEarlier", "stop"], ["update:homeOpen", "update:homeDraft"]),
|
|
786
|
-
setup(
|
|
787
|
-
const t =
|
|
788
|
-
() => !t.chatTitle || t.chatTitle === Qt ?
|
|
786
|
+
setup(a, { emit: e }) {
|
|
787
|
+
const t = a, r = e, { t: n, locale: f } = et(), u = Bt(a, "homeOpen"), w = _(!1), k = Bt(a, "homeDraft"), x = _(!1), j = V(
|
|
788
|
+
() => !t.chatTitle || t.chatTitle === Qt ? n("reportV5.reportAi.chat.chats") : t.chatTitle
|
|
789
789
|
), R = _(!1), M = V(() => t.switching || R.value);
|
|
790
790
|
ge(
|
|
791
791
|
() => t.messages,
|
|
@@ -837,7 +837,7 @@ const mr = (n) => Be(
|
|
|
837
837
|
const $ = [];
|
|
838
838
|
for (const fe of t.chats ?? []) {
|
|
839
839
|
const le = new Date(fe.lastMessageAt).getTime(), Le = le >= i.getTime() ? "today" : le >= i.getTime() - so ? "yesterday" : "earlier";
|
|
840
|
-
($.find((me) => me.key === Le) ?? ($.push({ key: Le, label:
|
|
840
|
+
($.find((me) => me.key === Le) ?? ($.push({ key: Le, label: n(`reportV5.reportAi.chat.group.${Le}`), chats: [] }), $[$.length - 1])).chats.push(fe);
|
|
841
841
|
}
|
|
842
842
|
return $;
|
|
843
843
|
});
|
|
@@ -911,8 +911,8 @@ const mr = (n) => Be(
|
|
|
911
911
|
}
|
|
912
912
|
const Ie = ["one", "two", "three"], ve = V(
|
|
913
913
|
() => t.blank ? Ie.map((i) => ({
|
|
914
|
-
label:
|
|
915
|
-
prompt:
|
|
914
|
+
label: n(`reportV5.reportAi.chat.suggestNew.${i}.label`),
|
|
915
|
+
prompt: n(`reportV5.reportAi.chat.suggestNew.${i}.prompt`)
|
|
916
916
|
})) : []
|
|
917
917
|
);
|
|
918
918
|
async function Ne(i) {
|
|
@@ -959,25 +959,25 @@ const mr = (n) => Be(
|
|
|
959
959
|
const fe = ze("FmIcon"), le = ze("FmTooltip"), Le = ze("FmButton");
|
|
960
960
|
return l(), d("aside", {
|
|
961
961
|
class: "flex h-full min-h-0 w-full flex-col border-l border-fm-color-border-secondary bg-fm-color-neutral-white",
|
|
962
|
-
"aria-label": o(
|
|
962
|
+
"aria-label": o(n)("reportV5.reportAi.chat.title"),
|
|
963
963
|
onKeydown: h
|
|
964
964
|
}, [
|
|
965
965
|
v("header", br, [
|
|
966
966
|
v("div", gr, [
|
|
967
|
-
v("h2", vr, y(o(
|
|
967
|
+
v("h2", vr, y(o(n)("reportV5.reportAi.chat.title")), 1),
|
|
968
968
|
!he.value && i.chatTitle && i.chatTitle !== Qt ? (l(), d("p", yr, y(i.chatTitle), 1)) : L("", !0)
|
|
969
969
|
]),
|
|
970
970
|
!u.value || w.value ? (l(), ye(le, {
|
|
971
971
|
key: 0,
|
|
972
972
|
placement: "bottom",
|
|
973
|
-
content: o(
|
|
973
|
+
content: o(n)("reportV5.reportAi.chat.chats")
|
|
974
974
|
}, {
|
|
975
975
|
default: We(() => [
|
|
976
976
|
v("button", {
|
|
977
977
|
"data-testid": "report-canvas-chat-back",
|
|
978
978
|
class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
|
|
979
979
|
disabled: i.busy,
|
|
980
|
-
"aria-label": w.value ? o(
|
|
980
|
+
"aria-label": w.value ? o(n)("reportV5.reportAi.chat.recentChats") : o(n)("reportV5.reportAi.chat.openChats", { title: j.value }),
|
|
981
981
|
onClick: I
|
|
982
982
|
}, [
|
|
983
983
|
ae(fe, {
|
|
@@ -991,15 +991,15 @@ const mr = (n) => Be(
|
|
|
991
991
|
he.value ? L("", !0) : (l(), ye(le, {
|
|
992
992
|
key: 1,
|
|
993
993
|
placement: "bottom",
|
|
994
|
-
content: o(
|
|
994
|
+
content: o(n)("reportV5.reportAi.chat.newChat")
|
|
995
995
|
}, {
|
|
996
996
|
default: We(() => [
|
|
997
997
|
v("button", {
|
|
998
998
|
"data-testid": "report-canvas-new-chat",
|
|
999
999
|
class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
|
|
1000
1000
|
disabled: i.busy,
|
|
1001
|
-
"aria-label": o(
|
|
1002
|
-
title: i.busy ? o(
|
|
1001
|
+
"aria-label": o(n)("reportV5.reportAi.chat.newChat"),
|
|
1002
|
+
title: i.busy ? o(n)("reportV5.reportAi.chat.waitForUpdate") : void 0,
|
|
1003
1003
|
onClick: q
|
|
1004
1004
|
}, [
|
|
1005
1005
|
ae(fe, {
|
|
@@ -1013,13 +1013,13 @@ const mr = (n) => Be(
|
|
|
1013
1013
|
}, 8, ["content"])),
|
|
1014
1014
|
ae(le, {
|
|
1015
1015
|
placement: "left",
|
|
1016
|
-
content: o(
|
|
1016
|
+
content: o(n)("reportV5.reportAi.chat.hide")
|
|
1017
1017
|
}, {
|
|
1018
1018
|
default: We(() => [
|
|
1019
1019
|
v("button", {
|
|
1020
1020
|
"data-testid": "report-canvas-chat-close",
|
|
1021
1021
|
class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
|
|
1022
|
-
"aria-label": o(
|
|
1022
|
+
"aria-label": o(n)("reportV5.reportAi.chat.hide"),
|
|
1023
1023
|
onClick: $[0] || ($[0] = (D) => r("close"))
|
|
1024
1024
|
}, [
|
|
1025
1025
|
ae(fe, {
|
|
@@ -1035,12 +1035,12 @@ const mr = (n) => Be(
|
|
|
1035
1035
|
key: 0,
|
|
1036
1036
|
"data-testid": u.value ? "report-canvas-chat-list" : "report-canvas-chat-home",
|
|
1037
1037
|
class: "flex min-h-0 grow flex-col overflow-y-auto px-[20px] py-24",
|
|
1038
|
-
"aria-label": o(
|
|
1038
|
+
"aria-label": o(n)("reportV5.reportAi.chat.chats")
|
|
1039
1039
|
}, [
|
|
1040
1040
|
w.value ? L("", !0) : (l(), d("div", Sr, [
|
|
1041
1041
|
v("div", Ir, [
|
|
1042
|
-
v("h3", Ar, y(o(
|
|
1043
|
-
v("p", Cr, y(o(
|
|
1042
|
+
v("h3", Ar, y(o(n)("reportV5.reportAi.chat.exploreTitle")), 1),
|
|
1043
|
+
v("p", Cr, y(o(n)(
|
|
1044
1044
|
i.blank ? "reportV5.reportAi.chat.placeholderNew" : "reportV5.reportAi.chat.exploreHint"
|
|
1045
1045
|
)), 1)
|
|
1046
1046
|
]),
|
|
@@ -1065,12 +1065,12 @@ const mr = (n) => Be(
|
|
|
1065
1065
|
$e.value ? (l(), d("section", {
|
|
1066
1066
|
key: 1,
|
|
1067
1067
|
class: "shrink-0 pt-24",
|
|
1068
|
-
"aria-label": o(
|
|
1068
|
+
"aria-label": o(n)("reportV5.reportAi.chat.recentChats")
|
|
1069
1069
|
}, [
|
|
1070
|
-
v("h3", zr, y(o(
|
|
1070
|
+
v("h3", zr, y(o(n)(
|
|
1071
1071
|
w.value ? "reportV5.reportAi.chat.yourChats" : "reportV5.reportAi.chat.recentChats"
|
|
1072
1072
|
)), 1),
|
|
1073
|
-
i.chatsLoading && !((ie = i.chats) != null && ie.length) ? (l(), d("p", $r, y(o(
|
|
1073
|
+
i.chatsLoading && !((ie = i.chats) != null && ie.length) ? (l(), d("p", $r, y(o(n)("reportV5.reportAi.chat.loadingChats")), 1)) : i.chatsError ? (l(), d("p", Rr, y(i.chatsError), 1)) : (me = i.chats) != null && me.length ? (l(!0), d(Ae, { key: 3 }, Re(Ee.value, (D) => (l(), d("section", {
|
|
1074
1074
|
key: D.key,
|
|
1075
1075
|
class: Qe(w.value ? "mb-16" : "")
|
|
1076
1076
|
}, [
|
|
@@ -1090,20 +1090,20 @@ const mr = (n) => Be(
|
|
|
1090
1090
|
class: "fm-typo-en-body-sm-400 shrink-0 text-fm-color-typo-secondary"
|
|
1091
1091
|
}, y(ne(ue)), 9, jr)
|
|
1092
1092
|
], 8, Mr))), 128))
|
|
1093
|
-
], 2))), 128)) : (l(), d("p", Nr, y(o(
|
|
1093
|
+
], 2))), 128)) : (l(), d("p", Nr, y(o(n)("reportV5.reportAi.chat.noChats")), 1)),
|
|
1094
1094
|
w.value ? i.chatsCursor ? (l(), d("button", {
|
|
1095
1095
|
key: 5,
|
|
1096
1096
|
"data-testid": "report-canvas-chat-list-more",
|
|
1097
1097
|
class: "chat-row fm-typo-en-body-sm-600 rounded-md px-8 py-12 text-fm-color-typo-secondary",
|
|
1098
1098
|
disabled: i.chatsLoading,
|
|
1099
1099
|
onClick: $[1] || ($[1] = (D) => r("loadMoreChats"))
|
|
1100
|
-
}, y(o(
|
|
1100
|
+
}, y(o(n)("reportV5.reportAi.chat.loadMoreChats")), 9, Vr)) : L("", !0) : (l(), d("button", {
|
|
1101
1101
|
key: 4,
|
|
1102
1102
|
"data-testid": "report-canvas-chat-see-all",
|
|
1103
1103
|
class: "chat-row fm-typo-en-body-sm-600 mt-8 rounded-md px-8 py-12 text-fm-color-typo-secondary",
|
|
1104
1104
|
disabled: i.chatsLoading,
|
|
1105
1105
|
onClick: X
|
|
1106
|
-
}, y(o(
|
|
1106
|
+
}, y(o(n)("reportV5.reportAi.chat.seeAll")), 9, Dr))
|
|
1107
1107
|
], 8, Or)) : L("", !0),
|
|
1108
1108
|
i.error ? (l(), d("p", Br, y(i.error), 1)) : L("", !0)
|
|
1109
1109
|
], 8, _r)) : (l(), d("div", Fr, [
|
|
@@ -1113,20 +1113,20 @@ const mr = (n) => Be(
|
|
|
1113
1113
|
class: "min-h-0 grow overflow-y-auto px-[20px] py-16",
|
|
1114
1114
|
onScroll: W
|
|
1115
1115
|
}, [
|
|
1116
|
-
M.value ? (l(), d("p", qr, y(o(
|
|
1116
|
+
M.value ? (l(), d("p", qr, y(o(n)("reportV5.reportAi.chat.loadingChat")), 1)) : (l(), d(Ae, { key: 1 }, [
|
|
1117
1117
|
i.earlier ? (l(), d("button", {
|
|
1118
1118
|
key: 0,
|
|
1119
1119
|
"data-testid": "report-canvas-load-earlier",
|
|
1120
1120
|
class: "fm-typo-en-body-sm-600 mb-16 w-full text-fm-color-typo-secondary disabled:opacity-50",
|
|
1121
1121
|
disabled: i.loadingEarlier,
|
|
1122
1122
|
onClick: $[2] || ($[2] = (D) => r("loadEarlier"))
|
|
1123
|
-
}, y(o(
|
|
1123
|
+
}, y(o(n)("reportV5.reportAi.chat.loadEarlier")), 9, Ur)) : L("", !0),
|
|
1124
1124
|
(l(!0), d(Ae, null, Re(A.value, (D, ue) => (l(), d("div", {
|
|
1125
1125
|
key: D.id,
|
|
1126
1126
|
class: "mb-16"
|
|
1127
1127
|
}, [
|
|
1128
|
-
D.target ? (l(), d("p", Hr, y(o(
|
|
1129
|
-
widget: D.target.label || o(
|
|
1128
|
+
D.target ? (l(), d("p", Hr, y(o(n)("reportV5.reportAi.chat.commentOn", {
|
|
1129
|
+
widget: D.target.label || o(n)("reportV5.reportAi.chat.selectedWidget")
|
|
1130
1130
|
})), 1)) : L("", !0),
|
|
1131
1131
|
D.role === "user" ? (l(), d("div", Wr, [
|
|
1132
1132
|
v("div", {
|
|
@@ -1137,28 +1137,28 @@ const mr = (n) => Be(
|
|
|
1137
1137
|
])
|
|
1138
1138
|
}, y(D.answer), 3),
|
|
1139
1139
|
Z.value.has(D.id) ? (l(), d("p", Gr, [
|
|
1140
|
-
Ke(y(o(
|
|
1140
|
+
Ke(y(o(n)("reportV5.reportAi.chat.notSent")) + " ", 1),
|
|
1141
1141
|
v("button", {
|
|
1142
1142
|
"data-testid": "chat-message-resend",
|
|
1143
1143
|
class: "ml-4 underline disabled:opacity-50",
|
|
1144
1144
|
disabled: i.streaming || i.busy,
|
|
1145
1145
|
onClick: (Te) => r("resend", D.id)
|
|
1146
|
-
}, y(o(
|
|
1146
|
+
}, y(o(n)("reportV5.reportAi.chat.resend")), 9, Yr)
|
|
1147
1147
|
])) : p.value.has(D.id) ? (l(), d("p", Jr, [
|
|
1148
|
-
Ke(y(o(
|
|
1148
|
+
Ke(y(o(n)("reportV5.reportAi.chat.noReply")) + " ", 1),
|
|
1149
1149
|
v("button", {
|
|
1150
1150
|
"data-testid": "chat-message-ask-again",
|
|
1151
1151
|
class: "ml-4 underline disabled:opacity-50",
|
|
1152
1152
|
disabled: i.streaming || i.busy,
|
|
1153
1153
|
onClick: (Te) => r("askAgain", D.id)
|
|
1154
|
-
}, y(o(
|
|
1154
|
+
}, y(o(n)("reportV5.reportAi.chat.resend")), 9, Kr)
|
|
1155
1155
|
])) : oe.value.has(D.turnId) ? (l(), d("button", {
|
|
1156
1156
|
key: 2,
|
|
1157
1157
|
"data-testid": "chat-turn-undo",
|
|
1158
1158
|
class: "fm-typo-en-body-sm-400 mt-4 text-fm-color-typo-secondary underline disabled:opacity-50",
|
|
1159
1159
|
disabled: i.undoing || i.streaming,
|
|
1160
1160
|
onClick: (Te) => r("undo", D.turnId)
|
|
1161
|
-
}, y(o(
|
|
1161
|
+
}, y(o(n)("reportV5.reportCanvas.draft.undo")), 9, Xr)) : L("", !0)
|
|
1162
1162
|
])) : (l(), d(Ae, { key: 2 }, [
|
|
1163
1163
|
ue === K.value || ue === re.value ? (l(), ye(Jt, Ft({
|
|
1164
1164
|
key: 0,
|
|
@@ -1176,33 +1176,33 @@ const mr = (n) => Be(
|
|
|
1176
1176
|
size: "sm",
|
|
1177
1177
|
class: "shrink-0 text-fm-color-typo-error"
|
|
1178
1178
|
}),
|
|
1179
|
-
Ke(" " + y(o(
|
|
1179
|
+
Ke(" " + y(o(n)("reportV5.reportAi.build.failed.title")), 1)
|
|
1180
1180
|
]),
|
|
1181
|
-
v("p", eo, y(o(
|
|
1181
|
+
v("p", eo, y(o(n)(`reportV5.reportAi.build.failed.${o(pa)(D.failure.code)}`)), 1),
|
|
1182
1182
|
ue === A.value.length - 1 && H(ue) ? (l(), d("div", to, [
|
|
1183
1183
|
ae(Le, {
|
|
1184
1184
|
"data-testid": "report-canvas-try-again",
|
|
1185
1185
|
variant: "primary",
|
|
1186
|
-
label: o(
|
|
1186
|
+
label: o(n)("reportV5.reportAi.build.failed.tryAgain"),
|
|
1187
1187
|
disabled: i.streaming || i.busy,
|
|
1188
1188
|
onClick: (Te) => r("askAgain", H(ue))
|
|
1189
1189
|
}, null, 8, ["label", "disabled", "onClick"]),
|
|
1190
1190
|
ae(Le, {
|
|
1191
1191
|
"data-testid": "report-canvas-edit-request",
|
|
1192
1192
|
variant: "secondary",
|
|
1193
|
-
label: o(
|
|
1193
|
+
label: o(n)("reportV5.reportAi.build.failed.editRequest"),
|
|
1194
1194
|
disabled: i.streaming || i.busy,
|
|
1195
1195
|
onClick: (Te) => Ne(H(ue))
|
|
1196
1196
|
}, null, 8, ["label", "disabled", "onClick"])
|
|
1197
1197
|
])) : L("", !0),
|
|
1198
|
-
D.failure.ref ? (l(), d("p", no, y(o(
|
|
1198
|
+
D.failure.ref ? (l(), d("p", no, y(o(n)("reportV5.reportAi.build.failed.ref", { ref: D.failure.ref })), 1)) : L("", !0)
|
|
1199
1199
|
])) : D.blocks.length ? (l(), ye(pr, {
|
|
1200
1200
|
key: 2,
|
|
1201
1201
|
"data-testid": "report-canvas-answer",
|
|
1202
1202
|
blocks: D.blocks,
|
|
1203
1203
|
preview: D.preview
|
|
1204
|
-
}, null, 8, ["blocks", "preview"])) : D.noSummary ? (l(), d("p", ao, y(o(
|
|
1205
|
-
D.ms ? (l(), d("p", ro, y(o(
|
|
1204
|
+
}, null, 8, ["blocks", "preview"])) : D.noSummary ? (l(), d("p", ao, y(o(n)("reportV5.reportAi.chat.noSummary")), 1)) : L("", !0),
|
|
1205
|
+
D.ms ? (l(), d("p", ro, y(o(n)("reportV5.reportAi.chat.took", { duration: o(ua)(D.ms) })), 1)) : L("", !0)
|
|
1206
1206
|
], 64))
|
|
1207
1207
|
]))), 128)),
|
|
1208
1208
|
ee.value ? (l(), ye(Jt, Ft({
|
|
@@ -1221,7 +1221,7 @@ const mr = (n) => Be(
|
|
|
1221
1221
|
"data-testid": "report-canvas-jump-latest",
|
|
1222
1222
|
class: "fm-typo-en-body-sm-600 absolute bottom-12 left-1/2 -translate-x-1/2 rounded-full border border-fm-color-border-secondary bg-fm-color-neutral-white px-12 py-4 shadow-sm",
|
|
1223
1223
|
onClick: Q
|
|
1224
|
-
}, y(o(
|
|
1224
|
+
}, y(o(n)("reportV5.reportAi.chat.jumpToLatest")), 1)) : L("", !0)
|
|
1225
1225
|
])),
|
|
1226
1226
|
v("div", io, [
|
|
1227
1227
|
ae(dr, {
|
|
@@ -1244,50 +1244,50 @@ const mr = (n) => Be(
|
|
|
1244
1244
|
};
|
|
1245
1245
|
}
|
|
1246
1246
|
}), co = /* @__PURE__ */ mt(fo, [["__scopeId", "data-v-7e36736a"]]);
|
|
1247
|
-
function Ue(
|
|
1247
|
+
function Ue(a) {
|
|
1248
1248
|
const { businessId: e } = qe(ut());
|
|
1249
1249
|
if (!e.value) throw new Error("Business Id is not defined");
|
|
1250
|
-
return `/${e.value}/report-canvas/${
|
|
1250
|
+
return `/${e.value}/report-canvas/${a}`;
|
|
1251
1251
|
}
|
|
1252
|
-
const Zt = (
|
|
1252
|
+
const Zt = (a) => {
|
|
1253
1253
|
const e = {
|
|
1254
1254
|
fetchType: Se.Get,
|
|
1255
|
-
url: Ue(
|
|
1255
|
+
url: Ue(a)
|
|
1256
1256
|
};
|
|
1257
1257
|
return _e.fetch(e);
|
|
1258
|
-
}, mo = (
|
|
1258
|
+
}, mo = (a, e, t, r, n, f) => {
|
|
1259
1259
|
const u = {
|
|
1260
1260
|
fetchType: Se.Post,
|
|
1261
|
-
url: `${Ue(
|
|
1261
|
+
url: `${Ue(a)}/query/${e}`,
|
|
1262
1262
|
// a draft-only query id does not exist on the published copy, so the state travels with it
|
|
1263
|
-
data: { params: t, timezone: r, state:
|
|
1263
|
+
data: { params: t, timezone: r, state: n },
|
|
1264
1264
|
requestConfig: { signal: f }
|
|
1265
1265
|
};
|
|
1266
1266
|
return _e.fetch(u);
|
|
1267
|
-
}, uo = (
|
|
1268
|
-
const
|
|
1267
|
+
}, uo = (a, e, t, r) => {
|
|
1268
|
+
const n = {
|
|
1269
1269
|
fetchType: Se.Post,
|
|
1270
|
-
url: `${Ue(
|
|
1270
|
+
url: `${Ue(a)}/section/${e}/ack`,
|
|
1271
1271
|
data: { ...t, state: r }
|
|
1272
1272
|
};
|
|
1273
|
-
return _e.fetch(
|
|
1274
|
-
}, po = (
|
|
1273
|
+
return _e.fetch(n);
|
|
1274
|
+
}, po = (a) => _e.fetch({
|
|
1275
1275
|
fetchType: Se.Post,
|
|
1276
|
-
url: `${Ue(
|
|
1276
|
+
url: `${Ue(a)}/publish`,
|
|
1277
1277
|
data: {}
|
|
1278
|
-
}), ho = (
|
|
1278
|
+
}), ho = (a) => _e.fetch({
|
|
1279
1279
|
fetchType: Se.Delete,
|
|
1280
|
-
url: `${Ue(
|
|
1281
|
-
}), bo = (
|
|
1280
|
+
url: `${Ue(a)}/draft`
|
|
1281
|
+
}), bo = (a, e) => _e.fetch({
|
|
1282
1282
|
fetchType: Se.Post,
|
|
1283
|
-
url: `${Ue(
|
|
1283
|
+
url: `${Ue(a)}/draft/undo`,
|
|
1284
1284
|
data: { turnId: e }
|
|
1285
|
-
}), go = (
|
|
1285
|
+
}), go = (a) => _e.fetch({
|
|
1286
1286
|
fetchType: Se.Get,
|
|
1287
|
-
url: `${Ue(
|
|
1288
|
-
}), vo = (
|
|
1287
|
+
url: `${Ue(a)}/versions`
|
|
1288
|
+
}), vo = (a, e) => _e.fetch({
|
|
1289
1289
|
fetchType: Se.Post,
|
|
1290
|
-
url: `${Ue(
|
|
1290
|
+
url: `${Ue(a)}/restore`,
|
|
1291
1291
|
data: { versionId: e }
|
|
1292
1292
|
}), yo = ["aria-label"], xo = { class: "flex h-64 shrink-0 items-center gap-12 border-b border-fm-color-border-secondary px-[20px]" }, wo = { class: "fm-typo-en-body-md-600 grow" }, ko = ["aria-label", "disabled"], _o = { class: "min-h-0 grow overflow-y-auto px-[20px] py-[20px]" }, So = { class: "fm-typo-en-body-md-400 mb-[20px] text-fm-color-typo-secondary" }, Io = { class: "mb-24 rounded-[12px] border border-fm-color-border-secondary p-16" }, Ao = { class: "mb-8 flex items-center gap-8" }, Co = { class: "fm-typo-en-body-md-600 grow" }, Eo = { class: "fm-typo-en-body-sm-600 rounded-md bg-fm-color-neutral-gray-100 px-8 py-4" }, To = {
|
|
1293
1293
|
key: 0,
|
|
@@ -1332,8 +1332,8 @@ const Zt = (n) => {
|
|
|
1332
1332
|
busy: { type: Boolean }
|
|
1333
1333
|
},
|
|
1334
1334
|
emits: ["close", "restored", "restoring"],
|
|
1335
|
-
setup(
|
|
1336
|
-
const t =
|
|
1335
|
+
setup(a, { emit: e }) {
|
|
1336
|
+
const t = a, r = e, { t: n, locale: f } = et(), u = (C, te = {}) => n(`reportV5.reportCanvas.history.${C}`, te), w = _([]), k = _(!0), x = _(!1), j = _(!1), R = _(!1), M = _(!1), T = _(), X = _(), I = _(), G = _(), q = V(() => w.value.find((C) => C.id === T.value)), h = V(() => t.hasDraft || t.busy || R.value);
|
|
1337
1337
|
let B = !0, ne = null;
|
|
1338
1338
|
function oe(C, te) {
|
|
1339
1339
|
const c = new Date(C);
|
|
@@ -1581,9 +1581,9 @@ const Zt = (n) => {
|
|
|
1581
1581
|
};
|
|
1582
1582
|
}
|
|
1583
1583
|
}), ri = /* @__PURE__ */ mt(ai, [["__scopeId", "data-v-7df5ac71"]]), oi = ["@from", "@to", "@locationIds", "@timezone"], Et = ["@from", "@to", "@locationIds"], ii = ["@timezone"], si = ["@locationIds"], li = 1, fi = 1500;
|
|
1584
|
-
function di(
|
|
1585
|
-
if (!(!(
|
|
1586
|
-
return Math.min(Math.max(
|
|
1584
|
+
function di(a) {
|
|
1585
|
+
if (!(!(a instanceof Un) || a.status !== 429))
|
|
1586
|
+
return Math.min(Math.max(a.retryAfterMs ?? fi, 500), 5e3);
|
|
1587
1587
|
}
|
|
1588
1588
|
const en = {
|
|
1589
1589
|
"en-US": qn,
|
|
@@ -1591,19 +1591,19 @@ const en = {
|
|
|
1591
1591
|
"zh-CN": Bn,
|
|
1592
1592
|
"zh-Hant": Vn
|
|
1593
1593
|
};
|
|
1594
|
-
function ci(
|
|
1595
|
-
var
|
|
1596
|
-
const e = en[
|
|
1594
|
+
function ci(a) {
|
|
1595
|
+
var n, f;
|
|
1596
|
+
const e = en[a] ?? en["en-US"], t = {}, r = (u, w) => {
|
|
1597
1597
|
for (const [k, x] of Object.entries(u ?? {}))
|
|
1598
1598
|
typeof x == "string" ? t[`${w}${k}`] = x : x && typeof x == "object" && r(x, `${w}${k}.`);
|
|
1599
1599
|
};
|
|
1600
|
-
return r(((f = (
|
|
1600
|
+
return r(((f = (n = e == null ? void 0 : e.reportV5) == null ? void 0 : n.reportCanvas) == null ? void 0 : f.frame) ?? {}, ""), t;
|
|
1601
1601
|
}
|
|
1602
|
-
function tn(
|
|
1603
|
-
return
|
|
1602
|
+
function tn(a) {
|
|
1603
|
+
return a == null ? !0 : Array.isArray(a) ? a.length === 0 : a === "";
|
|
1604
1604
|
}
|
|
1605
|
-
function mi(
|
|
1606
|
-
const e = Nt(), { dateRange: t, selectedLocationIds: r, locations:
|
|
1605
|
+
function mi(a) {
|
|
1606
|
+
const e = Nt(), { dateRange: t, selectedLocationIds: r, locations: n, timezone: f } = qe(e), { country: u } = qe(ut()), w = _({}), k = _([]), x = _({}), j = Ln({}), R = _(), M = _([]), T = [], X = [], I = { ids: "[]", date: "" };
|
|
1607
1607
|
let G = !1;
|
|
1608
1608
|
const q = {}, h = {};
|
|
1609
1609
|
fn() && dn(() => Object.values(h).forEach((c) => c.abort()));
|
|
@@ -1624,7 +1624,7 @@ function mi(n) {
|
|
|
1624
1624
|
O["@from"] = t.value.startDate ?? null, O["@to"] = t.value.endDate ?? null, O["@timezone"] = f.value, O["@locationIds"] = [...r.value], w.value = O, x.value = {}, H();
|
|
1625
1625
|
}
|
|
1626
1626
|
function A() {
|
|
1627
|
-
return
|
|
1627
|
+
return n.value.map((c) => c.id);
|
|
1628
1628
|
}
|
|
1629
1629
|
function p() {
|
|
1630
1630
|
return { startDate: t.value.startDate, endDate: t.value.endDate };
|
|
@@ -1653,7 +1653,7 @@ function mi(n) {
|
|
|
1653
1653
|
JSON.stringify(p()) !== I.date && (O["@from"] = t.value.startDate ?? null, O["@to"] = t.value.endDate ?? null), JSON.stringify(c) !== I.ids ? (O["@locationIds"] = c, delete F["@locationIds"]) : F["@locationIds"] === "all" && (O["@locationIds"] = A()), Object.keys(O).length && Ne(O, F);
|
|
1654
1654
|
}
|
|
1655
1655
|
function ee() {
|
|
1656
|
-
ge([t, r,
|
|
1656
|
+
ge([t, r, n], () => {
|
|
1657
1657
|
G && re();
|
|
1658
1658
|
});
|
|
1659
1659
|
}
|
|
@@ -1663,7 +1663,7 @@ function mi(n) {
|
|
|
1663
1663
|
function Ce() {
|
|
1664
1664
|
const c = Jn() || "en-US";
|
|
1665
1665
|
return {
|
|
1666
|
-
locations:
|
|
1666
|
+
locations: n.value.map((O) => ({
|
|
1667
1667
|
id: O.id,
|
|
1668
1668
|
name: O.name || O.id,
|
|
1669
1669
|
code: O.code
|
|
@@ -1701,7 +1701,7 @@ function mi(n) {
|
|
|
1701
1701
|
for (let P = 0; ; P++)
|
|
1702
1702
|
try {
|
|
1703
1703
|
const i = await mo(
|
|
1704
|
-
|
|
1704
|
+
a,
|
|
1705
1705
|
c.id,
|
|
1706
1706
|
O,
|
|
1707
1707
|
f.value,
|
|
@@ -1819,8 +1819,8 @@ function mi(n) {
|
|
|
1819
1819
|
}
|
|
1820
1820
|
const ui = `:root{--fm-palette-brand-fm-100:#fff3e6;--fm-palette-brand-fm-200:#ff9455;--fm-palette-brand-fm-300:#ff7823;--fm-palette-brand-fm-400:#b25300;--fm-palette-brand-fm-500:#6b3100;--fm-palette-aqua-100:#b7e2ff;--fm-palette-aqua-300:#3ab0ff;--fm-palette-aqua-500:#0a5384;--fm-palette-berry-100:#fee4dc;--fm-palette-berry-300:#e94850;--fm-palette-berry-500:#5f090a;--fm-palette-blossom-100:#fff7fc;--fm-palette-blossom-300:#ffc4c3;--fm-palette-blossom-500:#8c146a;--fm-palette-lime-100:#f4fde6;--fm-palette-lime-300:#aeef4b;--fm-palette-lime-500:#306a01;--fm-palette-mustard-100:#fef5ea;--fm-palette-mustard-300:#ffc746;--fm-palette-mustard-500:#903e1f;--fm-palette-stone-100:#f6f8fc;--fm-palette-stone-300:#b2b3b6;--fm-palette-stone-500:#2e2e2e;--fm-palette-grape-100:#eddfff;--fm-palette-grape-300:#8f61e8;--fm-palette-grape-500:#512191;--fm-palette-neurastone-0:#fff;--fm-palette-neurastone-100:#f6f6f8;--fm-palette-neurastone-200:#f0f0f0;--fm-palette-neurastone-300:#b2b3b6;--fm-palette-neurastone-400:#6b6c70;--fm-palette-neurastone-500:#4b4b4b;--fm-palette-neurastone-600:#2e2e2e;--fm-palette-neurastone-700:#262628;--fm-palette-neurastone-800:#1c1c1e;--fm-palette-neurastone-900:#121212;--fm-palette-blue-100:#e6f2ff;--fm-palette-blue-200:#66afff;--fm-palette-blue-300:#007aff;--fm-palette-blue-400:#004999;--fm-palette-blue-500:#002c5c;--fm-palette-orange-100:#fff4e6;--fm-palette-orange-200:#ffbf66;--fm-palette-orange-300:#ff9500;--fm-palette-orange-400:#995900;--fm-palette-orange-500:#5c3500;--fm-palette-green-100:#ebf9ee;--fm-palette-green-200:#85dd9b;--fm-palette-green-300:#34c759;--fm-palette-green-400:#1f7735;--fm-palette-green-500:#134720;--fm-palette-red-100:#ffebea;--fm-palette-red-200:#ff8983;--fm-palette-red-300:#ff3b30;--fm-palette-red-400:#99231d;--fm-palette-red-500:#5c1511;--fm-palette-overlay-black-alpha-4:#1212120a;--fm-palette-overlay-black-alpha-8:#12121214;--fm-palette-overlay-black-alpha-12:#1212121f;--fm-palette-overlay-black-alpha-16:#12121229;--fm-palette-overlay-black-alpha-24:#1212123d;--fm-palette-overlay-black-alpha-32:#12121252;--fm-palette-overlay-black-alpha-48:#1212127a;--fm-palette-overlay-black-alpha-64:#121212a3;--fm-palette-overlay-black-alpha-72:#121212b8;--fm-palette-overlay-black-alpha-80:#121212cc;--fm-palette-overlay-white-alpha-4:#ffffff0a;--fm-palette-overlay-white-alpha-8:#ffffff14;--fm-palette-overlay-white-alpha-12:#ffffff1f;--fm-palette-overlay-white-alpha-16:#ffffff29;--fm-palette-overlay-white-alpha-24:#ffffff3d;--fm-palette-overlay-white-alpha-32:#ffffff52;--fm-palette-overlay-white-alpha-48:#ffffff7a;--fm-palette-overlay-white-alpha-64:#ffffffa3;--fm-palette-overlay-white-alpha-72:#ffffffb8;--fm-palette-overlay-white-alpha-80:#fffc;--fm-spacing-0:0;--fm-spacing-1:1px;--fm-spacing-2:2px;--fm-spacing-4:4px;--fm-spacing-6:6px;--fm-spacing-8:8px;--fm-spacing-10:10px;--fm-spacing-12:12px;--fm-spacing-14:14px;--fm-spacing-16:16px;--fm-spacing-18:18px;--fm-spacing-20:20px;--fm-spacing-24:24px;--fm-spacing-28:28px;--fm-spacing-32:32px;--fm-spacing-40:40px;--fm-spacing-48:48px;--fm-spacing-56:56px;--fm-spacing-64:64px;--fm-spacing-72:72px;--fm-spacing-80:80px;--fm-spacing-88:88px;--fm-spacing-96:96px;--fm-spacing-104:104px;--fm-spacing-112:112px;--fm-spacing-120:120px;--fm-spacing-128:128px;--fm-spacing-160:160px;--fm-spacing-192:192px;--fm-radius-none:0;--fm-radius-xs:4px;--fm-radius-sm:8px;--fm-radius-md:12px;--fm-radius-lg:16px;--fm-radius-xl:24px;--fm-radius-2xl:32px;--fm-radius-3xl:64px;--fm-radius-full:99999px;--fm-border-width-none:0;--fm-border-width-hairline:.5px;--fm-border-width-thin:1px;--fm-border-width-regular:1.5px;--fm-border-width-medium:2px;--fm-border-width-thick:4px;--fm-opacity-0:0;--fm-opacity-8:.08;--fm-opacity-12:.12;--fm-opacity-16:.16;--fm-opacity-24:.24;--fm-opacity-32:.32;--fm-opacity-40:.4;--fm-opacity-48:.48;--fm-opacity-56:.56;--fm-opacity-64:.64;--fm-opacity-80:.8;--fm-opacity-100:1;--fm-shadow-blur-none:0;--fm-shadow-blur-xs:2px;--fm-shadow-blur-sm:4px;--fm-shadow-blur-md:6px;--fm-shadow-blur-lg:10px;--fm-shadow-blur-xl:16px;--fm-shadow-blur-2xl:24px;--fm-blur-sm:8px;--fm-blur-md:16px;--fm-blur-lg:24px;--fm-blur-xl:40px;--fm-z-index-base:0;--fm-z-index-raised:100;--fm-z-index-dropdown:200;--fm-z-index-sticky:300;--fm-z-index-overlay:400;--fm-z-index-modal:500;--fm-z-index-toast:600;--fm-z-index-tooltip:700;--fm-duration-instant:0s;--fm-duration-fast:.1s;--fm-duration-normal:.2s;--fm-duration-slow:.3s;--fm-duration-slower:.5s;--fm-easing-standard:cubic-bezier(.4, 0, .2, 1);--fm-easing-decelerate:cubic-bezier(0, 0, .2, 1);--fm-easing-accelerate:cubic-bezier(.4, 0, 1, 1);--fm-easing-spring:cubic-bezier(.34, 1.56, .64, 1);--fm-shadow-color:#1c1c1e;--fm-breakpoint-sm:0;--fm-breakpoint-md:768px;--fm-breakpoint-lg:1024px;--fm-breakpoint-xl:1440px;--fm-breakpoint-xxl:1920px}:root,[data-fm-theme=light]{--fm-bg-canvas:#f6f6f8;--fm-bg-default:#fff;--fm-bg-subtle:#f6f6f8;--fm-bg-muted:#f0f0f0;--fm-bg-elevated:#fff;--fm-bg-inverse:#1c1c1e;--fm-bg-brand:#fff3e6;--fm-bg-success:#ebf9ee;--fm-bg-warning:#fff4e6;--fm-bg-error:#ffebea;--fm-bg-info:#e6f2ff;--fm-surface-default:#fff;--fm-surface-sunken:#f0f0f0;--fm-surface-inset:#b2b3b6;--fm-surface-raised:#fff;--fm-surface-floating:#fff;--fm-text-primary:#1c1c1e;--fm-text-secondary:#4b4b4b;--fm-text-muted:#6b6c70;--fm-text-disabled:#b2b3b6;--fm-text-inverse:#fff;--fm-text-on-inset:#fff;--fm-text-link:#007aff;--fm-text-brand:#ff7823;--fm-text-success:#1f7735;--fm-text-warning:#995900;--fm-text-error:#99231d;--fm-icon-primary:#1c1c1e;--fm-icon-secondary:#4b4b4b;--fm-icon-muted:#6b6c70;--fm-icon-disabled:#b2b3b6;--fm-icon-inverse:#fff;--fm-icon-link:#007aff;--fm-icon-brand:#ff7823;--fm-icon-success:#1f7735;--fm-icon-warning:#995900;--fm-icon-error:#99231d;--fm-icon-info:#004999;--fm-icon-on-brand:#b25300;--fm-icon-on-success:#1f7735;--fm-icon-on-warning:#995900;--fm-icon-on-error:#99231d;--fm-icon-on-info:#004999;--fm-text-info:#004999;--fm-border-default:#f0f0f0;--fm-border-subtle:#f6f6f8;--fm-border-medium:#b2b3b6;--fm-border-strong:#6b6c70;--fm-border-inverse:#fff;--fm-border-brand:#ff7823;--fm-border-success:#1f7735;--fm-border-warning:#995900;--fm-border-error:#99231d;--fm-border-info:#004999;--fm-overlay-scrim-1:#12121252;--fm-overlay-scrim-2:#1212127a;--fm-overlay-scrim-3:#121212a3;--fm-overlay-scrim-4:#121212b8;--fm-action-primary-bg:#ff7823;--fm-feature-aqua-bg:#b7e2ff;--fm-feature-aqua-accent:#3ab0ff;--fm-feature-aqua-fg:#0a5384;--fm-feature-berry-bg:#fee4dc;--fm-feature-berry-accent:#e94850;--fm-feature-berry-fg:#5f090a;--fm-feature-blossom-bg:#fff7fc;--fm-feature-blossom-accent:#ffc4c3;--fm-feature-blossom-fg:#8c146a;--fm-feature-lime-bg:#f4fde6;--fm-feature-lime-accent:#aeef4b;--fm-feature-lime-fg:#306a01;--fm-feature-mustard-bg:#fef5ea;--fm-feature-mustard-accent:#ffc746;--fm-feature-mustard-fg:#903e1f;--fm-feature-stone-bg:#f6f8fc;--fm-feature-stone-accent:#b2b3b6;--fm-feature-stone-fg:#2e2e2e;--fm-feature-grape-bg:#eddfff;--fm-feature-grape-accent:#8f61e8;--fm-feature-grape-fg:#512191;--fm-state-subtle:#1212120a;--fm-state-hover:#12121214;--fm-state-pressed:#1212121f;--fm-state-selected:#12121229;--fm-state-dragged:#1212123d;--fm-action-primary-bg-hover:#b25300;--fm-action-primary-bg-subtle:#fff3e6;--fm-action-primary-fg:#1c1c1e;--fm-action-secondary-bg:#fff;--fm-action-secondary-bg-hover:#f6f6f8;--fm-action-secondary-fg:#1c1c1e;--fm-action-ghost-bg-hover:#f6f6f8;--fm-action-ghost-bg-active:#f0f0f0;--fm-action-danger-bg:#ff3b30;--fm-action-danger-bg-hover:#99231d;--fm-action-danger-bg-subtle:#ffebea;--fm-action-danger-fg:#1c1c1e;--fm-action-disabled-bg:#f0f0f0;--fm-action-disabled-fg:#6b6c70;--fm-text-on-brand:#b25300;--fm-text-on-success:#1f7735;--fm-text-on-warning:#995900;--fm-text-on-error:#99231d;--fm-text-on-info:#004999;--fm-badge-bg-aqua:#b7e2ff;--fm-badge-text-on-aqua:#0a5384;--fm-badge-icon-on-aqua:#0a5384;--fm-badge-border-aqua:#0a5384;--fm-badge-bg-berry:#fee4dc;--fm-badge-bg-blossom:#fff7fc;--fm-badge-bg-lime:#f4fde6;--fm-badge-bg-mustard:#fef5ea;--fm-badge-bg-stone:#f6f8fc;--fm-badge-bg-grape:#eddfff;--fm-badge-border-blossom:#8c146a;--fm-badge-text-on-blossom:#8c146a;--fm-badge-icon-on-blossom:#8c146a;--fm-badge-border-berry:#5f090a;--fm-badge-text-on-berry:#5f090a;--fm-badge-icon-on-berry:#5f090a;--fm-badge-border-lime:#306a01;--fm-badge-text-on-lime:#306a01;--fm-badge-icon-on-lime:#306a01;--fm-badge-border-mustard:#903e1f;--fm-badge-text-on-mustard:#903e1f;--fm-badge-icon-on-mustard:#903e1f;--fm-badge-border-stone:#2e2e2e;--fm-badge-text-on-stone:#2e2e2e;--fm-badge-icon-on-stone:#2e2e2e;--fm-badge-border-grape:#512191;--fm-badge-text-on-grape:#512191;--fm-badge-icon-on-grape:#512191;--fm-badge-bg-brand:#fff3e6;--fm-badge-border-brand:#ff7823;--fm-badge-text-on-brand:#ff7823;--fm-badge-icon-on-brand:#ff7823}[data-fm-theme=dark]{--fm-bg-canvas:#121212;--fm-bg-default:#1c1c1e;--fm-bg-subtle:#262628;--fm-bg-muted:#2e2e2e;--fm-bg-elevated:#262628;--fm-bg-inverse:#fff;--fm-bg-brand:#b25300;--fm-bg-success:#1f7735;--fm-bg-warning:#995900;--fm-bg-error:#99231d;--fm-bg-info:#004999;--fm-surface-default:#262628;--fm-surface-sunken:#121212;--fm-surface-inset:#1c1c1e;--fm-surface-raised:#2e2e2e;--fm-surface-floating:#4b4b4b;--fm-text-primary:#fff;--fm-text-secondary:#b2b3b6;--fm-text-muted:#6b6c70;--fm-text-disabled:#4b4b4b;--fm-text-inverse:#1c1c1e;--fm-text-on-inset:#fff;--fm-text-link:#66afff;--fm-text-brand:#fff3e6;--fm-text-success:#85dd9b;--fm-text-warning:#ffbf66;--fm-text-error:#ff8983;--fm-icon-primary:#fff;--fm-icon-secondary:#b2b3b6;--fm-icon-muted:#6b6c70;--fm-icon-disabled:#4b4b4b;--fm-icon-inverse:#1c1c1e;--fm-icon-link:#66afff;--fm-icon-brand:#fff3e6;--fm-icon-success:#85dd9b;--fm-icon-warning:#ffbf66;--fm-icon-error:#ff8983;--fm-icon-info:#66afff;--fm-icon-on-brand:#fff3e6;--fm-icon-on-success:#ebf9ee;--fm-icon-on-warning:#fff4e6;--fm-icon-on-error:#ffebea;--fm-icon-on-info:#e6f2ff;--fm-text-info:#66afff;--fm-border-default:#2e2e2e;--fm-border-subtle:#262628;--fm-border-medium:#b2b3b6;--fm-border-strong:#f6f6f8;--fm-border-inverse:#1c1c1e;--fm-border-brand:#fff3e6;--fm-border-success:#85dd9b;--fm-border-warning:#ffbf66;--fm-border-error:#ff8983;--fm-border-info:#66afff;--fm-overlay-scrim-1:#1212127a;--fm-overlay-scrim-2:#121212a3;--fm-overlay-scrim-3:#121212b8;--fm-overlay-scrim-4:#121212cc;--fm-action-primary-bg:#ff7823;--fm-feature-aqua-bg:#0a5384;--fm-feature-aqua-accent:#3ab0ff;--fm-feature-aqua-fg:#b7e2ff;--fm-feature-berry-bg:#5f090a;--fm-feature-berry-accent:#e94850;--fm-feature-berry-fg:#fee4dc;--fm-feature-blossom-bg:#8c146a;--fm-feature-blossom-accent:#ffc4c3;--fm-feature-blossom-fg:#fff7fc;--fm-feature-lime-bg:#306a01;--fm-feature-lime-accent:#aeef4b;--fm-feature-lime-fg:#f4fde6;--fm-feature-mustard-bg:#903e1f;--fm-feature-mustard-accent:#ffc746;--fm-feature-mustard-fg:#fef5ea;--fm-feature-stone-bg:#2e2e2e;--fm-feature-stone-accent:#b2b3b6;--fm-feature-stone-fg:#f6f8fc;--fm-feature-grape-bg:#512191;--fm-feature-grape-accent:#8f61e8;--fm-feature-grape-fg:#eddfff;--fm-state-subtle:#ffffff0a;--fm-state-hover:#ffffff14;--fm-state-pressed:#ffffff1f;--fm-state-selected:#ffffff29;--fm-state-dragged:#ffffff3d;--fm-action-primary-bg-hover:#b25300;--fm-action-primary-bg-subtle:#6b3100;--fm-action-primary-fg:#1c1c1e;--fm-action-secondary-bg:#262628;--fm-action-secondary-bg-hover:#2e2e2e;--fm-action-secondary-fg:#fff;--fm-action-ghost-bg-hover:#262628;--fm-action-ghost-bg-active:#2e2e2e;--fm-action-danger-bg:#ff3b30;--fm-action-danger-bg-hover:#99231d;--fm-action-danger-bg-subtle:#5c1511;--fm-action-danger-fg:#1c1c1e;--fm-action-disabled-bg:#2e2e2e;--fm-action-disabled-fg:#6b6c70;--fm-text-on-brand:#fff3e6;--fm-text-on-success:#ebf9ee;--fm-text-on-warning:#fff4e6;--fm-text-on-error:#ffebea;--fm-text-on-info:#e6f2ff;--fm-badge-bg-aqua:#0a5384;--fm-badge-text-on-aqua:#b7e2ff;--fm-badge-icon-on-aqua:#b7e2ff;--fm-badge-border-aqua:#3ab0ff;--fm-badge-bg-berry:#5f090a;--fm-badge-bg-blossom:#8c146a;--fm-badge-bg-lime:#306a01;--fm-badge-bg-mustard:#903e1f;--fm-badge-bg-stone:#2e2e2e;--fm-badge-bg-grape:#512191;--fm-badge-border-blossom:#ffc4c3;--fm-badge-text-on-blossom:#fff7fc;--fm-badge-icon-on-blossom:#fff7fc;--fm-badge-border-berry:#e94850;--fm-badge-text-on-berry:#fee4dc;--fm-badge-icon-on-berry:#fee4dc;--fm-badge-border-lime:#aeef4b;--fm-badge-text-on-lime:#f4fde6;--fm-badge-icon-on-lime:#f4fde6;--fm-badge-border-mustard:#ffc746;--fm-badge-text-on-mustard:#fef5ea;--fm-badge-icon-on-mustard:#fef5ea;--fm-badge-border-stone:#b2b3b6;--fm-badge-text-on-stone:#f6f8fc;--fm-badge-icon-on-stone:#f6f8fc;--fm-badge-border-grape:#8f61e8;--fm-badge-text-on-grape:#eddfff;--fm-badge-icon-on-grape:#eddfff;--fm-badge-bg-brand:#6b3100;--fm-badge-border-brand:#ff7823;--fm-badge-text-on-brand:#fff3e6;--fm-badge-icon-on-brand:#fff3e6}:root{--fm-font-size-8:8px;--fm-font-size-10:10px;--fm-font-size-12:12px;--fm-font-size-14:14px;--fm-font-size-16:16px;--fm-font-size-18:18px;--fm-font-size-22:22px;--fm-font-size-26:26px;--fm-font-size-32:32px;--fm-font-size-36:36px;--fm-font-size-48:48px;--fm-font-size-60:60px;--fm-font-size-72:72px;--fm-font-family-heading:"Cabinet Grotesk";--fm-font-family-body:"Inter";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:12px;--fm-line-height-10:14px;--fm-line-height-12:16px;--fm-line-height-14:20px;--fm-line-height-16:24px;--fm-line-height-18:26px;--fm-line-height-22:30px;--fm-line-height-26:36px;--fm-line-height-32:40px;--fm-line-height-36:44px;--fm-line-height-48:56px;--fm-line-height-60:72px;--fm-line-height-72:80px}:root:lang(zh),[lang=zh]{--fm-font-family-heading:"Noto Sans SC";--fm-font-family-body:"Noto Sans SC";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:12px;--fm-line-height-10:14px;--fm-line-height-12:18px;--fm-line-height-14:20px;--fm-line-height-16:26px;--fm-line-height-18:26px;--fm-line-height-22:30px;--fm-line-height-26:36px;--fm-line-height-32:44px;--fm-line-height-36:46px;--fm-line-height-48:60px;--fm-line-height-60:76px;--fm-line-height-72:90px}:root:lang(th),[lang=th]{--fm-font-family-heading:"Noto Sans Thai";--fm-font-family-body:"Noto Sans Thai";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:14px;--fm-line-height-10:16px;--fm-line-height-12:20px;--fm-line-height-14:24px;--fm-line-height-16:28px;--fm-line-height-18:28px;--fm-line-height-22:32px;--fm-line-height-26:38px;--fm-line-height-32:46px;--fm-line-height-36:50px;--fm-line-height-48:64px;--fm-line-height-60:80px;--fm-line-height-72:96px}.fm-text-display-xl{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:72px;font-weight:900;line-height:80px}.fm-text-display-lg{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:60px;font-weight:900;line-height:72px}.fm-text-display-md{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:48px;font-weight:900;line-height:56px}.fm-text-display-sm{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:36px;font-weight:900;line-height:44px}.fm-text-title-xl{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:32px;font-weight:800;line-height:40px}.fm-text-title-lg{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:26px;font-weight:800;line-height:36px}.fm-text-title-md{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:22px;font-weight:800;line-height:30px}.fm-text-title-sm{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:18px;font-weight:800;line-height:26px}.fm-text-body-lg-600{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:600;line-height:24px}.fm-text-body-md-600{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:600;line-height:20px}.fm-text-body-sm-600{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:600;line-height:16px}.fm-text-body-xs-600{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:600;line-height:14px}.fm-text-body-overline-xs-600{letter-spacing:.1em;font-family:Inter,sans-serif;font-size:10px;font-weight:600;line-height:14px}.fm-text-body-overline-2xs-600{letter-spacing:.1em;font-family:Inter,sans-serif;font-size:8px;font-weight:600;line-height:12px}.fm-text-body-lg-500{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:500;line-height:24px}.fm-text-body-md-500{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:500;line-height:20px}.fm-text-body-sm-500{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:500;line-height:16px}.fm-text-body-xs-500{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:500;line-height:14px}.fm-text-body-lg-400{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:400;line-height:24px}.fm-text-body-md-400{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:20px}.fm-text-body-sm-400{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:400;line-height:16px}.fm-text-body-xs-400{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:400;line-height:14px}:root{--fm-shadow-light-xs:0 1px 2px 0 #1c1c1e0a;--fm-shadow-light-sm:0 2px 4px 0 #1c1c1e0f;--fm-shadow-light-md:0 4px 6px 0 #1c1c1e14;--fm-shadow-light-lg:0 6px 10px 0 #1c1c1e1a;--fm-shadow-light-xl:0 8px 16px 0 #1c1c1e1f;--fm-shadow-light-2xl:0 12px 24px 0 #1c1c1e24;--fm-shadow-light-top-sm:0 -2px 4px 0 #1c1c1e0f;--fm-shadow-light-top-md:0 -4px 6px 0 #1c1c1e14;--fm-shadow-light-side-left-md:-4px 0 6px 0 #1c1c1e14;--fm-shadow-light-side-right-md:4px 0 6px 0 #1c1c1e14;--fm-shadow-light-text-sm:0 1px 1px 0 #1c1c1e0d;--fm-shadow-light-text-md:0 1px 2px 0 #1c1c1e1a;--fm-shadow-light-text-lg:0 2px 4px 0 #1c1c1e26;--fm-shadow-light-text-xl:0 3px 6px 0 #1c1c1e33;--fm-shadow-dark-xs:0 1px 2px 0 #ffffff0a;--fm-shadow-dark-sm:0 2px 4px 0 #ffffff0f;--fm-shadow-dark-md:0 4px 6px 0 #ffffff14;--fm-shadow-dark-lg:0 6px 10px 0 #ffffff1a;--fm-shadow-dark-xl:0 8px 16px 0 #ffffff1f;--fm-shadow-dark-2xl:0 12px 24px 0 #ffffff24;--fm-shadow-dark-top-sm:0 -2px 4px 0 #ffffff0f;--fm-shadow-dark-top-md:0 -4px 6px 0 #ffffff14;--fm-shadow-dark-side-left-md:-4px 0 6px 0 #ffffff14;--fm-shadow-dark-side-right-md:4px 0 6px 0 #ffffff14;--fm-shadow-dark-text-sm:0 1px 1px 0 #ffffff0d;--fm-shadow-dark-text-md:0 1px 2px 0 #ffffff1a;--fm-shadow-dark-text-lg:0 2px 4px 0 #ffffff26;--fm-shadow-dark-text-xl:0 3px 6px 0 #fff3;--fm-outer-shadow-light-brand:0 0 0 4px #ff782352;--fm-outer-shadow-light-error:0 0 0 4px #ff3b3052;--fm-outer-shadow-dark-brand:0 0 0 4px #ff782366;--fm-outer-shadow-dark-error:0 0 0 4px #ff3b3066;--fm-inner-shadow-light-sm:inset 0 1px 2px 0 #1c1c1e0f;--fm-inner-shadow-light-md:inset 0 2px 4px 0 #1c1c1e1a;--fm-inner-shadow-light-brand:0 2px 4px 0 #1c1c1e14, inset 0 0 0 1.25px #1c1c1e1f;--fm-inner-shadow-dark-sm:inset 0 1px 2px 0 #ffffff0f;--fm-inner-shadow-dark-md:inset 0 2px 4px 0 #ffffff1a;--fm-inner-shadow-dark-brand:0 2px 4px 0 #ffffff14, inset 0 0 0 1.25px #ffffff1f;--fm-blur-sm:8px;--fm-blur-md:16px;--fm-blur-lg:24px;--fm-blur-xl:40px}:root,[data-fm-theme=light]{--fm-shadow-xs:var(--fm-shadow-light-xs);--fm-shadow-sm:var(--fm-shadow-light-sm);--fm-shadow-md:var(--fm-shadow-light-md);--fm-shadow-lg:var(--fm-shadow-light-lg);--fm-shadow-xl:var(--fm-shadow-light-xl);--fm-shadow-2xl:var(--fm-shadow-light-2xl);--fm-shadow-top-sm:var(--fm-shadow-light-top-sm);--fm-shadow-top-md:var(--fm-shadow-light-top-md);--fm-shadow-side-left-md:var(--fm-shadow-light-side-left-md);--fm-shadow-side-right-md:var(--fm-shadow-light-side-right-md);--fm-shadow-text-sm:var(--fm-shadow-light-text-sm);--fm-shadow-text-md:var(--fm-shadow-light-text-md);--fm-shadow-text-lg:var(--fm-shadow-light-text-lg);--fm-shadow-text-xl:var(--fm-shadow-light-text-xl);--fm-outer-shadow-brand:var(--fm-outer-shadow-light-brand);--fm-outer-shadow-error:var(--fm-outer-shadow-light-error);--fm-inner-shadow-sm:var(--fm-inner-shadow-light-sm);--fm-inner-shadow-md:var(--fm-inner-shadow-light-md);--fm-inner-shadow-brand:var(--fm-inner-shadow-light-brand)}[data-fm-theme=dark]{--fm-shadow-xs:var(--fm-shadow-dark-xs);--fm-shadow-sm:var(--fm-shadow-dark-sm);--fm-shadow-md:var(--fm-shadow-dark-md);--fm-shadow-lg:var(--fm-shadow-dark-lg);--fm-shadow-xl:var(--fm-shadow-dark-xl);--fm-shadow-2xl:var(--fm-shadow-dark-2xl);--fm-shadow-top-sm:var(--fm-shadow-dark-top-sm);--fm-shadow-top-md:var(--fm-shadow-dark-top-md);--fm-shadow-side-left-md:var(--fm-shadow-dark-side-left-md);--fm-shadow-side-right-md:var(--fm-shadow-dark-side-right-md);--fm-shadow-text-sm:var(--fm-shadow-dark-text-sm);--fm-shadow-text-md:var(--fm-shadow-dark-text-md);--fm-shadow-text-lg:var(--fm-shadow-dark-text-lg);--fm-shadow-text-xl:var(--fm-shadow-dark-text-xl);--fm-outer-shadow-brand:var(--fm-outer-shadow-dark-brand);--fm-outer-shadow-error:var(--fm-outer-shadow-dark-error);--fm-inner-shadow-sm:var(--fm-inner-shadow-dark-sm);--fm-inner-shadow-md:var(--fm-inner-shadow-dark-md);--fm-inner-shadow-brand:var(--fm-inner-shadow-dark-brand)}[data-fm-theme]{color:var(--fm-text-primary)}.fm-icon{width:var(--fm-icon-size,24px);height:var(--fm-icon-size,24px);font-size:var(--fm-icon-size,24px);vertical-align:middle;-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.fm-icon__svg{fill:none;width:100%;height:100%;display:block}.fm-icon--rounded,.fm-icon--outlined{text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:antialiased;text-rendering:optimizelegibility;direction:ltr;font-style:normal;font-weight:400}.fm-icon--rounded{font-family:Material Symbols Filled}.fm-icon--outlined{font-family:Material Symbols Outlined}.fm-alert{--fm-alert-surface:var(--fm-bg-inverse);--fm-alert-fg:var(--fm-text-inverse);--fm-alert-icon:var(--fm-icon-inverse);--fm-alert-progress:var(--fm-bg-default);--fm-alert-pad-x:var(--fm-spacing-16);--fm-alert-pad-y:var(--fm-spacing-12);box-sizing:border-box;border-radius:var(--fm-radius-lg);background-color:var(--fm-alert-surface);color:var(--fm-alert-fg);box-shadow:var(--fm-shadow-sm);flex-direction:column;display:flex;overflow:hidden}@media (width>=768px){.fm-alert{--fm-alert-pad-x:var(--fm-spacing-24);--fm-alert-pad-y:var(--fm-spacing-16)}}.fm-alert__body{align-items:center;gap:var(--fm-spacing-12);padding:var(--fm-alert-pad-y) var(--fm-alert-pad-x);display:flex}.fm-alert__icon{--fm-icon-size:32px;width:32px;height:32px;color:var(--fm-alert-icon);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-alert__danger-mark{width:var(--fm-spacing-24);height:var(--fm-spacing-24);border-radius:var(--fm-radius-full);background-color:var(--fm-alert-icon);justify-content:center;align-items:center;display:inline-flex}.fm-alert__danger-bar{width:var(--fm-spacing-12);height:var(--fm-border-width-medium);border-radius:var(--fm-radius-full);background-color:var(--fm-icon-inverse)}.fm-alert__text{flex-direction:column;flex:auto;min-width:0;display:flex}.fm-alert__close{--fm-icon-size:var(--fm-spacing-20);width:var(--fm-spacing-40);height:var(--fm-spacing-40);border-radius:var(--fm-radius-sm);color:var(--fm-alert-fg);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-alert__progress{border-radius:var(--fm-radius-full);background-color:var(--fm-alert-progress);height:2px}.fm-alert__progress--animated{transform-origin:0;animation:fm-alert-drain var(--fm-alert-duration,3s) linear forwards}@keyframes fm-alert-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.fm-alert--info{--fm-alert-surface:var(--fm-bg-info);--fm-alert-fg:var(--fm-text-on-info);--fm-alert-icon:var(--fm-icon-on-info);--fm-alert-progress:var(--fm-icon-on-info)}.fm-alert--success{--fm-alert-surface:var(--fm-bg-success);--fm-alert-fg:var(--fm-text-on-success);--fm-alert-icon:var(--fm-icon-on-success);--fm-alert-progress:var(--fm-icon-on-success)}.fm-alert--warning{--fm-alert-surface:var(--fm-bg-warning);--fm-alert-fg:var(--fm-text-on-warning);--fm-alert-icon:var(--fm-icon-on-warning);--fm-alert-progress:var(--fm-icon-on-warning)}.fm-alert--danger{--fm-alert-surface:var(--fm-bg-error);--fm-alert-fg:var(--fm-text-on-error);--fm-alert-icon:var(--fm-icon-on-error);--fm-alert-progress:var(--fm-icon-on-error)}.fm-badge{--fm-badge-gap:var(--fm-spacing-2);justify-content:center;align-items:center;gap:var(--fm-badge-gap);box-sizing:border-box;border-radius:var(--fm-radius-xs);background-color:var(--fm-badge-surface);color:var(--fm-badge-fg);padding:var(--fm-badge-pad-y) var(--fm-badge-pad-x);-webkit-user-select:none;user-select:none;display:inline-flex}.fm-badge__label{text-overflow:ellipsis;white-space:nowrap;text-align:center;min-width:0;overflow:hidden}.fm-badge__icon{color:var(--fm-badge-icon,var(--fm-badge-fg));flex:none;display:inline-flex}.fm-badge--sm{--fm-badge-pad-x:var(--fm-spacing-4);--fm-badge-pad-y:var(--fm-spacing-2);--fm-badge-count-size:16px}.fm-badge--md{--fm-badge-pad-x:var(--fm-spacing-6);--fm-badge-pad-y:var(--fm-spacing-4);--fm-badge-count-size:24px}.fm-badge--lg{--fm-badge-pad-x:var(--fm-spacing-8);--fm-badge-pad-y:var(--fm-spacing-4);--fm-badge-count-size:32px}.fm-badge--filled{--fm-badge-surface:var(--fm-badge-bg)}.fm-badge--outlined{--fm-badge-surface:transparent;box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-badge-border)}.fm-badge--count{--fm-badge-surface:var(--fm-action-primary-bg-subtle);--fm-badge-fg:var(--fm-text-brand);width:var(--fm-badge-count-size);height:var(--fm-badge-count-size);border-radius:calc(var(--fm-badge-count-size) / 2);padding:0}.fm-badge__count{line-height:1}.fm-badge--count-overflow{width:auto;min-width:var(--fm-badge-count-size);padding:0 calc(var(--fm-badge-count-size) * .375)}.fm-badge--brand{--fm-badge-bg:var(--fm-badge-bg-brand);--fm-badge-fg:var(--fm-badge-text-on-brand);--fm-badge-icon:var(--fm-badge-icon-on-brand);--fm-badge-border:var(--fm-badge-border-brand)}.fm-badge--info{--fm-badge-bg:var(--fm-bg-info);--fm-badge-fg:var(--fm-text-on-info);--fm-badge-icon:var(--fm-text-on-info);--fm-badge-border:var(--fm-border-info)}.fm-badge--success{--fm-badge-bg:var(--fm-bg-success);--fm-badge-fg:var(--fm-text-on-success);--fm-badge-icon:var(--fm-text-on-success);--fm-badge-border:var(--fm-border-success)}.fm-badge--warning{--fm-badge-bg:var(--fm-bg-warning);--fm-badge-fg:var(--fm-text-on-warning);--fm-badge-icon:var(--fm-text-on-warning);--fm-badge-border:var(--fm-border-warning)}.fm-badge--error{--fm-badge-bg:var(--fm-bg-error);--fm-badge-fg:var(--fm-text-on-error);--fm-badge-icon:var(--fm-text-on-error);--fm-badge-border:var(--fm-border-error)}.fm-badge--aqua{--fm-badge-bg:var(--fm-badge-bg-aqua);--fm-badge-fg:var(--fm-badge-text-on-aqua);--fm-badge-icon:var(--fm-badge-icon-on-aqua);--fm-badge-border:var(--fm-badge-border-aqua)}.fm-badge--berry{--fm-badge-bg:var(--fm-badge-bg-berry);--fm-badge-fg:var(--fm-badge-text-on-berry);--fm-badge-icon:var(--fm-badge-icon-on-berry);--fm-badge-border:var(--fm-badge-border-berry)}.fm-badge--blossom{--fm-badge-bg:var(--fm-badge-bg-blossom);--fm-badge-fg:var(--fm-badge-text-on-blossom);--fm-badge-icon:var(--fm-badge-icon-on-blossom);--fm-badge-border:var(--fm-badge-border-blossom)}.fm-badge--lime{--fm-badge-bg:var(--fm-badge-bg-lime);--fm-badge-fg:var(--fm-badge-text-on-lime);--fm-badge-icon:var(--fm-badge-icon-on-lime);--fm-badge-border:var(--fm-badge-border-lime)}.fm-badge--mustard{--fm-badge-bg:var(--fm-badge-bg-mustard);--fm-badge-fg:var(--fm-badge-text-on-mustard);--fm-badge-icon:var(--fm-badge-icon-on-mustard);--fm-badge-border:var(--fm-badge-border-mustard)}.fm-badge--stone{--fm-badge-bg:var(--fm-badge-bg-stone);--fm-badge-fg:var(--fm-badge-text-on-stone);--fm-badge-icon:var(--fm-badge-icon-on-stone);--fm-badge-border:var(--fm-badge-border-stone)}.fm-badge--grape{--fm-badge-bg:var(--fm-badge-bg-grape);--fm-badge-fg:var(--fm-badge-text-on-grape);--fm-badge-icon:var(--fm-badge-icon-on-grape);--fm-badge-border:var(--fm-badge-border-grape)}.fm-badge-anchor{align-items:center;gap:var(--fm-spacing-8);-webkit-user-select:none;user-select:none;display:inline-flex;position:relative}.fm-badge--overlay{--fm-badge-surface:var(--fm-text-primary);--fm-badge-fg:var(--fm-text-inverse);border-radius:var(--fm-radius-full);padding:0}.fm-badge--overlay-pinned{position:absolute;top:-2px;right:-4px}.fm-badge--overlay:not(.fm-badge--dot){min-width:16px;height:16px;padding:0 var(--fm-spacing-4)}.fm-badge--dot{width:6px;min-width:0;height:6px;padding:0}.fm-badge--overlay-pinned.fm-badge--dot{top:0;right:0}.fm-badge--v1-info{--fm-badge-surface:var(--fm-feature-aqua-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-success{--fm-badge-surface:var(--fm-feature-lime-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-warning{--fm-badge-surface:var(--fm-feature-mustard-accent);--fm-badge-fg:var(--fm-text-primary)}.fm-badge--v1-critical{--fm-badge-surface:var(--fm-feature-berry-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-neutral{--fm-badge-surface:var(--fm-text-primary);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-numeric{--fm-badge-surface:var(--fm-text-error);--fm-badge-fg:var(--fm-text-inverse)}.fm-button{--fm-button-height:44px;--fm-button-padding-x:var(--fm-spacing-16);--fm-button-gap:var(--fm-spacing-8);--fm-button-icon-size:var(--fm-spacing-20);--fm-button-radius:var(--fm-radius-sm);--fm-button-border-width:var(--fm-border-width-none);--fm-button-border-color:transparent;--fm-button-bg:transparent;--fm-button-bg-hover:var(--fm-button-bg);--fm-button-bg-active:var(--fm-button-bg-hover);--fm-button-fg:var(--fm-text-primary);--fm-button-effects:0 0 #0000;--fm-button-effects-pressed:var(--fm-button-effects);--fm-button-glow:0 0 #0000;--fm-button-focus-ring:0 0 #0000;box-sizing:border-box;justify-content:center;align-items:center;gap:var(--fm-button-gap);height:var(--fm-button-height);padding:0 var(--fm-button-padding-x);border:var(--fm-button-border-width) solid var(--fm-button-border-color);border-radius:var(--fm-button-radius);background-color:var(--fm-button-bg);color:var(--fm-button-fg);box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects);font-family:var(--fm-font-family-body), sans-serif;font-size:var(--fm-font-size-14);font-weight:var(--fm-font-weight-semi-bold);line-height:var(--fm-line-height-14);letter-spacing:.01em;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;appearance:none;-webkit-tap-highlight-color:transparent;background-image:none;text-decoration:none;display:inline-flex}.fm-button:focus{outline:none}.fm-button--xs{--fm-button-height:32px}.fm-button--sm{--fm-button-height:40px}.fm-button--md{--fm-button-height:44px}.fm-button--lg{--fm-button-height:52px}@media (width>=768px){.fm-button--xs{--fm-button-height:28px}.fm-button--sm{--fm-button-height:36px}.fm-button--md{--fm-button-height:40px}.fm-button--lg{--fm-button-height:48px}.fm-button:not(.fm-button--xs){font-size:var(--fm-font-size-16);line-height:var(--fm-line-height-16);letter-spacing:.0025em}}@media (width>=1024px){.fm-button--xs{--fm-button-height:24px}.fm-button--sm{--fm-button-height:32px}.fm-button--md{--fm-button-height:36px}.fm-button--lg{--fm-button-height:44px}}.fm-button--primary{--fm-button-bg:var(--fm-action-primary-bg);--fm-button-bg-hover:var(--fm-action-primary-bg-hover);--fm-button-fg:var(--fm-text-inverse);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--secondary{--fm-button-bg:var(--fm-action-secondary-bg);--fm-button-bg-hover:var(--fm-action-secondary-bg-hover);--fm-button-fg:var(--fm-text-primary);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-effects-pressed:0 0 #0000;--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--danger{--fm-button-bg:var(--fm-action-danger-bg);--fm-button-bg-hover:var(--fm-action-danger-bg-hover);--fm-button-fg:var(--fm-text-inverse);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-glow:var(--fm-outer-shadow-error)}.fm-button--ghost{--fm-button-bg:transparent;--fm-button-bg-hover:var(--fm-action-ghost-bg-hover);--fm-button-bg-active:var(--fm-action-ghost-bg-active);--fm-button-fg:var(--fm-text-primary);--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--legacy-plain{--fm-button-fg:var(--fm-text-brand)}.fm-button--legacy-fab{--fm-button-height:var(--fm-spacing-56);--fm-button-radius:var(--fm-radius-full);min-width:var(--fm-spacing-56);padding:0 var(--fm-spacing-16)}.fm-button:enabled:hover{background-color:var(--fm-button-bg-hover)}.fm-button:enabled:focus-visible{background-color:var(--fm-button-bg-hover);box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects), var(--fm-button-glow)}.fm-button--secondary:enabled:focus-visible{--fm-button-focus-ring:inset 0 0 0 1px var(--fm-border-brand)}.fm-button:enabled:active{background-color:var(--fm-button-bg-active);background-image:linear-gradient(var(--fm-state-pressed), var(--fm-state-pressed));box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects-pressed), var(--fm-button-glow)}.fm-button--ghost:enabled:active{background-image:none}.fm-button:disabled{--fm-button-bg:var(--fm-action-disabled-bg);--fm-button-fg:var(--fm-text-disabled);cursor:not-allowed}.fm-button--ghost:disabled{--fm-button-bg:transparent}.fm-button--loading{pointer-events:none}.fm-button__labels{display:contents}.fm-button__label,.fm-button__sub-label{overflow-wrap:anywhere;min-width:0}.fm-button__icon{width:var(--fm-button-icon-size);height:var(--fm-button-icon-size);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-button__icon>svg{width:100%;height:100%}.fm-button__icon--legacy{width:var(--fm-spacing-24);height:var(--fm-spacing-24)}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v232/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelbd5zrDAt.woff)format("woff");font-display:block}@font-face{font-family:Material Symbols Filled;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v232/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelbd5zrDAt.woff)format("woff");font-display:block}.fm-button__legacy-icon{font-size:var(--fm-spacing-24);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-style:normal;font-weight:400;line-height:1;display:inline-block}.fm-button__legacy-icon--outline{font-family:Material Symbols Outlined,sans-serif}.fm-button__legacy-icon--filled{font-family:Material Symbols Filled,sans-serif}.fm-button--icon-only{width:var(--fm-button-height);padding:0}.fm-button--layout-dotted,.fm-button--layout-spaced{width:100%}.fm-button--layout-dotted .fm-button__labels,.fm-button--layout-spaced .fm-button__labels{flex:auto;justify-content:space-between;align-items:center;min-width:0;display:flex}.fm-button__dot{background-color:#ffffff52;border-radius:50%;flex:none;width:4px;height:4px}.fm-button__spinner{--fm-button-spinner-size:18px;box-sizing:border-box;width:var(--fm-button-spinner-size);height:var(--fm-button-spinner-size);animation:fm-button-spin var(--fm-duration-slower,.6s) linear infinite;border:2px solid;border-top-color:#0000;border-radius:50%;flex:none}.fm-button--lg .fm-button__spinner{--fm-button-spinner-size:20px}.fm-button--md .fm-button__spinner{--fm-button-spinner-size:18px}.fm-button--sm .fm-button__spinner,.fm-button--xs .fm-button__spinner{--fm-button-spinner-size:16px}@keyframes fm-button-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.fm-button__spinner{animation-duration:2s}}.fm-checkbox{--fm-checkbox-size:24px;--fm-checkbox-surface:var(--fm-action-secondary-bg);--fm-checkbox-border:var(--fm-border-default);--fm-checkbox-glyph:var(--fm-icon-inverse);--fm-checkbox-glow:0 0 #0000;cursor:pointer;color:var(--fm-text-primary);align-items:center;gap:12px;display:inline-flex}.fm-checkbox--disabled{cursor:not-allowed}.fm-checkbox__box{box-sizing:border-box;width:var(--fm-checkbox-size);height:var(--fm-checkbox-size);border-radius:var(--fm-radius-sm);background-color:var(--fm-checkbox-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-shadow-xs);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.fm-checkbox__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-checkbox__glyph{--fm-icon-size:calc(var(--fm-checkbox-size) * 5 / 6);color:var(--fm-checkbox-glyph);pointer-events:none;position:relative}.fm-checkbox__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-checkbox__sublabel{color:var(--fm-text-secondary)}.fm-checkbox--sm{--fm-checkbox-size:24px}.fm-checkbox--md{--fm-checkbox-size:28px}.fm-checkbox--lg{--fm-checkbox-size:32px}@media (width>=1024px){.fm-checkbox--sm{--fm-checkbox-size:20px}.fm-checkbox--md{--fm-checkbox-size:24px}.fm-checkbox--lg{--fm-checkbox-size:28px}}.fm-checkbox:hover:not(.fm-checkbox--disabled):not(.fm-checkbox--selected){--fm-checkbox-border:var(--fm-border-medium)}.fm-checkbox--pressed:not(.fm-checkbox--disabled):not(.fm-checkbox--selected){--fm-checkbox-border:var(--fm-border-strong)}.fm-checkbox--error:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-border:var(--fm-border-error);--fm-checkbox-glyph:var(--fm-icon-error)}.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--selected):not(.fm-checkbox--disabled){--fm-checkbox-glow:var(--fm-outer-shadow-error)}.fm-checkbox--selected:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-primary-bg);--fm-checkbox-border:transparent;--fm-checkbox-glyph:var(--fm-icon-inverse)}.fm-checkbox--selected.fm-checkbox--pressed:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-primary-bg-hover)}.fm-checkbox--selected.fm-checkbox--error:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-glyph:var(--fm-icon-error)}.fm-checkbox--selected.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-hover);--fm-checkbox-glyph:var(--fm-icon-inverse)}.fm-checkbox:has(.fm-checkbox__input:focus-visible):not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-secondary-bg);--fm-checkbox-border:var(--fm-border-brand);--fm-checkbox-glyph:var(--fm-action-primary-bg);--fm-checkbox-glow:var(--fm-outer-shadow-brand)}.fm-checkbox--error:has(.fm-checkbox__input:focus-visible):not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-border:var(--fm-border-error);--fm-checkbox-glyph:var(--fm-icon-error);--fm-checkbox-glow:var(--fm-outer-shadow-error)}.fm-checkbox--disabled{--fm-checkbox-surface:var(--fm-action-disabled-bg);--fm-checkbox-border:var(--fm-border-default);--fm-checkbox-glyph:var(--fm-icon-disabled)}.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--selected) .fm-checkbox__box{box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-checkbox-glow)}.fm-checkbox:has(.fm-checkbox__input:focus-visible) .fm-checkbox__box{box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-checkbox-glow)}.fm-chip{--fm-chip-height:36px;--fm-chip-surface:var(--fm-surface-default);--fm-chip-overlay:transparent;--fm-chip-border:var(--fm-border-default);--fm-chip-border-width:var(--fm-border-width-thin);--fm-chip-fg:var(--fm-text-primary);--fm-chip-icon:var(--fm-icon-primary);--fm-chip-accent:var(--fm-icon-brand);--fm-chip-glow:0 0 #0000;justify-content:center;align-items:center;gap:var(--fm-spacing-4);box-sizing:border-box;height:var(--fm-chip-height);padding:0 var(--fm-spacing-12);border-radius:var(--fm-radius-sm);background-color:var(--fm-chip-surface);background-image:linear-gradient(var(--fm-chip-overlay), var(--fm-chip-overlay));color:var(--fm-chip-fg);cursor:pointer;box-shadow:inset 0 0 0 var(--fm-chip-border-width) var(--fm-chip-border), var(--fm-shadow-xs);border:none;display:inline-flex}.fm-chip:disabled{cursor:not-allowed}.fm-chip__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.fm-chip__icon{--fm-icon-size:var(--fm-spacing-20);color:var(--fm-chip-icon);flex:none;display:inline-flex}.fm-chip__indicator-slot{width:var(--fm-spacing-20);height:var(--fm-spacing-20);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-chip__indicator{width:var(--fm-spacing-12);height:var(--fm-spacing-12);border-radius:var(--fm-radius-full);background-color:var(--fm-chip-accent)}.fm-chip__count{box-sizing:border-box;min-width:var(--fm-spacing-20);height:var(--fm-spacing-20);padding:0 var(--fm-spacing-4);border-radius:var(--fm-radius-full);background-color:var(--fm-chip-accent);color:var(--fm-text-inverse);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-chip__remove{--fm-icon-size:var(--fm-spacing-16);color:var(--fm-chip-icon);cursor:pointer;flex:none;display:inline-flex}.fm-chip:hover:not(:disabled){--fm-chip-overlay:var(--fm-state-hover)}.fm-chip--pressed:not(:disabled){--fm-chip-overlay:var(--fm-state-pressed)}.fm-chip:hover:not(:disabled):not(.fm-chip--selected),.fm-chip--pressed:not(:disabled):not(.fm-chip--selected){--fm-chip-border:var(--fm-border-medium)}.fm-chip--selected:not(:disabled){--fm-chip-border:var(--fm-border-brand);--fm-chip-border-width:var(--fm-border-width-regular)}.fm-chip:disabled{--fm-chip-surface:var(--fm-surface-sunken);--fm-chip-overlay:transparent;--fm-chip-border:var(--fm-border-medium);--fm-chip-fg:var(--fm-text-disabled);--fm-chip-icon:var(--fm-icon-disabled);--fm-chip-accent:var(--fm-border-medium)}.fm-chip:focus-visible{--fm-chip-border:var(--fm-border-brand);--fm-chip-border-width:var(--fm-border-width-regular);--fm-chip-glow:var(--fm-outer-shadow-brand);box-shadow:inset 0 0 0 var(--fm-chip-border-width) var(--fm-chip-border), var(--fm-chip-glow);outline:none}.fm-chip--compact{--fm-chip-height:22px;padding:0 var(--fm-spacing-8)}.fm-chip--v1-plain{--fm-chip-surface:var(--fm-bg-subtle);--fm-chip-border:transparent}.fm-chip--v1-plain.fm-chip--v1-selected{--fm-chip-surface:var(--fm-text-primary);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse)}.fm-chip--v1-neutral{--fm-chip-surface:var(--fm-text-primary);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-info{--fm-chip-surface:var(--fm-feature-aqua-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-success{--fm-chip-surface:var(--fm-feature-lime-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-critical{--fm-chip-surface:var(--fm-feature-berry-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-warning{--fm-chip-surface:var(--fm-feature-mustard-accent);--fm-chip-fg:var(--fm-text-primary);--fm-chip-icon:var(--fm-text-primary);--fm-chip-border:transparent}.fm-radio{--fm-radio-size:24px;--fm-radio-ring-width:var(--fm-border-width-thin);--fm-radio-surface:var(--fm-action-secondary-bg);--fm-radio-ring:var(--fm-border-default);--fm-radio-dot:var(--fm-action-primary-bg);--fm-radio-glow:0 0 #0000;align-items:center;gap:var(--fm-spacing-16);cursor:pointer;color:var(--fm-text-primary);display:inline-flex}.fm-radio--disabled{cursor:not-allowed}.fm-radio__circle{box-sizing:border-box;width:var(--fm-radio-size);height:var(--fm-radio-size);border-radius:var(--fm-radius-full);background-color:var(--fm-radio-surface);box-shadow:inset 0 0 0 var(--fm-radio-ring-width) var(--fm-radio-ring), var(--fm-shadow-xs);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.fm-radio__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-radio__dot{width:calc(var(--fm-radio-size) * 10 / 24);height:calc(var(--fm-radio-size) * 10 / 24);border-radius:var(--fm-radius-full);background-color:var(--fm-radio-dot);pointer-events:none}.fm-radio__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-radio__sublabel{color:var(--fm-text-secondary)}.fm-radio--sm{--fm-radio-size:24px;--fm-radio-selected-ring:1px}.fm-radio--md{--fm-radio-size:28px;--fm-radio-selected-ring:1.5px}.fm-radio--lg{--fm-radio-size:32px;--fm-radio-selected-ring:2.5px}@media (width>=1024px){.fm-radio--sm{--fm-radio-size:20px;--fm-radio-selected-ring:1px}.fm-radio--md{--fm-radio-size:24px;--fm-radio-selected-ring:1px}.fm-radio--lg{--fm-radio-size:28px;--fm-radio-selected-ring:1.5px}}.fm-radio--selected:not(.fm-radio--disabled){--fm-radio-ring:var(--fm-border-brand);--fm-radio-ring-width:var(--fm-radio-selected-ring)}.fm-radio:hover:not(.fm-radio--disabled):not(.fm-radio--selected){--fm-radio-ring:var(--fm-border-medium)}.fm-radio--pressed:not(.fm-radio--disabled):not(.fm-radio--selected){--fm-radio-ring:var(--fm-border-strong)}.fm-radio--selected.fm-radio--pressed:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-primary-bg-hover);--fm-radio-ring:transparent;--fm-radio-dot:#fff9}.fm-radio--error:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-subtle);--fm-radio-ring:var(--fm-border-error);--fm-radio-dot:var(--fm-border-error)}.fm-radio--error.fm-radio--selected.fm-radio--pressed:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-hover);--fm-radio-ring:transparent;--fm-radio-dot:#fff9}.fm-radio:has(.fm-radio__input:focus-visible):not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-secondary-bg);--fm-radio-ring:var(--fm-border-brand);--fm-radio-glow:var(--fm-outer-shadow-brand)}.fm-radio--error:has(.fm-radio__input:focus-visible):not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-subtle);--fm-radio-ring:var(--fm-border-error);--fm-radio-glow:var(--fm-outer-shadow-error)}.fm-radio--disabled{--fm-radio-surface:var(--fm-action-disabled-bg);--fm-radio-ring:transparent;--fm-radio-dot:var(--fm-icon-disabled)}.fm-radio:has(.fm-radio__input:focus-visible) .fm-radio__circle{box-shadow:inset 0 0 0 var(--fm-radio-ring-width) var(--fm-radio-ring), var(--fm-radio-glow)}.fm-radio-group{gap:var(--fm-spacing-8);flex-direction:column;display:flex}.fm-radio-group__label{color:var(--fm-text-primary)}.fm-radio-group__items{gap:var(--fm-spacing-8);flex-direction:column;display:flex}.fm-radio-group--inline>.fm-radio-group__items{align-items:center;gap:var(--fm-spacing-16);flex-direction:row}.fm-search-bar{--fm-search-height:44px;--fm-search-surface:var(--fm-surface-raised);--fm-search-border:var(--fm-border-default);--fm-search-fg:var(--fm-text-primary);--fm-search-placeholder:var(--fm-text-muted);--fm-search-icon:var(--fm-icon-primary);--fm-search-glow:0 0 #0000;--fm-search-shadow:var(--fm-shadow-text-sm);align-items:center;gap:var(--fm-spacing-12);box-sizing:border-box;width:100%;height:var(--fm-search-height);padding:0 var(--fm-spacing-8);border-radius:var(--fm-radius-md);background-color:var(--fm-search-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-search-border), var(--fm-search-shadow), var(--fm-search-glow);display:flex}.fm-search-bar__leading{--fm-icon-size:var(--fm-spacing-16);color:var(--fm-search-icon);flex:none;align-items:center;display:inline-flex}.fm-search-bar__control{min-width:0;height:20px;color:var(--fm-search-fg);appearance:none;background:0 0;border:none;outline:none;flex:auto;margin:0;padding:0}.fm-search-bar__control::placeholder{color:var(--fm-search-placeholder);opacity:1}.fm-search-bar__control::-webkit-search-cancel-button{appearance:none;display:none}.fm-search-bar__control::-webkit-search-decoration{appearance:none;display:none}.fm-search-bar__clear{--fm-icon-size:var(--fm-spacing-20);width:var(--fm-spacing-20);height:var(--fm-spacing-20);color:var(--fm-icon-muted);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-search-bar--sm{--fm-search-height:40px}.fm-search-bar--md{--fm-search-height:44px}.fm-search-bar--lg{--fm-search-height:52px}@media (width>=768px){.fm-search-bar--sm{--fm-search-height:36px}.fm-search-bar--md{--fm-search-height:40px}.fm-search-bar--lg{--fm-search-height:48px}}@media (width>=1024px){.fm-search-bar--sm{--fm-search-height:32px}.fm-search-bar--md{--fm-search-height:36px}.fm-search-bar--lg{--fm-search-height:44px}}.fm-search-bar:not(.fm-search-bar--disabled):hover{--fm-search-border:var(--fm-border-medium)}.fm-search-bar:not(.fm-search-bar--disabled):focus-within{--fm-search-border:var(--fm-border-brand);--fm-search-shadow:0 0 #0000;--fm-search-glow:var(--fm-outer-shadow-brand)}.fm-search-bar--error,.fm-search-bar--error:hover,.fm-search-bar--error:focus-within{--fm-search-border:var(--fm-border-error);--fm-search-fg:var(--fm-text-error);--fm-search-placeholder:var(--fm-text-error);--fm-search-icon:var(--fm-icon-error);--fm-search-shadow:0 0 #0000;--fm-search-glow:var(--fm-outer-shadow-error)}.fm-search-bar--disabled{--fm-search-surface:var(--fm-surface-sunken);--fm-search-border:var(--fm-border-default);--fm-search-fg:var(--fm-text-disabled);--fm-search-placeholder:var(--fm-text-disabled);--fm-search-icon:var(--fm-icon-disabled);--fm-search-shadow:0 0 #0000}.fm-search-bar--disabled .fm-search-bar__control{cursor:not-allowed}.fm-switch{--fm-switch-track-w:52px;--fm-switch-track-h:28px;--fm-switch-inset:2px;--fm-switch-thumb:calc(var(--fm-switch-track-h) - var(--fm-switch-inset) * 2);--fm-switch-travel:calc(var(--fm-switch-track-w) - var(--fm-switch-thumb) - var(--fm-switch-inset) * 2);--fm-switch-surface:var(--fm-action-disabled-bg);--fm-switch-thumb-color:var(--fm-border-medium);--fm-switch-icon:var(--fm-action-disabled-fg);--fm-switch-glow:0 0 #0000;align-items:center;gap:var(--fm-spacing-8);cursor:pointer;color:var(--fm-text-primary);display:inline-flex}.fm-switch--label-right{flex-direction:row-reverse}.fm-switch--disabled{cursor:not-allowed;opacity:.32}.fm-switch__track{box-sizing:border-box;width:var(--fm-switch-track-w);height:var(--fm-switch-track-h);border-radius:var(--fm-radius-full);background-color:var(--fm-switch-surface);box-shadow:var(--fm-shadow-sm);flex:none;display:inline-block;position:relative}.fm-switch__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-switch__thumb{top:var(--fm-switch-inset);left:var(--fm-switch-inset);width:var(--fm-switch-thumb);height:var(--fm-switch-thumb);border-radius:var(--fm-radius-full);background-color:var(--fm-switch-thumb-color);box-shadow:var(--fm-shadow-sm);transition:transform var(--fm-duration-fast,.15s) ease-in-out;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}.fm-switch__thumb-icon{--fm-icon-size:max(8px, calc(var(--fm-switch-thumb) - 8px));color:var(--fm-switch-icon)}.fm-switch__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-switch__sublabel{color:var(--fm-text-secondary)}.fm-switch--sm{--fm-switch-track-w:40px;--fm-switch-track-h:22px}.fm-switch--md{--fm-switch-track-w:52px;--fm-switch-track-h:28px}.fm-switch--lg{--fm-switch-track-w:60px;--fm-switch-track-h:32px}@media (width>=768px){.fm-switch--sm{--fm-switch-track-w:44px;--fm-switch-track-h:24px}}@media (width>=1024px){.fm-switch--sm{--fm-switch-track-w:32px;--fm-switch-track-h:18px}.fm-switch--md{--fm-switch-track-w:44px;--fm-switch-track-h:24px}.fm-switch--lg{--fm-switch-track-w:52px;--fm-switch-track-h:28px}}.fm-switch--on{--fm-switch-surface:var(--fm-action-primary-bg);--fm-switch-thumb-color:var(--fm-surface-raised);--fm-switch-icon:var(--fm-action-primary-bg)}.fm-switch--on .fm-switch__thumb{transform:translateX(var(--fm-switch-travel))}.fm-switch--on.fm-switch--pressed{--fm-switch-surface:var(--fm-action-primary-bg-hover)}.fm-switch--pressed:not(.fm-switch--on){--fm-switch-surface:var(--fm-action-disabled-fg)}.fm-switch:not(.fm-switch--on):has(.fm-switch__thumb-icon){--fm-switch-thumb-color:var(--fm-surface-raised)}.fm-switch:has(.fm-switch__input:focus-visible):not(.fm-switch--disabled){--fm-switch-glow:var(--fm-outer-shadow-brand)}.fm-switch:has(.fm-switch__input:focus-visible) .fm-switch__track{box-shadow:var(--fm-switch-glow)}.fm-field{--fm-field-pad-x:var(--fm-spacing-8);--fm-field-pad-y:var(--fm-spacing-12);--fm-field-radius:var(--fm-radius-md);--fm-field-surface:var(--fm-surface-raised);--fm-field-border:var(--fm-border-default);--fm-field-fg:var(--fm-text-primary);--fm-field-placeholder:var(--fm-text-muted);--fm-field-affix:var(--fm-icon-secondary);--fm-field-label:var(--fm-text-primary);--fm-field-helper:var(--fm-text-secondary);--fm-field-glow:0 0 #0000;--fm-field-shadow:var(--fm-shadow-xs);gap:var(--fm-spacing-4);flex-direction:column;width:100%;display:flex}.fm-field__label{align-items:baseline;gap:var(--fm-spacing-4);color:var(--fm-field-label);display:flex}.fm-field__mark{color:var(--fm-text-error)}.fm-field__box{align-items:center;gap:var(--fm-spacing-4);box-sizing:border-box;width:100%;padding:var(--fm-field-pad-y) var(--fm-field-pad-x);border-radius:var(--fm-field-radius);background-color:var(--fm-field-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-field-border), var(--fm-field-shadow), var(--fm-field-glow);display:flex}.fm-field__control{min-width:0;height:20px;color:var(--fm-field-fg);background:0 0;border:none;outline:none;flex:auto;margin:0;padding:0}.fm-field__control::placeholder{color:var(--fm-field-placeholder);opacity:1}.fm-field__affix{--fm-icon-size:var(--fm-spacing-20);color:var(--fm-field-affix);flex:none;align-items:center;display:inline-flex}.fm-field__footer{justify-content:space-between;gap:var(--fm-spacing-8);color:var(--fm-field-helper);display:flex}.fm-field__counter{margin-left:auto}.fm-field--single.fm-field--sm{--fm-field-pad-y:var(--fm-spacing-10)}.fm-field--single.fm-field--md{--fm-field-pad-y:var(--fm-spacing-12)}.fm-field--single.fm-field--lg{--fm-field-pad-y:var(--fm-spacing-16);--fm-field-radius:var(--fm-radius-lg)}.fm-field--multiline{--fm-field-pad-x:var(--fm-spacing-8);--fm-field-pad-y:var(--fm-spacing-8);--fm-field-radius:var(--fm-radius-md);--fm-field-height:128px}.fm-field--multiline>.fm-field__box{height:var(--fm-field-height);align-items:stretch}.fm-field--multiline .fm-field__control{resize:none;height:100%}.fm-field--multiline .fm-field__box{align-items:stretch}.fm-field--multiline.fm-field--sm{--fm-field-height:96px}.fm-field--multiline.fm-field--md{--fm-field-height:128px}.fm-field--multiline.fm-field--lg{--fm-field-height:160px}@media (width>=768px){.fm-field--multiline.fm-field--sm{--fm-field-height:128px}.fm-field--multiline.fm-field--md{--fm-field-height:160px}.fm-field--multiline.fm-field--lg{--fm-field-height:192px}}@media (width>=1024px){.fm-field--multiline.fm-field--sm{--fm-field-height:164px}.fm-field--multiline.fm-field--md{--fm-field-height:196px}.fm-field--multiline.fm-field--lg{--fm-field-height:228px}}.fm-field:not(.fm-field--disabled)>.fm-field__box:hover{--fm-field-border:var(--fm-border-medium)}.fm-field:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-brand);--fm-field-shadow:0 0 #0000;--fm-field-glow:var(--fm-outer-shadow-brand)}.fm-field--error:not(.fm-field--disabled){--fm-field-fg:var(--fm-text-error);--fm-field-placeholder:var(--fm-text-error);--fm-field-affix:var(--fm-text-error);--fm-field-label:var(--fm-text-error);--fm-field-helper:var(--fm-text-error)}.fm-field--error:not(.fm-field--disabled)>.fm-field__box,.fm-field--error:not(.fm-field--disabled)>.fm-field__box:hover,.fm-field--error:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-error);--fm-field-shadow:0 0 #0000;--fm-field-glow:var(--fm-outer-shadow-error)}.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box,.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box:hover,.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-warning)}.fm-field--disabled{--fm-field-surface:var(--fm-surface-sunken);--fm-field-border:var(--fm-border-default);--fm-field-fg:var(--fm-text-disabled);--fm-field-placeholder:var(--fm-text-disabled);--fm-field-affix:var(--fm-icon-disabled);--fm-field-label:var(--fm-text-disabled);--fm-field-helper:var(--fm-text-disabled)}.fm-field--disabled .fm-field__control{cursor:not-allowed}
|
|
1821
1821
|
/*$vite$:1*/`;
|
|
1822
|
-
function pi(
|
|
1823
|
-
const e =
|
|
1822
|
+
function pi(a) {
|
|
1823
|
+
const e = a.replace(/^\//, "");
|
|
1824
1824
|
try {
|
|
1825
1825
|
const t = new URL(import.meta.url);
|
|
1826
1826
|
if (typeof location < "u" && location.hostname !== t.hostname)
|
|
@@ -1832,61 +1832,66 @@ function pi(n) {
|
|
|
1832
1832
|
const un = {
|
|
1833
1833
|
"chart.js@4": "chart.js-4.js",
|
|
1834
1834
|
"fm-ui@1": "fm-ui-1.js",
|
|
1835
|
-
"components@1": "components-1.js"
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1835
|
+
"components@1": "components-1.js",
|
|
1836
|
+
"chartjs-chart-geo@4": "chartjs-chart-geo-4.js",
|
|
1837
|
+
"geo-outlines@1": "geo-outlines-1.js",
|
|
1838
|
+
"chartjs-chart-sankey@0": "chartjs-chart-sankey-0.js"
|
|
1839
|
+
}, hi = Object.keys(un), Tt = /* @__PURE__ */ new Map();
|
|
1840
|
+
function bi(a) {
|
|
1841
|
+
return pi(`report-canvas-libs/${un[a]}`);
|
|
1839
1842
|
}
|
|
1840
|
-
async function nn(
|
|
1841
|
-
const e =
|
|
1842
|
-
|
|
1843
|
+
async function nn(a) {
|
|
1844
|
+
const e = hi.filter((r) => a.includes(r));
|
|
1845
|
+
await Promise.all(
|
|
1843
1846
|
e.map(async (r) => {
|
|
1844
|
-
if (
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
Tt.set(r, await f.text());
|
|
1848
|
-
}
|
|
1849
|
-
const a = Tt.get(r);
|
|
1850
|
-
a && (t[r] = a);
|
|
1847
|
+
if (Tt.has(r)) return;
|
|
1848
|
+
const n = await fetch(bi(r));
|
|
1849
|
+
n.ok && Tt.set(r, await n.text());
|
|
1851
1850
|
})
|
|
1852
|
-
)
|
|
1851
|
+
);
|
|
1852
|
+
const t = {};
|
|
1853
|
+
for (const r of e) {
|
|
1854
|
+
const n = Tt.get(r);
|
|
1855
|
+
n && (t[r] = n);
|
|
1856
|
+
}
|
|
1857
|
+
return t;
|
|
1853
1858
|
}
|
|
1854
|
-
const pn = /url\(\s*(['"]?)\s*([^)'"]*?)\s*\1\s*\)/gi,
|
|
1855
|
-
function hn(
|
|
1856
|
-
return /^(data:|blob:|#)/i.test(
|
|
1859
|
+
const pn = /url\(\s*(['"]?)\s*([^)'"]*?)\s*\1\s*\)/gi, gi = /@font-face\s*\{[^}]*\}/gi;
|
|
1860
|
+
function hn(a) {
|
|
1861
|
+
return /^(data:|blob:|#)/i.test(a);
|
|
1857
1862
|
}
|
|
1858
|
-
function
|
|
1859
|
-
for (const e of
|
|
1863
|
+
function vi(a) {
|
|
1864
|
+
for (const e of a.matchAll(pn))
|
|
1860
1865
|
if (!hn(e[2])) return !0;
|
|
1861
1866
|
return !1;
|
|
1862
1867
|
}
|
|
1863
|
-
function
|
|
1868
|
+
function yi(a) {
|
|
1864
1869
|
var t;
|
|
1865
|
-
return `@font-face ${((t = /font-family\s*:\s*([^;}]+)/i.exec(
|
|
1870
|
+
return `@font-face ${((t = /font-family\s*:\s*([^;}]+)/i.exec(a)) == null ? void 0 : t[1].trim()) || "(unnamed)"}`;
|
|
1866
1871
|
}
|
|
1867
|
-
function
|
|
1872
|
+
function xi(a) {
|
|
1868
1873
|
const e = [];
|
|
1869
|
-
let t =
|
|
1870
|
-
return t = t.replace(pn, (r,
|
|
1874
|
+
let t = a.replace(gi, (r) => vi(r) ? (e.push(yi(r)), "") : r);
|
|
1875
|
+
return t = t.replace(pn, (r, n, f) => hn(f) ? r : (e.push(`url(${f})`), "url(about:invalid)")), { css: t, stripped: e };
|
|
1871
1876
|
}
|
|
1872
|
-
const Ot = "/* __FM_UI_LIBRARY_V2_STYLES__ */",
|
|
1877
|
+
const Ot = "/* __FM_UI_LIBRARY_V2_STYLES__ */", wi = [
|
|
1873
1878
|
"--fm-text-primary",
|
|
1874
1879
|
"--fm-bg-default",
|
|
1875
1880
|
"--fm-border-default",
|
|
1876
1881
|
"--fm-action-primary-bg"
|
|
1877
1882
|
];
|
|
1878
|
-
function
|
|
1879
|
-
if (!
|
|
1883
|
+
function ki(a, e) {
|
|
1884
|
+
if (!a.includes(Ot))
|
|
1880
1885
|
throw new Error("report canvas frame is missing the UI library style placeholder");
|
|
1881
|
-
const { css: t, stripped: r } =
|
|
1882
|
-
if (
|
|
1883
|
-
throw new Error(`the UI library stylesheet defines none of ${
|
|
1884
|
-
const f =
|
|
1886
|
+
const { css: t, stripped: r } = xi(e), n = wi.filter((u) => !t.includes(u));
|
|
1887
|
+
if (n.length)
|
|
1888
|
+
throw new Error(`the UI library stylesheet defines none of ${n.join(", ")}`);
|
|
1889
|
+
const f = a.replace(Ot, () => t);
|
|
1885
1890
|
if (f.includes(Ot))
|
|
1886
1891
|
throw new Error("the frame declares the UI library style placeholder more than once");
|
|
1887
1892
|
return { html: f, stripped: r };
|
|
1888
1893
|
}
|
|
1889
|
-
const
|
|
1894
|
+
const _i = `<meta charset="utf-8" />
|
|
1890
1895
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
1891
1896
|
<!--
|
|
1892
1897
|
Runtime shell for AI-written report sections. Loaded into ONE iframe per report with
|
|
@@ -2465,6 +2470,83 @@ const ki = `<meta charset="utf-8" />
|
|
|
2465
2470
|
height: 320px;
|
|
2466
2471
|
}
|
|
2467
2472
|
|
|
2473
|
+
/* A map with a figure lists its places beside it, below it on a phone. */
|
|
2474
|
+
.fmr-map {
|
|
2475
|
+
display: flex;
|
|
2476
|
+
flex-wrap: wrap;
|
|
2477
|
+
align-items: flex-start;
|
|
2478
|
+
gap: 16px 32px;
|
|
2479
|
+
}
|
|
2480
|
+
.fmr-map > .fmr-chart {
|
|
2481
|
+
flex: 2 1 320px;
|
|
2482
|
+
min-width: 0;
|
|
2483
|
+
}
|
|
2484
|
+
.fmr-places {
|
|
2485
|
+
flex: 1 1 240px;
|
|
2486
|
+
margin: 0;
|
|
2487
|
+
padding: 0;
|
|
2488
|
+
list-style: none;
|
|
2489
|
+
min-width: 0;
|
|
2490
|
+
}
|
|
2491
|
+
.fmr-place {
|
|
2492
|
+
display: flex;
|
|
2493
|
+
align-items: center;
|
|
2494
|
+
gap: 10px;
|
|
2495
|
+
padding: 8px 4px;
|
|
2496
|
+
border-bottom: var(--fm-border-width-thin) solid var(--fm-border-default);
|
|
2497
|
+
font-size: 14px;
|
|
2498
|
+
line-height: 20px;
|
|
2499
|
+
letter-spacing: 0.01em;
|
|
2500
|
+
color: var(--fm-text-primary);
|
|
2501
|
+
}
|
|
2502
|
+
.fmr-place:last-child {
|
|
2503
|
+
border-bottom: 0;
|
|
2504
|
+
}
|
|
2505
|
+
.fmr-place:hover {
|
|
2506
|
+
background: var(--fm-bg-subtle);
|
|
2507
|
+
}
|
|
2508
|
+
.fmr-place-link {
|
|
2509
|
+
cursor: pointer;
|
|
2510
|
+
}
|
|
2511
|
+
.fmr-place-link:focus-visible {
|
|
2512
|
+
outline: var(--fm-border-width-medium) solid var(--fm-border-brand);
|
|
2513
|
+
outline-offset: -2px;
|
|
2514
|
+
}
|
|
2515
|
+
/* the dot is the map's own, so the list is also the key to its sizes */
|
|
2516
|
+
.fmr-place-dot {
|
|
2517
|
+
flex: none;
|
|
2518
|
+
border-radius: 50%;
|
|
2519
|
+
background: var(--fm-feature-grape-fg);
|
|
2520
|
+
}
|
|
2521
|
+
.fmr-place-shade {
|
|
2522
|
+
flex: none;
|
|
2523
|
+
width: 12px;
|
|
2524
|
+
height: 12px;
|
|
2525
|
+
border-radius: 2px;
|
|
2526
|
+
}
|
|
2527
|
+
/* a fixed lane for the marks, so the names line up whatever the dot's size */
|
|
2528
|
+
.fmr-place-dot,
|
|
2529
|
+
.fmr-place-shade {
|
|
2530
|
+
margin: 0 calc((36px - var(--mark, 12px)) / 2);
|
|
2531
|
+
}
|
|
2532
|
+
.fmr-place-name {
|
|
2533
|
+
flex: 1;
|
|
2534
|
+
min-width: 0;
|
|
2535
|
+
overflow: hidden;
|
|
2536
|
+
text-overflow: ellipsis;
|
|
2537
|
+
white-space: nowrap;
|
|
2538
|
+
}
|
|
2539
|
+
.fmr-place-value {
|
|
2540
|
+
flex: none;
|
|
2541
|
+
font-variant-numeric: tabular-nums;
|
|
2542
|
+
}
|
|
2543
|
+
.fmr-place-more {
|
|
2544
|
+
color: var(--fm-text-muted);
|
|
2545
|
+
}
|
|
2546
|
+
.fmr-place-more:hover {
|
|
2547
|
+
background: none;
|
|
2548
|
+
}
|
|
2549
|
+
|
|
2468
2550
|
/* The two states the shell does not paint. */
|
|
2469
2551
|
.fmr-note {
|
|
2470
2552
|
margin: 0 20px 16px;
|
|
@@ -3254,6 +3336,9 @@ const ki = `<meta charset="utf-8" />
|
|
|
3254
3336
|
section.showWhen || section.hideWhen
|
|
3255
3337
|
? { show: section.showWhen || null, hide: section.hideWhen || null }
|
|
3256
3338
|
: null
|
|
3339
|
+
// a component's charts are the house's own drawing, so the chart checks read only code
|
|
3340
|
+
if (section.kind === "component") el.dataset.component = String(section.component || "")
|
|
3341
|
+
else delete el.dataset.component
|
|
3257
3342
|
mounting = section.id
|
|
3258
3343
|
delete undelivered[section.id]
|
|
3259
3344
|
try {
|
|
@@ -3548,6 +3633,8 @@ const ki = `<meta charset="utf-8" />
|
|
|
3548
3633
|
stylesheets at first audit — nothing here restates a token. */
|
|
3549
3634
|
|
|
3550
3635
|
var HOUSE_CHART_TYPES = { bar: 1, line: 1, doughnut: 1 }
|
|
3636
|
+
// a ring's slices are unrelated categories, one family accent each (chart-design)
|
|
3637
|
+
var CATEGORICAL_CHART_TYPES = { doughnut: 1 }
|
|
3551
3638
|
var TYPE_PROPS = ["font-size", "font-weight"]
|
|
3552
3639
|
var SPACE_PROPS = [
|
|
3553
3640
|
"padding-top", "padding-right", "padding-bottom", "padding-left",
|
|
@@ -3756,6 +3843,7 @@ const ki = `<meta charset="utf-8" />
|
|
|
3756
3843
|
}
|
|
3757
3844
|
|
|
3758
3845
|
function chartWarnings(root, add) {
|
|
3846
|
+
if (root.dataset.component) return
|
|
3759
3847
|
var scale = designScales()
|
|
3760
3848
|
var canvases = root.querySelectorAll("canvas")
|
|
3761
3849
|
Array.prototype.forEach.call(canvases, function (canvas) {
|
|
@@ -3796,7 +3884,7 @@ const ki = `<meta charset="utf-8" />
|
|
|
3796
3884
|
", which are not design tokens; take marks from one --fm-feature-* family"
|
|
3797
3885
|
)
|
|
3798
3886
|
}
|
|
3799
|
-
if (families.length > 1) {
|
|
3887
|
+
if (families.length > 1 && !CATEGORICAL_CHART_TYPES[type]) {
|
|
3800
3888
|
add(
|
|
3801
3889
|
"chart-family:" + where,
|
|
3802
3890
|
"chart: " + where + " mixes the " + families.join(" and ") +
|
|
@@ -4393,11 +4481,11 @@ const ki = `<meta charset="utf-8" />
|
|
|
4393
4481
|
post({ type: "ready", nonce: NONCE })
|
|
4394
4482
|
})()
|
|
4395
4483
|
<\/script>
|
|
4396
|
-
`,
|
|
4397
|
-
function
|
|
4398
|
-
const e =
|
|
4484
|
+
`, Si = ki(_i, ui).html, an = 8e3;
|
|
4485
|
+
function Ii(a) {
|
|
4486
|
+
const e = a;
|
|
4399
4487
|
if (!e || typeof e != "object") return;
|
|
4400
|
-
const t = (
|
|
4488
|
+
const t = (n) => Number.isSafeInteger(n) && n >= 0 && n <= 1e4;
|
|
4401
4489
|
if (!t(e.datasetIndex) || !t(e.index)) return;
|
|
4402
4490
|
const r = e.value;
|
|
4403
4491
|
return {
|
|
@@ -4408,10 +4496,10 @@ function Si(n) {
|
|
|
4408
4496
|
...r === null || typeof r == "number" && Number.isFinite(r) ? { value: r } : typeof r == "string" ? { value: r.slice(0, 64) } : {}
|
|
4409
4497
|
};
|
|
4410
4498
|
}
|
|
4411
|
-
function rn(
|
|
4412
|
-
const e =
|
|
4499
|
+
function rn(a) {
|
|
4500
|
+
const e = a;
|
|
4413
4501
|
if (!e || typeof e != "object" || typeof e.tag != "string") return;
|
|
4414
|
-
const t = Array.isArray(e.path) ? e.path.filter((
|
|
4502
|
+
const t = Array.isArray(e.path) ? e.path.filter((n) => Number.isSafeInteger(n) && n >= 0).slice(0, 32) : [], r = Ii(e.datum);
|
|
4415
4503
|
return {
|
|
4416
4504
|
tag: e.tag.slice(0, 32),
|
|
4417
4505
|
...typeof e.part == "string" ? { part: e.part.slice(0, 128) } : {},
|
|
@@ -4421,15 +4509,15 @@ function rn(n) {
|
|
|
4421
4509
|
...r ? { datum: r } : {}
|
|
4422
4510
|
};
|
|
4423
4511
|
}
|
|
4424
|
-
function
|
|
4512
|
+
function Ai(a, e) {
|
|
4425
4513
|
const t = _(!1);
|
|
4426
4514
|
let r = null;
|
|
4427
|
-
const
|
|
4515
|
+
const n = /* @__PURE__ */ new Map();
|
|
4428
4516
|
let f;
|
|
4429
4517
|
const u = /* @__PURE__ */ new Map();
|
|
4430
4518
|
function w() {
|
|
4431
4519
|
var m;
|
|
4432
|
-
return ((m =
|
|
4520
|
+
return ((m = a.value) == null ? void 0 : m.contentWindow) ?? null;
|
|
4433
4521
|
}
|
|
4434
4522
|
function k(m) {
|
|
4435
4523
|
var A;
|
|
@@ -4550,8 +4638,8 @@ function Ii(n, e) {
|
|
|
4550
4638
|
k({ type: "env", env: m });
|
|
4551
4639
|
}
|
|
4552
4640
|
function B() {
|
|
4553
|
-
const m = [...
|
|
4554
|
-
|
|
4641
|
+
const m = [...n.values()];
|
|
4642
|
+
n.clear(), m.forEach(ne);
|
|
4555
4643
|
}
|
|
4556
4644
|
function ne(m) {
|
|
4557
4645
|
k({
|
|
@@ -4567,7 +4655,7 @@ function Ii(n, e) {
|
|
|
4567
4655
|
}
|
|
4568
4656
|
function oe(m) {
|
|
4569
4657
|
if (!t.value) {
|
|
4570
|
-
|
|
4658
|
+
n.set(m.queryId, m);
|
|
4571
4659
|
return;
|
|
4572
4660
|
}
|
|
4573
4661
|
ne(m);
|
|
@@ -4576,7 +4664,7 @@ function Ii(n, e) {
|
|
|
4576
4664
|
window.removeEventListener("message", x), T();
|
|
4577
4665
|
});
|
|
4578
4666
|
function Z() {
|
|
4579
|
-
t.value = !1, r = null, f = void 0,
|
|
4667
|
+
t.value = !1, r = null, f = void 0, n.clear(), T();
|
|
4580
4668
|
}
|
|
4581
4669
|
return {
|
|
4582
4670
|
setCommentMode: (m, A) => {
|
|
@@ -4604,71 +4692,71 @@ function Ii(n, e) {
|
|
|
4604
4692
|
reset: Z
|
|
4605
4693
|
};
|
|
4606
4694
|
}
|
|
4607
|
-
function tt(
|
|
4695
|
+
function tt(a) {
|
|
4608
4696
|
const { businessId: e } = qe(ut());
|
|
4609
4697
|
if (!e.value) throw new Error("Business Id is not defined");
|
|
4610
|
-
return `/${e.value}/report-ai/${
|
|
4698
|
+
return `/${e.value}/report-ai/${a}`;
|
|
4611
4699
|
}
|
|
4612
|
-
const dt = (
|
|
4700
|
+
const dt = (a, e = {}) => {
|
|
4613
4701
|
const t = new URLSearchParams();
|
|
4614
4702
|
e.sessionId && t.set("sessionId", e.sessionId), e.before && t.set("before", e.before);
|
|
4615
|
-
const r = t.toString(),
|
|
4703
|
+
const r = t.toString(), n = {
|
|
4616
4704
|
fetchType: Se.Get,
|
|
4617
|
-
url: `${tt(
|
|
4705
|
+
url: `${tt(a)}/chat${r ? `?${r}` : ""}`
|
|
4618
4706
|
};
|
|
4619
|
-
return _e.fetch(
|
|
4620
|
-
},
|
|
4707
|
+
return _e.fetch(n);
|
|
4708
|
+
}, Ci = (a, e) => {
|
|
4621
4709
|
const t = {
|
|
4622
4710
|
fetchType: Se.Get,
|
|
4623
|
-
url: `${tt(
|
|
4711
|
+
url: `${tt(a)}/chats${e ? `?cursor=${encodeURIComponent(e)}` : ""}`
|
|
4624
4712
|
};
|
|
4625
4713
|
return _e.fetch(t);
|
|
4626
|
-
},
|
|
4714
|
+
}, Ei = (a) => {
|
|
4627
4715
|
const e = {
|
|
4628
4716
|
fetchType: Se.Post,
|
|
4629
|
-
url: `${tt(
|
|
4717
|
+
url: `${tt(a)}/chats`,
|
|
4630
4718
|
data: {}
|
|
4631
4719
|
};
|
|
4632
4720
|
return _e.fetch(e);
|
|
4633
|
-
},
|
|
4721
|
+
}, Ti = (a, e) => {
|
|
4634
4722
|
const t = {
|
|
4635
4723
|
fetchType: Se.Get,
|
|
4636
|
-
url: `${tt(
|
|
4724
|
+
url: `${tt(a)}/runs/latest${e ? `?sessionId=${e}` : ""}`
|
|
4637
4725
|
};
|
|
4638
4726
|
return _e.fetch(t);
|
|
4639
|
-
},
|
|
4640
|
-
const
|
|
4727
|
+
}, Oi = (a, e, t, r) => {
|
|
4728
|
+
const n = {
|
|
4641
4729
|
fetchType: Se.Post,
|
|
4642
|
-
url: `${tt(
|
|
4730
|
+
url: `${tt(a)}/runs/${e}/sections/${t}/retry`,
|
|
4643
4731
|
data: { timezone: r }
|
|
4644
4732
|
};
|
|
4645
|
-
return _e.fetch(
|
|
4646
|
-
},
|
|
4733
|
+
return _e.fetch(n);
|
|
4734
|
+
}, zi = (a, e) => {
|
|
4647
4735
|
const t = {
|
|
4648
4736
|
fetchType: Se.Post,
|
|
4649
|
-
url: `${tt(
|
|
4737
|
+
url: `${tt(a)}/chat/stop`,
|
|
4650
4738
|
data: { sessionId: e }
|
|
4651
4739
|
};
|
|
4652
4740
|
return _e.fetch(t);
|
|
4653
|
-
},
|
|
4654
|
-
function $t(
|
|
4655
|
-
return `report-canvas:chat:${
|
|
4741
|
+
}, $i = (a, e) => `/${a}/report-ai/${e}/chat`, zt = 3e4, on = 3e3, Ri = "New chat", sn = 80;
|
|
4742
|
+
function $t(a, e) {
|
|
4743
|
+
return `report-canvas:chat:${a}:${e}`;
|
|
4656
4744
|
}
|
|
4657
|
-
function
|
|
4745
|
+
function Ni(a) {
|
|
4658
4746
|
try {
|
|
4659
|
-
return window.localStorage.getItem(
|
|
4747
|
+
return window.localStorage.getItem(a) ?? void 0;
|
|
4660
4748
|
} catch {
|
|
4661
4749
|
return;
|
|
4662
4750
|
}
|
|
4663
4751
|
}
|
|
4664
|
-
function Rt(
|
|
4752
|
+
function Rt(a, e) {
|
|
4665
4753
|
try {
|
|
4666
|
-
e ? window.localStorage.setItem(
|
|
4754
|
+
e ? window.localStorage.setItem(a, e) : window.localStorage.removeItem(a);
|
|
4667
4755
|
} catch {
|
|
4668
4756
|
}
|
|
4669
4757
|
}
|
|
4670
|
-
function
|
|
4671
|
-
const { businessId: e, token: t } = qe(ut()), r = _([]),
|
|
4758
|
+
function Li(a) {
|
|
4759
|
+
const { businessId: e, token: t } = qe(ut()), r = _([]), n = _(), f = _(""), u = _(null), w = _(!1), k = _([]), x = _(null), j = _(!1), R = _(""), M = _(!1), T = _(!1), X = _(""), I = _(null), G = _(""), q = _(!1), h = _([]), B = _(!1), ne = _(null), oe = _(!1), Z = _(null), m = _(!1), A = V(() => oe.value || T.value && m.value), p = _(!1);
|
|
4672
4760
|
ge([T, oe], ([b, S]) => {
|
|
4673
4761
|
!b && !S && (p.value = !1);
|
|
4674
4762
|
});
|
|
@@ -4690,15 +4778,15 @@ function Ni(n) {
|
|
|
4690
4778
|
se += 1, clearTimeout(H), clearTimeout(K);
|
|
4691
4779
|
});
|
|
4692
4780
|
async function Ie(b) {
|
|
4693
|
-
const S = $t(o(e.value),
|
|
4781
|
+
const S = $t(o(e.value), a), E = b ?? Ni(S), z = se += 1;
|
|
4694
4782
|
clearTimeout(H), M.value = !0;
|
|
4695
4783
|
try {
|
|
4696
4784
|
let N;
|
|
4697
4785
|
try {
|
|
4698
|
-
N = await dt(
|
|
4786
|
+
N = await dt(a, { sessionId: E });
|
|
4699
4787
|
} catch (Y) {
|
|
4700
4788
|
if (!E) throw Y;
|
|
4701
|
-
Rt(S, void 0), N = await dt(
|
|
4789
|
+
Rt(S, void 0), N = await dt(a);
|
|
4702
4790
|
}
|
|
4703
4791
|
return z !== se ? null : (ve(N), N.latestRun ?? null);
|
|
4704
4792
|
} catch (N) {
|
|
@@ -4708,7 +4796,7 @@ function Ni(n) {
|
|
|
4708
4796
|
}
|
|
4709
4797
|
}
|
|
4710
4798
|
function ve(b) {
|
|
4711
|
-
|
|
4799
|
+
n.value = b.sessionId ?? void 0, f.value = b.title ?? "", r.value = b.messages, u.value = b.earlier ?? null, h.value = [], G.value = "", Rt($t(o(e.value), a), b.sessionId), Ne(b);
|
|
4712
4800
|
}
|
|
4713
4801
|
function Ne(b) {
|
|
4714
4802
|
clearTimeout(H), clearTimeout(K);
|
|
@@ -4724,24 +4812,24 @@ function Ni(n) {
|
|
|
4724
4812
|
Y && (X.value = Y.id), I.value = fa(Y), B.value = N >= zt, B.value || (K = setTimeout(() => B.value = !0, zt - N)), H = setTimeout(() => void C(), on);
|
|
4725
4813
|
}
|
|
4726
4814
|
async function C(b = !1) {
|
|
4727
|
-
const S = se, E =
|
|
4815
|
+
const S = se, E = n.value;
|
|
4728
4816
|
try {
|
|
4729
|
-
const z = await dt(
|
|
4730
|
-
if (S !== se || T.value || E !==
|
|
4817
|
+
const z = await dt(a, { sessionId: E });
|
|
4818
|
+
if (S !== se || T.value || E !== n.value) return;
|
|
4731
4819
|
ve(z), (!z.pending || z.pending.stopped) && (he.forEach((N) => N()), $e.forEach((N) => N(z.latestRun ?? null)));
|
|
4732
4820
|
} catch {
|
|
4733
4821
|
S === se && (oe.value || b) && (H = setTimeout(() => void C(b), on));
|
|
4734
4822
|
}
|
|
4735
4823
|
}
|
|
4736
4824
|
async function te(b) {
|
|
4737
|
-
return b ===
|
|
4825
|
+
return b === n.value || T.value || oe.value ? null : Ie(b);
|
|
4738
4826
|
}
|
|
4739
4827
|
async function c() {
|
|
4740
4828
|
if (T.value || oe.value) return !1;
|
|
4741
4829
|
const b = se += 1;
|
|
4742
4830
|
M.value = !0;
|
|
4743
4831
|
try {
|
|
4744
|
-
const { chat: S } = await
|
|
4832
|
+
const { chat: S } = await Ei(a);
|
|
4745
4833
|
return b !== se ? !1 : (ve({ sessionId: S.id, title: S.title, earlier: null, messages: [], latestRun: null }), k.value = [S, ...k.value.filter((E) => E.id !== S.id)], !0);
|
|
4746
4834
|
} catch (S) {
|
|
4747
4835
|
return b === se && (G.value = S instanceof Error ? S.message : String(S)), !1;
|
|
@@ -4752,7 +4840,7 @@ function Ni(n) {
|
|
|
4752
4840
|
async function O(b) {
|
|
4753
4841
|
j.value = !0, R.value = "";
|
|
4754
4842
|
try {
|
|
4755
|
-
const S = await
|
|
4843
|
+
const S = await Ci(a, b);
|
|
4756
4844
|
k.value = b ? [...k.value, ...S.chats] : S.chats, x.value = S.cursor;
|
|
4757
4845
|
} catch (S) {
|
|
4758
4846
|
R.value = S instanceof Error ? S.message : String(S);
|
|
@@ -4762,11 +4850,11 @@ function Ni(n) {
|
|
|
4762
4850
|
}
|
|
4763
4851
|
async function F() {
|
|
4764
4852
|
if (!u.value || w.value) return;
|
|
4765
|
-
const b = u.value, S =
|
|
4853
|
+
const b = u.value, S = n.value;
|
|
4766
4854
|
w.value = !0;
|
|
4767
4855
|
try {
|
|
4768
|
-
const E = await dt(
|
|
4769
|
-
if (S !==
|
|
4856
|
+
const E = await dt(a, { sessionId: S, before: b });
|
|
4857
|
+
if (S !== n.value) return;
|
|
4770
4858
|
r.value = [...E.messages, ...r.value], u.value = E.earlier ?? null;
|
|
4771
4859
|
} catch (E) {
|
|
4772
4860
|
G.value = E instanceof Error ? E.message : String(E);
|
|
@@ -4776,20 +4864,20 @@ function Ni(n) {
|
|
|
4776
4864
|
}
|
|
4777
4865
|
const U = /* @__PURE__ */ new Map();
|
|
4778
4866
|
function W(b, S) {
|
|
4779
|
-
|
|
4867
|
+
n.value && U.set(n.value, { text: b, target: S });
|
|
4780
4868
|
}
|
|
4781
4869
|
function Q() {
|
|
4782
|
-
return
|
|
4870
|
+
return n.value && U.get(n.value) || { text: "" };
|
|
4783
4871
|
}
|
|
4784
4872
|
function P(b) {
|
|
4785
4873
|
h.value.includes(b) || (h.value = [...h.value, b]);
|
|
4786
4874
|
}
|
|
4787
4875
|
async function i() {
|
|
4788
|
-
const b =
|
|
4876
|
+
const b = n.value;
|
|
4789
4877
|
if (!A.value || p.value || !b) return null;
|
|
4790
4878
|
p.value = !0;
|
|
4791
4879
|
try {
|
|
4792
|
-
await
|
|
4880
|
+
await zi(a, b);
|
|
4793
4881
|
} catch (E) {
|
|
4794
4882
|
return p.value = !1, G.value = E instanceof Error ? E.message : String(E), null;
|
|
4795
4883
|
}
|
|
@@ -4904,14 +4992,14 @@ function Ni(n) {
|
|
|
4904
4992
|
}
|
|
4905
4993
|
if (E.startsWith("data-")) {
|
|
4906
4994
|
const N = E.slice(5), Y = b.data ?? {};
|
|
4907
|
-
N === "plan" && typeof Y.sessionId == "string" && (S.acked = !0, m.value = !0,
|
|
4995
|
+
N === "plan" && typeof Y.sessionId == "string" && (S.acked = !0, m.value = !0, n.value = Y.sessionId, Rt($t(o(e.value), a), Y.sessionId)), N === "step" && typeof Y.step == "string" ? (S.named = !0, I.value = Gt(I.value, Y.step)) : me(S, N), le(z, (ce) => ce.push({ type: E, data: Y })), re.forEach((ce) => ce({ name: N, data: Y }));
|
|
4908
4996
|
}
|
|
4909
4997
|
}
|
|
4910
4998
|
function ue(b) {
|
|
4911
|
-
if (f.value && f.value !==
|
|
4999
|
+
if (f.value && f.value !== Ri) return;
|
|
4912
5000
|
const S = b.length > sn ? `${b.slice(0, sn - 1)}…` : b;
|
|
4913
5001
|
f.value = S, k.value = k.value.map(
|
|
4914
|
-
(E) => E.id ===
|
|
5002
|
+
(E) => E.id === n.value ? { ...E, title: S } : E
|
|
4915
5003
|
);
|
|
4916
5004
|
}
|
|
4917
5005
|
async function Te(b, S) {
|
|
@@ -4933,7 +5021,7 @@ function Ni(n) {
|
|
|
4933
5021
|
let ce = !1;
|
|
4934
5022
|
try {
|
|
4935
5023
|
const Oe = await fetch(
|
|
4936
|
-
Hn(
|
|
5024
|
+
Hn($i(e.value, a)),
|
|
4937
5025
|
{
|
|
4938
5026
|
method: "POST",
|
|
4939
5027
|
headers: {
|
|
@@ -4941,7 +5029,7 @@ function Ni(n) {
|
|
|
4941
5029
|
Authorization: `Bearer ${t.value}`
|
|
4942
5030
|
},
|
|
4943
5031
|
body: JSON.stringify({
|
|
4944
|
-
sessionId:
|
|
5032
|
+
sessionId: n.value,
|
|
4945
5033
|
target: S,
|
|
4946
5034
|
message: z
|
|
4947
5035
|
})
|
|
@@ -4953,7 +5041,7 @@ function Ni(n) {
|
|
|
4953
5041
|
G.value = Fe.message, r.value = r.value.filter((nt) => nt.id !== z.id);
|
|
4954
5042
|
return;
|
|
4955
5043
|
}
|
|
4956
|
-
console.warn("[report-canvas] chat rejected", { reportId:
|
|
5044
|
+
console.warn("[report-canvas] chat rejected", { reportId: a, status: Oe.status }), P(z.id);
|
|
4957
5045
|
return;
|
|
4958
5046
|
}
|
|
4959
5047
|
const it = Oe.body.getReader(), pt = new TextDecoder();
|
|
@@ -4979,14 +5067,14 @@ function Ni(n) {
|
|
|
4979
5067
|
}
|
|
4980
5068
|
}
|
|
4981
5069
|
} catch (Oe) {
|
|
4982
|
-
console.warn("[report-canvas] chat stream failed", { reportId:
|
|
5070
|
+
console.warn("[report-canvas] chat stream failed", { reportId: a, err: Oe }), N.acked ? (q.value = !0, ce = !0) : P(z.id);
|
|
4983
5071
|
} finally {
|
|
4984
5072
|
clearTimeout(Y), T.value = !1, I.value = null, B.value = !1, ne.value = null, he.forEach((Oe) => Oe()), ce && C(!0);
|
|
4985
5073
|
}
|
|
4986
5074
|
}
|
|
4987
5075
|
return {
|
|
4988
5076
|
messages: r,
|
|
4989
|
-
sessionId:
|
|
5077
|
+
sessionId: n,
|
|
4990
5078
|
title: f,
|
|
4991
5079
|
earlier: u,
|
|
4992
5080
|
loadingEarlier: w,
|
|
@@ -5023,9 +5111,9 @@ function Ni(n) {
|
|
|
5023
5111
|
onResumed: Ee
|
|
5024
5112
|
};
|
|
5025
5113
|
}
|
|
5026
|
-
const
|
|
5027
|
-
function
|
|
5028
|
-
const { timezone:
|
|
5114
|
+
const Mi = 2e3, Pi = 10 * 6e4;
|
|
5115
|
+
function ji(a, e, t, r) {
|
|
5116
|
+
const { timezone: n } = qe(Nt()), f = _(null), u = _(null), w = _(!1), k = _(""), x = [];
|
|
5029
5117
|
function j(m) {
|
|
5030
5118
|
x.push(m);
|
|
5031
5119
|
}
|
|
@@ -5035,7 +5123,7 @@ function Pi(n, e, t, r) {
|
|
|
5035
5123
|
}
|
|
5036
5124
|
function T() {
|
|
5037
5125
|
var m;
|
|
5038
|
-
R !== void 0 || e.value || ((m = f.value) == null ? void 0 : m.status) === "running" && (R = window.setInterval(() => void X(),
|
|
5126
|
+
R !== void 0 || e.value || ((m = f.value) == null ? void 0 : m.status) === "running" && (R = window.setInterval(() => void X(), Mi));
|
|
5039
5127
|
}
|
|
5040
5128
|
async function X() {
|
|
5041
5129
|
var m;
|
|
@@ -5044,8 +5132,8 @@ function Pi(n, e, t, r) {
|
|
|
5044
5132
|
return;
|
|
5045
5133
|
}
|
|
5046
5134
|
try {
|
|
5047
|
-
const { run: A } = await
|
|
5048
|
-
A && I(A), ((m = f.value) == null ? void 0 : m.status) !== "running" ? M() : f.value.updatedAt && Date.now() - new Date(f.value.updatedAt).getTime() >
|
|
5135
|
+
const { run: A } = await Ti(a, r == null ? void 0 : r.value);
|
|
5136
|
+
A && I(A), ((m = f.value) == null ? void 0 : m.status) !== "running" ? M() : f.value.updatedAt && Date.now() - new Date(f.value.updatedAt).getTime() > Pi && (w.value = !0, M());
|
|
5049
5137
|
} catch {
|
|
5050
5138
|
}
|
|
5051
5139
|
}
|
|
@@ -5099,11 +5187,11 @@ function Pi(n, e, t, r) {
|
|
|
5099
5187
|
if (!(!((A = f.value) != null && A.runId) || f.value.status === "running")) {
|
|
5100
5188
|
k.value = "";
|
|
5101
5189
|
try {
|
|
5102
|
-
const { run: p } = await
|
|
5103
|
-
|
|
5190
|
+
const { run: p } = await Oi(
|
|
5191
|
+
a,
|
|
5104
5192
|
f.value.runId,
|
|
5105
5193
|
m,
|
|
5106
|
-
o(
|
|
5194
|
+
o(n.value)
|
|
5107
5195
|
);
|
|
5108
5196
|
I(p);
|
|
5109
5197
|
} catch (p) {
|
|
@@ -5128,18 +5216,18 @@ function Pi(n, e, t, r) {
|
|
|
5128
5216
|
onLanded: j
|
|
5129
5217
|
};
|
|
5130
5218
|
}
|
|
5131
|
-
const
|
|
5132
|
-
function
|
|
5133
|
-
const t = _(), r = _(),
|
|
5219
|
+
const Di = 380, Vi = 600, ln = 'button:not([disabled]),textarea:not([disabled]),select:not([disabled]),a[href],[tabindex]:not([tabindex="-1"])';
|
|
5220
|
+
function Bi(a, e) {
|
|
5221
|
+
const t = _(), r = _(), n = _(0);
|
|
5134
5222
|
let f, u = !1;
|
|
5135
5223
|
Xe(() => {
|
|
5136
5224
|
!t.value || typeof ResizeObserver > "u" || (f = new ResizeObserver(([R]) => {
|
|
5137
|
-
|
|
5225
|
+
n.value = R.contentRect.width, !u && (u = !0, w.value || (a.value = !1));
|
|
5138
5226
|
}), f.observe(t.value));
|
|
5139
5227
|
}), Ge(() => f == null ? void 0 : f.disconnect());
|
|
5140
5228
|
const w = V(
|
|
5141
|
-
() => !
|
|
5142
|
-
), k = V(() =>
|
|
5229
|
+
() => !n.value || n.value >= Di + Vi
|
|
5230
|
+
), k = V(() => a.value && !w.value && !e.value);
|
|
5143
5231
|
let x = null;
|
|
5144
5232
|
ge(k, async (R) => {
|
|
5145
5233
|
var M, T, X;
|
|
@@ -5158,45 +5246,45 @@ function Vi(n, e) {
|
|
|
5158
5246
|
}
|
|
5159
5247
|
return Xe(() => window.addEventListener("keydown", j, !0)), Ge(() => window.removeEventListener("keydown", j, !0)), { root: t, drawer: r, docked: w, modal: k };
|
|
5160
5248
|
}
|
|
5161
|
-
const
|
|
5249
|
+
const Fi = "page_filters", qi = { class: "flex min-w-0 grow flex-col" }, Ui = { class: "fm-typo-en-title-md-600 block min-w-0 max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, Hi = { class: "relative shrink-0" }, Wi = {
|
|
5162
5250
|
key: 0,
|
|
5163
5251
|
class: "flex items-center gap-8 border-b border-fm-color-border-secondary px-16 py-8"
|
|
5164
|
-
},
|
|
5252
|
+
}, Gi = {
|
|
5165
5253
|
key: 0,
|
|
5166
5254
|
class: "flex min-w-0 grow items-start overflow-x-auto scrollbar-hide"
|
|
5167
|
-
},
|
|
5255
|
+
}, Yi = {
|
|
5168
5256
|
key: 1,
|
|
5169
5257
|
class: "grow"
|
|
5170
|
-
},
|
|
5258
|
+
}, Ji = {
|
|
5171
5259
|
key: 2,
|
|
5172
5260
|
class: "flex shrink-0 items-center gap-4"
|
|
5173
|
-
},
|
|
5261
|
+
}, Ki = ["aria-pressed", "aria-label", "disabled"], Xi = {
|
|
5174
5262
|
key: 1,
|
|
5175
5263
|
"data-testid": "canvas-draft-bar",
|
|
5176
5264
|
class: "flex items-center gap-12 border-b border-fm-color-border-secondary bg-fm-color-system-info-100 px-16 py-8"
|
|
5177
|
-
},
|
|
5265
|
+
}, Qi = { class: "fm-typo-en-body-sm-500 text-fm-color-typo-primary" }, Zi = { class: "fm-typo-en-body-sm-400 grow text-fm-color-typo-secondary" }, es = {
|
|
5178
5266
|
key: 0,
|
|
5179
5267
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
|
|
5180
|
-
},
|
|
5268
|
+
}, ts = {
|
|
5181
5269
|
key: 2,
|
|
5182
5270
|
role: "status",
|
|
5183
5271
|
class: "fm-typo-en-body-sm-400 flex items-center gap-8 border-b border-fm-color-border-secondary px-16 py-8"
|
|
5184
|
-
},
|
|
5272
|
+
}, ns = { class: "grow" }, as = ["aria-label"], rs = {
|
|
5185
5273
|
key: 3,
|
|
5186
5274
|
class: "fm-typo-en-body-sm-400 border-b border-fm-color-border-secondary bg-fm-color-system-warning-100 px-16 py-8"
|
|
5187
|
-
},
|
|
5275
|
+
}, os = {
|
|
5188
5276
|
key: 4,
|
|
5189
5277
|
class: "fm-typo-en-body-sm-400 p-16 text-fm-color-typo-error"
|
|
5190
|
-
},
|
|
5278
|
+
}, is = ["srcdoc", "title"], ss = ["role", "aria-modal", "aria-label"], ls = /* @__PURE__ */ Ze({
|
|
5191
5279
|
__name: "ReportCanvasView",
|
|
5192
5280
|
props: {
|
|
5193
5281
|
reportId: {},
|
|
5194
5282
|
viewOnly: { type: Boolean }
|
|
5195
5283
|
},
|
|
5196
|
-
setup(
|
|
5197
|
-
const e =
|
|
5284
|
+
setup(a) {
|
|
5285
|
+
const e = a, t = jn(), r = Dn(), { t: n, te: f } = et(), { currentReport: u } = qe(Xn()), w = V(() => {
|
|
5198
5286
|
var s;
|
|
5199
|
-
return Qn(
|
|
5287
|
+
return Qn(n, f, (s = u.value) == null ? void 0 : s.name, "other");
|
|
5200
5288
|
}), k = e.reportId || String(t.query.reportId ?? ""), x = _(), j = _(""), R = V(() => {
|
|
5201
5289
|
var s;
|
|
5202
5290
|
return ((s = x.value) == null ? void 0 : s.state) === "draft";
|
|
@@ -5232,7 +5320,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5232
5320
|
function $e(s, g) {
|
|
5233
5321
|
var J;
|
|
5234
5322
|
return String(
|
|
5235
|
-
((J = s.config) == null ? void 0 : J.title) || Ce.value[s.id] ||
|
|
5323
|
+
((J = s.config) == null ? void 0 : J.title) || Ce.value[s.id] || n("reportV5.reportAi.chat.widgetNumber", { number: g + 1 })
|
|
5236
5324
|
);
|
|
5237
5325
|
}
|
|
5238
5326
|
const Ee = _([]), se = _([]), Ie = V({
|
|
@@ -5299,7 +5387,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5299
5387
|
return c.value = g.text, ee.value = g.target, P();
|
|
5300
5388
|
}
|
|
5301
5389
|
function $(s) {
|
|
5302
|
-
Me.value || (c.value =
|
|
5390
|
+
Me.value || (c.value = n("reportV5.reportAi.build.askBuilderPrompt", { title: s }), ee.value = void 0);
|
|
5303
5391
|
}
|
|
5304
5392
|
async function fe() {
|
|
5305
5393
|
const s = await me.stop();
|
|
@@ -5314,7 +5402,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5314
5402
|
if (g)
|
|
5315
5403
|
return c.value = g.text, ee.value = g.target, P();
|
|
5316
5404
|
}
|
|
5317
|
-
const ie = mi(k), me =
|
|
5405
|
+
const ie = mi(k), me = Li(k), {
|
|
5318
5406
|
messages: D,
|
|
5319
5407
|
sessionId: ue,
|
|
5320
5408
|
title: Te,
|
|
@@ -5342,7 +5430,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5342
5430
|
onLifecycle: xn,
|
|
5343
5431
|
onSettled: wn,
|
|
5344
5432
|
onResumed: kn
|
|
5345
|
-
} = me, Me = V(() => Oe.value || bn.value), { dateRange: bt, selectedLocationIds: gt, locations: Lt, timezone: _n } = qe(Nt()), we =
|
|
5433
|
+
} = me, Me = V(() => Oe.value || bn.value), { dateRange: bt, selectedLocationIds: gt, locations: Lt, timezone: _n } = qe(Nt()), we = ji(k, Oe, it, ue), Mt = V(
|
|
5346
5434
|
() => {
|
|
5347
5435
|
var s;
|
|
5348
5436
|
return Me.value || N.value || ((s = we.run.value) == null ? void 0 : s.status) === "running";
|
|
@@ -5350,19 +5438,19 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5350
5438
|
), Pt = V(
|
|
5351
5439
|
() => {
|
|
5352
5440
|
var s;
|
|
5353
|
-
return ((s = x.value) == null ? void 0 : s.sections.filter((g) => g.id !==
|
|
5441
|
+
return ((s = x.value) == null ? void 0 : s.sections.filter((g) => g.id !== Fi)) ?? [];
|
|
5354
5442
|
}
|
|
5355
5443
|
), jt = V(() => Pt.value.length === 0), Dt = V({
|
|
5356
5444
|
get: () => Z.value && m.value || I.value,
|
|
5357
5445
|
set: (s) => {
|
|
5358
5446
|
m.value = s, s || (I.value = !1);
|
|
5359
5447
|
}
|
|
5360
|
-
}), { root: Sn, drawer: In, docked: vt, modal: yt } =
|
|
5448
|
+
}), { root: Sn, drawer: In, docked: vt, modal: yt } = Bi(Dt, p), An = V(
|
|
5361
5449
|
() => {
|
|
5362
5450
|
var s;
|
|
5363
5451
|
return ((s = x.value) == null ? void 0 : s.sections.some((g) => g.status === "pending")) ?? !1;
|
|
5364
5452
|
}
|
|
5365
|
-
), Cn = V(() => Me.value ? pt.value ?? "working" : An.value ? "loading" : "updating"), Pe =
|
|
5453
|
+
), Cn = V(() => Me.value ? pt.value ?? "working" : An.value ? "loading" : "updating"), Pe = Ai(A, {
|
|
5366
5454
|
onSelectSection: te,
|
|
5367
5455
|
onCancelSelection: () => {
|
|
5368
5456
|
p.value = !1;
|
|
@@ -5482,7 +5570,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5482
5570
|
ref: Sn,
|
|
5483
5571
|
class: "relative flex h-full min-h-0 w-full"
|
|
5484
5572
|
}, [
|
|
5485
|
-
v("div",
|
|
5573
|
+
v("div", qi, [
|
|
5486
5574
|
s.viewOnly ? L("", !0) : (l(), ye(de, {
|
|
5487
5575
|
key: 0,
|
|
5488
5576
|
class: "remove-line-clamping shrink-0",
|
|
@@ -5498,16 +5586,16 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5498
5586
|
class: "flex min-w-0 max-w-full justify-start"
|
|
5499
5587
|
}, {
|
|
5500
5588
|
default: We(() => [
|
|
5501
|
-
v("p",
|
|
5589
|
+
v("p", Ui, y(w.value), 1)
|
|
5502
5590
|
]),
|
|
5503
5591
|
_: 1
|
|
5504
5592
|
}, 8, ["content"])
|
|
5505
5593
|
]),
|
|
5506
5594
|
_: 1
|
|
5507
5595
|
}, 8, ["title"])),
|
|
5508
|
-
v("div",
|
|
5509
|
-
!s.viewOnly || ((Ve = x.value) == null ? void 0 : Ve.hostFilters) !== !1 ? (l(), d("div",
|
|
5510
|
-
((je = x.value) == null ? void 0 : je.hostFilters) !== !1 ? (l(), d("div",
|
|
5596
|
+
v("div", Hi, [
|
|
5597
|
+
!s.viewOnly || ((Ve = x.value) == null ? void 0 : Ve.hostFilters) !== !1 ? (l(), d("div", Wi, [
|
|
5598
|
+
((je = x.value) == null ? void 0 : je.hostFilters) !== !1 ? (l(), d("div", Gi, [
|
|
5511
5599
|
ae(Gn, {
|
|
5512
5600
|
modelValue: o(gt),
|
|
5513
5601
|
"onUpdate:modelValue": g[2] || (g[2] = (pe) => qt(gt) ? gt.value = pe : null),
|
|
@@ -5521,21 +5609,21 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5521
5609
|
]),
|
|
5522
5610
|
_: 1
|
|
5523
5611
|
}, 8, ["modelValue", "options"])
|
|
5524
|
-
])) : (l(), d("div",
|
|
5525
|
-
Pt.value.length && !s.viewOnly ? (l(), d("div",
|
|
5612
|
+
])) : (l(), d("div", Yi)),
|
|
5613
|
+
Pt.value.length && !s.viewOnly ? (l(), d("div", Ji, [
|
|
5526
5614
|
(xe = x.value) != null && xe.canEdit && ((He = x.value) != null && He.publishedAt) ? (l(), ye(ke, {
|
|
5527
5615
|
key: 0,
|
|
5528
5616
|
"data-testid": "canvas-versions-open",
|
|
5529
5617
|
variant: "tertiary",
|
|
5530
5618
|
"prepend-icon": "history",
|
|
5531
|
-
label: o(
|
|
5619
|
+
label: o(n)("reportV5.reportCanvas.draft.history"),
|
|
5532
5620
|
"aria-expanded": I.value,
|
|
5533
5621
|
onClick: h
|
|
5534
5622
|
}, null, 8, ["label", "aria-expanded"])) : L("", !0),
|
|
5535
5623
|
Z.value ? (l(), ye(J, {
|
|
5536
5624
|
key: 1,
|
|
5537
5625
|
placement: "bottom",
|
|
5538
|
-
content: o(
|
|
5626
|
+
content: o(n)(
|
|
5539
5627
|
p.value ? "reportV5.reportAi.chat.cancelSelection" : "reportV5.reportAi.chat.commentWidget"
|
|
5540
5628
|
)
|
|
5541
5629
|
}, {
|
|
@@ -5544,7 +5632,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5544
5632
|
"data-testid": "canvas-comment-toggle",
|
|
5545
5633
|
class: Qe(["canvas-comment-target flex h-32 w-32 items-center justify-center rounded-md text-fm-color-typo-secondary disabled:opacity-50", p.value && "bg-fm-color-neutral-gray-100 text-fm-color-primary"]),
|
|
5546
5634
|
"aria-pressed": p.value,
|
|
5547
|
-
"aria-label": o(
|
|
5635
|
+
"aria-label": o(n)("reportV5.reportAi.chat.commentWidget"),
|
|
5548
5636
|
disabled: Me.value || I.value,
|
|
5549
5637
|
onClick: g[3] || (g[3] = (pe) => p.value = !p.value)
|
|
5550
5638
|
}, g[15] || (g[15] = [
|
|
@@ -5563,7 +5651,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5563
5651
|
"stroke-linejoin": "round"
|
|
5564
5652
|
})
|
|
5565
5653
|
], -1)
|
|
5566
|
-
]), 10,
|
|
5654
|
+
]), 10, Ki)
|
|
5567
5655
|
]),
|
|
5568
5656
|
_: 1
|
|
5569
5657
|
}, 8, ["content"])) : L("", !0),
|
|
@@ -5572,59 +5660,59 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5572
5660
|
"data-testid": "report-canvas-chat-open",
|
|
5573
5661
|
variant: "tertiary",
|
|
5574
5662
|
"prepend-icon": "auto_awesome",
|
|
5575
|
-
label: o(
|
|
5663
|
+
label: o(n)("reportV5.reportAi.chat.open"),
|
|
5576
5664
|
onClick: g[4] || (g[4] = (pe) => m.value = !0)
|
|
5577
5665
|
}, null, 8, ["label"])) : L("", !0)
|
|
5578
5666
|
])) : L("", !0)
|
|
5579
5667
|
])) : L("", !0)
|
|
5580
5668
|
]),
|
|
5581
|
-
R.value && !s.viewOnly ? (l(), d("div",
|
|
5582
|
-
v("span",
|
|
5583
|
-
v("span",
|
|
5584
|
-
X.value ? (l(), d("span",
|
|
5669
|
+
R.value && !s.viewOnly ? (l(), d("div", Xi, [
|
|
5670
|
+
v("span", Qi, y(o(n)("reportV5.reportCanvas.draft.pending", { count: M.value })), 1),
|
|
5671
|
+
v("span", Zi, y(o(n)("reportV5.reportCanvas.draft.hint")), 1),
|
|
5672
|
+
X.value ? (l(), d("span", es, y(X.value), 1)) : L("", !0),
|
|
5585
5673
|
ae(ke, {
|
|
5586
5674
|
"data-testid": "canvas-draft-discard",
|
|
5587
5675
|
variant: "tertiary",
|
|
5588
|
-
label: o(
|
|
5676
|
+
label: o(n)("reportV5.reportCanvas.draft.discard"),
|
|
5589
5677
|
disabled: T.value,
|
|
5590
5678
|
onClick: Tn
|
|
5591
5679
|
}, null, 8, ["label", "disabled"]),
|
|
5592
5680
|
ae(ke, {
|
|
5593
5681
|
"data-testid": "canvas-draft-publish",
|
|
5594
5682
|
variant: "primary",
|
|
5595
|
-
label: o(
|
|
5683
|
+
label: o(n)("reportV5.reportCanvas.draft.publish"),
|
|
5596
5684
|
disabled: T.value,
|
|
5597
5685
|
onClick: En
|
|
5598
5686
|
}, null, 8, ["label", "disabled"])
|
|
5599
5687
|
])) : L("", !0),
|
|
5600
|
-
G.value ? (l(), d("div",
|
|
5688
|
+
G.value ? (l(), d("div", ts, [
|
|
5601
5689
|
ae(be, {
|
|
5602
5690
|
name: "check_circle",
|
|
5603
5691
|
size: "sm"
|
|
5604
5692
|
}),
|
|
5605
|
-
v("span",
|
|
5693
|
+
v("span", ns, y(o(n)("reportV5.reportCanvas.history.restored")), 1),
|
|
5606
5694
|
v("button", {
|
|
5607
5695
|
class: "flex h-32 w-32 items-center justify-center rounded-md",
|
|
5608
|
-
"aria-label": o(
|
|
5696
|
+
"aria-label": o(n)("reportV5.reportCanvas.draft.close"),
|
|
5609
5697
|
onClick: g[5] || (g[5] = (pe) => G.value = !1)
|
|
5610
5698
|
}, [
|
|
5611
5699
|
ae(be, {
|
|
5612
5700
|
name: "close",
|
|
5613
5701
|
size: "sm"
|
|
5614
5702
|
})
|
|
5615
|
-
], 8,
|
|
5703
|
+
], 8, as)
|
|
5616
5704
|
])) : L("", !0),
|
|
5617
|
-
Nn.value ? (l(), d("div",
|
|
5618
|
-
j.value ? (l(), d("p",
|
|
5705
|
+
Nn.value ? (l(), d("div", rs, y(o(n)("reportV5.reportCanvas.canvas.truncated")), 1)) : L("", !0),
|
|
5706
|
+
j.value ? (l(), d("p", os, y(j.value), 1)) : L("", !0),
|
|
5619
5707
|
Mn(v("iframe", {
|
|
5620
5708
|
ref_key: "frame",
|
|
5621
5709
|
ref: A,
|
|
5622
5710
|
"data-testid": "report-canvas-frame",
|
|
5623
5711
|
class: "min-h-0 grow border-0",
|
|
5624
|
-
srcdoc: o(
|
|
5712
|
+
srcdoc: o(Si),
|
|
5625
5713
|
sandbox: "allow-scripts",
|
|
5626
|
-
title: o(
|
|
5627
|
-
}, null, 8,
|
|
5714
|
+
title: o(n)("reportV5.reportCanvas.canvas.title")
|
|
5715
|
+
}, null, 8, is), [
|
|
5628
5716
|
[Pn, !j.value]
|
|
5629
5717
|
])
|
|
5630
5718
|
]),
|
|
@@ -5642,7 +5730,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5642
5730
|
),
|
|
5643
5731
|
role: o(yt) ? "dialog" : void 0,
|
|
5644
5732
|
"aria-modal": o(yt) ? "true" : void 0,
|
|
5645
|
-
"aria-label": o(
|
|
5733
|
+
"aria-label": o(n)(I.value ? "reportV5.reportCanvas.draft.history" : "reportV5.reportAi.chat.title")
|
|
5646
5734
|
}, [
|
|
5647
5735
|
I.value ? (l(), ye(ri, {
|
|
5648
5736
|
key: 0,
|
|
@@ -5710,11 +5798,11 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
|
|
|
5710
5798
|
onLoadMoreChats: g[13] || (g[13] = (pe) => o(me).loadChats(o(S) ?? void 0)),
|
|
5711
5799
|
onLoadEarlier: g[14] || (g[14] = (pe) => o(me).loadEarlier())
|
|
5712
5800
|
}, null, 8, ["home-draft", "home-open", "messages", "draft", "target", "target-stale", "streaming", "turn-id", "phase", "slow", "started-at", "error", "interrupted", "blank", "run", "run-anchor-id", "run-stale", "retry-error", "undoable-turn-ids", "undoing", "unsent-ids", "no-reply-id", "chat-id", "chat-title", "chats", "chats-cursor", "chats-loading", "chats-error", "switching", "busy", "stoppable", "stopping", "earlier", "loading-earlier", "onRetry", "onCheckStatus"]))
|
|
5713
|
-
], 10,
|
|
5801
|
+
], 10, ss)) : L("", !0)
|
|
5714
5802
|
], 512);
|
|
5715
5803
|
};
|
|
5716
5804
|
}
|
|
5717
|
-
}),
|
|
5805
|
+
}), xs = /* @__PURE__ */ mt(ls, [["__scopeId", "data-v-44470a1c"]]);
|
|
5718
5806
|
export {
|
|
5719
|
-
|
|
5807
|
+
xs as default
|
|
5720
5808
|
};
|