@feedmepos/mf-report 5.29.2 → 5.30.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-BZSznIVk.js → App-DLfT0eCF.js} +4 -4
- package/dist/{DateRangeSelect-DkvUo0cb.js → DateRangeSelect-B7WdpXF2.js} +1 -1
- package/dist/{Default.vue_vue_type_script_setup_true_lang-CpcW6e8f.js → Default.vue_vue_type_script_setup_true_lang-CL-aDO0k.js} +1 -1
- package/dist/DynamicWidget.vue_vue_type_script_setup_true_lang-CBQqry-z.js +5554 -0
- package/dist/GlobalFilterSelect.vue_vue_type_script_setup_true_lang-Dw7f7Ezy.js +2127 -0
- package/dist/{InsightView-BlBTxYPI.js → InsightView-C6C7JOZ6.js} +5 -5
- package/dist/{Integration-Cn0dO3bp.js → Integration-C-jTirOn.js} +3 -3
- package/dist/{Integrations-BbIEat5a.js → Integrations-GGOG7SoK.js} +2 -2
- package/dist/{Layout-CLOxLFnG.js → Layout-Bh9XKigp.js} +1 -1
- package/dist/{LocationSelect.vue_vue_type_script_setup_true_lang-BPBUsbFi.js → LocationSelect.vue_vue_type_script_setup_true_lang-rIw_bBJj.js} +2 -2
- package/dist/{MenuTab.vue_vue_type_script_setup_true_lang-BUbVlzC2.js → MenuTab.vue_vue_type_script_setup_true_lang-Cd0znwmF.js} +5 -5
- package/dist/{NavigationTab.vue_vue_type_script_setup_true_lang--ZqfguuE.js → NavigationTab.vue_vue_type_script_setup_true_lang-DfyDACQ_.js} +5 -5
- package/dist/{OverviewView-BnUQ_3U7.js → OverviewView-lMOe2TOC.js} +5 -5
- package/dist/{Report-BgvWo3nT.js → Report-D2Xn49J6.js} +3 -3
- package/dist/{ReportCanvasView-CPArvQyC.js → ReportCanvasView-CFD234l5.js} +419 -436
- package/dist/{ReportEditor-DMn20A0v.js → ReportEditor-CSCoj3H6.js} +7 -7
- package/dist/{ReportView-4ZwIkVpM.js → ReportView-CkWRa86t.js} +6 -6
- package/dist/{ReportViewRoute-CUXYY7p8.js → ReportViewRoute-BhtvTT7S.js} +2 -2
- package/dist/{Setting-rT9gqbLW.js → Setting-CoeUOLBq.js} +3 -3
- package/dist/{Template-BPWPq033.js → Template-CC5lUzPa.js} +3 -3
- package/dist/{TileEditor-D_Mdi1L7.js → TileEditor-DrbNsCcm.js} +6 -6
- package/dist/{TilePageStack.vue_vue_type_script_setup_true_lang-DPMdTPX0.js → TilePageStack.vue_vue_type_script_setup_true_lang-H9-q9z6X.js} +2 -2
- package/dist/{TransitionFade-BXD3t2SP.js → TransitionFade-BdCRphCd.js} +5 -5
- package/dist/{app-CECOMH9a.js → app-DQmVmRnR.js} +218 -206
- package/dist/app.js +1 -1
- package/dist/assets/{processTableData.worker-CUHdogDS.js → formatChartData.worker-t4_wCRf0.js} +62 -60
- package/dist/assets/{formatChartData.worker-M6h6qnIf.js → processTableData.worker-JSjN8c44.js} +62 -60
- package/dist/currency-D5C8SOmH.js +12 -0
- package/dist/{GlobalFilterSelect.vue_vue_type_script_setup_true_lang-DstuZr3i.js → index-DXT80H-V.js} +6897 -8853
- package/dist/{report-DSqxkGWu.js → report-Fll6MFsc.js} +1 -1
- package/dist/{useRestaurantPermission-Bj6HF5-f.js → useRestaurantPermission-D0zsFIys.js} +1 -1
- package/package.json +1 -1
- package/dist/DynamicWidget.vue_vue_type_script_setup_true_lang-D-v8cfNo.js +0 -5529
|
@@ -1,50 +1,51 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as De, computed as V, ref as T, createElementBlock as p, createCommentVNode as R, openBlock as c, createElementVNode as w, toDisplayString as k, unref as s, Fragment as ve, renderList as Se, onMounted as Me, watch as de, nextTick as Ee, resolveComponent as Ie, createVNode as Z, createTextVNode as Ft, normalizeClass as Pe, h as Ae, mergeModels as kt, useModel as _t, createBlock as me, withCtx as $e, mergeProps as St, onBeforeUnmount as je, shallowRef as gn, withDirectives as vn, isRef as It, vShow as yn } from "vue";
|
|
2
2
|
import { useRoute as xn, useRouter as wn } from "vue-router";
|
|
3
3
|
import { u as Ve, _ as ut } from "./_plugin-vue_export-helper-C6QDExPN.js";
|
|
4
4
|
import { storeToRefs as Oe } from "pinia";
|
|
5
|
-
import { r as ue, F as pe, u as Ye, a as pt, V as kn, W as _n, h as Sn } from "./app-
|
|
6
|
-
import { _ as In } from "./LocationSelect.vue_vue_type_script_setup_true_lang-
|
|
7
|
-
import { D as Cn } from "./DateRangeSelect-
|
|
5
|
+
import { r as ue, F as pe, u as Ye, a as pt, V as kn, W as _n, h as Sn } from "./app-DQmVmRnR.js";
|
|
6
|
+
import { _ as In } from "./LocationSelect.vue_vue_type_script_setup_true_lang-rIw_bBJj.js";
|
|
7
|
+
import { D as Cn } from "./DateRangeSelect-B7WdpXF2.js";
|
|
8
8
|
import { detectLocale as An } from "@feedmepos/mf-common";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
9
|
+
import { c as Tn } from "./currency-D5C8SOmH.js";
|
|
10
|
+
import { v as Ct, u as En } from "./report-Fll6MFsc.js";
|
|
11
|
+
import { r as On } from "./i18n-DbyciK4x.js";
|
|
12
|
+
const zn = {
|
|
12
13
|
key: 0,
|
|
13
14
|
class: "flex flex-col gap-4"
|
|
14
|
-
},
|
|
15
|
+
}, Nn = {
|
|
15
16
|
key: 0,
|
|
16
17
|
"data-testid": "report-canvas-activity",
|
|
17
18
|
class: "flex items-start gap-8"
|
|
18
|
-
},
|
|
19
|
+
}, $n = { class: "min-w-0 grow" }, Rn = {
|
|
19
20
|
class: "fm-typo-en-body-md-400",
|
|
20
21
|
role: "status"
|
|
21
|
-
},
|
|
22
|
+
}, Ln = {
|
|
22
23
|
key: 0,
|
|
23
24
|
"data-testid": "report-canvas-prepared",
|
|
24
25
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
|
|
25
|
-
},
|
|
26
|
+
}, Mn = {
|
|
26
27
|
key: 1,
|
|
27
28
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
|
|
28
|
-
},
|
|
29
|
+
}, Pn = {
|
|
29
30
|
key: 1,
|
|
30
31
|
"data-testid": "report-canvas-interrupted",
|
|
31
32
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
|
|
32
|
-
},
|
|
33
|
+
}, jn = {
|
|
33
34
|
key: 2,
|
|
34
35
|
"data-testid": "report-canvas-stalled",
|
|
35
36
|
class: "flex flex-col items-start gap-4"
|
|
36
|
-
}, Dn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-error" },
|
|
37
|
+
}, Dn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-error" }, Vn = {
|
|
37
38
|
key: 3,
|
|
38
39
|
"data-testid": "report-canvas-failed",
|
|
39
40
|
class: "flex flex-col gap-4"
|
|
40
|
-
},
|
|
41
|
+
}, Fn = { class: "min-w-0 grow" }, qn = { class: "fm-typo-en-body-sm-600 truncate" }, Bn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Un = ["onClick"], Hn = {
|
|
41
42
|
key: 4,
|
|
42
43
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
|
|
43
|
-
},
|
|
44
|
+
}, Wn = { key: 5 }, Gn = ["aria-expanded"], Yn = {
|
|
44
45
|
key: 0,
|
|
45
46
|
"data-testid": "report-canvas-details",
|
|
46
47
|
class: "mt-4 flex flex-col gap-4"
|
|
47
|
-
},
|
|
48
|
+
}, Jn = { class: "min-w-0 grow truncate" }, Kn = { class: "shrink-0" }, At = /* @__PURE__ */ De({
|
|
48
49
|
__name: "ReportCanvasActivity",
|
|
49
50
|
props: {
|
|
50
51
|
active: { type: Boolean },
|
|
@@ -65,48 +66,48 @@ const On = {
|
|
|
65
66
|
var x;
|
|
66
67
|
return !!((x = t.run) != null && x.runId) && t.run.status !== "running";
|
|
67
68
|
}), b = T(!1), L = V(() => t.phases.length > 0 || m.value.length > 0);
|
|
68
|
-
return (x, N) => x.active || x.interrupted || x.stale || x.retryError || y.value.length || L.value ? (c(), p("div",
|
|
69
|
-
x.active ? (c(), p("div",
|
|
69
|
+
return (x, N) => x.active || x.interrupted || x.stale || x.retryError || y.value.length || L.value ? (c(), p("div", zn, [
|
|
70
|
+
x.active ? (c(), p("div", Nn, [
|
|
70
71
|
N[2] || (N[2] = w("span", { class: "mt-2 h-12 w-12 shrink-0 animate-spin rounded-full border-2 border-fm-color-neutral-gray-200 border-t-fm-color-primary motion-reduce:animate-none" }, null, -1)),
|
|
71
|
-
w("div",
|
|
72
|
-
w("p",
|
|
73
|
-
m.value.length ? (c(), p("p",
|
|
74
|
-
x.slow ? (c(), p("p",
|
|
72
|
+
w("div", $n, [
|
|
73
|
+
w("p", Rn, k(s(r)(`reportV5.reportAi.chat.phase.${x.phase}`)), 1),
|
|
74
|
+
m.value.length ? (c(), p("p", Ln, k(s(r)("reportV5.reportAi.build.prepared", { done: h.value, total: m.value.length })), 1)) : R("", !0),
|
|
75
|
+
x.slow ? (c(), p("p", Mn, k(s(r)("reportV5.reportAi.build.slow")), 1)) : R("", !0)
|
|
75
76
|
])
|
|
76
77
|
])) : R("", !0),
|
|
77
|
-
x.interrupted ? (c(), p("p",
|
|
78
|
-
x.stale ? (c(), p("div",
|
|
78
|
+
x.interrupted ? (c(), p("p", Pn, k(s(r)("reportV5.reportAi.build.interrupted")), 1)) : R("", !0),
|
|
79
|
+
x.stale ? (c(), p("div", jn, [
|
|
79
80
|
w("p", Dn, k(s(r)("reportV5.reportAi.build.stalled")), 1),
|
|
80
81
|
w("button", {
|
|
81
82
|
class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary underline",
|
|
82
83
|
onClick: N[0] || (N[0] = (E) => a("checkStatus"))
|
|
83
84
|
}, k(s(r)("reportV5.reportAi.build.checkStatus")), 1)
|
|
84
85
|
])) : R("", !0),
|
|
85
|
-
y.value.length ? (c(), p("ul",
|
|
86
|
+
y.value.length ? (c(), p("ul", Vn, [
|
|
86
87
|
(c(!0), p(ve, null, Se(y.value, (E) => (c(), p("li", {
|
|
87
88
|
key: E.id,
|
|
88
89
|
class: "flex items-start gap-8"
|
|
89
90
|
}, [
|
|
90
|
-
w("div",
|
|
91
|
-
w("p",
|
|
91
|
+
w("div", Fn, [
|
|
92
|
+
w("p", qn, k(E.title), 1),
|
|
92
93
|
w("p", Bn, k(s(r)("reportV5.reportAi.build.failedWidget")), 1)
|
|
93
94
|
]),
|
|
94
95
|
I.value ? (c(), p("button", {
|
|
95
96
|
key: 0,
|
|
96
97
|
class: "fm-typo-en-body-sm-600 shrink-0 text-fm-color-typo-secondary underline",
|
|
97
98
|
onClick: (W) => a("retry", E.id)
|
|
98
|
-
}, k(s(r)("reportV5.reportAi.build.retry")), 9,
|
|
99
|
+
}, k(s(r)("reportV5.reportAi.build.retry")), 9, Un)) : R("", !0)
|
|
99
100
|
]))), 128))
|
|
100
101
|
])) : R("", !0),
|
|
101
|
-
x.retryError ? (c(), p("p",
|
|
102
|
-
L.value ? (c(), p("div",
|
|
102
|
+
x.retryError ? (c(), p("p", Hn, k(s(r)("reportV5.reportAi.build.retryFailed")), 1)) : R("", !0),
|
|
103
|
+
L.value ? (c(), p("div", Wn, [
|
|
103
104
|
w("button", {
|
|
104
105
|
"data-testid": "report-canvas-details-toggle",
|
|
105
106
|
class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary",
|
|
106
107
|
"aria-expanded": b.value,
|
|
107
108
|
onClick: N[1] || (N[1] = (E) => b.value = !b.value)
|
|
108
|
-
}, k(b.value ? "▾" : "▸") + " " + k(s(r)("reportV5.reportAi.build.details")), 9,
|
|
109
|
-
b.value ? (c(), p("div",
|
|
109
|
+
}, k(b.value ? "▾" : "▸") + " " + k(s(r)("reportV5.reportAi.build.details")), 9, Gn),
|
|
110
|
+
b.value ? (c(), p("div", Yn, [
|
|
110
111
|
(c(!0), p(ve, null, Se(x.phases, (E) => (c(), p("p", {
|
|
111
112
|
key: E,
|
|
112
113
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
|
|
@@ -115,28 +116,28 @@ const On = {
|
|
|
115
116
|
key: E.id,
|
|
116
117
|
class: "fm-typo-en-body-sm-400 flex gap-8 text-fm-color-typo-secondary"
|
|
117
118
|
}, [
|
|
118
|
-
w("span",
|
|
119
|
+
w("span", Jn, k(E.title), 1),
|
|
119
120
|
w("span", Kn, k(s(r)(`reportV5.reportAi.build.state.${E.status}`)), 1)
|
|
120
121
|
]))), 128))
|
|
121
122
|
])) : R("", !0)
|
|
122
123
|
])) : R("", !0)
|
|
123
124
|
])) : R("", !0);
|
|
124
125
|
}
|
|
125
|
-
}),
|
|
126
|
+
}), Xn = { class: "flex flex-col items-stretch gap-8 px-[20px] pb-16 pt-12" }, Qn = {
|
|
126
127
|
key: 0,
|
|
127
128
|
"data-testid": "chat-edit-target-context",
|
|
128
129
|
class: "fm-typo-en-body-sm-400 line-clamp-1 text-fm-color-typo-secondary"
|
|
129
|
-
},
|
|
130
|
+
}, Zn = {
|
|
130
131
|
key: 1,
|
|
131
132
|
role: "alert",
|
|
132
133
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
|
|
133
|
-
},
|
|
134
|
+
}, ea = {
|
|
134
135
|
"data-testid": "report-canvas-chat-input",
|
|
135
136
|
class: "rounded-lg border border-fm-color-border-secondary bg-fm-color-neutral-white p-16 focus-within:border-fm-color-primary"
|
|
136
|
-
},
|
|
137
|
+
}, ta = ["value", "placeholder", "aria-label"], na = { class: "mt-16 flex items-center gap-12" }, aa = ["aria-label"], ra = { class: "fm-typo-en-body-sm-400 min-w-0 grow truncate" }, oa = {
|
|
137
138
|
key: 0,
|
|
138
139
|
"data-testid": "chat-edit-target-element"
|
|
139
|
-
},
|
|
140
|
+
}, ia = ["disabled", "aria-label"], sa = ["disabled", "aria-label"], la = { class: "text-[12px] leading-16 text-fm-color-typo-secondary" }, Tt = 21, fa = /* @__PURE__ */ De({
|
|
140
141
|
__name: "ReportCanvasComposer",
|
|
141
142
|
props: {
|
|
142
143
|
draft: {},
|
|
@@ -166,14 +167,14 @@ const On = {
|
|
|
166
167
|
function W() {
|
|
167
168
|
E.value && r("submit");
|
|
168
169
|
}
|
|
169
|
-
function
|
|
170
|
+
function D() {
|
|
170
171
|
var O;
|
|
171
172
|
(O = I.value) == null || O.focus();
|
|
172
173
|
}
|
|
173
|
-
e({ focus:
|
|
174
|
+
e({ focus: D });
|
|
174
175
|
const Y = V(() => {
|
|
175
|
-
var
|
|
176
|
-
const O = (
|
|
176
|
+
var K;
|
|
177
|
+
const O = (K = a.target) == null ? void 0 : K.element;
|
|
177
178
|
if (!O) return "";
|
|
178
179
|
const G = (O.text || "").trim();
|
|
179
180
|
return G ? G.slice(0, 40) : O.part || O.tag;
|
|
@@ -184,11 +185,11 @@ const On = {
|
|
|
184
185
|
);
|
|
185
186
|
return (O, G) => {
|
|
186
187
|
var F;
|
|
187
|
-
const
|
|
188
|
-
return c(), p("div",
|
|
189
|
-
(F = O.target) != null && F.elementText ? (c(), p("p",
|
|
190
|
-
O.targetStale && !O.streaming ? (c(), p("p",
|
|
191
|
-
w("div",
|
|
188
|
+
const K = Ie("FmIcon");
|
|
189
|
+
return c(), p("div", Xn, [
|
|
190
|
+
(F = O.target) != null && F.elementText ? (c(), p("p", Qn, " “" + k(O.target.elementText) + "” ", 1)) : R("", !0),
|
|
191
|
+
O.targetStale && !O.streaming ? (c(), p("p", Zn, k(s(m)("reportV5.reportAi.chat.staleTarget")), 1)) : R("", !0),
|
|
192
|
+
w("div", ea, [
|
|
192
193
|
w("textarea", {
|
|
193
194
|
ref_key: "field",
|
|
194
195
|
ref: I,
|
|
@@ -199,10 +200,10 @@ const On = {
|
|
|
199
200
|
class: "fm-typo-en-body-md-400 block w-full resize-none border-0 bg-transparent !leading-[21px] outline-none placeholder:text-fm-color-typo-secondary",
|
|
200
201
|
onInput: x,
|
|
201
202
|
onKeydown: N,
|
|
202
|
-
onCompositionstart: G[0] || (G[0] = (
|
|
203
|
-
onCompositionend: G[1] || (G[1] = (
|
|
204
|
-
}, null, 40,
|
|
205
|
-
w("div",
|
|
203
|
+
onCompositionstart: G[0] || (G[0] = (q) => b.value = !0),
|
|
204
|
+
onCompositionend: G[1] || (G[1] = (q) => b.value = !1)
|
|
205
|
+
}, null, 40, ta),
|
|
206
|
+
w("div", na, [
|
|
206
207
|
w("div", {
|
|
207
208
|
"data-testid": "chat-edit-target",
|
|
208
209
|
role: "status",
|
|
@@ -211,14 +212,14 @@ const On = {
|
|
|
211
212
|
}) : s(m)("reportV5.reportAi.chat.entireReport"),
|
|
212
213
|
class: "flex min-w-0 grow items-center gap-8 text-fm-color-typo-secondary"
|
|
213
214
|
}, [
|
|
214
|
-
Z(
|
|
215
|
+
Z(K, {
|
|
215
216
|
name: O.target ? "mode_comment" : "dashboard",
|
|
216
217
|
size: "sm",
|
|
217
218
|
outline: ""
|
|
218
219
|
}, null, 8, ["name"]),
|
|
219
|
-
w("p",
|
|
220
|
+
w("p", ra, [
|
|
220
221
|
Ft(k(O.target ? O.target.label || s(m)("reportV5.reportAi.chat.selectedWidget") : s(m)("reportV5.reportAi.chat.entireReport")), 1),
|
|
221
|
-
Y.value ? (c(), p("span",
|
|
222
|
+
Y.value ? (c(), p("span", oa, " › " + k(Y.value), 1)) : R("", !0)
|
|
222
223
|
]),
|
|
223
224
|
O.target ? (c(), p("button", {
|
|
224
225
|
key: 0,
|
|
@@ -227,14 +228,14 @@ const On = {
|
|
|
227
228
|
"aria-label": s(m)(
|
|
228
229
|
O.target.element ? "reportV5.reportAi.chat.removeElement" : "reportV5.reportAi.chat.removeTarget"
|
|
229
230
|
),
|
|
230
|
-
onClick: G[2] || (G[2] = (
|
|
231
|
+
onClick: G[2] || (G[2] = (q) => r("clearTarget"))
|
|
231
232
|
}, [
|
|
232
|
-
Z(
|
|
233
|
+
Z(K, {
|
|
233
234
|
name: "close",
|
|
234
235
|
size: "sm"
|
|
235
236
|
})
|
|
236
|
-
], 8,
|
|
237
|
-
], 8,
|
|
237
|
+
], 8, ia)) : R("", !0)
|
|
238
|
+
], 8, aa),
|
|
238
239
|
w("button", {
|
|
239
240
|
"data-testid": "report-canvas-chat-send",
|
|
240
241
|
class: Pe([
|
|
@@ -245,20 +246,20 @@ const On = {
|
|
|
245
246
|
"aria-label": s(m)("reportV5.reportAi.chat.send"),
|
|
246
247
|
onClick: W
|
|
247
248
|
}, [
|
|
248
|
-
Z(
|
|
249
|
+
Z(K, {
|
|
249
250
|
name: "arrow_forward",
|
|
250
251
|
size: "sm"
|
|
251
252
|
})
|
|
252
|
-
], 10,
|
|
253
|
+
], 10, sa)
|
|
253
254
|
])
|
|
254
255
|
]),
|
|
255
|
-
w("p",
|
|
256
|
+
w("p", la, k(O.streaming && O.draft.trim() ? s(m)("reportV5.reportAi.chat.waitForUpdate") : s(m)("reportV5.reportAi.chat.newLineHint")), 1)
|
|
256
257
|
]);
|
|
257
258
|
};
|
|
258
259
|
}
|
|
259
|
-
}),
|
|
260
|
+
}), da = "rounded-sm bg-fm-color-neutral-gray-100 px-4 font-mono text-[0.9em]";
|
|
260
261
|
function Et(o) {
|
|
261
|
-
return o.map((e) => e.type === "strong" ? Ae("strong", { class: "font-semibold" }, e.text) : e.type === "em" ? Ae("em", e.text) : e.type === "code" ? Ae("code", { class:
|
|
262
|
+
return o.map((e) => e.type === "strong" ? Ae("strong", { class: "font-semibold" }, e.text) : e.type === "em" ? Ae("em", e.text) : e.type === "code" ? Ae("code", { class: da }, e.text) : e.type === "link" ? Ae(
|
|
262
263
|
"a",
|
|
263
264
|
{
|
|
264
265
|
href: e.href,
|
|
@@ -269,7 +270,7 @@ function Et(o) {
|
|
|
269
270
|
e.text
|
|
270
271
|
) : e.text);
|
|
271
272
|
}
|
|
272
|
-
const
|
|
273
|
+
const ca = (o) => Ae(
|
|
273
274
|
"div",
|
|
274
275
|
{ class: "fm-typo-en-body-md-400 flex flex-col items-stretch gap-8 !leading-[21px]" },
|
|
275
276
|
(o.blocks ?? []).map((e) => e.type === "pre" ? Ae(
|
|
@@ -287,7 +288,7 @@ const da = (o) => Ae(
|
|
|
287
288
|
{ class: e.heading ? "fm-typo-en-body-md-600" : void 0 },
|
|
288
289
|
Et(e.inline)
|
|
289
290
|
))
|
|
290
|
-
),
|
|
291
|
+
), ma = ["aria-expanded"], ua = /* @__PURE__ */ De({
|
|
291
292
|
__name: "ReportCanvasMessage",
|
|
292
293
|
props: {
|
|
293
294
|
blocks: {},
|
|
@@ -301,17 +302,17 @@ const da = (o) => Ae(
|
|
|
301
302
|
);
|
|
302
303
|
const r = V(() => e.preview && !a.value ? e.preview : e.blocks);
|
|
303
304
|
return (m, h) => (c(), p("div", null, [
|
|
304
|
-
Z(s(
|
|
305
|
+
Z(s(ca), { blocks: r.value }, null, 8, ["blocks"]),
|
|
305
306
|
m.preview ? (c(), p("button", {
|
|
306
307
|
key: 0,
|
|
307
308
|
"data-testid": "report-canvas-full-reply",
|
|
308
309
|
class: "fm-typo-en-body-sm-600 mt-4 text-fm-color-typo-secondary underline",
|
|
309
310
|
"aria-expanded": a.value,
|
|
310
311
|
onClick: h[0] || (h[0] = (y) => a.value = !a.value)
|
|
311
|
-
}, k(s(t)(a.value ? "reportV5.reportAi.chat.showLess" : "reportV5.reportAi.chat.showFullReply")), 9,
|
|
312
|
+
}, k(s(t)(a.value ? "reportV5.reportAi.chat.showLess" : "reportV5.reportAi.chat.showFullReply")), 9, ma)) : R("", !0)
|
|
312
313
|
]));
|
|
313
314
|
}
|
|
314
|
-
}),
|
|
315
|
+
}), pa = /^(?:https?:\/\/|mailto:)[^\s]+$/i, rt = /`([^`]+)`|(!?)\[([^\]]*)\]\(([^)\s]*)\)|\*\*([\s\S]+?)\*\*|\*([^*\n]+)\*/g;
|
|
315
316
|
function ot(o, e) {
|
|
316
317
|
if (!e) return;
|
|
317
318
|
const t = o[o.length - 1];
|
|
@@ -324,11 +325,11 @@ function it(o) {
|
|
|
324
325
|
for (let a = rt.exec(o); a; a = rt.exec(o)) {
|
|
325
326
|
ot(e, o.slice(t, a.index)), t = a.index + a[0].length;
|
|
326
327
|
const [, r, m, h, y, I, b] = a;
|
|
327
|
-
r !== void 0 ? e.push({ type: "code", text: r }) : h !== void 0 ? !m &&
|
|
328
|
+
r !== void 0 ? e.push({ type: "code", text: r }) : h !== void 0 ? !m && pa.test(y) ? e.push({ type: "link", text: h || y, href: y }) : ot(e, a[0]) : I !== void 0 ? e.push({ type: "strong", text: I }) : b !== void 0 && e.push({ type: "em", text: b });
|
|
328
329
|
}
|
|
329
330
|
return ot(e, o.slice(t)), e;
|
|
330
331
|
}
|
|
331
|
-
const
|
|
332
|
+
const ha = /^\s*```/, ba = /^\s{0,3}(#{1,6})\s+(.*)$/, ga = /^\s*[-*+]\s+(.*)$/, va = /^\s*\d{1,3}[.)]\s+(.*)$/;
|
|
332
333
|
function Ot(o) {
|
|
333
334
|
const e = [], t = String(o ?? "").split(/\r?\n/);
|
|
334
335
|
let a = [], r = null, m = null;
|
|
@@ -342,7 +343,7 @@ function Ot(o) {
|
|
|
342
343
|
h(), y();
|
|
343
344
|
}
|
|
344
345
|
for (const b of t) {
|
|
345
|
-
if (
|
|
346
|
+
if (ha.test(b)) {
|
|
346
347
|
m ? (e.push({ type: "pre", text: m.join(`
|
|
347
348
|
`) }), m = null) : (I(), m = []);
|
|
348
349
|
continue;
|
|
@@ -351,7 +352,7 @@ function Ot(o) {
|
|
|
351
352
|
m.push(b);
|
|
352
353
|
continue;
|
|
353
354
|
}
|
|
354
|
-
const L =
|
|
355
|
+
const L = ba.exec(b), x = ga.exec(b), N = va.exec(b);
|
|
355
356
|
if (!b.trim())
|
|
356
357
|
I();
|
|
357
358
|
else if (L)
|
|
@@ -366,13 +367,13 @@ function Ot(o) {
|
|
|
366
367
|
return m != null && m.length && e.push({ type: "pre", text: m.join(`
|
|
367
368
|
`) }), I(), e;
|
|
368
369
|
}
|
|
369
|
-
function
|
|
370
|
+
function ya(o, e) {
|
|
370
371
|
const t = String(o ?? "").trim();
|
|
371
372
|
if (t.length <= e) return t;
|
|
372
373
|
const a = t.slice(0, e), r = a.lastIndexOf(" ");
|
|
373
374
|
return `${(r > e * 0.6 ? a.slice(0, r) : a).trimEnd()}…`;
|
|
374
375
|
}
|
|
375
|
-
const zt = 600,
|
|
376
|
+
const zt = 600, xa = {
|
|
376
377
|
discovery: "reviewing",
|
|
377
378
|
grounding_probe: "reviewing",
|
|
378
379
|
option_probe: "reviewing",
|
|
@@ -409,14 +410,14 @@ const zt = 600, ya = {
|
|
|
409
410
|
lazy_forced: "updating",
|
|
410
411
|
manifest_unbound: "updating",
|
|
411
412
|
rendered: "loading"
|
|
412
|
-
},
|
|
413
|
-
function
|
|
414
|
-
return o &&
|
|
413
|
+
}, wa = /* @__PURE__ */ new Set(["plan", "edit-target", "error", "turn_stats"]);
|
|
414
|
+
function qt(o) {
|
|
415
|
+
return o && xa[o] || "working";
|
|
415
416
|
}
|
|
416
|
-
function
|
|
417
|
+
function ka(o) {
|
|
417
418
|
const e = [];
|
|
418
419
|
for (const t of o) {
|
|
419
|
-
const a =
|
|
420
|
+
const a = qt(t);
|
|
420
421
|
e.includes(a) || e.push(a);
|
|
421
422
|
}
|
|
422
423
|
return e.slice(-4);
|
|
@@ -426,28 +427,28 @@ function st(o) {
|
|
|
426
427
|
|
|
427
428
|
`);
|
|
428
429
|
}
|
|
429
|
-
function
|
|
430
|
+
function _a(o) {
|
|
430
431
|
const e = [];
|
|
431
432
|
for (const t of o) {
|
|
432
433
|
const a = t.type.startsWith("tool-") || t.type.startsWith("data-") ? t.type.slice(5) : "";
|
|
433
|
-
a && !
|
|
434
|
+
a && !wa.has(a) && e.push(a);
|
|
434
435
|
}
|
|
435
436
|
return e;
|
|
436
437
|
}
|
|
437
|
-
function
|
|
438
|
+
function Sa(o) {
|
|
438
439
|
var a;
|
|
439
440
|
const e = o.find((r) => r.type === "data-turn_stats"), t = (a = e == null ? void 0 : e.data) == null ? void 0 : a.ms;
|
|
440
441
|
return typeof t == "number" && t >= 0 ? t : void 0;
|
|
441
442
|
}
|
|
442
|
-
function
|
|
443
|
+
function Ia(o) {
|
|
443
444
|
const e = o / 1e3;
|
|
444
445
|
return e < 60 ? `${e.toFixed(1)}s` : `${Math.floor(e / 60)}m ${String(Math.round(e % 60)).padStart(2, "0")}s`;
|
|
445
446
|
}
|
|
446
|
-
function
|
|
447
|
+
function Ca(o) {
|
|
447
448
|
const e = o.find((t) => t.type === "data-edit-target");
|
|
448
449
|
return e ? e.data : void 0;
|
|
449
450
|
}
|
|
450
|
-
function
|
|
451
|
+
function Aa(o) {
|
|
451
452
|
const e = [[]];
|
|
452
453
|
for (const t of o)
|
|
453
454
|
t.type === "step-start" ? e.push([]) : e[e.length - 1].push(t);
|
|
@@ -456,19 +457,19 @@ function Ca(o) {
|
|
|
456
457
|
function Nt(o) {
|
|
457
458
|
return o.some((e) => e.type.startsWith("tool-"));
|
|
458
459
|
}
|
|
459
|
-
function
|
|
460
|
+
function Ta(o, e = {}) {
|
|
460
461
|
var a;
|
|
461
462
|
const t = [];
|
|
462
463
|
for (const r of o ?? []) {
|
|
463
|
-
const m = r.parts ?? [], h =
|
|
464
|
+
const m = r.parts ?? [], h = _a(m), y = Ca(m);
|
|
464
465
|
if (r.role === "user") {
|
|
465
|
-
const
|
|
466
|
+
const D = st(m);
|
|
466
467
|
t.push({
|
|
467
468
|
id: r.id,
|
|
468
469
|
turnId: r.turnId ?? r.id,
|
|
469
470
|
role: "user",
|
|
470
471
|
target: y,
|
|
471
|
-
answer:
|
|
472
|
+
answer: D,
|
|
472
473
|
blocks: [],
|
|
473
474
|
preview: null,
|
|
474
475
|
signals: [],
|
|
@@ -477,7 +478,7 @@ function Aa(o, e = {}) {
|
|
|
477
478
|
});
|
|
478
479
|
continue;
|
|
479
480
|
}
|
|
480
|
-
const I = !!e.streamingId && r.id === e.streamingId, b =
|
|
481
|
+
const I = !!e.streamingId && r.id === e.streamingId, b = Aa(m), L = b[b.length - 1] ?? [], x = b.some(Nt), N = x && !m.some((D) => D.type === "step-start");
|
|
481
482
|
let E = "";
|
|
482
483
|
I || (!x || N ? E = st(m) : Nt(L) || (E = st(L)));
|
|
483
484
|
const W = !!E && (N || E.length > zt);
|
|
@@ -488,71 +489,71 @@ function Aa(o, e = {}) {
|
|
|
488
489
|
target: y,
|
|
489
490
|
answer: E,
|
|
490
491
|
blocks: E ? Ot(E) : [],
|
|
491
|
-
preview: W ? Ot(
|
|
492
|
+
preview: W ? Ot(ya(E, zt)) : null,
|
|
492
493
|
signals: h,
|
|
493
494
|
pending: I,
|
|
494
495
|
noSummary: !I && !E && x,
|
|
495
|
-
ms: I ? void 0 :
|
|
496
|
+
ms: I ? void 0 : Sa(m) ?? ((a = r.stats) == null ? void 0 : a.ms)
|
|
496
497
|
});
|
|
497
498
|
}
|
|
498
499
|
return t;
|
|
499
500
|
}
|
|
500
|
-
const
|
|
501
|
+
const Ea = ["aria-label"], Oa = { class: "flex h-64 shrink-0 items-center gap-12 border-b border-fm-color-border-secondary px-[20px]" }, za = { class: "min-w-0 grow" }, Na = { class: "fm-typo-en-body-md-600" }, $a = {
|
|
501
502
|
key: 0,
|
|
502
503
|
class: "fm-typo-en-body-sm-400 truncate text-fm-color-typo-secondary"
|
|
503
|
-
},
|
|
504
|
+
}, Ra = ["disabled", "aria-label"], La = ["disabled", "aria-label", "title"], Ma = ["aria-label"], Pa = ["data-testid", "aria-label"], ja = {
|
|
504
505
|
key: 0,
|
|
505
506
|
class: "mt-auto flex shrink-0 flex-col gap-24 pb-8 pt-32"
|
|
506
|
-
}, Da = { class: "text-center" },
|
|
507
|
+
}, Da = { class: "text-center" }, Va = { class: "text-[24px] font-semibold leading-tight tracking-tight text-fm-color-typo-primary" }, Fa = { class: "fm-typo-en-body-sm-400 mt-12 text-fm-color-typo-secondary" }, qa = {
|
|
507
508
|
key: 0,
|
|
508
509
|
class: "flex flex-col gap-4"
|
|
509
|
-
}, Ba = ["disabled", "title", "onClick"],
|
|
510
|
+
}, Ba = ["disabled", "title", "onClick"], Ua = ["aria-label"], Ha = { class: "fm-typo-en-body-sm-600 mb-12 text-fm-color-typo-secondary" }, Wa = {
|
|
510
511
|
key: 0,
|
|
511
512
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
|
|
512
|
-
},
|
|
513
|
+
}, Ga = {
|
|
513
514
|
key: 1,
|
|
514
515
|
"data-testid": "report-canvas-chat-list-error",
|
|
515
516
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
|
|
516
|
-
},
|
|
517
|
+
}, Ya = {
|
|
517
518
|
key: 2,
|
|
518
519
|
class: "fm-typo-en-body-sm-400 py-12 text-fm-color-typo-secondary"
|
|
519
|
-
},
|
|
520
|
+
}, Ja = {
|
|
520
521
|
key: 0,
|
|
521
522
|
class: "fm-typo-en-body-sm-400 mb-8 text-fm-color-typo-secondary"
|
|
522
|
-
}, Ka = ["disabled", "aria-current", "title", "onClick"],
|
|
523
|
+
}, Ka = ["disabled", "aria-current", "title", "onClick"], Xa = { class: "fm-typo-en-body-md-400 min-w-0 grow truncate" }, Qa = ["datetime"], Za = ["disabled"], er = ["disabled"], tr = {
|
|
523
524
|
key: 2,
|
|
524
525
|
"data-testid": "report-canvas-chat-error",
|
|
525
526
|
class: "fm-typo-en-body-sm-400 mt-12 text-fm-color-typo-error"
|
|
526
|
-
},
|
|
527
|
+
}, nr = {
|
|
527
528
|
key: 1,
|
|
528
529
|
class: "relative flex min-h-0 grow flex-col"
|
|
529
|
-
},
|
|
530
|
+
}, ar = {
|
|
530
531
|
key: 0,
|
|
531
532
|
"data-testid": "report-canvas-chat-loading",
|
|
532
533
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
|
|
533
|
-
},
|
|
534
|
+
}, rr = ["disabled"], or = {
|
|
534
535
|
key: 0,
|
|
535
536
|
"data-testid": "chat-message-target",
|
|
536
537
|
class: "fm-typo-en-body-sm-600 mb-4 text-right text-fm-color-typo-secondary"
|
|
537
|
-
},
|
|
538
|
+
}, ir = {
|
|
538
539
|
key: 1,
|
|
539
540
|
class: "flex flex-col items-end"
|
|
540
|
-
},
|
|
541
|
+
}, sr = {
|
|
541
542
|
key: 0,
|
|
542
543
|
"data-testid": "chat-message-unsent",
|
|
543
544
|
class: "fm-typo-en-body-sm-400 mt-4 text-fm-color-typo-secondary"
|
|
544
|
-
},
|
|
545
|
+
}, lr = ["disabled", "onClick"], fr = ["disabled", "onClick"], dr = {
|
|
545
546
|
key: 2,
|
|
546
547
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
|
|
547
|
-
},
|
|
548
|
+
}, cr = {
|
|
548
549
|
key: 3,
|
|
549
550
|
"data-testid": "report-canvas-answer-duration",
|
|
550
551
|
class: "fm-typo-en-body-sm-400 mt-4 text-fm-color-typo-secondary"
|
|
551
|
-
},
|
|
552
|
+
}, mr = {
|
|
552
553
|
key: 2,
|
|
553
554
|
"data-testid": "report-canvas-chat-error",
|
|
554
555
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-error"
|
|
555
|
-
},
|
|
556
|
+
}, ur = { class: "shrink-0" }, $t = "New chat", pr = 24 * 60 * 60 * 1e3, hr = 80, br = /* @__PURE__ */ De({
|
|
556
557
|
__name: "ReportCanvasChatPanel",
|
|
557
558
|
props: /* @__PURE__ */ kt({
|
|
558
559
|
messages: {},
|
|
@@ -611,7 +612,7 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
611
612
|
function W() {
|
|
612
613
|
y.value = !0, a("loadChats");
|
|
613
614
|
}
|
|
614
|
-
function
|
|
615
|
+
function D() {
|
|
615
616
|
y.value ? y.value = !1 : E();
|
|
616
617
|
}
|
|
617
618
|
function Y(n) {
|
|
@@ -643,18 +644,18 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
643
644
|
n.setHours(0, 0, 0, 0);
|
|
644
645
|
const i = [];
|
|
645
646
|
for (const f of t.chats ?? []) {
|
|
646
|
-
const A = new Date(f.lastMessageAt).getTime(), P = A >= n.getTime() ? "today" : A >= n.getTime() -
|
|
647
|
-
(i.find((
|
|
647
|
+
const A = new Date(f.lastMessageAt).getTime(), P = A >= n.getTime() ? "today" : A >= n.getTime() - pr ? "yesterday" : "earlier";
|
|
648
|
+
(i.find((j) => j.key === P) ?? (i.push({ key: P, label: r(`reportV5.reportAi.chat.group.${P}`), chats: [] }), i[i.length - 1])).chats.push(f);
|
|
648
649
|
}
|
|
649
650
|
return i;
|
|
650
651
|
});
|
|
651
|
-
function
|
|
652
|
+
function K(n) {
|
|
652
653
|
return new Date(n.lastMessageAt).toLocaleString(m.value, {
|
|
653
654
|
month: "short",
|
|
654
655
|
day: "numeric"
|
|
655
656
|
});
|
|
656
657
|
}
|
|
657
|
-
const F = V(() => new Set(t.undoableTurnIds ?? [])),
|
|
658
|
+
const F = V(() => new Set(t.undoableTurnIds ?? [])), q = V(() => new Set(t.unsentIds ?? [])), _ = T();
|
|
658
659
|
de(
|
|
659
660
|
() => t.target,
|
|
660
661
|
async (n) => {
|
|
@@ -664,15 +665,15 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
664
665
|
{ immediate: !0 }
|
|
665
666
|
);
|
|
666
667
|
const z = V(
|
|
667
|
-
() =>
|
|
668
|
+
() => Ta(t.messages ?? [], {
|
|
668
669
|
streamingId: t.streaming ? t.turnId : void 0
|
|
669
670
|
})
|
|
670
671
|
), g = V(
|
|
671
672
|
() => t.streaming ? z.value.findIndex((n) => n.pending) : -1
|
|
672
|
-
), H = V(() => z.value.findIndex((n) => n.id === t.runAnchorId)),
|
|
673
|
+
), H = V(() => z.value.findIndex((n) => n.id === t.runAnchorId)), J = V(
|
|
673
674
|
() => g.value < 0 && (t.streaming || t.interrupted) || H.value < 0 && !!t.run
|
|
674
675
|
), ee = V(
|
|
675
|
-
() => h.value || !t.earlier && !N.value && !z.value.length && !
|
|
676
|
+
() => h.value || !t.earlier && !N.value && !z.value.length && !J.value
|
|
676
677
|
), X = V(() => (t.chats ?? []).slice(0, 3)), se = V(
|
|
677
678
|
() => {
|
|
678
679
|
var n;
|
|
@@ -696,7 +697,7 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
696
697
|
active: i && t.streaming || f && ((A = t.run) == null ? void 0 : A.status) === "running" && !t.runStale,
|
|
697
698
|
// a run card left behind by a newer streaming turn shows its own work, not that turn's phase
|
|
698
699
|
phase: i || !t.streaming ? t.phase : "updating",
|
|
699
|
-
phases:
|
|
700
|
+
phases: ka(((P = z.value[n]) == null ? void 0 : P.signals) ?? []),
|
|
700
701
|
run: f ? t.run : null,
|
|
701
702
|
slow: i && t.slow,
|
|
702
703
|
stale: f && t.runStale,
|
|
@@ -720,7 +721,7 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
720
721
|
const xe = T(), C = T(!0), u = T(!1);
|
|
721
722
|
function S() {
|
|
722
723
|
const n = xe.value;
|
|
723
|
-
n && (C.value = n.scrollHeight - n.scrollTop - n.clientHeight <=
|
|
724
|
+
n && (C.value = n.scrollHeight - n.scrollTop - n.clientHeight <= hr, C.value && (u.value = !1));
|
|
724
725
|
}
|
|
725
726
|
async function M() {
|
|
726
727
|
await Ee();
|
|
@@ -749,10 +750,10 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
749
750
|
"aria-label": s(r)("reportV5.reportAi.chat.title"),
|
|
750
751
|
onKeydown: O
|
|
751
752
|
}, [
|
|
752
|
-
w("header",
|
|
753
|
-
w("div",
|
|
754
|
-
w("h2",
|
|
755
|
-
!ee.value && n.chatTitle && n.chatTitle !== $t ? (c(), p("p",
|
|
753
|
+
w("header", Oa, [
|
|
754
|
+
w("div", za, [
|
|
755
|
+
w("h2", Na, k(s(r)("reportV5.reportAi.chat.title")), 1),
|
|
756
|
+
!ee.value && n.chatTitle && n.chatTitle !== $t ? (c(), p("p", $a, k(n.chatTitle), 1)) : R("", !0)
|
|
756
757
|
]),
|
|
757
758
|
!h.value || y.value ? (c(), me(A, {
|
|
758
759
|
key: 0,
|
|
@@ -765,13 +766,13 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
765
766
|
class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
|
|
766
767
|
disabled: n.busy,
|
|
767
768
|
"aria-label": y.value ? s(r)("reportV5.reportAi.chat.recentChats") : s(r)("reportV5.reportAi.chat.openChats", { title: L.value }),
|
|
768
|
-
onClick:
|
|
769
|
+
onClick: D
|
|
769
770
|
}, [
|
|
770
771
|
Z(f, {
|
|
771
772
|
name: "chevron_left",
|
|
772
773
|
size: "md"
|
|
773
774
|
})
|
|
774
|
-
], 8,
|
|
775
|
+
], 8, Ra)
|
|
775
776
|
]),
|
|
776
777
|
_: 1
|
|
777
778
|
}, 8, ["content"])) : R("", !0),
|
|
@@ -794,7 +795,7 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
794
795
|
size: "md",
|
|
795
796
|
outline: ""
|
|
796
797
|
})
|
|
797
|
-
], 8,
|
|
798
|
+
], 8, La)
|
|
798
799
|
]),
|
|
799
800
|
_: 1
|
|
800
801
|
}, 8, ["content"])),
|
|
@@ -807,13 +808,13 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
807
808
|
"data-testid": "report-canvas-chat-close",
|
|
808
809
|
class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
|
|
809
810
|
"aria-label": s(r)("reportV5.reportAi.chat.hide"),
|
|
810
|
-
onClick: i[0] || (i[0] = (
|
|
811
|
+
onClick: i[0] || (i[0] = (j) => a("close"))
|
|
811
812
|
}, [
|
|
812
813
|
Z(f, {
|
|
813
814
|
name: "close",
|
|
814
815
|
size: "md"
|
|
815
816
|
})
|
|
816
|
-
], 8,
|
|
817
|
+
], 8, Ma)
|
|
817
818
|
]),
|
|
818
819
|
_: 1
|
|
819
820
|
}, 8, ["content"])
|
|
@@ -824,23 +825,23 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
824
825
|
class: "flex min-h-0 grow flex-col overflow-y-auto px-[20px] py-24",
|
|
825
826
|
"aria-label": s(r)("reportV5.reportAi.chat.chats")
|
|
826
827
|
}, [
|
|
827
|
-
y.value ? R("", !0) : (c(), p("div",
|
|
828
|
+
y.value ? R("", !0) : (c(), p("div", ja, [
|
|
828
829
|
w("div", Da, [
|
|
829
|
-
w("h3",
|
|
830
|
-
w("p",
|
|
830
|
+
w("h3", Va, k(s(r)("reportV5.reportAi.chat.exploreTitle")), 1),
|
|
831
|
+
w("p", Fa, k(s(r)(
|
|
831
832
|
n.blank ? "reportV5.reportAi.chat.placeholderNew" : "reportV5.reportAi.chat.exploreHint"
|
|
832
833
|
)), 1)
|
|
833
834
|
]),
|
|
834
|
-
le.value.length ? (c(), p("div",
|
|
835
|
-
(c(!0), p(ve, null, Se(le.value, (
|
|
836
|
-
key:
|
|
835
|
+
le.value.length ? (c(), p("div", qa, [
|
|
836
|
+
(c(!0), p(ve, null, Se(le.value, (j) => (c(), p("button", {
|
|
837
|
+
key: j.label,
|
|
837
838
|
"data-testid": "report-canvas-suggestion",
|
|
838
839
|
class: "chat-row fm-typo-en-body-md-600 flex w-full items-center justify-between gap-12 rounded-md px-8 py-12 text-left text-fm-color-primary",
|
|
839
840
|
disabled: n.busy,
|
|
840
|
-
title:
|
|
841
|
-
onClick: (re) => oe(
|
|
841
|
+
title: j.prompt,
|
|
842
|
+
onClick: (re) => oe(j.prompt)
|
|
842
843
|
}, [
|
|
843
|
-
w("span", null, k(
|
|
844
|
+
w("span", null, k(j.label), 1),
|
|
844
845
|
Z(f, {
|
|
845
846
|
name: "chevron_right",
|
|
846
847
|
size: "sm",
|
|
@@ -854,15 +855,15 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
854
855
|
class: "shrink-0 pt-24",
|
|
855
856
|
"aria-label": s(r)("reportV5.reportAi.chat.recentChats")
|
|
856
857
|
}, [
|
|
857
|
-
w("h3",
|
|
858
|
+
w("h3", Ha, k(s(r)(
|
|
858
859
|
y.value ? "reportV5.reportAi.chat.yourChats" : "reportV5.reportAi.chat.recentChats"
|
|
859
860
|
)), 1),
|
|
860
|
-
n.chatsLoading && !((P = n.chats) != null && P.length) ? (c(), p("p",
|
|
861
|
-
key:
|
|
861
|
+
n.chatsLoading && !((P = n.chats) != null && P.length) ? (c(), p("p", Wa, k(s(r)("reportV5.reportAi.chat.loadingChats")), 1)) : n.chatsError ? (c(), p("p", Ga, k(n.chatsError), 1)) : ($ = n.chats) != null && $.length ? (c(!0), p(ve, { key: 3 }, Se(ce.value, (j) => (c(), p("section", {
|
|
862
|
+
key: j.key,
|
|
862
863
|
class: Pe(y.value ? "mb-16" : "")
|
|
863
864
|
}, [
|
|
864
|
-
|
|
865
|
-
(c(!0), p(ve, null, Se(
|
|
865
|
+
j.label ? (c(), p("p", Ja, k(j.label), 1)) : R("", !0),
|
|
866
|
+
(c(!0), p(ve, null, Se(j.chats, (re) => (c(), p("button", {
|
|
866
867
|
key: re.id,
|
|
867
868
|
"data-testid": "report-canvas-chat-list-item",
|
|
868
869
|
class: "chat-row flex w-full items-center gap-12 rounded-md px-8 py-12 text-left",
|
|
@@ -871,73 +872,73 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
871
872
|
title: re.title,
|
|
872
873
|
onClick: (be) => Y(re.id)
|
|
873
874
|
}, [
|
|
874
|
-
w("span",
|
|
875
|
+
w("span", Xa, k(re.title), 1),
|
|
875
876
|
w("time", {
|
|
876
877
|
datetime: re.lastMessageAt,
|
|
877
878
|
class: "fm-typo-en-body-sm-400 shrink-0 text-fm-color-typo-secondary"
|
|
878
|
-
}, k(
|
|
879
|
+
}, k(K(re)), 9, Qa)
|
|
879
880
|
], 8, Ka))), 128))
|
|
880
|
-
], 2))), 128)) : (c(), p("p",
|
|
881
|
+
], 2))), 128)) : (c(), p("p", Ya, k(s(r)("reportV5.reportAi.chat.noChats")), 1)),
|
|
881
882
|
y.value ? n.chatsCursor ? (c(), p("button", {
|
|
882
883
|
key: 5,
|
|
883
884
|
"data-testid": "report-canvas-chat-list-more",
|
|
884
885
|
class: "chat-row fm-typo-en-body-sm-600 rounded-md px-8 py-12 text-fm-color-typo-secondary",
|
|
885
886
|
disabled: n.chatsLoading,
|
|
886
|
-
onClick: i[1] || (i[1] = (
|
|
887
|
-
}, k(s(r)("reportV5.reportAi.chat.loadMoreChats")), 9,
|
|
887
|
+
onClick: i[1] || (i[1] = (j) => a("loadMoreChats"))
|
|
888
|
+
}, k(s(r)("reportV5.reportAi.chat.loadMoreChats")), 9, er)) : R("", !0) : (c(), p("button", {
|
|
888
889
|
key: 4,
|
|
889
890
|
"data-testid": "report-canvas-chat-see-all",
|
|
890
891
|
class: "chat-row fm-typo-en-body-sm-600 mt-8 rounded-md px-8 py-12 text-fm-color-typo-secondary",
|
|
891
892
|
disabled: n.chatsLoading,
|
|
892
893
|
onClick: W
|
|
893
|
-
}, k(s(r)("reportV5.reportAi.chat.seeAll")), 9,
|
|
894
|
-
], 8,
|
|
895
|
-
n.error ? (c(), p("p",
|
|
896
|
-
], 8,
|
|
894
|
+
}, k(s(r)("reportV5.reportAi.chat.seeAll")), 9, Za))
|
|
895
|
+
], 8, Ua)) : R("", !0),
|
|
896
|
+
n.error ? (c(), p("p", tr, k(n.error), 1)) : R("", !0)
|
|
897
|
+
], 8, Pa)) : (c(), p("div", nr, [
|
|
897
898
|
w("div", {
|
|
898
899
|
ref_key: "scroller",
|
|
899
900
|
ref: xe,
|
|
900
901
|
class: "min-h-0 grow overflow-y-auto px-[20px] py-16",
|
|
901
902
|
onScroll: S
|
|
902
903
|
}, [
|
|
903
|
-
N.value ? (c(), p("p",
|
|
904
|
+
N.value ? (c(), p("p", ar, k(s(r)("reportV5.reportAi.chat.loadingChat")), 1)) : (c(), p(ve, { key: 1 }, [
|
|
904
905
|
n.earlier ? (c(), p("button", {
|
|
905
906
|
key: 0,
|
|
906
907
|
"data-testid": "report-canvas-load-earlier",
|
|
907
908
|
class: "fm-typo-en-body-sm-600 mb-16 w-full text-fm-color-typo-secondary disabled:opacity-50",
|
|
908
909
|
disabled: n.loadingEarlier,
|
|
909
|
-
onClick: i[2] || (i[2] = (
|
|
910
|
-
}, k(s(r)("reportV5.reportAi.chat.loadEarlier")), 9,
|
|
911
|
-
(c(!0), p(ve, null, Se(z.value, (
|
|
912
|
-
key:
|
|
910
|
+
onClick: i[2] || (i[2] = (j) => a("loadEarlier"))
|
|
911
|
+
}, k(s(r)("reportV5.reportAi.chat.loadEarlier")), 9, rr)) : R("", !0),
|
|
912
|
+
(c(!0), p(ve, null, Se(z.value, (j, re) => (c(), p("div", {
|
|
913
|
+
key: j.id,
|
|
913
914
|
class: "mb-16"
|
|
914
915
|
}, [
|
|
915
|
-
|
|
916
|
-
widget:
|
|
916
|
+
j.target ? (c(), p("p", or, k(s(r)("reportV5.reportAi.chat.commentOn", {
|
|
917
|
+
widget: j.target.label || s(r)("reportV5.reportAi.chat.selectedWidget")
|
|
917
918
|
})), 1)) : R("", !0),
|
|
918
|
-
|
|
919
|
+
j.role === "user" ? (c(), p("div", ir, [
|
|
919
920
|
w("div", {
|
|
920
921
|
"data-testid": "report-canvas-user-message",
|
|
921
922
|
class: Pe([
|
|
922
923
|
"fm-typo-en-body-md-400 max-w-[90%] whitespace-pre-wrap rounded-md px-12 py-8 !leading-[21px]",
|
|
923
|
-
|
|
924
|
+
q.value.has(j.id) ? "bg-fm-color-neutral-gray-100 text-fm-color-typo-secondary" : "bg-fm-color-system-info-100"
|
|
924
925
|
])
|
|
925
|
-
}, k(
|
|
926
|
-
|
|
926
|
+
}, k(j.answer), 3),
|
|
927
|
+
q.value.has(j.id) ? (c(), p("p", sr, [
|
|
927
928
|
Ft(k(s(r)("reportV5.reportAi.chat.notSent")) + " ", 1),
|
|
928
929
|
w("button", {
|
|
929
930
|
"data-testid": "chat-message-resend",
|
|
930
931
|
class: "ml-4 underline disabled:opacity-50",
|
|
931
932
|
disabled: n.streaming || n.busy,
|
|
932
|
-
onClick: (be) => a("resend",
|
|
933
|
-
}, k(s(r)("reportV5.reportAi.chat.resend")), 9,
|
|
934
|
-
])) : F.value.has(
|
|
933
|
+
onClick: (be) => a("resend", j.id)
|
|
934
|
+
}, k(s(r)("reportV5.reportAi.chat.resend")), 9, lr)
|
|
935
|
+
])) : F.value.has(j.turnId) ? (c(), p("button", {
|
|
935
936
|
key: 1,
|
|
936
937
|
"data-testid": "chat-turn-undo",
|
|
937
938
|
class: "fm-typo-en-body-sm-400 mt-4 text-fm-color-typo-secondary underline disabled:opacity-50",
|
|
938
939
|
disabled: n.undoing || n.streaming,
|
|
939
|
-
onClick: (be) => a("undo",
|
|
940
|
-
}, k(s(r)("reportV5.reportCanvas.draft.undo")), 9,
|
|
940
|
+
onClick: (be) => a("undo", j.turnId)
|
|
941
|
+
}, k(s(r)("reportV5.reportCanvas.draft.undo")), 9, fr)) : R("", !0)
|
|
941
942
|
])) : (c(), p(ve, { key: 2 }, [
|
|
942
943
|
re === g.value || re === H.value ? (c(), me(At, St({
|
|
943
944
|
key: 0,
|
|
@@ -947,23 +948,23 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
947
948
|
onRetry: i[3] || (i[3] = (be) => a("retry", be)),
|
|
948
949
|
onCheckStatus: i[4] || (i[4] = (be) => a("checkStatus"))
|
|
949
950
|
}), null, 16)) : R("", !0),
|
|
950
|
-
|
|
951
|
+
j.blocks.length ? (c(), me(ua, {
|
|
951
952
|
key: 1,
|
|
952
953
|
"data-testid": "report-canvas-answer",
|
|
953
|
-
blocks:
|
|
954
|
-
preview:
|
|
955
|
-
}, null, 8, ["blocks", "preview"])) :
|
|
956
|
-
|
|
954
|
+
blocks: j.blocks,
|
|
955
|
+
preview: j.preview
|
|
956
|
+
}, null, 8, ["blocks", "preview"])) : j.noSummary ? (c(), p("p", dr, k(s(r)("reportV5.reportAi.chat.noSummary")), 1)) : R("", !0),
|
|
957
|
+
j.ms ? (c(), p("p", cr, k(s(r)("reportV5.reportAi.chat.took", { duration: s(Ia)(j.ms) })), 1)) : R("", !0)
|
|
957
958
|
], 64))
|
|
958
959
|
]))), 128)),
|
|
959
|
-
|
|
960
|
+
J.value ? (c(), me(At, St({
|
|
960
961
|
key: 1,
|
|
961
962
|
class: "mb-16"
|
|
962
963
|
}, ye(-1), {
|
|
963
|
-
onRetry: i[5] || (i[5] = (
|
|
964
|
-
onCheckStatus: i[6] || (i[6] = (
|
|
964
|
+
onRetry: i[5] || (i[5] = (j) => a("retry", j)),
|
|
965
|
+
onCheckStatus: i[6] || (i[6] = (j) => a("checkStatus"))
|
|
965
966
|
}), null, 16)) : R("", !0),
|
|
966
|
-
n.error ? (c(), p("p",
|
|
967
|
+
n.error ? (c(), p("p", mr, k(n.error), 1)) : R("", !0)
|
|
967
968
|
], 64))
|
|
968
969
|
], 544),
|
|
969
970
|
u.value ? (c(), p("button", {
|
|
@@ -973,8 +974,8 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
973
974
|
onClick: M
|
|
974
975
|
}, k(s(r)("reportV5.reportAi.chat.jumpToLatest")), 1)) : R("", !0)
|
|
975
976
|
])),
|
|
976
|
-
w("div",
|
|
977
|
-
Z(
|
|
977
|
+
w("div", ur, [
|
|
978
|
+
Z(fa, {
|
|
978
979
|
ref_key: "composer",
|
|
979
980
|
ref: _,
|
|
980
981
|
draft: h.value ? I.value : n.draft,
|
|
@@ -984,13 +985,13 @@ const Ta = ["aria-label"], Ea = { class: "flex h-64 shrink-0 items-center gap-12
|
|
|
984
985
|
blank: n.blank,
|
|
985
986
|
"onUpdate:draft": te,
|
|
986
987
|
onSubmit: d,
|
|
987
|
-
onClearTarget: i[7] || (i[7] = (
|
|
988
|
+
onClearTarget: i[7] || (i[7] = (j) => a("clearTarget"))
|
|
988
989
|
}, null, 8, ["draft", "target", "target-stale", "streaming", "blank"])
|
|
989
990
|
])
|
|
990
|
-
], 40,
|
|
991
|
+
], 40, Ea);
|
|
991
992
|
};
|
|
992
993
|
}
|
|
993
|
-
}),
|
|
994
|
+
}), gr = /* @__PURE__ */ ut(br, [["__scopeId", "data-v-0840b672"]]);
|
|
994
995
|
function ze(o) {
|
|
995
996
|
const { businessId: e } = Oe(Ye());
|
|
996
997
|
if (!e.value) throw new Error("Business Id is not defined");
|
|
@@ -1002,7 +1003,7 @@ const Rt = (o) => {
|
|
|
1002
1003
|
url: ze(o)
|
|
1003
1004
|
};
|
|
1004
1005
|
return ue.fetch(e);
|
|
1005
|
-
},
|
|
1006
|
+
}, vr = (o, e, t, a, r) => {
|
|
1006
1007
|
const m = {
|
|
1007
1008
|
fetchType: pe.Post,
|
|
1008
1009
|
url: `${ze(o)}/query/${e}`,
|
|
@@ -1010,65 +1011,65 @@ const Rt = (o) => {
|
|
|
1010
1011
|
data: { params: t, timezone: a, state: r }
|
|
1011
1012
|
};
|
|
1012
1013
|
return ue.fetch(m);
|
|
1013
|
-
},
|
|
1014
|
+
}, yr = (o, e, t, a) => {
|
|
1014
1015
|
const r = {
|
|
1015
1016
|
fetchType: pe.Post,
|
|
1016
1017
|
url: `${ze(o)}/section/${e}/ack`,
|
|
1017
1018
|
data: { ...t, state: a }
|
|
1018
1019
|
};
|
|
1019
1020
|
return ue.fetch(r);
|
|
1020
|
-
},
|
|
1021
|
+
}, xr = (o) => ue.fetch({
|
|
1021
1022
|
fetchType: pe.Post,
|
|
1022
1023
|
url: `${ze(o)}/publish`,
|
|
1023
1024
|
data: {}
|
|
1024
|
-
}),
|
|
1025
|
+
}), wr = (o) => ue.fetch({
|
|
1025
1026
|
fetchType: pe.Delete,
|
|
1026
1027
|
url: `${ze(o)}/draft`
|
|
1027
|
-
}),
|
|
1028
|
+
}), kr = (o, e) => ue.fetch({
|
|
1028
1029
|
fetchType: pe.Post,
|
|
1029
1030
|
url: `${ze(o)}/draft/undo`,
|
|
1030
1031
|
data: { turnId: e }
|
|
1031
|
-
}),
|
|
1032
|
+
}), _r = (o) => ue.fetch({
|
|
1032
1033
|
fetchType: pe.Get,
|
|
1033
1034
|
url: `${ze(o)}/versions`
|
|
1034
|
-
}),
|
|
1035
|
+
}), Sr = (o, e) => ue.fetch({
|
|
1035
1036
|
fetchType: pe.Post,
|
|
1036
1037
|
url: `${ze(o)}/restore`,
|
|
1037
1038
|
data: { versionId: e }
|
|
1038
|
-
}),
|
|
1039
|
+
}), Ir = ["aria-label"], Cr = { class: "flex h-64 shrink-0 items-center gap-12 border-b border-fm-color-border-secondary px-[20px]" }, Ar = { class: "fm-typo-en-body-md-600 grow" }, Tr = ["aria-label", "disabled"], Er = { class: "min-h-0 grow overflow-y-auto px-[20px] py-[20px]" }, Or = { class: "fm-typo-en-body-md-400 mb-[20px] text-fm-color-typo-secondary" }, zr = { class: "mb-24 rounded-[12px] border border-fm-color-border-secondary p-16" }, Nr = { class: "mb-8 flex items-center gap-8" }, $r = { class: "fm-typo-en-body-md-600 grow" }, Rr = { class: "fm-typo-en-body-sm-600 rounded-md bg-fm-color-neutral-gray-100 px-8 py-4" }, Lr = {
|
|
1039
1040
|
key: 0,
|
|
1040
1041
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
|
|
1041
|
-
},
|
|
1042
|
+
}, Mr = ["aria-label"], Pr = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, jr = {
|
|
1042
1043
|
key: 1,
|
|
1043
1044
|
role: "alert",
|
|
1044
1045
|
class: "rounded-[12px] border border-fm-color-border-secondary p-[20px]"
|
|
1045
|
-
}, Dr = { class: "fm-typo-en-body-md-600 mb-8" },
|
|
1046
|
+
}, Dr = { class: "fm-typo-en-body-md-600 mb-8" }, Vr = { class: "fm-typo-en-body-md-400 mb-16 text-fm-color-typo-secondary" }, Fr = {
|
|
1046
1047
|
key: 2,
|
|
1047
1048
|
class: "flex flex-col items-center rounded-[12px] bg-fm-color-neutral-gray-50 px-16 py-32 text-center"
|
|
1048
|
-
},
|
|
1049
|
+
}, qr = { class: "fm-typo-en-body-md-600 mb-8" }, Br = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Ur = { class: "fm-typo-en-body-sm-600 mb-12 text-fm-color-typo-secondary" }, Hr = { class: "ml-4 border-l border-fm-color-border-secondary pl-16" }, Wr = ["aria-expanded", "aria-controls", "aria-current", "disabled", "onClick"], Gr = { class: "mb-4 flex items-center gap-8" }, Yr = ["datetime", "title"], Jr = {
|
|
1049
1050
|
key: 0,
|
|
1050
1051
|
"data-testid": "canvas-version-current",
|
|
1051
1052
|
class: "fm-typo-en-body-sm-600 rounded-md bg-fm-color-neutral-gray-100 px-8 py-4 text-fm-color-typo-secondary"
|
|
1052
1053
|
}, Kr = {
|
|
1053
1054
|
key: 0,
|
|
1054
1055
|
class: "fm-typo-en-body-md-600 block break-words text-fm-color-typo-secondary"
|
|
1055
|
-
},
|
|
1056
|
+
}, Xr = { class: "fm-typo-en-body-md-400 line-clamp-3 block break-words" }, Qr = {
|
|
1056
1057
|
"data-testid": "canvas-version-author",
|
|
1057
1058
|
class: "mt-8 flex items-center gap-8 text-fm-color-typo-secondary"
|
|
1058
|
-
},
|
|
1059
|
+
}, Zr = { class: "fm-typo-en-body-sm-400 line-clamp-1 break-words" }, eo = { class: "shrink-0 border-t border-fm-color-border-secondary p-[20px]" }, to = { class: "fm-typo-en-body-sm-400 mb-4 text-fm-color-typo-secondary" }, no = { class: "fm-typo-en-body-md-400 mb-16 max-h-[120px] overflow-y-auto whitespace-pre-wrap break-words" }, ao = {
|
|
1059
1060
|
key: 0,
|
|
1060
1061
|
role: "alert",
|
|
1061
1062
|
class: "fm-typo-en-body-md-400 mb-12 text-fm-color-typo-error"
|
|
1062
|
-
},
|
|
1063
|
+
}, ro = {
|
|
1063
1064
|
key: 1,
|
|
1064
1065
|
class: "fm-typo-en-body-md-400 mb-12 text-fm-color-typo-secondary"
|
|
1065
|
-
},
|
|
1066
|
+
}, oo = {
|
|
1066
1067
|
key: 2,
|
|
1067
1068
|
class: "flex items-center justify-end gap-8"
|
|
1068
|
-
},
|
|
1069
|
+
}, io = ["disabled"], so = {
|
|
1069
1070
|
key: 1,
|
|
1070
1071
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
|
|
1071
|
-
},
|
|
1072
|
+
}, lo = { class: "fm-typo-en-body-sm-400 mt-12 text-fm-color-typo-secondary" }, fo = /* @__PURE__ */ De({
|
|
1072
1073
|
__name: "ReportCanvasHistory",
|
|
1073
1074
|
props: {
|
|
1074
1075
|
reportId: {},
|
|
@@ -1079,15 +1080,15 @@ const Rt = (o) => {
|
|
|
1079
1080
|
},
|
|
1080
1081
|
emits: ["close", "restored", "restoring"],
|
|
1081
1082
|
setup(o, { emit: e }) {
|
|
1082
|
-
const t = o, a = e, { t: r, locale: m } = Ve(), h = (C, u = {}) => r(`reportV5.reportCanvas.history.${C}`, u), y = T([]), I = T(!0), b = T(!1), L = T(!1), x = T(!1), N = T(!1), E = T(), W = T(),
|
|
1083
|
-
let G = !0,
|
|
1083
|
+
const t = o, a = e, { t: r, locale: m } = Ve(), h = (C, u = {}) => r(`reportV5.reportCanvas.history.${C}`, u), y = T([]), I = T(!0), b = T(!1), L = T(!1), x = T(!1), N = T(!1), E = T(), W = T(), D = T(), Y = T(), U = V(() => y.value.find((C) => C.id === E.value)), O = V(() => t.hasDraft || t.busy || x.value);
|
|
1084
|
+
let G = !0, K = null;
|
|
1084
1085
|
function F(C, u) {
|
|
1085
1086
|
const S = new Date(C);
|
|
1086
1087
|
return Number.isFinite(S.getTime()) ? new Intl.DateTimeFormat(m.value, { ...u, timeZone: t.timezone }).format(
|
|
1087
1088
|
S
|
|
1088
1089
|
) : h("unknownDate");
|
|
1089
1090
|
}
|
|
1090
|
-
const
|
|
1091
|
+
const q = (C) => F(C, { dateStyle: "medium", timeStyle: "short" }), _ = (C) => F(C, { hour: "numeric", minute: "2-digit", second: "2-digit" }), z = (C) => F(C, { year: "numeric", month: "2-digit", day: "2-digit" });
|
|
1091
1092
|
function g(C) {
|
|
1092
1093
|
return z(C) === z((/* @__PURE__ */ new Date()).toISOString()) ? h("today") : F(C, { month: "long", day: "numeric", year: "numeric" });
|
|
1093
1094
|
}
|
|
@@ -1098,17 +1099,17 @@ const Rt = (o) => {
|
|
|
1098
1099
|
M ? M.versions.push(u) : C.push({ key: S, label: g(u.at), versions: [u] });
|
|
1099
1100
|
}
|
|
1100
1101
|
return C;
|
|
1101
|
-
}),
|
|
1102
|
+
}), J = (C) => {
|
|
1102
1103
|
var u;
|
|
1103
1104
|
return C.id === ((u = y.value[0]) == null ? void 0 : u.id);
|
|
1104
|
-
}, ee = (C) => C.prompt.trim() || h("noPrompt"), X = (C) => C.restoredFrom ? h("restoredFrom", { at:
|
|
1105
|
+
}, ee = (C) => C.prompt.trim() || h("noPrompt"), X = (C) => C.restoredFrom ? h("restoredFrom", { at: q(C.restoredFrom) }) : "", se = (C) => [X(C), ee(C)].filter(Boolean).join(" "), ce = (C) => {
|
|
1105
1106
|
var u, S;
|
|
1106
1107
|
return ((u = C.author) == null ? void 0 : u.name) || ((S = C.author) == null ? void 0 : S.email) || h("unknownUser");
|
|
1107
1108
|
};
|
|
1108
1109
|
async function ye() {
|
|
1109
1110
|
I.value = !0, b.value = !1;
|
|
1110
1111
|
try {
|
|
1111
|
-
const C = await
|
|
1112
|
+
const C = await _r(t.reportId);
|
|
1112
1113
|
G && (y.value = C);
|
|
1113
1114
|
} catch {
|
|
1114
1115
|
G && (b.value = !0);
|
|
@@ -1117,11 +1118,11 @@ const Rt = (o) => {
|
|
|
1117
1118
|
}
|
|
1118
1119
|
}
|
|
1119
1120
|
function he(C) {
|
|
1120
|
-
x.value ||
|
|
1121
|
+
x.value || J(C) || (E.value = E.value === C.id ? void 0 : C.id, N.value = !1, L.value = !1);
|
|
1121
1122
|
}
|
|
1122
1123
|
async function le() {
|
|
1123
1124
|
var C;
|
|
1124
|
-
!U.value || O.value || (N.value = !0, await Ee(), (C =
|
|
1125
|
+
!U.value || O.value || (N.value = !0, await Ee(), (C = D.value) == null || C.focus());
|
|
1125
1126
|
}
|
|
1126
1127
|
async function oe() {
|
|
1127
1128
|
var C;
|
|
@@ -1131,7 +1132,7 @@ const Rt = (o) => {
|
|
|
1131
1132
|
if (!(!U.value || O.value || !N.value)) {
|
|
1132
1133
|
x.value = !0, a("restoring", !0), L.value = !1;
|
|
1133
1134
|
try {
|
|
1134
|
-
const C = await
|
|
1135
|
+
const C = await Sr(t.reportId, U.value.id);
|
|
1135
1136
|
G && a("restored", C);
|
|
1136
1137
|
} catch {
|
|
1137
1138
|
G && (L.value = !0);
|
|
@@ -1147,9 +1148,9 @@ const Rt = (o) => {
|
|
|
1147
1148
|
C && !x.value && (N.value = !1);
|
|
1148
1149
|
}), Me(() => {
|
|
1149
1150
|
var C;
|
|
1150
|
-
|
|
1151
|
-
}),
|
|
1152
|
-
G = !1,
|
|
1151
|
+
K = document.activeElement, (C = W.value) == null || C.focus(), ye();
|
|
1152
|
+
}), je(() => {
|
|
1153
|
+
G = !1, K == null || K.focus();
|
|
1153
1154
|
}), (C, u) => {
|
|
1154
1155
|
const S = Ie("FmIcon"), M = Ie("FmButton"), d = Ie("FmAvatar");
|
|
1155
1156
|
return c(), p("aside", {
|
|
@@ -1158,13 +1159,13 @@ const Rt = (o) => {
|
|
|
1158
1159
|
"aria-label": h("title"),
|
|
1159
1160
|
onKeydown: xe
|
|
1160
1161
|
}, [
|
|
1161
|
-
w("header",
|
|
1162
|
+
w("header", Cr, [
|
|
1162
1163
|
Z(S, {
|
|
1163
1164
|
name: "history",
|
|
1164
1165
|
size: "md",
|
|
1165
1166
|
class: "text-fm-color-typo-secondary"
|
|
1166
1167
|
}),
|
|
1167
|
-
w("h2",
|
|
1168
|
+
w("h2", Ar, k(h("title")), 1),
|
|
1168
1169
|
w("button", {
|
|
1169
1170
|
ref_key: "closeButton",
|
|
1170
1171
|
ref: W,
|
|
@@ -1178,20 +1179,20 @@ const Rt = (o) => {
|
|
|
1178
1179
|
name: "close",
|
|
1179
1180
|
size: "md"
|
|
1180
1181
|
})
|
|
1181
|
-
], 8,
|
|
1182
|
+
], 8, Tr)
|
|
1182
1183
|
]),
|
|
1183
|
-
w("div",
|
|
1184
|
-
w("p",
|
|
1185
|
-
w("div",
|
|
1186
|
-
w("div",
|
|
1184
|
+
w("div", Er, [
|
|
1185
|
+
w("p", Or, k(h("intro")), 1),
|
|
1186
|
+
w("div", zr, [
|
|
1187
|
+
w("div", Nr, [
|
|
1187
1188
|
u[1] || (u[1] = w("span", {
|
|
1188
1189
|
class: "h-8 w-8 rounded-full bg-fm-color-primary",
|
|
1189
1190
|
"aria-hidden": "true"
|
|
1190
1191
|
}, null, -1)),
|
|
1191
|
-
w("span",
|
|
1192
|
-
w("span",
|
|
1192
|
+
w("span", $r, k(h("current")), 1),
|
|
1193
|
+
w("span", Rr, k(h("published")), 1)
|
|
1193
1194
|
]),
|
|
1194
|
-
C.publishedAt ? (c(), p("p",
|
|
1195
|
+
C.publishedAt ? (c(), p("p", Lr, k(q(C.publishedAt)), 1)) : R("", !0)
|
|
1195
1196
|
]),
|
|
1196
1197
|
I.value ? (c(), p("div", {
|
|
1197
1198
|
key: 0,
|
|
@@ -1199,7 +1200,7 @@ const Rt = (o) => {
|
|
|
1199
1200
|
class: "space-y-16",
|
|
1200
1201
|
"aria-label": h("loading")
|
|
1201
1202
|
}, [
|
|
1202
|
-
w("p",
|
|
1203
|
+
w("p", Pr, k(h("loading")), 1),
|
|
1203
1204
|
(c(), p(ve, null, Se(3, (n) => w("div", {
|
|
1204
1205
|
key: n,
|
|
1205
1206
|
class: "rounded-lg border border-fm-color-border-secondary p-16",
|
|
@@ -1208,29 +1209,29 @@ const Rt = (o) => {
|
|
|
1208
1209
|
w("div", { class: "mb-12 h-12 w-1/3 rounded bg-fm-color-neutral-gray-100" }, null, -1),
|
|
1209
1210
|
w("div", { class: "h-12 w-3/4 rounded bg-fm-color-neutral-gray-100" }, null, -1)
|
|
1210
1211
|
]))), 64))
|
|
1211
|
-
], 8,
|
|
1212
|
+
], 8, Mr)) : b.value ? (c(), p("div", jr, [
|
|
1212
1213
|
w("p", Dr, k(h("loadFailed")), 1),
|
|
1213
|
-
w("p",
|
|
1214
|
+
w("p", Vr, k(h("loadFailedHint")), 1),
|
|
1214
1215
|
Z(M, {
|
|
1215
1216
|
variant: "secondary",
|
|
1216
1217
|
label: h("retry"),
|
|
1217
1218
|
onClick: ye
|
|
1218
1219
|
}, null, 8, ["label"])
|
|
1219
|
-
])) : y.value.length ? R("", !0) : (c(), p("div",
|
|
1220
|
+
])) : y.value.length ? R("", !0) : (c(), p("div", Fr, [
|
|
1220
1221
|
Z(S, {
|
|
1221
1222
|
name: "history",
|
|
1222
1223
|
size: "lg",
|
|
1223
1224
|
class: "mb-12 text-fm-color-typo-secondary"
|
|
1224
1225
|
}),
|
|
1225
|
-
w("p",
|
|
1226
|
+
w("p", qr, k(h("empty")), 1),
|
|
1226
1227
|
w("p", Br, k(h("emptyHint")), 1)
|
|
1227
1228
|
])),
|
|
1228
1229
|
(c(!0), p(ve, null, Se(I.value || b.value ? [] : H.value, (n) => (c(), p("section", {
|
|
1229
1230
|
key: n.key,
|
|
1230
1231
|
class: "mb-[20px]"
|
|
1231
1232
|
}, [
|
|
1232
|
-
w("h3",
|
|
1233
|
-
w("ul",
|
|
1233
|
+
w("h3", Ur, k(n.label), 1),
|
|
1234
|
+
w("ul", Hr, [
|
|
1234
1235
|
(c(!0), p(ve, null, Se(n.versions, (i) => {
|
|
1235
1236
|
var f, A, P;
|
|
1236
1237
|
return c(), p("li", {
|
|
@@ -1249,17 +1250,17 @@ const Rt = (o) => {
|
|
|
1249
1250
|
]),
|
|
1250
1251
|
"aria-expanded": E.value === i.id,
|
|
1251
1252
|
"aria-controls": E.value === i.id ? "canvas-version-details" : void 0,
|
|
1252
|
-
"aria-current":
|
|
1253
|
-
disabled: x.value ||
|
|
1253
|
+
"aria-current": J(i) ? "true" : void 0,
|
|
1254
|
+
disabled: x.value || J(i),
|
|
1254
1255
|
onClick: ($) => he(i)
|
|
1255
1256
|
}, [
|
|
1256
|
-
w("span",
|
|
1257
|
+
w("span", Gr, [
|
|
1257
1258
|
w("time", {
|
|
1258
1259
|
datetime: i.at,
|
|
1259
|
-
title:
|
|
1260
|
+
title: q(i.at),
|
|
1260
1261
|
class: "fm-typo-en-body-sm-400 grow text-fm-color-typo-secondary"
|
|
1261
|
-
}, k(_(i.at)), 9,
|
|
1262
|
-
|
|
1262
|
+
}, k(_(i.at)), 9, Yr),
|
|
1263
|
+
J(i) ? (c(), p("span", Jr, k(h("currentBadge")), 1)) : E.value === i.id ? (c(), me(S, {
|
|
1263
1264
|
key: 1,
|
|
1264
1265
|
name: "check",
|
|
1265
1266
|
size: "sm",
|
|
@@ -1267,22 +1268,22 @@ const Rt = (o) => {
|
|
|
1267
1268
|
})) : R("", !0)
|
|
1268
1269
|
]),
|
|
1269
1270
|
X(i) ? (c(), p("span", Kr, k(X(i)), 1)) : R("", !0),
|
|
1270
|
-
w("span",
|
|
1271
|
-
w("span",
|
|
1271
|
+
w("span", Xr, k(ee(i)), 1),
|
|
1272
|
+
w("span", Qr, [
|
|
1272
1273
|
Z(d, {
|
|
1273
1274
|
size: "sm",
|
|
1274
1275
|
name: ((f = i.author) == null ? void 0 : f.name) || ((A = i.author) == null ? void 0 : A.email) || "?",
|
|
1275
1276
|
src: (P = i.author) == null ? void 0 : P.photoUrl
|
|
1276
1277
|
}, null, 8, ["name", "src"]),
|
|
1277
|
-
w("span",
|
|
1278
|
+
w("span", Zr, k(ce(i)), 1)
|
|
1278
1279
|
])
|
|
1279
|
-
], 10,
|
|
1280
|
+
], 10, Wr)
|
|
1280
1281
|
]);
|
|
1281
1282
|
}), 128))
|
|
1282
1283
|
])
|
|
1283
1284
|
]))), 128))
|
|
1284
1285
|
]),
|
|
1285
|
-
w("footer",
|
|
1286
|
+
w("footer", eo, [
|
|
1286
1287
|
U.value ? (c(), p("div", {
|
|
1287
1288
|
key: 0,
|
|
1288
1289
|
id: "canvas-version-details",
|
|
@@ -1291,18 +1292,18 @@ const Rt = (o) => {
|
|
|
1291
1292
|
tabindex: "-1",
|
|
1292
1293
|
class: "history-details"
|
|
1293
1294
|
}, [
|
|
1294
|
-
w("p",
|
|
1295
|
-
w("p",
|
|
1296
|
-
L.value ? (c(), p("p",
|
|
1297
|
-
C.hasDraft || C.busy ? (c(), p("p",
|
|
1298
|
-
N.value ? (c(), p("div",
|
|
1295
|
+
w("p", to, k(h("savedBy", { user: ce(U.value), at: q(U.value.at) })), 1),
|
|
1296
|
+
w("p", no, k(N.value ? h("confirmHint") : se(U.value)), 1),
|
|
1297
|
+
L.value ? (c(), p("p", ao, k(h("restoreFailed")), 1)) : R("", !0),
|
|
1298
|
+
C.hasDraft || C.busy ? (c(), p("p", ro, k(h(C.hasDraft ? "draftHint" : "busyHint")), 1)) : R("", !0),
|
|
1299
|
+
N.value ? (c(), p("div", oo, [
|
|
1299
1300
|
w("button", {
|
|
1300
1301
|
ref_key: "cancelButton",
|
|
1301
|
-
ref:
|
|
1302
|
+
ref: D,
|
|
1302
1303
|
class: "history-button fm-typo-en-body-md-600 rounded-lg px-16 py-12",
|
|
1303
1304
|
disabled: x.value,
|
|
1304
1305
|
onClick: oe
|
|
1305
|
-
}, k(h("cancel")), 9,
|
|
1306
|
+
}, k(h("cancel")), 9, io),
|
|
1306
1307
|
Z(M, {
|
|
1307
1308
|
"data-testid": "canvas-version-confirm",
|
|
1308
1309
|
variant: "primary",
|
|
@@ -1320,52 +1321,34 @@ const Rt = (o) => {
|
|
|
1320
1321
|
disabled: O.value,
|
|
1321
1322
|
onClick: le
|
|
1322
1323
|
}, null, 8, ["label", "disabled"]))
|
|
1323
|
-
], 512)) : (c(), p("p",
|
|
1324
|
-
w("p",
|
|
1324
|
+
], 512)) : (c(), p("p", so, k(h("selectHint")), 1)),
|
|
1325
|
+
w("p", lo, k(h("timezone", { timezone: C.timezone })), 1)
|
|
1325
1326
|
])
|
|
1326
|
-
], 40,
|
|
1327
|
+
], 40, Ir);
|
|
1327
1328
|
};
|
|
1328
1329
|
}
|
|
1329
|
-
}),
|
|
1330
|
-
function
|
|
1330
|
+
}), co = /* @__PURE__ */ ut(fo, [["__scopeId", "data-v-7df5ac71"]]), mo = ["@from", "@to", "@locationIds", "@timezone"], lt = ["@from", "@to", "@locationIds"], uo = ["@timezone"], po = ["@locationIds"], ho = 1, bo = 1500;
|
|
1331
|
+
function go(o) {
|
|
1331
1332
|
if (!(!(o instanceof kn) || o.status !== 429))
|
|
1332
|
-
return Math.min(Math.max(o.retryAfterMs ??
|
|
1333
|
+
return Math.min(Math.max(o.retryAfterMs ?? bo, 500), 5e3);
|
|
1333
1334
|
}
|
|
1334
|
-
const go = {
|
|
1335
|
-
MY: "MYR",
|
|
1336
|
-
SG: "SGD",
|
|
1337
|
-
TH: "THB",
|
|
1338
|
-
ID: "IDR",
|
|
1339
|
-
PH: "PHP",
|
|
1340
|
-
VN: "VND",
|
|
1341
|
-
BN: "BND",
|
|
1342
|
-
KH: "KHR",
|
|
1343
|
-
MM: "MMK",
|
|
1344
|
-
AE: "AED",
|
|
1345
|
-
MO: "MOP",
|
|
1346
|
-
MV: "MVR",
|
|
1347
|
-
AU: "AUD",
|
|
1348
|
-
JP: "JPY",
|
|
1349
|
-
TW: "TWD",
|
|
1350
|
-
HK: "HKD"
|
|
1351
|
-
};
|
|
1352
1335
|
function Lt(o) {
|
|
1353
1336
|
return o == null ? !0 : Array.isArray(o) ? o.length === 0 : o === "";
|
|
1354
1337
|
}
|
|
1355
1338
|
function vo(o) {
|
|
1356
|
-
const e = pt(), { dateRange: t, selectedLocationIds: a, locations: r, timezone: m } = Oe(e), { country: h } = Oe(Ye()), y = T({}), I = T([]), b = T({}), L = gn({}), x = T(), N = T([]), E = [], W = [],
|
|
1339
|
+
const e = pt(), { dateRange: t, selectedLocationIds: a, locations: r, timezone: m } = Oe(e), { country: h } = Oe(Ye()), y = T({}), I = T([]), b = T({}), L = gn({}), x = T(), N = T([]), E = [], W = [], D = { ids: "[]", date: "" };
|
|
1357
1340
|
let Y = !1;
|
|
1358
1341
|
const U = {}, O = {};
|
|
1359
1342
|
function G(u) {
|
|
1360
1343
|
E.push(u);
|
|
1361
1344
|
}
|
|
1362
|
-
function
|
|
1345
|
+
function K(u) {
|
|
1363
1346
|
W.push(u);
|
|
1364
1347
|
}
|
|
1365
1348
|
function F(u) {
|
|
1366
1349
|
L.value = { ...L.value, [u.queryId]: u }, E.forEach((S) => S(u));
|
|
1367
1350
|
}
|
|
1368
|
-
function
|
|
1351
|
+
function q(u) {
|
|
1369
1352
|
const S = {};
|
|
1370
1353
|
for (const M of u.params)
|
|
1371
1354
|
S[M.name] = M.default ?? null;
|
|
@@ -1378,7 +1361,7 @@ function vo(o) {
|
|
|
1378
1361
|
return { startDate: t.value.startDate, endDate: t.value.endDate };
|
|
1379
1362
|
}
|
|
1380
1363
|
function g() {
|
|
1381
|
-
|
|
1364
|
+
D.ids = JSON.stringify([...a.value]), D.date = JSON.stringify(z());
|
|
1382
1365
|
}
|
|
1383
1366
|
function H() {
|
|
1384
1367
|
const u = y.value["@from"], S = y.value["@to"];
|
|
@@ -1396,13 +1379,13 @@ function vo(o) {
|
|
|
1396
1379
|
}
|
|
1397
1380
|
g();
|
|
1398
1381
|
}
|
|
1399
|
-
function
|
|
1382
|
+
function J() {
|
|
1400
1383
|
const u = [...a.value], S = {}, M = { ...b.value };
|
|
1401
|
-
JSON.stringify(z()) !==
|
|
1384
|
+
JSON.stringify(z()) !== D.date && (S["@from"] = t.value.startDate ?? null, S["@to"] = t.value.endDate ?? null), JSON.stringify(u) !== D.ids ? (S["@locationIds"] = u, delete M["@locationIds"]) : M["@locationIds"] === "all" && (S["@locationIds"] = _()), Object.keys(S).length && te(S, M);
|
|
1402
1385
|
}
|
|
1403
1386
|
function ee() {
|
|
1404
1387
|
de([t, a, r], () => {
|
|
1405
|
-
Y &&
|
|
1388
|
+
Y && J();
|
|
1406
1389
|
});
|
|
1407
1390
|
}
|
|
1408
1391
|
function X() {
|
|
@@ -1419,7 +1402,7 @@ function vo(o) {
|
|
|
1419
1402
|
// The portal's locale, not the browser's: the frame sets documentElement.lang from this,
|
|
1420
1403
|
// and Rebus switches its line-height metrics on :lang(zh) / :lang(th).
|
|
1421
1404
|
locale: An() || "en-US",
|
|
1422
|
-
currency:
|
|
1405
|
+
currency: Tn(h.value)
|
|
1423
1406
|
};
|
|
1424
1407
|
}
|
|
1425
1408
|
function ce(u, S) {
|
|
@@ -1446,7 +1429,7 @@ function vo(o) {
|
|
|
1446
1429
|
});
|
|
1447
1430
|
for (let n = 0; ; n++)
|
|
1448
1431
|
try {
|
|
1449
|
-
const i = await
|
|
1432
|
+
const i = await vr(
|
|
1450
1433
|
o,
|
|
1451
1434
|
u.id,
|
|
1452
1435
|
S,
|
|
@@ -1464,8 +1447,8 @@ function vo(o) {
|
|
|
1464
1447
|
return;
|
|
1465
1448
|
} catch (i) {
|
|
1466
1449
|
if (U[u.id] !== M) return;
|
|
1467
|
-
const f =
|
|
1468
|
-
if (f !== void 0 && n <
|
|
1450
|
+
const f = go(i);
|
|
1451
|
+
if (f !== void 0 && n < ho) {
|
|
1469
1452
|
if (await new Promise((A) => setTimeout(A, f)), U[u.id] !== M) return;
|
|
1470
1453
|
continue;
|
|
1471
1454
|
}
|
|
@@ -1513,8 +1496,8 @@ function vo(o) {
|
|
|
1513
1496
|
const M = { ...y.value }, d = { ...b.value };
|
|
1514
1497
|
let n = !1;
|
|
1515
1498
|
for (const [i, f] of Object.entries(u)) {
|
|
1516
|
-
if (!(i in M) ||
|
|
1517
|
-
const A =
|
|
1499
|
+
if (!(i in M) || uo.includes(i)) continue;
|
|
1500
|
+
const A = po.includes(i) ? S == null ? void 0 : S[i] : void 0;
|
|
1518
1501
|
d[i] !== A && (A ? d[i] = A : delete d[i], n = !0), JSON.stringify(M[i] ?? null) !== JSON.stringify(f ?? null) && (M[i] = f, n = !0);
|
|
1519
1502
|
}
|
|
1520
1503
|
return n ? (y.value = M, b.value = d, Object.keys(u).some((i) => lt.includes(i)) && H(), oe(), W.forEach((i) => i()), !0) : !1;
|
|
@@ -1523,7 +1506,7 @@ function vo(o) {
|
|
|
1523
1506
|
x.value = u.state, N.value = u.queries, I.value = u.params, L.value = {};
|
|
1524
1507
|
for (const S of Object.keys(U)) delete U[S];
|
|
1525
1508
|
for (const S of Object.keys(O)) delete O[S];
|
|
1526
|
-
|
|
1509
|
+
q(u), Y = !0, oe();
|
|
1527
1510
|
}
|
|
1528
1511
|
function C(u, S = []) {
|
|
1529
1512
|
x.value = u.state, N.value = u.queries, I.value = u.params;
|
|
@@ -1557,8 +1540,8 @@ function vo(o) {
|
|
|
1557
1540
|
run: oe,
|
|
1558
1541
|
setParams: te,
|
|
1559
1542
|
onResult: G,
|
|
1560
|
-
onParamsChanged:
|
|
1561
|
-
RESERVED:
|
|
1543
|
+
onParamsChanged: K,
|
|
1544
|
+
RESERVED: mo
|
|
1562
1545
|
};
|
|
1563
1546
|
}
|
|
1564
1547
|
const yo = `: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}
|
|
@@ -1573,16 +1556,16 @@ function xo(o) {
|
|
|
1573
1556
|
}
|
|
1574
1557
|
return `${"/".replace(/\/$/, "")}/${e}`;
|
|
1575
1558
|
}
|
|
1576
|
-
const
|
|
1559
|
+
const Bt = {
|
|
1577
1560
|
"chart.js@4": "chart.js-4.js",
|
|
1578
1561
|
"fm-ui@1": "fm-ui-1.js",
|
|
1579
1562
|
"components@1": "components-1.js"
|
|
1580
1563
|
}, ft = /* @__PURE__ */ new Map();
|
|
1581
1564
|
function wo(o) {
|
|
1582
|
-
return xo(`report-canvas-libs/${
|
|
1565
|
+
return xo(`report-canvas-libs/${Bt[o]}`);
|
|
1583
1566
|
}
|
|
1584
1567
|
async function Mt(o) {
|
|
1585
|
-
const e = [...new Set(o)].filter((a) =>
|
|
1568
|
+
const e = [...new Set(o)].filter((a) => Bt[a]), t = {};
|
|
1586
1569
|
return await Promise.all(
|
|
1587
1570
|
e.map(async (a) => {
|
|
1588
1571
|
if (!ft.has(a)) {
|
|
@@ -4012,7 +3995,7 @@ function To(o) {
|
|
|
4012
3995
|
...a === null || typeof a == "number" && Number.isFinite(a) ? { value: a } : typeof a == "string" ? { value: a.slice(0, 64) } : {}
|
|
4013
3996
|
};
|
|
4014
3997
|
}
|
|
4015
|
-
function
|
|
3998
|
+
function jt(o) {
|
|
4016
3999
|
const e = o;
|
|
4017
4000
|
if (!e || typeof e != "object" || typeof e.tag != "string") return;
|
|
4018
4001
|
const t = Array.isArray(e.path) ? e.path.filter((r) => Number.isSafeInteger(r) && r >= 0).slice(0, 32) : [], a = To(e.datum);
|
|
@@ -4040,7 +4023,7 @@ function Eo(o, e) {
|
|
|
4040
4023
|
(z = y()) == null || z.postMessage(JSON.parse(JSON.stringify(_)), "*");
|
|
4041
4024
|
}
|
|
4042
4025
|
function b(_) {
|
|
4043
|
-
var H,
|
|
4026
|
+
var H, J;
|
|
4044
4027
|
const z = y();
|
|
4045
4028
|
if (!z || _.source !== z) return;
|
|
4046
4029
|
const g = _.data;
|
|
@@ -4053,7 +4036,7 @@ function Eo(o, e) {
|
|
|
4053
4036
|
case "sectionSelected":
|
|
4054
4037
|
if (!m || g.nonce !== m || typeof g.sectionId != "string" || !Number.isSafeInteger(g.version))
|
|
4055
4038
|
return;
|
|
4056
|
-
const ee =
|
|
4039
|
+
const ee = jt(g.element), X = Array.isArray(g.widen) ? g.widen.slice(0, 4).map(jt).filter((se) => !!se) : [];
|
|
4057
4040
|
(H = e.onSelectSection) == null || H.call(
|
|
4058
4041
|
e,
|
|
4059
4042
|
{
|
|
@@ -4068,7 +4051,7 @@ function Eo(o, e) {
|
|
|
4068
4051
|
);
|
|
4069
4052
|
break;
|
|
4070
4053
|
case "selectionCancelled":
|
|
4071
|
-
m && g.nonce === m && ((
|
|
4054
|
+
m && g.nonce === m && ((J = e.onCancelSelection) == null || J.call(e));
|
|
4072
4055
|
break;
|
|
4073
4056
|
case "setParams":
|
|
4074
4057
|
e.onSetParams(g.values ?? {}, g.intent);
|
|
@@ -4124,8 +4107,8 @@ function Eo(o, e) {
|
|
|
4124
4107
|
);
|
|
4125
4108
|
}
|
|
4126
4109
|
}
|
|
4127
|
-
async function
|
|
4128
|
-
const H = await Mt(_.flatMap((ee) => ee.libs ?? [])),
|
|
4110
|
+
async function D(_, z, g) {
|
|
4111
|
+
const H = await Mt(_.flatMap((ee) => ee.libs ?? [])), J = () => {
|
|
4129
4112
|
I({
|
|
4130
4113
|
type: "init",
|
|
4131
4114
|
sections: _,
|
|
@@ -4136,7 +4119,7 @@ function Eo(o, e) {
|
|
|
4136
4119
|
env: g
|
|
4137
4120
|
}), E(), W(_);
|
|
4138
4121
|
};
|
|
4139
|
-
t.value ?
|
|
4122
|
+
t.value ? J() : a = J;
|
|
4140
4123
|
}
|
|
4141
4124
|
async function Y(_) {
|
|
4142
4125
|
const z = await Mt(_.flatMap((g) => g.libs ?? []));
|
|
@@ -4155,9 +4138,9 @@ function Eo(o, e) {
|
|
|
4155
4138
|
}
|
|
4156
4139
|
function G() {
|
|
4157
4140
|
const _ = [...r.values()];
|
|
4158
|
-
r.clear(), _.forEach(
|
|
4141
|
+
r.clear(), _.forEach(K);
|
|
4159
4142
|
}
|
|
4160
|
-
function
|
|
4143
|
+
function K(_) {
|
|
4161
4144
|
I({
|
|
4162
4145
|
type: "rows",
|
|
4163
4146
|
queryId: _.queryId,
|
|
@@ -4173,17 +4156,17 @@ function Eo(o, e) {
|
|
|
4173
4156
|
r.set(_.queryId, _);
|
|
4174
4157
|
return;
|
|
4175
4158
|
}
|
|
4176
|
-
|
|
4159
|
+
K(_);
|
|
4177
4160
|
}
|
|
4178
|
-
Me(() => window.addEventListener("message", b)),
|
|
4161
|
+
Me(() => window.addEventListener("message", b)), je(() => {
|
|
4179
4162
|
window.removeEventListener("message", b), E();
|
|
4180
4163
|
});
|
|
4181
|
-
function
|
|
4164
|
+
function q() {
|
|
4182
4165
|
t.value = !1, a = null, m = void 0, r.clear(), E();
|
|
4183
4166
|
}
|
|
4184
4167
|
return {
|
|
4185
4168
|
setCommentMode: (_, z) => {
|
|
4186
|
-
var g, H,
|
|
4169
|
+
var g, H, J;
|
|
4187
4170
|
return I({
|
|
4188
4171
|
type: "commentMode",
|
|
4189
4172
|
enabled: _,
|
|
@@ -4191,7 +4174,7 @@ function Eo(o, e) {
|
|
|
4191
4174
|
sectionId: z.sectionId,
|
|
4192
4175
|
part: (g = z.element) == null ? void 0 : g.part,
|
|
4193
4176
|
path: ((H = z.element) == null ? void 0 : H.path) ?? [],
|
|
4194
|
-
datum: ((
|
|
4177
|
+
datum: ((J = z.element) == null ? void 0 : J.datum) && {
|
|
4195
4178
|
datasetIndex: z.element.datum.datasetIndex,
|
|
4196
4179
|
index: z.element.datum.index
|
|
4197
4180
|
}
|
|
@@ -4199,12 +4182,12 @@ function Eo(o, e) {
|
|
|
4199
4182
|
});
|
|
4200
4183
|
},
|
|
4201
4184
|
ready: t,
|
|
4202
|
-
init:
|
|
4185
|
+
init: D,
|
|
4203
4186
|
swapSections: Y,
|
|
4204
4187
|
pushParams: U,
|
|
4205
4188
|
pushEnv: O,
|
|
4206
4189
|
pushRows: F,
|
|
4207
|
-
reset:
|
|
4190
|
+
reset: q
|
|
4208
4191
|
};
|
|
4209
4192
|
}
|
|
4210
4193
|
function He(o) {
|
|
@@ -4246,7 +4229,7 @@ const dt = (o, e = {}) => {
|
|
|
4246
4229
|
data: { timezone: a }
|
|
4247
4230
|
};
|
|
4248
4231
|
return ue.fetch(r);
|
|
4249
|
-
}, Ro = (o, e) => `/${o}/report-ai/${e}/chat`, Lo = 3e4, Mo = "New chat",
|
|
4232
|
+
}, Ro = (o, e) => `/${o}/report-ai/${e}/chat`, Lo = 3e4, Mo = "New chat", Dt = 80;
|
|
4250
4233
|
function ct(o, e) {
|
|
4251
4234
|
return `report-canvas:chat:${o}:${e}`;
|
|
4252
4235
|
}
|
|
@@ -4263,14 +4246,14 @@ function mt(o, e) {
|
|
|
4263
4246
|
} catch {
|
|
4264
4247
|
}
|
|
4265
4248
|
}
|
|
4266
|
-
function
|
|
4267
|
-
const { businessId: e, token: t } = Oe(Ye()), a = T([]), r = T(), m = T(""), h = T(null), y = T(!1), I = T([]), b = T(null), L = T(!1), x = T(""), N = T(!1), E = T(!1), W = T(""),
|
|
4249
|
+
function jo(o) {
|
|
4250
|
+
const { businessId: e, token: t } = Oe(Ye()), a = T([]), r = T(), m = T(""), h = T(null), y = T(!1), I = T([]), b = T(null), L = T(!1), x = T(""), N = T(!1), E = T(!1), W = T(""), D = T(""), Y = T(""), U = T(!1), O = T([]), G = T(!1), K = [];
|
|
4268
4251
|
function F(d) {
|
|
4269
|
-
|
|
4252
|
+
K.push(d);
|
|
4270
4253
|
}
|
|
4271
|
-
const
|
|
4254
|
+
const q = [];
|
|
4272
4255
|
function _(d) {
|
|
4273
|
-
|
|
4256
|
+
q.push(d);
|
|
4274
4257
|
}
|
|
4275
4258
|
let z = 0;
|
|
4276
4259
|
async function g(d) {
|
|
@@ -4294,7 +4277,7 @@ function Do(o) {
|
|
|
4294
4277
|
function H(d) {
|
|
4295
4278
|
r.value = d.sessionId ?? void 0, m.value = d.title ?? "", a.value = d.messages, h.value = d.earlier ?? null, O.value = [], Y.value = "", mt(ct(s(e.value), o), d.sessionId);
|
|
4296
4279
|
}
|
|
4297
|
-
async function
|
|
4280
|
+
async function J(d) {
|
|
4298
4281
|
return d === r.value || E.value ? null : g(d);
|
|
4299
4282
|
}
|
|
4300
4283
|
async function ee() {
|
|
@@ -4414,7 +4397,7 @@ function Do(o) {
|
|
|
4414
4397
|
}
|
|
4415
4398
|
if (i === "tool-input-start") {
|
|
4416
4399
|
const A = String(d.toolName ?? ""), P = String(d.toolCallId ?? Ct());
|
|
4417
|
-
|
|
4400
|
+
D.value = A, te(
|
|
4418
4401
|
f,
|
|
4419
4402
|
($) => $.push({ type: `tool-${A}`, toolCallId: P, state: "input-streaming" })
|
|
4420
4403
|
);
|
|
@@ -4424,7 +4407,7 @@ function Do(o) {
|
|
|
4424
4407
|
const A = String(d.toolCallId ?? ""), P = i === "tool-input-available" ? "input-available" : "output-available";
|
|
4425
4408
|
te(f, ($) => {
|
|
4426
4409
|
!C($, A, { state: P }) && typeof d.toolName == "string" && $.push({ type: `tool-${d.toolName}`, toolCallId: A, state: P });
|
|
4427
|
-
}), typeof d.toolName == "string" && (
|
|
4410
|
+
}), typeof d.toolName == "string" && (D.value = d.toolName);
|
|
4428
4411
|
return;
|
|
4429
4412
|
}
|
|
4430
4413
|
if (i === "tool-output-error") {
|
|
@@ -4441,12 +4424,12 @@ function Do(o) {
|
|
|
4441
4424
|
}
|
|
4442
4425
|
if (i.startsWith("data-")) {
|
|
4443
4426
|
const A = i.slice(5), P = d.data ?? {};
|
|
4444
|
-
A === "plan" && typeof P.sessionId == "string" && (n.acked = !0, r.value = P.sessionId, mt(ct(s(e.value), o), P.sessionId)), A !== "turn_stats" && (
|
|
4427
|
+
A === "plan" && typeof P.sessionId == "string" && (n.acked = !0, r.value = P.sessionId, mt(ct(s(e.value), o), P.sessionId)), A !== "turn_stats" && (D.value = A), te(f, ($) => $.push({ type: i, data: P })), K.forEach(($) => $({ name: A, data: P }));
|
|
4445
4428
|
}
|
|
4446
4429
|
}
|
|
4447
4430
|
function S(d) {
|
|
4448
4431
|
if (m.value && m.value !== Mo) return;
|
|
4449
|
-
const n = d.length >
|
|
4432
|
+
const n = d.length > Dt ? `${d.slice(0, Dt - 1)}…` : d;
|
|
4450
4433
|
m.value = n, I.value = I.value.map(
|
|
4451
4434
|
(i) => i.id === r.value ? { ...i, title: n } : i
|
|
4452
4435
|
);
|
|
@@ -4463,7 +4446,7 @@ function Do(o) {
|
|
|
4463
4446
|
a.value = [
|
|
4464
4447
|
...a.value,
|
|
4465
4448
|
n ? { ...f, parts: [...f.parts, { type: "data-edit-target", data: n }] } : f
|
|
4466
|
-
], S(i), E.value = !0,
|
|
4449
|
+
], S(i), E.value = !0, D.value = "", G.value = !1, W.value = `assistant-${Date.now()}`;
|
|
4467
4450
|
const A = { id: W.value, acked: !1 }, P = setTimeout(() => {
|
|
4468
4451
|
G.value = !0;
|
|
4469
4452
|
}, Lo);
|
|
@@ -4492,18 +4475,18 @@ function Do(o) {
|
|
|
4492
4475
|
console.warn("[report-canvas] chat rejected", { reportId: o, status: $.status }), le(f.id);
|
|
4493
4476
|
return;
|
|
4494
4477
|
}
|
|
4495
|
-
const
|
|
4478
|
+
const j = $.body.getReader(), re = new TextDecoder();
|
|
4496
4479
|
let be = "";
|
|
4497
4480
|
for (; ; ) {
|
|
4498
|
-
const { done: Te, value: Fe } = await
|
|
4481
|
+
const { done: Te, value: Fe } = await j.read();
|
|
4499
4482
|
if (Te) break;
|
|
4500
4483
|
be += re.decode(Fe, { stream: !0 });
|
|
4501
|
-
const
|
|
4484
|
+
const qe = be.split(`
|
|
4502
4485
|
|
|
4503
4486
|
`);
|
|
4504
|
-
be =
|
|
4505
|
-
for (const
|
|
4506
|
-
for (const We of
|
|
4487
|
+
be = qe.pop() ?? "";
|
|
4488
|
+
for (const Je of qe)
|
|
4489
|
+
for (const We of Je.split(`
|
|
4507
4490
|
`)) {
|
|
4508
4491
|
if (!We.startsWith("data:")) continue;
|
|
4509
4492
|
const Re = We.slice(5).trim();
|
|
@@ -4517,7 +4500,7 @@ function Do(o) {
|
|
|
4517
4500
|
} catch ($) {
|
|
4518
4501
|
console.warn("[report-canvas] chat stream failed", { reportId: o, err: $ }), A.acked ? U.value = !0 : le(f.id);
|
|
4519
4502
|
} finally {
|
|
4520
|
-
clearTimeout(P), E.value = !1,
|
|
4503
|
+
clearTimeout(P), E.value = !1, D.value = "", G.value = !1, q.forEach(($) => $());
|
|
4521
4504
|
}
|
|
4522
4505
|
}
|
|
4523
4506
|
return {
|
|
@@ -4533,13 +4516,13 @@ function Do(o) {
|
|
|
4533
4516
|
switching: N,
|
|
4534
4517
|
streaming: E,
|
|
4535
4518
|
turnId: W,
|
|
4536
|
-
activity:
|
|
4519
|
+
activity: D,
|
|
4537
4520
|
error: Y,
|
|
4538
4521
|
interrupted: U,
|
|
4539
4522
|
unsent: O,
|
|
4540
4523
|
slow: G,
|
|
4541
4524
|
load: g,
|
|
4542
|
-
select:
|
|
4525
|
+
select: J,
|
|
4543
4526
|
startChat: ee,
|
|
4544
4527
|
loadChats: X,
|
|
4545
4528
|
loadEarlier: se,
|
|
@@ -4551,7 +4534,7 @@ function Do(o) {
|
|
|
4551
4534
|
onSettled: _
|
|
4552
4535
|
};
|
|
4553
4536
|
}
|
|
4554
|
-
const
|
|
4537
|
+
const Do = 2e3, Vo = 10 * 6e4;
|
|
4555
4538
|
function Fo(o, e, t, a) {
|
|
4556
4539
|
const { timezone: r } = Oe(pt()), m = T(null), h = T(null), y = T(!1), I = T(""), b = [];
|
|
4557
4540
|
function L(F) {
|
|
@@ -4563,7 +4546,7 @@ function Fo(o, e, t, a) {
|
|
|
4563
4546
|
}
|
|
4564
4547
|
function E() {
|
|
4565
4548
|
var F;
|
|
4566
|
-
x !== void 0 || e.value || ((F = m.value) == null ? void 0 : F.status) === "running" && (x = window.setInterval(() => void W(),
|
|
4549
|
+
x !== void 0 || e.value || ((F = m.value) == null ? void 0 : F.status) === "running" && (x = window.setInterval(() => void W(), Do));
|
|
4567
4550
|
}
|
|
4568
4551
|
async function W() {
|
|
4569
4552
|
var F;
|
|
@@ -4572,16 +4555,16 @@ function Fo(o, e, t, a) {
|
|
|
4572
4555
|
return;
|
|
4573
4556
|
}
|
|
4574
4557
|
try {
|
|
4575
|
-
const { run:
|
|
4576
|
-
|
|
4558
|
+
const { run: q } = await No(o, a == null ? void 0 : a.value);
|
|
4559
|
+
q && D(q), ((F = m.value) == null ? void 0 : F.status) !== "running" ? N() : m.value.updatedAt && Date.now() - new Date(m.value.updatedAt).getTime() > Vo && (y.value = !0, N());
|
|
4577
4560
|
} catch {
|
|
4578
4561
|
}
|
|
4579
4562
|
}
|
|
4580
|
-
function
|
|
4581
|
-
|
|
4563
|
+
function D(F, q) {
|
|
4564
|
+
q !== void 0 && (h.value = q);
|
|
4582
4565
|
const _ = F.sections.some((z) => {
|
|
4583
4566
|
var H;
|
|
4584
|
-
const g = (H = m.value) == null ? void 0 : H.sections.find((
|
|
4567
|
+
const g = (H = m.value) == null ? void 0 : H.sections.find((J) => J.id === z.id);
|
|
4585
4568
|
return z.status === "ok" && (g == null ? void 0 : g.status) !== "ok";
|
|
4586
4569
|
});
|
|
4587
4570
|
m.value = F, y.value = !1, _ && b.forEach((z) => z()), E();
|
|
@@ -4589,27 +4572,27 @@ function Fo(o, e, t, a) {
|
|
|
4589
4572
|
function Y(F) {
|
|
4590
4573
|
var _;
|
|
4591
4574
|
if (F.name !== "build_run") return;
|
|
4592
|
-
const
|
|
4593
|
-
Array.isArray(
|
|
4575
|
+
const q = F.data;
|
|
4576
|
+
Array.isArray(q.sections) && D(
|
|
4594
4577
|
{
|
|
4595
|
-
runId:
|
|
4596
|
-
status:
|
|
4597
|
-
sections:
|
|
4578
|
+
runId: q.runId ? String(q.runId) : void 0,
|
|
4579
|
+
status: q.status ?? "running",
|
|
4580
|
+
sections: q.sections,
|
|
4598
4581
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
4599
4582
|
},
|
|
4600
4583
|
// first snapshot of this turn claims the anchor; later ones keep it
|
|
4601
|
-
(_ = m.value) != null && _.runId && m.value.runId ===
|
|
4584
|
+
(_ = m.value) != null && _.runId && m.value.runId === q.runId ? void 0 : (t == null ? void 0 : t.value) ?? null
|
|
4602
4585
|
);
|
|
4603
4586
|
}
|
|
4604
4587
|
function U() {
|
|
4605
4588
|
N(), m.value = null, h.value = null, y.value = !1, I.value = "";
|
|
4606
4589
|
}
|
|
4607
4590
|
function O(F) {
|
|
4608
|
-
F && F.status !== "ok" &&
|
|
4591
|
+
F && F.status !== "ok" && D(F, null);
|
|
4609
4592
|
}
|
|
4610
4593
|
async function G(F) {
|
|
4611
|
-
var
|
|
4612
|
-
if (!(!((
|
|
4594
|
+
var q;
|
|
4595
|
+
if (!(!((q = m.value) != null && q.runId) || m.value.status === "running")) {
|
|
4613
4596
|
I.value = "";
|
|
4614
4597
|
try {
|
|
4615
4598
|
const { run: _ } = await $o(
|
|
@@ -4618,18 +4601,18 @@ function Fo(o, e, t, a) {
|
|
|
4618
4601
|
F,
|
|
4619
4602
|
s(r.value)
|
|
4620
4603
|
);
|
|
4621
|
-
|
|
4604
|
+
D(_);
|
|
4622
4605
|
} catch (_) {
|
|
4623
4606
|
I.value = _ instanceof Error ? _.message : String(_);
|
|
4624
4607
|
}
|
|
4625
4608
|
}
|
|
4626
4609
|
}
|
|
4627
|
-
async function
|
|
4610
|
+
async function K() {
|
|
4628
4611
|
y.value = !1, await W();
|
|
4629
4612
|
}
|
|
4630
|
-
return
|
|
4613
|
+
return je(N), { run: m, anchorId: h, stale: y, retryError: I, seed: O, clear: U, noteEvent: Y, retry: G, refresh: K, onLanded: L };
|
|
4631
4614
|
}
|
|
4632
|
-
const
|
|
4615
|
+
const qo = 380, Bo = 600, Vt = 'button:not([disabled]),textarea:not([disabled]),select:not([disabled]),a[href],[tabindex]:not([tabindex="-1"])';
|
|
4633
4616
|
function Uo(o, e) {
|
|
4634
4617
|
const t = T(), a = T(), r = T(0);
|
|
4635
4618
|
let m, h = !1;
|
|
@@ -4637,9 +4620,9 @@ function Uo(o, e) {
|
|
|
4637
4620
|
!t.value || typeof ResizeObserver > "u" || (m = new ResizeObserver(([x]) => {
|
|
4638
4621
|
r.value = x.contentRect.width, !h && (h = !0, y.value || (o.value = !1));
|
|
4639
4622
|
}), m.observe(t.value));
|
|
4640
|
-
}),
|
|
4623
|
+
}), je(() => m == null ? void 0 : m.disconnect());
|
|
4641
4624
|
const y = V(
|
|
4642
|
-
() => !r.value || r.value >=
|
|
4625
|
+
() => !r.value || r.value >= qo + Bo
|
|
4643
4626
|
), I = V(() => o.value && !y.value && !e.value);
|
|
4644
4627
|
let b = null;
|
|
4645
4628
|
de(I, async (x) => {
|
|
@@ -4657,12 +4640,12 @@ function Uo(o, e) {
|
|
|
4657
4640
|
const E = x.shiftKey ? N[0] : N[N.length - 1];
|
|
4658
4641
|
document.activeElement === E && (x.preventDefault(), (x.shiftKey ? N[N.length - 1] : N[0]).focus());
|
|
4659
4642
|
}
|
|
4660
|
-
return Me(() => window.addEventListener("keydown", L, !0)),
|
|
4643
|
+
return Me(() => window.addEventListener("keydown", L, !0)), je(() => window.removeEventListener("keydown", L, !0)), { root: t, drawer: a, docked: y, modal: I };
|
|
4661
4644
|
}
|
|
4662
|
-
const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = { class: "fm-typo-en-title-md-600 block min-w-0 max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, Yo = { class: "relative shrink-0" },
|
|
4645
|
+
const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = { class: "fm-typo-en-title-md-600 block min-w-0 max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, Yo = { class: "relative shrink-0" }, Jo = {
|
|
4663
4646
|
key: 0,
|
|
4664
4647
|
class: "flex items-center gap-8 border-b border-fm-color-border-secondary px-16 py-8"
|
|
4665
|
-
},
|
|
4648
|
+
}, Ko = {
|
|
4666
4649
|
key: 0,
|
|
4667
4650
|
class: "flex min-w-0 grow items-start overflow-x-auto scrollbar-hide"
|
|
4668
4651
|
}, Xo = {
|
|
@@ -4688,52 +4671,52 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4688
4671
|
}, li = {
|
|
4689
4672
|
key: 4,
|
|
4690
4673
|
class: "fm-typo-en-body-sm-400 p-16 text-fm-color-typo-error"
|
|
4691
|
-
}, fi = ["srcdoc", "title"], di = ["role", "aria-modal", "aria-label"], ci = /* @__PURE__ */
|
|
4674
|
+
}, fi = ["srcdoc", "title"], di = ["role", "aria-modal", "aria-label"], ci = /* @__PURE__ */ De({
|
|
4692
4675
|
__name: "ReportCanvasView",
|
|
4693
4676
|
props: {
|
|
4694
4677
|
reportId: {},
|
|
4695
4678
|
viewOnly: { type: Boolean }
|
|
4696
4679
|
},
|
|
4697
4680
|
setup(o) {
|
|
4698
|
-
const e = o, t = xn(), a = wn(), { t: r, te: m } = Ve(), { currentReport: h } = Oe(
|
|
4681
|
+
const e = o, t = xn(), a = wn(), { t: r, te: m } = Ve(), { currentReport: h } = Oe(En()), y = V(() => {
|
|
4699
4682
|
var l;
|
|
4700
|
-
return
|
|
4683
|
+
return On(r, m, (l = h.value) == null ? void 0 : l.name, "other");
|
|
4701
4684
|
}), I = e.reportId || String(t.query.reportId ?? ""), b = T(), L = T(""), x = V(() => {
|
|
4702
4685
|
var l;
|
|
4703
4686
|
return ((l = b.value) == null ? void 0 : l.state) === "draft";
|
|
4704
4687
|
}), N = V(() => {
|
|
4705
4688
|
var l, v;
|
|
4706
4689
|
return ((v = (l = b.value) == null ? void 0 : l.unpublishedTurnIds) == null ? void 0 : v.length) ?? 0;
|
|
4707
|
-
}), E = T(!1), W = T(""),
|
|
4690
|
+
}), E = T(!1), W = T(""), D = T(!1), Y = T(!1), U = T(!1);
|
|
4708
4691
|
function O() {
|
|
4709
|
-
|
|
4692
|
+
D.value = !0, g.value = !1;
|
|
4710
4693
|
}
|
|
4711
4694
|
function G() {
|
|
4712
|
-
U.value || (
|
|
4695
|
+
U.value || (D.value ? D.value = !1 : _.value = !1);
|
|
4713
4696
|
}
|
|
4714
|
-
async function
|
|
4715
|
-
await Ge(() => Promise.resolve(l)),
|
|
4697
|
+
async function K(l) {
|
|
4698
|
+
await Ge(() => Promise.resolve(l)), D.value = !1, Y.value = !0;
|
|
4716
4699
|
}
|
|
4717
|
-
const { isAdmin: F } = Sn(),
|
|
4718
|
-
get: () => H.value ?
|
|
4700
|
+
const { isAdmin: F } = Sn(), q = V(() => !e.viewOnly && F.value), _ = T(!1), z = T(), g = T(!1), H = T(!1), J = T(), ee = T(), X = V({
|
|
4701
|
+
get: () => H.value ? J.value : ee.value,
|
|
4719
4702
|
set: (l) => {
|
|
4720
|
-
H.value ?
|
|
4703
|
+
H.value ? J.value = l : ee.value = l;
|
|
4721
4704
|
}
|
|
4722
4705
|
}), se = V(
|
|
4723
4706
|
() => {
|
|
4724
4707
|
var l;
|
|
4725
4708
|
return !!X.value && !((l = b.value) != null && l.sections.some(
|
|
4726
4709
|
(v) => {
|
|
4727
|
-
var
|
|
4728
|
-
return v.id === ((
|
|
4710
|
+
var B, Q;
|
|
4711
|
+
return v.id === ((B = X.value) == null ? void 0 : B.sectionId) && v.version === ((Q = X.value) == null ? void 0 : Q.version);
|
|
4729
4712
|
}
|
|
4730
4713
|
));
|
|
4731
4714
|
}
|
|
4732
4715
|
), ce = T({});
|
|
4733
4716
|
function ye(l, v) {
|
|
4734
|
-
var
|
|
4717
|
+
var B;
|
|
4735
4718
|
return String(
|
|
4736
|
-
((
|
|
4719
|
+
((B = l.config) == null ? void 0 : B.title) || ce.value[l.id] || r("reportV5.reportAi.chat.widgetNumber", { number: v + 1 })
|
|
4737
4720
|
);
|
|
4738
4721
|
}
|
|
4739
4722
|
const he = T([]), le = T([]), oe = V({
|
|
@@ -4748,8 +4731,8 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4748
4731
|
function xe() {
|
|
4749
4732
|
const l = X.value;
|
|
4750
4733
|
if (!(l != null && l.element)) return te();
|
|
4751
|
-
const { element: v, ...
|
|
4752
|
-
X.value = Q ? { ...
|
|
4734
|
+
const { element: v, ...B } = l, Q = oe.value.shift();
|
|
4735
|
+
X.value = Q ? { ...B, element: Q, elementText: Q.text ?? "", elementTag: Q.tag } : B;
|
|
4753
4736
|
}
|
|
4754
4737
|
function C(l) {
|
|
4755
4738
|
l.key === "Escape" && (g.value = !1);
|
|
@@ -4757,31 +4740,31 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4757
4740
|
function u(l, v = []) {
|
|
4758
4741
|
var Q;
|
|
4759
4742
|
if (!g.value || we.value) return;
|
|
4760
|
-
const
|
|
4761
|
-
!
|
|
4743
|
+
const B = (Q = b.value) == null ? void 0 : Q.sections.find((fe) => fe.id === l.sectionId);
|
|
4744
|
+
!B || B.version !== l.version || (X.value = {
|
|
4762
4745
|
...l,
|
|
4763
4746
|
viewParams: JSON.parse(JSON.stringify($.params.value)),
|
|
4764
4747
|
viewIntent: JSON.parse(JSON.stringify($.intent.value)),
|
|
4765
|
-
label: l.label || ye(
|
|
4748
|
+
label: l.label || ye(B, b.value.sections.indexOf(B))
|
|
4766
4749
|
}, oe.value = v, g.value = !1, _.value = !0);
|
|
4767
4750
|
}
|
|
4768
4751
|
const S = T(""), M = T(""), d = T("");
|
|
4769
4752
|
function n(l) {
|
|
4770
|
-
return
|
|
4771
|
-
const v =
|
|
4753
|
+
return j.stashDraft(S.value, ee.value), ge.clear(), l().then(() => {
|
|
4754
|
+
const v = j.recallDraft();
|
|
4772
4755
|
S.value = v.text, ee.value = v.target, le.value = [], g.value = !1;
|
|
4773
4756
|
});
|
|
4774
4757
|
}
|
|
4775
4758
|
async function i(l) {
|
|
4776
4759
|
if (vt.value) return;
|
|
4777
|
-
const v = l ?
|
|
4760
|
+
const v = l ? J.value : void 0, B = l ? [...he.value] : [];
|
|
4778
4761
|
let Q = !1;
|
|
4779
4762
|
await n(async () => {
|
|
4780
|
-
Q = await
|
|
4781
|
-
}), Q && l && (H.value = !1, ee.value = v, le.value =
|
|
4763
|
+
Q = await j.startChat();
|
|
4764
|
+
}), Q && l && (H.value = !1, ee.value = v, le.value = B, J.value = void 0, he.value = [], S.value = l, await A());
|
|
4782
4765
|
}
|
|
4783
4766
|
const f = (l) => n(async () => {
|
|
4784
|
-
const v = await
|
|
4767
|
+
const v = await j.select(l);
|
|
4785
4768
|
ge.seed(v);
|
|
4786
4769
|
});
|
|
4787
4770
|
async function A() {
|
|
@@ -4795,24 +4778,24 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4795
4778
|
}
|
|
4796
4779
|
}
|
|
4797
4780
|
function P(l) {
|
|
4798
|
-
const v =
|
|
4781
|
+
const v = j.takeUnsent(l);
|
|
4799
4782
|
if (v)
|
|
4800
4783
|
return S.value = v.text, X.value = v.target, A();
|
|
4801
4784
|
}
|
|
4802
|
-
const $ = vo(I),
|
|
4785
|
+
const $ = vo(I), j = jo(I), {
|
|
4803
4786
|
messages: re,
|
|
4804
4787
|
sessionId: be,
|
|
4805
4788
|
title: Te,
|
|
4806
4789
|
chats: Fe,
|
|
4807
|
-
chatsCursor:
|
|
4808
|
-
chatsLoading:
|
|
4790
|
+
chatsCursor: qe,
|
|
4791
|
+
chatsLoading: Je,
|
|
4809
4792
|
chatsError: We,
|
|
4810
4793
|
switching: Re,
|
|
4811
4794
|
earlier: Yt,
|
|
4812
|
-
loadingEarlier:
|
|
4795
|
+
loadingEarlier: Jt,
|
|
4813
4796
|
streaming: we,
|
|
4814
4797
|
turnId: ht,
|
|
4815
|
-
activity:
|
|
4798
|
+
activity: Kt,
|
|
4816
4799
|
error: bt,
|
|
4817
4800
|
interrupted: Xt,
|
|
4818
4801
|
unsent: Qt,
|
|
@@ -4821,7 +4804,7 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4821
4804
|
send: tn,
|
|
4822
4805
|
onLifecycle: nn,
|
|
4823
4806
|
onSettled: an
|
|
4824
|
-
} =
|
|
4807
|
+
} = j, { dateRange: Ke, selectedLocationIds: Xe, locations: gt, timezone: rn } = Oe(pt()), ge = Fo(I, we, ht, be), vt = V(
|
|
4825
4808
|
() => {
|
|
4826
4809
|
var l;
|
|
4827
4810
|
return we.value || Re.value || ((l = ge.run.value) == null ? void 0 : l.status) === "running";
|
|
@@ -4832,16 +4815,16 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4832
4815
|
return ((l = b.value) == null ? void 0 : l.sections.filter((v) => v.id !== Ho)) ?? [];
|
|
4833
4816
|
}
|
|
4834
4817
|
), xt = V(() => yt.value.length === 0), wt = V({
|
|
4835
|
-
get: () =>
|
|
4818
|
+
get: () => q.value && _.value || D.value,
|
|
4836
4819
|
set: (l) => {
|
|
4837
|
-
_.value = l, l || (
|
|
4820
|
+
_.value = l, l || (D.value = !1);
|
|
4838
4821
|
}
|
|
4839
4822
|
}), { root: on, drawer: sn, docked: Qe, modal: Ze } = Uo(wt, g), ln = V(
|
|
4840
4823
|
() => {
|
|
4841
4824
|
var l;
|
|
4842
4825
|
return ((l = b.value) == null ? void 0 : l.sections.some((v) => v.status === "pending")) ?? !1;
|
|
4843
4826
|
}
|
|
4844
|
-
), fn = V(() => we.value ?
|
|
4827
|
+
), fn = V(() => we.value ? qt(Kt.value) : ln.value ? "loading" : "updating"), ke = Eo(z, {
|
|
4845
4828
|
onSelectSection: u,
|
|
4846
4829
|
onCancelSelection: () => {
|
|
4847
4830
|
g.value = !1;
|
|
@@ -4849,35 +4832,35 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4849
4832
|
onSetParams: (l, v) => {
|
|
4850
4833
|
$.setParams(l, v);
|
|
4851
4834
|
},
|
|
4852
|
-
onSectionRendered: (l, v,
|
|
4853
|
-
|
|
4835
|
+
onSectionRendered: (l, v, B) => {
|
|
4836
|
+
B && (ce.value = { ...ce.value, [l]: B }), et(l, v, "ok");
|
|
4854
4837
|
},
|
|
4855
|
-
onSectionError: (l, v,
|
|
4856
|
-
console.warn("[report-canvas] section failed", { reportId: I, sectionId: l, message:
|
|
4838
|
+
onSectionError: (l, v, B) => {
|
|
4839
|
+
console.warn("[report-canvas] section failed", { reportId: I, sectionId: l, message: B }), et(l, v, "error", B);
|
|
4857
4840
|
},
|
|
4858
|
-
onSectionLayout: (l, v,
|
|
4841
|
+
onSectionLayout: (l, v, B) => {
|
|
4859
4842
|
var fe;
|
|
4860
4843
|
const Q = (fe = b.value) == null ? void 0 : fe.sections.find((ae) => ae.id === l);
|
|
4861
|
-
(Q == null ? void 0 : Q.status) === "ok" && et(l, v, "ok", void 0,
|
|
4844
|
+
(Q == null ? void 0 : Q.status) === "ok" && et(l, v, "ok", void 0, B);
|
|
4862
4845
|
}
|
|
4863
4846
|
});
|
|
4864
4847
|
$.onResult((l) => ke.pushRows(l)), $.onParamsChanged(() => ke.pushParams($.paramState())), $.bindStore(), de([g, X, ke.ready, we], () => {
|
|
4865
4848
|
ke.setCommentMode(g.value && !we.value, X.value);
|
|
4866
4849
|
});
|
|
4867
|
-
async function et(l, v,
|
|
4850
|
+
async function et(l, v, B, Q, fe) {
|
|
4868
4851
|
var Ne, Ue;
|
|
4869
4852
|
const ae = (Ne = b.value) == null ? void 0 : Ne.sections.find((Le) => Le.id === l);
|
|
4870
4853
|
if (!ae || v !== ae.version) return;
|
|
4871
|
-
const Ce =
|
|
4872
|
-
if (!(ae.status ===
|
|
4854
|
+
const Ce = B === "error" ? Q ?? "the section failed to render" : void 0, _e = fe ?? ae.warnings ?? [];
|
|
4855
|
+
if (!(ae.status === B && ae.error === Ce && (ae.warnings ?? []).join(`
|
|
4873
4856
|
`) === _e.join(`
|
|
4874
4857
|
`))) {
|
|
4875
|
-
ae.status =
|
|
4858
|
+
ae.status = B, ae.error = Ce, ae.warnings = _e.length ? _e : void 0;
|
|
4876
4859
|
try {
|
|
4877
|
-
await
|
|
4860
|
+
await yr(
|
|
4878
4861
|
I,
|
|
4879
4862
|
l,
|
|
4880
|
-
{ version: v, status:
|
|
4863
|
+
{ version: v, status: B, error: Ce, warnings: _e },
|
|
4881
4864
|
(Ue = b.value) == null ? void 0 : Ue.state
|
|
4882
4865
|
);
|
|
4883
4866
|
} catch (Le) {
|
|
@@ -4898,20 +4881,20 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4898
4881
|
}
|
|
4899
4882
|
}
|
|
4900
4883
|
}
|
|
4901
|
-
const dn = () => Ge(() =>
|
|
4884
|
+
const dn = () => Ge(() => xr(I)), cn = () => Ge(() => wr(I)), mn = (l) => Ge(() => kr(I, l));
|
|
4902
4885
|
async function un() {
|
|
4903
4886
|
try {
|
|
4904
4887
|
L.value = "";
|
|
4905
4888
|
const l = await Rt(I);
|
|
4906
|
-
b.value = l, $.load(l),
|
|
4889
|
+
b.value = l, $.load(l), q.value && xt.value && Qe.value && (_.value = !0), await Ee(), await ke.init(l.sections, $.paramState(), $.env());
|
|
4907
4890
|
} catch (l) {
|
|
4908
4891
|
L.value = l instanceof Error ? l.message : String(l);
|
|
4909
4892
|
}
|
|
4910
4893
|
}
|
|
4911
4894
|
const tt = /* @__PURE__ */ new Set();
|
|
4912
|
-
let
|
|
4895
|
+
let Be = null, nt = !1;
|
|
4913
4896
|
function at() {
|
|
4914
|
-
return
|
|
4897
|
+
return Be ? (nt = !0, Be) : (Be = (async () => {
|
|
4915
4898
|
do {
|
|
4916
4899
|
nt = !1;
|
|
4917
4900
|
try {
|
|
@@ -4921,23 +4904,23 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4921
4904
|
}
|
|
4922
4905
|
} while (nt);
|
|
4923
4906
|
})().finally(() => {
|
|
4924
|
-
|
|
4925
|
-
}),
|
|
4907
|
+
Be = null;
|
|
4908
|
+
}), Be);
|
|
4926
4909
|
}
|
|
4927
4910
|
async function pn() {
|
|
4928
4911
|
var Ce, _e;
|
|
4929
4912
|
const l = (((Ce = b.value) == null ? void 0 : Ce.sections) ?? []).map((ie) => ie.id), v = new Map(
|
|
4930
4913
|
(((_e = b.value) == null ? void 0 : _e.sections) ?? []).map((ie) => [ie.id, ie.version])
|
|
4931
|
-
),
|
|
4932
|
-
b.value =
|
|
4914
|
+
), B = await Rt(I);
|
|
4915
|
+
b.value = B;
|
|
4933
4916
|
const Q = [...tt];
|
|
4934
|
-
tt.clear(), $.applyCanvas(
|
|
4935
|
-
const fe =
|
|
4917
|
+
tt.clear(), $.applyCanvas(B, Q) && ke.pushParams($.paramState());
|
|
4918
|
+
const fe = B.sections.map((ie) => ie.id);
|
|
4936
4919
|
if (fe.length !== l.length || fe.some((ie, Ne) => ie !== l[Ne])) {
|
|
4937
|
-
await ke.init(
|
|
4920
|
+
await ke.init(B.sections, $.paramState(), $.env());
|
|
4938
4921
|
return;
|
|
4939
4922
|
}
|
|
4940
|
-
const ae =
|
|
4923
|
+
const ae = B.sections.filter(
|
|
4941
4924
|
(ie) => v.get(ie.id) !== ie.version
|
|
4942
4925
|
);
|
|
4943
4926
|
ae.length && await ke.swapSections(ae);
|
|
@@ -4952,10 +4935,10 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4952
4935
|
() => Object.values($.results.value).some((l) => l.truncated)
|
|
4953
4936
|
);
|
|
4954
4937
|
return Me(async () => {
|
|
4955
|
-
window.addEventListener("keydown", C), await un(),
|
|
4956
|
-
}),
|
|
4938
|
+
window.addEventListener("keydown", C), await un(), q.value && ge.seed(await en());
|
|
4939
|
+
}), je(() => window.removeEventListener("keydown", C)), (l, v) => {
|
|
4957
4940
|
var Ce, _e, ie, Ne, Ue, Le;
|
|
4958
|
-
const
|
|
4941
|
+
const B = Ie("FmTooltip"), Q = Ie("FmPageHead"), fe = Ie("FmButton"), ae = Ie("FmIcon");
|
|
4959
4942
|
return c(), p("div", {
|
|
4960
4943
|
ref_key: "root",
|
|
4961
4944
|
ref: on,
|
|
@@ -4970,7 +4953,7 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4970
4953
|
"onClick:back": v[0] || (v[0] = (ne) => s(a).push({ name: "reports", query: s(t).query }))
|
|
4971
4954
|
}, {
|
|
4972
4955
|
title: $e(() => [
|
|
4973
|
-
Z(
|
|
4956
|
+
Z(B, {
|
|
4974
4957
|
content: y.value,
|
|
4975
4958
|
placement: "bottom",
|
|
4976
4959
|
"z-index": 2e3,
|
|
@@ -4985,8 +4968,8 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4985
4968
|
_: 1
|
|
4986
4969
|
}, 8, ["title"])),
|
|
4987
4970
|
w("div", Yo, [
|
|
4988
|
-
!l.viewOnly || ((Ce = b.value) == null ? void 0 : Ce.hostFilters) !== !1 ? (c(), p("div",
|
|
4989
|
-
((_e = b.value) == null ? void 0 : _e.hostFilters) !== !1 ? (c(), p("div",
|
|
4971
|
+
!l.viewOnly || ((Ce = b.value) == null ? void 0 : Ce.hostFilters) !== !1 ? (c(), p("div", Jo, [
|
|
4972
|
+
((_e = b.value) == null ? void 0 : _e.hostFilters) !== !1 ? (c(), p("div", Ko, [
|
|
4990
4973
|
Z(In, {
|
|
4991
4974
|
modelValue: s(Xe),
|
|
4992
4975
|
"onUpdate:modelValue": v[2] || (v[2] = (ne) => It(Xe) ? Xe.value = ne : null),
|
|
@@ -4994,8 +4977,8 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
4994
4977
|
}, {
|
|
4995
4978
|
default: $e(() => [
|
|
4996
4979
|
Z(Cn, {
|
|
4997
|
-
"date-range": s(
|
|
4998
|
-
"onUpdate:dateRange": v[1] || (v[1] = (ne) => It(
|
|
4980
|
+
"date-range": s(Ke),
|
|
4981
|
+
"onUpdate:dateRange": v[1] || (v[1] = (ne) => It(Ke) ? Ke.value = ne : null)
|
|
4999
4982
|
}, null, 8, ["date-range"])
|
|
5000
4983
|
]),
|
|
5001
4984
|
_: 1
|
|
@@ -5008,10 +4991,10 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5008
4991
|
variant: "tertiary",
|
|
5009
4992
|
"prepend-icon": "history",
|
|
5010
4993
|
label: s(r)("reportV5.reportCanvas.draft.history"),
|
|
5011
|
-
"aria-expanded":
|
|
4994
|
+
"aria-expanded": D.value,
|
|
5012
4995
|
onClick: O
|
|
5013
4996
|
}, null, 8, ["label", "aria-expanded"])) : R("", !0),
|
|
5014
|
-
|
|
4997
|
+
q.value ? (c(), me(B, {
|
|
5015
4998
|
key: 1,
|
|
5016
4999
|
placement: "bottom",
|
|
5017
5000
|
content: s(r)(
|
|
@@ -5024,7 +5007,7 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5024
5007
|
class: Pe(["canvas-comment-target flex h-32 w-32 items-center justify-center rounded-md text-fm-color-typo-secondary disabled:opacity-50", g.value && "bg-fm-color-neutral-gray-100 text-fm-color-primary"]),
|
|
5025
5008
|
"aria-pressed": g.value,
|
|
5026
5009
|
"aria-label": s(r)("reportV5.reportAi.chat.commentWidget"),
|
|
5027
|
-
disabled: s(we) ||
|
|
5010
|
+
disabled: s(we) || D.value,
|
|
5028
5011
|
onClick: v[3] || (v[3] = (ne) => g.value = !g.value)
|
|
5029
5012
|
}, v[15] || (v[15] = [
|
|
5030
5013
|
w("svg", {
|
|
@@ -5046,7 +5029,7 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5046
5029
|
]),
|
|
5047
5030
|
_: 1
|
|
5048
5031
|
}, 8, ["content"])) : R("", !0),
|
|
5049
|
-
|
|
5032
|
+
q.value && !_.value && !D.value ? (c(), me(fe, {
|
|
5050
5033
|
key: 2,
|
|
5051
5034
|
"data-testid": "report-canvas-chat-open",
|
|
5052
5035
|
variant: "tertiary",
|
|
@@ -5121,19 +5104,19 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5121
5104
|
),
|
|
5122
5105
|
role: s(Ze) ? "dialog" : void 0,
|
|
5123
5106
|
"aria-modal": s(Ze) ? "true" : void 0,
|
|
5124
|
-
"aria-label": s(r)(
|
|
5107
|
+
"aria-label": s(r)(D.value ? "reportV5.reportCanvas.draft.history" : "reportV5.reportAi.chat.title")
|
|
5125
5108
|
}, [
|
|
5126
|
-
|
|
5109
|
+
D.value ? (c(), me(co, {
|
|
5127
5110
|
key: 0,
|
|
5128
5111
|
"report-id": s(I),
|
|
5129
5112
|
"published-at": (Ue = b.value) == null ? void 0 : Ue.publishedAt,
|
|
5130
5113
|
timezone: s($).env().timezone,
|
|
5131
5114
|
"has-draft": x.value,
|
|
5132
5115
|
busy: s(we) || E.value,
|
|
5133
|
-
onClose: v[6] || (v[6] = (ne) =>
|
|
5134
|
-
onRestored:
|
|
5116
|
+
onClose: v[6] || (v[6] = (ne) => D.value = !1),
|
|
5117
|
+
onRestored: K,
|
|
5135
5118
|
onRestoring: v[7] || (v[7] = (ne) => U.value = ne)
|
|
5136
|
-
}, null, 8, ["report-id", "published-at", "timezone", "has-draft", "busy"])) : (c(), me(
|
|
5119
|
+
}, null, 8, ["report-id", "published-at", "timezone", "has-draft", "busy"])) : (c(), me(gr, {
|
|
5137
5120
|
key: 1,
|
|
5138
5121
|
"home-draft": M.value,
|
|
5139
5122
|
"onUpdate:homeDraft": v[8] || (v[8] = (ne) => M.value = ne),
|
|
@@ -5160,13 +5143,13 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5160
5143
|
"chat-id": s(be),
|
|
5161
5144
|
"chat-title": s(Te),
|
|
5162
5145
|
chats: s(Fe),
|
|
5163
|
-
"chats-cursor": s(
|
|
5164
|
-
"chats-loading": s(
|
|
5146
|
+
"chats-cursor": s(qe),
|
|
5147
|
+
"chats-loading": s(Je),
|
|
5165
5148
|
"chats-error": s(We),
|
|
5166
5149
|
switching: s(Re),
|
|
5167
5150
|
busy: vt.value,
|
|
5168
5151
|
earlier: s(Yt),
|
|
5169
|
-
"loading-earlier": s(
|
|
5152
|
+
"loading-earlier": s(Jt),
|
|
5170
5153
|
"onUpdate:draft": v[10] || (v[10] = (ne) => S.value = ne),
|
|
5171
5154
|
onClearTarget: xe,
|
|
5172
5155
|
onSubmit: A,
|
|
@@ -5177,15 +5160,15 @@ const Ho = "page_filters", Wo = { class: "flex min-w-0 grow flex-col" }, Go = {
|
|
|
5177
5160
|
onCheckStatus: s(ge).refresh,
|
|
5178
5161
|
onNewChat: i,
|
|
5179
5162
|
onSelectChat: f,
|
|
5180
|
-
onLoadChats: v[12] || (v[12] = (ne) => s(
|
|
5181
|
-
onLoadMoreChats: v[13] || (v[13] = (ne) => s(
|
|
5182
|
-
onLoadEarlier: v[14] || (v[14] = (ne) => s(
|
|
5163
|
+
onLoadChats: v[12] || (v[12] = (ne) => s(j).loadChats()),
|
|
5164
|
+
onLoadMoreChats: v[13] || (v[13] = (ne) => s(j).loadChats(s(qe) ?? void 0)),
|
|
5165
|
+
onLoadEarlier: v[14] || (v[14] = (ne) => s(j).loadEarlier())
|
|
5183
5166
|
}, null, 8, ["home-draft", "home-open", "messages", "draft", "target", "target-stale", "streaming", "turn-id", "phase", "slow", "error", "interrupted", "blank", "run", "run-anchor-id", "run-stale", "retry-error", "undoable-turn-ids", "undoing", "unsent-ids", "chat-id", "chat-title", "chats", "chats-cursor", "chats-loading", "chats-error", "switching", "busy", "earlier", "loading-earlier", "onRetry", "onCheckStatus"]))
|
|
5184
5167
|
], 10, di)) : R("", !0)
|
|
5185
5168
|
], 512);
|
|
5186
5169
|
};
|
|
5187
5170
|
}
|
|
5188
|
-
}),
|
|
5171
|
+
}), _i = /* @__PURE__ */ ut(ci, [["__scopeId", "data-v-14b7e3fc"]]);
|
|
5189
5172
|
export {
|
|
5190
|
-
|
|
5173
|
+
_i as default
|
|
5191
5174
|
};
|