@mt-gloss/ui 0.1.106 → 0.1.107
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/{COMMITS-kaUvc5jL.js → COMMITS-DG0Q_9DU.js} +89 -81
- package/composites-panels.js +893 -484
- package/index.js +2 -2
- package/lib/composites/panels/PanelChrome.d.ts +15 -1
- package/lib/composites/panels/coordinator/settingsBufferSchemas.d.ts +2 -2
- package/lib/composites/panels/index.d.ts +2 -2
- package/lib/composites/panels/shells/CatalogAddShell.d.ts +6 -4
- package/lib/composites/panels/shells/CatalogReplaceShell.d.ts +2 -2
- package/lib/composites/panels/shells/PageMgmtShell.d.ts +1 -1
- package/lib/composites/panels/shells/SettingsShell.d.ts +46 -3
- package/lib/composites/panels/shells/index.d.ts +2 -2
- package/lib/composites/panels/shells/internals/CatalogLensPicker.d.ts +14 -1
- package/lib/composites/panels/shells/internals/CatalogTileGrid.d.ts +3 -0
- package/lib/composites/panels/shells/internals/PageMgmtFooter.d.ts +7 -0
- package/lib/composites/panels/shells/internals/PageMgmtRow.d.ts +3 -0
- package/lib/composites/panels/shells/internals/catalog-mocks.d.ts +59 -7
- package/lib/composites/panels/shells/settings/SlotsControls.d.ts +5 -1
- package/package.json +1 -1
- package/ui.css +1 -1
package/composites-panels.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
import { u as
|
|
2
|
-
import { C as
|
|
3
|
-
import { jsx as s, jsxs as
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { u as k, f as Q, S as he, a as fe, g as A, c as T } from "./COMMITS-DG0Q_9DU.js";
|
|
2
|
+
import { C as Et, b as xt, P as At, e as Tt, i as Lt, r as Ot, d as kt } from "./COMMITS-DG0Q_9DU.js";
|
|
3
|
+
import { jsx as s, jsxs as h, Fragment as X } from "react/jsx-runtime";
|
|
4
|
+
import K, { useState as _, useRef as I, createContext as J, useContext as Z, useMemo as W, useEffect as x, useCallback as E, useLayoutEffect as ge } from "react";
|
|
5
|
+
import { useSensors as be, useSensor as q, PointerSensor as ve, KeyboardSensor as ye, DndContext as Se, closestCenter as _e } from "@dnd-kit/core";
|
|
6
|
+
import { sortableKeyboardCoordinates as Ne, SortableContext as Ce, horizontalListSortingStrategy as we, arrayMove as Pe, useSortable as Ee } from "@dnd-kit/sortable";
|
|
7
|
+
import { CSS as xe } from "@dnd-kit/utilities";
|
|
8
|
+
function ft() {
|
|
9
|
+
const e = k();
|
|
7
10
|
if (e?.state.activePanelId !== "settings") return null;
|
|
8
11
|
const t = e.state.activeTrigger;
|
|
9
12
|
return t?.kind === "card-overflow" ? t.cardId : null;
|
|
10
13
|
}
|
|
11
|
-
function
|
|
14
|
+
function Ae({ children: e }) {
|
|
12
15
|
return /* @__PURE__ */ s("div", { className: "clone-stage", children: e });
|
|
13
16
|
}
|
|
14
|
-
function
|
|
17
|
+
function Te({ span: e, rotating: t = !0, children: r }) {
|
|
15
18
|
const n = ["clone-card", `span-${e}`, t ? "rotating" : ""].filter(Boolean).join(" ");
|
|
16
|
-
return /* @__PURE__ */ s("div", { className: n, children:
|
|
19
|
+
return /* @__PURE__ */ s("div", { className: n, children: r });
|
|
17
20
|
}
|
|
18
|
-
function
|
|
19
|
-
return /* @__PURE__ */
|
|
21
|
+
function Le({ value: e, onChange: t }) {
|
|
22
|
+
return /* @__PURE__ */ h("div", { className: "settings-shell__field settings-shell__field--threshold", children: [
|
|
20
23
|
/* @__PURE__ */ s("span", { className: "settings-shell__label", "aria-hidden": "true", children: "Alert level (%)" }),
|
|
21
|
-
/* @__PURE__ */
|
|
24
|
+
/* @__PURE__ */ h("div", { className: "settings-shell__slider-row", children: [
|
|
22
25
|
/* @__PURE__ */ s(
|
|
23
26
|
"input",
|
|
24
27
|
{
|
|
@@ -35,17 +38,17 @@ function ce({ value: e, onChange: t }) {
|
|
|
35
38
|
className: "settings-shell__slider"
|
|
36
39
|
}
|
|
37
40
|
),
|
|
38
|
-
/* @__PURE__ */
|
|
41
|
+
/* @__PURE__ */ h("span", { className: "settings-shell__slider-value", "aria-live": "polite", children: [
|
|
39
42
|
e,
|
|
40
43
|
"%"
|
|
41
44
|
] })
|
|
42
45
|
] })
|
|
43
46
|
] });
|
|
44
47
|
}
|
|
45
|
-
function
|
|
46
|
-
return /* @__PURE__ */
|
|
48
|
+
function Oe({ value: e, onChange: t }) {
|
|
49
|
+
return /* @__PURE__ */ h("div", { className: "settings-shell__field settings-shell__field--timeframe", children: [
|
|
47
50
|
/* @__PURE__ */ s("span", { className: "settings-shell__label", "aria-hidden": "true", children: "Rolling period (days)" }),
|
|
48
|
-
/* @__PURE__ */
|
|
51
|
+
/* @__PURE__ */ h("div", { className: "settings-shell__slider-row", children: [
|
|
49
52
|
/* @__PURE__ */ s(
|
|
50
53
|
"input",
|
|
51
54
|
{
|
|
@@ -62,100 +65,423 @@ function de({ value: e, onChange: t }) {
|
|
|
62
65
|
className: "settings-shell__slider"
|
|
63
66
|
}
|
|
64
67
|
),
|
|
65
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ h("span", { className: "settings-shell__slider-value", "aria-live": "polite", children: [
|
|
66
69
|
e,
|
|
67
70
|
" days"
|
|
68
71
|
] })
|
|
69
72
|
] })
|
|
70
73
|
] });
|
|
71
74
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
function ke({ id: e, onRemove: t }) {
|
|
76
|
+
const { attributes: r, listeners: n, setNodeRef: c, transform: i, transition: d, isDragging: l } = Ee({ id: e }), a = {
|
|
77
|
+
transform: xe.Transform.toString(i),
|
|
78
|
+
transition: d,
|
|
79
|
+
opacity: l ? 0.6 : 1
|
|
80
|
+
};
|
|
81
|
+
return /* @__PURE__ */ h(
|
|
82
|
+
"li",
|
|
83
|
+
{
|
|
84
|
+
ref: c,
|
|
85
|
+
style: a,
|
|
86
|
+
className: `settings-shell__slot-pill${l ? " settings-shell__slot-pill--dragging" : ""}`,
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ s(
|
|
89
|
+
"button",
|
|
90
|
+
{
|
|
91
|
+
type: "button",
|
|
92
|
+
className: "settings-shell__slot-pill__handle",
|
|
93
|
+
"aria-label": `Reorder ${e}`,
|
|
94
|
+
...r,
|
|
95
|
+
...n,
|
|
96
|
+
children: /* @__PURE__ */ s("span", { "aria-hidden": "true", className: "settings-shell__slot-pill__grip", children: "⋮⋮" })
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
/* @__PURE__ */ s("span", { className: "settings-shell__slot-pill__label", children: e }),
|
|
100
|
+
/* @__PURE__ */ s(
|
|
101
|
+
"button",
|
|
102
|
+
{
|
|
103
|
+
type: "button",
|
|
104
|
+
className: "settings-shell__slot-pill__remove",
|
|
105
|
+
"aria-label": `Remove ${e}`,
|
|
106
|
+
onClick: t,
|
|
107
|
+
children: "×"
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function Ie({ value: e, onChange: t }) {
|
|
115
|
+
const r = be(
|
|
116
|
+
q(ve, { activationConstraint: { distance: 4 } }),
|
|
117
|
+
q(ye, { coordinateGetter: Ne })
|
|
118
|
+
), n = (i) => {
|
|
119
|
+
const { active: d, over: l } = i;
|
|
120
|
+
if (!l || d.id === l.id) return;
|
|
121
|
+
const a = e.findIndex((u) => u === d.id), o = e.findIndex((u) => u === l.id);
|
|
122
|
+
a === -1 || o === -1 || t(Pe([...e], a, o));
|
|
123
|
+
}, c = (i) => {
|
|
124
|
+
t(e.filter((d) => d !== i));
|
|
125
|
+
};
|
|
126
|
+
return /* @__PURE__ */ h("div", { className: "settings-shell__field settings-shell__field--slots", "aria-label": "Stack slots", children: [
|
|
127
|
+
/* @__PURE__ */ s("span", { className: "settings-shell__label", children: "Stack slots" }),
|
|
128
|
+
/* @__PURE__ */ s(Se, { sensors: r, collisionDetection: _e, onDragEnd: n, children: /* @__PURE__ */ s(Ce, { items: [...e], strategy: we, children: /* @__PURE__ */ s("ul", { className: "settings-shell__slots-list", role: "list", children: e.map((i) => /* @__PURE__ */ s(ke, { id: i, onRemove: () => c(i) }, i)) }) }) }),
|
|
129
|
+
e.length === 0 && /* @__PURE__ */ s("p", { className: "settings-shell__help", children: "All slots removed. Apply to commit, or Reset to restore." }),
|
|
130
|
+
/* @__PURE__ */ s("p", { className: "settings-shell__help settings-shell__help--small", children: "Drag to reorder · click × to remove" })
|
|
77
131
|
] });
|
|
78
132
|
}
|
|
79
|
-
const
|
|
80
|
-
function
|
|
81
|
-
return /* @__PURE__ */
|
|
133
|
+
const De = ["#1d6fd8", "#10b981", "#f59e0b", "#ef4444", "#8b5cf6"];
|
|
134
|
+
function Me({ value: e, onSelect: t }) {
|
|
135
|
+
return /* @__PURE__ */ h("div", { className: "settings-shell__field settings-shell__field--color", role: "group", "aria-label": "Accent color", children: [
|
|
82
136
|
/* @__PURE__ */ s("span", { className: "settings-shell__label", children: "Accent color" }),
|
|
83
|
-
/* @__PURE__ */ s("div", { className: "settings-shell__swatch-row", children:
|
|
84
|
-
const n = e ===
|
|
137
|
+
/* @__PURE__ */ s("div", { className: "settings-shell__swatch-row", children: De.map((r) => {
|
|
138
|
+
const n = e === r;
|
|
85
139
|
return /* @__PURE__ */ s(
|
|
86
140
|
"button",
|
|
87
141
|
{
|
|
88
142
|
type: "button",
|
|
89
143
|
"aria-pressed": n,
|
|
90
|
-
"aria-label": `Accent ${
|
|
144
|
+
"aria-label": `Accent ${r}`,
|
|
91
145
|
className: `settings-shell__swatch${n ? " settings-shell__swatch--active" : ""}`,
|
|
92
|
-
style: { backgroundColor:
|
|
93
|
-
onClick: () => t(
|
|
146
|
+
style: { backgroundColor: r },
|
|
147
|
+
onClick: () => t(r)
|
|
94
148
|
},
|
|
95
|
-
|
|
149
|
+
r
|
|
96
150
|
);
|
|
97
151
|
}) })
|
|
98
152
|
] });
|
|
99
153
|
}
|
|
100
|
-
const
|
|
101
|
-
function
|
|
154
|
+
const Re = ["Orders", "Quota", "Unassigned"], $e = ["threshold", "timeframe", "color"];
|
|
155
|
+
function gt({
|
|
102
156
|
isOpen: e,
|
|
103
157
|
cardSpan: t,
|
|
104
|
-
cardLabel:
|
|
158
|
+
cardLabel: r = "Metric",
|
|
105
159
|
cardValue: n = "—",
|
|
106
|
-
|
|
107
|
-
|
|
160
|
+
previewSlot: c,
|
|
161
|
+
dimensions: i = $e,
|
|
162
|
+
initialTab: d,
|
|
163
|
+
initialValues: l
|
|
108
164
|
}) {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}, [
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
},
|
|
118
|
-
|
|
165
|
+
const a = k(), o = a?.state.activeTrigger, u = o?.kind === "card-overflow" ? o.cardId : null, p = Q(), m = o?.span, b = t ?? m ?? 1, y = i[0] ?? "threshold", [v, N] = K.useState(d ?? y);
|
|
166
|
+
K.useEffect(() => {
|
|
167
|
+
i.includes(v) || N(y);
|
|
168
|
+
}, [i, v, y]);
|
|
169
|
+
const g = u != null ? a?.state?.bufferByCard?.[u]?.changes ?? {} : {}, S = typeof g.threshold == "number" ? g.threshold : typeof l?.threshold == "number" ? l.threshold : 80, oe = typeof g.timeframe == "number" ? g.timeframe : typeof l?.timeframe == "number" ? l.timeframe : 30, ie = typeof g.accent == "string" ? g.accent : typeof l?.accent == "string" ? l.accent : null, ce = Array.isArray(g.slots) ? g.slots : Array.isArray(l?.slots) ? l.slots : Re, de = (w) => {
|
|
170
|
+
u == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: u, key: "threshold", value: Number(w.target.value) });
|
|
171
|
+
}, ue = (w) => {
|
|
172
|
+
u == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: u, key: "timeframe", value: Number(w.target.value) });
|
|
173
|
+
}, pe = (w) => {
|
|
174
|
+
u == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: u, key: "accent", value: w });
|
|
175
|
+
}, me = (w) => {
|
|
176
|
+
u == null || a == null || a.dispatch({ type: "SET_BUFFER_VALUE", cardId: u, key: "slots", value: w });
|
|
119
177
|
};
|
|
120
|
-
return /* @__PURE__ */
|
|
121
|
-
/* @__PURE__ */ s("div", { "aria-hidden": "true", children: /* @__PURE__ */ s(
|
|
122
|
-
/* @__PURE__ */ s("div", { style: { fontSize: 9, textTransform: "uppercase", letterSpacing: "0.06em", color: "#9ca3af", marginBottom: 6 }, children:
|
|
178
|
+
return /* @__PURE__ */ h("div", { className: "settings-shell", "data-shell": "settings", "aria-hidden": !e, children: [
|
|
179
|
+
/* @__PURE__ */ s("div", { "aria-hidden": "true", children: /* @__PURE__ */ s(Ae, { children: /* @__PURE__ */ s(Te, { span: b, rotating: !p, children: c ?? /* @__PURE__ */ h(X, { children: [
|
|
180
|
+
/* @__PURE__ */ s("div", { style: { fontSize: 9, textTransform: "uppercase", letterSpacing: "0.06em", color: "#9ca3af", marginBottom: 6 }, children: r }),
|
|
123
181
|
/* @__PURE__ */ s("div", { style: { fontSize: 22, fontWeight: 700, color: "#111827", lineHeight: 1 }, children: n })
|
|
124
|
-
] }) }) }),
|
|
182
|
+
] }) }) }) }),
|
|
125
183
|
/* @__PURE__ */ s(
|
|
126
|
-
|
|
184
|
+
he,
|
|
127
185
|
{
|
|
128
|
-
dimensions:
|
|
129
|
-
activeTab:
|
|
130
|
-
onSelect:
|
|
131
|
-
reduced:
|
|
186
|
+
dimensions: i,
|
|
187
|
+
activeTab: v,
|
|
188
|
+
onSelect: N,
|
|
189
|
+
reduced: p
|
|
132
190
|
}
|
|
133
191
|
),
|
|
134
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ h(
|
|
135
193
|
"div",
|
|
136
194
|
{
|
|
137
195
|
role: "tabpanel",
|
|
138
|
-
id: `settings-tabpanel-${
|
|
196
|
+
id: `settings-tabpanel-${v}`,
|
|
139
197
|
"aria-label": "Settings dimension controls",
|
|
140
198
|
tabIndex: 0,
|
|
141
199
|
className: "settings-shell__tabpanel",
|
|
142
200
|
children: [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
201
|
+
v === "threshold" && /* @__PURE__ */ s(Le, { value: S, onChange: de }),
|
|
202
|
+
v === "timeframe" && /* @__PURE__ */ s(Oe, { value: oe, onChange: ue }),
|
|
203
|
+
v === "slots" && /* @__PURE__ */ s(Ie, { value: ce, onChange: me }),
|
|
204
|
+
v === "color" && /* @__PURE__ */ s(Me, { value: ie, onSelect: pe })
|
|
147
205
|
]
|
|
148
206
|
}
|
|
149
207
|
)
|
|
150
208
|
] });
|
|
151
209
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
210
|
+
const ee = [
|
|
211
|
+
"Overbought",
|
|
212
|
+
"What's selling",
|
|
213
|
+
"On track vs plan",
|
|
214
|
+
"Orders on time",
|
|
215
|
+
"Vendor performance",
|
|
216
|
+
"Assortment mix",
|
|
217
|
+
"Customer retention"
|
|
218
|
+
], te = "Overbought", U = {
|
|
219
|
+
Overbought: {
|
|
220
|
+
headline: "Am I overbought?",
|
|
221
|
+
helper: "Find slow-moving inventory before discount cycles eat margin."
|
|
222
|
+
},
|
|
223
|
+
"What's selling": {
|
|
224
|
+
headline: "What's selling right now?",
|
|
225
|
+
helper: "Velocity leaders and sleepers across your assortment."
|
|
226
|
+
},
|
|
227
|
+
"On track vs plan": {
|
|
228
|
+
headline: "Am I on track vs plan?",
|
|
229
|
+
helper: "Pace-to-plan signals across revenue, units, and margin."
|
|
230
|
+
},
|
|
231
|
+
"Orders on time": {
|
|
232
|
+
headline: "Are orders going out on time?",
|
|
233
|
+
helper: "Fulfillment SLA performance and at-risk shipments."
|
|
234
|
+
},
|
|
235
|
+
"Vendor performance": {
|
|
236
|
+
headline: "Who are my best and worst vendors?",
|
|
237
|
+
helper: "Sell-through, lead time, and fill-rate across the vendor mix."
|
|
238
|
+
},
|
|
239
|
+
"Assortment mix": {
|
|
240
|
+
headline: "Is my assortment balanced?",
|
|
241
|
+
helper: "Brand and category mix concentration vs target ranges."
|
|
242
|
+
},
|
|
243
|
+
"Customer retention": {
|
|
244
|
+
headline: "Are my best customers coming back?",
|
|
245
|
+
helper: "Repeat-rate and lapsed-account signals from the buyer file."
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
U["Customer retention"].beta = !0;
|
|
249
|
+
const ne = {
|
|
250
|
+
Overbought: {
|
|
251
|
+
primary: [
|
|
252
|
+
{
|
|
253
|
+
id: "ob-units-at-risk",
|
|
254
|
+
label: "Units at risk",
|
|
255
|
+
value: "12,840",
|
|
256
|
+
desc: "Inventory units flagged as overbought relative to forward demand.",
|
|
257
|
+
variants: ["1×1"],
|
|
258
|
+
startHere: !0,
|
|
259
|
+
isNew: !0
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
id: "ob-weeks-of-supply",
|
|
263
|
+
label: "Weeks of supply",
|
|
264
|
+
value: "18.4",
|
|
265
|
+
desc: "Weighted average weeks of forward cover across the assortment.",
|
|
266
|
+
variants: ["1×1"]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
id: "ob-discount-exposure",
|
|
270
|
+
label: "Discount exposure",
|
|
271
|
+
value: "$184K",
|
|
272
|
+
desc: "Estimated markdown dollars to clear excess at current sell-through.",
|
|
273
|
+
variants: ["1×3"],
|
|
274
|
+
subStats: [
|
|
275
|
+
{ label: "MTD", value: "$48K" },
|
|
276
|
+
{ label: "QTD", value: "$112K" },
|
|
277
|
+
{ label: "YTD", value: "$184K" }
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
secondary: [
|
|
282
|
+
{
|
|
283
|
+
id: "ob-sku-coverage",
|
|
284
|
+
label: "SKUs over plan",
|
|
285
|
+
value: "342",
|
|
286
|
+
desc: "SKUs exceeding planned forward cover."
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
id: "ob-vendor-share",
|
|
290
|
+
label: "Top vendor share",
|
|
291
|
+
value: "38%",
|
|
292
|
+
desc: "Share of overbought inventory concentrated in the top vendor.",
|
|
293
|
+
donut: !0,
|
|
294
|
+
accent: "#7c3aed"
|
|
295
|
+
}
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
"What's selling": {
|
|
299
|
+
primary: [
|
|
300
|
+
{
|
|
301
|
+
id: "ws-top-sku",
|
|
302
|
+
label: "Top SKU",
|
|
303
|
+
value: "SKU-9241",
|
|
304
|
+
desc: "Highest-velocity SKU over the trailing 7 days.",
|
|
305
|
+
startHere: !0
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: "ws-velocity",
|
|
309
|
+
label: "Velocity Δ",
|
|
310
|
+
value: "+12.4%",
|
|
311
|
+
desc: "Rolling 7-day velocity change versus the prior comparable period.",
|
|
312
|
+
variants: ["1×1"]
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
id: "ws-sellthrough",
|
|
316
|
+
label: "Sell-through",
|
|
317
|
+
value: "see breakdown",
|
|
318
|
+
variants: ["1×5"],
|
|
319
|
+
subStats: [
|
|
320
|
+
{ label: "MTD", value: "64%" },
|
|
321
|
+
{ label: "QTD", value: "71%" },
|
|
322
|
+
{ label: "YTD", value: "68%" },
|
|
323
|
+
{ label: "LYTD", value: "62%" },
|
|
324
|
+
{ label: "7D", value: "74%" }
|
|
325
|
+
],
|
|
326
|
+
desc: "Sell-through across multiple windows."
|
|
327
|
+
}
|
|
328
|
+
],
|
|
329
|
+
secondary: [
|
|
330
|
+
{
|
|
331
|
+
id: "ws-new-arrivals",
|
|
332
|
+
label: "New arrival lift",
|
|
333
|
+
value: "+8.1%",
|
|
334
|
+
desc: "Velocity boost from new-arrival SKUs versus the assortment mean.",
|
|
335
|
+
isNew: !0
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
"On track vs plan": {
|
|
340
|
+
primary: [
|
|
341
|
+
{
|
|
342
|
+
id: "pl-revenue-pace",
|
|
343
|
+
label: "Revenue pace",
|
|
344
|
+
value: "102%",
|
|
345
|
+
desc: "Revenue pace versus plan, period-to-date.",
|
|
346
|
+
donut: !0,
|
|
347
|
+
accent: "#16a34a",
|
|
348
|
+
startHere: !0
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
id: "pl-units-pace",
|
|
352
|
+
label: "Units pace",
|
|
353
|
+
value: "94%",
|
|
354
|
+
desc: "Units pace versus plan, period-to-date.",
|
|
355
|
+
donut: !0,
|
|
356
|
+
accent: "#f59e0b"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
id: "pl-margin-pace",
|
|
360
|
+
label: "Margin pace",
|
|
361
|
+
value: "see breakdown",
|
|
362
|
+
variants: ["1×3"],
|
|
363
|
+
subStats: [
|
|
364
|
+
{ label: "MTD", value: "38.4%" },
|
|
365
|
+
{ label: "QTD", value: "37.9%" },
|
|
366
|
+
{ label: "YTD", value: "38.1%" }
|
|
367
|
+
],
|
|
368
|
+
desc: "Gross margin pace across multiple windows."
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
},
|
|
372
|
+
"Orders on time": {
|
|
373
|
+
primary: [
|
|
374
|
+
{
|
|
375
|
+
id: "ot-on-time-rate",
|
|
376
|
+
label: "On-time rate",
|
|
377
|
+
value: "94.2%",
|
|
378
|
+
desc: "Share of orders shipped within SLA.",
|
|
379
|
+
startHere: !0
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
id: "ot-at-risk",
|
|
383
|
+
label: "At-risk shipments",
|
|
384
|
+
value: "18",
|
|
385
|
+
desc: "Open shipments projected to miss SLA.",
|
|
386
|
+
isNew: !0
|
|
387
|
+
}
|
|
388
|
+
]
|
|
389
|
+
},
|
|
390
|
+
"Vendor performance": {
|
|
391
|
+
primary: [
|
|
392
|
+
{
|
|
393
|
+
id: "vp-top-vendor",
|
|
394
|
+
label: "Top vendor",
|
|
395
|
+
value: "Acme Co.",
|
|
396
|
+
desc: "Highest sell-through vendor over the trailing 30 days.",
|
|
397
|
+
startHere: !0
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
id: "vp-fill-rate",
|
|
401
|
+
label: "Fill rate",
|
|
402
|
+
value: "97.1%",
|
|
403
|
+
desc: "Vendor fill rate against placed orders.",
|
|
404
|
+
donut: !0,
|
|
405
|
+
accent: "#2563eb"
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
"Assortment mix": {
|
|
410
|
+
primary: [
|
|
411
|
+
{
|
|
412
|
+
id: "am-brand-mix",
|
|
413
|
+
label: "Brand mix",
|
|
414
|
+
value: "see breakdown",
|
|
415
|
+
variants: ["1×3"],
|
|
416
|
+
subStats: [
|
|
417
|
+
{ label: "Core", value: "58%" },
|
|
418
|
+
{ label: "Growth", value: "27%" },
|
|
419
|
+
{ label: "Test", value: "15%" }
|
|
420
|
+
],
|
|
421
|
+
desc: "Assortment mix across brand tiers.",
|
|
422
|
+
startHere: !0
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"Customer retention": {
|
|
427
|
+
primary: [
|
|
428
|
+
{
|
|
429
|
+
id: "cr-repeat-rate",
|
|
430
|
+
label: "Repeat rate",
|
|
431
|
+
value: "62.4%",
|
|
432
|
+
desc: "Share of buyers placing two or more orders in the period.",
|
|
433
|
+
startHere: !0,
|
|
434
|
+
isNew: !0
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
id: "cr-lapsed",
|
|
438
|
+
label: "Lapsed accounts",
|
|
439
|
+
value: "47",
|
|
440
|
+
desc: "Accounts with zero orders in the last 90 days."
|
|
441
|
+
}
|
|
442
|
+
]
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
function se({
|
|
446
|
+
lenses: e,
|
|
447
|
+
activeLens: t,
|
|
448
|
+
onLensChange: r,
|
|
449
|
+
variant: n = "pills",
|
|
450
|
+
lensMeta: c = U
|
|
451
|
+
}) {
|
|
452
|
+
return n === "pills" ? /* @__PURE__ */ s("div", { className: "cat-pills-wrap", children: /* @__PURE__ */ s("div", { className: "cat-pills", role: "tablist", "aria-label": "Metric lenses", children: e.map((i) => {
|
|
453
|
+
const d = i === t, l = c[i], a = ["cat-pill"];
|
|
454
|
+
return d && a.push("active"), /* @__PURE__ */ h(
|
|
455
|
+
"button",
|
|
456
|
+
{
|
|
457
|
+
type: "button",
|
|
458
|
+
role: "tab",
|
|
459
|
+
"aria-selected": d,
|
|
460
|
+
className: a.join(" "),
|
|
461
|
+
"data-lens": i,
|
|
462
|
+
onClick: () => {
|
|
463
|
+
d || r(i);
|
|
464
|
+
},
|
|
465
|
+
children: [
|
|
466
|
+
i,
|
|
467
|
+
l?.beta && /* @__PURE__ */ s("span", { className: "cat-pill-beta", "aria-label": "Beta", children: "BETA" })
|
|
468
|
+
]
|
|
469
|
+
},
|
|
470
|
+
i
|
|
471
|
+
);
|
|
472
|
+
}) }) }) : /* @__PURE__ */ s(Fe, { lenses: e, activeLens: t, onLensChange: r });
|
|
473
|
+
}
|
|
474
|
+
function Fe({
|
|
475
|
+
lenses: e,
|
|
476
|
+
activeLens: t,
|
|
477
|
+
onLensChange: r
|
|
478
|
+
}) {
|
|
479
|
+
const [n, c] = _(!1), i = I(null), d = () => {
|
|
480
|
+
i.current != null && (window.clearTimeout(i.current), i.current = null);
|
|
481
|
+
}, l = () => {
|
|
482
|
+
d(), i.current = window.setTimeout(() => c(!1), 100);
|
|
483
|
+
}, a = e.filter((o) => o !== t);
|
|
484
|
+
return /* @__PURE__ */ s("div", { className: "cat-segmented-wrap", children: /* @__PURE__ */ h("div", { className: "cat-segmented", children: [
|
|
159
485
|
/* @__PURE__ */ s(
|
|
160
486
|
"button",
|
|
161
487
|
{
|
|
@@ -166,14 +492,14 @@ function j({ lenses: e, activeLens: t, onLensChange: o }) {
|
|
|
166
492
|
children: t
|
|
167
493
|
}
|
|
168
494
|
),
|
|
169
|
-
/* @__PURE__ */
|
|
495
|
+
/* @__PURE__ */ h(
|
|
170
496
|
"div",
|
|
171
497
|
{
|
|
172
498
|
className: "cat-seg-more",
|
|
173
499
|
onMouseEnter: () => {
|
|
174
|
-
d(),
|
|
500
|
+
d(), c(!0);
|
|
175
501
|
},
|
|
176
|
-
onMouseLeave:
|
|
502
|
+
onMouseLeave: l,
|
|
177
503
|
children: [
|
|
178
504
|
/* @__PURE__ */ s("button", { type: "button", className: "cat-seg cat-seg-more-btn", "aria-haspopup": "menu", "aria-expanded": n, children: "More ▾" }),
|
|
179
505
|
n && /* @__PURE__ */ s(
|
|
@@ -182,19 +508,19 @@ function j({ lenses: e, activeLens: t, onLensChange: o }) {
|
|
|
182
508
|
className: "cat-seg-overflow",
|
|
183
509
|
role: "menu",
|
|
184
510
|
onMouseEnter: d,
|
|
185
|
-
onMouseLeave:
|
|
186
|
-
children: a.map((
|
|
511
|
+
onMouseLeave: l,
|
|
512
|
+
children: a.map((o) => /* @__PURE__ */ s(
|
|
187
513
|
"button",
|
|
188
514
|
{
|
|
189
515
|
type: "button",
|
|
190
|
-
"data-lens":
|
|
516
|
+
"data-lens": o,
|
|
191
517
|
role: "menuitem",
|
|
192
518
|
onClick: () => {
|
|
193
|
-
o
|
|
519
|
+
r(o), c(!1);
|
|
194
520
|
},
|
|
195
|
-
children:
|
|
521
|
+
children: o
|
|
196
522
|
},
|
|
197
|
-
|
|
523
|
+
o
|
|
198
524
|
))
|
|
199
525
|
}
|
|
200
526
|
)
|
|
@@ -203,48 +529,63 @@ function j({ lenses: e, activeLens: t, onLensChange: o }) {
|
|
|
203
529
|
)
|
|
204
530
|
] }) });
|
|
205
531
|
}
|
|
206
|
-
function
|
|
207
|
-
return e.split("·").map((t,
|
|
208
|
-
const n = t.trim(),
|
|
209
|
-
return /* @__PURE__ */
|
|
210
|
-
/* @__PURE__ */ s("strong", { children:
|
|
532
|
+
function He(e) {
|
|
533
|
+
return e.split("·").map((t, r) => {
|
|
534
|
+
const n = t.trim(), c = n.match(/^([$+\-]?[\d,]+(?:\.\d+)?[%+]?)\s*(.*)$/), i = c ? c[1] : "", d = c ? c[2] : n;
|
|
535
|
+
return /* @__PURE__ */ h("span", { children: [
|
|
536
|
+
/* @__PURE__ */ s("strong", { children: i }),
|
|
211
537
|
/* @__PURE__ */ s("small", { children: d })
|
|
212
|
-
] },
|
|
538
|
+
] }, r);
|
|
213
539
|
});
|
|
214
540
|
}
|
|
215
|
-
function
|
|
541
|
+
function ze(e) {
|
|
542
|
+
return e.map((t, r) => /* @__PURE__ */ h("span", { children: [
|
|
543
|
+
/* @__PURE__ */ s("strong", { children: t.value }),
|
|
544
|
+
/* @__PURE__ */ s("small", { children: t.label })
|
|
545
|
+
] }, r));
|
|
546
|
+
}
|
|
547
|
+
function H({ tiles: e, selectedTileId: t, onSelectTile: r }) {
|
|
216
548
|
return /* @__PURE__ */ s("div", { className: "cat-tiles", children: e.map((n) => {
|
|
217
|
-
const
|
|
218
|
-
|
|
549
|
+
const c = n.id === t, i = n.subStats != null && n.subStats.length > 0;
|
|
550
|
+
let d = null;
|
|
551
|
+
i ? n.subStats.length === 5 ? d = "span-5" : n.subStats.length === 3 ? d = "span-3" : d = "span-2" : n.stack === !0 && (d = "span-2");
|
|
552
|
+
const l = ["cat-tile"];
|
|
553
|
+
return d && l.push(d), c && l.push("selected"), n.isNew && l.push("is-new"), n.startHere && l.push("start-here"), n.donut && l.push("has-donut"), /* @__PURE__ */ h(
|
|
219
554
|
"button",
|
|
220
555
|
{
|
|
221
556
|
type: "button",
|
|
222
|
-
className:
|
|
557
|
+
className: l.join(" "),
|
|
223
558
|
"data-metric": n.id,
|
|
224
559
|
"data-desc": n.desc,
|
|
225
|
-
"
|
|
226
|
-
|
|
560
|
+
"data-donut": n.donut ? "true" : void 0,
|
|
561
|
+
"data-accent": n.accent,
|
|
562
|
+
"aria-pressed": c,
|
|
563
|
+
onClick: () => r(n.id, n.desc),
|
|
564
|
+
style: n.accent ? { "--cat-tile-accent": n.accent } : void 0,
|
|
227
565
|
children: [
|
|
566
|
+
n.startHere && /* @__PURE__ */ s("span", { className: "cat-tile-start-here", "aria-hidden": "true", children: "START HERE" }),
|
|
228
567
|
/* @__PURE__ */ s("span", { className: "cat-tile-label", children: n.label }),
|
|
229
|
-
/* @__PURE__ */ s("span", { className: "cat-tile-value", children:
|
|
230
|
-
n.variants && n.variants.length > 0 && /* @__PURE__ */ s("span", { className: "cat-tile-variants", "aria-hidden": "true", children: n.variants.map((
|
|
568
|
+
/* @__PURE__ */ s("span", { className: "cat-tile-value", children: i ? ze(n.subStats) : n.stack === !0 ? He(n.value) : n.value }),
|
|
569
|
+
n.variants && n.variants.length > 0 && /* @__PURE__ */ s("span", { className: "cat-tile-variants", "aria-hidden": "true", children: n.variants.map((a) => /* @__PURE__ */ s("span", { children: a }, a)) }),
|
|
570
|
+
n.isNew && /* @__PURE__ */ s("span", { className: "cat-tile-new-dot", "aria-hidden": "true" }),
|
|
571
|
+
n.donut && /* @__PURE__ */ s("span", { className: "cat-tile-donut", "aria-hidden": "true" })
|
|
231
572
|
]
|
|
232
573
|
},
|
|
233
574
|
n.id
|
|
234
575
|
);
|
|
235
576
|
}) });
|
|
236
577
|
}
|
|
237
|
-
const
|
|
238
|
-
function
|
|
239
|
-
return
|
|
578
|
+
const V = J(null);
|
|
579
|
+
function Ue() {
|
|
580
|
+
return Z(V);
|
|
240
581
|
}
|
|
241
|
-
function
|
|
242
|
-
const
|
|
243
|
-
if (
|
|
244
|
-
const n =
|
|
245
|
-
return /* @__PURE__ */
|
|
246
|
-
/* @__PURE__ */ s("div", { className: "cat-description", id: "cat-desc", children:
|
|
247
|
-
/* @__PURE__ */
|
|
582
|
+
function Ve({ mode: e, dispatch: t }) {
|
|
583
|
+
const r = Ue();
|
|
584
|
+
if (r == null && e == null) return null;
|
|
585
|
+
const n = r?.mode ?? e ?? "add", c = r?.selectedTileId ?? null, i = r?.description ?? null, d = c == null;
|
|
586
|
+
return /* @__PURE__ */ h("div", { className: "panel-footer catalog", children: [
|
|
587
|
+
/* @__PURE__ */ s("div", { className: "cat-description", id: "cat-desc", children: i ?? /* @__PURE__ */ s("em", { children: "Tap a metric to see its description" }) }),
|
|
588
|
+
/* @__PURE__ */ h("div", { style: { display: "flex", padding: "10px 14px", gap: 8 }, children: [
|
|
248
589
|
/* @__PURE__ */ s("div", { className: "spacer", style: { flex: 1 } }),
|
|
249
590
|
/* @__PURE__ */ s(
|
|
250
591
|
"button",
|
|
@@ -281,178 +622,150 @@ function be({ mode: e, dispatch: t }) {
|
|
|
281
622
|
] })
|
|
282
623
|
] });
|
|
283
624
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
{ id: "rev-yoy", label: "YoY Δ", value: "+12.4%", desc: "Revenue growth versus the prior comparable period." },
|
|
296
|
-
{ id: "rev-avg", label: "Avg order", value: "$1,820", desc: "Average order value over the last 30 days." }
|
|
297
|
-
],
|
|
298
|
-
"Order flow": [
|
|
299
|
-
{
|
|
300
|
-
id: "of-funnel",
|
|
301
|
-
label: "Order funnel",
|
|
302
|
-
value: "New 42 · Incomplete 18 · Transmitted 91",
|
|
303
|
-
stack: !0,
|
|
304
|
-
desc: "Funnel snapshot — new orders, incomplete (awaiting attention), and transmitted to manufacturer.",
|
|
305
|
-
variants: ["1×3"]
|
|
306
|
-
},
|
|
307
|
-
{ id: "of-incomplete", label: "Incomplete", value: "18", desc: "Orders started but not yet transmitted." },
|
|
308
|
-
{ id: "of-transmitted", label: "Transmitted", value: "91", desc: "Orders successfully sent to manufacturer." },
|
|
309
|
-
{ id: "of-today", label: "New today", value: "7", desc: "Orders created in the current calendar day." },
|
|
310
|
-
{ id: "of-velocity", label: "Order velocity", value: "+3.1/d", desc: "Rolling 7-day order-creation rate change." }
|
|
311
|
-
],
|
|
312
|
-
"Rep performance": [
|
|
313
|
-
{ id: "rp-leader", label: "#1 Rep", value: "A. Chen", desc: "Top revenue performer in the current period." },
|
|
314
|
-
{ id: "rp-quota", label: "Below quota", value: "4 reps", desc: "Reps currently tracking below pace-to-quota." },
|
|
315
|
-
{ id: "rp-commission", label: "Commission pace", value: "$48K", desc: "Projected commission pool at current burn rate." },
|
|
316
|
-
{ id: "rp-active", label: "Active reps", value: "14", desc: "Reps with at least one order this period." }
|
|
317
|
-
],
|
|
318
|
-
"Brand portfolio": [
|
|
319
|
-
{ id: "bp-top", label: "Top brand", value: "Acme Co.", desc: "Highest-revenue manufacturer this period." },
|
|
320
|
-
{ id: "bp-mix", label: "Mix Δ", value: "+2pp", desc: "Portfolio mix shift versus the prior period." },
|
|
321
|
-
{ id: "bp-coverage", label: "Brand coverage", value: "73%", desc: "Percent of accounts with at least one active brand." },
|
|
322
|
-
{ id: "bp-new", label: "New brand adds", value: "3", desc: "Brands with first-order activity this period." }
|
|
323
|
-
],
|
|
324
|
-
"Account coverage": [
|
|
325
|
-
{ id: "ac-active", label: "Active accounts", value: "128", desc: "Accounts with at least one order in the period." },
|
|
326
|
-
{ id: "ac-untouched", label: "Untouched", value: "34", desc: "Accounts with zero activity in the period." },
|
|
327
|
-
{ id: "ac-concentration", label: "Concentration", value: "38% top-5", desc: "Revenue concentration in top-5 accounts." },
|
|
328
|
-
{ id: "ac-new", label: "New accounts", value: "6", desc: "Accounts with first-ever order this period." }
|
|
329
|
-
],
|
|
330
|
-
Commission: [
|
|
331
|
-
{ id: "cm-projected", label: "Projected", value: "$48K", desc: "Forecast commission at current pace." },
|
|
332
|
-
{ id: "cm-paid", label: "Paid", value: "$31K", desc: "Commission posted to ledger this period." },
|
|
333
|
-
{ id: "cm-pending", label: "Pending", value: "$17K", desc: "Commission earned but not yet posted." },
|
|
334
|
-
{ id: "cm-rate", label: "Effective rate", value: "6.8%", desc: "Realized commission rate across all orders." }
|
|
335
|
-
]
|
|
336
|
-
};
|
|
337
|
-
function qe({
|
|
625
|
+
function G(e, t) {
|
|
626
|
+
if (t.length === 0) return !0;
|
|
627
|
+
const r = t.toLowerCase();
|
|
628
|
+
if (e.label.toLowerCase().includes(r) || e.value.toLowerCase().includes(r)) return !0;
|
|
629
|
+
if (e.subStats) {
|
|
630
|
+
for (const n of e.subStats)
|
|
631
|
+
if (n.label.toLowerCase().includes(r) || n.value.toLowerCase().includes(r)) return !0;
|
|
632
|
+
}
|
|
633
|
+
return !1;
|
|
634
|
+
}
|
|
635
|
+
function bt({
|
|
338
636
|
isOpen: e,
|
|
339
|
-
lenses: t =
|
|
340
|
-
defaultLens:
|
|
341
|
-
tilesByLens: n =
|
|
342
|
-
|
|
637
|
+
lenses: t = ee,
|
|
638
|
+
defaultLens: r = te,
|
|
639
|
+
tilesByLens: n = ne,
|
|
640
|
+
lensMeta: c = U,
|
|
641
|
+
footerSlot: i
|
|
343
642
|
}) {
|
|
344
|
-
const [
|
|
345
|
-
|
|
346
|
-
|
|
643
|
+
const [d, l] = _(r), [a, o] = _(null), [u, p] = _(null), [m, b] = _(""), y = n[d] ?? { primary: [] }, v = c[d], N = W(
|
|
644
|
+
() => y.primary.filter((g) => G(g, m)),
|
|
645
|
+
[y.primary, m]
|
|
646
|
+
), C = W(
|
|
647
|
+
() => (y.secondary ?? []).filter((g) => G(g, m)),
|
|
648
|
+
[y.secondary, m]
|
|
649
|
+
);
|
|
650
|
+
return /* @__PURE__ */ h(
|
|
651
|
+
V.Provider,
|
|
347
652
|
{
|
|
348
|
-
value: { mode: "add", selectedTileId:
|
|
653
|
+
value: { mode: "add", selectedTileId: a, description: u },
|
|
349
654
|
children: [
|
|
350
|
-
/* @__PURE__ */
|
|
351
|
-
/* @__PURE__ */ s("
|
|
655
|
+
/* @__PURE__ */ h("div", { "data-shell": "catalog-add", "aria-hidden": !e, children: [
|
|
656
|
+
/* @__PURE__ */ s("div", { className: "cat-search", children: /* @__PURE__ */ s(
|
|
657
|
+
"input",
|
|
658
|
+
{
|
|
659
|
+
type: "search",
|
|
660
|
+
className: "cat-search-input",
|
|
661
|
+
placeholder: "Search metrics",
|
|
662
|
+
"aria-label": "Search metrics",
|
|
663
|
+
value: m,
|
|
664
|
+
onChange: (g) => b(g.target.value)
|
|
665
|
+
}
|
|
666
|
+
) }),
|
|
352
667
|
/* @__PURE__ */ s(
|
|
353
|
-
|
|
668
|
+
se,
|
|
354
669
|
{
|
|
355
670
|
lenses: t,
|
|
356
|
-
activeLens:
|
|
671
|
+
activeLens: d,
|
|
672
|
+
lensMeta: c,
|
|
673
|
+
variant: "pills",
|
|
357
674
|
onLensChange: (g) => {
|
|
358
|
-
|
|
675
|
+
l(g), o(null), p(null), b("");
|
|
359
676
|
}
|
|
360
677
|
}
|
|
361
678
|
),
|
|
679
|
+
v && /* @__PURE__ */ h("div", { className: "cat-lens-meta", children: [
|
|
680
|
+
/* @__PURE__ */ s("h3", { className: "cat-lens-headline", children: v.headline }),
|
|
681
|
+
/* @__PURE__ */ s("p", { className: "cat-lens-helper", children: v.helper })
|
|
682
|
+
] }),
|
|
362
683
|
/* @__PURE__ */ s(
|
|
363
|
-
|
|
684
|
+
H,
|
|
364
685
|
{
|
|
365
|
-
tiles:
|
|
366
|
-
selectedTileId:
|
|
367
|
-
onSelectTile: (g,
|
|
368
|
-
|
|
686
|
+
tiles: N,
|
|
687
|
+
selectedTileId: a,
|
|
688
|
+
onSelectTile: (g, S) => {
|
|
689
|
+
o(g), p(S);
|
|
369
690
|
}
|
|
370
691
|
}
|
|
371
|
-
)
|
|
692
|
+
),
|
|
693
|
+
C.length > 0 && /* @__PURE__ */ h("div", { className: "cat-more-in-lens", children: [
|
|
694
|
+
/* @__PURE__ */ s("div", { className: "cat-more-in-lens__heading", children: "MORE IN THIS LENS" }),
|
|
695
|
+
/* @__PURE__ */ s(
|
|
696
|
+
H,
|
|
697
|
+
{
|
|
698
|
+
tiles: C,
|
|
699
|
+
selectedTileId: a,
|
|
700
|
+
onSelectTile: (g, S) => {
|
|
701
|
+
o(g), p(S);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
)
|
|
705
|
+
] }),
|
|
706
|
+
N.length === 0 && C.length === 0 && m.length > 0 && /* @__PURE__ */ h("div", { className: "cat-empty", children: [
|
|
707
|
+
'No metrics match "',
|
|
708
|
+
m,
|
|
709
|
+
'".'
|
|
710
|
+
] })
|
|
372
711
|
] }),
|
|
373
|
-
|
|
712
|
+
i
|
|
374
713
|
]
|
|
375
714
|
}
|
|
376
715
|
);
|
|
377
716
|
}
|
|
378
|
-
function
|
|
717
|
+
function vt({
|
|
379
718
|
isOpen: e,
|
|
380
719
|
replacingLabel: t,
|
|
381
|
-
lenses:
|
|
382
|
-
defaultLens: n =
|
|
383
|
-
tilesByLens:
|
|
384
|
-
footerSlot:
|
|
720
|
+
lenses: r = ee,
|
|
721
|
+
defaultLens: n = te,
|
|
722
|
+
tilesByLens: c = ne,
|
|
723
|
+
footerSlot: i
|
|
385
724
|
}) {
|
|
386
|
-
const [d,
|
|
387
|
-
return /* @__PURE__ */
|
|
388
|
-
|
|
725
|
+
const [d, l] = _(n), [a, o] = _(null), [u, p] = _(null), m = c[d] ?? { primary: [] }, b = [...m.primary, ...m.secondary ?? []];
|
|
726
|
+
return /* @__PURE__ */ h(
|
|
727
|
+
V.Provider,
|
|
389
728
|
{
|
|
390
729
|
value: { mode: "replace", selectedTileId: a, description: u },
|
|
391
730
|
children: [
|
|
392
|
-
/* @__PURE__ */
|
|
393
|
-
/* @__PURE__ */
|
|
394
|
-
t && /* @__PURE__ */ p("p", { className: "cat-subtitle", children: [
|
|
731
|
+
/* @__PURE__ */ h("div", { "data-shell": "catalog-replace", "aria-hidden": !e, children: [
|
|
732
|
+
t && /* @__PURE__ */ h("p", { className: "cat-subtitle", children: [
|
|
395
733
|
"replacing ",
|
|
396
734
|
t
|
|
397
735
|
] }),
|
|
398
736
|
/* @__PURE__ */ s(
|
|
399
|
-
|
|
737
|
+
se,
|
|
400
738
|
{
|
|
401
|
-
lenses:
|
|
739
|
+
lenses: r,
|
|
402
740
|
activeLens: d,
|
|
403
|
-
onLensChange: (
|
|
404
|
-
|
|
741
|
+
onLensChange: (y) => {
|
|
742
|
+
l(y), o(null), p(null);
|
|
405
743
|
}
|
|
406
744
|
}
|
|
407
745
|
),
|
|
408
746
|
/* @__PURE__ */ s(
|
|
409
|
-
|
|
747
|
+
H,
|
|
410
748
|
{
|
|
411
|
-
tiles:
|
|
749
|
+
tiles: b,
|
|
412
750
|
selectedTileId: a,
|
|
413
|
-
onSelectTile: (
|
|
414
|
-
|
|
751
|
+
onSelectTile: (y, v) => {
|
|
752
|
+
o(y), p(v);
|
|
415
753
|
}
|
|
416
754
|
}
|
|
417
755
|
)
|
|
418
756
|
] }),
|
|
419
|
-
|
|
757
|
+
i
|
|
420
758
|
]
|
|
421
759
|
}
|
|
422
760
|
);
|
|
423
761
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
return
|
|
427
|
-
/* @__PURE__ */ s(
|
|
428
|
-
"div",
|
|
429
|
-
{
|
|
430
|
-
className: "pm-handle",
|
|
431
|
-
"aria-hidden": "true",
|
|
432
|
-
onMouseDown: () => n?.(e.id),
|
|
433
|
-
children: "⋮⋮"
|
|
434
|
-
}
|
|
435
|
-
),
|
|
436
|
-
/* @__PURE__ */ s("div", { className: "pm-name", onClick: () => t?.(e.id), children: e.name }),
|
|
437
|
-
/* @__PURE__ */ s(
|
|
438
|
-
"button",
|
|
439
|
-
{
|
|
440
|
-
type: "button",
|
|
441
|
-
className: "pm-kebab",
|
|
442
|
-
"aria-label": "Page options",
|
|
443
|
-
onClick: () => o?.(e.id),
|
|
444
|
-
children: "⋯"
|
|
445
|
-
}
|
|
446
|
-
)
|
|
447
|
-
] });
|
|
448
|
-
}
|
|
449
|
-
const Z = Y(null);
|
|
450
|
-
function Ce() {
|
|
451
|
-
return K(Z);
|
|
762
|
+
const ae = J(null);
|
|
763
|
+
function re() {
|
|
764
|
+
return Z(ae);
|
|
452
765
|
}
|
|
453
|
-
function
|
|
454
|
-
const
|
|
455
|
-
return /* @__PURE__ */
|
|
766
|
+
function Be(e = {}) {
|
|
767
|
+
const r = re()?.setPages;
|
|
768
|
+
return /* @__PURE__ */ h(
|
|
456
769
|
"div",
|
|
457
770
|
{
|
|
458
771
|
className: "panel-footer pm",
|
|
@@ -466,7 +779,7 @@ function Pe(e = {}) {
|
|
|
466
779
|
type: "button",
|
|
467
780
|
className: "btn btn-primary",
|
|
468
781
|
onClick: () => {
|
|
469
|
-
|
|
782
|
+
r && r((n) => [
|
|
470
783
|
...n,
|
|
471
784
|
{ id: `new-${Date.now()}`, name: "Untitled", active: !1 }
|
|
472
785
|
]);
|
|
@@ -478,38 +791,112 @@ function Pe(e = {}) {
|
|
|
478
791
|
}
|
|
479
792
|
);
|
|
480
793
|
}
|
|
481
|
-
|
|
794
|
+
function Ke({ page: e, onRename: t, onKebab: r, onDragStart: n }) {
|
|
795
|
+
const c = re(), [i, d] = _(!1), l = I(null);
|
|
796
|
+
x(() => {
|
|
797
|
+
if (!i) return;
|
|
798
|
+
const m = (b) => {
|
|
799
|
+
l.current && (l.current.contains(b.target) || d(!1));
|
|
800
|
+
};
|
|
801
|
+
return document.addEventListener("mousedown", m, !0), () => document.removeEventListener("mousedown", m, !0);
|
|
802
|
+
}, [i]);
|
|
803
|
+
const a = () => {
|
|
804
|
+
if (d(!1), t) return t(e.id);
|
|
805
|
+
if (!c?.renamePage) return;
|
|
806
|
+
const m = window.prompt("Rename page", e.name);
|
|
807
|
+
m != null && m.trim().length > 0 && c.renamePage(e.id, m.trim());
|
|
808
|
+
}, o = () => {
|
|
809
|
+
d(!1), c?.duplicatePage?.(e.id);
|
|
810
|
+
}, u = () => {
|
|
811
|
+
d(!1), !e.active && c?.deletePage?.(e.id);
|
|
812
|
+
}, p = ["pm-row"];
|
|
813
|
+
return e.active && p.push("active"), /* @__PURE__ */ h("div", { ref: l, className: p.join(" "), "data-page-id": e.id, role: "listitem", children: [
|
|
814
|
+
/* @__PURE__ */ s(
|
|
815
|
+
"div",
|
|
816
|
+
{
|
|
817
|
+
className: "pm-handle",
|
|
818
|
+
"aria-hidden": "true",
|
|
819
|
+
onMouseDown: () => n?.(e.id),
|
|
820
|
+
children: "⋮⋮"
|
|
821
|
+
}
|
|
822
|
+
),
|
|
823
|
+
/* @__PURE__ */ s("div", { className: "pm-name", children: e.name }),
|
|
824
|
+
/* @__PURE__ */ s(
|
|
825
|
+
"button",
|
|
826
|
+
{
|
|
827
|
+
type: "button",
|
|
828
|
+
className: "pm-kebab",
|
|
829
|
+
"aria-label": "Page options",
|
|
830
|
+
"aria-haspopup": "menu",
|
|
831
|
+
"aria-expanded": i,
|
|
832
|
+
onClick: (m) => {
|
|
833
|
+
if (m.stopPropagation(), r) return r(e.id);
|
|
834
|
+
d((b) => !b);
|
|
835
|
+
},
|
|
836
|
+
children: "⋯"
|
|
837
|
+
}
|
|
838
|
+
),
|
|
839
|
+
i && /* @__PURE__ */ h("div", { className: "pm-kebab-menu", role: "menu", "data-page-id": e.id, children: [
|
|
840
|
+
/* @__PURE__ */ s("button", { type: "button", role: "menuitem", className: "pm-kebab-menu__item", onClick: a, children: "Rename" }),
|
|
841
|
+
/* @__PURE__ */ s("button", { type: "button", role: "menuitem", className: "pm-kebab-menu__item", onClick: o, children: "Duplicate" }),
|
|
842
|
+
/* @__PURE__ */ s(
|
|
843
|
+
"button",
|
|
844
|
+
{
|
|
845
|
+
type: "button",
|
|
846
|
+
role: "menuitem",
|
|
847
|
+
className: "pm-kebab-menu__item pm-kebab-menu__item--danger",
|
|
848
|
+
onClick: u,
|
|
849
|
+
"aria-disabled": e.active,
|
|
850
|
+
children: "Delete"
|
|
851
|
+
}
|
|
852
|
+
)
|
|
853
|
+
] })
|
|
854
|
+
] });
|
|
855
|
+
}
|
|
856
|
+
const We = [
|
|
482
857
|
{ id: "p-pipeline", name: "My Pipeline", active: !0 },
|
|
483
858
|
{ id: "p-numbers", name: "My Numbers", active: !1 },
|
|
484
859
|
{ id: "p-morning", name: "My Morning", active: !1 },
|
|
485
860
|
{ id: "p-accounts", name: "My Accounts", active: !1 }
|
|
486
861
|
];
|
|
487
|
-
function
|
|
862
|
+
function yt({
|
|
488
863
|
isOpen: e,
|
|
489
|
-
pages: t =
|
|
490
|
-
footerSlot:
|
|
864
|
+
pages: t = We,
|
|
865
|
+
footerSlot: r
|
|
491
866
|
}) {
|
|
492
|
-
const [n,
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
867
|
+
const [n, c] = _(() => [...t]), i = E((a, o) => {
|
|
868
|
+
c((u) => u.map((p) => p.id === a ? { ...p, name: o } : p));
|
|
869
|
+
}, []), d = E((a) => {
|
|
870
|
+
c((o) => {
|
|
871
|
+
const u = o.find((b) => b.id === a);
|
|
872
|
+
if (!u) return o;
|
|
873
|
+
const p = {
|
|
874
|
+
id: `${u.id}-copy-${Date.now()}`,
|
|
875
|
+
name: `${u.name} copy`,
|
|
876
|
+
active: !1
|
|
877
|
+
}, m = o.findIndex((b) => b.id === a);
|
|
878
|
+
return [...o.slice(0, m + 1), p, ...o.slice(m + 1)];
|
|
879
|
+
});
|
|
880
|
+
}, []), l = E((a) => {
|
|
881
|
+
c((o) => o.filter((u) => u.id !== a));
|
|
882
|
+
}, []);
|
|
883
|
+
return /* @__PURE__ */ s(ae.Provider, { value: { pages: n, setPages: c, renamePage: i, duplicatePage: d, deletePage: l }, children: /* @__PURE__ */ h("div", { "data-shell": "page-management", "aria-hidden": !e, children: [
|
|
884
|
+
/* @__PURE__ */ s("div", { className: "pm-list", role: "list", children: n.map((a) => /* @__PURE__ */ s(Ke, { page: a }, a.id)) }),
|
|
885
|
+
r != null && /* @__PURE__ */ s("div", { className: "pm-footer-pin", children: r })
|
|
886
|
+
] }) });
|
|
500
887
|
}
|
|
501
|
-
const
|
|
888
|
+
const St = {
|
|
502
889
|
SETTINGS: "settings",
|
|
503
890
|
CATALOG_ADD: "catalog-add",
|
|
504
891
|
CATALOG_REPLACE: "catalog-replace",
|
|
505
892
|
PAGE_MGMT: "page-management",
|
|
506
893
|
NOTIFICATION_CENTER: "notification-center"
|
|
507
|
-
},
|
|
894
|
+
}, qe = {
|
|
508
895
|
position: "fixed",
|
|
509
896
|
inset: 0,
|
|
510
897
|
pointerEvents: "none",
|
|
511
898
|
zIndex: 55
|
|
512
|
-
},
|
|
899
|
+
}, Ge = {
|
|
513
900
|
position: "absolute",
|
|
514
901
|
inset: 0,
|
|
515
902
|
zIndex: 1,
|
|
@@ -518,69 +905,88 @@ const Ke = {
|
|
|
518
905
|
pointerEvents: "none",
|
|
519
906
|
background: "rgba(0, 0, 0, 0.04)"
|
|
520
907
|
};
|
|
521
|
-
function
|
|
522
|
-
const { state: e, dispatch: t, getCloseLog:
|
|
523
|
-
|
|
908
|
+
function _t() {
|
|
909
|
+
const { state: e, dispatch: t, getCloseLog: r } = fe();
|
|
910
|
+
x(() => {
|
|
524
911
|
if (e.activePanelId == null) return;
|
|
525
|
-
function
|
|
912
|
+
function i(d) {
|
|
526
913
|
d.key === "Escape" && t({ type: "CLOSE_PANEL", reason: "escape-key" });
|
|
527
914
|
}
|
|
528
|
-
return document.addEventListener("keydown",
|
|
915
|
+
return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
|
|
529
916
|
}, [e.activePanelId, t]);
|
|
530
|
-
const n =
|
|
531
|
-
|
|
917
|
+
const n = I(e);
|
|
918
|
+
ge(() => {
|
|
532
919
|
n.current = e;
|
|
533
|
-
}),
|
|
920
|
+
}), x(() => {
|
|
534
921
|
if (process.env.NODE_ENV === "production") return;
|
|
535
|
-
const
|
|
536
|
-
return
|
|
922
|
+
const i = window;
|
|
923
|
+
return i.__panelsHostHandle && console.warn("[panels] multiple PanelHost/PanelHostShell instances mounted; dev handle is unreliable"), i.__panelsHostHandle = {
|
|
537
924
|
dispatch: t,
|
|
538
925
|
getState: () => n.current,
|
|
539
|
-
getCloseLog:
|
|
926
|
+
getCloseLog: r
|
|
540
927
|
}, () => {
|
|
541
|
-
|
|
928
|
+
i.__panelsHostHandle?.dispatch === t && delete window.__panelsHostHandle;
|
|
542
929
|
};
|
|
543
|
-
}, [t,
|
|
544
|
-
const
|
|
930
|
+
}, [t, r]);
|
|
931
|
+
const c = E(() => {
|
|
545
932
|
t({ type: "CLOSE_PANEL", reason: "nav-escape-hatch" });
|
|
546
933
|
}, [t]);
|
|
547
|
-
return /* @__PURE__ */ s("div", { "data-panel-host": "true", style:
|
|
934
|
+
return /* @__PURE__ */ s("div", { "data-panel-host": "true", style: qe, children: e.activePanelId != null && /* @__PURE__ */ s(
|
|
548
935
|
"div",
|
|
549
936
|
{
|
|
550
937
|
"data-panel-scrim": "true",
|
|
551
|
-
style:
|
|
552
|
-
onClick:
|
|
938
|
+
style: Ge,
|
|
939
|
+
onClick: c
|
|
553
940
|
}
|
|
554
941
|
) });
|
|
555
942
|
}
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
943
|
+
const Ye = 700;
|
|
944
|
+
function je(e) {
|
|
945
|
+
const [t, r] = _(null), n = I(null);
|
|
946
|
+
return x(() => {
|
|
947
|
+
if (e != null) {
|
|
948
|
+
n.current != null && (clearTimeout(n.current), n.current = null), r(null);
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
return r((c) => c), n.current = setTimeout(() => {
|
|
952
|
+
r(null), n.current = null;
|
|
953
|
+
}, Ye), () => {
|
|
954
|
+
n.current != null && (clearTimeout(n.current), n.current = null);
|
|
955
|
+
};
|
|
956
|
+
}, [e]), x(() => {
|
|
957
|
+
e != null && r(e);
|
|
958
|
+
}, [e]), e != null ? { panelId: e, isOpen: !0 } : t != null ? { panelId: t, isOpen: !1 } : { panelId: null, isOpen: !1 };
|
|
959
|
+
}
|
|
960
|
+
function Nt({ panelComponents: e, children: t }) {
|
|
961
|
+
const r = k();
|
|
962
|
+
if (r == null) return null;
|
|
963
|
+
const { state: n, dispatch: c } = r, i = je(n.activePanelId);
|
|
964
|
+
if (i.panelId == null) return null;
|
|
965
|
+
const d = i.panelId, l = i.isOpen, a = e?.[d];
|
|
966
|
+
if (a == null && t == null)
|
|
563
967
|
return process.env.NODE_ENV !== "production" && console.error(
|
|
564
968
|
"[panels] No panel component registered for activePanelId:",
|
|
565
|
-
|
|
969
|
+
d
|
|
566
970
|
), null;
|
|
567
|
-
if (
|
|
568
|
-
const
|
|
569
|
-
return /* @__PURE__ */ s(
|
|
570
|
-
|
|
971
|
+
if (d === "settings") {
|
|
972
|
+
const o = n.isDirty, u = n.activeTrigger, p = u?.kind === "card-overflow" ? u.cardId : null;
|
|
973
|
+
return /* @__PURE__ */ s(A, { isOpen: l, children: /* @__PURE__ */ s(
|
|
974
|
+
T,
|
|
571
975
|
{
|
|
572
|
-
isOpen:
|
|
573
|
-
|
|
574
|
-
|
|
976
|
+
isOpen: l,
|
|
977
|
+
title: "Configure metric",
|
|
978
|
+
variant: "merged-stage",
|
|
979
|
+
onClose: () => c({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
980
|
+
footer: /* @__PURE__ */ h(X, { children: [
|
|
575
981
|
/* @__PURE__ */ s(
|
|
576
982
|
"button",
|
|
577
983
|
{
|
|
578
984
|
id: "btn-reset",
|
|
579
985
|
type: "button",
|
|
580
986
|
className: "gloss-panel-chrome__footer-btn",
|
|
581
|
-
disabled: !
|
|
987
|
+
disabled: !o,
|
|
582
988
|
onClick: () => {
|
|
583
|
-
|
|
989
|
+
p != null && c({ type: "CLEAR_BUFFER", cardId: p });
|
|
584
990
|
},
|
|
585
991
|
children: "Reset"
|
|
586
992
|
}
|
|
@@ -592,7 +998,7 @@ function je({ panelComponents: e, children: t }) {
|
|
|
592
998
|
id: "settings-cancel",
|
|
593
999
|
type: "button",
|
|
594
1000
|
className: "gloss-panel-chrome__footer-btn",
|
|
595
|
-
onClick: () =>
|
|
1001
|
+
onClick: () => c({ type: "CLOSE_PANEL", reason: "cancel-button" }),
|
|
596
1002
|
children: "Cancel"
|
|
597
1003
|
}
|
|
598
1004
|
),
|
|
@@ -602,271 +1008,273 @@ function je({ panelComponents: e, children: t }) {
|
|
|
602
1008
|
id: "settings-apply",
|
|
603
1009
|
type: "button",
|
|
604
1010
|
className: "gloss-panel-chrome__footer-btn gloss-panel-chrome__footer-btn--primary",
|
|
605
|
-
disabled: !
|
|
606
|
-
onClick: () =>
|
|
1011
|
+
disabled: !o,
|
|
1012
|
+
onClick: () => c({ type: "CLOSE_PANEL", reason: "apply-button" }),
|
|
607
1013
|
children: "Apply"
|
|
608
1014
|
}
|
|
609
1015
|
)
|
|
610
1016
|
] }),
|
|
611
|
-
children:
|
|
1017
|
+
children: a != null ? /* @__PURE__ */ s(a, { isOpen: l }) : t
|
|
612
1018
|
}
|
|
613
1019
|
) });
|
|
614
1020
|
}
|
|
615
|
-
if (
|
|
616
|
-
if (
|
|
617
|
-
const
|
|
618
|
-
return /* @__PURE__ */ s(
|
|
619
|
-
|
|
1021
|
+
if (d === "catalog-add" || d === "catalog-replace") {
|
|
1022
|
+
if (a == null) return null;
|
|
1023
|
+
const o = d === "catalog-replace" ? "replace" : "add";
|
|
1024
|
+
return /* @__PURE__ */ s(A, { isOpen: l, children: /* @__PURE__ */ s(
|
|
1025
|
+
T,
|
|
620
1026
|
{
|
|
621
|
-
isOpen:
|
|
622
|
-
onClose: () =>
|
|
1027
|
+
isOpen: l,
|
|
1028
|
+
onClose: () => c({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
623
1029
|
footer: null,
|
|
1030
|
+
title: o === "replace" ? "Replace metric" : "Add a metric",
|
|
624
1031
|
children: /* @__PURE__ */ s(
|
|
625
|
-
|
|
1032
|
+
a,
|
|
626
1033
|
{
|
|
627
|
-
isOpen:
|
|
628
|
-
footerSlot: /* @__PURE__ */ s(
|
|
1034
|
+
isOpen: l,
|
|
1035
|
+
footerSlot: /* @__PURE__ */ s(Ve, { mode: o, dispatch: c })
|
|
629
1036
|
}
|
|
630
1037
|
)
|
|
631
1038
|
}
|
|
632
1039
|
) });
|
|
633
1040
|
}
|
|
634
|
-
return
|
|
635
|
-
|
|
1041
|
+
return d === "page-management" ? a == null ? null : /* @__PURE__ */ s(A, { isOpen: l, children: /* @__PURE__ */ s(
|
|
1042
|
+
T,
|
|
636
1043
|
{
|
|
637
|
-
isOpen:
|
|
638
|
-
onClose: () =>
|
|
1044
|
+
isOpen: l,
|
|
1045
|
+
onClose: () => c({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
639
1046
|
footer: null,
|
|
640
|
-
|
|
1047
|
+
title: "Manage pages",
|
|
1048
|
+
children: /* @__PURE__ */ s(a, { isOpen: l, footerSlot: /* @__PURE__ */ s(Be, {}) })
|
|
641
1049
|
}
|
|
642
|
-
) }) : /* @__PURE__ */ s(
|
|
643
|
-
|
|
1050
|
+
) }) : /* @__PURE__ */ s(A, { isOpen: l, children: /* @__PURE__ */ s(
|
|
1051
|
+
T,
|
|
644
1052
|
{
|
|
645
1053
|
isOpen: !0,
|
|
646
|
-
onClose: () =>
|
|
1054
|
+
onClose: () => c({ type: "CLOSE_PANEL", reason: "header-x" }),
|
|
647
1055
|
footer: null,
|
|
648
|
-
children:
|
|
1056
|
+
children: a != null ? /* @__PURE__ */ s(a, { isOpen: l }) : t
|
|
649
1057
|
}
|
|
650
1058
|
) });
|
|
651
1059
|
}
|
|
652
|
-
function
|
|
1060
|
+
function Y(e) {
|
|
653
1061
|
return e === null ? null : e.kind === "manage-pages-action" ? `global-${e.align ?? "left"}` : e.kind === "card-overflow" || e.kind === "empty-cell" ? `section-${e.sectionIndex}` : null;
|
|
654
1062
|
}
|
|
655
|
-
const
|
|
656
|
-
function
|
|
1063
|
+
const Qe = 685, j = 627, Xe = "cubic-bezier(0.22, 1, 0.36, 1)", Je = 200;
|
|
1064
|
+
function le(e, t) {
|
|
657
1065
|
if (typeof window > "u") return t;
|
|
658
|
-
const
|
|
659
|
-
if (!
|
|
660
|
-
const n = parseFloat(
|
|
661
|
-
return Number.isNaN(n) ? t :
|
|
1066
|
+
const r = window.getComputedStyle(document.documentElement).getPropertyValue(e).trim();
|
|
1067
|
+
if (!r) return t;
|
|
1068
|
+
const n = parseFloat(r);
|
|
1069
|
+
return Number.isNaN(n) ? t : r.endsWith("s") && !r.endsWith("ms") ? n * 1e3 : n;
|
|
662
1070
|
}
|
|
663
|
-
function
|
|
1071
|
+
function Ze(e, t) {
|
|
664
1072
|
return typeof window > "u" ? t : window.getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
|
|
665
1073
|
}
|
|
666
|
-
function
|
|
1074
|
+
function L(e) {
|
|
667
1075
|
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
668
1076
|
}
|
|
669
|
-
function
|
|
670
|
-
const { mountEl: t, chromeEl:
|
|
671
|
-
if (t == null ||
|
|
672
|
-
|
|
1077
|
+
function et(e) {
|
|
1078
|
+
const { mountEl: t, chromeEl: r, reducedMotion: n, onAssert: c } = e;
|
|
1079
|
+
if (t == null || r == null) {
|
|
1080
|
+
L(e), c?.({ branch: "slide-fallback-no-dom", timestamp: Date.now() });
|
|
673
1081
|
return;
|
|
674
1082
|
}
|
|
675
1083
|
if (n) {
|
|
676
|
-
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }),
|
|
1084
|
+
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), c?.({ branch: "slide-reduced-motion", timestamp: Date.now() });
|
|
677
1085
|
return;
|
|
678
1086
|
}
|
|
679
|
-
if (typeof
|
|
680
|
-
|
|
1087
|
+
if (typeof r.animate != "function") {
|
|
1088
|
+
L(e), c?.({ branch: "slide-no-waapi", timestamp: Date.now() });
|
|
681
1089
|
return;
|
|
682
1090
|
}
|
|
683
|
-
const
|
|
684
|
-
|
|
685
|
-
const d =
|
|
1091
|
+
const i = r.cloneNode(!0);
|
|
1092
|
+
i.id = "panel-chrome-frozen", i.style.cssText = "position:absolute;left:8px;right:8px;top:8px;z-index:1;pointer-events:none;", t.appendChild(i), r.style.zIndex = "2", e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger });
|
|
1093
|
+
const d = le("--panel-open-dur", Qe), l = Ze("--panel-easing", Xe), a = r.animate(
|
|
686
1094
|
[{ transform: "translateY(100%)" }, { transform: "translateY(0)" }],
|
|
687
|
-
{ duration: d, easing:
|
|
1095
|
+
{ duration: d, easing: l, fill: "forwards" }
|
|
688
1096
|
);
|
|
689
1097
|
a.addEventListener(
|
|
690
1098
|
"finish",
|
|
691
1099
|
() => {
|
|
692
|
-
|
|
1100
|
+
i.remove(), r.style.zIndex = "", a.cancel(), c?.({ branch: "slide-complete", frozen: "cleaned", timestamp: Date.now() });
|
|
693
1101
|
},
|
|
694
1102
|
{ once: !0 }
|
|
695
1103
|
);
|
|
696
1104
|
}
|
|
697
|
-
function
|
|
698
|
-
const { mountEl: t, onAssert:
|
|
1105
|
+
function tt(e) {
|
|
1106
|
+
const { mountEl: t, onAssert: r } = e;
|
|
699
1107
|
if (t == null) {
|
|
700
|
-
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() =>
|
|
1108
|
+
e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), setTimeout(() => L(e), j), r?.({ branch: "handoff-fallback-no-mount", timestamp: Date.now() });
|
|
701
1109
|
return;
|
|
702
1110
|
}
|
|
703
|
-
const n =
|
|
704
|
-
let
|
|
1111
|
+
const n = le("--panel-close-dur", j);
|
|
1112
|
+
let c = !1, i = null;
|
|
705
1113
|
const d = (a) => {
|
|
706
|
-
a.target !== t || a.propertyName !== "max-height" ||
|
|
707
|
-
},
|
|
708
|
-
|
|
1114
|
+
a.target !== t || a.propertyName !== "max-height" || c || (c = !0, i != null && clearTimeout(i), t.removeEventListener("transitionend", d), e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), r?.({ branch: "handoff-complete", timestamp: Date.now() }));
|
|
1115
|
+
}, l = () => {
|
|
1116
|
+
c || (c = !0, t.removeEventListener("transitionend", d), e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), r?.({ branch: "handoff-forced", timestamp: Date.now() }));
|
|
709
1117
|
};
|
|
710
|
-
t.addEventListener("transitionend", d), e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }),
|
|
1118
|
+
t.addEventListener("transitionend", d), e.dispatch({ type: "CLOSE_PANEL", reason: "mutex-handoff" }), i = setTimeout(l, n + Je);
|
|
711
1119
|
}
|
|
712
|
-
function
|
|
713
|
-
const { state: t, onAssert:
|
|
1120
|
+
function nt(e) {
|
|
1121
|
+
const { state: t, onAssert: r } = e;
|
|
714
1122
|
if (t.activePanelId && t.isDirty) {
|
|
715
|
-
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }),
|
|
1123
|
+
e.dispatch({ type: "OPEN_PANEL", panelId: e.panelId, trigger: e.trigger }), r?.({ branch: "blocked-dirty", timestamp: Date.now() });
|
|
716
1124
|
return;
|
|
717
1125
|
}
|
|
718
|
-
const n =
|
|
719
|
-
if (!!t.activePanelId && n != null && n ===
|
|
720
|
-
|
|
1126
|
+
const n = Y(t.activeTrigger), c = Y(e.trigger);
|
|
1127
|
+
if (!!t.activePanelId && n != null && n === c) {
|
|
1128
|
+
et(e);
|
|
721
1129
|
return;
|
|
722
1130
|
}
|
|
723
1131
|
if (t.activePanelId) {
|
|
724
|
-
|
|
1132
|
+
tt(e);
|
|
725
1133
|
return;
|
|
726
1134
|
}
|
|
727
|
-
|
|
1135
|
+
L(e), r?.({ branch: "fresh-open", timestamp: Date.now() });
|
|
728
1136
|
}
|
|
729
|
-
function
|
|
1137
|
+
function st() {
|
|
730
1138
|
if (!(typeof window > "u"))
|
|
731
1139
|
return window.__panelsAsserter;
|
|
732
1140
|
}
|
|
733
|
-
function
|
|
734
|
-
const e =
|
|
735
|
-
return
|
|
736
|
-
(
|
|
1141
|
+
function Ct() {
|
|
1142
|
+
const e = k(), t = Q();
|
|
1143
|
+
return E(
|
|
1144
|
+
(r, n) => {
|
|
737
1145
|
if (!e)
|
|
738
1146
|
return;
|
|
739
|
-
const
|
|
740
|
-
panelId:
|
|
1147
|
+
const c = typeof document < "u" ? document.querySelector('[data-mount="panel"]') : null, i = typeof document < "u" ? document.querySelector('[data-chrome="panel"]') : null, d = {
|
|
1148
|
+
panelId: r,
|
|
741
1149
|
trigger: n,
|
|
742
1150
|
state: e.state,
|
|
743
1151
|
dispatch: e.dispatch,
|
|
744
|
-
mountEl:
|
|
745
|
-
chromeEl:
|
|
1152
|
+
mountEl: c,
|
|
1153
|
+
chromeEl: i,
|
|
746
1154
|
reducedMotion: t,
|
|
747
|
-
onAssert: (
|
|
748
|
-
|
|
1155
|
+
onAssert: (l) => {
|
|
1156
|
+
st()?.recordTransition?.(l);
|
|
749
1157
|
}
|
|
750
1158
|
};
|
|
751
|
-
|
|
1159
|
+
nt(d);
|
|
752
1160
|
},
|
|
753
1161
|
[e, t]
|
|
754
1162
|
);
|
|
755
1163
|
}
|
|
756
|
-
let
|
|
757
|
-
function
|
|
1164
|
+
let O = !1, D = null;
|
|
1165
|
+
function z() {
|
|
758
1166
|
const e = [];
|
|
759
1167
|
let t = "cleaned";
|
|
760
1168
|
document.querySelectorAll("#panel-chrome-frozen").length > 0 && (e.push("#panel-chrome-frozen"), t = "lingering");
|
|
761
1169
|
const n = document.querySelectorAll(".gloss-panel-mount");
|
|
762
1170
|
n.length > 1 && e.push(`mount-count=${n.length}`);
|
|
763
|
-
const
|
|
764
|
-
|
|
765
|
-
const d =
|
|
1171
|
+
const c = n[0] ?? null, i = c ? c.querySelectorAll(".gloss-panel-chrome") : [];
|
|
1172
|
+
i.length > 1 && e.push(`chrome-count=${i.length}`);
|
|
1173
|
+
const d = i[0] ?? null;
|
|
766
1174
|
if (d) {
|
|
767
1175
|
const u = d.style.zIndex;
|
|
768
1176
|
u !== "" && u !== "2" && e.push(`chrome-zindex=${u}`);
|
|
769
1177
|
}
|
|
770
|
-
const
|
|
1178
|
+
const l = c ? "present" : "absent", a = d ? "present" : "absent";
|
|
771
1179
|
return {
|
|
772
1180
|
valid: e.length === 0,
|
|
773
|
-
mount:
|
|
1181
|
+
mount: l,
|
|
774
1182
|
chrome: a,
|
|
775
1183
|
frozen: t,
|
|
776
1184
|
orphans: e,
|
|
777
1185
|
timestamp: Date.now()
|
|
778
1186
|
};
|
|
779
1187
|
}
|
|
780
|
-
const
|
|
781
|
-
function
|
|
782
|
-
return { id: e, constraint: t, expected:
|
|
1188
|
+
const M = "8px 8px 0px", R = "64px", $ = "inset(0px 0px 60px 0px)", F = "inset(0px -40px -40px -40px)";
|
|
1189
|
+
function f(e, t, r, n, c) {
|
|
1190
|
+
return { id: e, constraint: t, expected: r, actual: n, pass: c };
|
|
783
1191
|
}
|
|
784
1192
|
function P(e) {
|
|
785
1193
|
const t = parseInt(e, 10);
|
|
786
1194
|
return Number.isFinite(t) ? t : NaN;
|
|
787
1195
|
}
|
|
788
|
-
function
|
|
789
|
-
const e = [], t = document.querySelector(".gloss-panel-mount"),
|
|
1196
|
+
function B() {
|
|
1197
|
+
const e = [], t = document.querySelector(".gloss-panel-mount"), r = t?.querySelector(".gloss-panel-chrome") ?? null, n = document.querySelector(".gloss-panel-coordinator") ?? document.querySelector("[data-panel-coordinator]"), c = document.querySelector(".bell-cutout"), i = document.querySelector(".bell-popover"), d = document.querySelector(".gloss-bottom-toolbar");
|
|
790
1198
|
if (!t)
|
|
791
|
-
e.push(
|
|
1199
|
+
e.push(f("C1", "mount --reveal-y matches clip-path inset-bottom Npx", "mount present", "absent", !1));
|
|
792
1200
|
else {
|
|
793
|
-
const
|
|
1201
|
+
const l = getComputedStyle(t), a = l.getPropertyValue("--reveal-y").trim() || t.style.getPropertyValue("--reveal-y").trim(), o = l.clipPath || t.style.clipPath || "", u = o.match(/inset\(\s*0(?:px)?\s+0(?:px)?\s+(\d+)px\s+0(?:px)?\s*\)/), p = u ? parseInt(u[1], 10) : NaN, m = P(a), b = Number.isFinite(p) && Number.isFinite(m) && p === m;
|
|
794
1202
|
e.push(
|
|
795
|
-
|
|
1203
|
+
f(
|
|
796
1204
|
"C1",
|
|
797
1205
|
"mount --reveal-y matches clip-path inset-bottom Npx",
|
|
798
|
-
`inset(0 0 ${
|
|
799
|
-
`--reveal-y=${a || "n/a"} clip-path=${
|
|
800
|
-
|
|
1206
|
+
`inset(0 0 ${m}px 0) === --reveal-y(${m}px)`,
|
|
1207
|
+
`--reveal-y=${a || "n/a"} clip-path=${o || "n/a"}`,
|
|
1208
|
+
b
|
|
801
1209
|
)
|
|
802
1210
|
);
|
|
803
1211
|
}
|
|
804
1212
|
if (!t)
|
|
805
|
-
e.push(
|
|
1213
|
+
e.push(f("C2", "mount padding constant", M, "absent", !1));
|
|
806
1214
|
else {
|
|
807
|
-
const
|
|
808
|
-
e.push(
|
|
1215
|
+
const l = t.style.padding, a = getComputedStyle(t), o = l || a.padding || "", u = o === M || o === "8px 8px 0px 8px";
|
|
1216
|
+
e.push(f("C2", "mount padding constant", M, o || "n/a", u));
|
|
809
1217
|
}
|
|
810
1218
|
if (!t)
|
|
811
|
-
e.push(
|
|
1219
|
+
e.push(f("C3", "mount.bottom resolves to var(--tb-h)=64px", R, "absent", !1));
|
|
812
1220
|
else {
|
|
813
|
-
const a = getComputedStyle(t).bottom || t.style.bottom || "",
|
|
814
|
-
e.push(
|
|
1221
|
+
const a = getComputedStyle(t).bottom || t.style.bottom || "", o = a === R;
|
|
1222
|
+
e.push(f("C3", "mount.bottom resolves to var(--tb-h)=64px", R, a || "n/a", o));
|
|
815
1223
|
}
|
|
816
|
-
if (!
|
|
817
|
-
e.push(
|
|
1224
|
+
if (!r)
|
|
1225
|
+
e.push(f("C4", "panel-chrome height formula = (row-h*3)+(row-gap*3)-8px", "formula match", "absent", !1));
|
|
818
1226
|
else {
|
|
819
|
-
const
|
|
820
|
-
|
|
821
|
-
),
|
|
822
|
-
|
|
823
|
-
), u = a * 3 +
|
|
1227
|
+
const l = getComputedStyle(r), a = P(
|
|
1228
|
+
l.getPropertyValue("--row-h").trim() || r.style.getPropertyValue("--row-h").trim() || "0"
|
|
1229
|
+
), o = P(
|
|
1230
|
+
l.getPropertyValue("--row-gap").trim() || r.style.getPropertyValue("--row-gap").trim() || "0"
|
|
1231
|
+
), u = a * 3 + o * 3 - 8, p = P(l.height || r.style.height || ""), m = Number.isFinite(a) && Number.isFinite(o) && Number.isFinite(p) && Number.isFinite(u) && p === u;
|
|
824
1232
|
e.push(
|
|
825
|
-
|
|
1233
|
+
f(
|
|
826
1234
|
"C4",
|
|
827
1235
|
"panel-chrome height formula = (row-h*3)+(row-gap*3)-8px",
|
|
828
|
-
`${u}px (rh=${a} rg=${
|
|
829
|
-
`${
|
|
830
|
-
|
|
1236
|
+
`${u}px (rh=${a} rg=${o})`,
|
|
1237
|
+
`${p}px`,
|
|
1238
|
+
m
|
|
831
1239
|
)
|
|
832
1240
|
);
|
|
833
1241
|
}
|
|
834
|
-
if (!n || !
|
|
1242
|
+
if (!n || !r)
|
|
835
1243
|
e.push(
|
|
836
|
-
|
|
1244
|
+
f(
|
|
837
1245
|
"C5",
|
|
838
1246
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
839
1247
|
"present",
|
|
840
|
-
`coordinator=${n ? "present" : "absent"} chrome=${
|
|
1248
|
+
`coordinator=${n ? "present" : "absent"} chrome=${r ? "present" : "absent"}`,
|
|
841
1249
|
!1
|
|
842
1250
|
)
|
|
843
1251
|
);
|
|
844
1252
|
else {
|
|
845
|
-
const
|
|
1253
|
+
const l = getComputedStyle(n), a = getComputedStyle(r), o = l.perspective || n.style.perspective || "", u = (l.perspectiveOrigin || n.style.perspectiveOrigin || "").trim(), p = a.perspectiveStyle || r.style.perspectiveStyle || "", v = o !== "" && o !== "none" && (u === "center bottom" || u === "50% 100%") && p === "flat";
|
|
846
1254
|
e.push(
|
|
847
|
-
|
|
1255
|
+
f(
|
|
848
1256
|
"C5",
|
|
849
1257
|
'coordinator perspective + origin "center bottom"; chrome perspective-style flat',
|
|
850
1258
|
"perspective:not-none, origin:center bottom, chrome-style:flat",
|
|
851
|
-
`perspective=${
|
|
1259
|
+
`perspective=${o} origin=${u} chrome-style=${p}`,
|
|
852
1260
|
v
|
|
853
1261
|
)
|
|
854
1262
|
);
|
|
855
1263
|
}
|
|
856
1264
|
{
|
|
857
|
-
let
|
|
1265
|
+
let l = !1, a = "absent";
|
|
858
1266
|
try {
|
|
859
|
-
for (const
|
|
1267
|
+
for (const o of Array.from(document.styleSheets)) {
|
|
860
1268
|
let u = [];
|
|
861
1269
|
try {
|
|
862
|
-
u = Array.from(
|
|
1270
|
+
u = Array.from(o.cssRules ?? []);
|
|
863
1271
|
} catch {
|
|
864
1272
|
continue;
|
|
865
1273
|
}
|
|
866
|
-
for (const
|
|
867
|
-
if (
|
|
868
|
-
const
|
|
869
|
-
|
|
1274
|
+
for (const p of u)
|
|
1275
|
+
if (p.name === "stage-spin") {
|
|
1276
|
+
const b = Array.from(p.cssRules), y = b.find((S) => S.keyText === "0%" || S.keyText === "from"), v = b.find((S) => S.keyText === "100%" || S.keyText === "to"), N = y?.style.transform ?? "", C = v?.style.transform ?? "", g = /rotateY\(\s*0(?:deg)?\s*\)/;
|
|
1277
|
+
l = g.test(N) && g.test(C), a = `0%=${N || "n/a"} 100%=${C || "n/a"}`;
|
|
870
1278
|
break;
|
|
871
1279
|
}
|
|
872
1280
|
if (a !== "absent") break;
|
|
@@ -875,69 +1283,69 @@ function F() {
|
|
|
875
1283
|
a = "inspection-error";
|
|
876
1284
|
}
|
|
877
1285
|
e.push(
|
|
878
|
-
|
|
1286
|
+
f(
|
|
879
1287
|
"C6",
|
|
880
1288
|
"@keyframes stage-spin 0% AND 100% anchor at rotateY(0)",
|
|
881
1289
|
"both frames rotateY(0)",
|
|
882
1290
|
a,
|
|
883
|
-
|
|
1291
|
+
l
|
|
884
1292
|
)
|
|
885
1293
|
);
|
|
886
1294
|
}
|
|
887
1295
|
{
|
|
888
|
-
const
|
|
1296
|
+
const l = document.documentElement, a = getComputedStyle(l), o = a.getPropertyValue("--panel-open-dur").trim() || l.style.getPropertyValue("--panel-open-dur").trim(), u = a.getPropertyValue("--panel-close-dur").trim() || l.style.getPropertyValue("--panel-close-dur").trim(), p = P(o) || parseFloat(o) * (o.endsWith("s") && !o.endsWith("ms") ? 1e3 : 1), m = P(u) || parseFloat(u) * (u.endsWith("s") && !u.endsWith("ms") ? 1e3 : 1), b = Number.isFinite(p) && Number.isFinite(m) && p > m;
|
|
889
1297
|
e.push(
|
|
890
|
-
|
|
1298
|
+
f("C7", "--panel-open-dur > --panel-close-dur", "open > close", `open=${o || "n/a"} close=${u || "n/a"}`, b)
|
|
891
1299
|
);
|
|
892
1300
|
}
|
|
893
|
-
if (!
|
|
894
|
-
e.push(
|
|
1301
|
+
if (!c)
|
|
1302
|
+
e.push(f("C8", "BellCutout zero computed animation/transition", "no inline timing", "absent", !1));
|
|
895
1303
|
else {
|
|
896
|
-
const
|
|
1304
|
+
const l = getComputedStyle(c), a = l.animationName || "", o = l.transitionProperty || "", u = (a === "" || a === "none") && (o === "" || o === "none" || o === "all");
|
|
897
1305
|
e.push(
|
|
898
|
-
|
|
1306
|
+
f(
|
|
899
1307
|
"C8",
|
|
900
1308
|
"BellCutout zero computed animation/transition",
|
|
901
1309
|
"animation:none AND transition:none",
|
|
902
|
-
`animation=${a || "n/a"} transition=${
|
|
1310
|
+
`animation=${a || "n/a"} transition=${o || "n/a"}`,
|
|
903
1311
|
u
|
|
904
1312
|
)
|
|
905
1313
|
);
|
|
906
1314
|
}
|
|
907
1315
|
if (!t)
|
|
908
|
-
e.push(
|
|
1316
|
+
e.push(f("C9", "mount closed-state clipPath", $, "absent", !1));
|
|
909
1317
|
else {
|
|
910
|
-
const
|
|
911
|
-
e.push(
|
|
1318
|
+
const l = t.style.clipPath, a = getComputedStyle(t), o = l || a.clipPath || "", u = o === $;
|
|
1319
|
+
e.push(f("C9", "mount closed-state clipPath", $, o || "n/a", u));
|
|
912
1320
|
}
|
|
913
|
-
if (!
|
|
914
|
-
e.push(
|
|
1321
|
+
if (!i)
|
|
1322
|
+
e.push(f("C10", "bell-popover parentElement === document.body (open)", "body", "absent", !1));
|
|
915
1323
|
else {
|
|
916
|
-
const
|
|
1324
|
+
const l = i.parentElement, a = l === document.body;
|
|
917
1325
|
e.push(
|
|
918
|
-
|
|
1326
|
+
f(
|
|
919
1327
|
"C10",
|
|
920
1328
|
"bell-popover parentElement === document.body (open)",
|
|
921
1329
|
"body",
|
|
922
|
-
|
|
1330
|
+
l === document.body ? "body" : l?.tagName ?? "n/a",
|
|
923
1331
|
a
|
|
924
1332
|
)
|
|
925
1333
|
);
|
|
926
1334
|
}
|
|
927
1335
|
if (!n)
|
|
928
|
-
e.push(
|
|
1336
|
+
e.push(f("C11", "coordinator overflow === visible", "visible", "absent", !1));
|
|
929
1337
|
else {
|
|
930
|
-
const a = getComputedStyle(n).overflow || n.style.overflow || "",
|
|
931
|
-
e.push(
|
|
1338
|
+
const a = getComputedStyle(n).overflow || n.style.overflow || "", o = a === "visible";
|
|
1339
|
+
e.push(f("C11", "coordinator overflow === visible", "visible", a || "n/a", o));
|
|
932
1340
|
}
|
|
933
1341
|
if (!d)
|
|
934
|
-
e.push(
|
|
1342
|
+
e.push(f("C12", "toolbar clipPath = inset(0 -40 -40 -40)", F, "absent", !1));
|
|
935
1343
|
else {
|
|
936
|
-
const
|
|
937
|
-
e.push(
|
|
1344
|
+
const l = d.style.clipPath, a = getComputedStyle(d), o = l || a.clipPath || "", u = o === F;
|
|
1345
|
+
e.push(f("C12", "toolbar clipPath = inset(0 -40 -40 -40)", F, o || "n/a", u));
|
|
938
1346
|
}
|
|
939
1347
|
return e.push(
|
|
940
|
-
|
|
1348
|
+
f(
|
|
941
1349
|
"C13",
|
|
942
1350
|
"same-position slide via WAAPI (mid-transition getAnimations().length > 0)",
|
|
943
1351
|
"WAAPI driver wired in orchestrator (source-proof)",
|
|
@@ -945,7 +1353,7 @@ function F() {
|
|
|
945
1353
|
"wiring_only"
|
|
946
1354
|
)
|
|
947
1355
|
), e.push(
|
|
948
|
-
|
|
1356
|
+
f(
|
|
949
1357
|
"C14",
|
|
950
1358
|
'cross-position handoff transitionend filtered by propertyName="max-height"',
|
|
951
1359
|
"transitionend filter wired in orchestrator (source-proof)",
|
|
@@ -954,11 +1362,11 @@ function F() {
|
|
|
954
1362
|
)
|
|
955
1363
|
), e;
|
|
956
1364
|
}
|
|
957
|
-
function
|
|
958
|
-
return
|
|
1365
|
+
function at(e) {
|
|
1366
|
+
return B().find((t) => t.id === e);
|
|
959
1367
|
}
|
|
960
|
-
function
|
|
961
|
-
const e =
|
|
1368
|
+
function rt() {
|
|
1369
|
+
const e = z();
|
|
962
1370
|
return { q12: [
|
|
963
1371
|
{
|
|
964
1372
|
id: "Q12-12",
|
|
@@ -967,75 +1375,76 @@ function Me() {
|
|
|
967
1375
|
actual: `valid=${e.valid} mount=${e.mount} chrome=${e.chrome} frozen=${e.frozen} orphans=[${e.orphans.join(",")}]`,
|
|
968
1376
|
pass: e.valid
|
|
969
1377
|
}
|
|
970
|
-
], cc:
|
|
1378
|
+
], cc: B() };
|
|
971
1379
|
}
|
|
972
|
-
function
|
|
1380
|
+
function lt() {
|
|
973
1381
|
return {
|
|
974
|
-
enable:
|
|
975
|
-
disable:
|
|
976
|
-
isEnabled: () =>
|
|
977
|
-
getLastReport: () =>
|
|
1382
|
+
enable: ot,
|
|
1383
|
+
disable: it,
|
|
1384
|
+
isEnabled: () => O,
|
|
1385
|
+
getLastReport: () => D,
|
|
978
1386
|
recordTransition: (e) => {
|
|
979
|
-
|
|
1387
|
+
O && (D = { ...e, ...z() });
|
|
980
1388
|
},
|
|
981
1389
|
assertOnce: () => {
|
|
982
|
-
const e =
|
|
983
|
-
return
|
|
1390
|
+
const e = z();
|
|
1391
|
+
return D = e, e;
|
|
984
1392
|
},
|
|
985
|
-
assertCcOnly:
|
|
986
|
-
getCcRowById:
|
|
987
|
-
assertPanelTruths:
|
|
1393
|
+
assertCcOnly: B,
|
|
1394
|
+
getCcRowById: at,
|
|
1395
|
+
assertPanelTruths: rt
|
|
988
1396
|
};
|
|
989
1397
|
}
|
|
990
|
-
function
|
|
991
|
-
if (
|
|
992
|
-
window.__panelsAsserter || (window.__panelsAsserter =
|
|
1398
|
+
function ot() {
|
|
1399
|
+
if (O = !0, typeof window > "u") return;
|
|
1400
|
+
window.__panelsAsserter || (window.__panelsAsserter = lt(), console.info(
|
|
993
1401
|
"[panels] asserter enabled (P3b Q12-12 + P6 W5 cc:C1..C14). Inspect via window.__panelsAsserter."
|
|
994
1402
|
));
|
|
995
1403
|
}
|
|
996
|
-
function
|
|
997
|
-
|
|
1404
|
+
function it() {
|
|
1405
|
+
O = !1;
|
|
998
1406
|
}
|
|
999
1407
|
export {
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1408
|
+
Et as COMMITS,
|
|
1409
|
+
bt as CatalogAddShell,
|
|
1410
|
+
Ve as CatalogFooter,
|
|
1411
|
+
vt as CatalogReplaceShell,
|
|
1412
|
+
V as CatalogStateContext,
|
|
1413
|
+
Te as CloneCard,
|
|
1414
|
+
Ae as CloneStage,
|
|
1415
|
+
te as MOCK_DEFAULT_LENS,
|
|
1416
|
+
ee as MOCK_LENSES,
|
|
1417
|
+
U as MOCK_LENS_META,
|
|
1418
|
+
We as MOCK_PAGES,
|
|
1419
|
+
ne as MOCK_TILES_BY_LENS,
|
|
1420
|
+
St as PANEL_IDS,
|
|
1421
|
+
Be as PageMgmtFooter,
|
|
1422
|
+
yt as PageMgmtShell,
|
|
1423
|
+
ae as PageMgmtStateContext,
|
|
1424
|
+
T as PanelChrome,
|
|
1425
|
+
xt as PanelHost,
|
|
1426
|
+
_t as PanelHostShell,
|
|
1427
|
+
A as PanelMount,
|
|
1428
|
+
At as PanelProvider,
|
|
1429
|
+
Nt as PanelSlot,
|
|
1430
|
+
gt as SettingsShell,
|
|
1431
|
+
B as assertCcOnly,
|
|
1432
|
+
z as assertPanelDomShape,
|
|
1433
|
+
rt as assertPanelTruths,
|
|
1434
|
+
Tt as deriveSurfaceState,
|
|
1435
|
+
it as disablePanelAsserter,
|
|
1436
|
+
ot as enablePanelAsserter,
|
|
1437
|
+
at as getCcRowById,
|
|
1438
|
+
Lt as initialState,
|
|
1439
|
+
Y as positionKey,
|
|
1440
|
+
Ot as reducer,
|
|
1441
|
+
nt as transitionToPanel,
|
|
1442
|
+
Ue as useCatalogState,
|
|
1443
|
+
ft as useEditingCardId,
|
|
1444
|
+
re as usePageMgmtState,
|
|
1445
|
+
fe as usePanelContext,
|
|
1446
|
+
k as usePanelContextOptional,
|
|
1447
|
+
kt as usePanelCoordinator,
|
|
1448
|
+
Q as useReducedMotionPanel,
|
|
1449
|
+
Ct as useTransitionToPanel
|
|
1041
1450
|
};
|