@stealthscale/component-disclosure 0.1.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/LICENSE +21 -0
- package/README.md +429 -0
- package/dist/cyclonedx/bom.json +1 -0
- package/dist/index.d.ts +919 -0
- package/dist/index.js +2072 -0
- package/dist/recipe-BdO9ZFWU.js +708 -0
- package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/theme.d.ts +12 -0
- package/dist/theme.js +23 -0
- package/package.json +81 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2072 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
+
import { a as recipe, i as recipe$1, n as recipe$3, r as recipe$2, t as recipe$4 } from "./recipe-BdO9ZFWU.js";
|
|
3
|
+
import { c } from "react/compiler-runtime";
|
|
4
|
+
import { useEffect, useId } from "react";
|
|
5
|
+
import { mergeProps, normalizeProps, useMachine } from "@zag-js/react";
|
|
6
|
+
import { createSlotRecipeContext } from "@stealthscale/theme";
|
|
7
|
+
import "@stealthscale/theme/authoring";
|
|
8
|
+
import * as collapsible from "@zag-js/collapsible";
|
|
9
|
+
import { createRequiredContext } from "@stealthscale/hooks";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
import * as menu from "@zag-js/menu";
|
|
12
|
+
import * as popover from "@zag-js/popover";
|
|
13
|
+
import * as tabs from "@zag-js/tabs";
|
|
14
|
+
import * as tooltip from "@zag-js/tooltip";
|
|
15
|
+
//#region src/collapsible/context.ts
|
|
16
|
+
/**
|
|
17
|
+
* Binds the collapsible's recipe to the elements that draw its parts.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* Apart from the recipe, because an application's compiler reads the recipe at build time and
|
|
21
|
+
* the binding needs the runtime. Apart from the machine, because the recipe decides how a part
|
|
22
|
+
* is drawn and the machine decides what it does.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Binds the recipe once. The root provides the variants and every other part reads them.
|
|
26
|
+
*/
|
|
27
|
+
const { withContext: withContext$4, withProvider: withProvider$4 } = createSlotRecipeContext(recipe);
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/stated.ts
|
|
30
|
+
/**
|
|
31
|
+
* Answers the settings a caller actually stated.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam Options - The settings a caller handed over.
|
|
34
|
+
* @param options - Everything the machine's own splitter took out of the root's props.
|
|
35
|
+
* @returns The same settings, less the ones nobody set.
|
|
36
|
+
*/
|
|
37
|
+
function stated(options) {
|
|
38
|
+
const set = Object.entries(options).filter(([, value]) => value !== void 0);
|
|
39
|
+
return Object.fromEntries(set);
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/collapsible/machine.ts
|
|
43
|
+
/**
|
|
44
|
+
* Runs the collapsible's machine and carries what it answers down to the parts.
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* The machine is connected once, at the root, so every part reads one api from one running
|
|
48
|
+
* machine. A part drawn outside the root throws where it was written rather than drawing wrongly
|
|
49
|
+
* and saying nothing.
|
|
50
|
+
* The id is the machine's and never an element's. It builds the ARIA references between the
|
|
51
|
+
* trigger and the content from it, so a caller naming their own passes it here and the
|
|
52
|
+
* references follow.
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* Hands the running machine to every part, and reads it back.
|
|
56
|
+
*/
|
|
57
|
+
const [ApiProvider$4, useCollapsible] = createRequiredContext("Collapsible");
|
|
58
|
+
/**
|
|
59
|
+
* Starts the machine and connects it.
|
|
60
|
+
*
|
|
61
|
+
* @param options - The settings the caller handed the root, less the id where it named none.
|
|
62
|
+
* @returns The api every part reads.
|
|
63
|
+
*/
|
|
64
|
+
function useCollapsibleMachine(options) {
|
|
65
|
+
const $ = c(6);
|
|
66
|
+
if ($[0] !== "de66f55fd9be865c47fd3fb5cc091a9b0c545a481f56227cbc82ec9dedc87039") {
|
|
67
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
68
|
+
$[0] = "de66f55fd9be865c47fd3fb5cc091a9b0c545a481f56227cbc82ec9dedc87039";
|
|
69
|
+
}
|
|
70
|
+
const generated = useId();
|
|
71
|
+
let t0;
|
|
72
|
+
if ($[1] !== options) {
|
|
73
|
+
t0 = stated(options);
|
|
74
|
+
$[1] = options;
|
|
75
|
+
$[2] = t0;
|
|
76
|
+
} else t0 = $[2];
|
|
77
|
+
const t1 = options.id ?? generated;
|
|
78
|
+
let t2;
|
|
79
|
+
if ($[3] !== t0 || $[4] !== t1) {
|
|
80
|
+
t2 = {
|
|
81
|
+
...t0,
|
|
82
|
+
id: t1
|
|
83
|
+
};
|
|
84
|
+
$[3] = t0;
|
|
85
|
+
$[4] = t1;
|
|
86
|
+
$[5] = t2;
|
|
87
|
+
} else t2 = $[5];
|
|
88
|
+
return collapsible.connect(useMachine(collapsible.machine, t2), normalizeProps);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Splits what the machine reads from what the element does.
|
|
92
|
+
*
|
|
93
|
+
* @remarks
|
|
94
|
+
* The machine states which props are its own, so the root never lists them and never drifts from
|
|
95
|
+
* the version it is built against.
|
|
96
|
+
*/
|
|
97
|
+
const splitCollapsibleProps = collapsible.splitProps;
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/collapsible/content.tsx
|
|
100
|
+
/**
|
|
101
|
+
* Draws the block at the room the root states.
|
|
102
|
+
*/
|
|
103
|
+
const Shown$1 = withContext$4("div", "content");
|
|
104
|
+
/**
|
|
105
|
+
* Appears and goes as the trigger is pressed.
|
|
106
|
+
*
|
|
107
|
+
* @param props - Everything a styled div takes.
|
|
108
|
+
* @returns The block, measured and named by the machine.
|
|
109
|
+
*/
|
|
110
|
+
function Content$4(props) {
|
|
111
|
+
const $ = c(6);
|
|
112
|
+
if ($[0] !== "e1d441bb88adce5d2e6053a5e0768c96ef47604e0ba21e6b1c494c2d3a0eb0e1") {
|
|
113
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
114
|
+
$[0] = "e1d441bb88adce5d2e6053a5e0768c96ef47604e0ba21e6b1c494c2d3a0eb0e1";
|
|
115
|
+
}
|
|
116
|
+
const api = useCollapsible();
|
|
117
|
+
let t0;
|
|
118
|
+
if ($[1] !== api || $[2] !== props) {
|
|
119
|
+
t0 = mergeProps(api.getContentProps(), props);
|
|
120
|
+
$[1] = api;
|
|
121
|
+
$[2] = props;
|
|
122
|
+
$[3] = t0;
|
|
123
|
+
} else t0 = $[3];
|
|
124
|
+
let t1;
|
|
125
|
+
if ($[4] !== t0) {
|
|
126
|
+
t1 = /* @__PURE__ */ jsx(Shown$1, { ...t0 });
|
|
127
|
+
$[4] = t0;
|
|
128
|
+
$[5] = t1;
|
|
129
|
+
} else t1 = $[5];
|
|
130
|
+
return t1;
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/collapsible/indicator.tsx
|
|
134
|
+
/**
|
|
135
|
+
* Draws the mark at the box the root states.
|
|
136
|
+
*/
|
|
137
|
+
const Turned$1 = withContext$4("span", "indicator");
|
|
138
|
+
/**
|
|
139
|
+
* Turns half a revolution while the block is open.
|
|
140
|
+
*
|
|
141
|
+
* @param props - Everything a styled span takes.
|
|
142
|
+
* @returns The mark, turned to whichever way the machine is.
|
|
143
|
+
*/
|
|
144
|
+
function Indicator$3(props) {
|
|
145
|
+
const $ = c(6);
|
|
146
|
+
if ($[0] !== "a34280bc086a39a0fb7d8a3c2812f4b7b939439b92db5d65061c3211600f1a23") {
|
|
147
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
148
|
+
$[0] = "a34280bc086a39a0fb7d8a3c2812f4b7b939439b92db5d65061c3211600f1a23";
|
|
149
|
+
}
|
|
150
|
+
const api = useCollapsible();
|
|
151
|
+
let t0;
|
|
152
|
+
if ($[1] !== api || $[2] !== props) {
|
|
153
|
+
t0 = mergeProps(api.getIndicatorProps(), props);
|
|
154
|
+
$[1] = api;
|
|
155
|
+
$[2] = props;
|
|
156
|
+
$[3] = t0;
|
|
157
|
+
} else t0 = $[3];
|
|
158
|
+
let t1;
|
|
159
|
+
if ($[4] !== t0) {
|
|
160
|
+
t1 = /* @__PURE__ */ jsx(Turned$1, { ...t0 });
|
|
161
|
+
$[4] = t0;
|
|
162
|
+
$[5] = t1;
|
|
163
|
+
} else t1 = $[5];
|
|
164
|
+
return t1;
|
|
165
|
+
}
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region src/collapsible/root.tsx
|
|
168
|
+
/**
|
|
169
|
+
* Draws the frame and sets the variants every part below it reads.
|
|
170
|
+
*/
|
|
171
|
+
const Framed$4 = withProvider$4("div", "root");
|
|
172
|
+
/**
|
|
173
|
+
* Shows and hides the block beneath a control.
|
|
174
|
+
*
|
|
175
|
+
* @param props - The machine's options, the recipe's variants and the element's props together.
|
|
176
|
+
* @returns The frame, holding the parts, under the running machine.
|
|
177
|
+
*/
|
|
178
|
+
function Root$4(props) {
|
|
179
|
+
const $ = c(11);
|
|
180
|
+
if ($[0] !== "bd98d881b0efa3f21d0fa393cdee8a8ff9e80988049fe93eb321aa70a8275a6c") {
|
|
181
|
+
for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
182
|
+
$[0] = "bd98d881b0efa3f21d0fa393cdee8a8ff9e80988049fe93eb321aa70a8275a6c";
|
|
183
|
+
}
|
|
184
|
+
let t0;
|
|
185
|
+
if ($[1] !== props) {
|
|
186
|
+
t0 = splitCollapsibleProps(props);
|
|
187
|
+
$[1] = props;
|
|
188
|
+
$[2] = t0;
|
|
189
|
+
} else t0 = $[2];
|
|
190
|
+
const [options, rest] = t0;
|
|
191
|
+
const api = useCollapsibleMachine(options);
|
|
192
|
+
let t1;
|
|
193
|
+
if ($[3] !== api) {
|
|
194
|
+
t1 = api.getRootProps();
|
|
195
|
+
$[3] = api;
|
|
196
|
+
$[4] = t1;
|
|
197
|
+
} else t1 = $[4];
|
|
198
|
+
let t2;
|
|
199
|
+
if ($[5] !== rest || $[6] !== t1) {
|
|
200
|
+
t2 = /* @__PURE__ */ jsx(Framed$4, {
|
|
201
|
+
...rest,
|
|
202
|
+
...t1
|
|
203
|
+
});
|
|
204
|
+
$[5] = rest;
|
|
205
|
+
$[6] = t1;
|
|
206
|
+
$[7] = t2;
|
|
207
|
+
} else t2 = $[7];
|
|
208
|
+
let t3;
|
|
209
|
+
if ($[8] !== api || $[9] !== t2) {
|
|
210
|
+
t3 = /* @__PURE__ */ jsx(ApiProvider$4, {
|
|
211
|
+
value: api,
|
|
212
|
+
children: t2
|
|
213
|
+
});
|
|
214
|
+
$[8] = api;
|
|
215
|
+
$[9] = t2;
|
|
216
|
+
$[10] = t3;
|
|
217
|
+
} else t3 = $[10];
|
|
218
|
+
return t3;
|
|
219
|
+
}
|
|
220
|
+
//#endregion
|
|
221
|
+
//#region src/collapsible/trigger.tsx
|
|
222
|
+
/**
|
|
223
|
+
* Draws the control at the size the root states.
|
|
224
|
+
*/
|
|
225
|
+
const Pressed$4 = withContext$4("button", "trigger");
|
|
226
|
+
/**
|
|
227
|
+
* Shows the block where it is hidden, and hides it where it is shown.
|
|
228
|
+
*
|
|
229
|
+
* @param props - Everything a styled button takes.
|
|
230
|
+
* @returns The control, carrying what the machine says it does.
|
|
231
|
+
*/
|
|
232
|
+
function Trigger$4(props) {
|
|
233
|
+
const $ = c(6);
|
|
234
|
+
if ($[0] !== "d17643338d92b329ad0df8f95b653a5ec7a33781b78d10cec5c696ea1b48f7a4") {
|
|
235
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
236
|
+
$[0] = "d17643338d92b329ad0df8f95b653a5ec7a33781b78d10cec5c696ea1b48f7a4";
|
|
237
|
+
}
|
|
238
|
+
const api = useCollapsible();
|
|
239
|
+
let t0;
|
|
240
|
+
if ($[1] !== api || $[2] !== props) {
|
|
241
|
+
t0 = mergeProps(api.getTriggerProps(), props);
|
|
242
|
+
$[1] = api;
|
|
243
|
+
$[2] = props;
|
|
244
|
+
$[3] = t0;
|
|
245
|
+
} else t0 = $[3];
|
|
246
|
+
let t1;
|
|
247
|
+
if ($[4] !== t0) {
|
|
248
|
+
t1 = /* @__PURE__ */ jsx(Pressed$4, { ...t0 });
|
|
249
|
+
$[4] = t0;
|
|
250
|
+
$[5] = t1;
|
|
251
|
+
} else t1 = $[5];
|
|
252
|
+
return t1;
|
|
253
|
+
}
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/collapsible/index.ts
|
|
256
|
+
var collapsible_exports = /* @__PURE__ */ __exportAll({
|
|
257
|
+
Content: () => Content$4,
|
|
258
|
+
Indicator: () => Indicator$3,
|
|
259
|
+
Root: () => Root$4,
|
|
260
|
+
Trigger: () => Trigger$4
|
|
261
|
+
});
|
|
262
|
+
//#endregion
|
|
263
|
+
//#region src/menu/context.ts
|
|
264
|
+
/**
|
|
265
|
+
* Binds the menu's recipe to the elements that draw its parts.
|
|
266
|
+
*
|
|
267
|
+
* @remarks
|
|
268
|
+
* Apart from the recipe, because an application's compiler reads the recipe at build time and
|
|
269
|
+
* the binding needs the runtime. Apart from the machine, because the recipe decides how a part
|
|
270
|
+
* is drawn and the machine decides what it does.
|
|
271
|
+
*/
|
|
272
|
+
/**
|
|
273
|
+
* Binds the recipe once. The root provides the variants and every other part reads them.
|
|
274
|
+
*/
|
|
275
|
+
const { withContext: withContext$3, withProvider: withProvider$3 } = createSlotRecipeContext(recipe$1);
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/menu/variants.ts
|
|
278
|
+
/**
|
|
279
|
+
* Lists the axes the recipe offers, read from the recipe so the two never drift.
|
|
280
|
+
*
|
|
281
|
+
* @remarks
|
|
282
|
+
* The compiler types a recipe's variants as optional and this recipe states four, so the read
|
|
283
|
+
* cannot find them absent and a fallback here would be a branch no case can take.
|
|
284
|
+
*/
|
|
285
|
+
const AXES = new Set(Object.keys(recipe$1.variants));
|
|
286
|
+
/**
|
|
287
|
+
* Splits the recipe's variants out of the props a root was handed.
|
|
288
|
+
*
|
|
289
|
+
* @param props - Everything the root was given once the machine's settings are out of it.
|
|
290
|
+
* @returns The variants the caller picked, and everything the element takes.
|
|
291
|
+
*/
|
|
292
|
+
function splitMenuVariants(props) {
|
|
293
|
+
const picked = {};
|
|
294
|
+
const rest = {};
|
|
295
|
+
for (const [name, value] of Object.entries(props)) if (AXES.has(name)) picked[name] = value;
|
|
296
|
+
else rest[name] = value;
|
|
297
|
+
return [picked, rest];
|
|
298
|
+
}
|
|
299
|
+
//#endregion
|
|
300
|
+
//#region src/menu/machine.ts
|
|
301
|
+
/**
|
|
302
|
+
* Runs the menu's machine, carries what it answers down to the parts, and registers a submenu with
|
|
303
|
+
* the menu it opens from.
|
|
304
|
+
*
|
|
305
|
+
* @remarks
|
|
306
|
+
* The machine is connected once, at the root, so every part reads one api from one running
|
|
307
|
+
* machine. A part drawn outside the root throws where it was written rather than drawing wrongly
|
|
308
|
+
* and saying nothing.
|
|
309
|
+
* A root also carries the running machine itself and the level above it. Registering a submenu
|
|
310
|
+
* takes the two machines rather than their apis, and a submenu's control takes the api of the
|
|
311
|
+
* menu above it, so neither is reachable from the api alone.
|
|
312
|
+
* The id is the machine's and never an element's. It names the panel, every row and every group,
|
|
313
|
+
* so a caller naming their own passes it here and every reference follows.
|
|
314
|
+
*/
|
|
315
|
+
/**
|
|
316
|
+
* Hands the running menu to every part, reads it back, and reads the menu a root opens from.
|
|
317
|
+
*/
|
|
318
|
+
const [ApiProvider$3, useMenu, useEnclosingMenu] = createRequiredContext("Menu");
|
|
319
|
+
/**
|
|
320
|
+
* Hands the row to the label and the mark inside it, and reads it back.
|
|
321
|
+
*/
|
|
322
|
+
const [ItemProvider, useMenuItem] = createRequiredContext("Menu.Item");
|
|
323
|
+
/**
|
|
324
|
+
* Splits what the machine reads from what the element does.
|
|
325
|
+
*
|
|
326
|
+
* @remarks
|
|
327
|
+
* The machine states which props are its own, so the root never lists them and never drifts from
|
|
328
|
+
* the version it is built against.
|
|
329
|
+
*/
|
|
330
|
+
const splitMenuProps = menu.splitProps;
|
|
331
|
+
/**
|
|
332
|
+
* Starts the machine and connects it.
|
|
333
|
+
*
|
|
334
|
+
* @param options - The settings the caller handed the root, less the id where it named none.
|
|
335
|
+
* @returns The api every part reads, beside the machine a submenu registers with.
|
|
336
|
+
*/
|
|
337
|
+
function useMenuMachine(options) {
|
|
338
|
+
const $ = c(11);
|
|
339
|
+
if ($[0] !== "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3") {
|
|
340
|
+
for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
341
|
+
$[0] = "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3";
|
|
342
|
+
}
|
|
343
|
+
const generated = useId();
|
|
344
|
+
let t0;
|
|
345
|
+
if ($[1] !== options) {
|
|
346
|
+
t0 = stated(options);
|
|
347
|
+
$[1] = options;
|
|
348
|
+
$[2] = t0;
|
|
349
|
+
} else t0 = $[2];
|
|
350
|
+
const t1 = options.id ?? generated;
|
|
351
|
+
let t2;
|
|
352
|
+
if ($[3] !== t0 || $[4] !== t1) {
|
|
353
|
+
t2 = {
|
|
354
|
+
...t0,
|
|
355
|
+
id: t1
|
|
356
|
+
};
|
|
357
|
+
$[3] = t0;
|
|
358
|
+
$[4] = t1;
|
|
359
|
+
$[5] = t2;
|
|
360
|
+
} else t2 = $[5];
|
|
361
|
+
const service = useMachine(menu.machine, t2);
|
|
362
|
+
let t3;
|
|
363
|
+
if ($[6] !== service) {
|
|
364
|
+
t3 = menu.connect(service, normalizeProps);
|
|
365
|
+
$[6] = service;
|
|
366
|
+
$[7] = t3;
|
|
367
|
+
} else t3 = $[7];
|
|
368
|
+
let t4;
|
|
369
|
+
if ($[8] !== service || $[9] !== t3) {
|
|
370
|
+
t4 = [t3, service];
|
|
371
|
+
$[8] = service;
|
|
372
|
+
$[9] = t3;
|
|
373
|
+
$[10] = t4;
|
|
374
|
+
} else t4 = $[10];
|
|
375
|
+
return t4;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Registers a menu with the one it opens from, so the two move as a nest.
|
|
379
|
+
*
|
|
380
|
+
* @remarks
|
|
381
|
+
* Each machine holds the other, which is what lets a pointer travel from a row into the submenu
|
|
382
|
+
* it opened without the submenu closing under it, and what sends the focus back up on the arrow
|
|
383
|
+
* key that closes it. The machines are registered rather than the apis, and a machine keeps the
|
|
384
|
+
* same identity for as long as its root is drawn, so the pair is registered once however often
|
|
385
|
+
* either menu redraws. The apis are read from the machines here rather than passed in, because a
|
|
386
|
+
* connected api is a fresh object on every draw and would register the pair again each time.
|
|
387
|
+
* @param service - The machine of the menu being registered.
|
|
388
|
+
* @param parent - The machine of the menu it opens from, or undefined where there is none.
|
|
389
|
+
*/
|
|
390
|
+
function useNestedMenu(service, parent) {
|
|
391
|
+
const $ = c(5);
|
|
392
|
+
if ($[0] !== "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3") {
|
|
393
|
+
for (let $i = 0; $i < 5; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
394
|
+
$[0] = "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3";
|
|
395
|
+
}
|
|
396
|
+
let t0;
|
|
397
|
+
let t1;
|
|
398
|
+
if ($[1] !== parent || $[2] !== service) {
|
|
399
|
+
t0 = () => {
|
|
400
|
+
if (parent === void 0) return;
|
|
401
|
+
menu.connect(parent, normalizeProps).setChild(service);
|
|
402
|
+
menu.connect(service, normalizeProps).setParent(parent);
|
|
403
|
+
};
|
|
404
|
+
t1 = [parent, service];
|
|
405
|
+
$[1] = parent;
|
|
406
|
+
$[2] = service;
|
|
407
|
+
$[3] = t0;
|
|
408
|
+
$[4] = t1;
|
|
409
|
+
} else {
|
|
410
|
+
t0 = $[3];
|
|
411
|
+
t1 = $[4];
|
|
412
|
+
}
|
|
413
|
+
useEffect(t0, t1);
|
|
414
|
+
}
|
|
415
|
+
//#endregion
|
|
416
|
+
//#region src/menu/arrow-tip.tsx
|
|
417
|
+
/**
|
|
418
|
+
* Draws the square at the look the root states.
|
|
419
|
+
*/
|
|
420
|
+
const Tipped = withContext$3("div", "arrowTip");
|
|
421
|
+
/**
|
|
422
|
+
* Gives the point its shape.
|
|
423
|
+
*
|
|
424
|
+
* @param props - Everything a styled div takes.
|
|
425
|
+
* @returns The square, carrying the place the machine measured.
|
|
426
|
+
*/
|
|
427
|
+
function ArrowTip$2(props) {
|
|
428
|
+
const $ = c(6);
|
|
429
|
+
if ($[0] !== "7dfc989fa0fa500395a4ea26eeeea8e1a20b76d1e65e23d95da538666e9d6279") {
|
|
430
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
431
|
+
$[0] = "7dfc989fa0fa500395a4ea26eeeea8e1a20b76d1e65e23d95da538666e9d6279";
|
|
432
|
+
}
|
|
433
|
+
const { api } = useMenu();
|
|
434
|
+
let t0;
|
|
435
|
+
if ($[1] !== api || $[2] !== props) {
|
|
436
|
+
t0 = mergeProps(api.getArrowTipProps(), props);
|
|
437
|
+
$[1] = api;
|
|
438
|
+
$[2] = props;
|
|
439
|
+
$[3] = t0;
|
|
440
|
+
} else t0 = $[3];
|
|
441
|
+
let t1;
|
|
442
|
+
if ($[4] !== t0) {
|
|
443
|
+
t1 = /* @__PURE__ */ jsx(Tipped, { ...t0 });
|
|
444
|
+
$[4] = t0;
|
|
445
|
+
$[5] = t1;
|
|
446
|
+
} else t1 = $[5];
|
|
447
|
+
return t1;
|
|
448
|
+
}
|
|
449
|
+
//#endregion
|
|
450
|
+
//#region src/menu/arrow.tsx
|
|
451
|
+
/**
|
|
452
|
+
* Draws the point at the size the root states.
|
|
453
|
+
*/
|
|
454
|
+
const Pointed = withContext$3("div", "arrow");
|
|
455
|
+
/**
|
|
456
|
+
* Points from the panel back at the control.
|
|
457
|
+
*
|
|
458
|
+
* @param props - Everything a styled div takes.
|
|
459
|
+
* @returns The point, carrying the place the machine measured.
|
|
460
|
+
*/
|
|
461
|
+
function Arrow$2(props) {
|
|
462
|
+
const $ = c(6);
|
|
463
|
+
if ($[0] !== "a78a147320cc5b488a59b5aacb321c3a756f280cd6a5af6846f4a4088734e9b9") {
|
|
464
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
465
|
+
$[0] = "a78a147320cc5b488a59b5aacb321c3a756f280cd6a5af6846f4a4088734e9b9";
|
|
466
|
+
}
|
|
467
|
+
const { api } = useMenu();
|
|
468
|
+
let t0;
|
|
469
|
+
if ($[1] !== api || $[2] !== props) {
|
|
470
|
+
t0 = mergeProps(api.getArrowProps(), props);
|
|
471
|
+
$[1] = api;
|
|
472
|
+
$[2] = props;
|
|
473
|
+
$[3] = t0;
|
|
474
|
+
} else t0 = $[3];
|
|
475
|
+
let t1;
|
|
476
|
+
if ($[4] !== t0) {
|
|
477
|
+
t1 = /* @__PURE__ */ jsx(Pointed, { ...t0 });
|
|
478
|
+
$[4] = t0;
|
|
479
|
+
$[5] = t1;
|
|
480
|
+
} else t1 = $[5];
|
|
481
|
+
return t1;
|
|
482
|
+
}
|
|
483
|
+
//#endregion
|
|
484
|
+
//#region src/menu/content.tsx
|
|
485
|
+
/**
|
|
486
|
+
* Draws the panel at the size the root states.
|
|
487
|
+
*/
|
|
488
|
+
const Drawn$10 = withContext$3("div", "content");
|
|
489
|
+
/**
|
|
490
|
+
* Shows the rows of the menu.
|
|
491
|
+
*
|
|
492
|
+
* @param props - Everything a styled div takes.
|
|
493
|
+
* @returns The panel, carrying what the machine writes onto it.
|
|
494
|
+
*/
|
|
495
|
+
function Content$3(props) {
|
|
496
|
+
const $ = c(6);
|
|
497
|
+
if ($[0] !== "eef2461df84475297c85db0dfb9f1f71a378d6a11e488950fd890ba4a9539608") {
|
|
498
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
499
|
+
$[0] = "eef2461df84475297c85db0dfb9f1f71a378d6a11e488950fd890ba4a9539608";
|
|
500
|
+
}
|
|
501
|
+
const { api } = useMenu();
|
|
502
|
+
let t0;
|
|
503
|
+
if ($[1] !== api || $[2] !== props) {
|
|
504
|
+
t0 = mergeProps(api.getContentProps(), props);
|
|
505
|
+
$[1] = api;
|
|
506
|
+
$[2] = props;
|
|
507
|
+
$[3] = t0;
|
|
508
|
+
} else t0 = $[3];
|
|
509
|
+
let t1;
|
|
510
|
+
if ($[4] !== t0) {
|
|
511
|
+
t1 = /* @__PURE__ */ jsx(Drawn$10, { ...t0 });
|
|
512
|
+
$[4] = t0;
|
|
513
|
+
$[5] = t1;
|
|
514
|
+
} else t1 = $[5];
|
|
515
|
+
return t1;
|
|
516
|
+
}
|
|
517
|
+
//#endregion
|
|
518
|
+
//#region src/menu/context-trigger.tsx
|
|
519
|
+
/**
|
|
520
|
+
* Draws the region at the size the root states.
|
|
521
|
+
*/
|
|
522
|
+
const Held = withContext$3("div", "contextTrigger");
|
|
523
|
+
/**
|
|
524
|
+
* Opens the menu where the pointer is.
|
|
525
|
+
*
|
|
526
|
+
* @param props - The name of this region, and everything a styled div takes.
|
|
527
|
+
* @returns The region, carrying what the machine writes onto it.
|
|
528
|
+
*/
|
|
529
|
+
function ContextTrigger(t0) {
|
|
530
|
+
const $ = c(4);
|
|
531
|
+
if ($[0] !== "83e4e11d90a34335e7675b15070e8dcbde5becaf4c925e12048935afcfa67cfd") {
|
|
532
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
533
|
+
$[0] = "83e4e11d90a34335e7675b15070e8dcbde5becaf4c925e12048935afcfa67cfd";
|
|
534
|
+
}
|
|
535
|
+
const { value, ...rest } = t0;
|
|
536
|
+
const { api } = useMenu();
|
|
537
|
+
const named = value === void 0 ? {} : { value };
|
|
538
|
+
const T0 = Held;
|
|
539
|
+
const t1 = mergeProps(api.getContextTriggerProps(named), rest);
|
|
540
|
+
let t2;
|
|
541
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
542
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
543
|
+
$[1] = T0;
|
|
544
|
+
$[2] = t1;
|
|
545
|
+
$[3] = t2;
|
|
546
|
+
} else t2 = $[3];
|
|
547
|
+
return t2;
|
|
548
|
+
}
|
|
549
|
+
//#endregion
|
|
550
|
+
//#region src/menu/indicator.tsx
|
|
551
|
+
/**
|
|
552
|
+
* Draws the mark at the size the root states.
|
|
553
|
+
*/
|
|
554
|
+
const Marked$1 = withContext$3("div", "indicator");
|
|
555
|
+
/**
|
|
556
|
+
* Says whether the menu is open.
|
|
557
|
+
*
|
|
558
|
+
* @param props - Everything a styled div takes.
|
|
559
|
+
* @returns The mark, carrying the open state.
|
|
560
|
+
*/
|
|
561
|
+
function Indicator$2(props) {
|
|
562
|
+
const $ = c(6);
|
|
563
|
+
if ($[0] !== "70df40e4ab9c4446536c5d86bde5718671edc500caabb396e0136169b693af2f") {
|
|
564
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
565
|
+
$[0] = "70df40e4ab9c4446536c5d86bde5718671edc500caabb396e0136169b693af2f";
|
|
566
|
+
}
|
|
567
|
+
const { api } = useMenu();
|
|
568
|
+
let t0;
|
|
569
|
+
if ($[1] !== api || $[2] !== props) {
|
|
570
|
+
t0 = mergeProps(api.getIndicatorProps(), props);
|
|
571
|
+
$[1] = api;
|
|
572
|
+
$[2] = props;
|
|
573
|
+
$[3] = t0;
|
|
574
|
+
} else t0 = $[3];
|
|
575
|
+
let t1;
|
|
576
|
+
if ($[4] !== t0) {
|
|
577
|
+
t1 = /* @__PURE__ */ jsx(Marked$1, { ...t0 });
|
|
578
|
+
$[4] = t0;
|
|
579
|
+
$[5] = t1;
|
|
580
|
+
} else t1 = $[5];
|
|
581
|
+
return t1;
|
|
582
|
+
}
|
|
583
|
+
//#endregion
|
|
584
|
+
//#region src/menu/item-group-label.tsx
|
|
585
|
+
/**
|
|
586
|
+
* Draws the heading at the size the root states.
|
|
587
|
+
*/
|
|
588
|
+
const Titled = withContext$3("div", "itemGroupLabel");
|
|
589
|
+
/**
|
|
590
|
+
* Says what the rows below it have in common.
|
|
591
|
+
*
|
|
592
|
+
* @param props - The name the set shares, beside everything a styled div takes.
|
|
593
|
+
* @returns The heading, carrying what the machine writes onto it.
|
|
594
|
+
*/
|
|
595
|
+
function ItemGroupLabel(t0) {
|
|
596
|
+
const $ = c(4);
|
|
597
|
+
if ($[0] !== "5558e4b3b825147610a3797f6b1f70830c23e8a7d99ec38cccb2c099c763f5ab") {
|
|
598
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
599
|
+
$[0] = "5558e4b3b825147610a3797f6b1f70830c23e8a7d99ec38cccb2c099c763f5ab";
|
|
600
|
+
}
|
|
601
|
+
const { value, ...rest } = t0;
|
|
602
|
+
const { api } = useMenu();
|
|
603
|
+
const T0 = Titled;
|
|
604
|
+
const t1 = mergeProps(api.getItemGroupLabelProps({ htmlFor: value }), rest);
|
|
605
|
+
let t2;
|
|
606
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
607
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
608
|
+
$[1] = T0;
|
|
609
|
+
$[2] = t1;
|
|
610
|
+
$[3] = t2;
|
|
611
|
+
} else t2 = $[3];
|
|
612
|
+
return t2;
|
|
613
|
+
}
|
|
614
|
+
//#endregion
|
|
615
|
+
//#region src/menu/item-group.tsx
|
|
616
|
+
/**
|
|
617
|
+
* Draws the set at the size the root states.
|
|
618
|
+
*/
|
|
619
|
+
const Grouped = withContext$3("div", "itemGroup");
|
|
620
|
+
/**
|
|
621
|
+
* Groups the rows that belong together.
|
|
622
|
+
*
|
|
623
|
+
* @param props - The name the label shares, beside everything a styled div takes.
|
|
624
|
+
* @returns The set, carrying what the machine writes onto it.
|
|
625
|
+
*/
|
|
626
|
+
function ItemGroup(t0) {
|
|
627
|
+
const $ = c(4);
|
|
628
|
+
if ($[0] !== "c7cb003c4f14e367e7619ffbfd66bcd8b425ad6c061eb57ecaf42ed0b329ea78") {
|
|
629
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
630
|
+
$[0] = "c7cb003c4f14e367e7619ffbfd66bcd8b425ad6c061eb57ecaf42ed0b329ea78";
|
|
631
|
+
}
|
|
632
|
+
const { value, ...rest } = t0;
|
|
633
|
+
const { api } = useMenu();
|
|
634
|
+
const T0 = Grouped;
|
|
635
|
+
const t1 = mergeProps(api.getItemGroupProps({ id: value }), rest);
|
|
636
|
+
let t2;
|
|
637
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
638
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
639
|
+
$[1] = T0;
|
|
640
|
+
$[2] = t1;
|
|
641
|
+
$[3] = t2;
|
|
642
|
+
} else t2 = $[3];
|
|
643
|
+
return t2;
|
|
644
|
+
}
|
|
645
|
+
//#endregion
|
|
646
|
+
//#region src/menu/item-indicator.tsx
|
|
647
|
+
/**
|
|
648
|
+
* Draws the mark at the size the root states.
|
|
649
|
+
*/
|
|
650
|
+
const Marked = withContext$3("span", "itemIndicator");
|
|
651
|
+
/**
|
|
652
|
+
* Says the row is on.
|
|
653
|
+
*
|
|
654
|
+
* @param props - Everything a styled span takes.
|
|
655
|
+
* @returns The mark, carrying the row's state.
|
|
656
|
+
*/
|
|
657
|
+
function ItemIndicator(props) {
|
|
658
|
+
const $ = c(7);
|
|
659
|
+
if ($[0] !== "8d196d458fd29245612162ea15b2c759f98162d354c0f65bbc448e6633656990") {
|
|
660
|
+
for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
661
|
+
$[0] = "8d196d458fd29245612162ea15b2c759f98162d354c0f65bbc448e6633656990";
|
|
662
|
+
}
|
|
663
|
+
const { api } = useMenu();
|
|
664
|
+
const item = useMenuItem();
|
|
665
|
+
let t0;
|
|
666
|
+
if ($[1] !== api || $[2] !== item || $[3] !== props) {
|
|
667
|
+
t0 = mergeProps({ "aria-hidden": true }, api.getItemIndicatorProps(item), props);
|
|
668
|
+
$[1] = api;
|
|
669
|
+
$[2] = item;
|
|
670
|
+
$[3] = props;
|
|
671
|
+
$[4] = t0;
|
|
672
|
+
} else t0 = $[4];
|
|
673
|
+
let t1;
|
|
674
|
+
if ($[5] !== t0) {
|
|
675
|
+
t1 = /* @__PURE__ */ jsx(Marked, { ...t0 });
|
|
676
|
+
$[5] = t0;
|
|
677
|
+
$[6] = t1;
|
|
678
|
+
} else t1 = $[6];
|
|
679
|
+
return t1;
|
|
680
|
+
}
|
|
681
|
+
//#endregion
|
|
682
|
+
//#region src/menu/item-text.tsx
|
|
683
|
+
/**
|
|
684
|
+
* Draws the words at the size the root states.
|
|
685
|
+
*/
|
|
686
|
+
const Worded = withContext$3("span", "itemText");
|
|
687
|
+
/**
|
|
688
|
+
* Says what the row offers.
|
|
689
|
+
*
|
|
690
|
+
* @param props - Everything a styled span takes.
|
|
691
|
+
* @returns The words, carrying the row's state.
|
|
692
|
+
*/
|
|
693
|
+
function ItemText(props) {
|
|
694
|
+
const $ = c(7);
|
|
695
|
+
if ($[0] !== "bfc380eb7ae7d8c3c4b7c66d5a511f3c332f812d78eac182a1761940b91766d6") {
|
|
696
|
+
for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
697
|
+
$[0] = "bfc380eb7ae7d8c3c4b7c66d5a511f3c332f812d78eac182a1761940b91766d6";
|
|
698
|
+
}
|
|
699
|
+
const { api } = useMenu();
|
|
700
|
+
const item = useMenuItem();
|
|
701
|
+
let t0;
|
|
702
|
+
if ($[1] !== api || $[2] !== item || $[3] !== props) {
|
|
703
|
+
t0 = mergeProps(api.getItemTextProps(item), props);
|
|
704
|
+
$[1] = api;
|
|
705
|
+
$[2] = item;
|
|
706
|
+
$[3] = props;
|
|
707
|
+
$[4] = t0;
|
|
708
|
+
} else t0 = $[4];
|
|
709
|
+
let t1;
|
|
710
|
+
if ($[5] !== t0) {
|
|
711
|
+
t1 = /* @__PURE__ */ jsx(Worded, { ...t0 });
|
|
712
|
+
$[5] = t0;
|
|
713
|
+
$[6] = t1;
|
|
714
|
+
} else t1 = $[6];
|
|
715
|
+
return t1;
|
|
716
|
+
}
|
|
717
|
+
//#endregion
|
|
718
|
+
//#region src/menu/item.tsx
|
|
719
|
+
/**
|
|
720
|
+
* Draws the row at the size the root states.
|
|
721
|
+
*/
|
|
722
|
+
const Chosen$1 = withContext$3("div", "item");
|
|
723
|
+
/**
|
|
724
|
+
* Offers one thing a reader can choose.
|
|
725
|
+
*
|
|
726
|
+
* @param props - The row's name and purpose, beside everything a styled div takes.
|
|
727
|
+
* @returns The row, carrying what the machine writes onto it.
|
|
728
|
+
*/
|
|
729
|
+
function Item(t0) {
|
|
730
|
+
const $ = c(4);
|
|
731
|
+
if ($[0] !== "df27aa8fc4df06f24adb3dc83d050ff157c0d312b109009040230833be9f5d6d") {
|
|
732
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
733
|
+
$[0] = "df27aa8fc4df06f24adb3dc83d050ff157c0d312b109009040230833be9f5d6d";
|
|
734
|
+
}
|
|
735
|
+
const { closeOnSelect, disabled, tone, value, valueText, ...rest } = t0;
|
|
736
|
+
const { api } = useMenu();
|
|
737
|
+
const state = {
|
|
738
|
+
...closeOnSelect === void 0 ? {} : { closeOnSelect },
|
|
739
|
+
...disabled === void 0 ? {} : { disabled },
|
|
740
|
+
...valueText === void 0 ? {} : { valueText },
|
|
741
|
+
value
|
|
742
|
+
};
|
|
743
|
+
const T0 = Chosen$1;
|
|
744
|
+
const t1 = mergeProps(api.getItemProps(state), { "data-tone": tone }, rest);
|
|
745
|
+
let t2;
|
|
746
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
747
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
748
|
+
$[1] = T0;
|
|
749
|
+
$[2] = t1;
|
|
750
|
+
$[3] = t2;
|
|
751
|
+
} else t2 = $[3];
|
|
752
|
+
return /* @__PURE__ */ jsx(ItemProvider, {
|
|
753
|
+
value: state,
|
|
754
|
+
children: t2
|
|
755
|
+
});
|
|
756
|
+
}
|
|
757
|
+
//#endregion
|
|
758
|
+
//#region src/menu/option-item.tsx
|
|
759
|
+
/**
|
|
760
|
+
* Draws the row at the size the root states, in the same slot as a plain row.
|
|
761
|
+
*/
|
|
762
|
+
const Chosen = withContext$3("div", "item");
|
|
763
|
+
/**
|
|
764
|
+
* Offers one thing a reader can turn on.
|
|
765
|
+
*
|
|
766
|
+
* @param props - The choice the row carries, beside everything a styled div takes.
|
|
767
|
+
* @returns The row, carrying what the machine writes onto it.
|
|
768
|
+
*/
|
|
769
|
+
function OptionItem(t0) {
|
|
770
|
+
const $ = c(4);
|
|
771
|
+
if ($[0] !== "80d97f29451c03e5b5e606dc49bad4b167094d006d1005ffec08c54617aa8659") {
|
|
772
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
773
|
+
$[0] = "80d97f29451c03e5b5e606dc49bad4b167094d006d1005ffec08c54617aa8659";
|
|
774
|
+
}
|
|
775
|
+
const { checked, closeOnSelect, disabled, onCheckedChange, tone, type, value, valueText, ...rest } = t0;
|
|
776
|
+
const { api } = useMenu();
|
|
777
|
+
const state = {
|
|
778
|
+
...closeOnSelect === void 0 ? {} : { closeOnSelect },
|
|
779
|
+
...disabled === void 0 ? {} : { disabled },
|
|
780
|
+
...onCheckedChange === void 0 ? {} : { onCheckedChange },
|
|
781
|
+
...valueText === void 0 ? {} : { valueText },
|
|
782
|
+
checked,
|
|
783
|
+
type,
|
|
784
|
+
value
|
|
785
|
+
};
|
|
786
|
+
const T0 = Chosen;
|
|
787
|
+
const t1 = mergeProps(api.getOptionItemProps(state), { "data-tone": tone }, rest);
|
|
788
|
+
let t2;
|
|
789
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
790
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
791
|
+
$[1] = T0;
|
|
792
|
+
$[2] = t1;
|
|
793
|
+
$[3] = t2;
|
|
794
|
+
} else t2 = $[3];
|
|
795
|
+
return /* @__PURE__ */ jsx(ItemProvider, {
|
|
796
|
+
value: state,
|
|
797
|
+
children: t2
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
//#endregion
|
|
801
|
+
//#region src/menu/positioner.tsx
|
|
802
|
+
/**
|
|
803
|
+
* Draws the box at the size the root states.
|
|
804
|
+
*/
|
|
805
|
+
const Placed$2 = withContext$3("div", "positioner");
|
|
806
|
+
/**
|
|
807
|
+
* Places the panel against the control.
|
|
808
|
+
*
|
|
809
|
+
* @param props - Everything a styled div takes.
|
|
810
|
+
* @returns The box, carrying the position the machine measured.
|
|
811
|
+
*/
|
|
812
|
+
function Positioner$2(props) {
|
|
813
|
+
const $ = c(6);
|
|
814
|
+
if ($[0] !== "9527b5772e1640028d3b6e460f67465c41b2ba57f934b0e4ef9920a84689fb2a") {
|
|
815
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
816
|
+
$[0] = "9527b5772e1640028d3b6e460f67465c41b2ba57f934b0e4ef9920a84689fb2a";
|
|
817
|
+
}
|
|
818
|
+
const { api } = useMenu();
|
|
819
|
+
let t0;
|
|
820
|
+
if ($[1] !== api || $[2] !== props) {
|
|
821
|
+
t0 = mergeProps(api.getPositionerProps(), props);
|
|
822
|
+
$[1] = api;
|
|
823
|
+
$[2] = props;
|
|
824
|
+
$[3] = t0;
|
|
825
|
+
} else t0 = $[3];
|
|
826
|
+
let t1;
|
|
827
|
+
if ($[4] !== t0) {
|
|
828
|
+
t1 = /* @__PURE__ */ jsx(Placed$2, { ...t0 });
|
|
829
|
+
$[4] = t0;
|
|
830
|
+
$[5] = t1;
|
|
831
|
+
} else t1 = $[5];
|
|
832
|
+
return t1;
|
|
833
|
+
}
|
|
834
|
+
//#endregion
|
|
835
|
+
//#region src/menu/root.tsx
|
|
836
|
+
/**
|
|
837
|
+
* Draws the element that sets the variants every part below it reads, and no box.
|
|
838
|
+
*/
|
|
839
|
+
const Framed$3 = withProvider$3("div", "root");
|
|
840
|
+
/**
|
|
841
|
+
* Opens a list of things a reader chooses from, beside the control that opens it.
|
|
842
|
+
*
|
|
843
|
+
* @param props - The machine's settings, the recipe's variants and the element's props together.
|
|
844
|
+
* @returns The parts, under the running machine.
|
|
845
|
+
*/
|
|
846
|
+
function Root$3(props) {
|
|
847
|
+
const $ = c(18);
|
|
848
|
+
if ($[0] !== "2ed886f598e5e2c7360104e4f5e012a99b5af32a2a62a5a7cd9aab54e35d4266") {
|
|
849
|
+
for (let $i = 0; $i < 18; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
850
|
+
$[0] = "2ed886f598e5e2c7360104e4f5e012a99b5af32a2a62a5a7cd9aab54e35d4266";
|
|
851
|
+
}
|
|
852
|
+
const parent = useEnclosingMenu();
|
|
853
|
+
let options;
|
|
854
|
+
let t0;
|
|
855
|
+
if ($[1] !== props) {
|
|
856
|
+
const [t1, rest] = splitMenuProps(props);
|
|
857
|
+
options = t1;
|
|
858
|
+
t0 = splitMenuVariants(rest);
|
|
859
|
+
$[1] = props;
|
|
860
|
+
$[2] = options;
|
|
861
|
+
$[3] = t0;
|
|
862
|
+
} else {
|
|
863
|
+
options = $[2];
|
|
864
|
+
t0 = $[3];
|
|
865
|
+
}
|
|
866
|
+
const [picked, others] = t0;
|
|
867
|
+
const [api, service] = useMenuMachine(options);
|
|
868
|
+
const t1 = parent?.variants;
|
|
869
|
+
let t2;
|
|
870
|
+
if ($[4] !== picked || $[5] !== t1) {
|
|
871
|
+
t2 = {
|
|
872
|
+
...t1,
|
|
873
|
+
...picked
|
|
874
|
+
};
|
|
875
|
+
$[4] = picked;
|
|
876
|
+
$[5] = t1;
|
|
877
|
+
$[6] = t2;
|
|
878
|
+
} else t2 = $[6];
|
|
879
|
+
const variants = t2;
|
|
880
|
+
useNestedMenu(service, parent?.service);
|
|
881
|
+
let t3;
|
|
882
|
+
if ($[7] !== api || $[8] !== parent || $[9] !== service || $[10] !== variants) {
|
|
883
|
+
t3 = {
|
|
884
|
+
api,
|
|
885
|
+
parent,
|
|
886
|
+
service,
|
|
887
|
+
variants
|
|
888
|
+
};
|
|
889
|
+
$[7] = api;
|
|
890
|
+
$[8] = parent;
|
|
891
|
+
$[9] = service;
|
|
892
|
+
$[10] = variants;
|
|
893
|
+
$[11] = t3;
|
|
894
|
+
} else t3 = $[11];
|
|
895
|
+
let t4;
|
|
896
|
+
if ($[12] !== others || $[13] !== variants) {
|
|
897
|
+
t4 = /* @__PURE__ */ jsx(Framed$3, {
|
|
898
|
+
...variants,
|
|
899
|
+
...others
|
|
900
|
+
});
|
|
901
|
+
$[12] = others;
|
|
902
|
+
$[13] = variants;
|
|
903
|
+
$[14] = t4;
|
|
904
|
+
} else t4 = $[14];
|
|
905
|
+
let t5;
|
|
906
|
+
if ($[15] !== t3 || $[16] !== t4) {
|
|
907
|
+
t5 = /* @__PURE__ */ jsx(ApiProvider$3, {
|
|
908
|
+
value: t3,
|
|
909
|
+
children: t4
|
|
910
|
+
});
|
|
911
|
+
$[15] = t3;
|
|
912
|
+
$[16] = t4;
|
|
913
|
+
$[17] = t5;
|
|
914
|
+
} else t5 = $[17];
|
|
915
|
+
return t5;
|
|
916
|
+
}
|
|
917
|
+
//#endregion
|
|
918
|
+
//#region src/menu/separator.tsx
|
|
919
|
+
/**
|
|
920
|
+
* Draws the line at the size the root states.
|
|
921
|
+
*/
|
|
922
|
+
const Ruled = withContext$3("div", "separator");
|
|
923
|
+
/**
|
|
924
|
+
* Breaks the rows into sets.
|
|
925
|
+
*
|
|
926
|
+
* @param props - Everything a styled div takes.
|
|
927
|
+
* @returns The line, carrying what the machine writes onto it.
|
|
928
|
+
*/
|
|
929
|
+
function Separator(props) {
|
|
930
|
+
const $ = c(6);
|
|
931
|
+
if ($[0] !== "e73ae042863fca750ea32f92df9ce28299f5bca7b0c8e008bdb123c5e7c768c7") {
|
|
932
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
933
|
+
$[0] = "e73ae042863fca750ea32f92df9ce28299f5bca7b0c8e008bdb123c5e7c768c7";
|
|
934
|
+
}
|
|
935
|
+
const { api } = useMenu();
|
|
936
|
+
let t0;
|
|
937
|
+
if ($[1] !== api || $[2] !== props) {
|
|
938
|
+
t0 = mergeProps(api.getSeparatorProps(), props);
|
|
939
|
+
$[1] = api;
|
|
940
|
+
$[2] = props;
|
|
941
|
+
$[3] = t0;
|
|
942
|
+
} else t0 = $[3];
|
|
943
|
+
let t1;
|
|
944
|
+
if ($[4] !== t0) {
|
|
945
|
+
t1 = /* @__PURE__ */ jsx(Ruled, { ...t0 });
|
|
946
|
+
$[4] = t0;
|
|
947
|
+
$[5] = t1;
|
|
948
|
+
} else t1 = $[5];
|
|
949
|
+
return t1;
|
|
950
|
+
}
|
|
951
|
+
//#endregion
|
|
952
|
+
//#region src/menu/trigger-item.tsx
|
|
953
|
+
/**
|
|
954
|
+
* Draws the row at the size the root states.
|
|
955
|
+
*/
|
|
956
|
+
const Pressed$3 = withContext$3("button", "triggerItem");
|
|
957
|
+
/**
|
|
958
|
+
* Opens a submenu from a row of the menu above it.
|
|
959
|
+
*
|
|
960
|
+
* @param props - Everything a styled button takes.
|
|
961
|
+
* @returns The row, carrying what both machines write onto it.
|
|
962
|
+
* @throws {@link Error} Where the menu it belongs to opens from no other menu.
|
|
963
|
+
*/
|
|
964
|
+
function TriggerItem(props) {
|
|
965
|
+
const $ = c(7);
|
|
966
|
+
if ($[0] !== "01636e6911ec33af84338f67be3f448a13702cd94f390f74603b79964a7aefe7") {
|
|
967
|
+
for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
968
|
+
$[0] = "01636e6911ec33af84338f67be3f448a13702cd94f390f74603b79964a7aefe7";
|
|
969
|
+
}
|
|
970
|
+
const { api, parent } = useMenu();
|
|
971
|
+
if (parent === void 0) throw new Error("Menu.TriggerItem was drawn in a menu that opens from no other menu.");
|
|
972
|
+
let t0;
|
|
973
|
+
if ($[1] !== api || $[2] !== parent.api || $[3] !== props) {
|
|
974
|
+
t0 = mergeProps(parent.api.getTriggerItemProps(api), props);
|
|
975
|
+
$[1] = api;
|
|
976
|
+
$[2] = parent.api;
|
|
977
|
+
$[3] = props;
|
|
978
|
+
$[4] = t0;
|
|
979
|
+
} else t0 = $[4];
|
|
980
|
+
let t1;
|
|
981
|
+
if ($[5] !== t0) {
|
|
982
|
+
t1 = /* @__PURE__ */ jsx(Pressed$3, { ...t0 });
|
|
983
|
+
$[5] = t0;
|
|
984
|
+
$[6] = t1;
|
|
985
|
+
} else t1 = $[6];
|
|
986
|
+
return t1;
|
|
987
|
+
}
|
|
988
|
+
//#endregion
|
|
989
|
+
//#region src/menu/trigger.tsx
|
|
990
|
+
/**
|
|
991
|
+
* Draws the control at the size the root states.
|
|
992
|
+
*/
|
|
993
|
+
const Pressed$2 = withContext$3("button", "trigger");
|
|
994
|
+
/**
|
|
995
|
+
* Opens the menu.
|
|
996
|
+
*
|
|
997
|
+
* @param props - The name of this control, and everything a styled button takes.
|
|
998
|
+
* @returns The control, carrying what the machine writes onto it.
|
|
999
|
+
*/
|
|
1000
|
+
function Trigger$3(t0) {
|
|
1001
|
+
const $ = c(4);
|
|
1002
|
+
if ($[0] !== "54a6411cb66675f22697008ac78fc5ee2093b32ee87912e3e4a72d2e50cb5f54") {
|
|
1003
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1004
|
+
$[0] = "54a6411cb66675f22697008ac78fc5ee2093b32ee87912e3e4a72d2e50cb5f54";
|
|
1005
|
+
}
|
|
1006
|
+
const { value, ...rest } = t0;
|
|
1007
|
+
const { api } = useMenu();
|
|
1008
|
+
const named = value === void 0 ? {} : { value };
|
|
1009
|
+
const T0 = Pressed$2;
|
|
1010
|
+
const t1 = mergeProps(api.getTriggerProps(named), rest);
|
|
1011
|
+
let t2;
|
|
1012
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
1013
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
1014
|
+
$[1] = T0;
|
|
1015
|
+
$[2] = t1;
|
|
1016
|
+
$[3] = t2;
|
|
1017
|
+
} else t2 = $[3];
|
|
1018
|
+
return t2;
|
|
1019
|
+
}
|
|
1020
|
+
//#endregion
|
|
1021
|
+
//#region src/menu/index.ts
|
|
1022
|
+
var menu_exports = /* @__PURE__ */ __exportAll({
|
|
1023
|
+
Arrow: () => Arrow$2,
|
|
1024
|
+
ArrowTip: () => ArrowTip$2,
|
|
1025
|
+
Content: () => Content$3,
|
|
1026
|
+
ContextTrigger: () => ContextTrigger,
|
|
1027
|
+
Indicator: () => Indicator$2,
|
|
1028
|
+
Item: () => Item,
|
|
1029
|
+
ItemGroup: () => ItemGroup,
|
|
1030
|
+
ItemGroupLabel: () => ItemGroupLabel,
|
|
1031
|
+
ItemIndicator: () => ItemIndicator,
|
|
1032
|
+
ItemText: () => ItemText,
|
|
1033
|
+
OptionItem: () => OptionItem,
|
|
1034
|
+
Positioner: () => Positioner$2,
|
|
1035
|
+
Root: () => Root$3,
|
|
1036
|
+
Separator: () => Separator,
|
|
1037
|
+
Trigger: () => Trigger$3,
|
|
1038
|
+
TriggerItem: () => TriggerItem
|
|
1039
|
+
});
|
|
1040
|
+
//#endregion
|
|
1041
|
+
//#region src/popover/context.ts
|
|
1042
|
+
/**
|
|
1043
|
+
* Binds the popover's recipe to the elements that draw its parts.
|
|
1044
|
+
*
|
|
1045
|
+
* @remarks
|
|
1046
|
+
* Apart from the recipe, because an application's compiler reads the recipe at build time and
|
|
1047
|
+
* the binding needs the runtime. Apart from the machine, because the recipe decides how a part
|
|
1048
|
+
* is drawn and the machine decides what it does.
|
|
1049
|
+
*/
|
|
1050
|
+
/**
|
|
1051
|
+
* Binds the recipe once. The root provides the variants and every other part reads them.
|
|
1052
|
+
*/
|
|
1053
|
+
const { withContext: withContext$2, withProvider: withProvider$2 } = createSlotRecipeContext(recipe$2);
|
|
1054
|
+
//#endregion
|
|
1055
|
+
//#region src/popover/machine.ts
|
|
1056
|
+
/**
|
|
1057
|
+
* Runs the popover's machine and carries what it answers down to the parts.
|
|
1058
|
+
*
|
|
1059
|
+
* @remarks
|
|
1060
|
+
* The machine is connected once, at the root, so every part reads one api from one running
|
|
1061
|
+
* machine. A part drawn outside the root throws where it was written rather than drawing wrongly
|
|
1062
|
+
* and saying nothing.
|
|
1063
|
+
* The id is the machine's and never an element's. It names the panel, the heading and the
|
|
1064
|
+
* paragraph, and points the panel at the last two, so a caller naming their own passes it here
|
|
1065
|
+
* and every reference follows.
|
|
1066
|
+
*/
|
|
1067
|
+
/**
|
|
1068
|
+
* Hands the running machine to every part, and reads it back.
|
|
1069
|
+
*/
|
|
1070
|
+
const [ApiProvider$2, usePopover] = createRequiredContext("Popover");
|
|
1071
|
+
/**
|
|
1072
|
+
* Splits what the machine reads from what the element does.
|
|
1073
|
+
*
|
|
1074
|
+
* @remarks
|
|
1075
|
+
* The machine states which props are its own, so the root never lists them and never drifts from
|
|
1076
|
+
* the version it is built against.
|
|
1077
|
+
*/
|
|
1078
|
+
const splitPopoverProps = popover.splitProps;
|
|
1079
|
+
/**
|
|
1080
|
+
* Starts the machine and connects it.
|
|
1081
|
+
*
|
|
1082
|
+
* @param options - The settings the caller handed the root, less the id where it named none.
|
|
1083
|
+
* @returns The api every part reads.
|
|
1084
|
+
*/
|
|
1085
|
+
function usePopoverMachine(options) {
|
|
1086
|
+
const $ = c(6);
|
|
1087
|
+
if ($[0] !== "07237b25b6cd0f2a016f2fc275546b90a78ae248b823795f5fe556b71a4546b4") {
|
|
1088
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1089
|
+
$[0] = "07237b25b6cd0f2a016f2fc275546b90a78ae248b823795f5fe556b71a4546b4";
|
|
1090
|
+
}
|
|
1091
|
+
const generated = useId();
|
|
1092
|
+
let t0;
|
|
1093
|
+
if ($[1] !== options) {
|
|
1094
|
+
t0 = stated(options);
|
|
1095
|
+
$[1] = options;
|
|
1096
|
+
$[2] = t0;
|
|
1097
|
+
} else t0 = $[2];
|
|
1098
|
+
const t1 = options.id ?? generated;
|
|
1099
|
+
let t2;
|
|
1100
|
+
if ($[3] !== t0 || $[4] !== t1) {
|
|
1101
|
+
t2 = {
|
|
1102
|
+
...t0,
|
|
1103
|
+
id: t1
|
|
1104
|
+
};
|
|
1105
|
+
$[3] = t0;
|
|
1106
|
+
$[4] = t1;
|
|
1107
|
+
$[5] = t2;
|
|
1108
|
+
} else t2 = $[5];
|
|
1109
|
+
return popover.connect(useMachine(popover.machine, t2), normalizeProps);
|
|
1110
|
+
}
|
|
1111
|
+
//#endregion
|
|
1112
|
+
//#region src/popover/anchor.tsx
|
|
1113
|
+
/**
|
|
1114
|
+
* Draws the part at the size the root states.
|
|
1115
|
+
*/
|
|
1116
|
+
const Drawn$9 = withContext$2("div", "anchor");
|
|
1117
|
+
/**
|
|
1118
|
+
* Marks what the panel is positioned against, where that is not the control.
|
|
1119
|
+
*
|
|
1120
|
+
* @param props - Everything a styled div takes.
|
|
1121
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1122
|
+
*/
|
|
1123
|
+
function Anchor(props) {
|
|
1124
|
+
const $ = c(6);
|
|
1125
|
+
if ($[0] !== "f10b3522f812bb7832eb602a9a4f85c673877f745f45335d0e3e3e4c3af68a35") {
|
|
1126
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1127
|
+
$[0] = "f10b3522f812bb7832eb602a9a4f85c673877f745f45335d0e3e3e4c3af68a35";
|
|
1128
|
+
}
|
|
1129
|
+
const api = usePopover();
|
|
1130
|
+
let t0;
|
|
1131
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1132
|
+
t0 = mergeProps(api.getAnchorProps(), props);
|
|
1133
|
+
$[1] = api;
|
|
1134
|
+
$[2] = props;
|
|
1135
|
+
$[3] = t0;
|
|
1136
|
+
} else t0 = $[3];
|
|
1137
|
+
let t1;
|
|
1138
|
+
if ($[4] !== t0) {
|
|
1139
|
+
t1 = /* @__PURE__ */ jsx(Drawn$9, { ...t0 });
|
|
1140
|
+
$[4] = t0;
|
|
1141
|
+
$[5] = t1;
|
|
1142
|
+
} else t1 = $[5];
|
|
1143
|
+
return t1;
|
|
1144
|
+
}
|
|
1145
|
+
//#endregion
|
|
1146
|
+
//#region src/popover/arrow-tip.tsx
|
|
1147
|
+
/**
|
|
1148
|
+
* Draws the part at the size the root states.
|
|
1149
|
+
*/
|
|
1150
|
+
const Drawn$8 = withContext$2("div", "arrowTip");
|
|
1151
|
+
/**
|
|
1152
|
+
* Draws the turned square inside the point.
|
|
1153
|
+
*
|
|
1154
|
+
* @param props - Everything a styled div takes.
|
|
1155
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1156
|
+
*/
|
|
1157
|
+
function ArrowTip$1(props) {
|
|
1158
|
+
const $ = c(6);
|
|
1159
|
+
if ($[0] !== "3e675def7ae1350a8fca011297aca811b53efec749376daa56cd96c4a382b34b") {
|
|
1160
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1161
|
+
$[0] = "3e675def7ae1350a8fca011297aca811b53efec749376daa56cd96c4a382b34b";
|
|
1162
|
+
}
|
|
1163
|
+
const api = usePopover();
|
|
1164
|
+
let t0;
|
|
1165
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1166
|
+
t0 = mergeProps(api.getArrowTipProps(), props);
|
|
1167
|
+
$[1] = api;
|
|
1168
|
+
$[2] = props;
|
|
1169
|
+
$[3] = t0;
|
|
1170
|
+
} else t0 = $[3];
|
|
1171
|
+
let t1;
|
|
1172
|
+
if ($[4] !== t0) {
|
|
1173
|
+
t1 = /* @__PURE__ */ jsx(Drawn$8, { ...t0 });
|
|
1174
|
+
$[4] = t0;
|
|
1175
|
+
$[5] = t1;
|
|
1176
|
+
} else t1 = $[5];
|
|
1177
|
+
return t1;
|
|
1178
|
+
}
|
|
1179
|
+
//#endregion
|
|
1180
|
+
//#region src/popover/arrow.tsx
|
|
1181
|
+
/**
|
|
1182
|
+
* Draws the part at the size the root states.
|
|
1183
|
+
*/
|
|
1184
|
+
const Drawn$7 = withContext$2("div", "arrow");
|
|
1185
|
+
/**
|
|
1186
|
+
* Draws the point that ties the panel to its control.
|
|
1187
|
+
*
|
|
1188
|
+
* @param props - Everything a styled div takes.
|
|
1189
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1190
|
+
*/
|
|
1191
|
+
function Arrow$1(props) {
|
|
1192
|
+
const $ = c(6);
|
|
1193
|
+
if ($[0] !== "927cd832f29a4a97038695b85b3095201491e6815fff7aca082bd8c863818912") {
|
|
1194
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1195
|
+
$[0] = "927cd832f29a4a97038695b85b3095201491e6815fff7aca082bd8c863818912";
|
|
1196
|
+
}
|
|
1197
|
+
const api = usePopover();
|
|
1198
|
+
let t0;
|
|
1199
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1200
|
+
t0 = mergeProps(api.getArrowProps(), props);
|
|
1201
|
+
$[1] = api;
|
|
1202
|
+
$[2] = props;
|
|
1203
|
+
$[3] = t0;
|
|
1204
|
+
} else t0 = $[3];
|
|
1205
|
+
let t1;
|
|
1206
|
+
if ($[4] !== t0) {
|
|
1207
|
+
t1 = /* @__PURE__ */ jsx(Drawn$7, { ...t0 });
|
|
1208
|
+
$[4] = t0;
|
|
1209
|
+
$[5] = t1;
|
|
1210
|
+
} else t1 = $[5];
|
|
1211
|
+
return t1;
|
|
1212
|
+
}
|
|
1213
|
+
//#endregion
|
|
1214
|
+
//#region src/popover/close-trigger.tsx
|
|
1215
|
+
/**
|
|
1216
|
+
* Draws the part at the size the root states.
|
|
1217
|
+
*/
|
|
1218
|
+
const Drawn$6 = withContext$2("button", "closeTrigger");
|
|
1219
|
+
/**
|
|
1220
|
+
* Draws the control that shuts the panel.
|
|
1221
|
+
*
|
|
1222
|
+
* @param props - Everything a styled button takes.
|
|
1223
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1224
|
+
*/
|
|
1225
|
+
function CloseTrigger(props) {
|
|
1226
|
+
const $ = c(6);
|
|
1227
|
+
if ($[0] !== "40dcb1168820711e40165251e3142a822e88492f85a4f31108ba8929b84819ea") {
|
|
1228
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1229
|
+
$[0] = "40dcb1168820711e40165251e3142a822e88492f85a4f31108ba8929b84819ea";
|
|
1230
|
+
}
|
|
1231
|
+
const api = usePopover();
|
|
1232
|
+
let t0;
|
|
1233
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1234
|
+
t0 = mergeProps(api.getCloseTriggerProps(), props);
|
|
1235
|
+
$[1] = api;
|
|
1236
|
+
$[2] = props;
|
|
1237
|
+
$[3] = t0;
|
|
1238
|
+
} else t0 = $[3];
|
|
1239
|
+
let t1;
|
|
1240
|
+
if ($[4] !== t0) {
|
|
1241
|
+
t1 = /* @__PURE__ */ jsx(Drawn$6, { ...t0 });
|
|
1242
|
+
$[4] = t0;
|
|
1243
|
+
$[5] = t1;
|
|
1244
|
+
} else t1 = $[5];
|
|
1245
|
+
return t1;
|
|
1246
|
+
}
|
|
1247
|
+
//#endregion
|
|
1248
|
+
//#region src/popover/content.tsx
|
|
1249
|
+
/**
|
|
1250
|
+
* Draws the part at the size the root states.
|
|
1251
|
+
*/
|
|
1252
|
+
const Drawn$5 = withContext$2("div", "content");
|
|
1253
|
+
/**
|
|
1254
|
+
* Draws the panel itself.
|
|
1255
|
+
*
|
|
1256
|
+
* @param props - Everything a styled div takes.
|
|
1257
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1258
|
+
*/
|
|
1259
|
+
function Content$2(props) {
|
|
1260
|
+
const $ = c(6);
|
|
1261
|
+
if ($[0] !== "a3677eb8a798c905d7a1c7a45c69664e79e4286781c173cd9fe14bf3898989c2") {
|
|
1262
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1263
|
+
$[0] = "a3677eb8a798c905d7a1c7a45c69664e79e4286781c173cd9fe14bf3898989c2";
|
|
1264
|
+
}
|
|
1265
|
+
const api = usePopover();
|
|
1266
|
+
let t0;
|
|
1267
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1268
|
+
t0 = mergeProps(api.getContentProps(), props);
|
|
1269
|
+
$[1] = api;
|
|
1270
|
+
$[2] = props;
|
|
1271
|
+
$[3] = t0;
|
|
1272
|
+
} else t0 = $[3];
|
|
1273
|
+
let t1;
|
|
1274
|
+
if ($[4] !== t0) {
|
|
1275
|
+
t1 = /* @__PURE__ */ jsx(Drawn$5, { ...t0 });
|
|
1276
|
+
$[4] = t0;
|
|
1277
|
+
$[5] = t1;
|
|
1278
|
+
} else t1 = $[5];
|
|
1279
|
+
return t1;
|
|
1280
|
+
}
|
|
1281
|
+
//#endregion
|
|
1282
|
+
//#region src/popover/description.tsx
|
|
1283
|
+
/**
|
|
1284
|
+
* Draws the part at the size the root states.
|
|
1285
|
+
*/
|
|
1286
|
+
const Drawn$4 = withContext$2("p", "description");
|
|
1287
|
+
/**
|
|
1288
|
+
* Draws the paragraph the panel is described by.
|
|
1289
|
+
*
|
|
1290
|
+
* @param props - Everything a styled p takes.
|
|
1291
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1292
|
+
*/
|
|
1293
|
+
function Description(props) {
|
|
1294
|
+
const $ = c(6);
|
|
1295
|
+
if ($[0] !== "d545ce922e741f565f6be1c3f6d557ad93e41a547a17628e5dba344381d781b7") {
|
|
1296
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1297
|
+
$[0] = "d545ce922e741f565f6be1c3f6d557ad93e41a547a17628e5dba344381d781b7";
|
|
1298
|
+
}
|
|
1299
|
+
const api = usePopover();
|
|
1300
|
+
let t0;
|
|
1301
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1302
|
+
t0 = mergeProps(api.getDescriptionProps(), props);
|
|
1303
|
+
$[1] = api;
|
|
1304
|
+
$[2] = props;
|
|
1305
|
+
$[3] = t0;
|
|
1306
|
+
} else t0 = $[3];
|
|
1307
|
+
let t1;
|
|
1308
|
+
if ($[4] !== t0) {
|
|
1309
|
+
t1 = /* @__PURE__ */ jsx(Drawn$4, { ...t0 });
|
|
1310
|
+
$[4] = t0;
|
|
1311
|
+
$[5] = t1;
|
|
1312
|
+
} else t1 = $[5];
|
|
1313
|
+
return t1;
|
|
1314
|
+
}
|
|
1315
|
+
//#endregion
|
|
1316
|
+
//#region src/popover/indicator.tsx
|
|
1317
|
+
/**
|
|
1318
|
+
* Draws the part at the size the root states.
|
|
1319
|
+
*/
|
|
1320
|
+
const Drawn$3 = withContext$2("span", "indicator");
|
|
1321
|
+
/**
|
|
1322
|
+
* Draws the mark that turns as the panel opens.
|
|
1323
|
+
*
|
|
1324
|
+
* @param props - Everything a styled span takes.
|
|
1325
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1326
|
+
*/
|
|
1327
|
+
function Indicator$1(props) {
|
|
1328
|
+
const $ = c(6);
|
|
1329
|
+
if ($[0] !== "7050f80b93d1e1f8d988ad604a2ab87473253c34927cb7c0032d3d8a97e129c3") {
|
|
1330
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1331
|
+
$[0] = "7050f80b93d1e1f8d988ad604a2ab87473253c34927cb7c0032d3d8a97e129c3";
|
|
1332
|
+
}
|
|
1333
|
+
const api = usePopover();
|
|
1334
|
+
let t0;
|
|
1335
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1336
|
+
t0 = mergeProps(api.getIndicatorProps(), props);
|
|
1337
|
+
$[1] = api;
|
|
1338
|
+
$[2] = props;
|
|
1339
|
+
$[3] = t0;
|
|
1340
|
+
} else t0 = $[3];
|
|
1341
|
+
let t1;
|
|
1342
|
+
if ($[4] !== t0) {
|
|
1343
|
+
t1 = /* @__PURE__ */ jsx(Drawn$3, { ...t0 });
|
|
1344
|
+
$[4] = t0;
|
|
1345
|
+
$[5] = t1;
|
|
1346
|
+
} else t1 = $[5];
|
|
1347
|
+
return t1;
|
|
1348
|
+
}
|
|
1349
|
+
//#endregion
|
|
1350
|
+
//#region src/popover/positioner.tsx
|
|
1351
|
+
/**
|
|
1352
|
+
* Draws the part at the size the root states.
|
|
1353
|
+
*/
|
|
1354
|
+
const Drawn$2 = withContext$2("div", "positioner");
|
|
1355
|
+
/**
|
|
1356
|
+
* Draws the box that holds the panel in place beside its control.
|
|
1357
|
+
*
|
|
1358
|
+
* @param props - Everything a styled div takes.
|
|
1359
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1360
|
+
*/
|
|
1361
|
+
function Positioner$1(props) {
|
|
1362
|
+
const $ = c(6);
|
|
1363
|
+
if ($[0] !== "cf70c4549698228d3e1b1d257b2bf04c5ce1e3640c89d8802051c24abd6e4943") {
|
|
1364
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1365
|
+
$[0] = "cf70c4549698228d3e1b1d257b2bf04c5ce1e3640c89d8802051c24abd6e4943";
|
|
1366
|
+
}
|
|
1367
|
+
const api = usePopover();
|
|
1368
|
+
let t0;
|
|
1369
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1370
|
+
t0 = mergeProps(api.getPositionerProps(), props);
|
|
1371
|
+
$[1] = api;
|
|
1372
|
+
$[2] = props;
|
|
1373
|
+
$[3] = t0;
|
|
1374
|
+
} else t0 = $[3];
|
|
1375
|
+
let t1;
|
|
1376
|
+
if ($[4] !== t0) {
|
|
1377
|
+
t1 = /* @__PURE__ */ jsx(Drawn$2, { ...t0 });
|
|
1378
|
+
$[4] = t0;
|
|
1379
|
+
$[5] = t1;
|
|
1380
|
+
} else t1 = $[5];
|
|
1381
|
+
return t1;
|
|
1382
|
+
}
|
|
1383
|
+
//#endregion
|
|
1384
|
+
//#region src/popover/root.tsx
|
|
1385
|
+
/**
|
|
1386
|
+
* Draws the element that sets the variants every part below it reads, and no box.
|
|
1387
|
+
*/
|
|
1388
|
+
const Framed$2 = withProvider$2("div", "root");
|
|
1389
|
+
/**
|
|
1390
|
+
* Opens a panel beside a control.
|
|
1391
|
+
*
|
|
1392
|
+
* @param props - The machine's settings, the recipe's variants and the element's props together.
|
|
1393
|
+
* @returns The parts, under the running machine.
|
|
1394
|
+
*/
|
|
1395
|
+
function Root$2(props) {
|
|
1396
|
+
const $ = c(8);
|
|
1397
|
+
if ($[0] !== "d5137affd462daa03422209b1762a1f48785d61ac089f6fb171c96392452eb32") {
|
|
1398
|
+
for (let $i = 0; $i < 8; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1399
|
+
$[0] = "d5137affd462daa03422209b1762a1f48785d61ac089f6fb171c96392452eb32";
|
|
1400
|
+
}
|
|
1401
|
+
let t0;
|
|
1402
|
+
if ($[1] !== props) {
|
|
1403
|
+
t0 = splitPopoverProps(props);
|
|
1404
|
+
$[1] = props;
|
|
1405
|
+
$[2] = t0;
|
|
1406
|
+
} else t0 = $[2];
|
|
1407
|
+
const [options, rest] = t0;
|
|
1408
|
+
const api = usePopoverMachine(options);
|
|
1409
|
+
let t1;
|
|
1410
|
+
if ($[3] !== rest) {
|
|
1411
|
+
t1 = /* @__PURE__ */ jsx(Framed$2, { ...rest });
|
|
1412
|
+
$[3] = rest;
|
|
1413
|
+
$[4] = t1;
|
|
1414
|
+
} else t1 = $[4];
|
|
1415
|
+
let t2;
|
|
1416
|
+
if ($[5] !== api || $[6] !== t1) {
|
|
1417
|
+
t2 = /* @__PURE__ */ jsx(ApiProvider$2, {
|
|
1418
|
+
value: api,
|
|
1419
|
+
children: t1
|
|
1420
|
+
});
|
|
1421
|
+
$[5] = api;
|
|
1422
|
+
$[6] = t1;
|
|
1423
|
+
$[7] = t2;
|
|
1424
|
+
} else t2 = $[7];
|
|
1425
|
+
return t2;
|
|
1426
|
+
}
|
|
1427
|
+
//#endregion
|
|
1428
|
+
//#region src/popover/title.tsx
|
|
1429
|
+
/**
|
|
1430
|
+
* Draws the part at the size the root states.
|
|
1431
|
+
*/
|
|
1432
|
+
const Drawn$1 = withContext$2("h2", "title");
|
|
1433
|
+
/**
|
|
1434
|
+
* Draws the heading the panel is announced by.
|
|
1435
|
+
*
|
|
1436
|
+
* @param props - Everything a styled h2 takes.
|
|
1437
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1438
|
+
*/
|
|
1439
|
+
function Title(props) {
|
|
1440
|
+
const $ = c(6);
|
|
1441
|
+
if ($[0] !== "557a3eae145f56fb9ea0e3650eaebef1aea856d5e2afc24c487ad49ef1c31596") {
|
|
1442
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1443
|
+
$[0] = "557a3eae145f56fb9ea0e3650eaebef1aea856d5e2afc24c487ad49ef1c31596";
|
|
1444
|
+
}
|
|
1445
|
+
const api = usePopover();
|
|
1446
|
+
let t0;
|
|
1447
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1448
|
+
t0 = mergeProps(api.getTitleProps(), props);
|
|
1449
|
+
$[1] = api;
|
|
1450
|
+
$[2] = props;
|
|
1451
|
+
$[3] = t0;
|
|
1452
|
+
} else t0 = $[3];
|
|
1453
|
+
let t1;
|
|
1454
|
+
if ($[4] !== t0) {
|
|
1455
|
+
t1 = /* @__PURE__ */ jsx(Drawn$1, { ...t0 });
|
|
1456
|
+
$[4] = t0;
|
|
1457
|
+
$[5] = t1;
|
|
1458
|
+
} else t1 = $[5];
|
|
1459
|
+
return t1;
|
|
1460
|
+
}
|
|
1461
|
+
//#endregion
|
|
1462
|
+
//#region src/popover/trigger.tsx
|
|
1463
|
+
/**
|
|
1464
|
+
* Draws the part at the size the root states.
|
|
1465
|
+
*/
|
|
1466
|
+
const Drawn = withContext$2("button", "trigger");
|
|
1467
|
+
/**
|
|
1468
|
+
* Draws the control that opens the panel.
|
|
1469
|
+
*
|
|
1470
|
+
* @param props - Everything a styled button takes.
|
|
1471
|
+
* @returns The part, carrying what the machine writes onto it.
|
|
1472
|
+
*/
|
|
1473
|
+
function Trigger$2(props) {
|
|
1474
|
+
const $ = c(6);
|
|
1475
|
+
if ($[0] !== "b697978bd86bd74807e8f06ef20f1c47d08b97d3bfa5d4ee47f8fa5e1a0e3f80") {
|
|
1476
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1477
|
+
$[0] = "b697978bd86bd74807e8f06ef20f1c47d08b97d3bfa5d4ee47f8fa5e1a0e3f80";
|
|
1478
|
+
}
|
|
1479
|
+
const api = usePopover();
|
|
1480
|
+
let t0;
|
|
1481
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1482
|
+
t0 = mergeProps(api.getTriggerProps(), props);
|
|
1483
|
+
$[1] = api;
|
|
1484
|
+
$[2] = props;
|
|
1485
|
+
$[3] = t0;
|
|
1486
|
+
} else t0 = $[3];
|
|
1487
|
+
let t1;
|
|
1488
|
+
if ($[4] !== t0) {
|
|
1489
|
+
t1 = /* @__PURE__ */ jsx(Drawn, { ...t0 });
|
|
1490
|
+
$[4] = t0;
|
|
1491
|
+
$[5] = t1;
|
|
1492
|
+
} else t1 = $[5];
|
|
1493
|
+
return t1;
|
|
1494
|
+
}
|
|
1495
|
+
//#endregion
|
|
1496
|
+
//#region src/popover/index.ts
|
|
1497
|
+
var popover_exports = /* @__PURE__ */ __exportAll({
|
|
1498
|
+
Anchor: () => Anchor,
|
|
1499
|
+
Arrow: () => Arrow$1,
|
|
1500
|
+
ArrowTip: () => ArrowTip$1,
|
|
1501
|
+
CloseTrigger: () => CloseTrigger,
|
|
1502
|
+
Content: () => Content$2,
|
|
1503
|
+
Description: () => Description,
|
|
1504
|
+
Indicator: () => Indicator$1,
|
|
1505
|
+
Positioner: () => Positioner$1,
|
|
1506
|
+
Root: () => Root$2,
|
|
1507
|
+
Title: () => Title,
|
|
1508
|
+
Trigger: () => Trigger$2
|
|
1509
|
+
});
|
|
1510
|
+
//#endregion
|
|
1511
|
+
//#region src/tabs/context.ts
|
|
1512
|
+
/**
|
|
1513
|
+
* Binds the tabs' recipe to the elements that draw their parts.
|
|
1514
|
+
*
|
|
1515
|
+
* @remarks
|
|
1516
|
+
* Apart from the recipe, because an application's compiler reads the recipe at build time and
|
|
1517
|
+
* the binding needs the runtime. Apart from the machine, because the recipe decides how a part
|
|
1518
|
+
* is drawn and the machine decides what it does.
|
|
1519
|
+
*/
|
|
1520
|
+
/**
|
|
1521
|
+
* Binds the recipe once. The root provides the variants and every other part reads them.
|
|
1522
|
+
*/
|
|
1523
|
+
const { withContext: withContext$1, withProvider: withProvider$1 } = createSlotRecipeContext(recipe$3);
|
|
1524
|
+
//#endregion
|
|
1525
|
+
//#region src/tabs/machine.ts
|
|
1526
|
+
/**
|
|
1527
|
+
* Runs the tabs' machine and carries what it answers down to the parts.
|
|
1528
|
+
*
|
|
1529
|
+
* @remarks
|
|
1530
|
+
* The machine is connected once, at the root, so every part reads one api from one running
|
|
1531
|
+
* machine. A part drawn outside the root throws where it was written rather than drawing wrongly
|
|
1532
|
+
* and saying nothing.
|
|
1533
|
+
* The id is the machine's and never an element's. It builds the ARIA references between each tab
|
|
1534
|
+
* and its panel from it, so a caller naming their own passes it here and the references follow.
|
|
1535
|
+
*/
|
|
1536
|
+
/**
|
|
1537
|
+
* Hands the running machine to every part, and reads it back.
|
|
1538
|
+
*/
|
|
1539
|
+
const [ApiProvider$1, useTabs] = createRequiredContext("Tabs");
|
|
1540
|
+
/**
|
|
1541
|
+
* Splits what the machine reads from what the element does.
|
|
1542
|
+
*
|
|
1543
|
+
* @remarks
|
|
1544
|
+
* The machine states which props are its own, so the root never lists them and never drifts from
|
|
1545
|
+
* the version it is built against.
|
|
1546
|
+
*/
|
|
1547
|
+
const splitTabsProps = tabs.splitProps;
|
|
1548
|
+
/**
|
|
1549
|
+
* Starts the machine and connects it.
|
|
1550
|
+
*
|
|
1551
|
+
* @param options - The settings the caller handed the root, less the id where it named none.
|
|
1552
|
+
* @returns The api every part reads.
|
|
1553
|
+
*/
|
|
1554
|
+
function useTabsMachine(options) {
|
|
1555
|
+
const $ = c(6);
|
|
1556
|
+
if ($[0] !== "94a8deada56596db391819591e2fa2664e640bfb7ca0f99f6c7a39561868f603") {
|
|
1557
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1558
|
+
$[0] = "94a8deada56596db391819591e2fa2664e640bfb7ca0f99f6c7a39561868f603";
|
|
1559
|
+
}
|
|
1560
|
+
const generated = useId();
|
|
1561
|
+
let t0;
|
|
1562
|
+
if ($[1] !== options) {
|
|
1563
|
+
t0 = stated(options);
|
|
1564
|
+
$[1] = options;
|
|
1565
|
+
$[2] = t0;
|
|
1566
|
+
} else t0 = $[2];
|
|
1567
|
+
const t1 = options.id ?? generated;
|
|
1568
|
+
let t2;
|
|
1569
|
+
if ($[3] !== t0 || $[4] !== t1) {
|
|
1570
|
+
t2 = {
|
|
1571
|
+
...t0,
|
|
1572
|
+
id: t1
|
|
1573
|
+
};
|
|
1574
|
+
$[3] = t0;
|
|
1575
|
+
$[4] = t1;
|
|
1576
|
+
$[5] = t2;
|
|
1577
|
+
} else t2 = $[5];
|
|
1578
|
+
return tabs.connect(useMachine(tabs.machine, t2), normalizeProps);
|
|
1579
|
+
}
|
|
1580
|
+
//#endregion
|
|
1581
|
+
//#region src/tabs/content.tsx
|
|
1582
|
+
/**
|
|
1583
|
+
* Draws the panel at the room the root states.
|
|
1584
|
+
*/
|
|
1585
|
+
const Shown = withContext$1("div", "content");
|
|
1586
|
+
/**
|
|
1587
|
+
* Appears while the control it names is the one in force.
|
|
1588
|
+
*
|
|
1589
|
+
* @param props - The control it names, and everything a styled div takes.
|
|
1590
|
+
* @returns The panel, named and hidden by the machine.
|
|
1591
|
+
*/
|
|
1592
|
+
function Content$1(t0) {
|
|
1593
|
+
const $ = c(4);
|
|
1594
|
+
if ($[0] !== "8f05634a7956fcbf2377e6b06117a39cefa46fc6cef394b584a835a7ffa0ee01") {
|
|
1595
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1596
|
+
$[0] = "8f05634a7956fcbf2377e6b06117a39cefa46fc6cef394b584a835a7ffa0ee01";
|
|
1597
|
+
}
|
|
1598
|
+
const { value, ...rest } = t0;
|
|
1599
|
+
const api = useTabs();
|
|
1600
|
+
const T0 = Shown;
|
|
1601
|
+
const t1 = mergeProps(api.getContentProps({ value }), rest);
|
|
1602
|
+
let t2;
|
|
1603
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
1604
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
1605
|
+
$[1] = T0;
|
|
1606
|
+
$[2] = t1;
|
|
1607
|
+
$[3] = t2;
|
|
1608
|
+
} else t2 = $[3];
|
|
1609
|
+
return t2;
|
|
1610
|
+
}
|
|
1611
|
+
//#endregion
|
|
1612
|
+
//#region src/tabs/indicator.tsx
|
|
1613
|
+
/**
|
|
1614
|
+
* Draws the bar at the thickness the look states.
|
|
1615
|
+
*/
|
|
1616
|
+
const Bar = withContext$1("div", "indicator");
|
|
1617
|
+
/**
|
|
1618
|
+
* Moves to whichever control is in force.
|
|
1619
|
+
*
|
|
1620
|
+
* @param props - Everything a styled div takes.
|
|
1621
|
+
* @returns The bar, positioned by the machine.
|
|
1622
|
+
*/
|
|
1623
|
+
function Indicator(props) {
|
|
1624
|
+
const $ = c(6);
|
|
1625
|
+
if ($[0] !== "c6d7185c69c5fa0f22ab0f8678b8f61895bfc48170e0c8157a32f3d24fcb3f87") {
|
|
1626
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1627
|
+
$[0] = "c6d7185c69c5fa0f22ab0f8678b8f61895bfc48170e0c8157a32f3d24fcb3f87";
|
|
1628
|
+
}
|
|
1629
|
+
const api = useTabs();
|
|
1630
|
+
let t0;
|
|
1631
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1632
|
+
t0 = mergeProps(api.getIndicatorProps(), props);
|
|
1633
|
+
$[1] = api;
|
|
1634
|
+
$[2] = props;
|
|
1635
|
+
$[3] = t0;
|
|
1636
|
+
} else t0 = $[3];
|
|
1637
|
+
let t1;
|
|
1638
|
+
if ($[4] !== t0) {
|
|
1639
|
+
t1 = /* @__PURE__ */ jsx(Bar, { ...t0 });
|
|
1640
|
+
$[4] = t0;
|
|
1641
|
+
$[5] = t1;
|
|
1642
|
+
} else t1 = $[5];
|
|
1643
|
+
return t1;
|
|
1644
|
+
}
|
|
1645
|
+
//#endregion
|
|
1646
|
+
//#region src/tabs/list.tsx
|
|
1647
|
+
/**
|
|
1648
|
+
* Draws the strip, which turns into a column where the set runs down.
|
|
1649
|
+
*/
|
|
1650
|
+
const Strip = withContext$1("div", "list");
|
|
1651
|
+
/**
|
|
1652
|
+
* Draws the controls in a row, with the bar that marks the one in force.
|
|
1653
|
+
*
|
|
1654
|
+
* @param props - Everything a styled div takes.
|
|
1655
|
+
* @returns The strip, carrying its role and its orientation.
|
|
1656
|
+
*/
|
|
1657
|
+
function List(props) {
|
|
1658
|
+
const $ = c(6);
|
|
1659
|
+
if ($[0] !== "3a24f1077c1e2de479b60caa1b5785aa04a7e89a5856793e4392859f814c4665") {
|
|
1660
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1661
|
+
$[0] = "3a24f1077c1e2de479b60caa1b5785aa04a7e89a5856793e4392859f814c4665";
|
|
1662
|
+
}
|
|
1663
|
+
const api = useTabs();
|
|
1664
|
+
let t0;
|
|
1665
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1666
|
+
t0 = mergeProps(api.getListProps(), props);
|
|
1667
|
+
$[1] = api;
|
|
1668
|
+
$[2] = props;
|
|
1669
|
+
$[3] = t0;
|
|
1670
|
+
} else t0 = $[3];
|
|
1671
|
+
let t1;
|
|
1672
|
+
if ($[4] !== t0) {
|
|
1673
|
+
t1 = /* @__PURE__ */ jsx(Strip, { ...t0 });
|
|
1674
|
+
$[4] = t0;
|
|
1675
|
+
$[5] = t1;
|
|
1676
|
+
} else t1 = $[5];
|
|
1677
|
+
return t1;
|
|
1678
|
+
}
|
|
1679
|
+
//#endregion
|
|
1680
|
+
//#region src/tabs/root.tsx
|
|
1681
|
+
/**
|
|
1682
|
+
* Draws the frame and sets the variants every part below it reads.
|
|
1683
|
+
*/
|
|
1684
|
+
const Framed$1 = withProvider$1("div", "root");
|
|
1685
|
+
/**
|
|
1686
|
+
* Shows one panel at a time, chosen from a strip of controls.
|
|
1687
|
+
*
|
|
1688
|
+
* @param props - The machine's options, the recipe's variants and the element's props together.
|
|
1689
|
+
* @returns The frame, holding the parts, under the running machine.
|
|
1690
|
+
*/
|
|
1691
|
+
function Root$1(props) {
|
|
1692
|
+
const $ = c(11);
|
|
1693
|
+
if ($[0] !== "eec89bf7a552ca5dee5524841219b07e4ab3d7d4de7b1fb332feb07a3b422178") {
|
|
1694
|
+
for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1695
|
+
$[0] = "eec89bf7a552ca5dee5524841219b07e4ab3d7d4de7b1fb332feb07a3b422178";
|
|
1696
|
+
}
|
|
1697
|
+
let t0;
|
|
1698
|
+
if ($[1] !== props) {
|
|
1699
|
+
t0 = splitTabsProps(props);
|
|
1700
|
+
$[1] = props;
|
|
1701
|
+
$[2] = t0;
|
|
1702
|
+
} else t0 = $[2];
|
|
1703
|
+
const [options, rest] = t0;
|
|
1704
|
+
const api = useTabsMachine(options);
|
|
1705
|
+
let t1;
|
|
1706
|
+
if ($[3] !== api) {
|
|
1707
|
+
t1 = api.getRootProps();
|
|
1708
|
+
$[3] = api;
|
|
1709
|
+
$[4] = t1;
|
|
1710
|
+
} else t1 = $[4];
|
|
1711
|
+
let t2;
|
|
1712
|
+
if ($[5] !== rest || $[6] !== t1) {
|
|
1713
|
+
t2 = /* @__PURE__ */ jsx(Framed$1, {
|
|
1714
|
+
...rest,
|
|
1715
|
+
...t1
|
|
1716
|
+
});
|
|
1717
|
+
$[5] = rest;
|
|
1718
|
+
$[6] = t1;
|
|
1719
|
+
$[7] = t2;
|
|
1720
|
+
} else t2 = $[7];
|
|
1721
|
+
let t3;
|
|
1722
|
+
if ($[8] !== api || $[9] !== t2) {
|
|
1723
|
+
t3 = /* @__PURE__ */ jsx(ApiProvider$1, {
|
|
1724
|
+
value: api,
|
|
1725
|
+
children: t2
|
|
1726
|
+
});
|
|
1727
|
+
$[8] = api;
|
|
1728
|
+
$[9] = t2;
|
|
1729
|
+
$[10] = t3;
|
|
1730
|
+
} else t3 = $[10];
|
|
1731
|
+
return t3;
|
|
1732
|
+
}
|
|
1733
|
+
//#endregion
|
|
1734
|
+
//#region src/tabs/trigger.tsx
|
|
1735
|
+
/**
|
|
1736
|
+
* Draws the control at the size the root states.
|
|
1737
|
+
*/
|
|
1738
|
+
const Pressed$1 = withContext$1("button", "trigger");
|
|
1739
|
+
/**
|
|
1740
|
+
* Shows the panel it names.
|
|
1741
|
+
*
|
|
1742
|
+
* @param props - The panel it names, and everything a styled button takes.
|
|
1743
|
+
* @returns The control, carrying its role and its selection.
|
|
1744
|
+
*/
|
|
1745
|
+
function Trigger$1(t0) {
|
|
1746
|
+
const $ = c(4);
|
|
1747
|
+
if ($[0] !== "a604dc1c151922b8eeec1776c57015e506bc81cda73b4c006d0cdb9d6808412b") {
|
|
1748
|
+
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1749
|
+
$[0] = "a604dc1c151922b8eeec1776c57015e506bc81cda73b4c006d0cdb9d6808412b";
|
|
1750
|
+
}
|
|
1751
|
+
const { disabled, value, ...rest } = t0;
|
|
1752
|
+
const api = useTabs();
|
|
1753
|
+
const stated = {
|
|
1754
|
+
...disabled === void 0 ? {} : { disabled },
|
|
1755
|
+
value
|
|
1756
|
+
};
|
|
1757
|
+
const T0 = Pressed$1;
|
|
1758
|
+
const t1 = mergeProps(api.getTriggerProps(stated), rest);
|
|
1759
|
+
let t2;
|
|
1760
|
+
if ($[1] !== T0 || $[2] !== t1) {
|
|
1761
|
+
t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
|
|
1762
|
+
$[1] = T0;
|
|
1763
|
+
$[2] = t1;
|
|
1764
|
+
$[3] = t2;
|
|
1765
|
+
} else t2 = $[3];
|
|
1766
|
+
return t2;
|
|
1767
|
+
}
|
|
1768
|
+
//#endregion
|
|
1769
|
+
//#region src/tabs/index.ts
|
|
1770
|
+
var tabs_exports = /* @__PURE__ */ __exportAll({
|
|
1771
|
+
Content: () => Content$1,
|
|
1772
|
+
Indicator: () => Indicator,
|
|
1773
|
+
List: () => List,
|
|
1774
|
+
Root: () => Root$1,
|
|
1775
|
+
Trigger: () => Trigger$1
|
|
1776
|
+
});
|
|
1777
|
+
//#endregion
|
|
1778
|
+
//#region src/tooltip/context.ts
|
|
1779
|
+
/**
|
|
1780
|
+
* Binds the tooltip's recipe to the elements that draw its parts.
|
|
1781
|
+
*
|
|
1782
|
+
* @remarks
|
|
1783
|
+
* Apart from the recipe, because an application's compiler reads the recipe at build time and
|
|
1784
|
+
* the binding needs the runtime. The content provides the variants rather than a root, because
|
|
1785
|
+
* the machine draws no root and the content is the part a caller sizes.
|
|
1786
|
+
*/
|
|
1787
|
+
/**
|
|
1788
|
+
* Binds the recipe once. The content provides the variants and every other part reads them.
|
|
1789
|
+
*/
|
|
1790
|
+
const { withContext, withProvider } = createSlotRecipeContext(recipe$4);
|
|
1791
|
+
//#endregion
|
|
1792
|
+
//#region src/tooltip/machine.ts
|
|
1793
|
+
/**
|
|
1794
|
+
* Runs the tooltip's machine and carries what it answers down to the parts.
|
|
1795
|
+
*
|
|
1796
|
+
* @remarks
|
|
1797
|
+
* The machine is connected once, at the root, so every part reads one api from one running
|
|
1798
|
+
* machine. A part drawn outside the root throws where it was written rather than drawing wrongly
|
|
1799
|
+
* and saying nothing.
|
|
1800
|
+
* The id is the machine's and never an element's. It names the box so the trigger can point at it
|
|
1801
|
+
* with `aria-describedby`, so a caller naming their own passes it here and the reference follows.
|
|
1802
|
+
*/
|
|
1803
|
+
/**
|
|
1804
|
+
* Hands the running machine to every part, and reads it back.
|
|
1805
|
+
*/
|
|
1806
|
+
const [ApiProvider, useTooltip] = createRequiredContext("Tooltip");
|
|
1807
|
+
/**
|
|
1808
|
+
* Splits what the machine reads from what the element does.
|
|
1809
|
+
*
|
|
1810
|
+
* @remarks
|
|
1811
|
+
* The machine states which props are its own, so the root never lists them and never drifts from
|
|
1812
|
+
* the version it is built against.
|
|
1813
|
+
*/
|
|
1814
|
+
const splitTooltipProps = tooltip.splitProps;
|
|
1815
|
+
/**
|
|
1816
|
+
* Starts the machine and connects it.
|
|
1817
|
+
*
|
|
1818
|
+
* @param options - The settings the caller handed the root, less the id where it named none.
|
|
1819
|
+
* @returns The api every part reads.
|
|
1820
|
+
*/
|
|
1821
|
+
function useTooltipMachine(options) {
|
|
1822
|
+
const $ = c(6);
|
|
1823
|
+
if ($[0] !== "12891576f8ad786b205a99dc3c8fed7ccb2b9ed0796f830127c2388ed7ba2f45") {
|
|
1824
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1825
|
+
$[0] = "12891576f8ad786b205a99dc3c8fed7ccb2b9ed0796f830127c2388ed7ba2f45";
|
|
1826
|
+
}
|
|
1827
|
+
const generated = useId();
|
|
1828
|
+
let t0;
|
|
1829
|
+
if ($[1] !== options) {
|
|
1830
|
+
t0 = stated(options);
|
|
1831
|
+
$[1] = options;
|
|
1832
|
+
$[2] = t0;
|
|
1833
|
+
} else t0 = $[2];
|
|
1834
|
+
const t1 = options.id ?? generated;
|
|
1835
|
+
let t2;
|
|
1836
|
+
if ($[3] !== t0 || $[4] !== t1) {
|
|
1837
|
+
t2 = {
|
|
1838
|
+
...t0,
|
|
1839
|
+
id: t1
|
|
1840
|
+
};
|
|
1841
|
+
$[3] = t0;
|
|
1842
|
+
$[4] = t1;
|
|
1843
|
+
$[5] = t2;
|
|
1844
|
+
} else t2 = $[5];
|
|
1845
|
+
return tooltip.connect(useMachine(tooltip.machine, t2), normalizeProps);
|
|
1846
|
+
}
|
|
1847
|
+
//#endregion
|
|
1848
|
+
//#region src/tooltip/arrow-tip.tsx
|
|
1849
|
+
/**
|
|
1850
|
+
* Draws the shape the arrow shows.
|
|
1851
|
+
*/
|
|
1852
|
+
const Turned = withContext("div", "arrowTip");
|
|
1853
|
+
/**
|
|
1854
|
+
* Shows one corner past the edge of the box.
|
|
1855
|
+
*
|
|
1856
|
+
* @param props - Everything a styled div takes.
|
|
1857
|
+
* @returns The tip, turned by the machine.
|
|
1858
|
+
*/
|
|
1859
|
+
function ArrowTip(props) {
|
|
1860
|
+
const $ = c(6);
|
|
1861
|
+
if ($[0] !== "02966bec47df075783b644f5a605f03f20f25254a4520fa03a1ad9ecbb494b81") {
|
|
1862
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1863
|
+
$[0] = "02966bec47df075783b644f5a605f03f20f25254a4520fa03a1ad9ecbb494b81";
|
|
1864
|
+
}
|
|
1865
|
+
const api = useTooltip();
|
|
1866
|
+
let t0;
|
|
1867
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1868
|
+
t0 = mergeProps(api.getArrowTipProps(), props);
|
|
1869
|
+
$[1] = api;
|
|
1870
|
+
$[2] = props;
|
|
1871
|
+
$[3] = t0;
|
|
1872
|
+
} else t0 = $[3];
|
|
1873
|
+
let t1;
|
|
1874
|
+
if ($[4] !== t0) {
|
|
1875
|
+
t1 = /* @__PURE__ */ jsx(Turned, { ...t0 });
|
|
1876
|
+
$[4] = t0;
|
|
1877
|
+
$[5] = t1;
|
|
1878
|
+
} else t1 = $[5];
|
|
1879
|
+
return t1;
|
|
1880
|
+
}
|
|
1881
|
+
//#endregion
|
|
1882
|
+
//#region src/tooltip/arrow.tsx
|
|
1883
|
+
/**
|
|
1884
|
+
* Draws the outer element the machine places.
|
|
1885
|
+
*/
|
|
1886
|
+
const Placed$1 = withContext("div", "arrow");
|
|
1887
|
+
/**
|
|
1888
|
+
* Points from the box back at the control.
|
|
1889
|
+
*
|
|
1890
|
+
* @param props - Everything a styled div takes.
|
|
1891
|
+
* @returns The arrow, placed by the machine.
|
|
1892
|
+
*/
|
|
1893
|
+
function Arrow(props) {
|
|
1894
|
+
const $ = c(6);
|
|
1895
|
+
if ($[0] !== "b5cad0c0b7bd28414e8a778a0b04c80f52f3936417e3f55d7caca8042ba16a91") {
|
|
1896
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1897
|
+
$[0] = "b5cad0c0b7bd28414e8a778a0b04c80f52f3936417e3f55d7caca8042ba16a91";
|
|
1898
|
+
}
|
|
1899
|
+
const api = useTooltip();
|
|
1900
|
+
let t0;
|
|
1901
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1902
|
+
t0 = mergeProps(api.getArrowProps(), props);
|
|
1903
|
+
$[1] = api;
|
|
1904
|
+
$[2] = props;
|
|
1905
|
+
$[3] = t0;
|
|
1906
|
+
} else t0 = $[3];
|
|
1907
|
+
let t1;
|
|
1908
|
+
if ($[4] !== t0) {
|
|
1909
|
+
t1 = /* @__PURE__ */ jsx(Placed$1, { ...t0 });
|
|
1910
|
+
$[4] = t0;
|
|
1911
|
+
$[5] = t1;
|
|
1912
|
+
} else t1 = $[5];
|
|
1913
|
+
return t1;
|
|
1914
|
+
}
|
|
1915
|
+
//#endregion
|
|
1916
|
+
//#region src/tooltip/content.tsx
|
|
1917
|
+
/**
|
|
1918
|
+
* Draws the box at the size the root states.
|
|
1919
|
+
*/
|
|
1920
|
+
const Boxed = withContext("div", "content");
|
|
1921
|
+
/**
|
|
1922
|
+
* Appears beside the control while a pointer rests on it.
|
|
1923
|
+
*
|
|
1924
|
+
* @param props - The recipe's variants, and everything a styled div takes.
|
|
1925
|
+
* @returns The box, named and placed by the machine.
|
|
1926
|
+
*/
|
|
1927
|
+
function Content(props) {
|
|
1928
|
+
const $ = c(6);
|
|
1929
|
+
if ($[0] !== "88fc7ca5611516e5d5faa6d75d9b75e7a224c9ac106ac95be154632b3d7e6493") {
|
|
1930
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1931
|
+
$[0] = "88fc7ca5611516e5d5faa6d75d9b75e7a224c9ac106ac95be154632b3d7e6493";
|
|
1932
|
+
}
|
|
1933
|
+
const api = useTooltip();
|
|
1934
|
+
let t0;
|
|
1935
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1936
|
+
t0 = mergeProps(api.getContentProps(), props);
|
|
1937
|
+
$[1] = api;
|
|
1938
|
+
$[2] = props;
|
|
1939
|
+
$[3] = t0;
|
|
1940
|
+
} else t0 = $[3];
|
|
1941
|
+
let t1;
|
|
1942
|
+
if ($[4] !== t0) {
|
|
1943
|
+
t1 = /* @__PURE__ */ jsx(Boxed, { ...t0 });
|
|
1944
|
+
$[4] = t0;
|
|
1945
|
+
$[5] = t1;
|
|
1946
|
+
} else t1 = $[5];
|
|
1947
|
+
return t1;
|
|
1948
|
+
}
|
|
1949
|
+
//#endregion
|
|
1950
|
+
//#region src/tooltip/positioner.tsx
|
|
1951
|
+
/**
|
|
1952
|
+
* Draws the box the machine positions.
|
|
1953
|
+
*/
|
|
1954
|
+
const Placed = withContext("div", "positioner");
|
|
1955
|
+
/**
|
|
1956
|
+
* Draws the box wherever the machine measured room for it.
|
|
1957
|
+
*
|
|
1958
|
+
* @param props - Everything a styled div takes.
|
|
1959
|
+
* @returns The box, positioned by the machine.
|
|
1960
|
+
*/
|
|
1961
|
+
function Positioner(props) {
|
|
1962
|
+
const $ = c(6);
|
|
1963
|
+
if ($[0] !== "74ea8688d306441e751783062f2f2380d20e37c46b7550f27f648a39ab74a05d") {
|
|
1964
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1965
|
+
$[0] = "74ea8688d306441e751783062f2f2380d20e37c46b7550f27f648a39ab74a05d";
|
|
1966
|
+
}
|
|
1967
|
+
const api = useTooltip();
|
|
1968
|
+
let t0;
|
|
1969
|
+
if ($[1] !== api || $[2] !== props) {
|
|
1970
|
+
t0 = mergeProps(api.getPositionerProps(), props);
|
|
1971
|
+
$[1] = api;
|
|
1972
|
+
$[2] = props;
|
|
1973
|
+
$[3] = t0;
|
|
1974
|
+
} else t0 = $[3];
|
|
1975
|
+
let t1;
|
|
1976
|
+
if ($[4] !== t0) {
|
|
1977
|
+
t1 = /* @__PURE__ */ jsx(Placed, { ...t0 });
|
|
1978
|
+
$[4] = t0;
|
|
1979
|
+
$[5] = t1;
|
|
1980
|
+
} else t1 = $[5];
|
|
1981
|
+
return t1;
|
|
1982
|
+
}
|
|
1983
|
+
//#endregion
|
|
1984
|
+
//#region src/tooltip/root.tsx
|
|
1985
|
+
/**
|
|
1986
|
+
* Draws the element that sets the variants every part below it reads, and no box.
|
|
1987
|
+
*/
|
|
1988
|
+
const Framed = withProvider("div", "root");
|
|
1989
|
+
/**
|
|
1990
|
+
* Shows a short label beside whatever a pointer rests on.
|
|
1991
|
+
*
|
|
1992
|
+
* @param props - The machine's settings, the recipe's variants and the element's props together.
|
|
1993
|
+
* @returns The parts, under the running machine.
|
|
1994
|
+
*/
|
|
1995
|
+
function Root(props) {
|
|
1996
|
+
const $ = c(8);
|
|
1997
|
+
if ($[0] !== "2edd70370670d85de8b7d38a53a35edb4e43b0f9a984adc9f2bf9961cf4c3c82") {
|
|
1998
|
+
for (let $i = 0; $i < 8; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1999
|
+
$[0] = "2edd70370670d85de8b7d38a53a35edb4e43b0f9a984adc9f2bf9961cf4c3c82";
|
|
2000
|
+
}
|
|
2001
|
+
let t0;
|
|
2002
|
+
if ($[1] !== props) {
|
|
2003
|
+
t0 = splitTooltipProps(props);
|
|
2004
|
+
$[1] = props;
|
|
2005
|
+
$[2] = t0;
|
|
2006
|
+
} else t0 = $[2];
|
|
2007
|
+
const [options, rest] = t0;
|
|
2008
|
+
const api = useTooltipMachine(options);
|
|
2009
|
+
let t1;
|
|
2010
|
+
if ($[3] !== rest) {
|
|
2011
|
+
t1 = /* @__PURE__ */ jsx(Framed, { ...rest });
|
|
2012
|
+
$[3] = rest;
|
|
2013
|
+
$[4] = t1;
|
|
2014
|
+
} else t1 = $[4];
|
|
2015
|
+
let t2;
|
|
2016
|
+
if ($[5] !== api || $[6] !== t1) {
|
|
2017
|
+
t2 = /* @__PURE__ */ jsx(ApiProvider, {
|
|
2018
|
+
value: api,
|
|
2019
|
+
children: t1
|
|
2020
|
+
});
|
|
2021
|
+
$[5] = api;
|
|
2022
|
+
$[6] = t1;
|
|
2023
|
+
$[7] = t2;
|
|
2024
|
+
} else t2 = $[7];
|
|
2025
|
+
return t2;
|
|
2026
|
+
}
|
|
2027
|
+
//#endregion
|
|
2028
|
+
//#region src/tooltip/trigger.tsx
|
|
2029
|
+
/**
|
|
2030
|
+
* Draws the control, styled by whatever the caller drew rather than by this recipe.
|
|
2031
|
+
*/
|
|
2032
|
+
const Pressed = withContext("button", "trigger");
|
|
2033
|
+
/**
|
|
2034
|
+
* Opens the box as a pointer rests on it or focus reaches it.
|
|
2035
|
+
*
|
|
2036
|
+
* @param props - Everything a styled button takes.
|
|
2037
|
+
* @returns The control, carrying what the machine needs to open the box.
|
|
2038
|
+
*/
|
|
2039
|
+
function Trigger(props) {
|
|
2040
|
+
const $ = c(6);
|
|
2041
|
+
if ($[0] !== "245890bdbeb0d0630aa58dd84f3805e4cc2e65019af150a8cc2ba2c264d0a7d0") {
|
|
2042
|
+
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
2043
|
+
$[0] = "245890bdbeb0d0630aa58dd84f3805e4cc2e65019af150a8cc2ba2c264d0a7d0";
|
|
2044
|
+
}
|
|
2045
|
+
const api = useTooltip();
|
|
2046
|
+
let t0;
|
|
2047
|
+
if ($[1] !== api || $[2] !== props) {
|
|
2048
|
+
t0 = mergeProps(api.getTriggerProps(), props);
|
|
2049
|
+
$[1] = api;
|
|
2050
|
+
$[2] = props;
|
|
2051
|
+
$[3] = t0;
|
|
2052
|
+
} else t0 = $[3];
|
|
2053
|
+
let t1;
|
|
2054
|
+
if ($[4] !== t0) {
|
|
2055
|
+
t1 = /* @__PURE__ */ jsx(Pressed, { ...t0 });
|
|
2056
|
+
$[4] = t0;
|
|
2057
|
+
$[5] = t1;
|
|
2058
|
+
} else t1 = $[5];
|
|
2059
|
+
return t1;
|
|
2060
|
+
}
|
|
2061
|
+
//#endregion
|
|
2062
|
+
//#region src/tooltip/index.ts
|
|
2063
|
+
var tooltip_exports = /* @__PURE__ */ __exportAll({
|
|
2064
|
+
Arrow: () => Arrow,
|
|
2065
|
+
ArrowTip: () => ArrowTip,
|
|
2066
|
+
Content: () => Content,
|
|
2067
|
+
Positioner: () => Positioner,
|
|
2068
|
+
Root: () => Root,
|
|
2069
|
+
Trigger: () => Trigger
|
|
2070
|
+
});
|
|
2071
|
+
//#endregion
|
|
2072
|
+
export { collapsible_exports as Collapsible, menu_exports as Menu, popover_exports as Popover, tabs_exports as Tabs, tooltip_exports as Tooltip };
|