PluginProbe
Gutenberg / trunk
Gutenberg vtrunk
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
← All changes | build/modules/boot/index.js +11564 -963 23.3.0 → trunk View file →
@@ -62,15 +62,170 @@
62 62 module.exports = window.ReactJSXRuntime;
63 63 }
64 64 });
65 65
66 -// package-external:@wordpress/primitives
67 -var require_primitives = __commonJS({
68 - "package-external:@wordpress/primitives"(exports, module) {
69 - module.exports = window.wp.primitives;
66 +// vendor-external:react-dom
67 +var require_react_dom = __commonJS({
68 + "vendor-external:react-dom"(exports, module) {
69 + module.exports = window.ReactDOM;
70 70 }
71 71 });
72 72
73 +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
74 +var require_use_sync_external_store_shim_development = __commonJS({
75 + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
76 + "use strict";
77 + (function() {
78 + function is(x, y) {
79 + return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
80 + }
81 + function useSyncExternalStore$2(subscribe, getSnapshot) {
82 + didWarnOld18Alpha || void 0 === React48.startTransition || (didWarnOld18Alpha = true, console.error(
83 + "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
84 + ));
85 + var value = getSnapshot();
86 + if (!didWarnUncachedGetSnapshot) {
87 + var cachedValue = getSnapshot();
88 + objectIs(value, cachedValue) || (console.error(
89 + "The result of getSnapshot should be cached to avoid an infinite loop"
90 + ), didWarnUncachedGetSnapshot = true);
91 + }
92 + cachedValue = useState19({
93 + inst: { value, getSnapshot }
94 + });
95 + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
96 + useLayoutEffect3(
97 + function() {
98 + inst.value = value;
99 + inst.getSnapshot = getSnapshot;
100 + checkIfSnapshotChanged(inst) && forceUpdate({ inst });
101 + },
102 + [subscribe, value, getSnapshot]
103 + );
104 + useEffect18(
105 + function() {
106 + checkIfSnapshotChanged(inst) && forceUpdate({ inst });
107 + return subscribe(function() {
108 + checkIfSnapshotChanged(inst) && forceUpdate({ inst });
109 + });
110 + },
111 + [subscribe]
112 + );
113 + useDebugValue2(value);
114 + return value;
115 + }
116 + function checkIfSnapshotChanged(inst) {
117 + var latestGetSnapshot = inst.getSnapshot;
118 + inst = inst.value;
119 + try {
120 + var nextValue = latestGetSnapshot();
121 + return !objectIs(inst, nextValue);
122 + } catch (error) {
123 + return true;
124 + }
125 + }
126 + function useSyncExternalStore$1(subscribe, getSnapshot) {
127 + return getSnapshot();
128 + }
129 + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
130 + var React48 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState19 = React48.useState, useEffect18 = React48.useEffect, useLayoutEffect3 = React48.useLayoutEffect, useDebugValue2 = React48.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
131 + exports.useSyncExternalStore = void 0 !== React48.useSyncExternalStore ? React48.useSyncExternalStore : shim;
132 + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
133 + })();
134 + }
135 +});
136 +
137 +// node_modules/use-sync-external-store/shim/index.js
138 +var require_shim = __commonJS({
139 + "node_modules/use-sync-external-store/shim/index.js"(exports, module) {
140 + "use strict";
141 + if (false) {
142 + module.exports = null;
143 + } else {
144 + module.exports = require_use_sync_external_store_shim_development();
145 + }
146 + }
147 +});
148 +
149 +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
150 +var require_with_selector_development = __commonJS({
151 + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) {
152 + "use strict";
153 + (function() {
154 + function is(x, y) {
155 + return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
156 + }
157 + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
158 + var React48 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef21 = React48.useRef, useEffect18 = React48.useEffect, useMemo22 = React48.useMemo, useDebugValue2 = React48.useDebugValue;
159 + exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
160 + var instRef = useRef21(null);
161 + if (null === instRef.current) {
162 + var inst = { hasValue: false, value: null };
163 + instRef.current = inst;
164 + } else inst = instRef.current;
165 + instRef = useMemo22(
166 + function() {
167 + function memoizedSelector(nextSnapshot) {
168 + if (!hasMemo) {
169 + hasMemo = true;
170 + memoizedSnapshot = nextSnapshot;
171 + nextSnapshot = selector(nextSnapshot);
172 + if (void 0 !== isEqual && inst.hasValue) {
173 + var currentSelection = inst.value;
174 + if (isEqual(currentSelection, nextSnapshot))
175 + return memoizedSelection = currentSelection;
176 + }
177 + return memoizedSelection = nextSnapshot;
178 + }
179 + currentSelection = memoizedSelection;
180 + if (objectIs(memoizedSnapshot, nextSnapshot))
181 + return currentSelection;
182 + var nextSelection = selector(nextSnapshot);
183 + if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
184 + return memoizedSnapshot = nextSnapshot, currentSelection;
185 + memoizedSnapshot = nextSnapshot;
186 + return memoizedSelection = nextSelection;
187 + }
188 + var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot;
189 + return [
190 + function() {
191 + return memoizedSelector(getSnapshot());
192 + },
193 + null === maybeGetServerSnapshot ? void 0 : function() {
194 + return memoizedSelector(maybeGetServerSnapshot());
195 + }
196 + ];
197 + },
198 + [getSnapshot, getServerSnapshot, selector, isEqual]
199 + );
200 + var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]);
201 + useEffect18(
202 + function() {
203 + inst.hasValue = true;
204 + inst.value = value;
205 + },
206 + [value]
207 + );
208 + useDebugValue2(value);
209 + return value;
210 + };
211 + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
212 + })();
213 + }
214 +});
215 +
216 +// node_modules/use-sync-external-store/shim/with-selector.js
217 +var require_with_selector = __commonJS({
218 + "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) {
219 + "use strict";
220 + if (false) {
221 + module.exports = null;
222 + } else {
223 + module.exports = require_with_selector_development();
224 + }
225 + }
226 +});
227 +
73 228 // package-external:@wordpress/compose
74 229 var require_compose = __commonJS({
75 230 "package-external:@wordpress/compose"(exports, module) {
76 231 module.exports = window.wp.compose;
@@ -90,8 +245,15 @@
90 245 module.exports = window.wp.privateApis;
91 246 }
92 247 });
93 248
249 +// package-external:@wordpress/primitives
250 +var require_primitives = __commonJS({
251 + "package-external:@wordpress/primitives"(exports, module) {
252 + module.exports = window.wp.primitives;
253 + }
254 +});
255 +
94 256 // package-external:@wordpress/components
95 257 var require_components = __commonJS({
96 258 "package-external:@wordpress/components"(exports, module) {
97 259 module.exports = window.wp.components;
@@ -111,12 +273,12 @@
111 273 module.exports = window.wp.notices;
112 274 }
113 275 });
114 276
115 -// package-external:@wordpress/html-entities
116 -var require_html_entities = __commonJS({
117 - "package-external:@wordpress/html-entities"(exports, module) {
118 - module.exports = window.wp.htmlEntities;
277 +// package-external:@wordpress/editor
278 +var require_editor = __commonJS({
279 + "package-external:@wordpress/editor"(exports, module) {
280 + module.exports = window.wp.editor;
119 281 }
120 282 });
121 283
122 284 // package-external:@wordpress/keycodes
@@ -125,15 +287,22 @@
125 287 module.exports = window.wp.keycodes;
126 288 }
127 289 });
128 290
129 -// package-external:@wordpress/commands
130 -var require_commands = __commonJS({
131 - "package-external:@wordpress/commands"(exports, module) {
132 - module.exports = window.wp.commands;
291 +// package-external:@wordpress/keyboard-shortcuts
292 +var require_keyboard_shortcuts = __commonJS({
293 + "package-external:@wordpress/keyboard-shortcuts"(exports, module) {
294 + module.exports = window.wp.keyboardShortcuts;
133 295 }
134 296 });
135 297
298 +// package-external:@wordpress/dom
299 +var require_dom = __commonJS({
300 + "package-external:@wordpress/dom"(exports, module) {
301 + module.exports = window.wp.dom;
302 + }
303 +});
304 +
136 305 // package-external:@wordpress/url
137 306 var require_url = __commonJS({
138 307 "package-external:@wordpress/url"(exports, module) {
139 308 module.exports = window.wp.url;
@@ -139,29 +308,29 @@
139 308 module.exports = window.wp.url;
140 309 }
141 310 });
142 311
143 -// package-external:@wordpress/editor
144 -var require_editor = __commonJS({
145 - "package-external:@wordpress/editor"(exports, module) {
146 - module.exports = window.wp.editor;
312 +// package-external:@wordpress/html-entities
313 +var require_html_entities = __commonJS({
314 + "package-external:@wordpress/html-entities"(exports, module) {
315 + module.exports = window.wp.htmlEntities;
147 316 }
148 317 });
149 318
150 -// package-external:@wordpress/keyboard-shortcuts
151 -var require_keyboard_shortcuts = __commonJS({
152 - "package-external:@wordpress/keyboard-shortcuts"(exports, module) {
153 - module.exports = window.wp.keyboardShortcuts;
319 +// package-external:@wordpress/plugins
320 +var require_plugins = __commonJS({
321 + "package-external:@wordpress/plugins"(exports, module) {
322 + module.exports = window.wp.plugins;
154 323 }
155 324 });
156 325
157 326 // packages/boot/build-module/components/app/index.mjs
158 -var import_element17 = __toESM(require_element(), 1);
159 -var import_data12 = __toESM(require_data(), 1);
327 +var import_element44 = __toESM(require_element(), 1);
328 +var import_data14 = __toESM(require_data(), 1);
160 329
161 330 // packages/boot/build-module/components/app/router.mjs
162 -var import_i18n12 = __toESM(require_i18n(), 1);
163 -var import_element16 = __toESM(require_element(), 1);
331 +var import_i18n19 = __toESM(require_i18n(), 1);
332 +var import_element42 = __toESM(require_element(), 1);
164 333
165 334 // node_modules/clsx/dist/clsx.mjs
166 335 function r(e) {
167 336 var t, f, n = "";
@@ -177,13 +346,42 @@
177 346 return n;
178 347 }
179 348 var clsx_default = clsx;
180 349
181 -// node_modules/@base-ui/utils/esm/useRefWithInit.js
350 +// node_modules/@base-ui/utils/createLogOnce.mjs
351 +var loggedMessages;
352 +if (true) {
353 + loggedMessages = /* @__PURE__ */ new Set();
354 +}
355 +function createLogOnce(severity, prefix) {
356 + return function logOnce(...messages) {
357 + if (true) {
358 + const message = messages.join(" ");
359 + const output = prefix ? `${prefix}: ${message}` : message;
360 + const key = `${severity}:${output}`;
361 + if (!loggedMessages.has(key)) {
362 + loggedMessages.add(key);
363 + if (severity === "warn") {
364 + console.warn(output);
365 + } else {
366 + console.error(output);
367 + }
368 + }
369 + }
370 + };
371 +}
372 +
373 +// node_modules/@base-ui/utils/safeReact.mjs
182 374 var React = __toESM(require_react(), 1);
375 +var SafeReact = {
376 + ...React
377 +};
378 +
379 +// node_modules/@base-ui/utils/useRefWithInit.mjs
380 +var React2 = __toESM(require_react(), 1);
183 381 var UNINITIALIZED = {};
184 382 function useRefWithInit(init2, initArg) {
185 - const ref = React.useRef(UNINITIALIZED);
383 + const ref = React2.useRef(UNINITIALIZED);
186 384 if (ref.current === UNINITIALIZED) {
187 385 ref.current = init2(initArg);
188 386 }
189 387 return ref;
@@ -188,27 +386,60 @@
188 386 }
189 387 return ref;
190 388 }
191 389
192 -// node_modules/@base-ui/utils/esm/warn.js
193 -var set;
194 -if (true) {
195 - set = /* @__PURE__ */ new Set();
390 +// node_modules/@base-ui/utils/useStableCallback.mjs
391 +var useInsertionEffect = SafeReact.useInsertionEffect;
392 +var useSafeInsertionEffect = (
393 + // React 17 doesn't have useInsertionEffect.
394 + useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
395 + useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn()
396 +);
397 +function useStableCallback(callback) {
398 + const stable = useRefWithInit(createStableCallback).current;
399 + stable.next = callback;
400 + useSafeInsertionEffect(stable.effect);
401 + return stable.trampoline;
196 402 }
197 -function warn(...messages) {
403 +function createStableCallback() {
404 + const stable = {
405 + next: void 0,
406 + callback: assertNotCalled,
407 + trampoline: (...args) => stable.callback?.(...args),
408 + effect: () => {
409 + stable.callback = stable.next;
410 + }
411 + };
412 + return stable;
413 +}
414 +function assertNotCalled() {
198 415 if (true) {
199 - const messageKey = messages.join(" ");
200 - if (!set.has(messageKey)) {
201 - set.add(messageKey);
202 - console.warn(`Base UI: ${messageKey}`);
203 - }
416 + throw (
417 + /* minify-error-disabled */
418 + new Error("Base UI: Cannot call an event handler while rendering.")
419 + );
204 420 }
205 421 }
206 422
207 -// node_modules/@base-ui/react/esm/internals/useRenderElement.js
208 -var React4 = __toESM(require_react(), 1);
423 +// node_modules/@base-ui/utils/warn.mjs
424 +var warn = createLogOnce("warn", "Base UI");
209 425
210 -// node_modules/@base-ui/utils/esm/useMergedRefs.js
426 +// node_modules/@base-ui/utils/empty.mjs
427 +function NOOP() {
428 +}
429 +var EMPTY_ARRAY = Object.freeze([]);
430 +var EMPTY_OBJECT = Object.freeze({});
431 +
432 +// node_modules/@base-ui/utils/useIsoLayoutEffect.mjs
433 +var React3 = __toESM(require_react(), 1);
434 +var noop = () => {
435 +};
436 +var useIsoLayoutEffect = typeof document !== "undefined" ? React3.useLayoutEffect : noop;
437 +
438 +// node_modules/@base-ui/react/internals/useRenderElement.mjs
439 +var React6 = __toESM(require_react(), 1);
440 +
441 +// node_modules/@base-ui/utils/useMergedRefs.mjs
211 442 function useMergedRefs(a, b, c, d) {
212 443 const forkRef = useRefWithInit(createForkRef).current;
213 444 if (didChange(forkRef, a, b, c, d)) {
214 445 update(forkRef, [a, b, c, d]);
@@ -232,9 +463,9 @@
232 463 function didChange(forkRef, a, b, c, d) {
233 464 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;
234 465 }
235 466 function didChangeN(forkRef, newRefs) {
236 - return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);
467 + return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]);
237 468 }
238 469 function update(forkRef, refs) {
239 470 forkRef.refs = refs;
240 471 if (refs.every((ref) => ref == null)) {
@@ -279,9 +510,9 @@
279 510 const cleanupCallback = cleanupCallbacks[i];
280 511 if (typeof cleanupCallback === "function") {
281 512 cleanupCallback();
282 513 } else {
283 - ref(null);
514 + void ref(null);
284 515 }
285 516 break;
286 517 }
287 518 case "object": {
@@ -295,21 +526,21 @@
295 526 }
296 527 };
297 528 }
298 529
299 -// node_modules/@base-ui/utils/esm/getReactElementRef.js
300 -var React3 = __toESM(require_react(), 1);
530 +// node_modules/@base-ui/utils/getReactElementRef.mjs
531 +var React5 = __toESM(require_react(), 1);
301 532
302 -// node_modules/@base-ui/utils/esm/reactVersion.js
303 -var React2 = __toESM(require_react(), 1);
304 -var majorVersion = parseInt(React2.version, 10);
533 +// node_modules/@base-ui/utils/reactVersion.mjs
534 +var React4 = __toESM(require_react(), 1);
535 +var majorVersion = parseInt(React4.version, 10);
305 536 function isReactVersionAtLeast(reactVersionToCheck) {
306 537 return majorVersion >= reactVersionToCheck;
307 538 }
308 539
309 -// node_modules/@base-ui/utils/esm/getReactElementRef.js
540 +// node_modules/@base-ui/utils/getReactElementRef.mjs
310 541 function getReactElementRef(element) {
311 - if (!/* @__PURE__ */ React3.isValidElement(element)) {
542 + if (!/* @__PURE__ */ React5.isValidElement(element)) {
312 543 return null;
313 544 }
314 545 const reactElement = element;
315 546 const propsWithRef = reactElement.props;
@@ -315,9 +546,9 @@
315 546 const propsWithRef = reactElement.props;
316 547 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
317 548 }
318 549
319 -// node_modules/@base-ui/utils/esm/mergeObjects.js
550 +// node_modules/@base-ui/utils/mergeObjects.mjs
320 551 function mergeObjects(a, b) {
321 552 if (a && !b) {
322 553 return a;
323 554 }
@@ -332,13 +563,9 @@
332 563 }
333 564 return void 0;
334 565 }
335 566
336 -// node_modules/@base-ui/utils/esm/empty.js
337 -var EMPTY_ARRAY = Object.freeze([]);
338 -var EMPTY_OBJECT = Object.freeze({});
339 -
340 -// node_modules/@base-ui/react/esm/internals/getStateAttributesProps.js
567 +// node_modules/@base-ui/react/internals/getStateAttributesProps.mjs
341 568 function getStateAttributesProps(state, customMapping) {
342 569 const props = {};
343 570 for (const key in state) {
344 571 const value = state[key];
@@ -357,19 +584,19 @@
357 584 }
358 585 return props;
359 586 }
360 587
361 -// node_modules/@base-ui/react/esm/utils/resolveClassName.js
588 +// node_modules/@base-ui/react/utils/resolveClassName.mjs
362 589 function resolveClassName(className, state) {
363 590 return typeof className === "function" ? className(state) : className;
364 591 }
365 592
366 -// node_modules/@base-ui/react/esm/utils/resolveStyle.js
593 +// node_modules/@base-ui/react/utils/resolveStyle.mjs
367 594 function resolveStyle(style, state) {
368 595 return typeof style === "function" ? style(state) : style;
369 596 }
370 597
371 -// node_modules/@base-ui/react/esm/merge-props/mergeProps.js
598 +// node_modules/@base-ui/react/merge-props/mergeProps.mjs
372 599 var EMPTY_PROPS = {};
373 600 function mergeProps(a, b, c, d, e) {
374 601 if (!c && !d && !e && !a) {
375 602 return createInitialMergedProps(b);
@@ -522,13 +749,16 @@
522 749 function isSyntheticEvent(event) {
523 750 return event != null && typeof event === "object" && "nativeEvent" in event;
524 751 }
525 752
526 -// node_modules/@base-ui/react/esm/internals/useRenderElement.js
753 +// node_modules/@base-ui/react/internals/useRenderElement.mjs
527 754 var import_react = __toESM(require_react(), 1);
528 755 function useRenderElement(element, componentProps, params = {}) {
529 - const renderProp = componentProps.render;
530 - const outProps = useRenderElementProps(componentProps, params);
756 + let renderProp = componentProps.render;
757 + if (params.enabled !== false) {
758 + renderProp = unwrapLazyRenderProp(renderProp);
759 + }
760 + const outProps = useRenderElementProps(componentProps, params, renderProp);
531 761 if (params.enabled === false) {
532 762 return null;
533 763 }
534 764 const state = params.state ?? EMPTY_OBJECT;
@@ -533,13 +763,12 @@
533 763 }
534 764 const state = params.state ?? EMPTY_OBJECT;
535 765 return evaluateRenderProp(element, renderProp, outProps, state);
536 766 }
537 -function useRenderElementProps(componentProps, params = {}) {
767 +function useRenderElementProps(componentProps, params, renderProp) {
538 768 const {
539 769 className: classNameProp,
540 - style: styleProp,
541 - render: renderProp
770 + style: styleProp
542 771 } = componentProps;
543 772 const {
544 773 state = EMPTY_OBJECT,
545 774 ref,
@@ -553,9 +782,9 @@
553 782 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0;
554 783 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
555 784 if (typeof document !== "undefined") {
556 785 if (!enabled) {
557 - useMergedRefs(null, null);
786 + void useMergedRefs(null, null);
558 787 } else if (Array.isArray(ref)) {
559 788 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
560 789 } else {
561 790 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
@@ -580,8 +809,15 @@
580 809 }
581 810 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
582 811 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
583 812 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
813 +function unwrapLazyRenderProp(render) {
814 + if (render?.$$typeof !== REACT_LAZY_TYPE) {
815 + return render;
816 + }
817 + const unwrapped = React6.Children.toArray(render)[0];
818 + return /* @__PURE__ */ React6.isValidElement(unwrapped) ? unwrapped : render;
819 +}
584 820 function evaluateRenderProp(element, render, props, state) {
585 821 if (render) {
586 822 if (typeof render === "function") {
587 823 if (true) {
@@ -590,19 +826,14 @@
590 826 return render(props, state);
591 827 }
592 828 const mergedProps = mergeProps(props, render.props);
593 829 mergedProps.ref = props.ref;
594 - let newElement = render;
595 - if (newElement?.$$typeof === REACT_LAZY_TYPE) {
596 - const children = React4.Children.toArray(render);
597 - newElement = children[0];
598 - }
599 830 if (true) {
600 - if (!/* @__PURE__ */ React4.isValidElement(newElement)) {
831 + if (!/* @__PURE__ */ React6.isValidElement(render)) {
601 832 throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n"));
602 833 }
603 834 }
604 - return /* @__PURE__ */ React4.cloneElement(newElement, mergedProps);
835 + return /* @__PURE__ */ React6.cloneElement(render, mergedProps);
605 836 }
606 837 if (element) {
607 838 if (typeof element === "string") {
608 839 return renderTag(element, props);
@@ -637,18 +868,7733 @@
637 868 ...props,
638 869 key: props.key
639 870 });
640 871 }
641 - return /* @__PURE__ */ React4.createElement(Tag, props);
872 + return /* @__PURE__ */ React6.createElement(Tag, props);
642 873 }
643 874
644 -// node_modules/@base-ui/react/esm/use-render/useRender.js
875 +// node_modules/@base-ui/utils/useId.mjs
876 +var React7 = __toESM(require_react(), 1);
877 +var globalId = 0;
878 +function useGlobalId(idOverride, prefix = "mui") {
879 + const [defaultId, setDefaultId] = React7.useState(idOverride);
880 + const id = idOverride || defaultId;
881 + React7.useEffect(() => {
882 + if (defaultId == null) {
883 + globalId += 1;
884 + setDefaultId(`${prefix}-${globalId}`);
885 + }
886 + }, [defaultId, prefix]);
887 + return id;
888 +}
889 +var maybeReactUseId = SafeReact.useId;
890 +function useId(idOverride, prefix) {
891 + if (maybeReactUseId !== void 0) {
892 + const reactId = maybeReactUseId();
893 + return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);
894 + }
895 + return useGlobalId(idOverride, prefix);
896 +}
897 +
898 +// node_modules/@base-ui/react/internals/useBaseUiId.mjs
899 +function useBaseUiId(idOverride) {
900 + return useId(idOverride, "base-ui");
901 +}
902 +
903 +// node_modules/@base-ui/react/internals/reason-parts.mjs
904 +var reason_parts_exports = {};
905 +__export(reason_parts_exports, {
906 + cancelOpen: () => cancelOpen,
907 + chipRemovePress: () => chipRemovePress,
908 + clearPress: () => clearPress,
909 + closePress: () => closePress,
910 + closeWatcher: () => closeWatcher,
911 + decrementPress: () => decrementPress,
912 + disabled: () => disabled,
913 + drag: () => drag,
914 + escapeKey: () => escapeKey,
915 + focusOut: () => focusOut,
916 + imperativeAction: () => imperativeAction,
917 + incrementPress: () => incrementPress,
918 + initial: () => initial,
919 + inputBlur: () => inputBlur,
920 + inputChange: () => inputChange,
921 + inputClear: () => inputClear,
922 + inputPaste: () => inputPaste,
923 + inputPress: () => inputPress,
924 + itemPress: () => itemPress,
925 + keyboard: () => keyboard,
926 + linkPress: () => linkPress,
927 + listNavigation: () => listNavigation,
928 + missing: () => missing,
929 + none: () => none,
930 + outsidePress: () => outsidePress,
931 + pointer: () => pointer,
932 + scrub: () => scrub,
933 + siblingOpen: () => siblingOpen,
934 + swipe: () => swipe,
935 + trackPress: () => trackPress,
936 + triggerFocus: () => triggerFocus,
937 + triggerHover: () => triggerHover,
938 + triggerPress: () => triggerPress,
939 + wheel: () => wheel,
940 + windowResize: () => windowResize
941 +});
942 +var none = "none";
943 +var triggerPress = "trigger-press";
944 +var triggerHover = "trigger-hover";
945 +var triggerFocus = "trigger-focus";
946 +var outsidePress = "outside-press";
947 +var itemPress = "item-press";
948 +var closePress = "close-press";
949 +var linkPress = "link-press";
950 +var clearPress = "clear-press";
951 +var chipRemovePress = "chip-remove-press";
952 +var trackPress = "track-press";
953 +var incrementPress = "increment-press";
954 +var decrementPress = "decrement-press";
955 +var inputChange = "input-change";
956 +var inputClear = "input-clear";
957 +var inputBlur = "input-blur";
958 +var inputPaste = "input-paste";
959 +var inputPress = "input-press";
960 +var focusOut = "focus-out";
961 +var escapeKey = "escape-key";
962 +var closeWatcher = "close-watcher";
963 +var listNavigation = "list-navigation";
964 +var keyboard = "keyboard";
965 +var pointer = "pointer";
966 +var drag = "drag";
967 +var wheel = "wheel";
968 +var scrub = "scrub";
969 +var cancelOpen = "cancel-open";
970 +var siblingOpen = "sibling-open";
971 +var disabled = "disabled";
972 +var missing = "missing";
973 +var initial = "initial";
974 +var imperativeAction = "imperative-action";
975 +var swipe = "swipe";
976 +var windowResize = "window-resize";
977 +
978 +// node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs
979 +function createChangeEventDetails(reason, event, trigger, customProperties) {
980 + let canceled = false;
981 + let allowPropagation = false;
982 + const custom = customProperties ?? EMPTY_OBJECT;
983 + const details = {
984 + reason,
985 + event: event ?? new Event("base-ui"),
986 + cancel() {
987 + canceled = true;
988 + },
989 + allowPropagation() {
990 + allowPropagation = true;
991 + },
992 + get isCanceled() {
993 + return canceled;
994 + },
995 + get isPropagationAllowed() {
996 + return allowPropagation;
997 + },
998 + trigger,
999 + ...custom
1000 + };
1001 + return details;
1002 +}
1003 +
1004 +// node_modules/@base-ui/react/internals/useTransitionStatus.mjs
1005 +var React9 = __toESM(require_react(), 1);
1006 +
1007 +// node_modules/@base-ui/utils/useOnMount.mjs
1008 +var React8 = __toESM(require_react(), 1);
1009 +function useOnMount(fn) {
1010 + React8.useEffect(fn, EMPTY_ARRAY);
1011 +}
1012 +
1013 +// node_modules/@base-ui/utils/useAnimationFrame.mjs
1014 +var EMPTY = null;
1015 +var LAST_RAF = globalThis.requestAnimationFrame;
1016 +var Scheduler = class {
1017 + /* This implementation uses an array as a backing data-structure for frame callbacks.
1018 + * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
1019 + * never calls the native `cancelAnimationFrame` if there are no frames left. This can
1020 + * be much more efficient if there is a call pattern that alterns as
1021 + * "request-cancel-request-cancel-…".
1022 + * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
1023 + * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
1024 + callbacks = [];
1025 + callbacksCount = 0;
1026 + nextId = 1;
1027 + startId = 1;
1028 + isScheduled = false;
1029 + tick = (timestamp) => {
1030 + this.isScheduled = false;
1031 + const currentCallbacks = this.callbacks;
1032 + const currentCallbacksCount = this.callbacksCount;
1033 + this.callbacks = [];
1034 + this.callbacksCount = 0;
1035 + this.startId = this.nextId;
1036 + if (currentCallbacksCount > 0) {
1037 + for (let i = 0; i < currentCallbacks.length; i += 1) {
1038 + currentCallbacks[i]?.(timestamp);
1039 + }
1040 + }
1041 + };
1042 + request(fn) {
1043 + const id = this.nextId;
1044 + this.nextId += 1;
1045 + this.callbacks.push(fn);
1046 + this.callbacksCount += 1;
1047 + const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);
1048 + if (!this.isScheduled || didRAFChange) {
1049 + requestAnimationFrame(this.tick);
1050 + this.isScheduled = true;
1051 + }
1052 + return id;
1053 + }
1054 + cancel(id) {
1055 + const index2 = id - this.startId;
1056 + if (index2 < 0 || index2 >= this.callbacks.length) {
1057 + return;
1058 + }
1059 + if (this.callbacks[index2] === null) {
1060 + return;
1061 + }
1062 + this.callbacks[index2] = null;
1063 + this.callbacksCount -= 1;
1064 + }
1065 +};
1066 +var scheduler = new Scheduler();
1067 +var AnimationFrame = class _AnimationFrame {
1068 + static create() {
1069 + return new _AnimationFrame();
1070 + }
1071 + static request(fn) {
1072 + return scheduler.request(fn);
1073 + }
1074 + static cancel(id) {
1075 + return scheduler.cancel(id);
1076 + }
1077 + currentId = EMPTY;
1078 + /**
1079 + * Executes `fn` after `delay`, clearing any previously scheduled call.
1080 + */
1081 + request(fn) {
1082 + this.cancel();
1083 + this.currentId = scheduler.request(() => {
1084 + this.currentId = EMPTY;
1085 + fn();
1086 + });
1087 + }
1088 + cancel = () => {
1089 + if (this.currentId !== EMPTY) {
1090 + scheduler.cancel(this.currentId);
1091 + this.currentId = EMPTY;
1092 + }
1093 + };
1094 + disposeEffect = () => {
1095 + return this.cancel;
1096 + };
1097 +};
1098 +function useAnimationFrame() {
1099 + const timeout = useRefWithInit(AnimationFrame.create).current;
1100 + useOnMount(timeout.disposeEffect);
1101 + return timeout;
1102 +}
1103 +
1104 +// node_modules/@base-ui/react/internals/useTransitionStatus.mjs
1105 +function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) {
1106 + const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0);
1107 + const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen);
1108 + if (open2 && !mounted) {
1109 + setMounted(true);
1110 + setTransitionStatus("starting");
1111 + }
1112 + if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) {
1113 + setTransitionStatus("ending");
1114 + }
1115 + if (!open2 && !mounted && transitionStatus === "ending") {
1116 + setTransitionStatus(void 0);
1117 + }
1118 + useIsoLayoutEffect(() => {
1119 + if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) {
1120 + const frame = AnimationFrame.request(() => {
1121 + setTransitionStatus("ending");
1122 + });
1123 + return () => {
1124 + AnimationFrame.cancel(frame);
1125 + };
1126 + }
1127 + return void 0;
1128 + }, [open2, mounted, transitionStatus, deferEndingState]);
1129 + useIsoLayoutEffect(() => {
1130 + if (!open2 || enableIdleState) {
1131 + return void 0;
1132 + }
1133 + const frame = AnimationFrame.request(() => {
1134 + setTransitionStatus(void 0);
1135 + });
1136 + return () => {
1137 + AnimationFrame.cancel(frame);
1138 + };
1139 + }, [enableIdleState, open2]);
1140 + useIsoLayoutEffect(() => {
1141 + if (!open2 || !enableIdleState) {
1142 + return void 0;
1143 + }
1144 + if (open2 && mounted && transitionStatus !== "idle") {
1145 + setTransitionStatus("starting");
1146 + }
1147 + const frame = AnimationFrame.request(() => {
1148 + setTransitionStatus("idle");
1149 + });
1150 + return () => {
1151 + AnimationFrame.cancel(frame);
1152 + };
1153 + }, [enableIdleState, open2, mounted, transitionStatus]);
1154 + return {
1155 + mounted,
1156 + setMounted,
1157 + transitionStatus
1158 + };
1159 +}
1160 +
1161 +// node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs
1162 +var startingStyle = "data-starting-style";
1163 +var endingStyle = "data-ending-style";
1164 +
1165 +// node_modules/@base-ui/react/internals/stateAttributesMapping.mjs
1166 +var STARTING_HOOK = {
1167 + [startingStyle]: ""
1168 +};
1169 +var ENDING_HOOK = {
1170 + [endingStyle]: ""
1171 +};
1172 +var transitionStatusMapping = {
1173 + transitionStatus(value) {
1174 + if (value === "starting") {
1175 + return STARTING_HOOK;
1176 + }
1177 + if (value === "ending") {
1178 + return ENDING_HOOK;
1179 + }
1180 + return null;
1181 + }
1182 +};
1183 +
1184 +// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
1185 +function hasWindow() {
1186 + return typeof window !== "undefined";
1187 +}
1188 +function getNodeName(node) {
1189 + if (isNode(node)) {
1190 + return (node.nodeName || "").toLowerCase();
1191 + }
1192 + return "#document";
1193 +}
1194 +function getWindow(node) {
1195 + var _node$ownerDocument;
1196 + return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
1197 +}
1198 +function getDocumentElement(node) {
1199 + var _ref;
1200 + return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
1201 +}
1202 +function isNode(value) {
1203 + if (!hasWindow()) {
1204 + return false;
1205 + }
1206 + return value instanceof Node || value instanceof getWindow(value).Node;
1207 +}
1208 +function isElement(value) {
1209 + if (!hasWindow()) {
1210 + return false;
1211 + }
1212 + return value instanceof Element || value instanceof getWindow(value).Element;
1213 +}
1214 +function isHTMLElement(value) {
1215 + if (!hasWindow()) {
1216 + return false;
1217 + }
1218 + return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
1219 +}
1220 +function isShadowRoot(value) {
1221 + if (!hasWindow() || typeof ShadowRoot === "undefined") {
1222 + return false;
1223 + }
1224 + return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
1225 +}
1226 +function isOverflowElement(element) {
1227 + const {
1228 + overflow,
1229 + overflowX,
1230 + overflowY,
1231 + display
1232 + } = getComputedStyle2(element);
1233 + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
1234 +}
1235 +function isTableElement(element) {
1236 + return /^(table|td|th)$/.test(getNodeName(element));
1237 +}
1238 +function isTopLayer(element) {
1239 + try {
1240 + if (element.matches(":popover-open")) {
1241 + return true;
1242 + }
1243 + } catch (_e) {
1244 + }
1245 + try {
1246 + return element.matches(":modal");
1247 + } catch (_e) {
1248 + return false;
1249 + }
1250 +}
1251 +var willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
1252 +var containRe = /paint|layout|strict|content/;
1253 +var isNotNone = (value) => !!value && value !== "none";
1254 +var isWebKitValue;
1255 +function isContainingBlock(elementOrCss) {
1256 + const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
1257 + return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
1258 +}
1259 +function getContainingBlock(element) {
1260 + let currentNode = getParentNode(element);
1261 + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
1262 + if (isContainingBlock(currentNode)) {
1263 + return currentNode;
1264 + } else if (isTopLayer(currentNode)) {
1265 + return null;
1266 + }
1267 + currentNode = getParentNode(currentNode);
1268 + }
1269 + return null;
1270 +}
1271 +function isWebKit() {
1272 + if (isWebKitValue == null) {
1273 + isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
1274 + }
1275 + return isWebKitValue;
1276 +}
1277 +function isLastTraversableNode(node) {
1278 + return /^(html|body|#document)$/.test(getNodeName(node));
1279 +}
1280 +function getComputedStyle2(element) {
1281 + return getWindow(element).getComputedStyle(element);
1282 +}
1283 +function getNodeScroll(element) {
1284 + if (isElement(element)) {
1285 + return {
1286 + scrollLeft: element.scrollLeft,
1287 + scrollTop: element.scrollTop
1288 + };
1289 + }
1290 + return {
1291 + scrollLeft: element.scrollX,
1292 + scrollTop: element.scrollY
1293 + };
1294 +}
1295 +function getParentNode(node) {
1296 + if (getNodeName(node) === "html") {
1297 + return node;
1298 + }
1299 + const result = (
1300 + // Step into the shadow DOM of the parent of a slotted node.
1301 + node.assignedSlot || // DOM Element detected.
1302 + node.parentNode || // ShadowRoot detected.
1303 + isShadowRoot(node) && node.host || // Fallback.
1304 + getDocumentElement(node)
1305 + );
1306 + return isShadowRoot(result) ? result.host : result;
1307 +}
1308 +function getNearestOverflowAncestor(node) {
1309 + const parentNode = getParentNode(node);
1310 + if (isLastTraversableNode(parentNode)) {
1311 + return (node.ownerDocument || node).body;
1312 + }
1313 + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
1314 + return parentNode;
1315 + }
1316 + return getNearestOverflowAncestor(parentNode);
1317 +}
1318 +function getOverflowAncestors(node, list, traverseIframes) {
1319 + var _node$ownerDocument2;
1320 + if (list === void 0) {
1321 + list = [];
1322 + }
1323 + if (traverseIframes === void 0) {
1324 + traverseIframes = true;
1325 + }
1326 + const scrollableAncestor = getNearestOverflowAncestor(node);
1327 + const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
1328 + const win = getWindow(scrollableAncestor);
1329 + if (isBody) {
1330 + const frameElement = getFrameElement(win);
1331 + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
1332 + } else {
1333 + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
1334 + }
1335 +}
1336 +function getFrameElement(win) {
1337 + return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
1338 +}
1339 +
1340 +// node_modules/@base-ui/utils/owner.mjs
1341 +function ownerDocument(node) {
1342 + return node?.ownerDocument || document;
1343 +}
1344 +
1345 +// node_modules/@base-ui/utils/addEventListener.mjs
1346 +function addEventListener(target, type, listener, options) {
1347 + target.addEventListener(type, listener, options);
1348 + return () => {
1349 + target.removeEventListener(type, listener, options);
1350 + };
1351 +}
1352 +
1353 +// node_modules/@base-ui/utils/useValueAsRef.mjs
1354 +function useValueAsRef(value) {
1355 + const latest = useRefWithInit(createLatestRef, value).current;
1356 + latest.next = value;
1357 + useIsoLayoutEffect(latest.effect);
1358 + return latest;
1359 +}
1360 +function createLatestRef(value) {
1361 + const latest = {
1362 + current: value,
1363 + next: value,
1364 + effect: () => {
1365 + latest.current = latest.next;
1366 + }
1367 + };
1368 + return latest;
1369 +}
1370 +
1371 +// node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
1372 +var React10 = __toESM(require_react(), 1);
1373 +
1374 +// node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
1375 +var ReactDOM = __toESM(require_react_dom(), 1);
1376 +
1377 +// node_modules/@base-ui/react/utils/resolveRef.mjs
1378 +function resolveRef(maybeRef) {
1379 + if (maybeRef == null) {
1380 + return maybeRef;
1381 + }
1382 + return "current" in maybeRef ? maybeRef.current : maybeRef;
1383 +}
1384 +
1385 +// node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
1386 +var pendingCallbacks = null;
1387 +function flushBeforePaint(fn) {
1388 + if (!pendingCallbacks) {
1389 + const callbacks = [];
1390 + pendingCallbacks = callbacks;
1391 + queueMicrotask(() => {
1392 + pendingCallbacks = null;
1393 + ReactDOM.flushSync(() => {
1394 + for (const callback of callbacks) {
1395 + callback();
1396 + }
1397 + });
1398 + });
1399 + }
1400 + pendingCallbacks.push(fn);
1401 +}
1402 +function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) {
1403 + const frame = useAnimationFrame();
1404 + return useStableCallback((fnToExecute, signal = null) => {
1405 + frame.cancel();
1406 + const element = resolveRef(elementOrRef);
1407 + if (element == null) {
1408 + return;
1409 + }
1410 + const resolvedElement = element;
1411 + const done = () => {
1412 + if (!batch) {
1413 + ReactDOM.flushSync(fnToExecute);
1414 + return;
1415 + }
1416 + flushBeforePaint(() => {
1417 + if (!signal?.aborted) {
1418 + fnToExecute();
1419 + }
1420 + });
1421 + };
1422 + if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) {
1423 + fnToExecute();
1424 + return;
1425 + }
1426 + function exec() {
1427 + Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => {
1428 + if (!signal?.aborted) {
1429 + done();
1430 + }
1431 + }, () => {
1432 + if (signal?.aborted) {
1433 + return;
1434 + }
1435 + const currentAnimations = resolvedElement.getAnimations();
1436 + if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) {
1437 + exec();
1438 + return;
1439 + }
1440 + done();
1441 + });
1442 + }
1443 + if (waitForStartingStyleRemoved) {
1444 + const startingStyleAttribute = startingStyle;
1445 + if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
1446 + frame.request(exec);
1447 + return;
1448 + }
1449 + const attributeObserver = new MutationObserver(() => {
1450 + if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
1451 + attributeObserver.disconnect();
1452 + exec();
1453 + }
1454 + });
1455 + attributeObserver.observe(resolvedElement, {
1456 + attributes: true,
1457 + attributeFilter: [startingStyleAttribute]
1458 + });
1459 + signal?.addEventListener("abort", () => attributeObserver.disconnect(), {
1460 + once: true
1461 + });
1462 + return;
1463 + }
1464 + frame.request(exec);
1465 + });
1466 +}
1467 +
1468 +// node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
1469 +function useOpenChangeComplete(parameters) {
1470 + const {
1471 + enabled = true,
1472 + open: open2,
1473 + ref,
1474 + batch = false,
1475 + onComplete: onCompleteParam
1476 + } = parameters;
1477 + const onComplete = useStableCallback(onCompleteParam);
1478 + const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch);
1479 + React10.useEffect(() => {
1480 + if (!enabled) {
1481 + return void 0;
1482 + }
1483 + const abortController = new AbortController();
1484 + runOnceAnimationsFinish(onComplete, abortController.signal);
1485 + return () => {
1486 + abortController.abort();
1487 + };
1488 + }, [enabled, open2, onComplete, runOnceAnimationsFinish]);
1489 +}
1490 +
1491 +// node_modules/@base-ui/utils/platform/parts.mjs
1492 +var parts_exports = {};
1493 +__export(parts_exports, {
1494 + engine: () => engine_exports,
1495 + env: () => env_exports,
1496 + mediaQuery: () => media_query_exports,
1497 + os: () => os_exports,
1498 + screenReader: () => screen_reader_exports
1499 +});
1500 +
1501 +// node_modules/@base-ui/utils/platform/os.mjs
1502 +var os_exports = {};
1503 +__export(os_exports, {
1504 + android: () => android,
1505 + apple: () => apple,
1506 + ios: () => ios,
1507 + linux: () => linux,
1508 + mac: () => mac,
1509 + windows: () => windows
1510 +});
1511 +
1512 +// node_modules/@base-ui/utils/platform/shared.mjs
1513 +function readRawData() {
1514 + if (typeof navigator === "undefined") {
1515 + return {
1516 + userAgent: "",
1517 + platform: "",
1518 + maxTouchPoints: 0
1519 + };
1520 + }
1521 + if (true) {
1522 + const uaData = navigator.userAgentData;
1523 + if (uaData && Array.isArray(uaData.brands)) {
1524 + return {
1525 + userAgent: uaData.brands.map(({
1526 + brand,
1527 + version: version2
1528 + }) => `${brand}/${version2}`).join(" "),
1529 + platform: uaData.platform ?? navigator.platform ?? "",
1530 + maxTouchPoints: navigator.maxTouchPoints ?? 0
1531 + };
1532 + }
1533 + }
1534 + return {
1535 + userAgent: navigator.userAgent,
1536 + platform: navigator.platform ?? "",
1537 + maxTouchPoints: navigator.maxTouchPoints ?? 0
1538 + };
1539 +}
1540 +var {
1541 + userAgent,
1542 + platform,
1543 + maxTouchPoints
1544 +} = readRawData();
1545 +var lowerUserAgent = userAgent.toLowerCase();
1546 +var lowerPlatform = platform.toLowerCase();
1547 +
1548 +// node_modules/@base-ui/utils/platform/os.mjs
1549 +var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1;
1550 +var ANDROID_STRING = "android";
1551 +var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING);
1552 +var mac = !ios && lowerPlatform.startsWith("mac");
1553 +var windows = lowerPlatform.startsWith("win");
1554 +var linux = !android && /^(linux|chrome os)/.test(lowerPlatform);
1555 +var apple = mac || ios;
1556 +
1557 +// node_modules/@base-ui/utils/platform/engine.mjs
1558 +var engine_exports = {};
1559 +__export(engine_exports, {
1560 + blink: () => blink,
1561 + gecko: () => gecko,
1562 + webkit: () => webkit
1563 +});
1564 +var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none");
1565 +var gecko = !webkit && lowerUserAgent.includes("firefox");
1566 +var blink = !webkit && lowerUserAgent.includes("chrom");
1567 +
1568 +// node_modules/@base-ui/utils/platform/screen-reader.mjs
1569 +var screen_reader_exports = {};
1570 +__export(screen_reader_exports, {
1571 + voiceOver: () => voiceOver
1572 +});
1573 +var voiceOver = apple;
1574 +
1575 +// node_modules/@base-ui/utils/platform/env.mjs
1576 +var env_exports = {};
1577 +__export(env_exports, {
1578 + jsdom: () => jsdom
1579 +});
1580 +var jsdom = /jsdom|happydom/.test(lowerUserAgent);
1581 +
1582 +// node_modules/@base-ui/utils/platform/media-query.mjs
1583 +var media_query_exports = {};
1584 +__export(media_query_exports, {
1585 + iOS: () => iOS
1586 +});
1587 +var iOS = "@supports (-webkit-touch-callout: none)";
1588 +
1589 +// node_modules/@base-ui/utils/useTimeout.mjs
1590 +var EMPTY2 = 0;
1591 +var Timeout = class _Timeout {
1592 + static create() {
1593 + return new _Timeout();
1594 + }
1595 + currentId = EMPTY2;
1596 + /**
1597 + * Executes `fn` after `delay`, clearing any previously scheduled call.
1598 + */
1599 + start(delay, fn) {
1600 + this.clear();
1601 + this.currentId = setTimeout(() => {
1602 + this.currentId = EMPTY2;
1603 + fn();
1604 + }, delay);
1605 + }
1606 + isStarted() {
1607 + return this.currentId !== EMPTY2;
1608 + }
1609 + clear = () => {
1610 + if (this.currentId !== EMPTY2) {
1611 + clearTimeout(this.currentId);
1612 + this.currentId = EMPTY2;
1613 + }
1614 + };
1615 + disposeEffect = () => {
1616 + return this.clear;
1617 + };
1618 +};
1619 +function useTimeout() {
1620 + const timeout = useRefWithInit(Timeout.create).current;
1621 + useOnMount(timeout.disposeEffect);
1622 + return timeout;
1623 +}
1624 +
1625 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
1626 +var React11 = __toESM(require_react(), 1);
1627 +
1628 +// node_modules/@base-ui/react/floating-ui-react/utils/event.mjs
1629 +function isReactEvent(event) {
1630 + return "nativeEvent" in event;
1631 +}
1632 +function isVirtualClick(event) {
1633 + if (event.pointerType === "" && event.isTrusted) {
1634 + return true;
1635 + }
1636 + if (parts_exports.os.android && event.pointerType) {
1637 + return event.type === "click" && event.buttons === 1;
1638 + }
1639 + return event.detail === 0 && !event.pointerType;
1640 +}
1641 +function isMouseLikePointerType(pointerType, strict) {
1642 + const values = ["mouse", "pen"];
1643 + if (!strict) {
1644 + values.push("", void 0);
1645 + }
1646 + return values.includes(pointerType);
1647 +}
1648 +function isClickLikeEvent(event) {
1649 + const type = event.type;
1650 + return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup";
1651 +}
1652 +
1653 +// node_modules/@base-ui/utils/shadowDom.mjs
1654 +function activeElement(doc) {
1655 + let element = doc.activeElement;
1656 + while (element?.shadowRoot?.activeElement != null) {
1657 + element = element.shadowRoot.activeElement;
1658 + }
1659 + return element;
1660 +}
1661 +function contains(parent, child) {
1662 + if (!parent || !child) {
1663 + return false;
1664 + }
1665 + const rootNode = child.getRootNode?.();
1666 + if (parent.contains(child)) {
1667 + return true;
1668 + }
1669 + if (rootNode && isShadowRoot(rootNode)) {
1670 + let next = child;
1671 + while (next) {
1672 + if (parent === next) {
1673 + return true;
1674 + }
1675 + next = next.parentNode || next.host;
1676 + }
1677 + }
1678 + return false;
1679 +}
1680 +function getTarget(event) {
1681 + if ("composedPath" in event) {
1682 + return event.composedPath()[0] ?? event.target;
1683 + }
1684 + return event.target;
1685 +}
1686 +
1687 +// node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs
1688 +var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable";
1689 +var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
1690 +
1691 +// node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs
1692 +var open = "data-open";
1693 +var closed = "data-closed";
1694 +var anchorHidden = "data-anchor-hidden";
1695 +
1696 +// node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs
1697 +var CommonTriggerDataAttributes_exports = {};
1698 +__export(CommonTriggerDataAttributes_exports, {
1699 + popupOpen: () => popupOpen,
1700 + pressed: () => pressed
1701 +});
1702 +var popupOpen = "data-popup-open";
1703 +var pressed = "data-pressed";
1704 +
1705 +// node_modules/@base-ui/react/utils/popupStateMapping.mjs
1706 +var TRIGGER_HOOK = {
1707 + [popupOpen]: ""
1708 +};
1709 +var PRESSABLE_TRIGGER_HOOK = {
1710 + [popupOpen]: "",
1711 + [pressed]: ""
1712 +};
1713 +var POPUP_OPEN_HOOK = {
1714 + [open]: ""
1715 +};
1716 +var POPUP_CLOSED_HOOK = {
1717 + [closed]: ""
1718 +};
1719 +var ANCHOR_HIDDEN_HOOK = {
1720 + [anchorHidden]: ""
1721 +};
1722 +var triggerOpenStateMapping = {
1723 + open(value) {
1724 + if (value) {
1725 + return TRIGGER_HOOK;
1726 + }
1727 + return null;
1728 + }
1729 +};
1730 +var popupStateMapping = {
1731 + open(value) {
1732 + if (value) {
1733 + return POPUP_OPEN_HOOK;
1734 + }
1735 + return POPUP_CLOSED_HOOK;
1736 + },
1737 + anchorHidden(value) {
1738 + if (value) {
1739 + return ANCHOR_HIDDEN_HOOK;
1740 + }
1741 + return null;
1742 + }
1743 +};
1744 +var popupTransitionStateMapping = {
1745 + ...popupStateMapping,
1746 + ...transitionStatusMapping
1747 +};
1748 +
1749 +// node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs
1750 +var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen;
1751 +var triggerDisabled = "data-trigger-disabled";
1752 +
1753 +// node_modules/@base-ui/react/floating-ui-react/utils/element.mjs
1754 +function isTargetInsideEnabledTrigger(target, triggerElements) {
1755 + if (!isElement(target)) {
1756 + return false;
1757 + }
1758 + const targetElement = target;
1759 + if (triggerElements.hasElement(targetElement)) {
1760 + return !targetElement.hasAttribute(triggerDisabled);
1761 + }
1762 + for (const [, trigger] of triggerElements.entries()) {
1763 + if (contains(trigger, targetElement)) {
1764 + return !trigger.hasAttribute(triggerDisabled);
1765 + }
1766 + }
1767 + return false;
1768 +}
1769 +function isEventTargetWithin(event, node) {
1770 + if (node == null) {
1771 + return false;
1772 + }
1773 + if ("composedPath" in event) {
1774 + return event.composedPath().includes(node);
1775 + }
1776 + const eventAgain = event;
1777 + return eventAgain.target != null && node.contains(eventAgain.target);
1778 +}
1779 +function isRootElement(element) {
1780 + return element.matches("html,body");
1781 +}
1782 +function isTypeableElement(element) {
1783 + return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
1784 +}
1785 +function isInteractiveElement(element) {
1786 + return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null;
1787 +}
1788 +function matchesFocusVisible(element) {
1789 + if (!element || parts_exports.env.jsdom) {
1790 + return true;
1791 + }
1792 + try {
1793 + return element.matches(":focus-visible");
1794 + } catch (_e) {
1795 + return true;
1796 + }
1797 +}
1798 +
1799 +// node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs
1800 +function resolveValue(value, pointerType) {
1801 + if (pointerType != null && !isMouseLikePointerType(pointerType)) {
1802 + return 0;
1803 + }
1804 + if (typeof value === "function") {
1805 + return value();
1806 + }
1807 + return value;
1808 +}
1809 +function getDelay(value, prop, pointerType) {
1810 + const result = resolveValue(value, pointerType);
1811 + if (typeof result === "number") {
1812 + return result;
1813 + }
1814 + return result?.[prop];
1815 +}
1816 +function getRestMs(value) {
1817 + if (typeof value === "function") {
1818 + return value();
1819 + }
1820 + return value;
1821 +}
1822 +function isClickLikeOpenEvent(openEventType, interactedInside) {
1823 + return interactedInside || openEventType === "click" || openEventType === "mousedown";
1824 +}
1825 +function isHoverOpenEvent(openEventType) {
1826 + return openEventType?.includes("mouse") && openEventType !== "mousedown";
1827 +}
1828 +
1829 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
1830 +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
1831 +var FloatingDelayGroupContext = /* @__PURE__ */ React11.createContext({
1832 + hasProvider: false,
1833 + timeoutMs: 0,
1834 + delayRef: {
1835 + current: 0
1836 + },
1837 + initialDelayRef: {
1838 + current: 0
1839 + },
1840 + timeout: new Timeout(),
1841 + currentIdRef: {
1842 + current: null
1843 + },
1844 + currentContextRef: {
1845 + current: null
1846 + }
1847 +});
1848 +if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext";
1849 +function resetDelayRef(delayRef, initialDelayRef) {
1850 + delayRef.current = initialDelayRef.current;
1851 +}
1852 +function FloatingDelayGroup(props) {
1853 + const {
1854 + children,
1855 + delay,
1856 + timeoutMs = 0
1857 + } = props;
1858 + const delayRef = React11.useRef(delay);
1859 + const initialDelayRef = React11.useRef(delay);
1860 + const currentIdRef = React11.useRef(null);
1861 + const currentContextRef = React11.useRef(null);
1862 + const timeout = useTimeout();
1863 + useIsoLayoutEffect(() => {
1864 + initialDelayRef.current = delay;
1865 + if (!currentIdRef.current) {
1866 + delayRef.current = delay;
1867 + return;
1868 + }
1869 + delayRef.current = {
1870 + open: getDelay(delayRef.current, "open"),
1871 + close: getDelay(delay, "close")
1872 + };
1873 + }, [delay, currentIdRef, delayRef, initialDelayRef]);
1874 + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingDelayGroupContext.Provider, {
1875 + value: React11.useMemo(() => ({
1876 + hasProvider: true,
1877 + delayRef,
1878 + initialDelayRef,
1879 + currentIdRef,
1880 + timeoutMs,
1881 + currentContextRef,
1882 + timeout
1883 + }), [timeoutMs, timeout]),
1884 + children
1885 + });
1886 +}
1887 +function useDelayGroup(context, options = {
1888 + open: false
1889 +}) {
1890 + const {
1891 + open: open2
1892 + } = options;
1893 + const store2 = "rootStore" in context ? context.rootStore : context;
1894 + const floatingId = store2.useState("floatingId");
1895 + const groupContext = React11.useContext(FloatingDelayGroupContext);
1896 + const {
1897 + currentIdRef,
1898 + delayRef,
1899 + timeoutMs,
1900 + initialDelayRef,
1901 + currentContextRef,
1902 + hasProvider,
1903 + timeout
1904 + } = groupContext;
1905 + const [isInstantPhase, setIsInstantPhase] = React11.useState(false);
1906 + const openRef = React11.useRef(open2);
1907 + useIsoLayoutEffect(() => {
1908 + openRef.current = open2;
1909 + }, [open2]);
1910 + useIsoLayoutEffect(() => {
1911 + function unset() {
1912 + currentContextRef.current?.setIsInstantPhase(false);
1913 + currentIdRef.current = null;
1914 + currentContextRef.current = null;
1915 + delayRef.current = initialDelayRef.current;
1916 + timeout.clear();
1917 + }
1918 + if (!currentIdRef.current) {
1919 + return void 0;
1920 + }
1921 + if (!open2 && currentIdRef.current === floatingId) {
1922 + setIsInstantPhase(false);
1923 + if (timeoutMs) {
1924 + const closingId = floatingId;
1925 + timeout.start(timeoutMs, () => {
1926 + if (store2.select("open") || currentIdRef.current && currentIdRef.current !== closingId) {
1927 + return;
1928 + }
1929 + unset();
1930 + });
1931 + return () => {
1932 + if (openRef.current || currentIdRef.current !== closingId) {
1933 + timeout.clear();
1934 + }
1935 + };
1936 + }
1937 + unset();
1938 + }
1939 + return void 0;
1940 + }, [open2, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store2]);
1941 + useIsoLayoutEffect(() => {
1942 + if (!open2) {
1943 + return;
1944 + }
1945 + const prevContext = currentContextRef.current;
1946 + const prevId = currentIdRef.current;
1947 + timeout.clear();
1948 + currentContextRef.current = {
1949 + onOpenChange: store2.setOpen,
1950 + setIsInstantPhase
1951 + };
1952 + currentIdRef.current = floatingId;
1953 + delayRef.current = {
1954 + open: 0,
1955 + close: getDelay(initialDelayRef.current, "close")
1956 + };
1957 + if (prevId !== null && prevId !== floatingId) {
1958 + setIsInstantPhase(true);
1959 + prevContext?.setIsInstantPhase(true);
1960 + prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none));
1961 + } else {
1962 + setIsInstantPhase(false);
1963 + prevContext?.setIsInstantPhase(false);
1964 + }
1965 + }, [open2, floatingId, store2, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]);
1966 + useIsoLayoutEffect(() => {
1967 + return () => {
1968 + if (currentIdRef.current === floatingId) {
1969 + currentContextRef.current = null;
1970 + if (!openRef.current) {
1971 + return;
1972 + }
1973 + currentIdRef.current = null;
1974 + resetDelayRef(delayRef, initialDelayRef);
1975 + timeout.clear();
1976 + }
1977 + };
1978 + }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]);
1979 + return React11.useMemo(() => ({
1980 + activeIdRef: currentIdRef,
1981 + hasProvider,
1982 + delayRef,
1983 + isInstantPhase
1984 + }), [currentIdRef, hasProvider, delayRef, isInstantPhase]);
1985 +}
1986 +
1987 +// node_modules/@base-ui/utils/mergeCleanups.mjs
1988 +function mergeCleanups(...cleanups) {
1989 + return () => {
1990 + for (let i = 0; i < cleanups.length; i += 1) {
1991 + const cleanup = cleanups[i];
1992 + if (cleanup) {
1993 + cleanup();
1994 + }
1995 + }
1996 + };
1997 +}
1998 +
1999 +// node_modules/@base-ui/react/utils/FocusGuard.mjs
2000 +var React12 = __toESM(require_react(), 1);
2001 +
2002 +// node_modules/@base-ui/utils/visuallyHidden.mjs
2003 +var visuallyHiddenBase = {
2004 + clipPath: "inset(50%)",
2005 + overflow: "hidden",
2006 + whiteSpace: "nowrap",
2007 + border: 0,
2008 + padding: 0,
2009 + width: 1,
2010 + height: 1,
2011 + margin: -1
2012 +};
2013 +var visuallyHidden = {
2014 + ...visuallyHiddenBase,
2015 + position: "fixed",
2016 + top: 0,
2017 + left: 0
2018 +};
2019 +var visuallyHiddenInput = {
2020 + ...visuallyHiddenBase,
2021 + position: "absolute"
2022 +};
2023 +
2024 +// node_modules/@base-ui/react/utils/FocusGuard.mjs
2025 +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
2026 +var FocusGuard = /* @__PURE__ */ React12.forwardRef(function FocusGuard2(props, ref) {
2027 + const [role, setRole] = React12.useState();
2028 + useIsoLayoutEffect(() => {
2029 + if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) {
2030 + setRole("button");
2031 + }
2032 + }, []);
2033 + const restProps = {
2034 + tabIndex: 0,
2035 + // Role is only for VoiceOver
2036 + role
2037 + };
2038 + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", {
2039 + ...props,
2040 + ref,
2041 + style: visuallyHidden,
2042 + "aria-hidden": role ? void 0 : true,
2043 + ...restProps,
2044 + "data-base-ui-focus-guard": ""
2045 + });
2046 +});
2047 +if (true) FocusGuard.displayName = "FocusGuard";
2048 +
2049 +// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
2050 +var min = Math.min;
2051 +var max = Math.max;
2052 +var round = Math.round;
2053 +var floor = Math.floor;
2054 +var createCoords = (v) => ({
2055 + x: v,
2056 + y: v
2057 +});
2058 +var oppositeSideMap = {
2059 + left: "right",
2060 + right: "left",
2061 + bottom: "top",
2062 + top: "bottom"
2063 +};
2064 +function clamp(start, value, end) {
2065 + return max(start, min(value, end));
2066 +}
2067 +function evaluate(value, param) {
2068 + return typeof value === "function" ? value(param) : value;
2069 +}
2070 +function getSide(placement) {
2071 + return placement.split("-")[0];
2072 +}
2073 +function getAlignment(placement) {
2074 + return placement.split("-")[1];
2075 +}
2076 +function getOppositeAxis(axis) {
2077 + return axis === "x" ? "y" : "x";
2078 +}
2079 +function getAxisLength(axis) {
2080 + return axis === "y" ? "height" : "width";
2081 +}
2082 +function getSideAxis(placement) {
2083 + const firstChar = placement[0];
2084 + return firstChar === "t" || firstChar === "b" ? "y" : "x";
2085 +}
2086 +function getAlignmentAxis(placement) {
2087 + return getOppositeAxis(getSideAxis(placement));
2088 +}
2089 +function getAlignmentSides(placement, rects, rtl) {
2090 + if (rtl === void 0) {
2091 + rtl = false;
2092 + }
2093 + const alignment = getAlignment(placement);
2094 + const alignmentAxis = getAlignmentAxis(placement);
2095 + const length = getAxisLength(alignmentAxis);
2096 + let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
2097 + if (rects.reference[length] > rects.floating[length]) {
2098 + mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
2099 + }
2100 + return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
2101 +}
2102 +function getExpandedPlacements(placement) {
2103 + const oppositePlacement = getOppositePlacement(placement);
2104 + return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
2105 +}
2106 +function getOppositeAlignmentPlacement(placement) {
2107 + return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
2108 +}
2109 +var lrPlacement = ["left", "right"];
2110 +var rlPlacement = ["right", "left"];
2111 +var tbPlacement = ["top", "bottom"];
2112 +var btPlacement = ["bottom", "top"];
2113 +function getSideList(side, isStart, rtl) {
2114 + switch (side) {
2115 + case "top":
2116 + case "bottom":
2117 + if (rtl) return isStart ? rlPlacement : lrPlacement;
2118 + return isStart ? lrPlacement : rlPlacement;
2119 + case "left":
2120 + case "right":
2121 + return isStart ? tbPlacement : btPlacement;
2122 + default:
2123 + return [];
2124 + }
2125 +}
2126 +function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
2127 + const alignment = getAlignment(placement);
2128 + let list = getSideList(getSide(placement), direction === "start", rtl);
2129 + if (alignment) {
2130 + list = list.map((side) => side + "-" + alignment);
2131 + if (flipAlignment) {
2132 + list = list.concat(list.map(getOppositeAlignmentPlacement));
2133 + }
2134 + }
2135 + return list;
2136 +}
2137 +function getOppositePlacement(placement) {
2138 + const side = getSide(placement);
2139 + return oppositeSideMap[side] + placement.slice(side.length);
2140 +}
2141 +function expandPaddingObject(padding) {
2142 + var _padding$top, _padding$right, _padding$bottom, _padding$left;
2143 + return {
2144 + top: (_padding$top = padding.top) != null ? _padding$top : 0,
2145 + right: (_padding$right = padding.right) != null ? _padding$right : 0,
2146 + bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
2147 + left: (_padding$left = padding.left) != null ? _padding$left : 0
2148 + };
2149 +}
2150 +function getPaddingObject(padding) {
2151 + return typeof padding !== "number" ? expandPaddingObject(padding) : {
2152 + top: padding,
2153 + right: padding,
2154 + bottom: padding,
2155 + left: padding
2156 + };
2157 +}
2158 +function rectToClientRect(rect) {
2159 + const {
2160 + x,
2161 + y,
2162 + width,
2163 + height
2164 + } = rect;
2165 + return {
2166 + width,
2167 + height,
2168 + top: y,
2169 + left: x,
2170 + right: x + width,
2171 + bottom: y + height,
2172 + x,
2173 + y
2174 + };
2175 +}
2176 +
2177 +// node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs
2178 +function isHiddenByStyles(styles) {
2179 + return styles.visibility === "hidden" || styles.visibility === "collapse";
2180 +}
2181 +function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) {
2182 + if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {
2183 + return false;
2184 + }
2185 + if (typeof element.checkVisibility === "function") {
2186 + return element.checkVisibility();
2187 + }
2188 + return styles.display !== "none" && styles.display !== "contents";
2189 +}
2190 +
2191 +// node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs
2192 +var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
2193 +function getParentElement(element) {
2194 + const assignedSlot = element.assignedSlot;
2195 + if (assignedSlot) {
2196 + return assignedSlot;
2197 + }
2198 + if (element.parentElement) {
2199 + return element.parentElement;
2200 + }
2201 + const rootNode = element.getRootNode();
2202 + return isShadowRoot(rootNode) ? rootNode.host : null;
2203 +}
2204 +function getDetailsSummary(details) {
2205 + for (const child of Array.from(details.children)) {
2206 + if (getNodeName(child) === "summary") {
2207 + return child;
2208 + }
2209 + }
2210 + return null;
2211 +}
2212 +function isWithinOpenDetailsSummary(element, details) {
2213 + const summary = getDetailsSummary(details);
2214 + return !!summary && (element === summary || contains(summary, element));
2215 +}
2216 +function isFocusableCandidate(element) {
2217 + const nodeName = element ? getNodeName(element) : "";
2218 + return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden");
2219 +}
2220 +function isFocusableElement(element) {
2221 + if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) {
2222 + return false;
2223 + }
2224 + for (let current = element; current; current = getParentElement(current)) {
2225 + const isAncestor = current !== element;
2226 + const isSlot = getNodeName(current) === "slot";
2227 + if (current.hasAttribute("inert")) {
2228 + return false;
2229 + }
2230 + if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) {
2231 + return false;
2232 + }
2233 + }
2234 + return true;
2235 +}
2236 +function isVisibleInTabbableTree(element, isAncestor) {
2237 + const styles = getComputedStyle2(element);
2238 + if (!isAncestor) {
2239 + return isElementVisible(element, styles);
2240 + }
2241 + return styles.display !== "none";
2242 +}
2243 +function getTabIndex(element) {
2244 + const tabIndex = element.tabIndex;
2245 + if (tabIndex < 0) {
2246 + const nodeName = getNodeName(element);
2247 + if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) {
2248 + return 0;
2249 + }
2250 + }
2251 + return tabIndex;
2252 +}
2253 +function getNamedRadioInput(element) {
2254 + if (getNodeName(element) !== "input") {
2255 + return null;
2256 + }
2257 + const input = element;
2258 + return input.type === "radio" && input.name !== "" ? input : null;
2259 +}
2260 +function isTabbableRadio(element, candidates) {
2261 + const input = getNamedRadioInput(element);
2262 + if (!input) {
2263 + return true;
2264 + }
2265 + const checkedRadio = candidates.find((candidate) => {
2266 + const radio = getNamedRadioInput(candidate);
2267 + return radio?.name === input.name && radio.form === input.form && radio.checked;
2268 + });
2269 + if (checkedRadio) {
2270 + return checkedRadio === input;
2271 + }
2272 + return candidates.find((candidate) => {
2273 + const radio = getNamedRadioInput(candidate);
2274 + return radio?.name === input.name && radio.form === input.form;
2275 + }) === input;
2276 +}
2277 +function getComposedChildren(container) {
2278 + if (isHTMLElement(container) && getNodeName(container) === "slot") {
2279 + const assignedElements = container.assignedElements({
2280 + flatten: true
2281 + });
2282 + if (assignedElements.length > 0) {
2283 + return assignedElements;
2284 + }
2285 + }
2286 + if (isHTMLElement(container) && container.shadowRoot) {
2287 + return Array.from(container.shadowRoot.children);
2288 + }
2289 + return Array.from(container.children);
2290 +}
2291 +function appendCandidates(container, list) {
2292 + getComposedChildren(container).forEach((child) => {
2293 + if (isFocusableCandidate(child)) {
2294 + list.push(child);
2295 + }
2296 + appendCandidates(child, list);
2297 + });
2298 +}
2299 +function appendMatchingElements(container, selector, list) {
2300 + getComposedChildren(container).forEach((child) => {
2301 + if (isHTMLElement(child) && child.matches(selector)) {
2302 + list.push(child);
2303 + }
2304 + appendMatchingElements(child, selector, list);
2305 + });
2306 +}
2307 +function focusable(container) {
2308 + const candidates = [];
2309 + appendCandidates(container, candidates);
2310 + return candidates.filter(isFocusableElement);
2311 +}
2312 +function tabbable(container) {
2313 + const candidates = focusable(container);
2314 + return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates));
2315 +}
2316 +function getTabbableIn(container, dir) {
2317 + const list = tabbable(container);
2318 + const len = list.length;
2319 + if (len === 0) {
2320 + return void 0;
2321 + }
2322 + const active = activeElement(ownerDocument(container));
2323 + const index2 = list.indexOf(active);
2324 + const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir;
2325 + return list[nextIndex];
2326 +}
2327 +function getNextTabbable(referenceElement) {
2328 + return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement;
2329 +}
2330 +function getPreviousTabbable(referenceElement) {
2331 + return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement;
2332 +}
2333 +function isOutsideEvent(event, container) {
2334 + const containerElement = container || event.currentTarget;
2335 + const relatedTarget = event.relatedTarget;
2336 + return !relatedTarget || !contains(containerElement, relatedTarget);
2337 +}
2338 +function disableFocusInside(container) {
2339 + const tabbableElements = tabbable(container);
2340 + tabbableElements.forEach((element) => {
2341 + element.dataset.tabindex = element.getAttribute("tabindex") || "";
2342 + element.setAttribute("tabindex", "-1");
2343 + });
2344 +}
2345 +function enableFocusInside(container) {
2346 + const elements = [];
2347 + appendMatchingElements(container, "[data-tabindex]", elements);
2348 + elements.forEach((element) => {
2349 + const tabindex = element.dataset.tabindex;
2350 + delete element.dataset.tabindex;
2351 + if (tabindex) {
2352 + element.setAttribute("tabindex", tabindex);
2353 + } else {
2354 + element.removeAttribute("tabindex");
2355 + }
2356 + });
2357 +}
2358 +
2359 +// node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs
2360 +function getNodeChildren(nodes, id, onlyOpenChildren = true) {
2361 + const directChildren = nodes.filter((node) => node.parentId === id);
2362 + return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
2363 +}
2364 +
2365 +// node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs
2366 +function createAttribute(name) {
2367 + return `data-base-ui-${name}`;
2368 +}
2369 +
2370 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
2371 +var React13 = __toESM(require_react(), 1);
2372 +var ReactDOM2 = __toESM(require_react_dom(), 1);
2373 +
2374 +// node_modules/@base-ui/react/internals/constants.mjs
2375 +var DISABLED_TRANSITIONS_STYLE = {
2376 + style: {
2377 + transition: "none"
2378 + }
2379 +};
2380 +var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore";
2381 +var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore";
2382 +var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`;
2383 +var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`;
2384 +var POPUP_COLLISION_AVOIDANCE = {
2385 + fallbackAxisSide: "end"
2386 +};
2387 +var ownerVisuallyHidden = {
2388 + clipPath: "inset(50%)",
2389 + position: "fixed",
2390 + top: 0,
2391 + left: 0
2392 +};
2393 +
2394 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
2395 +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
2396 +var PortalContext = /* @__PURE__ */ React13.createContext(null);
2397 +if (true) PortalContext.displayName = "PortalContext";
2398 +var usePortalContext = () => React13.useContext(PortalContext);
2399 +var attr = createAttribute("portal");
2400 +function useFloatingPortalNode(props = {}) {
2401 + const {
2402 + ref,
2403 + container: containerProp,
2404 + componentProps = EMPTY_OBJECT,
2405 + elementProps
2406 + } = props;
2407 + const uniqueId = useId();
2408 + const portalContext = usePortalContext();
2409 + const parentPortalNode = portalContext?.portalNode;
2410 + const [containerElement, setContainerElement] = React13.useState(null);
2411 + const [portalNode, setPortalNode] = React13.useState(null);
2412 + const setPortalNodeRef = useStableCallback((node) => {
2413 + if (node !== null) {
2414 + setPortalNode(node);
2415 + }
2416 + });
2417 + const containerRef = React13.useRef(null);
2418 + useIsoLayoutEffect(() => {
2419 + if (containerProp === null) {
2420 + if (containerRef.current) {
2421 + containerRef.current = null;
2422 + setPortalNode(null);
2423 + setContainerElement(null);
2424 + }
2425 + return;
2426 + }
2427 + const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body;
2428 + if (resolvedContainer == null) {
2429 + if (containerRef.current) {
2430 + containerRef.current = null;
2431 + setPortalNode(null);
2432 + setContainerElement(null);
2433 + }
2434 + return;
2435 + }
2436 + if (containerRef.current !== resolvedContainer) {
2437 + containerRef.current = resolvedContainer;
2438 + setPortalNode(null);
2439 + setContainerElement(resolvedContainer);
2440 + }
2441 + }, [containerProp, parentPortalNode]);
2442 + const portalElement = useRenderElement("div", componentProps, {
2443 + ref: [ref, setPortalNodeRef],
2444 + props: [{
2445 + id: uniqueId,
2446 + [attr]: ""
2447 + }, elementProps]
2448 + });
2449 + const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null;
2450 + return {
2451 + node: portalNode,
2452 + // `id` and `render` props can override or remove the generated ID. Use the exact
2453 + // rendered value so `aria-owns` never points at an ID absent from the DOM.
2454 + nodeId: /* @__PURE__ */ React13.isValidElement(portalElement) ? portalElement.props.id : void 0,
2455 + subtree: portalSubtree
2456 + };
2457 +}
2458 +var FloatingPortal = /* @__PURE__ */ React13.forwardRef(function FloatingPortal2(componentProps, forwardedRef) {
2459 + const {
2460 + render,
2461 + className,
2462 + style,
2463 + children,
2464 + container,
2465 + portalOwnerRole,
2466 + ...elementProps
2467 + } = componentProps;
2468 + const {
2469 + node: portalNode,
2470 + nodeId: portalNodeId,
2471 + subtree: portalSubtree
2472 + } = useFloatingPortalNode({
2473 + container,
2474 + ref: forwardedRef,
2475 + componentProps,
2476 + elementProps
2477 + });
2478 + const beforeOutsideRef = React13.useRef(null);
2479 + const afterOutsideRef = React13.useRef(null);
2480 + const beforeInsideRef = React13.useRef(null);
2481 + const afterInsideRef = React13.useRef(null);
2482 + const [focusManagerState, setFocusManagerState] = React13.useState(null);
2483 + const focusInsideDisabledRef = React13.useRef(false);
2484 + const modal = focusManagerState?.modal;
2485 + const open2 = focusManagerState?.open;
2486 + const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode;
2487 + React13.useEffect(() => {
2488 + if (!portalNode || modal) {
2489 + return void 0;
2490 + }
2491 + function onFocus(event) {
2492 + if (portalNode && event.relatedTarget && isOutsideEvent(event)) {
2493 + if (event.type === "focusin") {
2494 + if (focusInsideDisabledRef.current) {
2495 + enableFocusInside(portalNode);
2496 + focusInsideDisabledRef.current = false;
2497 + }
2498 + } else {
2499 + disableFocusInside(portalNode);
2500 + focusInsideDisabledRef.current = true;
2501 + }
2502 + }
2503 + }
2504 + return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true));
2505 + }, [portalNode, modal]);
2506 + useIsoLayoutEffect(() => {
2507 + if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) {
2508 + return;
2509 + }
2510 + enableFocusInside(portalNode);
2511 + focusInsideDisabledRef.current = false;
2512 + }, [open2, portalNode]);
2513 + const portalContextValue = React13.useMemo(() => ({
2514 + beforeOutsideRef,
2515 + afterOutsideRef,
2516 + beforeInsideRef,
2517 + afterInsideRef,
2518 + portalNode,
2519 + setFocusManagerState
2520 + }), [portalNode]);
2521 + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(React13.Fragment, {
2522 + children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(PortalContext.Provider, {
2523 + value: portalContextValue,
2524 + children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, {
2525 + "data-type": "outside",
2526 + ref: beforeOutsideRef,
2527 + onFocus: (event) => {
2528 + if (isOutsideEvent(event, portalNode)) {
2529 + beforeInsideRef.current?.focus();
2530 + } else {
2531 + const domReference = focusManagerState ? focusManagerState.domReference : null;
2532 + const prevTabbable = getPreviousTabbable(domReference);
2533 + prevTabbable?.focus();
2534 + }
2535 + }
2536 + }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", {
2537 + role: portalOwnerRole,
2538 + "aria-owns": portalNodeId,
2539 + style: ownerVisuallyHidden
2540 + }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, {
2541 + "data-type": "outside",
2542 + ref: afterOutsideRef,
2543 + onFocus: (event) => {
2544 + if (isOutsideEvent(event, portalNode)) {
2545 + afterInsideRef.current?.focus();
2546 + } else {
2547 + const domReference = focusManagerState ? focusManagerState.domReference : null;
2548 + const nextTabbable = getNextTabbable(domReference);
2549 + nextTabbable?.focus();
2550 + if (focusManagerState?.closeOnFocusOut) {
2551 + focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent));
2552 + }
2553 + }
2554 + }
2555 + })]
2556 + })]
2557 + });
2558 +});
2559 +if (true) FloatingPortal.displayName = "FloatingPortal";
2560 +
2561 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
2562 +var React14 = __toESM(require_react(), 1);
2563 +
2564 +// node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs
2565 +function createEventEmitter() {
2566 + const map = /* @__PURE__ */ new Map();
2567 + return {
2568 + emit(event, data) {
2569 + map.get(event)?.forEach((listener) => listener(data));
2570 + },
2571 + on(event, listener) {
2572 + if (!map.has(event)) {
2573 + map.set(event, /* @__PURE__ */ new Set());
2574 + }
2575 + map.get(event).add(listener);
2576 + },
2577 + off(event, listener) {
2578 + map.get(event)?.delete(listener);
2579 + }
2580 + };
2581 +}
2582 +
2583 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
2584 +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
2585 +var FloatingNodeContext = /* @__PURE__ */ React14.createContext(null);
2586 +if (true) FloatingNodeContext.displayName = "FloatingNodeContext";
2587 +var FloatingTreeContext = /* @__PURE__ */ React14.createContext(null);
2588 +if (true) FloatingTreeContext.displayName = "FloatingTreeContext";
2589 +var useFloatingParentNodeId = () => React14.useContext(FloatingNodeContext)?.id || null;
2590 +var useFloatingTree = (externalTree) => {
2591 + const contextTree = React14.useContext(FloatingTreeContext);
2592 + return externalTree ?? contextTree;
2593 +};
2594 +
2595 +// node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs
2596 +var React15 = __toESM(require_react(), 1);
2597 +function createVirtualElement(domElement, data) {
2598 + let offsetX = null;
2599 + let offsetY = null;
2600 + let isAutoUpdateEvent = false;
2601 + return {
2602 + contextElement: domElement || void 0,
2603 + getBoundingClientRect() {
2604 + const domRect = domElement?.getBoundingClientRect() || {
2605 + width: 0,
2606 + height: 0,
2607 + x: 0,
2608 + y: 0
2609 + };
2610 + const isXAxis = data.axis === "x" || data.axis === "both";
2611 + const isYAxis = data.axis === "y" || data.axis === "both";
2612 + const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch";
2613 + let width = domRect.width;
2614 + let height = domRect.height;
2615 + let x = domRect.x;
2616 + let y = domRect.y;
2617 + if (offsetX == null && data.x && isXAxis) {
2618 + offsetX = domRect.x - data.x;
2619 + }
2620 + if (offsetY == null && data.y && isYAxis) {
2621 + offsetY = domRect.y - data.y;
2622 + }
2623 + x -= offsetX || 0;
2624 + y -= offsetY || 0;
2625 + width = 0;
2626 + height = 0;
2627 + if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {
2628 + width = data.axis === "y" ? domRect.width : 0;
2629 + height = data.axis === "x" ? domRect.height : 0;
2630 + x = isXAxis && data.x != null ? data.x : x;
2631 + y = isYAxis && data.y != null ? data.y : y;
2632 + } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {
2633 + height = data.axis === "x" ? domRect.height : height;
2634 + width = data.axis === "y" ? domRect.width : width;
2635 + }
2636 + isAutoUpdateEvent = true;
2637 + return {
2638 + width,
2639 + height,
2640 + x,
2641 + y,
2642 + top: y,
2643 + right: x + width,
2644 + bottom: y + height,
2645 + left: x
2646 + };
2647 + }
2648 + };
2649 +}
2650 +function isMouseBasedEvent(event) {
2651 + return event != null && event.clientX != null;
2652 +}
2653 +function useClientPoint(context, props = {}) {
2654 + const {
2655 + enabled = true,
2656 + axis = "both"
2657 + } = props;
2658 + const store2 = "rootStore" in context ? context.rootStore : context;
2659 + const open2 = store2.useState("open");
2660 + const floating = store2.useState("floatingElement");
2661 + const domReference = store2.useState("domReferenceElement");
2662 + const dataRef = store2.context.dataRef;
2663 + const initialRef = React15.useRef(false);
2664 + const cleanupListenerRef = React15.useRef(null);
2665 + const [pointerType, setPointerType] = React15.useState();
2666 + const [reactive, setReactive] = React15.useState([]);
2667 + const resetReference = useStableCallback((reference2) => {
2668 + store2.set("positionReference", reference2);
2669 + });
2670 + const setReference = useStableCallback((newX, newY, referenceElement) => {
2671 + if (initialRef.current) {
2672 + return;
2673 + }
2674 + if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {
2675 + return;
2676 + }
2677 + store2.set("positionReference", createVirtualElement(referenceElement ?? domReference, {
2678 + x: newX,
2679 + y: newY,
2680 + axis,
2681 + dataRef,
2682 + pointerType
2683 + }));
2684 + });
2685 + const handleReferenceEnterOrMove = useStableCallback((event) => {
2686 + if (!open2) {
2687 + setReference(event.clientX, event.clientY, event.currentTarget);
2688 + } else if (!cleanupListenerRef.current) {
2689 + setReference(event.clientX, event.clientY, event.currentTarget);
2690 + setReactive([]);
2691 + }
2692 + });
2693 + const openCheck = isMouseLikePointerType(pointerType) ? floating : open2;
2694 + React15.useEffect(() => {
2695 + if (!enabled) {
2696 + resetReference(domReference);
2697 + return void 0;
2698 + }
2699 + if (!openCheck) {
2700 + return void 0;
2701 + }
2702 + function cleanupListener() {
2703 + cleanupListenerRef.current?.();
2704 + cleanupListenerRef.current = null;
2705 + }
2706 + const win = getWindow(floating);
2707 + function handleMouseMove(event) {
2708 + const target = getTarget(event);
2709 + if (!contains(floating, target)) {
2710 + setReference(event.clientX, event.clientY);
2711 + } else {
2712 + cleanupListener();
2713 + }
2714 + }
2715 + if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {
2716 + cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove);
2717 + } else {
2718 + resetReference(domReference);
2719 + }
2720 + return cleanupListener;
2721 + }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference, resetReference, reactive]);
2722 + React15.useEffect(() => () => {
2723 + store2.set("positionReference", null);
2724 + }, [store2]);
2725 + React15.useEffect(() => {
2726 + if (enabled && !floating) {
2727 + initialRef.current = false;
2728 + }
2729 + }, [enabled, floating]);
2730 + React15.useEffect(() => {
2731 + if (!enabled && open2) {
2732 + initialRef.current = true;
2733 + }
2734 + }, [enabled, open2]);
2735 + const reference = React15.useMemo(() => {
2736 + function setPointerTypeRef(event) {
2737 + setPointerType(event.pointerType);
2738 + }
2739 + return {
2740 + onPointerDown: setPointerTypeRef,
2741 + onPointerEnter: setPointerTypeRef,
2742 + onMouseMove: handleReferenceEnterOrMove,
2743 + onMouseEnter: handleReferenceEnterOrMove
2744 + };
2745 + }, [handleReferenceEnterOrMove]);
2746 + return React15.useMemo(() => enabled ? {
2747 + reference,
2748 + trigger: reference
2749 + } : {}, [enabled, reference]);
2750 +}
2751 +
2752 +// node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs
2753 +var React16 = __toESM(require_react(), 1);
2754 +function alwaysFalse() {
2755 + return false;
2756 +}
2757 +function normalizeProp(normalizable) {
2758 + return {
2759 + escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false,
2760 + outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true
2761 + };
2762 +}
2763 +function useDismiss(context, props = {}) {
2764 + const {
2765 + enabled = true,
2766 + escapeKey: escapeKey2 = true,
2767 + outsidePress: outsidePressProp = true,
2768 + outsidePressEvent = "sloppy",
2769 + referencePress = alwaysFalse,
2770 + bubbles,
2771 + externalTree
2772 + } = props;
2773 + const store2 = "rootStore" in context ? context.rootStore : context;
2774 + const open2 = store2.useState("open");
2775 + const floatingElement = store2.useState("floatingElement");
2776 + const {
2777 + dataRef,
2778 + events
2779 + } = store2.context;
2780 + const tree = useFloatingTree(externalTree);
2781 + const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false);
2782 + const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp;
2783 + const outsidePressEnabled = outsidePress2 !== false;
2784 + const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);
2785 + const {
2786 + escapeKey: escapeKeyBubbles,
2787 + outsidePress: outsidePressBubbles
2788 + } = normalizeProp(bubbles);
2789 + const pressStartedInsideRef = React16.useRef(false);
2790 + const pressStartPreventedRef = React16.useRef(false);
2791 + const suppressNextOutsideClickRef = React16.useRef(false);
2792 + const sawPressWhileOpenRef = React16.useRef(false);
2793 + const isComposingRef = React16.useRef(false);
2794 + const currentPointerTypeRef = React16.useRef("");
2795 + const touchStateRef = React16.useRef(null);
2796 + const cancelDismissOnEndTimeout = useTimeout();
2797 + const clearInsideReactTreeTimeout = useTimeout();
2798 + const clearInsideReactTree = useStableCallback(() => {
2799 + clearInsideReactTreeTimeout.clear();
2800 + dataRef.current.insideReactTree = false;
2801 + });
2802 + const hasBlockingChild = useStableCallback((bubbleKey) => {
2803 + const nodeId = dataRef.current.floatingContext?.nodeId;
2804 + const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];
2805 + return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]);
2806 + });
2807 + const isEventWithinOwnElements = useStableCallback((event) => {
2808 + return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"));
2809 + });
2810 + const closeOnReferencePress = useStableCallback((event) => {
2811 + if (!referencePress()) {
2812 + return;
2813 + }
2814 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent));
2815 + });
2816 + const closeOnEscapeKeyDown = useStableCallback((event) => {
2817 + if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") {
2818 + return;
2819 + }
2820 + if (isComposingRef.current) {
2821 + return;
2822 + }
2823 + if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) {
2824 + return;
2825 + }
2826 + const native = isReactEvent(event) ? event.nativeEvent : event;
2827 + const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native);
2828 + store2.setOpen(false, eventDetails);
2829 + if (!eventDetails.isCanceled) {
2830 + event.preventDefault();
2831 + }
2832 + if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {
2833 + event.stopPropagation();
2834 + }
2835 + });
2836 + const markInsideReactTree = useStableCallback(() => {
2837 + dataRef.current.insideReactTree = true;
2838 + clearInsideReactTreeTimeout.start(0, clearInsideReactTree);
2839 + });
2840 + const markPressStartedInsideReactTree = useStableCallback((event) => {
2841 + if (!open2 || !enabled || event.button !== 0) {
2842 + return;
2843 + }
2844 + const target = getTarget(event.nativeEvent);
2845 + if (!contains(store2.select("floatingElement"), target)) {
2846 + return;
2847 + }
2848 + if (!pressStartedInsideRef.current) {
2849 + pressStartedInsideRef.current = true;
2850 + pressStartPreventedRef.current = false;
2851 + }
2852 + });
2853 + const markInsidePressStartPrevented = useStableCallback((event) => {
2854 + if (!open2 || !enabled) {
2855 + return;
2856 + }
2857 + if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {
2858 + return;
2859 + }
2860 + if (pressStartedInsideRef.current) {
2861 + pressStartPreventedRef.current = true;
2862 + }
2863 + });
2864 + React16.useEffect(() => {
2865 + function handleOpenChange(details) {
2866 + if (!details.open) {
2867 + sawPressWhileOpenRef.current = false;
2868 + }
2869 + }
2870 + events.on("openchange", handleOpenChange);
2871 + return () => {
2872 + events.off("openchange", handleOpenChange);
2873 + };
2874 + }, [events]);
2875 + React16.useEffect(() => {
2876 + if (!open2 || !enabled) {
2877 + if (!open2) {
2878 + sawPressWhileOpenRef.current = false;
2879 + }
2880 + return clearInsideReactTree;
2881 + }
2882 + dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;
2883 + dataRef.current.__outsidePressBubbles = outsidePressBubbles;
2884 + const compositionTimeout = new Timeout();
2885 + const preventedPressSuppressionTimeout = new Timeout();
2886 + const doc = ownerDocument(floatingElement);
2887 + function handleCompositionStart() {
2888 + compositionTimeout.clear();
2889 + isComposingRef.current = true;
2890 + }
2891 + function handleCompositionEnd() {
2892 + compositionTimeout.start(
2893 + // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
2894 + // Only apply to WebKit for the test to remain 0ms.
2895 + parts_exports.engine.webkit ? 5 : 0,
2896 + () => {
2897 + isComposingRef.current = false;
2898 + }
2899 + );
2900 + }
2901 + function suppressImmediateOutsideClickAfterPreventedStart() {
2902 + suppressNextOutsideClickRef.current = true;
2903 + preventedPressSuppressionTimeout.start(0, () => {
2904 + suppressNextOutsideClickRef.current = false;
2905 + });
2906 + }
2907 + function resetPressStartState() {
2908 + pressStartedInsideRef.current = false;
2909 + pressStartPreventedRef.current = false;
2910 + }
2911 + function getOutsidePressEvent() {
2912 + const type = currentPointerTypeRef.current;
2913 + const computedType = type === "pen" || !type ? "mouse" : type;
2914 + const outsidePressEventValue = getOutsidePressEventProp();
2915 + const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue;
2916 + if (typeof resolved === "string") {
2917 + return resolved;
2918 + }
2919 + return resolved[computedType];
2920 + }
2921 + function shouldIgnoreEvent(event) {
2922 + const computedOutsidePressEvent = getOutsidePressEvent();
2923 + return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click";
2924 + }
2925 + function isEventWithinFloatingTree(event) {
2926 + const nodeId = dataRef.current.floatingContext?.nodeId;
2927 + const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating));
2928 + return isEventWithinOwnElements(event) || targetIsInsideChildren;
2929 + }
2930 + function closeOnPressOutside(event) {
2931 + if (shouldIgnoreEvent(event)) {
2932 + if (event.type !== "click" && !isEventWithinOwnElements(event)) {
2933 + preventedPressSuppressionTimeout.clear();
2934 + suppressNextOutsideClickRef.current = false;
2935 + }
2936 + clearInsideReactTree();
2937 + return;
2938 + }
2939 + if (dataRef.current.insideReactTree) {
2940 + clearInsideReactTree();
2941 + return;
2942 + }
2943 + const target = getTarget(event);
2944 + const inertSelector = `[${createAttribute("inert")}]`;
2945 + const targetRoot = isElement(target) ? target.getRootNode() : null;
2946 + const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store2.select("floatingElement"))).querySelectorAll(inertSelector));
2947 + const triggers = store2.context.triggerElements;
2948 + if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) {
2949 + return;
2950 + }
2951 + let targetRootAncestor = isElement(target) ? target : null;
2952 + while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {
2953 + const nextParent = getParentNode(targetRootAncestor);
2954 + if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {
2955 + break;
2956 + }
2957 + targetRootAncestor = nextParent;
2958 + }
2959 + if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
2960 + !contains(target, store2.select("floatingElement")) && // If the target root element contains none of the markers, then the
2961 + // element was injected after the floating element rendered.
2962 + markers.every((marker) => !contains(targetRootAncestor, marker))) {
2963 + return;
2964 + }
2965 + if (isHTMLElement(target) && !("touches" in event)) {
2966 + const lastTraversableNode = isLastTraversableNode(target);
2967 + const style = getComputedStyle2(target);
2968 + const scrollRe = /auto|scroll/;
2969 + const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);
2970 + const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);
2971 + const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;
2972 + const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;
2973 + const isRTL7 = style.direction === "rtl";
2974 + const pressedVerticalScrollbar = canScrollY && (isRTL7 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);
2975 + const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;
2976 + if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {
2977 + return;
2978 + }
2979 + }
2980 + if (isEventWithinFloatingTree(event)) {
2981 + return;
2982 + }
2983 + if (getOutsidePressEvent() === "intentional") {
2984 + if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) {
2985 + return;
2986 + }
2987 + if (suppressNextOutsideClickRef.current) {
2988 + preventedPressSuppressionTimeout.clear();
2989 + suppressNextOutsideClickRef.current = false;
2990 + return;
2991 + }
2992 + }
2993 + if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
2994 + return;
2995 + }
2996 + if (hasBlockingChild("__outsidePressBubbles")) {
2997 + return;
2998 + }
2999 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event));
3000 + clearInsideReactTree();
3001 + }
3002 + function handlePointerDown(event) {
3003 + if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) {
3004 + return;
3005 + }
3006 + closeOnPressOutside(event);
3007 + }
3008 + function handleTouchStart(event) {
3009 + if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) {
3010 + return;
3011 + }
3012 + const touch = event.touches[0];
3013 + if (touch) {
3014 + touchStateRef.current = {
3015 + startTime: Date.now(),
3016 + startX: touch.clientX,
3017 + startY: touch.clientY,
3018 + dismissOnTouchEnd: false,
3019 + dismissOnMouseDown: true
3020 + };
3021 + cancelDismissOnEndTimeout.start(1e3, () => {
3022 + if (touchStateRef.current) {
3023 + touchStateRef.current.dismissOnTouchEnd = false;
3024 + touchStateRef.current.dismissOnMouseDown = false;
3025 + }
3026 + });
3027 + }
3028 + }
3029 + function addTargetEventListenerOnce(event, listener) {
3030 + const target = getTarget(event);
3031 + if (!target) {
3032 + return;
3033 + }
3034 + const unsubscribe2 = addEventListener(target, event.type, () => {
3035 + listener(event);
3036 + unsubscribe2();
3037 + });
3038 + }
3039 + function handleTouchStartCapture(event) {
3040 + currentPointerTypeRef.current = "touch";
3041 + addTargetEventListenerOnce(event, handleTouchStart);
3042 + }
3043 + function closeOnPressOutsideCapture(event) {
3044 + cancelDismissOnEndTimeout.clear();
3045 + if (event.type === "pointerdown") {
3046 + if (event.button === 0) {
3047 + sawPressWhileOpenRef.current = true;
3048 + }
3049 + currentPointerTypeRef.current = event.pointerType;
3050 + }
3051 + if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {
3052 + return;
3053 + }
3054 + addTargetEventListenerOnce(event, (targetEvent) => {
3055 + if (targetEvent.type === "pointerdown") {
3056 + handlePointerDown(targetEvent);
3057 + } else {
3058 + closeOnPressOutside(targetEvent);
3059 + }
3060 + });
3061 + }
3062 + function handlePressEndCapture(event) {
3063 + if (event.type === "pointercancel") {
3064 + sawPressWhileOpenRef.current = false;
3065 + }
3066 + if (!pressStartedInsideRef.current) {
3067 + return;
3068 + }
3069 + const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;
3070 + resetPressStartState();
3071 + if (getOutsidePressEvent() !== "intentional") {
3072 + return;
3073 + }
3074 + if (event.type === "pointercancel") {
3075 + if (pressStartedInsideDefaultPrevented) {
3076 + suppressImmediateOutsideClickAfterPreventedStart();
3077 + }
3078 + return;
3079 + }
3080 + if (isEventWithinFloatingTree(event)) {
3081 + return;
3082 + }
3083 + if (pressStartedInsideDefaultPrevented) {
3084 + suppressImmediateOutsideClickAfterPreventedStart();
3085 + return;
3086 + }
3087 + if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
3088 + return;
3089 + }
3090 + preventedPressSuppressionTimeout.clear();
3091 + suppressNextOutsideClickRef.current = true;
3092 + clearInsideReactTree();
3093 + }
3094 + function handleTouchMove(event) {
3095 + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
3096 + return;
3097 + }
3098 + const touch = event.touches[0];
3099 + if (!touch) {
3100 + return;
3101 + }
3102 + const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);
3103 + const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);
3104 + const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
3105 + if (distance > 5) {
3106 + touchStateRef.current.dismissOnTouchEnd = true;
3107 + }
3108 + if (distance > 10) {
3109 + closeOnPressOutside(event);
3110 + cancelDismissOnEndTimeout.clear();
3111 + touchStateRef.current = null;
3112 + }
3113 + }
3114 + function handleTouchMoveCapture(event) {
3115 + addTargetEventListenerOnce(event, handleTouchMove);
3116 + }
3117 + function handleTouchEnd(event) {
3118 + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
3119 + return;
3120 + }
3121 + if (touchStateRef.current.dismissOnTouchEnd) {
3122 + closeOnPressOutside(event);
3123 + }
3124 + cancelDismissOnEndTimeout.clear();
3125 + touchStateRef.current = null;
3126 + }
3127 + function handleTouchEndCapture(event) {
3128 + addTargetEventListenerOnce(event, handleTouchEnd);
3129 + }
3130 + const unsubscribe = mergeCleanups(escapeKey2 && mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, {
3131 + capture: true,
3132 + passive: true
3133 + }), addEventListener(doc, "touchmove", handleTouchMoveCapture, {
3134 + capture: true,
3135 + passive: true
3136 + }), addEventListener(doc, "touchend", handleTouchEndCapture, {
3137 + capture: true,
3138 + passive: true
3139 + })));
3140 + return () => {
3141 + unsubscribe();
3142 + compositionTimeout.clear();
3143 + preventedPressSuppressionTimeout.clear();
3144 + resetPressStartState();
3145 + suppressNextOutsideClickRef.current = false;
3146 + clearInsideReactTree();
3147 + };
3148 + }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store2, cancelDismissOnEndTimeout]);
3149 + const reference = React16.useMemo(() => ({
3150 + onKeyDown: closeOnEscapeKeyDown,
3151 + onPointerDown: closeOnReferencePress,
3152 + onClick: closeOnReferencePress
3153 + }), [closeOnEscapeKeyDown, closeOnReferencePress]);
3154 + const floating = React16.useMemo(() => ({
3155 + onKeyDown: closeOnEscapeKeyDown,
3156 + // `onMouseDown` may be blocked if `event.preventDefault()` is called in
3157 + // `onPointerDown`, such as with <NumberField.ScrubArea>.
3158 + // See https://github.com/mui/base-ui/pull/3379
3159 + onPointerDown: markInsidePressStartPrevented,
3160 + onMouseDown: markInsidePressStartPrevented,
3161 + onClickCapture: markInsideReactTree,
3162 + onMouseDownCapture(event) {
3163 + markInsideReactTree();
3164 + markPressStartedInsideReactTree(event);
3165 + },
3166 + onPointerDownCapture(event) {
3167 + markInsideReactTree();
3168 + markPressStartedInsideReactTree(event);
3169 + },
3170 + onMouseUpCapture: markInsideReactTree,
3171 + onTouchEndCapture: markInsideReactTree,
3172 + onTouchMoveCapture: markInsideReactTree
3173 + }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);
3174 + return React16.useMemo(() => enabled ? {
3175 + reference,
3176 + floating,
3177 + trigger: reference
3178 + } : {}, [enabled, reference, floating]);
3179 +}
3180 +
3181 +// node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
3182 +var React24 = __toESM(require_react(), 1);
3183 +
3184 +// node_modules/@floating-ui/core/dist/floating-ui.core.mjs
3185 +function computeCoordsFromPlacement(_ref, placement, rtl) {
3186 + let {
3187 + reference,
3188 + floating
3189 + } = _ref;
3190 + const sideAxis = getSideAxis(placement);
3191 + const alignmentAxis = getAlignmentAxis(placement);
3192 + const alignLength = getAxisLength(alignmentAxis);
3193 + const side = getSide(placement);
3194 + const isVertical = sideAxis === "y";
3195 + const commonX = reference.x + reference.width / 2 - floating.width / 2;
3196 + const commonY = reference.y + reference.height / 2 - floating.height / 2;
3197 + const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
3198 + let coords;
3199 + switch (side) {
3200 + case "top":
3201 + coords = {
3202 + x: commonX,
3203 + y: reference.y - floating.height
3204 + };
3205 + break;
3206 + case "bottom":
3207 + coords = {
3208 + x: commonX,
3209 + y: reference.y + reference.height
3210 + };
3211 + break;
3212 + case "right":
3213 + coords = {
3214 + x: reference.x + reference.width,
3215 + y: commonY
3216 + };
3217 + break;
3218 + case "left":
3219 + coords = {
3220 + x: reference.x - floating.width,
3221 + y: commonY
3222 + };
3223 + break;
3224 + default:
3225 + coords = {
3226 + x: reference.x,
3227 + y: reference.y
3228 + };
3229 + }
3230 + const alignment = getAlignment(placement);
3231 + if (alignment) {
3232 + coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1);
3233 + }
3234 + return coords;
3235 +}
3236 +async function detectOverflow(state, options) {
3237 + var _await$platform$isEle;
3238 + if (options === void 0) {
3239 + options = {};
3240 + }
3241 + const {
3242 + x,
3243 + y,
3244 + platform: platform3,
3245 + rects,
3246 + elements,
3247 + strategy
3248 + } = state;
3249 + const {
3250 + boundary = "clippingAncestors",
3251 + rootBoundary = "viewport",
3252 + elementContext = "floating",
3253 + altBoundary = false,
3254 + padding = 0
3255 + } = evaluate(options, state);
3256 + const paddingObject = getPaddingObject(padding);
3257 + const altContext = elementContext === "floating" ? "reference" : "floating";
3258 + const element = elements[altBoundary ? altContext : elementContext];
3259 + const clippingClientRect = rectToClientRect(await platform3.getClippingRect({
3260 + element: ((_await$platform$isEle = await (platform3.isElement == null ? void 0 : platform3.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform3.getDocumentElement == null ? void 0 : platform3.getDocumentElement(elements.floating)),
3261 + boundary,
3262 + rootBoundary,
3263 + strategy
3264 + }));
3265 + const rect = elementContext === "floating" ? {
3266 + x,
3267 + y,
3268 + width: rects.floating.width,
3269 + height: rects.floating.height
3270 + } : rects.reference;
3271 + const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating));
3272 + const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || {
3273 + x: 1,
3274 + y: 1
3275 + };
3276 + const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({
3277 + elements,
3278 + rect,
3279 + offsetParent,
3280 + strategy
3281 + }) : rect);
3282 + return {
3283 + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
3284 + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
3285 + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
3286 + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
3287 + };
3288 +}
3289 +var MAX_RESET_COUNT = 50;
3290 +var computePosition = async (reference, floating, config) => {
3291 + const {
3292 + placement = "bottom",
3293 + strategy = "absolute",
3294 + middleware = [],
3295 + platform: platform3
3296 + } = config;
3297 + const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : {
3298 + ...platform3,
3299 + detectOverflow
3300 + };
3301 + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating));
3302 + let rects = await platform3.getElementRects({
3303 + reference,
3304 + floating,
3305 + strategy
3306 + });
3307 + let {
3308 + x,
3309 + y
3310 + } = computeCoordsFromPlacement(rects, placement, rtl);
3311 + let statefulPlacement = placement;
3312 + let resetCount = 0;
3313 + const middlewareData = {};
3314 + for (let i = 0; i < middleware.length; i++) {
3315 + const currentMiddleware = middleware[i];
3316 + if (!currentMiddleware) {
3317 + continue;
3318 + }
3319 + const {
3320 + name,
3321 + fn
3322 + } = currentMiddleware;
3323 + const {
3324 + x: nextX,
3325 + y: nextY,
3326 + data,
3327 + reset
3328 + } = await fn({
3329 + x,
3330 + y,
3331 + initialPlacement: placement,
3332 + placement: statefulPlacement,
3333 + strategy,
3334 + middlewareData,
3335 + rects,
3336 + platform: platformWithDetectOverflow,
3337 + elements: {
3338 + reference,
3339 + floating
3340 + }
3341 + });
3342 + x = nextX != null ? nextX : x;
3343 + y = nextY != null ? nextY : y;
3344 + middlewareData[name] = {
3345 + ...middlewareData[name],
3346 + ...data
3347 + };
3348 + if (reset && resetCount < MAX_RESET_COUNT) {
3349 + resetCount++;
3350 + if (typeof reset === "object") {
3351 + if (reset.placement) {
3352 + statefulPlacement = reset.placement;
3353 + }
3354 + if (reset.rects) {
3355 + rects = reset.rects === true ? await platform3.getElementRects({
3356 + reference,
3357 + floating,
3358 + strategy
3359 + }) : reset.rects;
3360 + }
3361 + ({
3362 + x,
3363 + y
3364 + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
3365 + }
3366 + i = -1;
3367 + }
3368 + }
3369 + return {
3370 + x,
3371 + y,
3372 + placement: statefulPlacement,
3373 + strategy,
3374 + middlewareData
3375 + };
3376 +};
3377 +var flip = function(options) {
3378 + if (options === void 0) {
3379 + options = {};
3380 + }
3381 + return {
3382 + name: "flip",
3383 + options,
3384 + async fn(state) {
3385 + var _middlewareData$arrow, _middlewareData$flip;
3386 + const {
3387 + placement,
3388 + middlewareData,
3389 + rects,
3390 + initialPlacement,
3391 + platform: platform3,
3392 + elements
3393 + } = state;
3394 + const {
3395 + mainAxis: checkMainAxis = true,
3396 + crossAxis: checkCrossAxis = true,
3397 + fallbackPlacements: specifiedFallbackPlacements,
3398 + fallbackStrategy = "bestFit",
3399 + fallbackAxisSideDirection = "none",
3400 + flipAlignment = true,
3401 + ...detectOverflowOptions
3402 + } = evaluate(options, state);
3403 + if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
3404 + return {};
3405 + }
3406 + const side = getSide(placement);
3407 + const initialSideAxis = getSideAxis(initialPlacement);
3408 + const isBasePlacement = getSide(initialPlacement) === initialPlacement;
3409 + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating));
3410 + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
3411 + const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
3412 + if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
3413 + fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
3414 + }
3415 + const placements2 = [initialPlacement, ...fallbackPlacements];
3416 + const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
3417 + const overflows = [];
3418 + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
3419 + if (checkMainAxis) {
3420 + overflows.push(overflow[side]);
3421 + }
3422 + if (checkCrossAxis) {
3423 + const sides2 = getAlignmentSides(placement, rects, rtl);
3424 + overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
3425 + }
3426 + overflowsData = [...overflowsData, {
3427 + placement,
3428 + overflows
3429 + }];
3430 + if (!overflows.every((side2) => side2 <= 0)) {
3431 + var _middlewareData$flip2, _overflowsData$filter;
3432 + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
3433 + const nextPlacement = placements2[nextIndex];
3434 + if (nextPlacement) {
3435 + const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
3436 + if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis
3437 + // overflows the main axis.
3438 + overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
3439 + return {
3440 + data: {
3441 + index: nextIndex,
3442 + overflows: overflowsData
3443 + },
3444 + reset: {
3445 + placement: nextPlacement
3446 + }
3447 + };
3448 + }
3449 + }
3450 + let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
3451 + if (!resetPlacement) {
3452 + switch (fallbackStrategy) {
3453 + case "bestFit": {
3454 + var _overflowsData$filter2;
3455 + const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => {
3456 + if (hasFallbackAxisSideDirection) {
3457 + const currentSideAxis = getSideAxis(d.placement);
3458 + return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal
3459 + // reading directions favoring greater width.
3460 + currentSideAxis === "y";
3461 + }
3462 + return true;
3463 + }).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
3464 + if (placement2) {
3465 + resetPlacement = placement2;
3466 + }
3467 + break;
3468 + }
3469 + case "initialPlacement":
3470 + resetPlacement = initialPlacement;
3471 + break;
3472 + }
3473 + }
3474 + if (placement !== resetPlacement) {
3475 + return {
3476 + reset: {
3477 + placement: resetPlacement
3478 + }
3479 + };
3480 + }
3481 + }
3482 + return {};
3483 + }
3484 + };
3485 +};
3486 +var originSides = /* @__PURE__ */ new Set(["left", "top"]);
3487 +async function convertValueToCoords(state, options) {
3488 + const {
3489 + placement,
3490 + platform: platform3,
3491 + elements
3492 + } = state;
3493 + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating));
3494 + const side = getSide(placement);
3495 + const alignment = getAlignment(placement);
3496 + const isVertical = getSideAxis(placement) === "y";
3497 + const mainAxisMulti = originSides.has(side) ? -1 : 1;
3498 + const crossAxisMulti = rtl && isVertical ? -1 : 1;
3499 + const rawValue = evaluate(options, state);
3500 + let {
3501 + mainAxis,
3502 + crossAxis,
3503 + alignmentAxis
3504 + } = typeof rawValue === "number" ? {
3505 + mainAxis: rawValue,
3506 + crossAxis: 0,
3507 + alignmentAxis: null
3508 + } : {
3509 + mainAxis: rawValue.mainAxis || 0,
3510 + crossAxis: rawValue.crossAxis || 0,
3511 + alignmentAxis: rawValue.alignmentAxis
3512 + };
3513 + if (alignment && typeof alignmentAxis === "number") {
3514 + crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
3515 + }
3516 + return isVertical ? {
3517 + x: crossAxis * crossAxisMulti,
3518 + y: mainAxis * mainAxisMulti
3519 + } : {
3520 + x: mainAxis * mainAxisMulti,
3521 + y: crossAxis * crossAxisMulti
3522 + };
3523 +}
3524 +var offset = function(options) {
3525 + if (options === void 0) {
3526 + options = 0;
3527 + }
3528 + return {
3529 + name: "offset",
3530 + options,
3531 + async fn(state) {
3532 + var _middlewareData$offse, _middlewareData$arrow;
3533 + const {
3534 + x,
3535 + y,
3536 + placement,
3537 + middlewareData
3538 + } = state;
3539 + const diffCoords = await convertValueToCoords(state, options);
3540 + if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
3541 + return {};
3542 + }
3543 + return {
3544 + x: x + diffCoords.x,
3545 + y: y + diffCoords.y,
3546 + data: {
3547 + ...diffCoords,
3548 + placement
3549 + }
3550 + };
3551 + }
3552 + };
3553 +};
3554 +var shift = function(options) {
3555 + if (options === void 0) {
3556 + options = {};
3557 + }
3558 + return {
3559 + name: "shift",
3560 + options,
3561 + async fn(state) {
3562 + const {
3563 + x,
3564 + y,
3565 + placement,
3566 + platform: platform3
3567 + } = state;
3568 + const {
3569 + mainAxis: checkMainAxis = true,
3570 + crossAxis: checkCrossAxis = false,
3571 + limiter = {
3572 + fn: (_ref) => {
3573 + let {
3574 + x: x2,
3575 + y: y2
3576 + } = _ref;
3577 + return {
3578 + x: x2,
3579 + y: y2
3580 + };
3581 + }
3582 + },
3583 + ...detectOverflowOptions
3584 + } = evaluate(options, state);
3585 + const coords = {
3586 + x,
3587 + y
3588 + };
3589 + const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
3590 + const crossAxis = getSideAxis(placement);
3591 + const mainAxis = getOppositeAxis(crossAxis);
3592 + let mainAxisCoord = coords[mainAxis];
3593 + let crossAxisCoord = coords[crossAxis];
3594 + const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]);
3595 + if (checkMainAxis) {
3596 + mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
3597 + }
3598 + if (checkCrossAxis) {
3599 + crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
3600 + }
3601 + const limitedCoords = limiter.fn({
3602 + ...state,
3603 + [mainAxis]: mainAxisCoord,
3604 + [crossAxis]: crossAxisCoord
3605 + });
3606 + return {
3607 + ...limitedCoords,
3608 + data: {
3609 + x: limitedCoords.x - x,
3610 + y: limitedCoords.y - y,
3611 + enabled: {
3612 + [mainAxis]: checkMainAxis,
3613 + [crossAxis]: checkCrossAxis
3614 + }
3615 + }
3616 + };
3617 + }
3618 + };
3619 +};
3620 +var limitShift = function(options) {
3621 + if (options === void 0) {
3622 + options = {};
3623 + }
3624 + return {
3625 + options,
3626 + fn(state) {
3627 + var _rawOffset$mainAxis, _rawOffset$crossAxis;
3628 + const {
3629 + x,
3630 + y,
3631 + placement,
3632 + rects,
3633 + middlewareData
3634 + } = state;
3635 + const {
3636 + offset: offset4 = 0,
3637 + mainAxis: checkMainAxis = true,
3638 + crossAxis: checkCrossAxis = true
3639 + } = evaluate(options, state);
3640 + const coords = {
3641 + x,
3642 + y
3643 + };
3644 + const crossAxis = getSideAxis(placement);
3645 + const mainAxis = getOppositeAxis(crossAxis);
3646 + let mainAxisCoord = coords[mainAxis];
3647 + let crossAxisCoord = coords[crossAxis];
3648 + const rawOffset = evaluate(offset4, state);
3649 + const computedOffset = typeof rawOffset === "number" ? {
3650 + mainAxis: rawOffset,
3651 + crossAxis: 0
3652 + } : {
3653 + mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
3654 + crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
3655 + };
3656 + if (checkMainAxis) {
3657 + const len = mainAxis === "y" ? "height" : "width";
3658 + const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
3659 + const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
3660 + if (mainAxisCoord < limitMin) {
3661 + mainAxisCoord = limitMin;
3662 + } else if (mainAxisCoord > limitMax) {
3663 + mainAxisCoord = limitMax;
3664 + }
3665 + }
3666 + if (checkCrossAxis) {
3667 + var _middlewareData$offse, _middlewareData$offse2;
3668 + const len = mainAxis === "y" ? "width" : "height";
3669 + const isOriginSide = originSides.has(getSide(placement));
3670 + const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
3671 + const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
3672 + if (crossAxisCoord < limitMin) {
3673 + crossAxisCoord = limitMin;
3674 + } else if (crossAxisCoord > limitMax) {
3675 + crossAxisCoord = limitMax;
3676 + }
3677 + }
3678 + return {
3679 + [mainAxis]: mainAxisCoord,
3680 + [crossAxis]: crossAxisCoord
3681 + };
3682 + }
3683 + };
3684 +};
3685 +var size = function(options) {
3686 + if (options === void 0) {
3687 + options = {};
3688 + }
3689 + return {
3690 + name: "size",
3691 + options,
3692 + async fn(state) {
3693 + const {
3694 + placement,
3695 + rects,
3696 + platform: platform3,
3697 + elements
3698 + } = state;
3699 + const {
3700 + apply = () => {
3701 + },
3702 + ...detectOverflowOptions
3703 + } = evaluate(options, state);
3704 + const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
3705 + const side = getSide(placement);
3706 + const alignment = getAlignment(placement);
3707 + const isYAxis = getSideAxis(placement) === "y";
3708 + const {
3709 + width,
3710 + height
3711 + } = rects.floating;
3712 + let heightSide;
3713 + let widthSide;
3714 + if (side === "top" || side === "bottom") {
3715 + heightSide = side;
3716 + widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right";
3717 + } else {
3718 + widthSide = side;
3719 + heightSide = alignment === "end" ? "top" : "bottom";
3720 + }
3721 + const maximumClippingHeight = height - overflow.top - overflow.bottom;
3722 + const maximumClippingWidth = width - overflow.left - overflow.right;
3723 + const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
3724 + const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
3725 + const shiftData = state.middlewareData.shift;
3726 + const noShift = !shiftData;
3727 + let availableHeight2 = overflowAvailableHeight;
3728 + let availableWidth2 = overflowAvailableWidth;
3729 + if (shiftData != null && shiftData.enabled.x) {
3730 + availableWidth2 = maximumClippingWidth;
3731 + }
3732 + if (shiftData != null && shiftData.enabled.y) {
3733 + availableHeight2 = maximumClippingHeight;
3734 + }
3735 + if (noShift && !alignment) {
3736 + if (isYAxis) {
3737 + availableWidth2 = width - 2 * max(overflow.left, overflow.right);
3738 + } else {
3739 + availableHeight2 = height - 2 * max(overflow.top, overflow.bottom);
3740 + }
3741 + }
3742 + await apply({
3743 + ...state,
3744 + availableWidth: availableWidth2,
3745 + availableHeight: availableHeight2
3746 + });
3747 + const nextDimensions = await platform3.getDimensions(elements.floating);
3748 + if (width !== nextDimensions.width || height !== nextDimensions.height) {
3749 + return {
3750 + reset: {
3751 + rects: true
3752 + }
3753 + };
3754 + }
3755 + return {};
3756 + }
3757 + };
3758 +};
3759 +
3760 +// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
3761 +function getCssDimensions(element) {
3762 + const css = getComputedStyle2(element);
3763 + let width = parseFloat(css.width) || 0;
3764 + let height = parseFloat(css.height) || 0;
3765 + const hasOffset = isHTMLElement(element);
3766 + const offsetWidth = hasOffset ? element.offsetWidth : width;
3767 + const offsetHeight = hasOffset ? element.offsetHeight : height;
3768 + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
3769 + if (shouldFallback) {
3770 + width = offsetWidth;
3771 + height = offsetHeight;
3772 + }
3773 + return {
3774 + width,
3775 + height,
3776 + $: shouldFallback
3777 + };
3778 +}
3779 +function unwrapElement(element) {
3780 + return !isElement(element) ? element.contextElement : element;
3781 +}
3782 +function getScale(element) {
3783 + const domElement = unwrapElement(element);
3784 + if (!isHTMLElement(domElement)) {
3785 + return createCoords(1);
3786 + }
3787 + const rect = domElement.getBoundingClientRect();
3788 + const {
3789 + width,
3790 + height,
3791 + $
3792 + } = getCssDimensions(domElement);
3793 + let x = ($ ? round(rect.width) : rect.width) / width;
3794 + let y = ($ ? round(rect.height) : rect.height) / height;
3795 + if (!x || !Number.isFinite(x)) {
3796 + x = 1;
3797 + }
3798 + if (!y || !Number.isFinite(y)) {
3799 + y = 1;
3800 + }
3801 + return {
3802 + x,
3803 + y
3804 + };
3805 +}
3806 +var noOffsets = /* @__PURE__ */ createCoords(0);
3807 +function getVisualOffsets(element) {
3808 + const win = getWindow(element);
3809 + if (!isWebKit() || !win.visualViewport) {
3810 + return noOffsets;
3811 + }
3812 + return {
3813 + x: win.visualViewport.offsetLeft,
3814 + y: win.visualViewport.offsetTop
3815 + };
3816 +}
3817 +function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
3818 + if (isFixed === void 0) {
3819 + isFixed = false;
3820 + }
3821 + return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
3822 +}
3823 +function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
3824 + if (includeScale === void 0) {
3825 + includeScale = false;
3826 + }
3827 + if (isFixedStrategy === void 0) {
3828 + isFixedStrategy = false;
3829 + }
3830 + const clientRect = element.getBoundingClientRect();
3831 + const domElement = unwrapElement(element);
3832 + let scale = createCoords(1);
3833 + if (includeScale) {
3834 + if (offsetParent) {
3835 + if (isElement(offsetParent)) {
3836 + scale = getScale(offsetParent);
3837 + }
3838 + } else {
3839 + scale = getScale(element);
3840 + }
3841 + }
3842 + const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
3843 + let x = (clientRect.left + visualOffsets.x) / scale.x;
3844 + let y = (clientRect.top + visualOffsets.y) / scale.y;
3845 + let width = clientRect.width / scale.x;
3846 + let height = clientRect.height / scale.y;
3847 + if (domElement && offsetParent) {
3848 + const win = getWindow(domElement);
3849 + const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
3850 + let currentWin = win;
3851 + let currentIFrame = getFrameElement(currentWin);
3852 + while (currentIFrame && offsetWin !== currentWin) {
3853 + const iframeScale = getScale(currentIFrame);
3854 + const iframeRect = currentIFrame.getBoundingClientRect();
3855 + const css = getComputedStyle2(currentIFrame);
3856 + const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
3857 + const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
3858 + x *= iframeScale.x;
3859 + y *= iframeScale.y;
3860 + width *= iframeScale.x;
3861 + height *= iframeScale.y;
3862 + x += left;
3863 + y += top;
3864 + currentWin = getWindow(currentIFrame);
3865 + currentIFrame = getFrameElement(currentWin);
3866 + }
3867 + }
3868 + return rectToClientRect({
3869 + width,
3870 + height,
3871 + x,
3872 + y
3873 + });
3874 +}
3875 +function getWindowScrollBarX(element, rect) {
3876 + const leftScroll = getNodeScroll(element).scrollLeft;
3877 + if (!rect) {
3878 + return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
3879 + }
3880 + return rect.left + leftScroll;
3881 +}
3882 +function getHTMLOffset(documentElement, scroll) {
3883 + const htmlRect = documentElement.getBoundingClientRect();
3884 + const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
3885 + const y = htmlRect.top + scroll.scrollTop;
3886 + return {
3887 + x,
3888 + y
3889 + };
3890 +}
3891 +function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
3892 + let {
3893 + elements,
3894 + rect,
3895 + offsetParent,
3896 + strategy
3897 + } = _ref;
3898 + const isFixed = strategy === "fixed";
3899 + const documentElement = getDocumentElement(offsetParent);
3900 + const topLayer = elements ? isTopLayer(elements.floating) : false;
3901 + if (offsetParent === documentElement || topLayer && isFixed) {
3902 + return rect;
3903 + }
3904 + let scroll = {
3905 + scrollLeft: 0,
3906 + scrollTop: 0
3907 + };
3908 + let scale = createCoords(1);
3909 + const offsets = createCoords(0);
3910 + const isOffsetParentAnElement = isHTMLElement(offsetParent);
3911 + if (isOffsetParentAnElement || !isFixed) {
3912 + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
3913 + scroll = getNodeScroll(offsetParent);
3914 + }
3915 + if (isOffsetParentAnElement) {
3916 + const offsetRect = getBoundingClientRect(offsetParent);
3917 + scale = getScale(offsetParent);
3918 + offsets.x = offsetRect.x + offsetParent.clientLeft;
3919 + offsets.y = offsetRect.y + offsetParent.clientTop;
3920 + }
3921 + }
3922 + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
3923 + return {
3924 + width: rect.width * scale.x,
3925 + height: rect.height * scale.y,
3926 + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
3927 + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
3928 + };
3929 +}
3930 +function getClientRects(element) {
3931 + return element.getClientRects ? Array.from(element.getClientRects()) : [];
3932 +}
3933 +function getDocumentRect(html) {
3934 + const scroll = getNodeScroll(html);
3935 + const body = html.ownerDocument.body;
3936 + const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
3937 + const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
3938 + let x = -scroll.scrollLeft + getWindowScrollBarX(html);
3939 + const y = -scroll.scrollTop;
3940 + if (getComputedStyle2(body).direction === "rtl") {
3941 + x += max(html.clientWidth, body.clientWidth) - width;
3942 + }
3943 + return {
3944 + width,
3945 + height,
3946 + x,
3947 + y
3948 + };
3949 +}
3950 +var SCROLLBAR_MAX = 25;
3951 +function getViewportRect(element, strategy, rootBoundary) {
3952 + if (rootBoundary === void 0) {
3953 + rootBoundary = "viewport";
3954 + }
3955 + const isLayoutViewport = rootBoundary === "layoutViewport";
3956 + const win = getWindow(element);
3957 + const html = getDocumentElement(element);
3958 + const visualViewport = win.visualViewport;
3959 + let width = html.clientWidth;
3960 + let height = html.clientHeight;
3961 + let x = 0;
3962 + let y = 0;
3963 + if (visualViewport) {
3964 + const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed";
3965 + if (isLayoutViewport) {
3966 + if (!layoutRelativeClientCoords) {
3967 + x = -visualViewport.offsetLeft;
3968 + y = -visualViewport.offsetTop;
3969 + }
3970 + } else {
3971 + width = visualViewport.width;
3972 + height = visualViewport.height;
3973 + if (layoutRelativeClientCoords) {
3974 + x = visualViewport.offsetLeft;
3975 + y = visualViewport.offsetTop;
3976 + }
3977 + }
3978 + }
3979 + const windowScrollbarX = getWindowScrollBarX(html);
3980 + if (windowScrollbarX <= 0) {
3981 + const doc = html.ownerDocument;
3982 + const body = doc.body;
3983 + const bodyStyles = getComputedStyle(body);
3984 + const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
3985 + const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
3986 + const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth;
3987 + if (gutter <= SCROLLBAR_MAX) {
3988 + width -= gutter;
3989 + }
3990 + }
3991 + return {
3992 + width,
3993 + height,
3994 + x,
3995 + y
3996 + };
3997 +}
3998 +function getInnerBoundingClientRect(element, strategy) {
3999 + const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
4000 + const top = clientRect.top + element.clientTop;
4001 + const left = clientRect.left + element.clientLeft;
4002 + const scale = getScale(element);
4003 + const width = element.clientWidth * scale.x;
4004 + const height = element.clientHeight * scale.y;
4005 + const x = left * scale.x;
4006 + const y = top * scale.y;
4007 + return {
4008 + width,
4009 + height,
4010 + x,
4011 + y
4012 + };
4013 +}
4014 +function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
4015 + let rect;
4016 + if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") {
4017 + rect = getViewportRect(element, strategy, clippingAncestor);
4018 + } else if (clippingAncestor === "document") {
4019 + rect = getDocumentRect(getDocumentElement(element));
4020 + } else if (isElement(clippingAncestor)) {
4021 + rect = getInnerBoundingClientRect(clippingAncestor, strategy);
4022 + } else {
4023 + const visualOffsets = getVisualOffsets(element);
4024 + rect = {
4025 + x: clippingAncestor.x - visualOffsets.x,
4026 + y: clippingAncestor.y - visualOffsets.y,
4027 + width: clippingAncestor.width,
4028 + height: clippingAncestor.height
4029 + };
4030 + }
4031 + return rectToClientRect(rect);
4032 +}
4033 +function getClippingElementAncestors(element, cache) {
4034 + const cachedResult = cache.get(element);
4035 + if (cachedResult) {
4036 + return cachedResult;
4037 + }
4038 + let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
4039 + let lastKeptComputedStyle = null;
4040 + const elementIsFixed = getComputedStyle2(element).position === "fixed";
4041 + let currentNode = elementIsFixed ? getParentNode(element) : element;
4042 + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
4043 + const computedStyle = getComputedStyle2(currentNode);
4044 + const currentNodeIsContaining = isContainingBlock(currentNode);
4045 + const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : "";
4046 + const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static");
4047 + if (shouldDropCurrentNode) {
4048 + result = result.filter((ancestor) => ancestor !== currentNode);
4049 + } else {
4050 + lastKeptComputedStyle = computedStyle;
4051 + }
4052 + currentNode = getParentNode(currentNode);
4053 + }
4054 + cache.set(element, result);
4055 + return result;
4056 +}
4057 +function getClippingRect(_ref) {
4058 + let {
4059 + element,
4060 + boundary,
4061 + rootBoundary,
4062 + strategy
4063 + } = _ref;
4064 + const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
4065 + const clippingAncestors = [...elementClippingAncestors, rootBoundary];
4066 + const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
4067 + let top = firstRect.top;
4068 + let right = firstRect.right;
4069 + let bottom = firstRect.bottom;
4070 + let left = firstRect.left;
4071 + for (let i = 1; i < clippingAncestors.length; i++) {
4072 + const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
4073 + top = max(rect.top, top);
4074 + right = min(rect.right, right);
4075 + bottom = min(rect.bottom, bottom);
4076 + left = max(rect.left, left);
4077 + }
4078 + return {
4079 + width: right - left,
4080 + height: bottom - top,
4081 + x: left,
4082 + y: top
4083 + };
4084 +}
4085 +function getDimensions(element) {
4086 + const {
4087 + width,
4088 + height
4089 + } = getCssDimensions(element);
4090 + return {
4091 + width,
4092 + height
4093 + };
4094 +}
4095 +function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
4096 + const isOffsetParentAnElement = isHTMLElement(offsetParent);
4097 + const documentElement = getDocumentElement(offsetParent);
4098 + const isFixed = strategy === "fixed";
4099 + const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
4100 + let scroll = {
4101 + scrollLeft: 0,
4102 + scrollTop: 0
4103 + };
4104 + const offsets = createCoords(0);
4105 + if (isOffsetParentAnElement || !isFixed) {
4106 + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
4107 + scroll = getNodeScroll(offsetParent);
4108 + }
4109 + if (isOffsetParentAnElement) {
4110 + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
4111 + offsets.x = offsetRect.x + offsetParent.clientLeft;
4112 + offsets.y = offsetRect.y + offsetParent.clientTop;
4113 + }
4114 + }
4115 + if (!isOffsetParentAnElement && documentElement) {
4116 + offsets.x = getWindowScrollBarX(documentElement);
4117 + }
4118 + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
4119 + const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
4120 + const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
4121 + return {
4122 + x,
4123 + y,
4124 + width: rect.width,
4125 + height: rect.height
4126 + };
4127 +}
4128 +function isStaticPositioned(element) {
4129 + return getComputedStyle2(element).position === "static";
4130 +}
4131 +function getTrueOffsetParent(element, polyfill) {
4132 + if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
4133 + return null;
4134 + }
4135 + if (polyfill) {
4136 + return polyfill(element);
4137 + }
4138 + let rawOffsetParent = element.offsetParent;
4139 + if (getDocumentElement(element) === rawOffsetParent) {
4140 + rawOffsetParent = rawOffsetParent.ownerDocument.body;
4141 + }
4142 + return rawOffsetParent;
4143 +}
4144 +function getOffsetParent(element, polyfill) {
4145 + const win = getWindow(element);
4146 + if (isTopLayer(element)) {
4147 + return win;
4148 + }
4149 + if (!isHTMLElement(element)) {
4150 + let svgOffsetParent = getParentNode(element);
4151 + while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
4152 + if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
4153 + return svgOffsetParent;
4154 + }
4155 + svgOffsetParent = getParentNode(svgOffsetParent);
4156 + }
4157 + return win;
4158 + }
4159 + let offsetParent = getTrueOffsetParent(element, polyfill);
4160 + while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
4161 + offsetParent = getTrueOffsetParent(offsetParent, polyfill);
4162 + }
4163 + if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
4164 + return win;
4165 + }
4166 + return offsetParent || getContainingBlock(element) || win;
4167 +}
4168 +var getElementRects = async function(data) {
4169 + const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
4170 + const getDimensionsFn = this.getDimensions;
4171 + const floatingDimensions = await getDimensionsFn(data.floating);
4172 + return {
4173 + reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
4174 + floating: {
4175 + x: 0,
4176 + y: 0,
4177 + width: floatingDimensions.width,
4178 + height: floatingDimensions.height
4179 + }
4180 + };
4181 +};
4182 +function isRTL(element) {
4183 + return getComputedStyle2(element).direction === "rtl";
4184 +}
4185 +var platform2 = {
4186 + convertOffsetParentRelativeRectToViewportRelativeRect,
4187 + getDocumentElement,
4188 + getClippingRect,
4189 + getOffsetParent,
4190 + getElementRects,
4191 + getClientRects,
4192 + getDimensions,
4193 + getScale,
4194 + isElement,
4195 + isRTL
4196 +};
4197 +function rectsAreEqual(a, b) {
4198 + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
4199 +}
4200 +function observeMove(element, onMove, ancestorResize) {
4201 + let io = null;
4202 + let timeoutId;
4203 + const root = getDocumentElement(element);
4204 + function cleanup() {
4205 + var _io;
4206 + clearTimeout(timeoutId);
4207 + (_io = io) == null || _io.disconnect();
4208 + io = null;
4209 + }
4210 + function refresh(skip, threshold) {
4211 + if (skip === void 0) {
4212 + skip = false;
4213 + }
4214 + if (threshold === void 0) {
4215 + threshold = 1;
4216 + }
4217 + cleanup();
4218 + const elementRectForRootMargin = element.getBoundingClientRect();
4219 + const {
4220 + left,
4221 + top,
4222 + width,
4223 + height
4224 + } = elementRectForRootMargin;
4225 + if (!skip) {
4226 + onMove();
4227 + }
4228 + if (!width || !height) {
4229 + return;
4230 + }
4231 + const insetTop = floor(top);
4232 + const insetRight = floor(root.clientWidth - (left + width));
4233 + const insetBottom = floor(root.clientHeight - (top + height));
4234 + const insetLeft = floor(left);
4235 + const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
4236 + const options = {
4237 + rootMargin,
4238 + threshold: max(0, min(1, threshold)) || 1
4239 + };
4240 + let isFirstUpdate = true;
4241 + function handleObserve(entries) {
4242 + const ratio = entries[0].intersectionRatio;
4243 + if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
4244 + return refresh();
4245 + }
4246 + if (ratio !== threshold) {
4247 + if (!isFirstUpdate) {
4248 + return refresh();
4249 + }
4250 + if (!ratio) {
4251 + timeoutId = setTimeout(() => {
4252 + refresh(false, 1e-7);
4253 + }, 1e3);
4254 + } else {
4255 + refresh(false, ratio);
4256 + }
4257 + }
4258 + isFirstUpdate = false;
4259 + }
4260 + try {
4261 + io = new IntersectionObserver(handleObserve, {
4262 + ...options,
4263 + // Handle <iframe>s
4264 + root: root.ownerDocument
4265 + });
4266 + } catch (_e) {
4267 + io = new IntersectionObserver(handleObserve, options);
4268 + }
4269 + io.observe(element);
4270 + }
4271 + const win = getWindow(element);
4272 + const handleResize = () => refresh(ancestorResize);
4273 + win.addEventListener("resize", handleResize);
4274 + refresh(true);
4275 + return () => {
4276 + win.removeEventListener("resize", handleResize);
4277 + cleanup();
4278 + };
4279 +}
4280 +function autoUpdate(reference, floating, update2, options) {
4281 + if (options === void 0) {
4282 + options = {};
4283 + }
4284 + const {
4285 + ancestorScroll = true,
4286 + ancestorResize = true,
4287 + elementResize = typeof ResizeObserver === "function",
4288 + layoutShift = typeof IntersectionObserver === "function",
4289 + animationFrame = false
4290 + } = options;
4291 + const referenceEl = unwrapElement(reference);
4292 + const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
4293 + ancestors.forEach((ancestor) => {
4294 + ancestorScroll && ancestor.addEventListener("scroll", update2);
4295 + ancestorResize && ancestor.addEventListener("resize", update2);
4296 + });
4297 + const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null;
4298 + let reobserveFrame = -1;
4299 + let resizeObserver = null;
4300 + if (elementResize) {
4301 + resizeObserver = new ResizeObserver((_ref) => {
4302 + let [firstEntry] = _ref;
4303 + if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
4304 + resizeObserver.unobserve(floating);
4305 + cancelAnimationFrame(reobserveFrame);
4306 + reobserveFrame = requestAnimationFrame(() => {
4307 + var _resizeObserver;
4308 + (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
4309 + });
4310 + }
4311 + update2();
4312 + });
4313 + if (referenceEl && !animationFrame) {
4314 + resizeObserver.observe(referenceEl);
4315 + }
4316 + if (floating) {
4317 + resizeObserver.observe(floating);
4318 + }
4319 + }
4320 + let frameId;
4321 + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
4322 + if (animationFrame) {
4323 + frameLoop();
4324 + }
4325 + function frameLoop() {
4326 + const nextRefRect = getBoundingClientRect(reference);
4327 + if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
4328 + update2();
4329 + }
4330 + prevRefRect = nextRefRect;
4331 + frameId = requestAnimationFrame(frameLoop);
4332 + }
4333 + update2();
4334 + return () => {
4335 + var _resizeObserver2;
4336 + ancestors.forEach((ancestor) => {
4337 + ancestorScroll && ancestor.removeEventListener("scroll", update2);
4338 + ancestorResize && ancestor.removeEventListener("resize", update2);
4339 + });
4340 + cleanupIo == null || cleanupIo();
4341 + (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
4342 + resizeObserver = null;
4343 + if (animationFrame) {
4344 + cancelAnimationFrame(frameId);
4345 + }
4346 + };
4347 +}
4348 +var offset2 = offset;
4349 +var shift2 = shift;
4350 +var flip2 = flip;
4351 +var size2 = size;
4352 +var limitShift2 = limitShift;
4353 +var computePosition2 = (reference, floating, options) => {
4354 + const cache = /* @__PURE__ */ new Map();
4355 + const mergedOptions = options != null ? options : {};
4356 + const platformWithCache = {
4357 + ...platform2,
4358 + ...mergedOptions.platform,
4359 + _c: cache
4360 + };
4361 + return computePosition(reference, floating, {
4362 + ...mergedOptions,
4363 + platform: platformWithCache
4364 + });
4365 +};
4366 +
4367 +// node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
4368 +var React17 = __toESM(require_react(), 1);
4369 +var import_react2 = __toESM(require_react(), 1);
4370 +var ReactDOM3 = __toESM(require_react_dom(), 1);
4371 +var isClient = typeof document !== "undefined";
4372 +var noop2 = function noop3() {
4373 +};
4374 +var index = isClient ? import_react2.useLayoutEffect : noop2;
4375 +function deepEqual(a, b) {
4376 + if (a === b) {
4377 + return true;
4378 + }
4379 + if (typeof a !== typeof b) {
4380 + return false;
4381 + }
4382 + if (typeof a === "function" && a.toString() === b.toString()) {
4383 + return true;
4384 + }
4385 + let length;
4386 + let i;
4387 + let keys;
4388 + if (a && b && typeof a === "object") {
4389 + if (Array.isArray(a)) {
4390 + length = a.length;
4391 + if (length !== b.length) return false;
4392 + for (i = length; i-- !== 0; ) {
4393 + if (!deepEqual(a[i], b[i])) {
4394 + return false;
4395 + }
4396 + }
4397 + return true;
4398 + }
4399 + keys = Object.keys(a);
4400 + length = keys.length;
4401 + if (length !== Object.keys(b).length) {
4402 + return false;
4403 + }
4404 + for (i = length; i-- !== 0; ) {
4405 + if (!{}.hasOwnProperty.call(b, keys[i])) {
4406 + return false;
4407 + }
4408 + }
4409 + for (i = length; i-- !== 0; ) {
4410 + const key = keys[i];
4411 + if (key === "_owner" && a.$$typeof) {
4412 + continue;
4413 + }
4414 + if (!deepEqual(a[key], b[key])) {
4415 + return false;
4416 + }
4417 + }
4418 + return true;
4419 + }
4420 + return a !== a && b !== b;
4421 +}
4422 +function getDPR(element) {
4423 + if (typeof window === "undefined") {
4424 + return 1;
4425 + }
4426 + const win = element.ownerDocument.defaultView || window;
4427 + return win.devicePixelRatio || 1;
4428 +}
4429 +function roundByDPR(element, value) {
4430 + const dpr = getDPR(element);
4431 + return Math.round(value * dpr) / dpr;
4432 +}
4433 +function useLatestRef(value) {
4434 + const ref = React17.useRef(value);
4435 + index(() => {
4436 + ref.current = value;
4437 + });
4438 + return ref;
4439 +}
4440 +function useFloating(options) {
4441 + if (options === void 0) {
4442 + options = {};
4443 + }
4444 + const {
4445 + placement = "bottom",
4446 + strategy = "absolute",
4447 + middleware = [],
4448 + platform: platform3,
4449 + elements: {
4450 + reference: externalReference,
4451 + floating: externalFloating
4452 + } = {},
4453 + transform = true,
4454 + whileElementsMounted,
4455 + open: open2
4456 + } = options;
4457 + const [data, setData] = React17.useState({
4458 + x: 0,
4459 + y: 0,
4460 + strategy,
4461 + placement,
4462 + middlewareData: {},
4463 + isPositioned: false
4464 + });
4465 + const [latestMiddleware, setLatestMiddleware] = React17.useState(middleware);
4466 + if (!deepEqual(latestMiddleware, middleware)) {
4467 + setLatestMiddleware(middleware);
4468 + }
4469 + const [_reference, _setReference] = React17.useState(null);
4470 + const [_floating, _setFloating] = React17.useState(null);
4471 + const setReference = React17.useCallback((node) => {
4472 + if (node !== referenceRef.current) {
4473 + referenceRef.current = node;
4474 + _setReference(node);
4475 + }
4476 + }, []);
4477 + const setFloating = React17.useCallback((node) => {
4478 + if (node !== floatingRef.current) {
4479 + floatingRef.current = node;
4480 + _setFloating(node);
4481 + }
4482 + }, []);
4483 + const referenceEl = externalReference || _reference;
4484 + const floatingEl = externalFloating || _floating;
4485 + const referenceRef = React17.useRef(null);
4486 + const floatingRef = React17.useRef(null);
4487 + const dataRef = React17.useRef(data);
4488 + const hasWhileElementsMounted = whileElementsMounted != null;
4489 + const whileElementsMountedRef = useLatestRef(whileElementsMounted);
4490 + const platformRef = useLatestRef(platform3);
4491 + const openRef = useLatestRef(open2);
4492 + const update2 = React17.useCallback(() => {
4493 + if (!referenceRef.current || !floatingRef.current) {
4494 + return;
4495 + }
4496 + const config = {
4497 + placement,
4498 + strategy,
4499 + middleware: latestMiddleware
4500 + };
4501 + if (platformRef.current) {
4502 + config.platform = platformRef.current;
4503 + }
4504 + computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {
4505 + const fullData = {
4506 + ...data2,
4507 + // The floating element's position may be recomputed while it's closed
4508 + // but still mounted (such as when transitioning out). To ensure
4509 + // `isPositioned` will be `false` initially on the next open, avoid
4510 + // setting it to `true` when `open === false` (must be specified).
4511 + isPositioned: openRef.current !== false
4512 + };
4513 + if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
4514 + dataRef.current = fullData;
4515 + ReactDOM3.flushSync(() => {
4516 + setData(fullData);
4517 + });
4518 + }
4519 + });
4520 + }, [latestMiddleware, placement, strategy, platformRef, openRef]);
4521 + index(() => {
4522 + if (open2 === false && dataRef.current.isPositioned) {
4523 + dataRef.current.isPositioned = false;
4524 + setData((data2) => ({
4525 + ...data2,
4526 + isPositioned: false
4527 + }));
4528 + }
4529 + }, [open2]);
4530 + const isMountedRef = React17.useRef(false);
4531 + index(() => {
4532 + isMountedRef.current = true;
4533 + return () => {
4534 + isMountedRef.current = false;
4535 + };
4536 + }, []);
4537 + index(() => {
4538 + if (referenceEl) referenceRef.current = referenceEl;
4539 + if (floatingEl) floatingRef.current = floatingEl;
4540 + if (referenceEl && floatingEl) {
4541 + if (whileElementsMountedRef.current) {
4542 + return whileElementsMountedRef.current(referenceEl, floatingEl, update2);
4543 + }
4544 + update2();
4545 + }
4546 + }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]);
4547 + const refs = React17.useMemo(() => ({
4548 + reference: referenceRef,
4549 + floating: floatingRef,
4550 + setReference,
4551 + setFloating
4552 + }), [setReference, setFloating]);
4553 + const elements = React17.useMemo(() => ({
4554 + reference: referenceEl,
4555 + floating: floatingEl
4556 + }), [referenceEl, floatingEl]);
4557 + const floatingStyles = React17.useMemo(() => {
4558 + const initialStyles = {
4559 + position: strategy,
4560 + left: 0,
4561 + top: 0
4562 + };
4563 + if (!elements.floating) {
4564 + return initialStyles;
4565 + }
4566 + const x = roundByDPR(elements.floating, data.x);
4567 + const y = roundByDPR(elements.floating, data.y);
4568 + if (transform) {
4569 + return {
4570 + ...initialStyles,
4571 + transform: "translate(" + x + "px, " + y + "px)",
4572 + ...getDPR(elements.floating) >= 1.5 && {
4573 + willChange: "transform"
4574 + }
4575 + };
4576 + }
4577 + return {
4578 + position: strategy,
4579 + left: x,
4580 + top: y
4581 + };
4582 + }, [strategy, transform, elements.floating, data.x, data.y]);
4583 + return React17.useMemo(() => ({
4584 + ...data,
4585 + update: update2,
4586 + refs,
4587 + elements,
4588 + floatingStyles
4589 + }), [data, update2, refs, elements, floatingStyles]);
4590 +}
4591 +var offset3 = (options, deps) => {
4592 + const result = offset2(options);
4593 + return {
4594 + name: result.name,
4595 + fn: result.fn,
4596 + options: [options, deps]
4597 + };
4598 +};
4599 +var shift3 = (options, deps) => {
4600 + const result = shift2(options);
4601 + return {
4602 + name: result.name,
4603 + fn: result.fn,
4604 + options: [options, deps]
4605 + };
4606 +};
4607 +var limitShift3 = (options, deps) => {
4608 + const result = limitShift2(options);
4609 + return {
4610 + fn: result.fn,
4611 + options: [options, deps]
4612 + };
4613 +};
4614 +var flip3 = (options, deps) => {
4615 + const result = flip2(options);
4616 + return {
4617 + name: result.name,
4618 + fn: result.fn,
4619 + options: [options, deps]
4620 + };
4621 +};
4622 +var size3 = (options, deps) => {
4623 + const result = size2(options);
4624 + return {
4625 + name: result.name,
4626 + fn: result.fn,
4627 + options: [options, deps]
4628 + };
4629 +};
4630 +
4631 +// node_modules/@base-ui/react/utils/popups/popupHandle.mjs
4632 +var BasePopupHandle = class {
4633 + /**
4634 + * Stores of every root currently using this handle, in attach order. A handle is meant to be used
4635 + * by a single mounted root, but roots can transiently overlap (e.g. during an animated route
4636 + * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of
4637 + * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first.
4638 + */
4639 + attachedStores = [];
4640 + /**
4641 + * Store of the root that currently controls the handle: the most recently attached one still
4642 + * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`.
4643 + */
4644 + attachedStoreValue = null;
4645 + /**
4646 + * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer.
4647 + */
4648 + storeListeners = /* @__PURE__ */ new Set();
4649 + /**
4650 + * Creates a handle backed by the store used while no root is attached.
4651 + *
4652 + * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached,
4653 + * so they can render and register without a mounted root. Triggers register into whichever store
4654 + * `store` currently resolves to, so while detached they live in this store's trigger map and
4655 + * migrate themselves to the root's store (and back) as it attaches/detaches.
4656 + * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces
4657 + * `MenuHandle.open()` in warning text.
4658 + * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is
4659 + * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to,
4660 + * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning.
4661 + */
4662 + constructor(fallbackStore, componentName, throwOnMissingTrigger = true) {
4663 + this.fallbackStore = fallbackStore;
4664 + this.componentName = componentName;
4665 + this.throwOnMissingTrigger = throwOnMissingTrigger;
4666 + }
4667 + get attachedStore() {
4668 + return this.attachedStoreValue;
4669 + }
4670 + /**
4671 + * Store that detached triggers read from: the attached root's store, or an inert fallback store
4672 + * used while no root is attached.
4673 + * @internal
4674 + */
4675 + get store() {
4676 + return this.attachedStoreValue ?? this.fallbackStore;
4677 + }
4678 + /**
4679 + * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on
4680 + * the handle during render because a handle can be shared by concurrent server-rendered requests.
4681 + * @internal
4682 + */
4683 + get serverStore() {
4684 + return this.fallbackStore;
4685 + }
4686 + /**
4687 + * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind
4688 + * when a root attaches or detaches. Returns a function that removes the listener.
4689 + * @internal
4690 + */
4691 + subscribeStore(listener) {
4692 + this.storeListeners.add(listener);
4693 + return () => {
4694 + this.storeListeners.delete(listener);
4695 + };
4696 + }
4697 + /**
4698 + * Points the handle at a root's store and notifies subscribers so detached triggers re-render and
4699 + * re-register into it (their registration effect migrates them when the store pointer changes).
4700 + * Returns a cleanup function that detaches the store again.
4701 + * @internal
4702 + */
4703 + attachStore(newStore) {
4704 + this.attachedStores.push(newStore);
4705 + this.setActiveStore(newStore);
4706 + if (true) {
4707 + if (this.attachedStores.length > 1) {
4708 + const dev = this;
4709 + (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => {
4710 + if (this.attachedStores.length > 1) {
4711 + console.warn("Base UI: A handle is attached to more than one mounted root at the same time. The most recently mounted root takes over and the previous one stops being controlled by the handle. A handle should be used by a single root that stays mounted for the lifetime of the handle.");
4712 + }
4713 + });
4714 + }
4715 + }
4716 + return () => {
4717 + const index2 = this.attachedStores.lastIndexOf(newStore);
4718 + if (index2 !== -1) {
4719 + this.attachedStores.splice(index2, 1);
4720 + }
4721 + this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null);
4722 + };
4723 + }
4724 + /**
4725 + * Sets the store that currently controls the handle and notifies subscribers when it changes, so
4726 + * detached triggers re-render and migrate their registration to the new store.
4727 + */
4728 + setActiveStore(store2) {
4729 + if (this.attachedStoreValue !== store2) {
4730 + this.attachedStoreValue = store2;
4731 + this.storeListeners.forEach((listener) => {
4732 + listener();
4733 + });
4734 + }
4735 + }
4736 + /**
4737 + * Opens the attached root's store and associates it with the trigger with the given id, or a
4738 + * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public
4739 + * `open()` method, which only narrows the parameter type.
4740 + *
4741 + * When a trigger id is given but no matching trigger is registered, anchored popups throw (see
4742 + * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead.
4743 + *
4744 + * This method should only be called in an event handler or an effect (not during rendering).
4745 + *
4746 + * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open
4747 + * without associating any trigger.
4748 + */
4749 + openByTrigger(triggerId) {
4750 + const attachedStore = this.attachedStore;
4751 + if (attachedStore === null) {
4752 + if (true) {
4753 + console.warn(`Base UI: ${this.componentName}Handle.open() was called while no root using this handle is mounted. The call was ignored; mount a root with this handle before opening it imperatively.`);
4754 + }
4755 + return;
4756 + }
4757 + let triggerElement;
4758 + if (triggerId) {
4759 + for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) {
4760 + triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId);
4761 + }
4762 + triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId);
4763 + }
4764 + if (triggerId && !triggerElement) {
4765 + if (this.throwOnMissingTrigger) {
4766 + throw new Error(true ? `Base UI: ${this.componentName}Handle.open() was called with the trigger id "${triggerId}", but no matching trigger is registered with this handle. An anchored popup cannot open without a trigger to anchor to. Pass the id of a mounted ${this.componentName}.Trigger that has this handle set on its "handle" prop.` : formatErrorMessage_default(99, this.componentName, triggerId, this.componentName));
4767 + }
4768 + if (true) {
4769 + console.warn(`Base UI: ${this.componentName}Handle.open: No trigger found with id "${triggerId}". The popup will open, but the trigger will not be associated with it.`);
4770 + }
4771 + }
4772 + attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement));
4773 + }
4774 + /**
4775 + * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning)
4776 + * while no root is attached. Shared by every concrete handle's public `close()` method.
4777 + *
4778 + * This method should only be called in an event handler or an effect (not during rendering).
4779 + */
4780 + closePopup() {
4781 + const attachedStore = this.attachedStore;
4782 + if (attachedStore === null) {
4783 + if (true) {
4784 + console.warn(`Base UI: ${this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`);
4785 + }
4786 + return;
4787 + }
4788 + attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction));
4789 + }
4790 +};
4791 +
4792 +// node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
4793 +var React22 = __toESM(require_react(), 1);
4794 +var ReactDOM4 = __toESM(require_react_dom(), 1);
4795 +
4796 +// node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
4797 +var React21 = __toESM(require_react(), 1);
4798 +
4799 +// node_modules/@base-ui/utils/store/useStore.mjs
4800 +var React19 = __toESM(require_react(), 1);
4801 +var import_shim = __toESM(require_shim(), 1);
4802 +var import_with_selector = __toESM(require_with_selector(), 1);
4803 +
4804 +// node_modules/@base-ui/utils/fastHooks.mjs
4805 +var React18 = __toESM(require_react(), 1);
4806 +var hooks = [];
4807 +var currentInstance = void 0;
4808 +function getInstance() {
4809 + return currentInstance;
4810 +}
4811 +function register(hook) {
4812 + hooks.push(hook);
4813 +}
4814 +function fastComponent(fn) {
4815 + const FastComponent = (props, forwardedRef) => {
4816 + const instance = useRefWithInit(createInstance).current;
4817 + let result;
4818 + try {
4819 + currentInstance = instance;
4820 + for (const hook of hooks) {
4821 + hook.before(instance);
4822 + }
4823 + result = fn(props, forwardedRef);
4824 + for (const hook of hooks) {
4825 + hook.after(instance);
4826 + }
4827 + instance.didInitialize = true;
4828 + } finally {
4829 + currentInstance = void 0;
4830 + }
4831 + return result;
4832 + };
4833 + FastComponent.displayName = fn.displayName || fn.name;
4834 + return FastComponent;
4835 +}
4836 +function fastComponentRef(fn) {
4837 + return /* @__PURE__ */ React18.forwardRef(fastComponent(fn));
4838 +}
4839 +function createInstance() {
4840 + return {
4841 + didInitialize: false
4842 + };
4843 +}
4844 +
4845 +// node_modules/@base-ui/utils/store/useStore.mjs
4846 +var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19);
4847 +var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy;
4848 +function useStore(store2, selector, a1, a2, a3) {
4849 + return useStoreImplementation(store2, selector, a1, a2, a3);
4850 +}
4851 +function useStoreR19(store2, selector, a1, a2, a3) {
4852 + const getSelection = React19.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]);
4853 + return (0, import_shim.useSyncExternalStore)(store2.subscribe, getSelection, getSelection);
4854 +}
4855 +register({
4856 + before(instance) {
4857 + instance.syncIndex = 0;
4858 + if (!instance.didInitialize) {
4859 + instance.syncTick = 1;
4860 + instance.syncHooks = [];
4861 + instance.didChangeStore = true;
4862 + instance.getSnapshot = () => {
4863 + let didChange2 = false;
4864 + for (let i = 0; i < instance.syncHooks.length; i += 1) {
4865 + const hook = instance.syncHooks[i];
4866 + const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3);
4867 + if (!Object.is(hook.value, value)) {
4868 + didChange2 = true;
4869 + hook.value = value;
4870 + }
4871 + }
4872 + if (didChange2) {
4873 + instance.syncTick += 1;
4874 + }
4875 + return instance.syncTick;
4876 + };
4877 + }
4878 + },
4879 + after(instance) {
4880 + if (instance.syncHooks.length > 0) {
4881 + if (instance.didChangeStore) {
4882 + instance.didChangeStore = false;
4883 + instance.subscribe = (onStoreChange) => {
4884 + const stores = /* @__PURE__ */ new Set();
4885 + for (const hook of instance.syncHooks) {
4886 + stores.add(hook.store);
4887 + }
4888 + const unsubscribes = [];
4889 + for (const store2 of stores) {
4890 + unsubscribes.push(store2.subscribe(onStoreChange));
4891 + }
4892 + return () => {
4893 + for (const unsubscribe of unsubscribes) {
4894 + unsubscribe();
4895 + }
4896 + };
4897 + };
4898 + }
4899 + (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot);
4900 + }
4901 + }
4902 +});
4903 +function useStoreFast(store2, selector, a1, a2, a3) {
4904 + const instance = getInstance();
4905 + if (!instance) {
4906 + return useStoreR19(store2, selector, a1, a2, a3);
4907 + }
4908 + const index2 = instance.syncIndex;
4909 + instance.syncIndex += 1;
4910 + let hook;
4911 + if (!instance.didInitialize) {
4912 + hook = {
4913 + store: store2,
4914 + selector,
4915 + a1,
4916 + a2,
4917 + a3,
4918 + value: selector(store2.getSnapshot(), a1, a2, a3)
4919 + };
4920 + instance.syncHooks.push(hook);
4921 + } else {
4922 + hook = instance.syncHooks[index2];
4923 + if (hook.store !== store2 || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) {
4924 + if (hook.store !== store2) {
4925 + instance.didChangeStore = true;
4926 + }
4927 + hook.store = store2;
4928 + hook.selector = selector;
4929 + hook.a1 = a1;
4930 + hook.a2 = a2;
4931 + hook.a3 = a3;
4932 + hook.value = selector(store2.getSnapshot(), a1, a2, a3);
4933 + }
4934 + }
4935 + return hook.value;
4936 +}
4937 +function useStoreLegacy(store2, selector, a1, a2, a3) {
4938 + return (0, import_with_selector.useSyncExternalStoreWithSelector)(store2.subscribe, store2.getSnapshot, store2.getSnapshot, (state) => selector(state, a1, a2, a3));
4939 +}
4940 +
4941 +// node_modules/@base-ui/utils/store/Store.mjs
4942 +var Store = class {
4943 + /**
4944 + * Creates a store with the given initial state, constructing the class it is called on.
4945 + * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that
4946 + * class but degrades the inferred instance type to `Store`; use `new` there instead.
4947 + */
4948 + static create(state) {
4949 + return new this(state);
4950 + }
4951 + /**
4952 + * The current state of the store.
4953 + * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}.
4954 + * To subscribe to state changes, use the {@link useState} method. The value returned by {@link useState} is updated after the component renders (similarly to React's useState).
4955 + * The values can be used directly (to avoid subscribing to the store) in effects or event handlers.
4956 + *
4957 + * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification.
4958 + */
4959 + // Internal state to handle recursive `setState()` calls
4960 + constructor(state) {
4961 + this.state = state;
4962 + this.listeners = /* @__PURE__ */ new Set();
4963 + this.updateTick = 0;
4964 + }
4965 + /**
4966 + * Registers a listener that will be called whenever the store's state changes.
4967 + *
4968 + * @param fn The listener function to be called on state changes.
4969 + * @returns A function to unsubscribe the listener.
4970 + */
4971 + subscribe = (fn) => {
4972 + this.listeners.add(fn);
4973 + return () => {
4974 + this.listeners.delete(fn);
4975 + };
4976 + };
4977 + /**
4978 + * Returns the current state of the store.
4979 + */
4980 + getSnapshot = () => {
4981 + return this.state;
4982 + };
4983 + /**
4984 + * Updates the entire store's state and notifies all registered listeners.
4985 + *
4986 + * @param newState The new state to set for the store.
4987 + */
4988 + setState(newState) {
4989 + if (this.state === newState) {
4990 + return;
4991 + }
4992 + this.state = newState;
4993 + this.updateTick += 1;
4994 + const currentTick = this.updateTick;
4995 + for (const listener of this.listeners) {
4996 + if (currentTick !== this.updateTick) {
4997 + return;
4998 + }
4999 + listener(newState);
5000 + }
5001 + }
5002 + /**
5003 + * Merges the provided changes into the current state and notifies listeners if there are changes.
5004 + * Each value must match its state key. Pass an exact known subset rather than a broad
5005 + * `Partial<State>`, which may contain `undefined` for required state fields.
5006 + *
5007 + * @param changes An object containing the changes to apply to the current state.
5008 + */
5009 + update(changes) {
5010 + for (const key in changes) {
5011 + if (!Object.is(this.state[key], changes[key])) {
5012 + this.setState({
5013 + ...this.state,
5014 + ...changes
5015 + });
5016 + return;
5017 + }
5018 + }
5019 + }
5020 + /**
5021 + * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed.
5022 + *
5023 + * @param key The key in the store's state to update.
5024 + * @param value The new value to set for the specified key.
5025 + */
5026 + set(key, value) {
5027 + if (!Object.is(this.state[key], value)) {
5028 + this.setState({
5029 + ...this.state,
5030 + [key]: value
5031 + });
5032 + }
5033 + }
5034 + /**
5035 + * Gives the state a new reference and updates all registered listeners.
5036 + */
5037 + notifyAll() {
5038 + const newState = {
5039 + ...this.state
5040 + };
5041 + this.setState(newState);
5042 + }
5043 + use(selector, a1, a2, a3) {
5044 + return useStore(this, selector, a1, a2, a3);
5045 + }
5046 +};
5047 +
5048 +// node_modules/@base-ui/utils/store/ReactStore.mjs
5049 +var React20 = __toESM(require_react(), 1);
5050 +var ReactStore = class extends Store {
5051 + /**
5052 + * Creates a new ReactStore instance.
5053 + *
5054 + * @param state Initial state of the store.
5055 + * @param context Non-reactive context values.
5056 + * @param selectors Optional selectors for use with `useState`.
5057 + */
5058 + constructor(state, context = {}, selectors3) {
5059 + super(state);
5060 + this.context = context;
5061 + this.selectors = selectors3;
5062 + }
5063 + /**
5064 + * Non-reactive values such as refs, callbacks, etc.
5065 + */
5066 + /**
5067 + * Synchronizes a single external value into the store.
5068 + *
5069 + * Note that the while the value in `state` is updated immediately, the value returned
5070 + * by `useState` is updated before the next render (similarly to React's `useState`).
5071 + */
5072 + useSyncedValue(key, value) {
5073 + React20.useDebugValue(key);
5074 + const store2 = this;
5075 + useIsoLayoutEffect(() => {
5076 + if (store2.state[key] !== value) {
5077 + store2.set(key, value);
5078 + }
5079 + }, [store2, key, value]);
5080 + }
5081 + /**
5082 + * Synchronizes a single external value into the store and
5083 + * cleans it up (sets to `undefined`) on unmount.
5084 + *
5085 + * Note that the while the value in `state` is updated immediately, the value returned
5086 + * by `useState` is updated before the next render (similarly to React's `useState`).
5087 + */
5088 + useSyncedValueWithCleanup(key, value) {
5089 + const store2 = this;
5090 + useIsoLayoutEffect(() => {
5091 + if (store2.state[key] !== value) {
5092 + store2.set(key, value);
5093 + }
5094 + return () => {
5095 + store2.set(key, void 0);
5096 + };
5097 + }, [store2, key, value]);
5098 + }
5099 + /**
5100 + * Synchronizes multiple external values into the store.
5101 + * Each value must match its state key. Pass an exact known subset rather than a broad
5102 + * `Partial<State>`, which may contain `undefined` for required state fields.
5103 + *
5104 + * Note that the while the values in `state` are updated immediately, the values returned
5105 + * by `useState` are updated before the next render (similarly to React's `useState`).
5106 + *
5107 + * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted.
5108 + */
5109 + useSyncedValues(statePart) {
5110 + const store2 = this;
5111 + if (true) {
5112 + React20.useDebugValue(statePart, (p) => Object.keys(p));
5113 + const keys = React20.useRef(Object.keys(statePart)).current;
5114 + const nextKeys = Object.keys(statePart);
5115 + if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) {
5116 + console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable.");
5117 + }
5118 + }
5119 + const dependencies = Object.values(statePart);
5120 + useIsoLayoutEffect(() => {
5121 + store2.update(statePart);
5122 + }, [store2, ...dependencies]);
5123 + }
5124 + /**
5125 + * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled`
5126 + * is non-undefined, the store's state at `key` is updated to match `controlled`.
5127 + */
5128 + useControlledProp(key, controlled) {
5129 + React20.useDebugValue(key);
5130 + const store2 = this;
5131 + const isControlled = controlled !== void 0;
5132 + useIsoLayoutEffect(() => {
5133 + if (isControlled && !Object.is(store2.state[key], controlled)) {
5134 + store2.setState({
5135 + ...store2.state,
5136 + [key]: controlled
5137 + });
5138 + }
5139 + }, [store2, key, controlled, isControlled]);
5140 + if (true) {
5141 + const cache = this.controlledValues ??= /* @__PURE__ */ new Map();
5142 + if (!cache.has(key)) {
5143 + cache.set(key, isControlled);
5144 + }
5145 + const previouslyControlled = cache.get(key);
5146 + if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) {
5147 + console.error(`A component is changing the ${isControlled ? "" : "un"}controlled state of ${key.toString()} to be ${isControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`);
5148 + }
5149 + }
5150 + }
5151 + /** Gets the current value from the store using a selector with the provided key.
5152 + *
5153 + * @param key Key of the selector to use.
5154 + */
5155 + select(key, a1, a2, a3) {
5156 + const selector = this.selectors[key];
5157 + return selector(this.state, a1, a2, a3);
5158 + }
5159 + /**
5160 + * Returns a value from the store's state using a selector function.
5161 + * Used to subscribe to specific parts of the state.
5162 + * This methods causes a rerender whenever the selected state changes.
5163 + *
5164 + * @param key Key of the selector to use.
5165 + */
5166 + useState(key, a1, a2, a3) {
5167 + React20.useDebugValue(key);
5168 + return useStore(this, this.selectors[key], a1, a2, a3);
5169 + }
5170 + /**
5171 + * Wraps a function with `useStableCallback` to ensure it has a stable reference
5172 + * and assigns it to the context.
5173 + *
5174 + * @param key Key of the event callback. Must be a function in the context.
5175 + * @param fn Function to assign.
5176 + */
5177 + useContextCallback(key, fn) {
5178 + React20.useDebugValue(key);
5179 + const stableFunction = useStableCallback(fn ?? NOOP);
5180 + this.context[key] = stableFunction;
5181 + }
5182 + /**
5183 + * Returns a stable setter function for a specific key in the store's state.
5184 + * It's commonly used to pass as a ref callback to React elements.
5185 + *
5186 + * @param key Key of the state to set.
5187 + */
5188 + useStateSetter(key) {
5189 + const ref = React20.useRef(void 0);
5190 + if (ref.current === void 0) {
5191 + ref.current = (value) => {
5192 + this.set(key, value);
5193 + };
5194 + }
5195 + return ref.current;
5196 + }
5197 + /**
5198 + * Observes changes derived from the store's selectors and calls the listener when the selected value changes.
5199 + *
5200 + * @param key Key of the selector to observe.
5201 + * @param listener Listener function called when the selector result changes.
5202 + */
5203 + observe(selector, listener) {
5204 + let selectFn;
5205 + if (typeof selector === "function") {
5206 + selectFn = selector;
5207 + } else {
5208 + selectFn = this.selectors[selector];
5209 + }
5210 + let prevValue = selectFn(this.state);
5211 + listener(prevValue, prevValue, this);
5212 + return this.subscribe((nextState) => {
5213 + const nextValue = selectFn(nextState);
5214 + if (!Object.is(prevValue, nextValue)) {
5215 + const oldValue = prevValue;
5216 + prevValue = nextValue;
5217 + listener(nextValue, oldValue, this);
5218 + }
5219 + });
5220 + }
5221 +};
5222 +
5223 +// node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs
5224 +var selectors = {
5225 + open: (state) => state.open,
5226 + transitionStatus: (state) => state.transitionStatus,
5227 + domReferenceElement: (state) => state.domReferenceElement,
5228 + referenceElement: (state) => state.positionReference ?? state.referenceElement,
5229 + floatingElement: (state) => state.floatingElement,
5230 + floatingId: (state) => state.floatingId
5231 +};
5232 +var FloatingRootStore = class extends ReactStore {
5233 + constructor(options) {
5234 + const {
5235 + syncOnly,
5236 + nested,
5237 + onOpenChange,
5238 + triggerElements,
5239 + ...initialState2
5240 + } = options;
5241 + super({
5242 + ...initialState2,
5243 + positionReference: initialState2.referenceElement,
5244 + domReferenceElement: initialState2.referenceElement
5245 + }, {
5246 + onOpenChange,
5247 + dataRef: {
5248 + current: {}
5249 + },
5250 + events: createEventEmitter(),
5251 + nested,
5252 + triggerElements
5253 + }, selectors);
5254 + this.syncOnly = syncOnly;
5255 + }
5256 + /**
5257 + * Syncs the event used by hover logic to distinguish hover-open from click-like interaction.
5258 + */
5259 + syncOpenEvent = (newOpen, event) => {
5260 + if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing
5261 + // click events to upgrade a hover-open.
5262 + event != null && isClickLikeEvent(event)) {
5263 + this.context.dataRef.current.openEvent = newOpen ? event : void 0;
5264 + }
5265 + };
5266 + /**
5267 + * Runs the root-owned side effects for an open state change.
5268 + */
5269 + dispatchOpenChange = (newOpen, eventDetails) => {
5270 + this.syncOpenEvent(newOpen, eventDetails.event);
5271 + const details = {
5272 + open: newOpen,
5273 + reason: eventDetails.reason,
5274 + nativeEvent: eventDetails.event,
5275 + nested: this.context.nested,
5276 + triggerElement: eventDetails.trigger
5277 + };
5278 + this.context.events.emit("openchange", details);
5279 + };
5280 + /**
5281 + * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments.
5282 + *
5283 + * @param newOpen The new open state.
5284 + * @param eventDetails Details about the event that triggered the open state change.
5285 + */
5286 + setOpen = (newOpen, eventDetails) => {
5287 + if (this.syncOnly) {
5288 + this.context.onOpenChange?.(newOpen, eventDetails);
5289 + return;
5290 + }
5291 + this.dispatchOpenChange(newOpen, eventDetails);
5292 + this.context.onOpenChange?.(newOpen, eventDetails);
5293 + };
5294 +};
5295 +
5296 +// node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
5297 +function useSyncedFloatingRootContext(options) {
5298 + const {
5299 + popupStore,
5300 + treatPopupAsFloatingElement = false,
5301 + floatingRootContext: floatingRootContextProp,
5302 + floatingId,
5303 + nested,
5304 + onOpenChange
5305 + } = options;
5306 + const open2 = popupStore.useState("open");
5307 + const referenceElement = popupStore.useState("activeTriggerElement");
5308 + const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement");
5309 + const triggerElements = popupStore.context.triggerElements;
5310 + const handleOpenChange = onOpenChange;
5311 + const internalStoreRef = React21.useRef(null);
5312 + if (floatingRootContextProp === void 0 && internalStoreRef.current === null) {
5313 + internalStoreRef.current = new FloatingRootStore({
5314 + open: open2,
5315 + transitionStatus: void 0,
5316 + referenceElement,
5317 + floatingElement,
5318 + triggerElements,
5319 + onOpenChange: handleOpenChange,
5320 + floatingId,
5321 + syncOnly: true,
5322 + nested
5323 + });
5324 + }
5325 + const store2 = floatingRootContextProp ?? internalStoreRef.current;
5326 + popupStore.useSyncedValue("floatingId", floatingId);
5327 + useIsoLayoutEffect(() => {
5328 + const valuesToSync = {
5329 + open: open2,
5330 + floatingId,
5331 + referenceElement,
5332 + floatingElement
5333 + };
5334 + if (isElement(referenceElement)) {
5335 + valuesToSync.domReferenceElement = referenceElement;
5336 + }
5337 + if (store2.state.positionReference === store2.state.referenceElement) {
5338 + valuesToSync.positionReference = referenceElement;
5339 + }
5340 + store2.update(valuesToSync);
5341 + }, [open2, floatingId, referenceElement, floatingElement, store2]);
5342 + store2.context.onOpenChange = handleOpenChange;
5343 + store2.context.nested = nested;
5344 + return store2;
5345 +}
5346 +
5347 +// node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
5348 +var FOCUSABLE_POPUP_PROPS = {
5349 + tabIndex: -1,
5350 + [FOCUSABLE_ATTRIBUTE]: ""
5351 +};
5352 +function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) {
5353 + const floatingId = useId();
5354 + const nested = useFloatingParentNodeId() != null;
5355 + const store2 = useRefWithInit(() => createStore(floatingId, nested)).current;
5356 + useSyncedFloatingRootContext({
5357 + popupStore: store2,
5358 + treatPopupAsFloatingElement,
5359 + floatingRootContext: store2.state.floatingRootContext,
5360 + floatingId,
5361 + nested,
5362 + onOpenChange: store2.setOpen
5363 + });
5364 + return store2;
5365 +}
5366 +function PopupHandleAttachment({
5367 + handle,
5368 + store: store2
5369 +}) {
5370 + useIsoLayoutEffect(() => {
5371 + return handle.attachStore(store2);
5372 + }, [handle, store2]);
5373 + return null;
5374 +}
5375 +function syncTriggerCount(store2) {
5376 + const triggerCount = store2.context.triggerElements.size;
5377 + if (store2.select("open") && store2.state.triggerCount !== triggerCount) {
5378 + store2.set("triggerCount", triggerCount);
5379 + }
5380 +}
5381 +function useTriggerRegistration(id, store2) {
5382 + const registrationRef = React22.useRef(null);
5383 + return useStableCallback((element) => {
5384 + const registration = registrationRef.current;
5385 + if (registration !== null) {
5386 + if (registration.element === element && registration.store === store2 && registration.id === id) {
5387 + return;
5388 + }
5389 + registrationRef.current = null;
5390 + const registeredStore = registration.store;
5391 + if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) {
5392 + registeredStore.context.triggerElements.delete(registration.id);
5393 + syncTriggerCount(registeredStore);
5394 + }
5395 + }
5396 + if (element !== null && id !== void 0) {
5397 + registrationRef.current = {
5398 + store: store2,
5399 + id,
5400 + element
5401 + };
5402 + store2.context.triggerElements.add(id, element);
5403 + syncTriggerCount(store2);
5404 + }
5405 + });
5406 +}
5407 +function createPopupOpenState(state, open2, trigger, preventUnmountOnClose = false) {
5408 + let preventUnmountingOnClose = state.preventUnmountingOnClose;
5409 + if (open2) {
5410 + preventUnmountingOnClose = false;
5411 + } else if (preventUnmountOnClose) {
5412 + preventUnmountingOnClose = true;
5413 + }
5414 + const triggerId = trigger?.id ?? null;
5415 + let activeTriggerId = state.activeTriggerId;
5416 + let activeTriggerElement = state.activeTriggerElement;
5417 + if (triggerId || open2) {
5418 + activeTriggerId = triggerId;
5419 + activeTriggerElement = trigger ?? null;
5420 + }
5421 + return {
5422 + open: open2,
5423 + preventUnmountingOnClose,
5424 + activeTriggerId,
5425 + activeTriggerElement
5426 + };
5427 +}
5428 +function attachPreventUnmountOnClose(eventDetails) {
5429 + let preventUnmountOnClose = false;
5430 + eventDetails.preventUnmountOnClose = () => {
5431 + preventUnmountOnClose = true;
5432 + };
5433 + return () => preventUnmountOnClose;
5434 +}
5435 +function applyPopupOpenChange(store2, nextOpen, eventDetails, options = {}) {
5436 + const reason = eventDetails.reason;
5437 + const isHover = reason === reason_parts_exports.triggerHover;
5438 + const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus;
5439 + const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey);
5440 + const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
5441 + store2.context.onOpenChange?.(nextOpen, eventDetails);
5442 + if (eventDetails.isCanceled) {
5443 + return;
5444 + }
5445 + options.onBeforeDispatch?.();
5446 + store2.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
5447 + const changeState = () => {
5448 + const popupOpenState = createPopupOpenState(store2.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
5449 + const updatedState = {
5450 + ...options.extraState,
5451 + ...popupOpenState
5452 + };
5453 + if (isFocusOpen) {
5454 + updatedState.instantType = "focus";
5455 + } else if (isDismissClose) {
5456 + updatedState.instantType = "dismiss";
5457 + } else if (isHover) {
5458 + updatedState.instantType = void 0;
5459 + }
5460 + store2.update(updatedState);
5461 + };
5462 + if (isHover) {
5463 + ReactDOM4.flushSync(changeState);
5464 + } else {
5465 + changeState();
5466 + }
5467 +}
5468 +function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpdates) {
5469 + const isMountedByThisTrigger = store2.useState("isMountedByTrigger", triggerId);
5470 + const baseRegisterTrigger = useTriggerRegistration(triggerId, store2);
5471 + const applyTriggerData = useStableCallback((element) => {
5472 + const open2 = store2.select("open");
5473 + const activeTriggerId = store2.select("activeTriggerId");
5474 + if (activeTriggerId === triggerId) {
5475 + const changes = {
5476 + activeTriggerElement: element,
5477 + ...open2 ? stateUpdates : null
5478 + };
5479 + store2.update(changes);
5480 + return;
5481 + }
5482 + if (activeTriggerId == null && open2) {
5483 + const changes = {
5484 + activeTriggerId: triggerId ?? null,
5485 + activeTriggerElement: element,
5486 + ...stateUpdates
5487 + };
5488 + store2.update(changes);
5489 + }
5490 + });
5491 + const registerTrigger = useStableCallback((element) => {
5492 + baseRegisterTrigger(element);
5493 + if (element) {
5494 + applyTriggerData(element);
5495 + }
5496 + });
5497 + useIsoLayoutEffect(() => {
5498 + registerTrigger(triggerElementRef.current);
5499 + return () => registerTrigger(null);
5500 + }, [registerTrigger, triggerElementRef, store2, triggerId]);
5501 + useIsoLayoutEffect(() => {
5502 + if (isMountedByThisTrigger) {
5503 + const changes = {
5504 + activeTriggerElement: triggerElementRef.current,
5505 + ...stateUpdates
5506 + };
5507 + store2.update(changes);
5508 + }
5509 + }, [isMountedByThisTrigger, store2, triggerElementRef, ...Object.values(stateUpdates)]);
5510 + return {
5511 + registerTrigger,
5512 + isMountedByThisTrigger
5513 + };
5514 +}
5515 +function useImplicitActiveTrigger(store2, options = {}) {
5516 + const {
5517 + closeOnActiveTriggerUnmount = false
5518 + } = options;
5519 + const resolvedActiveTriggerIdRef = React22.useRef(null);
5520 + const open2 = store2.useState("open");
5521 + const reactiveTriggerCount = store2.useState("triggerCount");
5522 + const activeTriggerId = store2.useState("activeTriggerId");
5523 + const reactiveActiveTriggerElement = store2.useState("activeTriggerElement");
5524 + useIsoLayoutEffect(() => {
5525 + if (!open2) {
5526 + resolvedActiveTriggerIdRef.current = null;
5527 + if (store2.state.triggerCount !== 0) {
5528 + store2.set("triggerCount", 0);
5529 + }
5530 + return;
5531 + }
5532 + const triggerCount = store2.context.triggerElements.size;
5533 + const stateUpdates = {};
5534 + if (store2.state.triggerCount !== triggerCount) {
5535 + stateUpdates.triggerCount = triggerCount;
5536 + }
5537 + const currentActiveTriggerId = store2.select("activeTriggerId");
5538 + let lostActiveTriggerId = null;
5539 + if (currentActiveTriggerId) {
5540 + const activeTriggerElement = store2.context.triggerElements.getById(currentActiveTriggerId);
5541 + if (!activeTriggerElement) {
5542 + for (const [triggerId, triggerElement] of store2.context.triggerElements.entries()) {
5543 + if (triggerElement === store2.state.activeTriggerElement) {
5544 + stateUpdates.activeTriggerId = triggerId;
5545 + stateUpdates.activeTriggerElement = triggerElement;
5546 + resolvedActiveTriggerIdRef.current = triggerId;
5547 + break;
5548 + }
5549 + }
5550 + if (stateUpdates.activeTriggerId === void 0) {
5551 + if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) {
5552 + lostActiveTriggerId = currentActiveTriggerId;
5553 + } else {
5554 + resolvedActiveTriggerIdRef.current = null;
5555 + }
5556 + }
5557 + } else {
5558 + resolvedActiveTriggerIdRef.current = currentActiveTriggerId;
5559 + if (activeTriggerElement !== store2.state.activeTriggerElement) {
5560 + stateUpdates.activeTriggerElement = activeTriggerElement;
5561 + }
5562 + }
5563 + } else {
5564 + resolvedActiveTriggerIdRef.current = null;
5565 + }
5566 + if (!lostActiveTriggerId && !currentActiveTriggerId && triggerCount === 1) {
5567 + const iteratorResult = store2.context.triggerElements.entries().next();
5568 + if (!iteratorResult.done) {
5569 + const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;
5570 + stateUpdates.activeTriggerId = implicitTriggerId;
5571 + stateUpdates.activeTriggerElement = implicitTriggerElement;
5572 + resolvedActiveTriggerIdRef.current = implicitTriggerId;
5573 + }
5574 + }
5575 + if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) {
5576 + store2.update(stateUpdates);
5577 + }
5578 + if (lostActiveTriggerId) {
5579 + if (closeOnActiveTriggerUnmount) {
5580 + queueMicrotask(() => {
5581 + if (store2.select("open") && store2.select("activeTriggerId") === lostActiveTriggerId && !store2.context.triggerElements.getById(lostActiveTriggerId)) {
5582 + const eventDetails = createChangeEventDetails(reason_parts_exports.none);
5583 + store2.setOpen(false, eventDetails);
5584 + if (!eventDetails.isCanceled) {
5585 + store2.update({
5586 + activeTriggerId: null,
5587 + activeTriggerElement: null
5588 + });
5589 + }
5590 + }
5591 + });
5592 + }
5593 + }
5594 + }, [open2, store2, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]);
5595 +}
5596 +function useOpenStateTransitions(open2, store2, onUnmount, animateInitialOpen) {
5597 + const {
5598 + mounted,
5599 + setMounted,
5600 + transitionStatus
5601 + } = useTransitionStatus(open2, false, false, animateInitialOpen);
5602 + const preventUnmountingOnClose = store2.useState("preventUnmountingOnClose");
5603 + const syncedPreventUnmountingOnClose = open2 ? false : preventUnmountingOnClose;
5604 + store2.useSyncedValues({
5605 + mounted,
5606 + transitionStatus,
5607 + preventUnmountingOnClose: syncedPreventUnmountingOnClose
5608 + });
5609 + const forceUnmount = useStableCallback(() => {
5610 + setMounted(false);
5611 + store2.update({
5612 + activeTriggerId: null,
5613 + activeTriggerElement: null,
5614 + mounted: false,
5615 + preventUnmountingOnClose: false
5616 + });
5617 + onUnmount?.();
5618 + store2.context.onOpenChangeComplete?.(false);
5619 + });
5620 + useOpenChangeComplete({
5621 + enabled: mounted && !open2 && !syncedPreventUnmountingOnClose,
5622 + open: open2,
5623 + ref: store2.context.popupRef,
5624 + onComplete() {
5625 + if (!open2) {
5626 + forceUnmount();
5627 + }
5628 + }
5629 + });
5630 + return {
5631 + forceUnmount,
5632 + transitionStatus
5633 + };
5634 +}
5635 +function usePopupInteractionProps(store2, statePart) {
5636 + store2.useSyncedValues(statePart);
5637 + useIsoLayoutEffect(() => () => {
5638 + store2.update({
5639 + activeTriggerProps: EMPTY_OBJECT,
5640 + inactiveTriggerProps: EMPTY_OBJECT,
5641 + popupProps: EMPTY_OBJECT
5642 + });
5643 + }, [store2]);
5644 +}
5645 +
5646 +// node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs
5647 +var devElementIdsByMap;
5648 +function getDevElementIds(map) {
5649 + devElementIdsByMap ??= /* @__PURE__ */ new WeakMap();
5650 + let elementIds = devElementIdsByMap.get(map);
5651 + if (!elementIds) {
5652 + elementIds = /* @__PURE__ */ new WeakMap();
5653 + devElementIdsByMap.set(map, elementIds);
5654 + }
5655 + return elementIds;
5656 +}
5657 +var PopupTriggerMap = class {
5658 + constructor() {
5659 + this.idMap = /* @__PURE__ */ new Map();
5660 + }
5661 + /**
5662 + * Adds a trigger element with the given ID.
5663 + *
5664 + * Note: The provided element is assumed to not be registered under multiple IDs.
5665 + */
5666 + add(id, element) {
5667 + if (true) {
5668 + const elementIds = getDevElementIds(this);
5669 + const existingId = elementIds.get(element);
5670 + if (existingId !== void 0 && existingId !== id) {
5671 + throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap.");
5672 + }
5673 + const previousElement = this.idMap.get(id);
5674 + if (previousElement !== void 0 && previousElement !== element) {
5675 + elementIds.delete(previousElement);
5676 + }
5677 + elementIds.set(element, id);
5678 + }
5679 + this.idMap.set(id, element);
5680 + }
5681 + /**
5682 + * Removes the trigger element with the given ID.
5683 + */
5684 + delete(id) {
5685 + if (true) {
5686 + const element = this.idMap.get(id);
5687 + if (element !== void 0) {
5688 + devElementIdsByMap?.get(this)?.delete(element);
5689 + }
5690 + }
5691 + this.idMap.delete(id);
5692 + }
5693 + /**
5694 + * Whether the given element is registered as a trigger.
5695 + */
5696 + hasElement(element) {
5697 + for (const registered of this.idMap.values()) {
5698 + if (registered === element) {
5699 + return true;
5700 + }
5701 + }
5702 + return false;
5703 + }
5704 + /**
5705 + * Whether there is a registered trigger element matching the given predicate.
5706 + */
5707 + hasMatchingElement(predicate) {
5708 + for (const element of this.idMap.values()) {
5709 + if (predicate(element)) {
5710 + return true;
5711 + }
5712 + }
5713 + return false;
5714 + }
5715 + /**
5716 + * Returns the trigger element associated with the given ID, or undefined if no such element exists.
5717 + */
5718 + getById(id) {
5719 + return this.idMap.get(id);
5720 + }
5721 + /**
5722 + * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element].
5723 + */
5724 + entries() {
5725 + return this.idMap.entries();
5726 + }
5727 + /**
5728 + * Returns an iterable of all registered trigger elements.
5729 + */
5730 + elements() {
5731 + return this.idMap.values();
5732 + }
5733 + /**
5734 + * Returns the number of registered trigger elements.
5735 + */
5736 + get size() {
5737 + return this.idMap.size;
5738 + }
5739 +};
5740 +
5741 +// node_modules/@base-ui/react/utils/popups/store.mjs
5742 +function createInitialPopupStoreState(triggerElements, floatingId, nested = false) {
5743 + return {
5744 + open: false,
5745 + openProp: void 0,
5746 + mounted: false,
5747 + transitionStatus: void 0,
5748 + floatingRootContext: new FloatingRootStore({
5749 + open: false,
5750 + transitionStatus: void 0,
5751 + floatingElement: null,
5752 + referenceElement: null,
5753 + triggerElements,
5754 + floatingId,
5755 + syncOnly: true,
5756 + nested,
5757 + onOpenChange: void 0
5758 + }),
5759 + floatingId,
5760 + triggerCount: 0,
5761 + preventUnmountingOnClose: false,
5762 + payload: void 0,
5763 + activeTriggerId: null,
5764 + activeTriggerElement: null,
5765 + triggerIdProp: void 0,
5766 + popupElement: null,
5767 + positionerElement: null,
5768 + activeTriggerProps: EMPTY_OBJECT,
5769 + inactiveTriggerProps: EMPTY_OBJECT,
5770 + popupProps: EMPTY_OBJECT
5771 + };
5772 +}
5773 +var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId;
5774 +var openSelector = (state) => state.openProp ?? state.open;
5775 +var popupIdSelector = (state) => {
5776 + const popupId = state.popupElement?.id ?? state.floatingId;
5777 + return popupId || void 0;
5778 +};
5779 +function triggerOwnsOpenPopup(state, triggerId) {
5780 + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId;
5781 +}
5782 +function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) {
5783 + if (triggerOwnsOpenPopup(state, triggerId)) {
5784 + return true;
5785 + }
5786 + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1;
5787 +}
5788 +var popupStoreSelectors = {
5789 + open: openSelector,
5790 + mounted: (state) => state.mounted,
5791 + transitionStatus: (state) => state.transitionStatus,
5792 + floatingRootContext: (state) => state.floatingRootContext,
5793 + triggerCount: (state) => state.triggerCount,
5794 + preventUnmountingOnClose: (state) => state.preventUnmountingOnClose,
5795 + payload: (state) => state.payload,
5796 + activeTriggerId: activeTriggerIdSelector,
5797 + activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null,
5798 + popupId: popupIdSelector,
5799 + /**
5800 + * Whether the trigger with the given ID was used to open the popup.
5801 + */
5802 + isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId,
5803 + /**
5804 + * Whether the popup is open and was activated by a trigger with the given ID.
5805 + */
5806 + isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId),
5807 + /**
5808 + * Whether the popup is mounted and was activated by a trigger with the given ID.
5809 + */
5810 + isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted,
5811 + triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps,
5812 + /**
5813 + * Popup id for the trigger that currently owns the open popup.
5814 + */
5815 + triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0,
5816 + popupProps: (state) => state.popupProps,
5817 + popupElement: (state) => state.popupElement,
5818 + positionerElement: (state) => state.positionerElement
5819 +};
5820 +
5821 +// node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs
5822 +var React23 = __toESM(require_react(), 1);
5823 +var import_shim2 = __toESM(require_shim(), 1);
5824 +function usePopupHandleStore(handle) {
5825 + const subscribe = React23.useCallback((listener) => {
5826 + if (handle === void 0) {
5827 + return NOOP;
5828 + }
5829 + return handle.subscribeStore(listener);
5830 + }, [handle]);
5831 + const getSnapshot = React23.useCallback(() => {
5832 + return handle === void 0 ? void 0 : handle.store;
5833 + }, [handle]);
5834 + return (0, import_shim2.useSyncExternalStore)(subscribe, getSnapshot, () => handle?.serverStore);
5835 +}
5836 +
5837 +// node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
5838 +function useBaseUIFloating(options) {
5839 + return useFloatingWithStore(options, options.rootContext);
5840 +}
5841 +function useFloatingWithStore(options, store2) {
5842 + const {
5843 + nodeId,
5844 + externalTree
5845 + } = options;
5846 + const referenceElement = store2.useState("referenceElement");
5847 + const floatingElement = store2.useState("floatingElement");
5848 + const domReferenceElement = store2.useState("domReferenceElement");
5849 + const open2 = store2.useState("open");
5850 + const floatingId = store2.useState("floatingId");
5851 + const [positionReference, setPositionReferenceRaw] = React24.useState(null);
5852 + const [localDomReference, setLocalDomReference] = React24.useState(void 0);
5853 + const [localFloatingElement, setLocalFloatingElement] = React24.useState(void 0);
5854 + const domReferenceRef = React24.useRef(null);
5855 + const tree = useFloatingTree(externalTree);
5856 + const storeElements = React24.useMemo(() => ({
5857 + reference: referenceElement,
5858 + floating: floatingElement,
5859 + domReference: domReferenceElement
5860 + }), [referenceElement, floatingElement, domReferenceElement]);
5861 + const position = useFloating({
5862 + ...options,
5863 + elements: {
5864 + ...storeElements,
5865 + ...positionReference && {
5866 + reference: positionReference
5867 + }
5868 + }
5869 + });
5870 + const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null;
5871 + const syncedFloatingElement = localFloatingElement === void 0 ? store2.state.floatingElement : localFloatingElement;
5872 + store2.useSyncedValue("referenceElement", localDomReference ?? null);
5873 + store2.useSyncedValue("domReferenceElement", localDomReference === void 0 ? domReferenceElement : localDomReferenceElement);
5874 + store2.useSyncedValue("floatingElement", syncedFloatingElement);
5875 + const setPositionReference = React24.useCallback((node) => {
5876 + const computedPositionReference = isElement(node) ? {
5877 + getBoundingClientRect: () => node.getBoundingClientRect(),
5878 + getClientRects: () => node.getClientRects(),
5879 + contextElement: node
5880 + } : node;
5881 + setPositionReferenceRaw(computedPositionReference);
5882 + position.refs.setReference(computedPositionReference);
5883 + }, [position.refs]);
5884 + const setReference = React24.useCallback((node) => {
5885 + if (isElement(node) || node === null) {
5886 + domReferenceRef.current = node;
5887 + setLocalDomReference(node);
5888 + }
5889 + if (isElement(position.refs.reference.current) || position.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to
5890 + // `null` to support `positionReference` + an unstable `reference`
5891 + // callback ref.
5892 + node !== null && !isElement(node)) {
5893 + position.refs.setReference(node);
5894 + }
5895 + }, [position.refs, setLocalDomReference]);
5896 + const setFloating = React24.useCallback((node) => {
5897 + setLocalFloatingElement(node);
5898 + position.refs.setFloating(node);
5899 + }, [position.refs]);
5900 + const refs = React24.useMemo(() => ({
5901 + ...position.refs,
5902 + setReference,
5903 + setFloating,
5904 + setPositionReference,
5905 + domReference: domReferenceRef
5906 + }), [position.refs, setReference, setFloating, setPositionReference]);
5907 + const elements = React24.useMemo(() => ({
5908 + ...position.elements,
5909 + domReference: domReferenceElement
5910 + }), [position.elements, domReferenceElement]);
5911 + const context = React24.useMemo(() => ({
5912 + ...position,
5913 + dataRef: store2.context.dataRef,
5914 + open: open2,
5915 + onOpenChange: store2.setOpen,
5916 + events: store2.context.events,
5917 + floatingId,
5918 + refs,
5919 + elements,
5920 + nodeId,
5921 + rootStore: store2
5922 + }), [position, refs, elements, nodeId, store2, open2, floatingId]);
5923 + useIsoLayoutEffect(() => {
5924 + if (domReferenceElement) {
5925 + domReferenceRef.current = domReferenceElement;
5926 + }
5927 + }, [domReferenceElement]);
5928 + useIsoLayoutEffect(() => {
5929 + store2.context.dataRef.current.floatingContext = context;
5930 + const node = tree?.nodesRef.current.find((n) => n.id === nodeId);
5931 + if (node) {
5932 + node.context = context;
5933 + }
5934 + });
5935 + return React24.useMemo(() => ({
5936 + ...position,
5937 + context,
5938 + refs,
5939 + elements,
5940 + rootStore: store2
5941 + }), [position, refs, elements, context, store2]);
5942 +}
5943 +
5944 +// node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs
5945 +var React25 = __toESM(require_react(), 1);
5946 +var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit;
5947 +function useFocus(context, props = {}) {
5948 + const {
5949 + enabled = true,
5950 + delay
5951 + } = props;
5952 + const store2 = "rootStore" in context ? context.rootStore : context;
5953 + const {
5954 + events,
5955 + dataRef
5956 + } = store2.context;
5957 + const blockFocusRef = React25.useRef(false);
5958 + const blockedReferenceRef = React25.useRef(null);
5959 + const keyboardModalityRef = React25.useRef(true);
5960 + const timeout = useTimeout();
5961 + React25.useEffect(() => {
5962 + const domReference = store2.select("domReferenceElement");
5963 + if (!enabled) {
5964 + return void 0;
5965 + }
5966 + const win = getWindow(domReference);
5967 + function onBlur() {
5968 + const currentDomReference = store2.select("domReferenceElement");
5969 + if (!store2.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) {
5970 + blockFocusRef.current = true;
5971 + blockedReferenceRef.current = currentDomReference;
5972 + }
5973 + }
5974 + function onKeyDown() {
5975 + keyboardModalityRef.current = true;
5976 + }
5977 + function onPointerDown() {
5978 + keyboardModalityRef.current = false;
5979 + }
5980 + return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true));
5981 + }, [store2, enabled]);
5982 + React25.useEffect(() => {
5983 + if (!enabled) {
5984 + return void 0;
5985 + }
5986 + function onOpenChangeLocal(details) {
5987 + if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) {
5988 + const referenceElement = store2.select("domReferenceElement");
5989 + if (isElement(referenceElement)) {
5990 + blockedReferenceRef.current = referenceElement;
5991 + blockFocusRef.current = true;
5992 + }
5993 + }
5994 + }
5995 + events.on("openchange", onOpenChangeLocal);
5996 + return () => {
5997 + events.off("openchange", onOpenChangeLocal);
5998 + };
5999 + }, [events, enabled, store2]);
6000 + const reference = React25.useMemo(() => {
6001 + function resetBlockedFocus() {
6002 + blockFocusRef.current = false;
6003 + blockedReferenceRef.current = null;
6004 + }
6005 + return {
6006 + onMouseLeave() {
6007 + resetBlockedFocus();
6008 + },
6009 + onFocus(event) {
6010 + const focusTarget = event.currentTarget;
6011 + if (blockFocusRef.current) {
6012 + if (blockedReferenceRef.current === focusTarget) {
6013 + return;
6014 + }
6015 + resetBlockedFocus();
6016 + }
6017 + const target = getTarget(event.nativeEvent);
6018 + if (isElement(target)) {
6019 + if (isMacSafari && !event.relatedTarget) {
6020 + if (!keyboardModalityRef.current && !isTypeableElement(target)) {
6021 + return;
6022 + }
6023 + } else if (!matchesFocusVisible(target)) {
6024 + return;
6025 + }
6026 + }
6027 + const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements);
6028 + const {
6029 + nativeEvent,
6030 + currentTarget
6031 + } = event;
6032 + const delayValue = typeof delay === "function" ? delay() : delay;
6033 + if (store2.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) {
6034 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
6035 + return;
6036 + }
6037 + timeout.start(delayValue, () => {
6038 + if (blockFocusRef.current) {
6039 + return;
6040 + }
6041 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
6042 + });
6043 + },
6044 + onBlur(event) {
6045 + resetBlockedFocus();
6046 + const relatedTarget = event.relatedTarget;
6047 + const nativeEvent = event.nativeEvent;
6048 + const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside";
6049 + timeout.start(0, () => {
6050 + const domReference = store2.select("domReferenceElement");
6051 + const activeEl = activeElement(ownerDocument(domReference));
6052 + if (!relatedTarget && activeEl === domReference) {
6053 + return;
6054 + }
6055 + if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) {
6056 + return;
6057 + }
6058 + const nextFocusedElement = relatedTarget ?? activeEl;
6059 + if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) {
6060 + return;
6061 + }
6062 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent));
6063 + });
6064 + }
6065 + };
6066 + }, [dataRef, delay, store2, timeout]);
6067 + return React25.useMemo(() => enabled ? {
6068 + reference,
6069 + trigger: reference
6070 + } : {}, [enabled, reference]);
6071 +}
6072 +
6073 +// node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
6074 +var React26 = __toESM(require_react(), 1);
6075 +
6076 +// node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs
6077 +var HoverInteraction = class _HoverInteraction {
6078 + constructor() {
6079 + this.pointerType = void 0;
6080 + this.interactedInside = false;
6081 + this.handler = void 0;
6082 + this.blockMouseMove = true;
6083 + this.performedPointerEventsMutation = false;
6084 + this.pointerEventsScopeElement = null;
6085 + this.pointerEventsReferenceElement = null;
6086 + this.pointerEventsFloatingElement = null;
6087 + this.restTimeoutPending = false;
6088 + this.openChangeTimeout = new Timeout();
6089 + this.restTimeout = new Timeout();
6090 + this.handleCloseOptions = void 0;
6091 + }
6092 + static create() {
6093 + return new _HoverInteraction();
6094 + }
6095 + dispose = () => {
6096 + this.openChangeTimeout.clear();
6097 + this.restTimeout.clear();
6098 + };
6099 + disposeEffect = () => {
6100 + return this.dispose;
6101 + };
6102 +};
6103 +var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap();
6104 +function clearSafePolygonPointerEventsMutation(instance) {
6105 + if (!instance.performedPointerEventsMutation) {
6106 + return;
6107 + }
6108 + const scopeElement = instance.pointerEventsScopeElement;
6109 + if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) {
6110 + instance.pointerEventsScopeElement?.style.removeProperty("pointer-events");
6111 + instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events");
6112 + instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events");
6113 + pointerEventsMutationOwnerByScopeElement.delete(scopeElement);
6114 + }
6115 + instance.performedPointerEventsMutation = false;
6116 + instance.pointerEventsScopeElement = null;
6117 + instance.pointerEventsReferenceElement = null;
6118 + instance.pointerEventsFloatingElement = null;
6119 +}
6120 +function applySafePolygonPointerEventsMutation(instance, options) {
6121 + const {
6122 + scopeElement,
6123 + referenceElement,
6124 + floatingElement
6125 + } = options;
6126 + const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement);
6127 + if (existingOwner && existingOwner !== instance) {
6128 + clearSafePolygonPointerEventsMutation(existingOwner);
6129 + }
6130 + clearSafePolygonPointerEventsMutation(instance);
6131 + instance.performedPointerEventsMutation = true;
6132 + instance.pointerEventsScopeElement = scopeElement;
6133 + instance.pointerEventsReferenceElement = referenceElement;
6134 + instance.pointerEventsFloatingElement = floatingElement;
6135 + pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance);
6136 + scopeElement.style.pointerEvents = "none";
6137 + referenceElement.style.pointerEvents = "auto";
6138 + floatingElement.style.pointerEvents = "auto";
6139 +}
6140 +function useHoverInteractionSharedState(store2) {
6141 + const data = store2.context.dataRef.current;
6142 + const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current;
6143 + if (!data.hoverInteractionState) {
6144 + data.hoverInteractionState = instance;
6145 + }
6146 + useOnMount(data.hoverInteractionState.disposeEffect);
6147 + return data.hoverInteractionState;
6148 +}
6149 +
6150 +// node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
6151 +function useHoverFloatingInteraction(context, parameters = {}) {
6152 + const {
6153 + enabled = true,
6154 + closeDelay: closeDelayProp = 0,
6155 + nodeId: nodeIdProp
6156 + } = parameters;
6157 + const store2 = "rootStore" in context ? context.rootStore : context;
6158 + const open2 = store2.useState("open");
6159 + const floatingElement = store2.useState("floatingElement");
6160 + const domReferenceElement = store2.useState("domReferenceElement");
6161 + const {
6162 + dataRef
6163 + } = store2.context;
6164 + const tree = useFloatingTree();
6165 + const parentId = useFloatingParentNodeId();
6166 + const instance = useHoverInteractionSharedState(store2);
6167 + const childClosedTimeout = useTimeout();
6168 + const isClickLikeOpenEvent2 = useStableCallback(() => {
6169 + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
6170 + });
6171 + const isHoverOpen = useStableCallback(() => {
6172 + return isHoverOpenEvent(dataRef.current.openEvent?.type);
6173 + });
6174 + const clearPointerEvents = useStableCallback(() => {
6175 + clearSafePolygonPointerEventsMutation(instance);
6176 + });
6177 + useIsoLayoutEffect(() => {
6178 + if (!open2) {
6179 + instance.pointerType = void 0;
6180 + instance.restTimeoutPending = false;
6181 + instance.interactedInside = false;
6182 + clearPointerEvents();
6183 + }
6184 + }, [open2, instance, clearPointerEvents]);
6185 + React26.useEffect(() => {
6186 + return clearPointerEvents;
6187 + }, [clearPointerEvents]);
6188 + useIsoLayoutEffect(() => {
6189 + if (!enabled) {
6190 + return void 0;
6191 + }
6192 + if (open2 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) {
6193 + const ref = domReferenceElement;
6194 + const floatingEl = floatingElement;
6195 + const doc = ownerDocument(floatingElement);
6196 + const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating;
6197 + if (parentFloating) {
6198 + parentFloating.style.pointerEvents = "";
6199 + }
6200 + const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null;
6201 + const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null;
6202 + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc.body;
6203 + applySafePolygonPointerEventsMutation(instance, {
6204 + scopeElement,
6205 + referenceElement: ref,
6206 + floatingElement: floatingEl
6207 + });
6208 + return () => {
6209 + clearPointerEvents();
6210 + };
6211 + }
6212 + return void 0;
6213 + }, [enabled, open2, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]);
6214 + React26.useEffect(() => {
6215 + if (!enabled) {
6216 + return void 0;
6217 + }
6218 + function hasParentChildren() {
6219 + return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0);
6220 + }
6221 + function closeWithDelay(event) {
6222 + const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType);
6223 + const close = () => {
6224 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
6225 + tree?.events.emit("floating.closed", event);
6226 + };
6227 + if (closeDelay) {
6228 + instance.openChangeTimeout.start(closeDelay, close);
6229 + } else {
6230 + instance.openChangeTimeout.clear();
6231 + close();
6232 + }
6233 + }
6234 + function handleInteractInside(event) {
6235 + const target = getTarget(event);
6236 + if (!isInteractiveElement(target)) {
6237 + instance.interactedInside = false;
6238 + return;
6239 + }
6240 + instance.interactedInside = target?.closest("[aria-haspopup]") != null;
6241 + }
6242 + function onFloatingMouseEnter() {
6243 + instance.openChangeTimeout.clear();
6244 + childClosedTimeout.clear();
6245 + tree?.events.off("floating.closed", onNodeClosed);
6246 + clearPointerEvents();
6247 + }
6248 + function onFloatingMouseLeave(event) {
6249 + if (hasParentChildren() && tree) {
6250 + tree.events.on("floating.closed", onNodeClosed);
6251 + return;
6252 + }
6253 + if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) {
6254 + return;
6255 + }
6256 + const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp;
6257 + const relatedTarget = event.relatedTarget;
6258 + const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget));
6259 + if (isMovingIntoDescendantFloating) {
6260 + return;
6261 + }
6262 + if (instance.handler) {
6263 + instance.handler(event);
6264 + return;
6265 + }
6266 + clearPointerEvents();
6267 + if (isHoverOpen() && !isClickLikeOpenEvent2()) {
6268 + closeWithDelay(event);
6269 + }
6270 + }
6271 + function onNodeClosed(event) {
6272 + if (!tree || !parentId || hasParentChildren()) {
6273 + return;
6274 + }
6275 + childClosedTimeout.start(0, () => {
6276 + tree.events.off("floating.closed", onNodeClosed);
6277 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
6278 + tree.events.emit("floating.closed", event);
6279 + });
6280 + }
6281 + const floating = floatingElement;
6282 + return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => {
6283 + tree?.events.off("floating.closed", onNodeClosed);
6284 + });
6285 + }, [enabled, floatingElement, store2, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]);
6286 +}
6287 +
6288 +// node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs
6289 +var React27 = __toESM(require_react(), 1);
6290 +var ReactDOM5 = __toESM(require_react_dom(), 1);
6291 +var EMPTY_REF = {
6292 + current: null
6293 +};
6294 +function useHoverReferenceInteraction(context, props = {}) {
6295 + const {
6296 + enabled = true,
6297 + delay = 0,
6298 + handleClose = null,
6299 + mouseOnly = false,
6300 + restMs = 0,
6301 + move = true,
6302 + triggerElementRef = EMPTY_REF,
6303 + externalTree,
6304 + isActiveTrigger = true,
6305 + getHandleCloseContext,
6306 + isClosing,
6307 + shouldOpen: shouldOpenProp,
6308 + guardStaleOpen = false
6309 + } = props;
6310 + const store2 = "rootStore" in context ? context.rootStore : context;
6311 + const {
6312 + dataRef,
6313 + events
6314 + } = store2.context;
6315 + const tree = useFloatingTree(externalTree);
6316 + const instance = useHoverInteractionSharedState(store2);
6317 + const isHoverCloseActiveRef = React27.useRef(false);
6318 + const handleCloseRef = useValueAsRef(handleClose);
6319 + const delayRef = useValueAsRef(delay);
6320 + const restMsRef = useValueAsRef(restMs);
6321 + const enabledRef = useValueAsRef(enabled);
6322 + const shouldOpenRef = useValueAsRef(shouldOpenProp);
6323 + const isClosingRef = useValueAsRef(isClosing);
6324 + const isClickLikeOpenEvent2 = useStableCallback(() => {
6325 + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
6326 + });
6327 + const checkShouldOpen = useStableCallback(() => {
6328 + return shouldOpenRef.current?.() !== false;
6329 + });
6330 + const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => {
6331 + const allTriggers = store2.context.triggerElements;
6332 + if (allTriggers.hasElement(currentTarget)) {
6333 + return !currentDomReference || !contains(currentDomReference, currentTarget);
6334 + }
6335 + if (!isElement(target)) {
6336 + return false;
6337 + }
6338 + const targetElement = target;
6339 + return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement));
6340 + });
6341 + const cleanupMouseMoveHandler = useStableCallback(() => {
6342 + if (!instance.handler) {
6343 + return;
6344 + }
6345 + const doc = ownerDocument(store2.select("domReferenceElement"));
6346 + doc.removeEventListener("mousemove", instance.handler);
6347 + instance.handler = void 0;
6348 + });
6349 + const clearPointerEvents = useStableCallback(() => {
6350 + clearSafePolygonPointerEventsMutation(instance);
6351 + });
6352 + if (isActiveTrigger) {
6353 + instance.handleCloseOptions = handleClose?.__options;
6354 + }
6355 + React27.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]);
6356 + React27.useEffect(() => {
6357 + if (!enabled) {
6358 + return void 0;
6359 + }
6360 + function onOpenChangeLocal(details) {
6361 + if (!details.open) {
6362 + isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover;
6363 + cleanupMouseMoveHandler();
6364 + instance.openChangeTimeout.clear();
6365 + instance.restTimeout.clear();
6366 + instance.blockMouseMove = true;
6367 + instance.restTimeoutPending = false;
6368 + } else {
6369 + isHoverCloseActiveRef.current = false;
6370 + }
6371 + }
6372 + events.on("openchange", onOpenChangeLocal);
6373 + return () => {
6374 + events.off("openchange", onOpenChangeLocal);
6375 + };
6376 + }, [enabled, events, instance, cleanupMouseMoveHandler]);
6377 + React27.useEffect(() => {
6378 + if (!enabled) {
6379 + return void 0;
6380 + }
6381 + function closeWithDelay(event, runElseBranch = true) {
6382 + const closeDelay = getDelay(delayRef.current, "close", instance.pointerType);
6383 + if (closeDelay) {
6384 + instance.openChangeTimeout.start(closeDelay, () => {
6385 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
6386 + tree?.events.emit("floating.closed", event);
6387 + });
6388 + } else if (runElseBranch) {
6389 + instance.openChangeTimeout.clear();
6390 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
6391 + tree?.events.emit("floating.closed", event);
6392 + }
6393 + }
6394 + const trigger = triggerElementRef.current ?? (isActiveTrigger ? store2.select("domReferenceElement") : null);
6395 + if (!isElement(trigger)) {
6396 + return void 0;
6397 + }
6398 + function onMouseEnter(event) {
6399 + instance.openChangeTimeout.clear();
6400 + instance.blockMouseMove = false;
6401 + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
6402 + return;
6403 + }
6404 + const restMsValue = getRestMs(restMsRef.current);
6405 + const openDelay = getDelay(delayRef.current, "open", instance.pointerType);
6406 + const eventTarget = getTarget(event);
6407 + const currentTarget = event.currentTarget ?? null;
6408 + const currentDomReference = store2.select("domReferenceElement");
6409 + let triggerNode = currentTarget;
6410 + if (isElement(eventTarget) && !store2.context.triggerElements.hasElement(eventTarget)) {
6411 + for (const triggerElement of store2.context.triggerElements.elements()) {
6412 + if (contains(triggerElement, eventTarget)) {
6413 + triggerNode = triggerElement;
6414 + break;
6415 + }
6416 + }
6417 + }
6418 + if (isElement(currentTarget) && isElement(currentDomReference) && !store2.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) {
6419 + triggerNode = currentDomReference;
6420 + }
6421 + const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget);
6422 + const isOpen = store2.select("open");
6423 + const isInClosingTransition = isClosingRef.current?.() ?? store2.select("transitionStatus") === "ending";
6424 + const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current;
6425 + const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition;
6426 + const isRestOnlyDelay = restMsValue > 0 && !openDelay;
6427 + const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition;
6428 + const shouldOpen = !isOpen || isOverInactive;
6429 + if (shouldOpenImmediately) {
6430 + if (checkShouldOpen()) {
6431 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
6432 + }
6433 + return;
6434 + }
6435 + if (isRestOnlyDelay) {
6436 + return;
6437 + }
6438 + if (openDelay) {
6439 + instance.openChangeTimeout.start(openDelay, () => {
6440 + if (shouldOpen && checkShouldOpen()) {
6441 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
6442 + }
6443 + });
6444 + } else if (shouldOpen) {
6445 + if (checkShouldOpen()) {
6446 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
6447 + }
6448 + }
6449 + }
6450 + function onMouseLeave(event) {
6451 + if (isClickLikeOpenEvent2()) {
6452 + clearPointerEvents();
6453 + return;
6454 + }
6455 + cleanupMouseMoveHandler();
6456 + const domReferenceElement = store2.select("domReferenceElement");
6457 + const doc = ownerDocument(domReferenceElement);
6458 + instance.restTimeout.clear();
6459 + instance.restTimeoutPending = false;
6460 + const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.();
6461 + if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) {
6462 + return;
6463 + }
6464 + if (handleCloseRef.current && handleCloseContextBase) {
6465 + if (!store2.select("open")) {
6466 + instance.openChangeTimeout.clear();
6467 + }
6468 + const currentTrigger = triggerElementRef.current;
6469 + instance.handler = handleCloseRef.current({
6470 + ...handleCloseContextBase,
6471 + tree,
6472 + x: event.clientX,
6473 + y: event.clientY,
6474 + onClose() {
6475 + clearPointerEvents();
6476 + cleanupMouseMoveHandler();
6477 + if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store2.select("domReferenceElement")) {
6478 + closeWithDelay(event, true);
6479 + }
6480 + }
6481 + });
6482 + doc.addEventListener("mousemove", instance.handler);
6483 + instance.handler(event);
6484 + return;
6485 + }
6486 + const shouldClose = instance.pointerType === "touch" ? !contains(store2.select("floatingElement"), event.relatedTarget) : true;
6487 + if (shouldClose) {
6488 + closeWithDelay(event);
6489 + }
6490 + }
6491 + function onMouseOut(event) {
6492 + if (contains(trigger, event.relatedTarget)) {
6493 + return;
6494 + }
6495 + instance.openChangeTimeout.clear();
6496 + instance.restTimeout.clear();
6497 + instance.restTimeoutPending = false;
6498 + }
6499 + const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0;
6500 + if (move) {
6501 + return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, {
6502 + once: true
6503 + }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
6504 + }
6505 + return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
6506 + }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]);
6507 + return React27.useMemo(() => {
6508 + if (!enabled) {
6509 + return void 0;
6510 + }
6511 + function setPointerRef(event) {
6512 + instance.pointerType = event.pointerType;
6513 + }
6514 + return {
6515 + onPointerDown: setPointerRef,
6516 + onPointerEnter: setPointerRef,
6517 + onMouseMove(event) {
6518 + const {
6519 + nativeEvent
6520 + } = event;
6521 + const trigger = event.currentTarget;
6522 + const currentDomReference = store2.select("domReferenceElement");
6523 + const currentOpen = store2.select("open");
6524 + const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target);
6525 + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
6526 + return;
6527 + }
6528 + if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) {
6529 + const floatingElement = store2.select("floatingElement");
6530 + if (floatingElement) {
6531 + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body;
6532 + applySafePolygonPointerEventsMutation(instance, {
6533 + scopeElement,
6534 + referenceElement: trigger,
6535 + floatingElement
6536 + });
6537 + }
6538 + }
6539 + const restMsValue = getRestMs(restMsRef.current);
6540 + if (currentOpen && !isOverInactive || restMsValue === 0) {
6541 + return;
6542 + }
6543 + if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) {
6544 + return;
6545 + }
6546 + instance.restTimeout.clear();
6547 + function handleMouseMove() {
6548 + instance.restTimeoutPending = false;
6549 + if (isClickLikeOpenEvent2()) {
6550 + return;
6551 + }
6552 + const latestOpen = store2.select("open");
6553 + if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) {
6554 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger));
6555 + }
6556 + }
6557 + if (instance.pointerType === "touch") {
6558 + ReactDOM5.flushSync(() => {
6559 + handleMouseMove();
6560 + });
6561 + } else if (isOverInactive && currentOpen) {
6562 + handleMouseMove();
6563 + } else {
6564 + instance.restTimeoutPending = true;
6565 + instance.restTimeout.start(restMsValue, handleMouseMove);
6566 + }
6567 + }
6568 + };
6569 + }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef, checkShouldOpen]);
6570 +}
6571 +
6572 +// node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs
6573 +var CURSOR_SPEED_THRESHOLD = 0.1;
6574 +var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;
6575 +var POLYGON_BUFFER = 0.5;
6576 +function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) {
6577 + return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi;
6578 +}
6579 +function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) {
6580 + let isInsideValue = false;
6581 + if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) {
6582 + isInsideValue = !isInsideValue;
6583 + }
6584 + if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) {
6585 + isInsideValue = !isInsideValue;
6586 + }
6587 + if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) {
6588 + isInsideValue = !isInsideValue;
6589 + }
6590 + if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) {
6591 + isInsideValue = !isInsideValue;
6592 + }
6593 + return isInsideValue;
6594 +}
6595 +function isInsideRect(pointX, pointY, rect) {
6596 + return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height;
6597 +}
6598 +function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) {
6599 + const minX = Math.min(x1, x2);
6600 + const maxX = Math.max(x1, x2);
6601 + const minY = Math.min(y1, y2);
6602 + const maxY = Math.max(y1, y2);
6603 + return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;
6604 +}
6605 +function safePolygon(options = {}) {
6606 + const {
6607 + blockPointerEvents = false
6608 + } = options;
6609 + const timeout = new Timeout();
6610 + const fn = ({
6611 + x,
6612 + y,
6613 + placement,
6614 + elements,
6615 + onClose,
6616 + nodeId,
6617 + tree
6618 + }) => {
6619 + const side = placement?.split("-")[0];
6620 + let hasLanded = false;
6621 + let lastX = null;
6622 + let lastY = null;
6623 + let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0;
6624 + function isCursorMovingSlowly(nextX, nextY) {
6625 + const currentTime = performance.now();
6626 + const elapsedTime = currentTime - lastCursorTime;
6627 + if (lastX === null || lastY === null || elapsedTime === 0) {
6628 + lastX = nextX;
6629 + lastY = nextY;
6630 + lastCursorTime = currentTime;
6631 + return false;
6632 + }
6633 + const deltaX = nextX - lastX;
6634 + const deltaY = nextY - lastY;
6635 + const distanceSquared = deltaX * deltaX + deltaY * deltaY;
6636 + const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;
6637 + lastX = nextX;
6638 + lastY = nextY;
6639 + lastCursorTime = currentTime;
6640 + return distanceSquared < thresholdSquared;
6641 + }
6642 + function close() {
6643 + timeout.clear();
6644 + onClose();
6645 + }
6646 + return function onMouseMove(event) {
6647 + timeout.clear();
6648 + const domReference = elements.domReference;
6649 + const floating = elements.floating;
6650 + if (!domReference || !floating || side == null || x == null || y == null) {
6651 + return void 0;
6652 + }
6653 + const {
6654 + clientX,
6655 + clientY
6656 + } = event;
6657 + const target = getTarget(event);
6658 + const isLeave = event.type === "mouseleave";
6659 + const isOverFloatingEl = contains(floating, target);
6660 + const isOverReferenceEl = contains(domReference, target);
6661 + if (isOverFloatingEl) {
6662 + hasLanded = true;
6663 + if (!isLeave) {
6664 + return void 0;
6665 + }
6666 + }
6667 + if (isOverReferenceEl) {
6668 + hasLanded = false;
6669 + if (!isLeave) {
6670 + hasLanded = true;
6671 + return void 0;
6672 + }
6673 + }
6674 + if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) {
6675 + return void 0;
6676 + }
6677 + function hasOpenChildNode() {
6678 + return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0);
6679 + }
6680 + function closeIfNoOpenChild() {
6681 + if (!hasOpenChildNode()) {
6682 + close();
6683 + }
6684 + }
6685 + if (hasOpenChildNode()) {
6686 + return void 0;
6687 + }
6688 + const refRect = domReference.getBoundingClientRect();
6689 + const rect = floating.getBoundingClientRect();
6690 + const cursorLeaveFromRight = x > rect.right - rect.width / 2;
6691 + const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;
6692 + const isFloatingWider = rect.width > refRect.width;
6693 + const isFloatingTaller = rect.height > refRect.height;
6694 + const left = (isFloatingWider ? refRect : rect).left;
6695 + const right = (isFloatingWider ? refRect : rect).right;
6696 + const top = (isFloatingTaller ? refRect : rect).top;
6697 + const bottom = (isFloatingTaller ? refRect : rect).bottom;
6698 + if (side === "top" && y >= refRect.bottom - 1 || side === "bottom" && y <= refRect.top + 1 || side === "left" && x >= refRect.right - 1 || side === "right" && x <= refRect.left + 1) {
6699 + closeIfNoOpenChild();
6700 + return void 0;
6701 + }
6702 + let isInsideTroughRect = false;
6703 + switch (side) {
6704 + case "top":
6705 + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1);
6706 + break;
6707 + case "bottom":
6708 + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1);
6709 + break;
6710 + case "left":
6711 + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top);
6712 + break;
6713 + case "right":
6714 + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top);
6715 + break;
6716 + default:
6717 + }
6718 + if (isInsideTroughRect) {
6719 + return void 0;
6720 + }
6721 + if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {
6722 + closeIfNoOpenChild();
6723 + return void 0;
6724 + }
6725 + if (!isLeave && isCursorMovingSlowly(clientX, clientY)) {
6726 + closeIfNoOpenChild();
6727 + return void 0;
6728 + }
6729 + let isInsidePolygon = false;
6730 + switch (side) {
6731 + case "top": {
6732 + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
6733 + const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;
6734 + const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;
6735 + const cursorPointY = y + POLYGON_BUFFER + 1;
6736 + const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top;
6737 + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER;
6738 + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
6739 + break;
6740 + }
6741 + case "bottom": {
6742 + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
6743 + const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;
6744 + const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;
6745 + const cursorPointY = y - POLYGON_BUFFER;
6746 + const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom;
6747 + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER;
6748 + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
6749 + break;
6750 + }
6751 + case "left": {
6752 + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
6753 + const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;
6754 + const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;
6755 + const cursorPointX = x + POLYGON_BUFFER + 1;
6756 + const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left;
6757 + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER;
6758 + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY);
6759 + break;
6760 + }
6761 + case "right": {
6762 + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
6763 + const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;
6764 + const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;
6765 + const cursorPointX = x - POLYGON_BUFFER;
6766 + const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right;
6767 + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER;
6768 + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom);
6769 + break;
6770 + }
6771 + default:
6772 + }
6773 + if (!isInsidePolygon) {
6774 + closeIfNoOpenChild();
6775 + } else if (!hasLanded) {
6776 + timeout.start(40, closeIfNoOpenChild);
6777 + }
6778 + return void 0;
6779 + };
6780 + };
6781 + fn.__options = {
6782 + ...options,
6783 + blockPointerEvents
6784 + };
6785 + return fn;
6786 +}
6787 +
6788 +// node_modules/@base-ui/react/utils/NullStore.mjs
6789 +var NullStore = class extends ReactStore {
6790 + // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding
6791 + // `setState` alone would neutralize them today. They are overridden explicitly so the store stays
6792 + // inert even if a future base-class change stops routing a mutator through `setState`.
6793 + setState(_newState) {
6794 + }
6795 + update(_changes) {
6796 + }
6797 + set(_key, _value) {
6798 + }
6799 + notifyAll() {
6800 + }
6801 +};
6802 +
6803 +// node_modules/@base-ui/utils/inertValue.mjs
6804 +function inertValue(value) {
6805 + if (isReactVersionAtLeast(19)) {
6806 + return value;
6807 + }
6808 + return value ? "true" : void 0;
6809 +}
6810 +
6811 +// node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs
6812 +var React28 = __toESM(require_react(), 1);
6813 +var DirectionContext = /* @__PURE__ */ React28.createContext(void 0);
6814 +if (true) DirectionContext.displayName = "DirectionContext";
6815 +function useDirection() {
6816 + const context = React28.useContext(DirectionContext);
6817 + return context?.direction ?? "ltr";
6818 +}
6819 +
6820 +// node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
6821 +var React29 = __toESM(require_react(), 1);
6822 +
6823 +// node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs
6824 +var baseArrow = (options) => ({
6825 + name: "arrow",
6826 + options,
6827 + async fn(state) {
6828 + const {
6829 + x,
6830 + y,
6831 + placement,
6832 + rects,
6833 + platform: platform3,
6834 + elements,
6835 + middlewareData
6836 + } = state;
6837 + const {
6838 + element,
6839 + padding = 0,
6840 + offsetParent = "real"
6841 + } = evaluate(options, state) || {};
6842 + if (element == null) {
6843 + return {};
6844 + }
6845 + const paddingObject = getPaddingObject(padding);
6846 + const coords = {
6847 + x,
6848 + y
6849 + };
6850 + const axis = getAlignmentAxis(placement);
6851 + const length = getAxisLength(axis);
6852 + const arrowDimensions = await platform3.getDimensions(element);
6853 + const isYAxis = axis === "y";
6854 + const minProp = isYAxis ? "top" : "left";
6855 + const maxProp = isYAxis ? "bottom" : "right";
6856 + const clientProp = isYAxis ? "clientHeight" : "clientWidth";
6857 + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
6858 + const startDiff = coords[axis] - rects.reference[axis];
6859 + const arrowOffsetParent = offsetParent === "real" ? await platform3.getOffsetParent?.(element) : elements.floating;
6860 + let clientSize = elements.floating[clientProp] || rects.floating[length];
6861 + if (!clientSize || !await platform3.isElement?.(arrowOffsetParent)) {
6862 + clientSize = elements.floating[clientProp] || rects.floating[length];
6863 + }
6864 + const centerToReference = endDiff / 2 - startDiff / 2;
6865 + const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
6866 + const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding);
6867 + const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding);
6868 + const min2 = minPadding;
6869 + const max2 = clientSize - arrowDimensions[length] - maxPadding;
6870 + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
6871 + const offset4 = clamp(min2, center, max2);
6872 + const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
6873 + const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0;
6874 + return {
6875 + [axis]: coords[axis] + alignmentOffset,
6876 + data: {
6877 + [axis]: offset4,
6878 + centerOffset: center - offset4 - alignmentOffset,
6879 + ...shouldAddOffset && {
6880 + alignmentOffset
6881 + }
6882 + },
6883 + reset: shouldAddOffset
6884 + };
6885 + }
6886 +});
6887 +var arrow4 = (options, deps) => {
6888 + const {
6889 + name,
6890 + fn
6891 + } = baseArrow(options);
6892 + return {
6893 + name,
6894 + fn,
6895 + options: [options, deps]
6896 + };
6897 +};
6898 +
6899 +// node_modules/@base-ui/react/utils/hideMiddleware.mjs
6900 +var hide4 = {
6901 + name: "hide",
6902 + async fn(state) {
6903 + const {
6904 + width,
6905 + height,
6906 + x,
6907 + y
6908 + } = state.rects.reference;
6909 + const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0;
6910 + const overflow = await state.platform.detectOverflow(state, {
6911 + elementContext: "reference"
6912 + });
6913 + const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0;
6914 + return {
6915 + data: {
6916 + referenceHidden: referenceHidden || anchorHidden2
6917 + }
6918 + };
6919 + }
6920 +};
6921 +
6922 +// node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs
6923 +var DEFAULT_SIDES = {
6924 + sideX: "left",
6925 + sideY: "top"
6926 +};
6927 +
6928 +// node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs
6929 +var availableWidth = "--available-width";
6930 +var availableHeight = "--available-height";
6931 +var anchorWidth = "--anchor-width";
6932 +var anchorHeight = "--anchor-height";
6933 +var transformOrigin = "--transform-origin";
6934 +var positionerWidth = "--positioner-width";
6935 +var positionerHeight = "--positioner-height";
6936 +
6937 +// node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
6938 +var AVAILABLE_WIDTH_VAR = availableWidth;
6939 +var AVAILABLE_HEIGHT_VAR = availableHeight;
6940 +function getLogicalSide(sideParam, renderedSide, isRtl) {
6941 + const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end";
6942 + const logicalRight = isRtl ? "inline-start" : "inline-end";
6943 + const logicalLeft = isRtl ? "inline-end" : "inline-start";
6944 + return {
6945 + top: "top",
6946 + right: isLogicalSideParam ? logicalRight : "right",
6947 + bottom: "bottom",
6948 + left: isLogicalSideParam ? logicalLeft : "left"
6949 + }[renderedSide];
6950 +}
6951 +function getOffsetData(state, sideParam, isRtl) {
6952 + const {
6953 + rects,
6954 + placement
6955 + } = state;
6956 + const data = {
6957 + side: getLogicalSide(sideParam, getSide(placement), isRtl),
6958 + align: getAlignment(placement) || "center",
6959 + anchor: {
6960 + width: rects.reference.width,
6961 + height: rects.reference.height
6962 + },
6963 + positioner: {
6964 + width: rects.floating.width,
6965 + height: rects.floating.height
6966 + }
6967 + };
6968 + return data;
6969 +}
6970 +function useAnchorPositioning(params) {
6971 + return useAnchorPositioningWithHook(params, useBaseUIFloating);
6972 +}
6973 +function useAnchorPositioningWithHook(params, useFloatingHook) {
6974 + const {
6975 + // Public parameters
6976 + anchor,
6977 + positionMethod = "absolute",
6978 + side: sideParam = "bottom",
6979 + sideOffset = 0,
6980 + align = "center",
6981 + alignOffset = 0,
6982 + collisionBoundary,
6983 + collisionPadding: collisionPaddingParam = 5,
6984 + sticky = false,
6985 + arrowPadding = 5,
6986 + disableAnchorTracking = false,
6987 + inline: inlineMiddleware,
6988 + // Private parameters
6989 + keepMounted = false,
6990 + floatingRootContext,
6991 + mounted,
6992 + collisionAvoidance,
6993 + shift: shift4,
6994 + nodeId,
6995 + adaptiveOrigin: adaptiveOrigin2,
6996 + lazyFlip = false,
6997 + externalTree
6998 + } = params;
6999 + const [mountSide, setMountSide] = React29.useState(null);
7000 + if (!mounted && mountSide !== null) {
7001 + setMountSide(null);
7002 + }
7003 + const collisionAvoidanceSide = collisionAvoidance.side || "flip";
7004 + const collisionAvoidanceAlign = collisionAvoidance.align || "flip";
7005 + const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end";
7006 + const shiftCrossAxis = shift4?.crossAxis ?? false;
7007 + const shiftRootBoundary = shift4?.rootBoundary;
7008 + const anchorFn = typeof anchor === "function" ? anchor : void 0;
7009 + const anchorFnCallback = useStableCallback(anchorFn);
7010 + const anchorDep = anchorFn ? anchorFnCallback : anchor;
7011 + const anchorValueRef = useValueAsRef(anchor);
7012 + const mountedRef = useValueAsRef(mounted);
7013 + const direction = useDirection();
7014 + const isRtl = direction === "rtl";
7015 + const side = mountSide || {
7016 + top: "top",
7017 + right: "right",
7018 + bottom: "bottom",
7019 + left: "left",
7020 + "inline-end": isRtl ? "left" : "right",
7021 + "inline-start": isRtl ? "right" : "left"
7022 + }[sideParam];
7023 + const placement = align === "center" ? side : `${side}-${align}`;
7024 + let collisionPadding = collisionPaddingParam;
7025 + if (typeof collisionPadding === "number") {
7026 + collisionPadding = {
7027 + top: collisionPadding,
7028 + right: collisionPadding,
7029 + bottom: collisionPadding,
7030 + left: collisionPadding
7031 + };
7032 + } else if (collisionPadding) {
7033 + collisionPadding = {
7034 + top: collisionPadding.top || 0,
7035 + right: collisionPadding.right || 0,
7036 + bottom: collisionPadding.bottom || 0,
7037 + left: collisionPadding.left || 0
7038 + };
7039 + }
7040 + const bias = 1;
7041 + const biasTop = sideParam === "bottom" ? bias : 0;
7042 + const biasBottom = sideParam === "top" ? bias : 0;
7043 + const biasLeft = sideParam === "right" ? bias : 0;
7044 + const biasRight = sideParam === "left" ? bias : 0;
7045 + const commonCollisionProps = {
7046 + boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary,
7047 + padding: collisionPadding
7048 + };
7049 + const arrowRef = React29.useRef(null);
7050 + const sideOffsetRef = useValueAsRef(sideOffset);
7051 + const alignOffsetRef = useValueAsRef(alignOffset);
7052 + const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0;
7053 + const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0;
7054 + const middleware = [];
7055 + if (inlineMiddleware) {
7056 + middleware.push(inlineMiddleware);
7057 + }
7058 + middleware.push(offset3((state) => {
7059 + const data = getOffsetData(state, sideParam, isRtl);
7060 + const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current;
7061 + const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current;
7062 + return {
7063 + mainAxis: sideAxis,
7064 + crossAxis: alignAxis,
7065 + alignmentAxis: alignAxis
7066 + };
7067 + }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam]));
7068 + const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift";
7069 + const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift");
7070 + const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({
7071 + ...commonCollisionProps,
7072 + // Ensure the popup flips if it's been limited by its --available-height and it resizes.
7073 + // Since the size() padding is smaller than the flip() padding, flip() will take precedence.
7074 + padding: {
7075 + top: collisionPadding.top + bias + biasTop,
7076 + right: collisionPadding.right + bias + biasRight,
7077 + bottom: collisionPadding.bottom + bias + biasBottom,
7078 + left: collisionPadding.left + bias + biasLeft
7079 + },
7080 + mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip",
7081 + crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false,
7082 + fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide
7083 + });
7084 + const shiftMiddleware = shiftDisabled ? null : shift3({
7085 + ...commonCollisionProps,
7086 + // Use the Layout Viewport to avoid shifting around when pinch-zooming.
7087 + rootBoundary: shiftRootBoundary,
7088 + mainAxis: collisionAvoidanceAlign !== "none",
7089 + crossAxis: crossAxisShiftEnabled,
7090 + limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => {
7091 + if (!arrowRef.current) {
7092 + return {};
7093 + }
7094 + const {
7095 + width,
7096 + height
7097 + } = arrowRef.current.getBoundingClientRect();
7098 + const sideAxis = getSideAxis(getSide(limitData.placement));
7099 + const arrowSize = sideAxis === "y" ? width : height;
7100 + const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom;
7101 + return {
7102 + offset: arrowSize / 2 + offsetAmount / 2
7103 + };
7104 + })
7105 + }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]);
7106 + if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || align === "center") {
7107 + middleware.push(shiftMiddleware, flipMiddleware);
7108 + } else {
7109 + middleware.push(flipMiddleware, shiftMiddleware);
7110 + }
7111 + middleware.push(size3({
7112 + ...commonCollisionProps,
7113 + apply({
7114 + elements: {
7115 + floating
7116 + },
7117 + availableWidth: availableWidth2,
7118 + availableHeight: availableHeight2,
7119 + rects
7120 + }) {
7121 + if (!mountedRef.current) {
7122 + return;
7123 + }
7124 + const floatingStyle = floating.style;
7125 + floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `${availableWidth2}px`);
7126 + floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `${availableHeight2}px`);
7127 + const dpr = getWindow(floating).devicePixelRatio || 1;
7128 + const {
7129 + x: x2,
7130 + y: y2,
7131 + width,
7132 + height
7133 + } = rects.reference;
7134 + const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr;
7135 + const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr;
7136 + floatingStyle.setProperty(anchorWidth, `${anchorWidth2}px`);
7137 + floatingStyle.setProperty(anchorHeight, `${anchorHeight2}px`);
7138 + }
7139 + }), arrow4((state) => ({
7140 + // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
7141 + // we'll create a fake element.
7142 + element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"),
7143 + // No padding for the fake arrow: it would displace aligned popups on narrow anchors.
7144 + padding: arrowRef.current ? arrowPadding : 0,
7145 + offsetParent: "floating"
7146 + }), [arrowPadding]), {
7147 + name: "transformOrigin",
7148 + fn(state) {
7149 + const {
7150 + elements: {
7151 + floating
7152 + },
7153 + middlewareData: middlewareData2,
7154 + placement: renderedPlacement2,
7155 + platform: platform3,
7156 + rects,
7157 + y: y2
7158 + } = state;
7159 + const renderedSide2 = getSide(renderedPlacement2);
7160 + const renderedAlign2 = getAlignment(renderedPlacement2);
7161 + const isVertical = getSideAxis(renderedSide2) === "y";
7162 + const arrowEl = arrowRef.current;
7163 + const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset;
7164 + let crossOrigin;
7165 + if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) {
7166 + crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%";
7167 + } else {
7168 + const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0;
7169 + const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0;
7170 + crossOrigin = `${arrowOffset + arrowSize / 2}px`;
7171 + }
7172 + let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + ${sideOffsetValue}px)` : `${-sideOffsetValue}px`;
7173 + if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) {
7174 + sideOrigin = `${rects.reference.y + rects.reference.height / 2 - y2}px`;
7175 + }
7176 + floating.style.setProperty(transformOrigin, isVertical ? `${crossOrigin} ${sideOrigin}` : `${sideOrigin} ${crossOrigin}`);
7177 + return {};
7178 + }
7179 + }, hide4, adaptiveOrigin2);
7180 + useIsoLayoutEffect(() => {
7181 + if (!mounted && floatingRootContext) {
7182 + floatingRootContext.update({
7183 + referenceElement: null,
7184 + floatingElement: null,
7185 + domReferenceElement: null,
7186 + positionReference: null
7187 + });
7188 + }
7189 + }, [mounted, floatingRootContext]);
7190 + const autoUpdateOptions = React29.useMemo(() => ({
7191 + ancestorScroll: !disableAnchorTracking,
7192 + elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined",
7193 + layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined"
7194 + }), [disableAnchorTracking]);
7195 + const {
7196 + refs,
7197 + elements,
7198 + x,
7199 + y,
7200 + middlewareData,
7201 + update: update2,
7202 + placement: renderedPlacement,
7203 + context,
7204 + isPositioned,
7205 + floatingStyles: originalFloatingStyles
7206 + } = useFloatingHook({
7207 + rootContext: floatingRootContext,
7208 + open: keepMounted ? mounted : void 0,
7209 + placement,
7210 + middleware,
7211 + strategy: positionMethod,
7212 + whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions),
7213 + nodeId,
7214 + externalTree
7215 + });
7216 + const {
7217 + sideX,
7218 + sideY
7219 + } = middlewareData.adaptiveOrigin || DEFAULT_SIDES;
7220 + const resolvedPosition = isPositioned ? positionMethod : "fixed";
7221 + const floatingStyles = React29.useMemo(() => {
7222 + let base;
7223 + if (!isPositioned) {
7224 + base = {
7225 + position: resolvedPosition,
7226 + top: 0,
7227 + left: 0
7228 + };
7229 + } else if (adaptiveOrigin2) {
7230 + base = {
7231 + position: resolvedPosition,
7232 + [sideX]: x,
7233 + [sideY]: y
7234 + };
7235 + } else {
7236 + base = {
7237 + ...originalFloatingStyles,
7238 + position: resolvedPosition
7239 + };
7240 + }
7241 + base[AVAILABLE_WIDTH_VAR] = "100vw";
7242 + base[AVAILABLE_HEIGHT_VAR] = "100vh";
7243 + if (!isPositioned) {
7244 + base.opacity = 0;
7245 + }
7246 + return base;
7247 + }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]);
7248 + const registeredPositionReferenceRef = React29.useRef(null);
7249 + useIsoLayoutEffect(() => {
7250 + if (!mounted) {
7251 + return;
7252 + }
7253 + const anchorValue = anchorValueRef.current;
7254 + const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue;
7255 + const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null;
7256 + const finalAnchor = unwrappedElement || null;
7257 + if (finalAnchor !== registeredPositionReferenceRef.current) {
7258 + refs.setPositionReference(finalAnchor);
7259 + registeredPositionReferenceRef.current = finalAnchor;
7260 + }
7261 + }, [mounted, refs, anchorDep, anchorValueRef]);
7262 + React29.useEffect(() => {
7263 + if (!mounted) {
7264 + return;
7265 + }
7266 + const anchorValue = anchorValueRef.current;
7267 + if (typeof anchorValue === "function") {
7268 + return;
7269 + }
7270 + if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) {
7271 + refs.setPositionReference(anchorValue.current);
7272 + registeredPositionReferenceRef.current = anchorValue.current;
7273 + }
7274 + }, [mounted, refs, anchorDep, anchorValueRef]);
7275 + React29.useEffect(() => {
7276 + if (keepMounted && mounted && elements.reference && elements.floating) {
7277 + return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions);
7278 + }
7279 + return void 0;
7280 + }, [keepMounted, mounted, elements, update2, autoUpdateOptions]);
7281 + const renderedSide = getSide(renderedPlacement);
7282 + const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl);
7283 + const renderedAlign = getAlignment(renderedPlacement) || "center";
7284 + const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden);
7285 + useIsoLayoutEffect(() => {
7286 + if (lazyFlip && mounted && isPositioned && renderedSide !== side) {
7287 + setMountSide(renderedSide);
7288 + }
7289 + }, [lazyFlip, mounted, isPositioned, renderedSide, side]);
7290 + const arrowStyles = React29.useMemo(() => ({
7291 + position: "absolute",
7292 + top: middlewareData.arrow?.y,
7293 + left: middlewareData.arrow?.x
7294 + }), [middlewareData.arrow]);
7295 + const arrowUncentered = middlewareData.arrow?.centerOffset !== 0;
7296 + return React29.useMemo(() => ({
7297 + positionerStyles: floatingStyles,
7298 + arrowStyles,
7299 + arrowRef,
7300 + arrowUncentered,
7301 + side: logicalRenderedSide,
7302 + align: renderedAlign,
7303 + physicalSide: renderedSide,
7304 + anchorHidden: anchorHidden2,
7305 + refs,
7306 + context,
7307 + isPositioned,
7308 + update: update2
7309 + }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]);
7310 +}
7311 +function isRef(param) {
7312 + return param != null && "current" in param;
7313 +}
7314 +
7315 +// node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs
7316 +function getDisabledMountTransitionStyles(transitionStatus) {
7317 + return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT;
7318 +}
7319 +
7320 +// node_modules/@base-ui/react/utils/usePositioner.mjs
7321 +function usePositioner(componentProps, state, {
7322 + styles,
7323 + transitionStatus,
7324 + props,
7325 + refs,
7326 + hidden,
7327 + inert = false
7328 +}) {
7329 + const style = {
7330 + ...styles
7331 + };
7332 + if (inert) {
7333 + style.pointerEvents = "none";
7334 + }
7335 + return useRenderElement("div", componentProps, {
7336 + state,
7337 + ref: refs,
7338 + props: [{
7339 + role: "presentation",
7340 + hidden,
7341 + style
7342 + }, getDisabledMountTransitionStyles(transitionStatus), props],
7343 + stateAttributesMapping: popupStateMapping
7344 + });
7345 +}
7346 +
7347 +// node_modules/@base-ui/react/utils/usePopupViewport.mjs
7348 +var React33 = __toESM(require_react(), 1);
7349 +var ReactDOM6 = __toESM(require_react_dom(), 1);
7350 +
7351 +// node_modules/@base-ui/utils/usePreviousValue.mjs
7352 +var React30 = __toESM(require_react(), 1);
7353 +function usePreviousValue(value) {
7354 + const [state, setState] = React30.useState({
7355 + current: value,
7356 + previous: null
7357 + });
7358 + if (!Object.is(value, state.current)) {
7359 + setState({
7360 + current: value,
7361 + previous: state.current
7362 + });
7363 + }
7364 + return state.previous;
7365 +}
7366 +
7367 +// node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
7368 +var React31 = __toESM(require_react(), 1);
7369 +
7370 +// node_modules/@base-ui/react/utils/getCssDimensions.mjs
7371 +function getCssDimensions2(element) {
7372 + const css = getComputedStyle2(element);
7373 + let width = parseFloat(css.width) || 0;
7374 + let height = parseFloat(css.height) || 0;
7375 + const hasOffset = isHTMLElement(element);
7376 + const offsetWidth = hasOffset ? element.offsetWidth : width;
7377 + const offsetHeight = hasOffset ? element.offsetHeight : height;
7378 + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
7379 + if (shouldFallback) {
7380 + width = offsetWidth;
7381 + height = offsetHeight;
7382 + }
7383 + return {
7384 + width,
7385 + height
7386 + };
7387 +}
7388 +
7389 +// node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs
7390 +var popupWidth = "--popup-width";
7391 +var popupHeight = "--popup-height";
7392 +
7393 +// node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
7394 +function usePopupAutoResize(parameters) {
7395 + const {
7396 + popupElement,
7397 + positionerElement,
7398 + content,
7399 + mounted,
7400 + onMeasureLayout: onMeasureLayoutParam,
7401 + onMeasureLayoutComplete: onMeasureLayoutCompleteParam,
7402 + side,
7403 + direction
7404 + } = parameters;
7405 + const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true);
7406 + const animationFrame = useAnimationFrame();
7407 + const committedDimensionsRef = React31.useRef(null);
7408 + const isInitialRenderRef = React31.useRef(true);
7409 + const restoreAnchoringStylesRef = React31.useRef(NOOP);
7410 + const onMeasureLayout = useStableCallback(onMeasureLayoutParam);
7411 + const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam);
7412 + const anchoringStyles = React31.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]);
7413 + useIsoLayoutEffect(() => {
7414 + if (!mounted) {
7415 + restoreAnchoringStylesRef.current = NOOP;
7416 + isInitialRenderRef.current = true;
7417 + committedDimensionsRef.current = null;
7418 + return void 0;
7419 + }
7420 + if (!popupElement || !positionerElement) {
7421 + return void 0;
7422 + }
7423 + restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles);
7424 + setPopupCssSize(popupElement, "auto");
7425 + const restorePopupPosition = overrideElementStyle(popupElement, "position", "static");
7426 + const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none");
7427 + const restorePopupScale = overrideElementStyle(popupElement, "scale", "1");
7428 + const restorePositionerAvailableSize = applyElementStyles(positionerElement, {
7429 + [availableWidth]: "max-content",
7430 + [availableHeight]: "max-content"
7431 + });
7432 + function restoreMeasurementOverrides() {
7433 + restorePopupPosition();
7434 + restorePopupTransform();
7435 + restorePositionerAvailableSize();
7436 + }
7437 + function restoreMeasurementOverridesIncludingScale() {
7438 + restoreMeasurementOverrides();
7439 + restorePopupScale();
7440 + }
7441 + onMeasureLayout?.();
7442 + if (isInitialRenderRef.current || committedDimensionsRef.current === null) {
7443 + setPositionerCssSize(positionerElement, "max-content");
7444 + const dimensions = getCssDimensions2(popupElement);
7445 + committedDimensionsRef.current = dimensions;
7446 + setPositionerCssSize(positionerElement, dimensions);
7447 + restoreMeasurementOverridesIncludingScale();
7448 + onMeasureLayoutComplete?.(null, dimensions);
7449 + isInitialRenderRef.current = false;
7450 + return () => {
7451 + restoreAnchoringStylesRef.current();
7452 + restoreAnchoringStylesRef.current = NOOP;
7453 + };
7454 + }
7455 + setPositionerCssSize(positionerElement, "max-content");
7456 + const previousDimensions = committedDimensionsRef.current;
7457 + const newDimensions = getCssDimensions2(popupElement);
7458 + committedDimensionsRef.current = newDimensions;
7459 + setPopupCssSize(popupElement, previousDimensions);
7460 + restoreMeasurementOverridesIncludingScale();
7461 + onMeasureLayoutComplete?.(previousDimensions, newDimensions);
7462 + setPositionerCssSize(positionerElement, newDimensions);
7463 + const abortController = new AbortController();
7464 + animationFrame.request(() => {
7465 + setPopupCssSize(popupElement, newDimensions);
7466 + runOnceAnimationsFinish(() => {
7467 + popupElement.style.setProperty(popupWidth, "auto");
7468 + popupElement.style.setProperty(popupHeight, "auto");
7469 + }, abortController.signal);
7470 + });
7471 + return () => {
7472 + abortController.abort();
7473 + animationFrame.cancel();
7474 + restoreAnchoringStylesRef.current();
7475 + restoreAnchoringStylesRef.current = NOOP;
7476 + };
7477 + }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]);
7478 +}
7479 +function getPopupAnchoringStyles(side, direction) {
7480 + const isPhysicalTop = side === "top";
7481 + const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start");
7482 + if (!isPhysicalTop && !isPhysicalLeft) {
7483 + return EMPTY_OBJECT;
7484 + }
7485 + return {
7486 + position: "absolute",
7487 + [isPhysicalTop ? "bottom" : "top"]: "0",
7488 + [isPhysicalLeft ? "right" : "left"]: "0"
7489 + };
7490 +}
7491 +function overrideElementStyle(element, property, value) {
7492 + const originalValue = element.style.getPropertyValue(property);
7493 + element.style.setProperty(property, value);
7494 + return () => {
7495 + element.style.setProperty(property, originalValue);
7496 + };
7497 +}
7498 +function applyElementStyles(element, styles) {
7499 + const restorers = [];
7500 + for (const [key, value] of Object.entries(styles)) {
7501 + restorers.push(overrideElementStyle(element, key, value));
7502 + }
7503 + return restorers.length ? () => {
7504 + restorers.forEach((restore) => restore());
7505 + } : NOOP;
7506 +}
7507 +function setPopupCssSize(popupElement, size4) {
7508 + const width = size4 === "auto" ? "auto" : `${size4.width}px`;
7509 + const height = size4 === "auto" ? "auto" : `${size4.height}px`;
7510 + popupElement.style.setProperty(popupWidth, width);
7511 + popupElement.style.setProperty(popupHeight, height);
7512 +}
7513 +function setPositionerCssSize(positionerElement, size4) {
7514 + const width = size4 === "max-content" ? "max-content" : `${size4.width}px`;
7515 + const height = size4 === "max-content" ? "max-content" : `${size4.height}px`;
7516 + positionerElement.style.setProperty(positionerWidth, width);
7517 + positionerElement.style.setProperty(positionerHeight, height);
7518 +}
7519 +
7520 +// node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs
7521 +var React32 = __toESM(require_react(), 1);
7522 +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
7523 +var DirectionProvider = function DirectionProvider2(props) {
7524 + const {
7525 + direction = "ltr"
7526 + } = props;
7527 + const contextValue = React32.useMemo(() => ({
7528 + direction
7529 + }), [direction]);
7530 + return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DirectionContext.Provider, {
7531 + value: contextValue,
7532 + children: props.children
7533 + });
7534 +};
7535 +if (true) DirectionProvider.displayName = "DirectionProvider";
7536 +
7537 +// node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs
7538 +var adaptiveOrigin = {
7539 + name: "adaptiveOrigin",
7540 + async fn(state) {
7541 + const {
7542 + x: rawX,
7543 + y: rawY,
7544 + rects: {
7545 + floating: floatRect
7546 + },
7547 + elements: {
7548 + floating
7549 + },
7550 + platform: platform3,
7551 + strategy,
7552 + placement
7553 + } = state;
7554 + const win = getWindow(floating);
7555 + const styles = win.getComputedStyle(floating);
7556 + const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== "";
7557 + if (!hasTransition) {
7558 + return {
7559 + x: rawX,
7560 + y: rawY,
7561 + data: DEFAULT_SIDES
7562 + };
7563 + }
7564 + const offsetParent = await platform3.getOffsetParent?.(floating);
7565 + let offsetDimensions = {
7566 + width: 0,
7567 + height: 0
7568 + };
7569 + if (strategy === "fixed" && win?.visualViewport) {
7570 + offsetDimensions = {
7571 + width: win.visualViewport.width,
7572 + height: win.visualViewport.height
7573 + };
7574 + } else if (offsetParent === win) {
7575 + const doc = ownerDocument(floating);
7576 + offsetDimensions = {
7577 + width: doc.documentElement.clientWidth,
7578 + height: doc.documentElement.clientHeight
7579 + };
7580 + } else if (await platform3.isElement?.(offsetParent)) {
7581 + offsetDimensions = await platform3.getDimensions(offsetParent);
7582 + }
7583 + const currentSide = getSide(placement);
7584 + let x = rawX;
7585 + let y = rawY;
7586 + if (currentSide === "left") {
7587 + x = offsetDimensions.width - (rawX + floatRect.width);
7588 + }
7589 + if (currentSide === "top") {
7590 + y = offsetDimensions.height - (rawY + floatRect.height);
7591 + }
7592 + const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX;
7593 + const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY;
7594 + return {
7595 + x,
7596 + y,
7597 + data: {
7598 + sideX,
7599 + sideY
7600 + }
7601 + };
7602 + }
7603 +};
7604 +
7605 +// node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs
7606 +var activationDirection = "data-activation-direction";
7607 +
7608 +// node_modules/@base-ui/react/utils/usePopupViewport.mjs
7609 +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
7610 +var popupViewportStateMapping = {
7611 + activationDirection: (value) => value ? {
7612 + [activationDirection]: value
7613 + } : null
7614 +};
7615 +function usePopupViewport(parameters) {
7616 + const {
7617 + store: store2,
7618 + side,
7619 + children
7620 + } = parameters;
7621 + const direction = useDirection();
7622 + const activeTrigger = store2.useState("activeTriggerElement");
7623 + const activeTriggerId = store2.useState("activeTriggerId");
7624 + const open2 = store2.useState("open");
7625 + const payload = store2.useState("payload");
7626 + const mounted = store2.useState("mounted");
7627 + const popupElement = store2.useState("popupElement");
7628 + const positionerElement = store2.useState("positionerElement");
7629 + const previousActiveTrigger = usePreviousValue(open2 ? activeTrigger : null);
7630 + const currentContentKey = usePopupContentKey(activeTriggerId, payload);
7631 + const capturedNodeRef = React33.useRef(null);
7632 + const [previousContentNode, setPreviousContentNode] = React33.useState(null);
7633 + const [newTriggerOffset, setNewTriggerOffset] = React33.useState(null);
7634 + const currentContainerRef = React33.useRef(null);
7635 + const previousContainerRef = React33.useRef(null);
7636 + const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true);
7637 + const cleanupFrame = useAnimationFrame();
7638 + const cleanupControllerRef = React33.useRef(null);
7639 + const [previousContentDimensions, setPreviousContentDimensions] = React33.useState(null);
7640 + const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React33.useState(false);
7641 + useIsoLayoutEffect(() => {
7642 + store2.set("adaptiveOrigin", adaptiveOrigin);
7643 + return () => {
7644 + store2.set("adaptiveOrigin", void 0);
7645 + };
7646 + }, [store2]);
7647 + const handleMeasureLayout = useStableCallback(() => {
7648 + currentContainerRef.current?.style.setProperty("animation", "none");
7649 + currentContainerRef.current?.style.setProperty("transition", "none");
7650 + previousContainerRef.current?.style.setProperty("display", "none");
7651 + });
7652 + const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => {
7653 + currentContainerRef.current?.style.removeProperty("animation");
7654 + currentContainerRef.current?.style.removeProperty("transition");
7655 + previousContainerRef.current?.style.removeProperty("display");
7656 + if (previousDimensions) {
7657 + setPreviousContentDimensions(previousDimensions);
7658 + }
7659 + });
7660 + const armViewportCleanup = useStableCallback(() => {
7661 + cleanupControllerRef.current?.abort();
7662 + const controller = new AbortController();
7663 + cleanupControllerRef.current = controller;
7664 + onAnimationsFinished(() => {
7665 + setPreviousContentNode(null);
7666 + setPreviousContentDimensions(null);
7667 + capturedNodeRef.current = null;
7668 + }, controller.signal);
7669 + });
7670 + const lastHandledTriggerRef = React33.useRef(null);
7671 + useIsoLayoutEffect(() => {
7672 + if (!open2 || !mounted) {
7673 + lastHandledTriggerRef.current = null;
7674 + }
7675 + }, [open2, mounted]);
7676 + useIsoLayoutEffect(() => {
7677 + if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {
7678 + setPreviousContentNode(capturedNodeRef.current);
7679 + setShowStartingStyleAttribute(true);
7680 + const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger);
7681 + setNewTriggerOffset(offset4);
7682 + lastHandledTriggerRef.current = activeTrigger;
7683 + }
7684 + }, [activeTrigger, previousActiveTrigger]);
7685 + useIsoLayoutEffect(() => {
7686 + if (previousContentNode == null) {
7687 + return;
7688 + }
7689 + cleanupControllerRef.current?.abort();
7690 + setShowStartingStyleAttribute(true);
7691 + cleanupFrame.request(() => {
7692 + ReactDOM6.flushSync(() => {
7693 + setShowStartingStyleAttribute(false);
7694 + });
7695 + armViewportCleanup();
7696 + });
7697 + }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]);
7698 + useIsoLayoutEffect(() => {
7699 + const source = currentContainerRef.current;
7700 + if (!source) {
7701 + return;
7702 + }
7703 + const wrapper = ownerDocument(source).createElement("div");
7704 + for (const child of Array.from(source.childNodes)) {
7705 + wrapper.appendChild(child.cloneNode(true));
7706 + }
7707 + capturedNodeRef.current = wrapper;
7708 + });
7709 + const isTransitioning = previousContentNode != null;
7710 + let childrenToRender;
7711 + if (!isTransitioning) {
7712 + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", {
7713 + "data-current": true,
7714 + ref: currentContainerRef,
7715 + children
7716 + }, currentContentKey);
7717 + } else {
7718 + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(React33.Fragment, {
7719 + children: [/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", {
7720 + "data-previous": true,
7721 + inert: inertValue(true),
7722 + ref: previousContainerRef,
7723 + style: {
7724 + ...previousContentDimensions ? {
7725 + [popupWidth]: `${previousContentDimensions.width}px`,
7726 + [popupHeight]: `${previousContentDimensions.height}px`
7727 + } : null,
7728 + position: "absolute"
7729 + },
7730 + "data-ending-style": showStartingStyleAttribute ? void 0 : ""
7731 + }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", {
7732 + "data-current": true,
7733 + ref: currentContainerRef,
7734 + "data-starting-style": showStartingStyleAttribute ? "" : void 0,
7735 + children
7736 + }, currentContentKey)]
7737 + });
7738 + }
7739 + useIsoLayoutEffect(() => {
7740 + const container = previousContainerRef.current;
7741 + if (!container || !previousContentNode) {
7742 + return;
7743 + }
7744 + container.replaceChildren(...Array.from(previousContentNode.childNodes));
7745 + }, [previousContentNode]);
7746 + usePopupAutoResize({
7747 + popupElement,
7748 + positionerElement,
7749 + mounted,
7750 + content: payload,
7751 + onMeasureLayout: handleMeasureLayout,
7752 + onMeasureLayoutComplete: handleMeasureLayoutComplete,
7753 + side,
7754 + direction
7755 + });
7756 + const state = {
7757 + activationDirection: getActivationDirection(newTriggerOffset),
7758 + transitioning: isTransitioning
7759 + };
7760 + return {
7761 + children: childrenToRender,
7762 + state
7763 + };
7764 +}
7765 +function getActivationDirection(offset4) {
7766 + if (!offset4) {
7767 + return void 0;
7768 + }
7769 + return `${getValueWithTolerance(offset4.horizontal, 5, "right", "left")} ${getValueWithTolerance(offset4.vertical, 5, "down", "up")}`;
7770 +}
7771 +function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {
7772 + if (value > tolerance) {
7773 + return positiveLabel;
7774 + }
7775 + if (value < -tolerance) {
7776 + return negativeLabel;
7777 + }
7778 + return "";
7779 +}
7780 +function calculateRelativePosition(from, to) {
7781 + const fromRect = from.getBoundingClientRect();
7782 + const toRect = to.getBoundingClientRect();
7783 + const fromCenter = {
7784 + x: fromRect.left + fromRect.width / 2,
7785 + y: fromRect.top + fromRect.height / 2
7786 + };
7787 + const toCenter = {
7788 + x: toRect.left + toRect.width / 2,
7789 + y: toRect.top + toRect.height / 2
7790 + };
7791 + return {
7792 + horizontal: toCenter.x - fromCenter.x,
7793 + vertical: toCenter.y - fromCenter.y
7794 + };
7795 +}
7796 +function usePopupContentKey(activeTriggerId, payload) {
7797 + const [contentKey, setContentKey] = React33.useState(0);
7798 + const previousActiveTriggerIdRef = React33.useRef(activeTriggerId);
7799 + const previousPayloadRef = React33.useRef(payload);
7800 + const pendingPayloadUpdateRef = React33.useRef(false);
7801 + useIsoLayoutEffect(() => {
7802 + const previousActiveTriggerId = previousActiveTriggerIdRef.current;
7803 + const previousPayload = previousPayloadRef.current;
7804 + const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;
7805 + const payloadChanged = payload !== previousPayload;
7806 + if (triggerIdChanged) {
7807 + setContentKey((value) => value + 1);
7808 + pendingPayloadUpdateRef.current = !payloadChanged;
7809 + } else if (pendingPayloadUpdateRef.current && payloadChanged) {
7810 + setContentKey((value) => value + 1);
7811 + pendingPayloadUpdateRef.current = false;
7812 + }
7813 + previousActiveTriggerIdRef.current = activeTriggerId;
7814 + previousPayloadRef.current = payload;
7815 + }, [activeTriggerId, payload]);
7816 + return `${activeTriggerId ?? "current"}-${contentKey}`;
7817 +}
7818 +
7819 +// node_modules/@base-ui/react/utils/FloatingPortalLite.mjs
7820 +var React34 = __toESM(require_react(), 1);
7821 +var ReactDOM7 = __toESM(require_react_dom(), 1);
7822 +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
7823 +var FloatingPortalLite = /* @__PURE__ */ React34.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) {
7824 + const {
7825 + children,
7826 + container,
7827 + className,
7828 + render,
7829 + style,
7830 + ...elementProps
7831 + } = componentProps;
7832 + const {
7833 + node: portalNode,
7834 + subtree: portalSubtree
7835 + } = useFloatingPortalNode({
7836 + container,
7837 + ref: forwardedRef,
7838 + componentProps,
7839 + elementProps
7840 + });
7841 + if (!portalSubtree && !portalNode) {
7842 + return null;
7843 + }
7844 + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(React34.Fragment, {
7845 + children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM7.createPortal(children, portalNode)]
7846 + });
7847 +});
7848 +if (true) FloatingPortalLite.displayName = "FloatingPortalLite";
7849 +
7850 +// node_modules/@base-ui/react/tooltip/index.parts.mjs
7851 +var index_parts_exports = {};
7852 +__export(index_parts_exports, {
7853 + Arrow: () => TooltipArrow,
7854 + Handle: () => TooltipHandle,
7855 + Popup: () => TooltipPopup,
7856 + Portal: () => TooltipPortal,
7857 + Positioner: () => TooltipPositioner,
7858 + Provider: () => TooltipProvider,
7859 + Root: () => TooltipRoot,
7860 + Trigger: () => TooltipTrigger,
7861 + Viewport: () => TooltipViewport,
7862 + createHandle: () => createTooltipHandle
7863 +});
7864 +
7865 +// node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
7866 +var React37 = __toESM(require_react(), 1);
7867 +
7868 +// node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs
7869 +var React35 = __toESM(require_react(), 1);
7870 +var TooltipRootContext = /* @__PURE__ */ React35.createContext(void 0);
7871 +if (true) TooltipRootContext.displayName = "TooltipRootContext";
7872 +function useTooltipRootContext(optional) {
7873 + const context = React35.useContext(TooltipRootContext);
7874 + if (context === void 0 && !optional) {
7875 + throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72));
7876 + }
7877 + return context;
7878 +}
7879 +
7880 +// node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs
7881 +var React36 = __toESM(require_react(), 1);
7882 +var selectors2 = {
7883 + ...popupStoreSelectors,
7884 + disabled: (state) => state.disabled,
7885 + instantType: (state) => state.instantType,
7886 + isInstantPhase: (state) => state.isInstantPhase,
7887 + trackCursorAxis: (state) => state.trackCursorAxis,
7888 + disableHoverablePopup: (state) => state.disableHoverablePopup,
7889 + lastOpenChangeReason: (state) => state.openChangeReason,
7890 + closeOnClick: (state) => state.closeOnClick,
7891 + closeDelay: (state) => state.closeDelay,
7892 + adaptiveOrigin: (state) => state.adaptiveOrigin
7893 +};
7894 +var TooltipStore = class extends ReactStore {
7895 + constructor(initialState2, floatingId, nested) {
7896 + const triggerElements = new PopupTriggerMap();
7897 + super(createInitialState(initialState2, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors2);
7898 + }
7899 + setOpen = (nextOpen, eventDetails) => {
7900 + applyPopupOpenChange(this, nextOpen, eventDetails, {
7901 + extraState: {
7902 + openChangeReason: eventDetails.reason
7903 + }
7904 + });
7905 + };
7906 + // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change.
7907 + cancelPendingOpen(event) {
7908 + this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event));
7909 + }
7910 +};
7911 +function createNullTooltipStore() {
7912 + const triggerElements = new PopupTriggerMap();
7913 + const store2 = new NullStore(Object.freeze(createInitialState(void 0, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors2);
7914 + return Object.assign(store2, {
7915 + setOpen: NOOP,
7916 + cancelPendingOpen: NOOP
7917 + });
7918 +}
7919 +function createInitialState(initialState2, triggerElements, floatingId, nested = false) {
7920 + const state = {
7921 + ...createInitialPopupStoreState(triggerElements, floatingId, nested),
7922 + disabled: false,
7923 + instantType: void 0,
7924 + isInstantPhase: false,
7925 + trackCursorAxis: "none",
7926 + disableHoverablePopup: false,
7927 + openChangeReason: null,
7928 + closeOnClick: true,
7929 + closeDelay: 0,
7930 + adaptiveOrigin: void 0,
7931 + ...initialState2
7932 + };
7933 + return state;
7934 +}
7935 +function createInitialContext(triggerElements) {
7936 + return {
7937 + popupRef: /* @__PURE__ */ React36.createRef(),
7938 + onOpenChange: void 0,
7939 + onOpenChangeComplete: void 0,
7940 + triggerElements
7941 + };
7942 +}
7943 +
7944 +// node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
7945 +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
7946 +var TooltipRoot = fastComponent(function TooltipRoot2(props) {
7947 + const {
7948 + disabled: disabled2 = false,
7949 + defaultOpen = false,
7950 + open: openProp,
7951 + disableHoverablePopup = false,
7952 + trackCursorAxis = "none",
7953 + actionsRef,
7954 + onOpenChange,
7955 + onOpenChangeComplete,
7956 + handle,
7957 + triggerId: triggerIdProp,
7958 + defaultTriggerId: defaultTriggerIdProp = null,
7959 + children
7960 + } = props;
7961 + const store2 = usePopupRootStore((floatingId, nested) => new TooltipStore({
7962 + open: defaultOpen,
7963 + openProp,
7964 + activeTriggerId: defaultTriggerIdProp,
7965 + triggerIdProp
7966 + }, floatingId, nested));
7967 + store2.useControlledProp("openProp", openProp);
7968 + store2.useControlledProp("triggerIdProp", triggerIdProp);
7969 + store2.useContextCallback("onOpenChange", onOpenChange);
7970 + store2.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
7971 + const openState = store2.useState("open");
7972 + const open2 = !disabled2 && openState;
7973 + const activeTriggerId = store2.useState("activeTriggerId");
7974 + const mounted = store2.useState("mounted");
7975 + const payload = store2.useState("payload");
7976 + store2.useSyncedValues({
7977 + trackCursorAxis,
7978 + disableHoverablePopup,
7979 + disabled: disabled2
7980 + });
7981 + useImplicitActiveTrigger(store2, {
7982 + closeOnActiveTriggerUnmount: true
7983 + });
7984 + const {
7985 + forceUnmount,
7986 + transitionStatus
7987 + } = useOpenStateTransitions(open2, store2);
7988 + const isInstantPhase = store2.useState("isInstantPhase");
7989 + const instantType = store2.useState("instantType");
7990 + const lastOpenChangeReason = store2.useState("lastOpenChangeReason");
7991 + const previousInstantTypeRef = React37.useRef(null);
7992 + useIsoLayoutEffect(() => {
7993 + if (openState && disabled2) {
7994 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled));
7995 + }
7996 + }, [openState, disabled2, store2]);
7997 + useIsoLayoutEffect(() => {
7998 + if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) {
7999 + if (instantType !== "delay") {
8000 + previousInstantTypeRef.current = instantType;
8001 + }
8002 + store2.set("instantType", "delay");
8003 + } else if (previousInstantTypeRef.current !== null) {
8004 + store2.set("instantType", previousInstantTypeRef.current);
8005 + previousInstantTypeRef.current = null;
8006 + }
8007 + }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store2]);
8008 + useIsoLayoutEffect(() => {
8009 + if (open2) {
8010 + if (activeTriggerId == null) {
8011 + store2.set("payload", void 0);
8012 + }
8013 + }
8014 + }, [store2, activeTriggerId, open2]);
8015 + React37.useImperativeHandle(actionsRef, () => ({
8016 + unmount: forceUnmount,
8017 + close: () => store2.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction))
8018 + }), [forceUnmount, store2]);
8019 + const shouldRenderInteractions = open2 || mounted || !disabled2 && trackCursorAxis !== "none";
8020 + return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(TooltipRootContext.Provider, {
8021 + value: store2,
8022 + children: [handle && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(PopupHandleAttachment, {
8023 + handle,
8024 + store: store2
8025 + }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipInteractions, {
8026 + store: store2,
8027 + disabled: disabled2,
8028 + trackCursorAxis
8029 + }), typeof children === "function" ? children({
8030 + payload
8031 + }) : children]
8032 + });
8033 +});
8034 +if (true) TooltipRoot.displayName = "TooltipRoot";
8035 +function TooltipInteractions({
8036 + store: store2,
8037 + disabled: disabled2,
8038 + trackCursorAxis
8039 +}) {
8040 + const floatingRootContext = store2.useState("floatingRootContext");
8041 + const dismiss = useDismiss(floatingRootContext, {
8042 + enabled: !disabled2,
8043 + referencePress: () => store2.select("closeOnClick")
8044 + });
8045 + const clientPoint = useClientPoint(floatingRootContext, {
8046 + enabled: !disabled2 && trackCursorAxis !== "none",
8047 + axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis
8048 + });
8049 + const triggerProps = React37.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);
8050 + usePopupInteractionProps(store2, {
8051 + activeTriggerProps: triggerProps,
8052 + inactiveTriggerProps: triggerProps,
8053 + popupProps: dismiss.floating ?? EMPTY_OBJECT
8054 + });
8055 + return null;
8056 +}
8057 +
8058 +// node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
8059 +var React39 = __toESM(require_react(), 1);
8060 +
8061 +// node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs
8062 +var React38 = __toESM(require_react(), 1);
8063 +var TooltipProviderContext = /* @__PURE__ */ React38.createContext(void 0);
8064 +if (true) TooltipProviderContext.displayName = "TooltipProviderContext";
8065 +function useTooltipProviderContext() {
8066 + return React38.useContext(TooltipProviderContext);
8067 +}
8068 +
8069 +// node_modules/@base-ui/react/tooltip/utils/constants.mjs
8070 +var OPEN_DELAY = 600;
8071 +
8072 +// node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
8073 +var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger";
8074 +function getTargetElement(event) {
8075 + if ("composedPath" in event) {
8076 + const path = event.composedPath();
8077 + for (let i = 0; i < path.length; i += 1) {
8078 + const element = path[i];
8079 + if (isElement(element)) {
8080 + return element;
8081 + }
8082 + }
8083 + }
8084 + const target = event.target;
8085 + if (isElement(target)) {
8086 + return target;
8087 + }
8088 + return null;
8089 +}
8090 +function closestEnabledTooltipTrigger(element) {
8091 + let current = element;
8092 + while (current) {
8093 + const trigger = current.closest(`[${TOOLTIP_TRIGGER_IDENTIFIER}]`);
8094 + if (trigger) {
8095 + return trigger;
8096 + }
8097 + const root = current.getRootNode();
8098 + current = "host" in root && isElement(root.host) ? root.host : null;
8099 + }
8100 + return null;
8101 +}
8102 +var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) {
8103 + const {
8104 + render,
8105 + className,
8106 + style,
8107 + handle,
8108 + payload,
8109 + disabled: disabledProp,
8110 + delay,
8111 + closeOnClick = true,
8112 + closeDelay,
8113 + id: idProp,
8114 + ...elementProps
8115 + } = componentProps;
8116 + const rootContext = useTooltipRootContext(true);
8117 + const handleStore = usePopupHandleStore(handle);
8118 + const store2 = handleStore ?? rootContext;
8119 + if (!store2) {
8120 + throw new Error(true ? "Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle." : formatErrorMessage_default(82));
8121 + }
8122 + const thisTriggerId = useBaseUiId(idProp);
8123 + const isTriggerActive = store2.useState("isTriggerActive", thisTriggerId);
8124 + const isOpenedByThisTrigger = store2.useState("isOpenedByTrigger", thisTriggerId);
8125 + const floatingRootContext = store2.useState("floatingRootContext");
8126 + const triggerElementRef = React39.useRef(null);
8127 + const closeDelayWithDefault = closeDelay ?? 0;
8128 + const {
8129 + registerTrigger,
8130 + isMountedByThisTrigger
8131 + } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store2, {
8132 + payload,
8133 + closeOnClick,
8134 + closeDelay: closeDelayWithDefault
8135 + });
8136 + const providerDelay = useTooltipProviderContext();
8137 + const {
8138 + activeIdRef,
8139 + delayRef,
8140 + isInstantPhase,
8141 + hasProvider
8142 + } = useDelayGroup(floatingRootContext, {
8143 + open: isOpenedByThisTrigger
8144 + });
8145 + const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);
8146 + store2.useSyncedValue("isInstantPhase", isInstantPhase);
8147 + const rootDisabled = store2.useState("disabled");
8148 + const disabled2 = disabledProp ?? rootDisabled;
8149 + const disabledRef = useValueAsRef(disabled2);
8150 + const trackCursorAxis = store2.useState("trackCursorAxis");
8151 + const disableHoverablePopup = store2.useState("disableHoverablePopup");
8152 + const isNestedTriggerHoveredRef = React39.useRef(false);
8153 + const nestedTriggerOpenTimeout = useTimeout();
8154 + const pointerTypeRef = React39.useRef(void 0);
8155 + function getOpenDelay() {
8156 + if (hasProvider && activeIdRef.current != null) {
8157 + return 0;
8158 + }
8159 + return delay ?? providerDelay ?? OPEN_DELAY;
8160 + }
8161 + function isEnabledNestedTriggerTarget(target) {
8162 + const triggerEl = triggerElementRef.current;
8163 + if (!triggerEl || !target) {
8164 + return false;
8165 + }
8166 + const nearestTrigger = closestEnabledTooltipTrigger(target);
8167 + return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);
8168 + }
8169 + function detectNestedTriggerHover(target) {
8170 + const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
8171 + isNestedTriggerHoveredRef.current = nestedTriggerHovered;
8172 + if (nestedTriggerHovered) {
8173 + hoverInteraction.openChangeTimeout.clear();
8174 + hoverInteraction.restTimeout.clear();
8175 + hoverInteraction.restTimeoutPending = false;
8176 + nestedTriggerOpenTimeout.clear();
8177 + }
8178 + return nestedTriggerHovered;
8179 + }
8180 + const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
8181 + enabled: !disabled2,
8182 + mouseOnly: true,
8183 + move: false,
8184 + handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null,
8185 + restMs: getOpenDelay,
8186 + delay() {
8187 + if (closeDelay == null && hasProvider) {
8188 + return {
8189 + close: getDelay(delayRef.current, "close")
8190 + };
8191 + }
8192 + return {
8193 + close: closeDelayWithDefault
8194 + };
8195 + },
8196 + triggerElementRef,
8197 + isActiveTrigger: isTriggerActive,
8198 + isClosing: () => store2.select("transitionStatus") === "ending",
8199 + shouldOpen() {
8200 + return !isNestedTriggerHoveredRef.current;
8201 + }
8202 + });
8203 + const focusProps = useFocus(floatingRootContext, {
8204 + enabled: !disabled2
8205 + }).reference;
8206 + const handleNestedTriggerHover = (event) => {
8207 + const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
8208 + const target = getTargetElement(event);
8209 + const nestedTriggerHovered = detectNestedTriggerHover(target);
8210 + const triggerEl = triggerElementRef.current;
8211 + const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);
8212 + if (nestedTriggerHovered && store2.select("open") && store2.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) {
8213 + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
8214 + return;
8215 + }
8216 + if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store2.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences.
8217 + isMouseLikePointerType(pointerTypeRef.current)) {
8218 + const open2 = () => {
8219 + if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store2.select("open")) {
8220 + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl));
8221 + }
8222 + };
8223 + const openDelay = getOpenDelay();
8224 + if (openDelay === 0) {
8225 + nestedTriggerOpenTimeout.clear();
8226 + open2();
8227 + } else {
8228 + nestedTriggerOpenTimeout.start(openDelay, open2);
8229 + }
8230 + }
8231 + };
8232 + const rootTriggerProps = store2.useState("triggerProps", isMountedByThisTrigger);
8233 + const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== "none";
8234 + const state = {
8235 + open: isOpenedByThisTrigger
8236 + };
8237 + const element = useRenderElement("button", componentProps, {
8238 + state,
8239 + ref: [forwardedRef, registerTrigger, triggerElementRef],
8240 + props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : void 0, {
8241 + onMouseOver(event) {
8242 + handleNestedTriggerHover(event.nativeEvent);
8243 + },
8244 + onFocus(event) {
8245 + if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) {
8246 + event.preventBaseUIHandler();
8247 + }
8248 + },
8249 + onMouseLeave() {
8250 + isNestedTriggerHoveredRef.current = false;
8251 + nestedTriggerOpenTimeout.clear();
8252 + pointerTypeRef.current = void 0;
8253 + },
8254 + onPointerEnter(event) {
8255 + pointerTypeRef.current = event.pointerType;
8256 + },
8257 + onPointerDown(event) {
8258 + pointerTypeRef.current = event.pointerType;
8259 + store2.set("closeOnClick", closeOnClick);
8260 + if (closeOnClick && !store2.select("open")) {
8261 + store2.cancelPendingOpen(event.nativeEvent);
8262 + }
8263 + },
8264 + onClick(event) {
8265 + if (closeOnClick && !store2.select("open")) {
8266 + store2.cancelPendingOpen(event.nativeEvent);
8267 + }
8268 + },
8269 + id: thisTriggerId,
8270 + [triggerDisabled]: disabled2 ? "" : void 0,
8271 + [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : ""
8272 + }, elementProps],
8273 + stateAttributesMapping: triggerOpenStateMapping
8274 + });
8275 + return element;
8276 +});
8277 +if (true) TooltipTrigger.displayName = "TooltipTrigger";
8278 +
8279 +// node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
8280 +var React41 = __toESM(require_react(), 1);
8281 +
8282 +// node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs
8283 +var React40 = __toESM(require_react(), 1);
8284 +var TooltipPortalContext = /* @__PURE__ */ React40.createContext(void 0);
8285 +if (true) TooltipPortalContext.displayName = "TooltipPortalContext";
8286 +function useTooltipPortalContext() {
8287 + const value = React40.useContext(TooltipPortalContext);
8288 + if (value === void 0) {
8289 + throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70));
8290 + }
8291 + return value;
8292 +}
8293 +
8294 +// node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
8295 +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
8296 +var TooltipPortal = /* @__PURE__ */ React41.forwardRef(function TooltipPortal2(props, forwardedRef) {
8297 + const {
8298 + keepMounted = false,
8299 + ...portalProps
8300 + } = props;
8301 + const store2 = useTooltipRootContext();
8302 + const mounted = store2.useState("mounted");
8303 + const shouldRender = mounted || keepMounted;
8304 + if (!shouldRender) {
8305 + return null;
8306 + }
8307 + return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipPortalContext.Provider, {
8308 + value: keepMounted,
8309 + children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(FloatingPortalLite, {
8310 + ref: forwardedRef,
8311 + ...portalProps
8312 + })
8313 + });
8314 +});
8315 +if (true) TooltipPortal.displayName = "TooltipPortal";
8316 +
8317 +// node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
8318 +var React43 = __toESM(require_react(), 1);
8319 +
8320 +// node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs
8321 +var React42 = __toESM(require_react(), 1);
8322 +var TooltipPositionerContext = /* @__PURE__ */ React42.createContext(void 0);
8323 +if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext";
8324 +function useTooltipPositionerContext() {
8325 + const context = React42.useContext(TooltipPositionerContext);
8326 + if (context === void 0) {
8327 + throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71));
8328 + }
8329 + return context;
8330 +}
8331 +
8332 +// node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
8333 +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
8334 +var TooltipPositioner = /* @__PURE__ */ React43.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) {
8335 + const {
8336 + render,
8337 + className,
8338 + anchor,
8339 + positionMethod = "absolute",
8340 + side = "top",
8341 + align = "center",
8342 + sideOffset = 0,
8343 + alignOffset = 0,
8344 + collisionBoundary = "clipping-ancestors",
8345 + collisionPadding = 5,
8346 + arrowPadding = 5,
8347 + sticky = false,
8348 + disableAnchorTracking = false,
8349 + collisionAvoidance = POPUP_COLLISION_AVOIDANCE,
8350 + style,
8351 + ...elementProps
8352 + } = componentProps;
8353 + const store2 = useTooltipRootContext();
8354 + const keepMounted = useTooltipPortalContext();
8355 + const open2 = store2.useState("open");
8356 + const mounted = store2.useState("mounted");
8357 + const trackCursorAxis = store2.useState("trackCursorAxis");
8358 + const disableHoverablePopup = store2.useState("disableHoverablePopup");
8359 + const floatingRootContext = store2.useState("floatingRootContext");
8360 + const instantType = store2.useState("instantType");
8361 + const transitionStatus = store2.useState("transitionStatus");
8362 + const adaptiveOrigin2 = store2.useState("adaptiveOrigin");
8363 + const positioning = useAnchorPositioning({
8364 + anchor,
8365 + positionMethod,
8366 + floatingRootContext,
8367 + mounted,
8368 + side,
8369 + sideOffset,
8370 + align,
8371 + alignOffset,
8372 + collisionBoundary,
8373 + collisionPadding,
8374 + sticky,
8375 + arrowPadding,
8376 + disableAnchorTracking,
8377 + keepMounted,
8378 + collisionAvoidance,
8379 + adaptiveOrigin: adaptiveOrigin2
8380 + });
8381 + const state = React43.useMemo(() => ({
8382 + open: open2,
8383 + side: positioning.side,
8384 + align: positioning.align,
8385 + anchorHidden: positioning.anchorHidden,
8386 + instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType
8387 + }), [open2, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]);
8388 + const element = usePositioner(componentProps, state, {
8389 + styles: positioning.positionerStyles,
8390 + transitionStatus,
8391 + props: elementProps,
8392 + refs: [forwardedRef, store2.useStateSetter("positionerElement")],
8393 + hidden: !mounted,
8394 + inert: !open2 || trackCursorAxis === "both" || disableHoverablePopup
8395 + });
8396 + return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipPositionerContext.Provider, {
8397 + value: positioning,
8398 + children: element
8399 + });
8400 +});
8401 +if (true) TooltipPositioner.displayName = "TooltipPositioner";
8402 +
8403 +// node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs
8404 +var React44 = __toESM(require_react(), 1);
8405 +var TooltipPopup = /* @__PURE__ */ React44.forwardRef(function TooltipPopup2(componentProps, forwardedRef) {
8406 + const {
8407 + render,
8408 + className,
8409 + style,
8410 + ...elementProps
8411 + } = componentProps;
8412 + const store2 = useTooltipRootContext();
8413 + const {
8414 + side,
8415 + align
8416 + } = useTooltipPositionerContext();
8417 + const open2 = store2.useState("open");
8418 + const instantType = store2.useState("instantType");
8419 + const transitionStatus = store2.useState("transitionStatus");
8420 + const popupProps = store2.useState("popupProps");
8421 + const floatingContext = store2.useState("floatingRootContext");
8422 + const disabled2 = store2.useState("disabled");
8423 + const closeDelay = store2.useState("closeDelay");
8424 + useOpenChangeComplete({
8425 + open: open2,
8426 + ref: store2.context.popupRef,
8427 + onComplete() {
8428 + if (open2) {
8429 + store2.context.onOpenChangeComplete?.(true);
8430 + }
8431 + }
8432 + });
8433 + useHoverFloatingInteraction(floatingContext, {
8434 + enabled: !disabled2,
8435 + closeDelay
8436 + });
8437 + const setPopupElement = store2.useStateSetter("popupElement");
8438 + const state = {
8439 + open: open2,
8440 + side,
8441 + align,
8442 + instant: instantType,
8443 + transitionStatus
8444 + };
8445 + const element = useRenderElement("div", componentProps, {
8446 + state,
8447 + ref: [forwardedRef, store2.context.popupRef, setPopupElement],
8448 + props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],
8449 + stateAttributesMapping: popupTransitionStateMapping
8450 + });
8451 + return element;
8452 +});
8453 +if (true) TooltipPopup.displayName = "TooltipPopup";
8454 +
8455 +// node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs
8456 +var React45 = __toESM(require_react(), 1);
8457 +var TooltipArrow = /* @__PURE__ */ React45.forwardRef(function TooltipArrow2(componentProps, forwardedRef) {
8458 + const {
8459 + render,
8460 + className,
8461 + style,
8462 + ...elementProps
8463 + } = componentProps;
8464 + const store2 = useTooltipRootContext();
8465 + const {
8466 + arrowRef,
8467 + side,
8468 + align,
8469 + arrowUncentered,
8470 + arrowStyles
8471 + } = useTooltipPositionerContext();
8472 + const open2 = store2.useState("open");
8473 + const instantType = store2.useState("instantType");
8474 + const state = {
8475 + open: open2,
8476 + side,
8477 + align,
8478 + uncentered: arrowUncentered,
8479 + instant: instantType
8480 + };
8481 + const element = useRenderElement("div", componentProps, {
8482 + state,
8483 + ref: [forwardedRef, arrowRef],
8484 + props: [{
8485 + style: arrowStyles,
8486 + "aria-hidden": true
8487 + }, elementProps],
8488 + stateAttributesMapping: popupStateMapping
8489 + });
8490 + return element;
8491 +});
8492 +if (true) TooltipArrow.displayName = "TooltipArrow";
8493 +
8494 +// node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs
8495 +var React46 = __toESM(require_react(), 1);
8496 +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
8497 +var TooltipProvider = function TooltipProvider2(props) {
8498 + const {
8499 + delay,
8500 + closeDelay,
8501 + timeout = 400
8502 + } = props;
8503 + const delayValue = React46.useMemo(() => ({
8504 + open: delay,
8505 + close: closeDelay
8506 + }), [delay, closeDelay]);
8507 + return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipProviderContext.Provider, {
8508 + value: delay,
8509 + children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FloatingDelayGroup, {
8510 + delay: delayValue,
8511 + timeoutMs: timeout,
8512 + children: props.children
8513 + })
8514 + });
8515 +};
8516 +if (true) TooltipProvider.displayName = "TooltipProvider";
8517 +
8518 +// node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs
8519 +var React47 = __toESM(require_react(), 1);
8520 +var TooltipViewport = /* @__PURE__ */ React47.forwardRef(function TooltipViewport2(componentProps, forwardedRef) {
8521 + const {
8522 + render,
8523 + className,
8524 + style,
8525 + children,
8526 + ...elementProps
8527 + } = componentProps;
8528 + const store2 = useTooltipRootContext();
8529 + const positioner = useTooltipPositionerContext();
8530 + const instantType = store2.useState("instantType");
8531 + const {
8532 + children: childrenToRender,
8533 + state: viewportState
8534 + } = usePopupViewport({
8535 + store: store2,
8536 + side: positioner.side,
8537 + children
8538 + });
8539 + const state = {
8540 + activationDirection: viewportState.activationDirection,
8541 + transitioning: viewportState.transitioning,
8542 + instant: instantType
8543 + };
8544 + return useRenderElement("div", componentProps, {
8545 + state,
8546 + ref: forwardedRef,
8547 + props: [elementProps, {
8548 + children: childrenToRender
8549 + }],
8550 + stateAttributesMapping: popupViewportStateMapping
8551 + });
8552 +});
8553 +if (true) TooltipViewport.displayName = "TooltipViewport";
8554 +
8555 +// node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs
8556 +var TooltipHandle = class extends BasePopupHandle {
8557 + constructor() {
8558 + super(createNullTooltipStore(), "Tooltip");
8559 + }
8560 + /**
8561 + * Opens the tooltip and associates it with the trigger with the given id.
8562 + *
8563 + * This method should only be called in an event handler or an effect (not during rendering).
8564 + *
8565 + * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching
8566 + * `Tooltip.Trigger` with this handle passed as a prop.
8567 + */
8568 + open(triggerId) {
8569 + this.openByTrigger(triggerId);
8570 + }
8571 + /**
8572 + * Closes the tooltip.
8573 + *
8574 + * This method should only be called in an event handler or an effect (not during rendering).
8575 + */
8576 + close() {
8577 + this.closePopup();
8578 + }
8579 + /**
8580 + * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle.
8581 + */
8582 + get isOpen() {
8583 + return this.attachedStore?.select("open") ?? false;
8584 + }
8585 +};
8586 +function createTooltipHandle() {
8587 + return new TooltipHandle();
8588 +}
8589 +
8590 +// node_modules/@base-ui/react/use-render/useRender.mjs
645 8591 function useRender(params) {
646 8592 return useRenderElement(params.defaultTagName ?? "div", params, params);
647 8593 }
648 8594
649 8595 // packages/ui/build-module/text/text.mjs
650 -var import_element = __toESM(require_element(), 1);
8596 +var import_element10 = __toESM(require_element(), 1);
651 8597 var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
652 8598 function getRuntime() {
653 8599 const globalScope = globalThis;
654 8600 if (globalScope.__wpStyleRuntime) {
@@ -728,16 +8674,16 @@
728 8674 injectStyle(targetDocument, hash, css);
729 8675 }
730 8676 }
731 8677 if (typeof process === "undefined" || true) {
732 - registerStyle("0c8601dd83", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');
8678 + registerStyle("3167e7d116", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{text-wrap:pretty;margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
733 8679 }
734 8680 var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" };
735 8681 if (typeof process === "undefined" || true) {
736 - registerStyle("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");
8682 + registerStyle("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
737 8683 }
738 -var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" };
739 -var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) {
8684 +var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
8685 +var Text = (0, import_element10.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) {
740 8686 const element = useRender({
741 8687 render,
742 8688 defaultTagName: "span",
743 8689 ref,
@@ -753,83 +8699,810 @@
753 8699 });
754 8700 return element;
755 8701 });
756 8702
757 -// packages/icons/build-module/icon/index.mjs
758 -var import_element2 = __toESM(require_element(), 1);
759 -var icon_default = (0, import_element2.forwardRef)(
760 - ({ icon, size = 24, ...props }, ref) => {
761 - return (0, import_element2.cloneElement)(
762 - icon,
8703 +// packages/ui/build-module/tooltip/index.mjs
8704 +var tooltip_exports = {};
8705 +__export(tooltip_exports, {
8706 + Popup: () => Popup,
8707 + Portal: () => Portal,
8708 + Positioner: () => Positioner,
8709 + Provider: () => Provider,
8710 + Root: () => Root,
8711 + Trigger: () => Trigger
8712 +});
8713 +
8714 +// packages/ui/build-module/tooltip/popup.mjs
8715 +var import_element14 = __toESM(require_element(), 1);
8716 +
8717 +// packages/ui/build-module/tooltip/portal.mjs
8718 +var import_element11 = __toESM(require_element(), 1);
8719 +
8720 +// packages/ui/build-module/utils/wp-compat-overlay-slot.mjs
8721 +var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash";
8722 +function getRuntime2() {
8723 + const globalScope = globalThis;
8724 + if (globalScope.__wpStyleRuntime) {
8725 + return globalScope.__wpStyleRuntime;
8726 + }
8727 + globalScope.__wpStyleRuntime = {
8728 + documents: /* @__PURE__ */ new Map(),
8729 + styles: /* @__PURE__ */ new Map(),
8730 + injectedStyles: /* @__PURE__ */ new WeakMap()
8731 + };
8732 + if (typeof document !== "undefined") {
8733 + registerDocument2(document);
8734 + }
8735 + return globalScope.__wpStyleRuntime;
8736 +}
8737 +function documentContainsStyleHash2(targetDocument, hash) {
8738 + if (!targetDocument.head) {
8739 + return false;
8740 + }
8741 + for (const style of targetDocument.head.querySelectorAll(
8742 + `style[${STYLE_HASH_ATTRIBUTE2}]`
8743 + )) {
8744 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) {
8745 + return true;
8746 + }
8747 + }
8748 + return false;
8749 +}
8750 +function injectStyle2(targetDocument, hash, css) {
8751 + if (!targetDocument.head) {
8752 + return;
8753 + }
8754 + const runtime = getRuntime2();
8755 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
8756 + if (!injectedStyles) {
8757 + injectedStyles = /* @__PURE__ */ new Set();
8758 + runtime.injectedStyles.set(targetDocument, injectedStyles);
8759 + }
8760 + if (injectedStyles.has(hash)) {
8761 + return;
8762 + }
8763 + if (documentContainsStyleHash2(targetDocument, hash)) {
8764 + injectedStyles.add(hash);
8765 + return;
8766 + }
8767 + const style = targetDocument.createElement("style");
8768 + style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash);
8769 + style.appendChild(targetDocument.createTextNode(css));
8770 + targetDocument.head.appendChild(style);
8771 + injectedStyles.add(hash);
8772 +}
8773 +function registerDocument2(targetDocument) {
8774 + const runtime = getRuntime2();
8775 + runtime.documents.set(
8776 + targetDocument,
8777 + (runtime.documents.get(targetDocument) ?? 0) + 1
8778 + );
8779 + for (const [hash, css] of runtime.styles) {
8780 + injectStyle2(targetDocument, hash, css);
8781 + }
8782 + return () => {
8783 + const count = runtime.documents.get(targetDocument);
8784 + if (count === void 0) {
8785 + return;
8786 + }
8787 + if (count <= 1) {
8788 + runtime.documents.delete(targetDocument);
8789 + return;
8790 + }
8791 + runtime.documents.set(targetDocument, count - 1);
8792 + };
8793 +}
8794 +function registerStyle2(hash, css) {
8795 + const runtime = getRuntime2();
8796 + runtime.styles.set(hash, css);
8797 + for (const targetDocument of runtime.documents.keys()) {
8798 + injectStyle2(targetDocument, hash, css);
8799 + }
8800 +}
8801 +if (typeof process === "undefined" || true) {
8802 + registerStyle2("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}");
8803 +}
8804 +var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" };
8805 +var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot";
8806 +function resolveOwnerDocument() {
8807 + return typeof document === "undefined" ? null : document;
8808 +}
8809 +function isInWordPressEnvironment() {
8810 + let topWp;
8811 + try {
8812 + topWp = window.top?.wp;
8813 + } catch {
8814 + }
8815 + const wp = topWp ?? window.wp;
8816 + return typeof wp?.components === "object" && wp.components !== null;
8817 +}
8818 +var cachedSlot = null;
8819 +function ensureSlotIsAccessible(element) {
8820 + element.setAttribute("aria-hidden", "false");
8821 + return element;
8822 +}
8823 +function createSlot(ownerDocument2) {
8824 + const element = ownerDocument2.createElement("div");
8825 + element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, "");
8826 + if (wp_compat_overlay_slot_default.slot) {
8827 + element.classList.add(wp_compat_overlay_slot_default.slot);
8828 + }
8829 + ownerDocument2.body.appendChild(element);
8830 + return element;
8831 +}
8832 +function getWpCompatOverlaySlot() {
8833 + if (typeof window === "undefined") {
8834 + return void 0;
8835 + }
8836 + if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) {
8837 + return void 0;
8838 + }
8839 + const ownerDocument2 = resolveOwnerDocument();
8840 + if (!ownerDocument2 || !ownerDocument2.body) {
8841 + return void 0;
8842 + }
8843 + if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) {
8844 + return ensureSlotIsAccessible(cachedSlot);
8845 + }
8846 + const existing = ownerDocument2.querySelector(
8847 + `[${WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]`
8848 + );
8849 + if (existing instanceof HTMLDivElement) {
8850 + cachedSlot = ensureSlotIsAccessible(existing);
8851 + return cachedSlot;
8852 + }
8853 + if (cachedSlot?.isConnected) {
8854 + cachedSlot.remove();
8855 + }
8856 + cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2));
8857 + return cachedSlot;
8858 +}
8859 +
8860 +// packages/ui/build-module/tooltip/portal.mjs
8861 +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
8862 +var Portal = (0, import_element11.forwardRef)(
8863 + function TooltipPortal3({ container, ...restProps }, ref) {
8864 + return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
8865 + index_parts_exports.Portal,
763 8866 {
764 - width: size,
765 - height: size,
8867 + container: container ?? getWpCompatOverlaySlot(),
8868 + ...restProps,
8869 + ref
8870 + }
8871 + );
8872 + }
8873 +);
8874 +
8875 +// packages/ui/build-module/tooltip/positioner.mjs
8876 +var import_element12 = __toESM(require_element(), 1);
8877 +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
8878 +var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash";
8879 +function getRuntime3() {
8880 + const globalScope = globalThis;
8881 + if (globalScope.__wpStyleRuntime) {
8882 + return globalScope.__wpStyleRuntime;
8883 + }
8884 + globalScope.__wpStyleRuntime = {
8885 + documents: /* @__PURE__ */ new Map(),
8886 + styles: /* @__PURE__ */ new Map(),
8887 + injectedStyles: /* @__PURE__ */ new WeakMap()
8888 + };
8889 + if (typeof document !== "undefined") {
8890 + registerDocument3(document);
8891 + }
8892 + return globalScope.__wpStyleRuntime;
8893 +}
8894 +function documentContainsStyleHash3(targetDocument, hash) {
8895 + if (!targetDocument.head) {
8896 + return false;
8897 + }
8898 + for (const style of targetDocument.head.querySelectorAll(
8899 + `style[${STYLE_HASH_ATTRIBUTE3}]`
8900 + )) {
8901 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) {
8902 + return true;
8903 + }
8904 + }
8905 + return false;
8906 +}
8907 +function injectStyle3(targetDocument, hash, css) {
8908 + if (!targetDocument.head) {
8909 + return;
8910 + }
8911 + const runtime = getRuntime3();
8912 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
8913 + if (!injectedStyles) {
8914 + injectedStyles = /* @__PURE__ */ new Set();
8915 + runtime.injectedStyles.set(targetDocument, injectedStyles);
8916 + }
8917 + if (injectedStyles.has(hash)) {
8918 + return;
8919 + }
8920 + if (documentContainsStyleHash3(targetDocument, hash)) {
8921 + injectedStyles.add(hash);
8922 + return;
8923 + }
8924 + const style = targetDocument.createElement("style");
8925 + style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash);
8926 + style.appendChild(targetDocument.createTextNode(css));
8927 + targetDocument.head.appendChild(style);
8928 + injectedStyles.add(hash);
8929 +}
8930 +function registerDocument3(targetDocument) {
8931 + const runtime = getRuntime3();
8932 + runtime.documents.set(
8933 + targetDocument,
8934 + (runtime.documents.get(targetDocument) ?? 0) + 1
8935 + );
8936 + for (const [hash, css] of runtime.styles) {
8937 + injectStyle3(targetDocument, hash, css);
8938 + }
8939 + return () => {
8940 + const count = runtime.documents.get(targetDocument);
8941 + if (count === void 0) {
8942 + return;
8943 + }
8944 + if (count <= 1) {
8945 + runtime.documents.delete(targetDocument);
8946 + return;
8947 + }
8948 + runtime.documents.set(targetDocument, count - 1);
8949 + };
8950 +}
8951 +function registerStyle3(hash, css) {
8952 + const runtime = getRuntime3();
8953 + runtime.styles.set(hash, css);
8954 + for (const targetDocument of runtime.documents.keys()) {
8955 + injectStyle3(targetDocument, hash, css);
8956 + }
8957 +}
8958 +if (typeof process === "undefined" || true) {
8959 + registerStyle3("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
8960 +}
8961 +var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
8962 +if (typeof process === "undefined" || true) {
8963 + registerStyle3("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
8964 +}
8965 +var style_default2 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
8966 +var Positioner = (0, import_element12.forwardRef)(
8967 + function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) {
8968 + return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
8969 + index_parts_exports.Positioner,
8970 + {
8971 + ref,
8972 + align,
8973 + side,
8974 + sideOffset,
766 8975 ...props,
767 - ref
8976 + className: clsx_default(
8977 + resets_default["box-sizing"],
8978 + style_default2.positioner,
8979 + className
8980 + )
768 8981 }
769 8982 );
770 8983 }
771 8984 );
772 8985
773 -// packages/icons/build-module/library/arrow-up-left.mjs
8986 +// packages/ui/build-module/utils/render-slot-with-children.mjs
8987 +var import_element13 = __toESM(require_element(), 1);
8988 +function renderSlotWithChildren(slot, defaultSlot, children) {
8989 + return (0, import_element13.cloneElement)(slot ?? defaultSlot, { children });
8990 +}
8991 +
8992 +// packages/ui/build-module/utils/theme-provider.mjs
8993 +var theme = __toESM(require_theme(), 1);
8994 +
8995 +// packages/ui/build-module/lock-unlock.mjs
8996 +var import_private_apis = __toESM(require_private_apis(), 1);
8997 +var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
8998 + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
8999 + "@wordpress/ui"
9000 +);
9001 +
9002 +// packages/ui/build-module/utils/theme-provider.mjs
9003 +function getThemeProvider() {
9004 + const themePackage = theme;
9005 + if (themePackage.ThemeProvider) {
9006 + return themePackage.ThemeProvider;
9007 + }
9008 + if (!themePackage.privateApis) {
9009 + throw new Error(
9010 + "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`."
9011 + );
9012 + }
9013 + return unlock(
9014 + themePackage.privateApis
9015 + ).ThemeProvider;
9016 +}
9017 +var ThemeProvider = getThemeProvider();
9018 +
9019 +// packages/ui/build-module/tooltip/popup.mjs
9020 +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
9021 +var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash";
9022 +function getRuntime4() {
9023 + const globalScope = globalThis;
9024 + if (globalScope.__wpStyleRuntime) {
9025 + return globalScope.__wpStyleRuntime;
9026 + }
9027 + globalScope.__wpStyleRuntime = {
9028 + documents: /* @__PURE__ */ new Map(),
9029 + styles: /* @__PURE__ */ new Map(),
9030 + injectedStyles: /* @__PURE__ */ new WeakMap()
9031 + };
9032 + if (typeof document !== "undefined") {
9033 + registerDocument4(document);
9034 + }
9035 + return globalScope.__wpStyleRuntime;
9036 +}
9037 +function documentContainsStyleHash4(targetDocument, hash) {
9038 + if (!targetDocument.head) {
9039 + return false;
9040 + }
9041 + for (const style of targetDocument.head.querySelectorAll(
9042 + `style[${STYLE_HASH_ATTRIBUTE4}]`
9043 + )) {
9044 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) {
9045 + return true;
9046 + }
9047 + }
9048 + return false;
9049 +}
9050 +function injectStyle4(targetDocument, hash, css) {
9051 + if (!targetDocument.head) {
9052 + return;
9053 + }
9054 + const runtime = getRuntime4();
9055 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9056 + if (!injectedStyles) {
9057 + injectedStyles = /* @__PURE__ */ new Set();
9058 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9059 + }
9060 + if (injectedStyles.has(hash)) {
9061 + return;
9062 + }
9063 + if (documentContainsStyleHash4(targetDocument, hash)) {
9064 + injectedStyles.add(hash);
9065 + return;
9066 + }
9067 + const style = targetDocument.createElement("style");
9068 + style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash);
9069 + style.appendChild(targetDocument.createTextNode(css));
9070 + targetDocument.head.appendChild(style);
9071 + injectedStyles.add(hash);
9072 +}
9073 +function registerDocument4(targetDocument) {
9074 + const runtime = getRuntime4();
9075 + runtime.documents.set(
9076 + targetDocument,
9077 + (runtime.documents.get(targetDocument) ?? 0) + 1
9078 + );
9079 + for (const [hash, css] of runtime.styles) {
9080 + injectStyle4(targetDocument, hash, css);
9081 + }
9082 + return () => {
9083 + const count = runtime.documents.get(targetDocument);
9084 + if (count === void 0) {
9085 + return;
9086 + }
9087 + if (count <= 1) {
9088 + runtime.documents.delete(targetDocument);
9089 + return;
9090 + }
9091 + runtime.documents.set(targetDocument, count - 1);
9092 + };
9093 +}
9094 +function registerStyle4(hash, css) {
9095 + const runtime = getRuntime4();
9096 + runtime.styles.set(hash, css);
9097 + for (const targetDocument of runtime.documents.keys()) {
9098 + injectStyle4(targetDocument, hash, css);
9099 + }
9100 +}
9101 +if (typeof process === "undefined" || true) {
9102 + registerStyle4("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
9103 +}
9104 +var style_default3 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
9105 +var POPUP_COLOR = { background: "#1e1e1e" };
9106 +var Popup = (0, import_element14.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) {
9107 + const popupContent = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
9108 + index_parts_exports.Popup,
9109 + {
9110 + ref,
9111 + className: clsx_default(style_default3.popup, className),
9112 + ...props,
9113 + children
9114 + }
9115 + ) });
9116 + const positionedPopup = renderSlotWithChildren(
9117 + positioner,
9118 + /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Positioner, {}),
9119 + popupContent
9120 + );
9121 + return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Portal, {}), positionedPopup);
9122 +});
9123 +
9124 +// packages/ui/build-module/tooltip/trigger.mjs
9125 +var import_element15 = __toESM(require_element(), 1);
9126 +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
9127 +var Trigger = (0, import_element15.forwardRef)(
9128 + function TooltipTrigger3(props, ref) {
9129 + return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(index_parts_exports.Trigger, { ref, ...props });
9130 + }
9131 +);
9132 +
9133 +// packages/ui/build-module/utils/direction-provider.mjs
9134 +var import_i18n = __toESM(require_i18n(), 1);
9135 +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
9136 +function DirectionProvider3({ children }) {
9137 + return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DirectionProvider, { direction: (0, import_i18n.isRTL)() ? "rtl" : "ltr", children });
9138 +}
9139 +
9140 +// packages/ui/build-module/tooltip/root.mjs
9141 +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
9142 +function Root(props) {
9143 + return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(index_parts_exports.Root, { ...props }) });
9144 +}
9145 +
9146 +// packages/ui/build-module/tooltip/provider.mjs
9147 +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
9148 +function Provider({ ...props }) {
9149 + return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(index_parts_exports.Provider, { ...props });
9150 +}
9151 +
9152 +// packages/ui/build-module/link/link.mjs
9153 +var import_element16 = __toESM(require_element(), 1);
9154 +var import_i18n2 = __toESM(require_i18n(), 1);
9155 +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
9156 +var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash";
9157 +function getRuntime5() {
9158 + const globalScope = globalThis;
9159 + if (globalScope.__wpStyleRuntime) {
9160 + return globalScope.__wpStyleRuntime;
9161 + }
9162 + globalScope.__wpStyleRuntime = {
9163 + documents: /* @__PURE__ */ new Map(),
9164 + styles: /* @__PURE__ */ new Map(),
9165 + injectedStyles: /* @__PURE__ */ new WeakMap()
9166 + };
9167 + if (typeof document !== "undefined") {
9168 + registerDocument5(document);
9169 + }
9170 + return globalScope.__wpStyleRuntime;
9171 +}
9172 +function documentContainsStyleHash5(targetDocument, hash) {
9173 + if (!targetDocument.head) {
9174 + return false;
9175 + }
9176 + for (const style of targetDocument.head.querySelectorAll(
9177 + `style[${STYLE_HASH_ATTRIBUTE5}]`
9178 + )) {
9179 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) {
9180 + return true;
9181 + }
9182 + }
9183 + return false;
9184 +}
9185 +function injectStyle5(targetDocument, hash, css) {
9186 + if (!targetDocument.head) {
9187 + return;
9188 + }
9189 + const runtime = getRuntime5();
9190 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9191 + if (!injectedStyles) {
9192 + injectedStyles = /* @__PURE__ */ new Set();
9193 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9194 + }
9195 + if (injectedStyles.has(hash)) {
9196 + return;
9197 + }
9198 + if (documentContainsStyleHash5(targetDocument, hash)) {
9199 + injectedStyles.add(hash);
9200 + return;
9201 + }
9202 + const style = targetDocument.createElement("style");
9203 + style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash);
9204 + style.appendChild(targetDocument.createTextNode(css));
9205 + targetDocument.head.appendChild(style);
9206 + injectedStyles.add(hash);
9207 +}
9208 +function registerDocument5(targetDocument) {
9209 + const runtime = getRuntime5();
9210 + runtime.documents.set(
9211 + targetDocument,
9212 + (runtime.documents.get(targetDocument) ?? 0) + 1
9213 + );
9214 + for (const [hash, css] of runtime.styles) {
9215 + injectStyle5(targetDocument, hash, css);
9216 + }
9217 + return () => {
9218 + const count = runtime.documents.get(targetDocument);
9219 + if (count === void 0) {
9220 + return;
9221 + }
9222 + if (count <= 1) {
9223 + runtime.documents.delete(targetDocument);
9224 + return;
9225 + }
9226 + runtime.documents.set(targetDocument, count - 1);
9227 + };
9228 +}
9229 +function registerStyle5(hash, css) {
9230 + const runtime = getRuntime5();
9231 + runtime.styles.set(hash, css);
9232 + for (const targetDocument of runtime.documents.keys()) {
9233 + injectStyle5(targetDocument, hash, css);
9234 + }
9235 +}
9236 +if (typeof process === "undefined" || true) {
9237 + registerStyle5("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
9238 +}
9239 +var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
9240 +if (typeof process === "undefined" || true) {
9241 + registerStyle5("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
9242 +}
9243 +var focus_module_default = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
9244 +if (typeof process === "undefined" || true) {
9245 + registerStyle5("e8e6a9be37", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}}');
9246 +}
9247 +var style_default4 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" };
9248 +if (typeof process === "undefined" || true) {
9249 + registerStyle5("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
9250 +}
9251 +var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
9252 +var Link = (0, import_element16.forwardRef)(function Link2({
9253 + children,
9254 + variant = "default",
9255 + tone = "brand",
9256 + openInNewTab = false,
9257 + target,
9258 + render,
9259 + className,
9260 + ...props
9261 +}, ref) {
9262 + const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? "");
9263 + const element = useRender({
9264 + render,
9265 + defaultTagName: "a",
9266 + ref,
9267 + props: mergeProps(props, {
9268 + className: clsx_default(
9269 + global_css_defense_default2.a,
9270 + resets_default2["box-sizing"],
9271 + focus_module_default["outset-ring--focus-except-active"],
9272 + variant !== "unstyled" && style_default4.link,
9273 + variant !== "unstyled" && style_default4[`is-${tone}`],
9274 + variant === "unstyled" && style_default4["is-unstyled"],
9275 + className
9276 + ),
9277 + target: target ?? (openInNewTab ? "_blank" : void 0),
9278 + children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
9279 + children,
9280 + shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
9281 + "span",
9282 + {
9283 + className: style_default4["link-icon"],
9284 + role: "img",
9285 + "aria-label": (
9286 + /* translators: accessibility text appended to link text */
9287 + (0, import_i18n2.__)("(opens in a new tab)")
9288 + )
9289 + }
9290 + )
9291 + ] })
9292 + })
9293 + });
9294 + return element;
9295 +});
9296 +
9297 +// packages/icons/build-module/library/caution.mjs
774 9298 var import_primitives = __toESM(require_primitives(), 1);
775 -var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
776 -var arrow_up_left_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z" }) });
9299 +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
9300 +var caution_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives.Path, { d: "M12 8L12 13M12 14.5L12 16M4.75 12C4.75 7.99593 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });
777 9301
778 -// packages/icons/build-module/library/arrow-up-right.mjs
9302 +// packages/icons/build-module/library/check.mjs
779 9303 var import_primitives2 = __toESM(require_primitives(), 1);
780 -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
781 -var arrow_up_right_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M10 6H18V14H16.5V8.5L7 18L6 17L15.5 7.5H10V6Z" }) });
9304 +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
9305 +var check_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives2.Path, { d: "M7 12L10 15L17 8", vectorEffect: "non-scaling-stroke" }) });
782 9306
783 -// packages/icons/build-module/library/check.mjs
9307 +// packages/icons/build-module/library/chevron-down-small.mjs
784 9308 var import_primitives3 = __toESM(require_primitives(), 1);
785 -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
786 -var check_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) });
9309 +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
9310 +var chevron_down_small_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives3.Path, { d: "M8.5 10.5L12 13.5L15.5 10.5", vectorEffect: "non-scaling-stroke" }) });
787 9311
788 -// packages/icons/build-module/library/chevron-down-small.mjs
9312 +// packages/icons/build-module/library/chevron-left-small.mjs
789 9313 var import_primitives4 = __toESM(require_primitives(), 1);
790 -var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
791 -var chevron_down_small_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "m15.99 10.889-3.988 3.418-3.988-3.418.976-1.14 3.012 2.582 3.012-2.581.976 1.139Z" }) });
9314 +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
9315 +var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives4.Path, { d: "M13.5 8.5L10.5 12L13.5 15.5", vectorEffect: "non-scaling-stroke" }) });
792 9316
793 -// packages/icons/build-module/library/chevron-left-small.mjs
9317 +// packages/icons/build-module/library/chevron-left.mjs
794 9318 var import_primitives5 = __toESM(require_primitives(), 1);
795 -var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
796 -var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" }) });
9319 +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
9320 +var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives5.Path, { d: "M14 6.5L9 12L14 17.5", vectorEffect: "non-scaling-stroke" }) });
797 9321
798 -// packages/icons/build-module/library/chevron-left.mjs
9322 +// packages/icons/build-module/library/chevron-right-small.mjs
799 9323 var import_primitives6 = __toESM(require_primitives(), 1);
800 -var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
801 -var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) });
9324 +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
9325 +var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives6.Path, { d: "M10.5 8.5L13.5 12L10.5 15.5", vectorEffect: "non-scaling-stroke" }) });
802 9326
803 -// packages/icons/build-module/library/chevron-right-small.mjs
9327 +// packages/icons/build-module/library/chevron-right.mjs
804 9328 var import_primitives7 = __toESM(require_primitives(), 1);
805 -var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
806 -var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" }) });
9329 +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
9330 +var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives7.Path, { d: "M10 6.5L15 12L10 17.5", vectorEffect: "non-scaling-stroke" }) });
807 9331
808 -// packages/icons/build-module/library/chevron-right.mjs
9332 +// packages/icons/build-module/library/menu.mjs
809 9333 var import_primitives8 = __toESM(require_primitives(), 1);
810 -var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
811 -var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) });
9334 +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
9335 +var menu_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives8.Path, { d: "M5 12H19M5 18.25H19M5 5.75H19", vectorEffect: "non-scaling-stroke" }) });
812 9336
813 -// packages/icons/build-module/library/menu.mjs
9337 +// packages/ui/build-module/icon/icon.mjs
9338 +var import_element17 = __toESM(require_element(), 1);
814 9339 var import_primitives9 = __toESM(require_primitives(), 1);
815 -var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
816 -var menu_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z" }) });
9340 +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
9341 +var Icon = (0, import_element17.forwardRef)(function Icon2({ icon, size: size4 = 24, style, ...restProps }, ref) {
9342 + const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0;
9343 + return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
9344 + import_primitives9.SVG,
9345 + {
9346 + ref,
9347 + ...icon.props,
9348 + ...restProps,
9349 + ...mergedStyle ? { style: mergedStyle } : {},
9350 + width: size4,
9351 + height: size4
9352 + }
9353 + );
9354 +});
817 9355
818 -// packages/icons/build-module/library/search.mjs
819 -var import_primitives10 = __toESM(require_primitives(), 1);
820 -var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
821 -var search_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) });
9356 +// packages/ui/build-module/utils/keyboard-shortcut.mjs
9357 +var import_element19 = __toESM(require_element(), 1);
9358 +var import_i18n3 = __toESM(require_i18n(), 1);
822 9359
823 -// packages/icons/build-module/library/wordpress.mjs
824 -var import_primitives11 = __toESM(require_primitives(), 1);
825 -var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
826 -var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "-2 -2 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z" }) });
9360 +// packages/ui/build-module/visually-hidden/visually-hidden.mjs
9361 +var import_element18 = __toESM(require_element(), 1);
9362 +var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash";
9363 +function getRuntime6() {
9364 + const globalScope = globalThis;
9365 + if (globalScope.__wpStyleRuntime) {
9366 + return globalScope.__wpStyleRuntime;
9367 + }
9368 + globalScope.__wpStyleRuntime = {
9369 + documents: /* @__PURE__ */ new Map(),
9370 + styles: /* @__PURE__ */ new Map(),
9371 + injectedStyles: /* @__PURE__ */ new WeakMap()
9372 + };
9373 + if (typeof document !== "undefined") {
9374 + registerDocument6(document);
9375 + }
9376 + return globalScope.__wpStyleRuntime;
9377 +}
9378 +function documentContainsStyleHash6(targetDocument, hash) {
9379 + if (!targetDocument.head) {
9380 + return false;
9381 + }
9382 + for (const style of targetDocument.head.querySelectorAll(
9383 + `style[${STYLE_HASH_ATTRIBUTE6}]`
9384 + )) {
9385 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) {
9386 + return true;
9387 + }
9388 + }
9389 + return false;
9390 +}
9391 +function injectStyle6(targetDocument, hash, css) {
9392 + if (!targetDocument.head) {
9393 + return;
9394 + }
9395 + const runtime = getRuntime6();
9396 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9397 + if (!injectedStyles) {
9398 + injectedStyles = /* @__PURE__ */ new Set();
9399 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9400 + }
9401 + if (injectedStyles.has(hash)) {
9402 + return;
9403 + }
9404 + if (documentContainsStyleHash6(targetDocument, hash)) {
9405 + injectedStyles.add(hash);
9406 + return;
9407 + }
9408 + const style = targetDocument.createElement("style");
9409 + style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash);
9410 + style.appendChild(targetDocument.createTextNode(css));
9411 + targetDocument.head.appendChild(style);
9412 + injectedStyles.add(hash);
9413 +}
9414 +function registerDocument6(targetDocument) {
9415 + const runtime = getRuntime6();
9416 + runtime.documents.set(
9417 + targetDocument,
9418 + (runtime.documents.get(targetDocument) ?? 0) + 1
9419 + );
9420 + for (const [hash, css] of runtime.styles) {
9421 + injectStyle6(targetDocument, hash, css);
9422 + }
9423 + return () => {
9424 + const count = runtime.documents.get(targetDocument);
9425 + if (count === void 0) {
9426 + return;
9427 + }
9428 + if (count <= 1) {
9429 + runtime.documents.delete(targetDocument);
9430 + return;
9431 + }
9432 + runtime.documents.set(targetDocument, count - 1);
9433 + };
9434 +}
9435 +function registerStyle6(hash, css) {
9436 + const runtime = getRuntime6();
9437 + runtime.styles.set(hash, css);
9438 + for (const targetDocument of runtime.documents.keys()) {
9439 + injectStyle6(targetDocument, hash, css);
9440 + }
9441 +}
9442 +if (typeof process === "undefined" || true) {
9443 + registerStyle6("f4df7461e9", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f37b9e2e191ebd66__visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px;word-break:normal}}}");
9444 +}
9445 +var style_default5 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" };
9446 +var VisuallyHidden = (0, import_element18.forwardRef)(
9447 + function VisuallyHidden2({ render, ...restProps }, ref) {
9448 + const element = useRender({
9449 + render,
9450 + ref,
9451 + props: mergeProps(
9452 + { className: style_default5["visually-hidden"] },
9453 + restProps,
9454 + {
9455 + // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it.
9456 + "data-visually-hidden": ""
9457 + }
9458 + )
9459 + });
9460 + return element;
9461 + }
9462 +);
827 9463
9464 +// packages/ui/build-module/utils/keyboard-shortcut.mjs
9465 +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
9466 +function useKeyboardShortcutProps({
9467 + "aria-describedby": ariaDescribedBy,
9468 + "aria-keyshortcuts": ariaKeyShortcuts,
9469 + shortcut
9470 +}) {
9471 + const generatedDescriptionId = (0, import_element19.useId)();
9472 + const descriptionId = shortcut ? generatedDescriptionId : void 0;
9473 + const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ");
9474 + return {
9475 + descriptionId,
9476 + targetProps: {
9477 + "aria-describedby": describedBy || void 0,
9478 + "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts
9479 + }
9480 + };
9481 +}
9482 +var KeyboardShortcutDescription = (0, import_element19.forwardRef)(function KeyboardShortcutDescription2({ descriptionId, shortcut }, ref) {
9483 + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
9484 + VisuallyHidden,
9485 + {
9486 + id: descriptionId,
9487 + "aria-hidden": "true",
9488 + render: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { ref }),
9489 + children: (0, import_i18n3.sprintf)(
9490 + /* translators: %s: keyboard shortcut. */
9491 + (0, import_i18n3.__)("Keyboard shortcut: %s"),
9492 + shortcut.label ?? shortcut.ariaKeyShortcut
9493 + )
9494 + }
9495 + );
9496 +});
9497 +var KeyboardShortcutDisplay = (0, import_element19.forwardRef)(function KeyboardShortcutDisplay2({ className, shortcut }, ref) {
9498 + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut });
9499 +});
9500 +
828 9501 // packages/ui/build-module/stack/stack.mjs
829 -var import_element3 = __toESM(require_element(), 1);
830 -var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash";
831 -function getRuntime2() {
9502 +var import_element20 = __toESM(require_element(), 1);
9503 +var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash";
9504 +function getRuntime7() {
832 9505 const globalScope = globalThis;
833 9506 if (globalScope.__wpStyleRuntime) {
834 9507 return globalScope.__wpStyleRuntime;
835 9508 }
@@ -838,30 +9511,30 @@
838 9511 styles: /* @__PURE__ */ new Map(),
839 9512 injectedStyles: /* @__PURE__ */ new WeakMap()
840 9513 };
841 9514 if (typeof document !== "undefined") {
842 - registerDocument2(document);
9515 + registerDocument7(document);
843 9516 }
844 9517 return globalScope.__wpStyleRuntime;
845 9518 }
846 -function documentContainsStyleHash2(targetDocument, hash) {
9519 +function documentContainsStyleHash7(targetDocument, hash) {
847 9520 if (!targetDocument.head) {
848 9521 return false;
849 9522 }
850 9523 for (const style of targetDocument.head.querySelectorAll(
851 - `style[${STYLE_HASH_ATTRIBUTE2}]`
9524 + `style[${STYLE_HASH_ATTRIBUTE7}]`
852 9525 )) {
853 - if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) {
9526 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) {
854 9527 return true;
855 9528 }
856 9529 }
857 9530 return false;
858 9531 }
859 -function injectStyle2(targetDocument, hash, css) {
9532 +function injectStyle7(targetDocument, hash, css) {
860 9533 if (!targetDocument.head) {
861 9534 return;
862 9535 }
863 - const runtime = getRuntime2();
9536 + const runtime = getRuntime7();
864 9537 let injectedStyles = runtime.injectedStyles.get(targetDocument);
865 9538 if (!injectedStyles) {
866 9539 injectedStyles = /* @__PURE__ */ new Set();
867 9540 runtime.injectedStyles.set(targetDocument, injectedStyles);
@@ -868,26 +9541,26 @@
868 9541 }
869 9542 if (injectedStyles.has(hash)) {
870 9543 return;
871 9544 }
872 - if (documentContainsStyleHash2(targetDocument, hash)) {
9545 + if (documentContainsStyleHash7(targetDocument, hash)) {
873 9546 injectedStyles.add(hash);
874 9547 return;
875 9548 }
876 9549 const style = targetDocument.createElement("style");
877 - style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash);
9550 + style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash);
878 9551 style.appendChild(targetDocument.createTextNode(css));
879 9552 targetDocument.head.appendChild(style);
880 9553 injectedStyles.add(hash);
881 9554 }
882 -function registerDocument2(targetDocument) {
883 - const runtime = getRuntime2();
9555 +function registerDocument7(targetDocument) {
9556 + const runtime = getRuntime7();
884 9557 runtime.documents.set(
885 9558 targetDocument,
886 9559 (runtime.documents.get(targetDocument) ?? 0) + 1
887 9560 );
888 9561 for (const [hash, css] of runtime.styles) {
889 - injectStyle2(targetDocument, hash, css);
9562 + injectStyle7(targetDocument, hash, css);
890 9563 }
891 9564 return () => {
892 9565 const count = runtime.documents.get(targetDocument);
893 9566 if (count === void 0) {
@@ -899,19 +9572,19 @@
899 9572 }
900 9573 runtime.documents.set(targetDocument, count - 1);
901 9574 };
902 9575 }
903 -function registerStyle2(hash, css) {
904 - const runtime = getRuntime2();
9576 +function registerStyle7(hash, css) {
9577 + const runtime = getRuntime7();
905 9578 runtime.styles.set(hash, css);
906 9579 for (const targetDocument of runtime.documents.keys()) {
907 - injectStyle2(targetDocument, hash, css);
9580 + injectStyle7(targetDocument, hash, css);
908 9581 }
909 9582 }
910 9583 if (typeof process === "undefined" || true) {
911 - registerStyle2("b51ff41489", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");
9584 + registerStyle7("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");
912 9585 }
913 -var style_default2 = { "stack": "_19ce0419607e1896__stack" };
9586 +var style_default6 = { "stack": "_19ce0419607e1896__stack" };
914 9587 var gapTokens = {
915 9588 xs: "var(--wpds-dimension-gap-xs, 4px)",
916 9589 sm: "var(--wpds-dimension-gap-sm, 8px)",
917 9590 md: "var(--wpds-dimension-gap-md, 12px)",
@@ -919,9 +9592,9 @@
919 9592 xl: "var(--wpds-dimension-gap-xl, 24px)",
920 9593 "2xl": "var(--wpds-dimension-gap-2xl, 32px)",
921 9594 "3xl": "var(--wpds-dimension-gap-3xl, 40px)"
922 9595 };
923 -var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) {
9596 +var Stack = (0, import_element20.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) {
924 9597 const style = {
925 9598 gap: gap && gapTokens[gap],
926 9599 alignItems: align,
927 9600 justifyContent: justify,
@@ -930,19 +9603,634 @@
930 9603 };
931 9604 const element = useRender({
932 9605 render,
933 9606 ref,
934 - props: mergeProps(props, { style, className: style_default2.stack })
9607 + props: mergeProps(props, { style, className: style_default6.stack })
935 9608 });
936 9609 return element;
937 9610 });
938 9611
9612 +// packages/ui/build-module/empty-state/index.mjs
9613 +var empty_state_exports = {};
9614 +__export(empty_state_exports, {
9615 + Actions: () => Actions,
9616 + Description: () => Description,
9617 + Icon: () => Icon3,
9618 + Root: () => Root2,
9619 + Title: () => Title,
9620 + Visual: () => Visual
9621 +});
9622 +
9623 +// packages/ui/build-module/empty-state/root.mjs
9624 +var import_element21 = __toESM(require_element(), 1);
9625 +var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash";
9626 +function getRuntime8() {
9627 + const globalScope = globalThis;
9628 + if (globalScope.__wpStyleRuntime) {
9629 + return globalScope.__wpStyleRuntime;
9630 + }
9631 + globalScope.__wpStyleRuntime = {
9632 + documents: /* @__PURE__ */ new Map(),
9633 + styles: /* @__PURE__ */ new Map(),
9634 + injectedStyles: /* @__PURE__ */ new WeakMap()
9635 + };
9636 + if (typeof document !== "undefined") {
9637 + registerDocument8(document);
9638 + }
9639 + return globalScope.__wpStyleRuntime;
9640 +}
9641 +function documentContainsStyleHash8(targetDocument, hash) {
9642 + if (!targetDocument.head) {
9643 + return false;
9644 + }
9645 + for (const style of targetDocument.head.querySelectorAll(
9646 + `style[${STYLE_HASH_ATTRIBUTE8}]`
9647 + )) {
9648 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) {
9649 + return true;
9650 + }
9651 + }
9652 + return false;
9653 +}
9654 +function injectStyle8(targetDocument, hash, css) {
9655 + if (!targetDocument.head) {
9656 + return;
9657 + }
9658 + const runtime = getRuntime8();
9659 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9660 + if (!injectedStyles) {
9661 + injectedStyles = /* @__PURE__ */ new Set();
9662 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9663 + }
9664 + if (injectedStyles.has(hash)) {
9665 + return;
9666 + }
9667 + if (documentContainsStyleHash8(targetDocument, hash)) {
9668 + injectedStyles.add(hash);
9669 + return;
9670 + }
9671 + const style = targetDocument.createElement("style");
9672 + style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash);
9673 + style.appendChild(targetDocument.createTextNode(css));
9674 + targetDocument.head.appendChild(style);
9675 + injectedStyles.add(hash);
9676 +}
9677 +function registerDocument8(targetDocument) {
9678 + const runtime = getRuntime8();
9679 + runtime.documents.set(
9680 + targetDocument,
9681 + (runtime.documents.get(targetDocument) ?? 0) + 1
9682 + );
9683 + for (const [hash, css] of runtime.styles) {
9684 + injectStyle8(targetDocument, hash, css);
9685 + }
9686 + return () => {
9687 + const count = runtime.documents.get(targetDocument);
9688 + if (count === void 0) {
9689 + return;
9690 + }
9691 + if (count <= 1) {
9692 + runtime.documents.delete(targetDocument);
9693 + return;
9694 + }
9695 + runtime.documents.set(targetDocument, count - 1);
9696 + };
9697 +}
9698 +function registerStyle8(hash, css) {
9699 + const runtime = getRuntime8();
9700 + runtime.styles.set(hash, css);
9701 + for (const targetDocument of runtime.documents.keys()) {
9702 + injectStyle8(targetDocument, hash, css);
9703 + }
9704 +}
9705 +if (typeof process === "undefined" || true) {
9706 + registerStyle8("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
9707 +}
9708 +var style_default7 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
9709 +var Root2 = (0, import_element21.forwardRef)(
9710 + function EmptyStateRoot({ render, ...props }, ref) {
9711 + const className = clsx_default(style_default7.root);
9712 + const element = useRender({
9713 + defaultTagName: "div",
9714 + render,
9715 + ref,
9716 + props: mergeProps({ className }, props)
9717 + });
9718 + return element;
9719 + }
9720 +);
9721 +
9722 +// packages/ui/build-module/empty-state/visual.mjs
9723 +var import_element22 = __toESM(require_element(), 1);
9724 +var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash";
9725 +function getRuntime9() {
9726 + const globalScope = globalThis;
9727 + if (globalScope.__wpStyleRuntime) {
9728 + return globalScope.__wpStyleRuntime;
9729 + }
9730 + globalScope.__wpStyleRuntime = {
9731 + documents: /* @__PURE__ */ new Map(),
9732 + styles: /* @__PURE__ */ new Map(),
9733 + injectedStyles: /* @__PURE__ */ new WeakMap()
9734 + };
9735 + if (typeof document !== "undefined") {
9736 + registerDocument9(document);
9737 + }
9738 + return globalScope.__wpStyleRuntime;
9739 +}
9740 +function documentContainsStyleHash9(targetDocument, hash) {
9741 + if (!targetDocument.head) {
9742 + return false;
9743 + }
9744 + for (const style of targetDocument.head.querySelectorAll(
9745 + `style[${STYLE_HASH_ATTRIBUTE9}]`
9746 + )) {
9747 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) {
9748 + return true;
9749 + }
9750 + }
9751 + return false;
9752 +}
9753 +function injectStyle9(targetDocument, hash, css) {
9754 + if (!targetDocument.head) {
9755 + return;
9756 + }
9757 + const runtime = getRuntime9();
9758 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9759 + if (!injectedStyles) {
9760 + injectedStyles = /* @__PURE__ */ new Set();
9761 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9762 + }
9763 + if (injectedStyles.has(hash)) {
9764 + return;
9765 + }
9766 + if (documentContainsStyleHash9(targetDocument, hash)) {
9767 + injectedStyles.add(hash);
9768 + return;
9769 + }
9770 + const style = targetDocument.createElement("style");
9771 + style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash);
9772 + style.appendChild(targetDocument.createTextNode(css));
9773 + targetDocument.head.appendChild(style);
9774 + injectedStyles.add(hash);
9775 +}
9776 +function registerDocument9(targetDocument) {
9777 + const runtime = getRuntime9();
9778 + runtime.documents.set(
9779 + targetDocument,
9780 + (runtime.documents.get(targetDocument) ?? 0) + 1
9781 + );
9782 + for (const [hash, css] of runtime.styles) {
9783 + injectStyle9(targetDocument, hash, css);
9784 + }
9785 + return () => {
9786 + const count = runtime.documents.get(targetDocument);
9787 + if (count === void 0) {
9788 + return;
9789 + }
9790 + if (count <= 1) {
9791 + runtime.documents.delete(targetDocument);
9792 + return;
9793 + }
9794 + runtime.documents.set(targetDocument, count - 1);
9795 + };
9796 +}
9797 +function registerStyle9(hash, css) {
9798 + const runtime = getRuntime9();
9799 + runtime.styles.set(hash, css);
9800 + for (const targetDocument of runtime.documents.keys()) {
9801 + injectStyle9(targetDocument, hash, css);
9802 + }
9803 +}
9804 +if (typeof process === "undefined" || true) {
9805 + registerStyle9("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
9806 +}
9807 +var style_default8 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
9808 +var Visual = (0, import_element22.forwardRef)(
9809 + function EmptyStateVisual({ render, ...props }, ref) {
9810 + const className = clsx_default(style_default8.visual);
9811 + const element = useRender({
9812 + defaultTagName: "div",
9813 + render,
9814 + ref,
9815 + props: mergeProps({ className }, props)
9816 + });
9817 + return element;
9818 + }
9819 +);
9820 +
9821 +// packages/ui/build-module/empty-state/icon.mjs
9822 +var import_element23 = __toESM(require_element(), 1);
9823 +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
9824 +var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash";
9825 +function getRuntime10() {
9826 + const globalScope = globalThis;
9827 + if (globalScope.__wpStyleRuntime) {
9828 + return globalScope.__wpStyleRuntime;
9829 + }
9830 + globalScope.__wpStyleRuntime = {
9831 + documents: /* @__PURE__ */ new Map(),
9832 + styles: /* @__PURE__ */ new Map(),
9833 + injectedStyles: /* @__PURE__ */ new WeakMap()
9834 + };
9835 + if (typeof document !== "undefined") {
9836 + registerDocument10(document);
9837 + }
9838 + return globalScope.__wpStyleRuntime;
9839 +}
9840 +function documentContainsStyleHash10(targetDocument, hash) {
9841 + if (!targetDocument.head) {
9842 + return false;
9843 + }
9844 + for (const style of targetDocument.head.querySelectorAll(
9845 + `style[${STYLE_HASH_ATTRIBUTE10}]`
9846 + )) {
9847 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) {
9848 + return true;
9849 + }
9850 + }
9851 + return false;
9852 +}
9853 +function injectStyle10(targetDocument, hash, css) {
9854 + if (!targetDocument.head) {
9855 + return;
9856 + }
9857 + const runtime = getRuntime10();
9858 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9859 + if (!injectedStyles) {
9860 + injectedStyles = /* @__PURE__ */ new Set();
9861 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9862 + }
9863 + if (injectedStyles.has(hash)) {
9864 + return;
9865 + }
9866 + if (documentContainsStyleHash10(targetDocument, hash)) {
9867 + injectedStyles.add(hash);
9868 + return;
9869 + }
9870 + const style = targetDocument.createElement("style");
9871 + style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash);
9872 + style.appendChild(targetDocument.createTextNode(css));
9873 + targetDocument.head.appendChild(style);
9874 + injectedStyles.add(hash);
9875 +}
9876 +function registerDocument10(targetDocument) {
9877 + const runtime = getRuntime10();
9878 + runtime.documents.set(
9879 + targetDocument,
9880 + (runtime.documents.get(targetDocument) ?? 0) + 1
9881 + );
9882 + for (const [hash, css] of runtime.styles) {
9883 + injectStyle10(targetDocument, hash, css);
9884 + }
9885 + return () => {
9886 + const count = runtime.documents.get(targetDocument);
9887 + if (count === void 0) {
9888 + return;
9889 + }
9890 + if (count <= 1) {
9891 + runtime.documents.delete(targetDocument);
9892 + return;
9893 + }
9894 + runtime.documents.set(targetDocument, count - 1);
9895 + };
9896 +}
9897 +function registerStyle10(hash, css) {
9898 + const runtime = getRuntime10();
9899 + runtime.styles.set(hash, css);
9900 + for (const targetDocument of runtime.documents.keys()) {
9901 + injectStyle10(targetDocument, hash, css);
9902 + }
9903 +}
9904 +if (typeof process === "undefined" || true) {
9905 + registerStyle10("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
9906 +}
9907 +var style_default9 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
9908 +var Icon3 = (0, import_element23.forwardRef)(
9909 + function EmptyStateIcon({ icon, className, ...restProps }, ref) {
9910 + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
9911 + Visual,
9912 + {
9913 + ref,
9914 + className: clsx_default(style_default9.icon, className),
9915 + ...restProps,
9916 + children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon, { icon })
9917 + }
9918 + );
9919 + }
9920 +);
9921 +
9922 +// packages/ui/build-module/empty-state/title.mjs
9923 +var import_element24 = __toESM(require_element(), 1);
9924 +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
9925 +var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash";
9926 +function getRuntime11() {
9927 + const globalScope = globalThis;
9928 + if (globalScope.__wpStyleRuntime) {
9929 + return globalScope.__wpStyleRuntime;
9930 + }
9931 + globalScope.__wpStyleRuntime = {
9932 + documents: /* @__PURE__ */ new Map(),
9933 + styles: /* @__PURE__ */ new Map(),
9934 + injectedStyles: /* @__PURE__ */ new WeakMap()
9935 + };
9936 + if (typeof document !== "undefined") {
9937 + registerDocument11(document);
9938 + }
9939 + return globalScope.__wpStyleRuntime;
9940 +}
9941 +function documentContainsStyleHash11(targetDocument, hash) {
9942 + if (!targetDocument.head) {
9943 + return false;
9944 + }
9945 + for (const style of targetDocument.head.querySelectorAll(
9946 + `style[${STYLE_HASH_ATTRIBUTE11}]`
9947 + )) {
9948 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) {
9949 + return true;
9950 + }
9951 + }
9952 + return false;
9953 +}
9954 +function injectStyle11(targetDocument, hash, css) {
9955 + if (!targetDocument.head) {
9956 + return;
9957 + }
9958 + const runtime = getRuntime11();
9959 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
9960 + if (!injectedStyles) {
9961 + injectedStyles = /* @__PURE__ */ new Set();
9962 + runtime.injectedStyles.set(targetDocument, injectedStyles);
9963 + }
9964 + if (injectedStyles.has(hash)) {
9965 + return;
9966 + }
9967 + if (documentContainsStyleHash11(targetDocument, hash)) {
9968 + injectedStyles.add(hash);
9969 + return;
9970 + }
9971 + const style = targetDocument.createElement("style");
9972 + style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash);
9973 + style.appendChild(targetDocument.createTextNode(css));
9974 + targetDocument.head.appendChild(style);
9975 + injectedStyles.add(hash);
9976 +}
9977 +function registerDocument11(targetDocument) {
9978 + const runtime = getRuntime11();
9979 + runtime.documents.set(
9980 + targetDocument,
9981 + (runtime.documents.get(targetDocument) ?? 0) + 1
9982 + );
9983 + for (const [hash, css] of runtime.styles) {
9984 + injectStyle11(targetDocument, hash, css);
9985 + }
9986 + return () => {
9987 + const count = runtime.documents.get(targetDocument);
9988 + if (count === void 0) {
9989 + return;
9990 + }
9991 + if (count <= 1) {
9992 + runtime.documents.delete(targetDocument);
9993 + return;
9994 + }
9995 + runtime.documents.set(targetDocument, count - 1);
9996 + };
9997 +}
9998 +function registerStyle11(hash, css) {
9999 + const runtime = getRuntime11();
10000 + runtime.styles.set(hash, css);
10001 + for (const targetDocument of runtime.documents.keys()) {
10002 + injectStyle11(targetDocument, hash, css);
10003 + }
10004 +}
10005 +if (typeof process === "undefined" || true) {
10006 + registerStyle11("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
10007 +}
10008 +var style_default10 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
10009 +var DEFAULT_TAG = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("h2", {});
10010 +var Title = (0, import_element24.forwardRef)(
10011 + function EmptyStateTitle({ render = DEFAULT_TAG, className, children, ...props }, ref) {
10012 + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
10013 + Text,
10014 + {
10015 + ref,
10016 + variant: "heading-lg",
10017 + render,
10018 + className: clsx_default(style_default10.title, className),
10019 + ...props,
10020 + children
10021 + }
10022 + );
10023 + }
10024 +);
10025 +
10026 +// packages/ui/build-module/empty-state/description.mjs
10027 +var import_element25 = __toESM(require_element(), 1);
10028 +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
10029 +var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash";
10030 +function getRuntime12() {
10031 + const globalScope = globalThis;
10032 + if (globalScope.__wpStyleRuntime) {
10033 + return globalScope.__wpStyleRuntime;
10034 + }
10035 + globalScope.__wpStyleRuntime = {
10036 + documents: /* @__PURE__ */ new Map(),
10037 + styles: /* @__PURE__ */ new Map(),
10038 + injectedStyles: /* @__PURE__ */ new WeakMap()
10039 + };
10040 + if (typeof document !== "undefined") {
10041 + registerDocument12(document);
10042 + }
10043 + return globalScope.__wpStyleRuntime;
10044 +}
10045 +function documentContainsStyleHash12(targetDocument, hash) {
10046 + if (!targetDocument.head) {
10047 + return false;
10048 + }
10049 + for (const style of targetDocument.head.querySelectorAll(
10050 + `style[${STYLE_HASH_ATTRIBUTE12}]`
10051 + )) {
10052 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) {
10053 + return true;
10054 + }
10055 + }
10056 + return false;
10057 +}
10058 +function injectStyle12(targetDocument, hash, css) {
10059 + if (!targetDocument.head) {
10060 + return;
10061 + }
10062 + const runtime = getRuntime12();
10063 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
10064 + if (!injectedStyles) {
10065 + injectedStyles = /* @__PURE__ */ new Set();
10066 + runtime.injectedStyles.set(targetDocument, injectedStyles);
10067 + }
10068 + if (injectedStyles.has(hash)) {
10069 + return;
10070 + }
10071 + if (documentContainsStyleHash12(targetDocument, hash)) {
10072 + injectedStyles.add(hash);
10073 + return;
10074 + }
10075 + const style = targetDocument.createElement("style");
10076 + style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash);
10077 + style.appendChild(targetDocument.createTextNode(css));
10078 + targetDocument.head.appendChild(style);
10079 + injectedStyles.add(hash);
10080 +}
10081 +function registerDocument12(targetDocument) {
10082 + const runtime = getRuntime12();
10083 + runtime.documents.set(
10084 + targetDocument,
10085 + (runtime.documents.get(targetDocument) ?? 0) + 1
10086 + );
10087 + for (const [hash, css] of runtime.styles) {
10088 + injectStyle12(targetDocument, hash, css);
10089 + }
10090 + return () => {
10091 + const count = runtime.documents.get(targetDocument);
10092 + if (count === void 0) {
10093 + return;
10094 + }
10095 + if (count <= 1) {
10096 + runtime.documents.delete(targetDocument);
10097 + return;
10098 + }
10099 + runtime.documents.set(targetDocument, count - 1);
10100 + };
10101 +}
10102 +function registerStyle12(hash, css) {
10103 + const runtime = getRuntime12();
10104 + runtime.styles.set(hash, css);
10105 + for (const targetDocument of runtime.documents.keys()) {
10106 + injectStyle12(targetDocument, hash, css);
10107 + }
10108 +}
10109 +if (typeof process === "undefined" || true) {
10110 + registerStyle12("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
10111 +}
10112 +var style_default11 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
10113 +var DEFAULT_TAG2 = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", {});
10114 +var Description = (0, import_element25.forwardRef)(function EmptyStateDescription({ render = DEFAULT_TAG2, className, children, ...props }, ref) {
10115 + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
10116 + Text,
10117 + {
10118 + ref,
10119 + variant: "body-md",
10120 + render,
10121 + className: clsx_default(style_default11.description, className),
10122 + ...props,
10123 + children
10124 + }
10125 + );
10126 +});
10127 +
10128 +// packages/ui/build-module/empty-state/actions.mjs
10129 +var import_element26 = __toESM(require_element(), 1);
10130 +var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash";
10131 +function getRuntime13() {
10132 + const globalScope = globalThis;
10133 + if (globalScope.__wpStyleRuntime) {
10134 + return globalScope.__wpStyleRuntime;
10135 + }
10136 + globalScope.__wpStyleRuntime = {
10137 + documents: /* @__PURE__ */ new Map(),
10138 + styles: /* @__PURE__ */ new Map(),
10139 + injectedStyles: /* @__PURE__ */ new WeakMap()
10140 + };
10141 + if (typeof document !== "undefined") {
10142 + registerDocument13(document);
10143 + }
10144 + return globalScope.__wpStyleRuntime;
10145 +}
10146 +function documentContainsStyleHash13(targetDocument, hash) {
10147 + if (!targetDocument.head) {
10148 + return false;
10149 + }
10150 + for (const style of targetDocument.head.querySelectorAll(
10151 + `style[${STYLE_HASH_ATTRIBUTE13}]`
10152 + )) {
10153 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) {
10154 + return true;
10155 + }
10156 + }
10157 + return false;
10158 +}
10159 +function injectStyle13(targetDocument, hash, css) {
10160 + if (!targetDocument.head) {
10161 + return;
10162 + }
10163 + const runtime = getRuntime13();
10164 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
10165 + if (!injectedStyles) {
10166 + injectedStyles = /* @__PURE__ */ new Set();
10167 + runtime.injectedStyles.set(targetDocument, injectedStyles);
10168 + }
10169 + if (injectedStyles.has(hash)) {
10170 + return;
10171 + }
10172 + if (documentContainsStyleHash13(targetDocument, hash)) {
10173 + injectedStyles.add(hash);
10174 + return;
10175 + }
10176 + const style = targetDocument.createElement("style");
10177 + style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash);
10178 + style.appendChild(targetDocument.createTextNode(css));
10179 + targetDocument.head.appendChild(style);
10180 + injectedStyles.add(hash);
10181 +}
10182 +function registerDocument13(targetDocument) {
10183 + const runtime = getRuntime13();
10184 + runtime.documents.set(
10185 + targetDocument,
10186 + (runtime.documents.get(targetDocument) ?? 0) + 1
10187 + );
10188 + for (const [hash, css] of runtime.styles) {
10189 + injectStyle13(targetDocument, hash, css);
10190 + }
10191 + return () => {
10192 + const count = runtime.documents.get(targetDocument);
10193 + if (count === void 0) {
10194 + return;
10195 + }
10196 + if (count <= 1) {
10197 + runtime.documents.delete(targetDocument);
10198 + return;
10199 + }
10200 + runtime.documents.set(targetDocument, count - 1);
10201 + };
10202 +}
10203 +function registerStyle13(hash, css) {
10204 + const runtime = getRuntime13();
10205 + runtime.styles.set(hash, css);
10206 + for (const targetDocument of runtime.documents.keys()) {
10207 + injectStyle13(targetDocument, hash, css);
10208 + }
10209 +}
10210 +if (typeof process === "undefined" || true) {
10211 + registerStyle13("d29c51197e", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a23e08e65c8e62e5__root{text-wrap:balance;align-items:center;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);gap:var(--wpds-dimension-gap-xs,4px);max-width:var(--wpds-dimension-surface-width-sm,320px);text-align:center}._01303b3680eaa216__visual{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;justify-content:center;line-height:1;margin-block-end:var(--wpds-dimension-gap-xs,4px)}._58c8e351db225608__icon{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:50%;padding:var(--wpds-dimension-padding-xs,4px)}.b8b96f70820333a1__title{margin:0}._70f1dd22bad55b18__description{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin:0}._89ac025fd8e2bc52__actions{align-items:center;display:flex;flex-direction:column;gap:var(--wpds-dimension-gap-xs,4px);margin-block-start:var(--wpds-dimension-gap-md,12px);@media (min-width:480px){flex-direction:row;justify-content:center}}}@layer compositions{._70f1dd22bad55b18__description,.b8b96f70820333a1__title{text-wrap:balance}}}');
10212 +}
10213 +var style_default12 = { "root": "a23e08e65c8e62e5__root", "visual": "_01303b3680eaa216__visual", "icon": "_58c8e351db225608__icon", "title": "b8b96f70820333a1__title", "description": "_70f1dd22bad55b18__description", "actions": "_89ac025fd8e2bc52__actions" };
10214 +var Actions = (0, import_element26.forwardRef)(
10215 + function EmptyStateActions({ render, ...props }, ref) {
10216 + const className = clsx_default(style_default12.actions);
10217 + const element = useRender({
10218 + defaultTagName: "div",
10219 + render,
10220 + ref,
10221 + props: mergeProps({ className }, props)
10222 + });
10223 + return element;
10224 + }
10225 +);
10226 +
939 10227 // packages/admin-ui/build-module/navigable-region/index.mjs
940 -var import_element4 = __toESM(require_element(), 1);
941 -var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
942 -var NavigableRegion = (0, import_element4.forwardRef)(
10228 +var import_element27 = __toESM(require_element(), 1);
10229 +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
10230 +var NavigableRegion = (0, import_element27.forwardRef)(
943 10231 ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => {
944 - return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
10232 + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
945 10233 Tag,
946 10234 {
947 10235 ref,
948 10236 className: clsx_default("admin-ui-navigable-region", className),
@@ -957,16 +10245,161 @@
957 10245 );
958 10246 NavigableRegion.displayName = "NavigableRegion";
959 10247 var navigable_region_default = NavigableRegion;
960 10248
10249 +// packages/admin-ui/build-module/navigation/index.mjs
10250 +var import_i18n4 = __toESM(require_i18n(), 1);
10251 +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
10252 +var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash";
10253 +function getRuntime14() {
10254 + const globalScope = globalThis;
10255 + if (globalScope.__wpStyleRuntime) {
10256 + return globalScope.__wpStyleRuntime;
10257 + }
10258 + globalScope.__wpStyleRuntime = {
10259 + documents: /* @__PURE__ */ new Map(),
10260 + styles: /* @__PURE__ */ new Map(),
10261 + injectedStyles: /* @__PURE__ */ new WeakMap()
10262 + };
10263 + if (typeof document !== "undefined") {
10264 + registerDocument14(document);
10265 + }
10266 + return globalScope.__wpStyleRuntime;
10267 +}
10268 +function documentContainsStyleHash14(targetDocument, hash) {
10269 + if (!targetDocument.head) {
10270 + return false;
10271 + }
10272 + for (const style of targetDocument.head.querySelectorAll(
10273 + `style[${STYLE_HASH_ATTRIBUTE14}]`
10274 + )) {
10275 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) {
10276 + return true;
10277 + }
10278 + }
10279 + return false;
10280 +}
10281 +function injectStyle14(targetDocument, hash, css) {
10282 + if (!targetDocument.head) {
10283 + return;
10284 + }
10285 + const runtime = getRuntime14();
10286 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
10287 + if (!injectedStyles) {
10288 + injectedStyles = /* @__PURE__ */ new Set();
10289 + runtime.injectedStyles.set(targetDocument, injectedStyles);
10290 + }
10291 + if (injectedStyles.has(hash)) {
10292 + return;
10293 + }
10294 + if (documentContainsStyleHash14(targetDocument, hash)) {
10295 + injectedStyles.add(hash);
10296 + return;
10297 + }
10298 + const style = targetDocument.createElement("style");
10299 + style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash);
10300 + style.appendChild(targetDocument.createTextNode(css));
10301 + targetDocument.head.appendChild(style);
10302 + injectedStyles.add(hash);
10303 +}
10304 +function registerDocument14(targetDocument) {
10305 + const runtime = getRuntime14();
10306 + runtime.documents.set(
10307 + targetDocument,
10308 + (runtime.documents.get(targetDocument) ?? 0) + 1
10309 + );
10310 + for (const [hash, css] of runtime.styles) {
10311 + injectStyle14(targetDocument, hash, css);
10312 + }
10313 + return () => {
10314 + const count = runtime.documents.get(targetDocument);
10315 + if (count === void 0) {
10316 + return;
10317 + }
10318 + if (count <= 1) {
10319 + runtime.documents.delete(targetDocument);
10320 + return;
10321 + }
10322 + runtime.documents.set(targetDocument, count - 1);
10323 + };
10324 +}
10325 +function registerStyle14(hash, css) {
10326 + const runtime = getRuntime14();
10327 + runtime.styles.set(hash, css);
10328 + for (const targetDocument of runtime.documents.keys()) {
10329 + injectStyle14(targetDocument, hash, css);
10330 + }
10331 +}
10332 +if (typeof process === "undefined" || true) {
10333 + registerStyle14("72ef022400", ".bfb5a2dd8cceebd3__list{--focus-ring-size:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*2);list-style:none;margin:calc(var(--focus-ring-size)*-1);overflow-x:auto;padding:var(--focus-ring-size);scroll-padding:var(--focus-ring-size)}.a4759b4cb2c8bd92__li{flex-shrink:0}._07da506d3f2d9afe__item{align-items:center;color:var(--wpds-color-foreground-interactive-neutral-weak,#707070);display:flex;font-weight:var(--wpds-typography-font-weight-default,400);min-block-size:44px;min-inline-size:44px;text-decoration:none}._07da506d3f2d9afe__item:hover,._07da506d3f2d9afe__item[aria-current=page]{color:var(--wpds-color-foreground-interactive-neutral-weak-active,#1e1e1e)}._07da506d3f2d9afe__item[aria-current=page]{font-weight:var(--wpds-typography-font-weight-emphasis,600)}");
10334 +}
10335 +var style_default13 = { "list": "bfb5a2dd8cceebd3__list", "li": "a4759b4cb2c8bd92__li", "item": "_07da506d3f2d9afe__item" };
10336 +var Navigation = ({
10337 + items,
10338 + currentHref,
10339 + ariaLabel = (0, import_i18n4.__)("Sections"),
10340 + linkComponent,
10341 + className
10342 +}) => {
10343 + if (!items.length) {
10344 + return null;
10345 + }
10346 + const LinkComponent = linkComponent ?? "a";
10347 + if (true) {
10348 + const invalidItem = items.find(
10349 + (item) => typeof item.href !== "string"
10350 + );
10351 + if (invalidItem) {
10352 + throw new Error(
10353 + `Navigation: item "${invalidItem.label}" is missing an \`href\` prop.`
10354 + );
10355 + }
10356 + const duplicate = items.find(
10357 + (item, index2) => items.findIndex((other) => other.href === item.href) !== index2
10358 + );
10359 + if (duplicate) {
10360 + throw new Error(
10361 + `Navigation: duplicate \`href\` "${duplicate.href}". Each item must have a unique \`href\` so a single item receives \`aria-current="page"\`.`
10362 + );
10363 + }
10364 + }
10365 + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("nav", { "aria-label": ariaLabel, className, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10366 + Stack,
10367 + {
10368 + render: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("ul", { role: "list" }),
10369 + direction: "row",
10370 + align: "center",
10371 + gap: "md",
10372 + className: style_default13.list,
10373 + children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("li", { className: style_default13.li, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10374 + Text,
10375 + {
10376 + variant: "body-md",
10377 + className: style_default13.item,
10378 + render: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10379 + Link,
10380 + {
10381 + variant: "unstyled",
10382 + "aria-current": item.href === currentHref ? "page" : void 0,
10383 + render: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(LinkComponent, { href: item.href })
10384 + }
10385 + ),
10386 + children: item.label
10387 + }
10388 + ) }, item.href))
10389 + }
10390 + ) });
10391 +};
10392 +var navigation_default = Navigation;
10393 +
961 10394 // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs
962 10395 var import_components = __toESM(require_components(), 1);
963 10396 var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle");
964 10397
965 10398 // packages/admin-ui/build-module/page/header.mjs
966 -var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
967 -var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash";
968 -function getRuntime3() {
10399 +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
10400 +var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash";
10401 +function getRuntime15() {
969 10402 const globalScope = globalThis;
970 10403 if (globalScope.__wpStyleRuntime) {
971 10404 return globalScope.__wpStyleRuntime;
972 10405 }
@@ -975,30 +10408,30 @@
975 10408 styles: /* @__PURE__ */ new Map(),
976 10409 injectedStyles: /* @__PURE__ */ new WeakMap()
977 10410 };
978 10411 if (typeof document !== "undefined") {
979 - registerDocument3(document);
10412 + registerDocument15(document);
980 10413 }
981 10414 return globalScope.__wpStyleRuntime;
982 10415 }
983 -function documentContainsStyleHash3(targetDocument, hash) {
10416 +function documentContainsStyleHash15(targetDocument, hash) {
984 10417 if (!targetDocument.head) {
985 10418 return false;
986 10419 }
987 10420 for (const style of targetDocument.head.querySelectorAll(
988 - `style[${STYLE_HASH_ATTRIBUTE3}]`
10421 + `style[${STYLE_HASH_ATTRIBUTE15}]`
989 10422 )) {
990 - if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) {
10423 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) {
991 10424 return true;
992 10425 }
993 10426 }
994 10427 return false;
995 10428 }
996 -function injectStyle3(targetDocument, hash, css) {
10429 +function injectStyle15(targetDocument, hash, css) {
997 10430 if (!targetDocument.head) {
998 10431 return;
999 10432 }
1000 - const runtime = getRuntime3();
10433 + const runtime = getRuntime15();
1001 10434 let injectedStyles = runtime.injectedStyles.get(targetDocument);
1002 10435 if (!injectedStyles) {
1003 10436 injectedStyles = /* @__PURE__ */ new Set();
1004 10437 runtime.injectedStyles.set(targetDocument, injectedStyles);
@@ -1005,26 +10438,26 @@
1005 10438 }
1006 10439 if (injectedStyles.has(hash)) {
1007 10440 return;
1008 10441 }
1009 - if (documentContainsStyleHash3(targetDocument, hash)) {
10442 + if (documentContainsStyleHash15(targetDocument, hash)) {
1010 10443 injectedStyles.add(hash);
1011 10444 return;
1012 10445 }
1013 10446 const style = targetDocument.createElement("style");
1014 - style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash);
10447 + style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash);
1015 10448 style.appendChild(targetDocument.createTextNode(css));
1016 10449 targetDocument.head.appendChild(style);
1017 10450 injectedStyles.add(hash);
1018 10451 }
1019 -function registerDocument3(targetDocument) {
1020 - const runtime = getRuntime3();
10452 +function registerDocument15(targetDocument) {
10453 + const runtime = getRuntime15();
1021 10454 runtime.documents.set(
1022 10455 targetDocument,
1023 10456 (runtime.documents.get(targetDocument) ?? 0) + 1
1024 10457 );
1025 10458 for (const [hash, css] of runtime.styles) {
1026 - injectStyle3(targetDocument, hash, css);
10459 + injectStyle15(targetDocument, hash, css);
1027 10460 }
1028 10461 return () => {
1029 10462 const count = runtime.documents.get(targetDocument);
1030 10463 if (count === void 0) {
@@ -1036,19 +10469,19 @@
1036 10469 }
1037 10470 runtime.documents.set(targetDocument, count - 1);
1038 10471 };
1039 10472 }
1040 -function registerStyle3(hash, css) {
1041 - const runtime = getRuntime3();
10473 +function registerStyle15(hash, css) {
10474 + const runtime = getRuntime15();
1042 10475 runtime.styles.set(hash, css);
1043 10476 for (const targetDocument of runtime.documents.keys()) {
1044 - injectStyle3(targetDocument, hash, css);
10477 + injectStyle15(targetDocument, hash, css);
1045 10478 }
1046 10479 }
1047 10480 if (typeof process === "undefined" || true) {
1048 - registerStyle3("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");
10481 + registerStyle15("1f3750277d", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-background-surface-neutral,#fcfcfc);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-background-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:var(--wpds-dimension-size-md,32px)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8bcd33103b451f30__header-lockup{min-width:0}._8113be94e7caf73c__header-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:var(--wpds-dimension-size-sm,24px);width:var(--wpds-dimension-size-sm,24px);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-foreground-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation,._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation ._60fea2f6bf5319cd__header-subtitle{padding-block-end:0}._673c99dcbfb58211__header-navigation{margin-block-start:var(--wpds-dimension-gap-md,12px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");
1049 10482 }
1050 -var style_default3 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" };
10483 +var style_default14 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-lockup": "_8bcd33103b451f30__header-lockup", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "has-navigation": "_4b0f17e503d11619__has-navigation", "header-navigation": "_673c99dcbfb58211__header-navigation", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" };
1051 10484 function Header({
1052 10485 headingLevel = 1,
1053 10486 breadcrumbs,
1054 10487 badges,
@@ -1055,77 +10488,108 @@
1055 10488 visual,
1056 10489 title,
1057 10490 subTitle,
1058 10491 actions,
10492 + navigation,
10493 + components,
1059 10494 showSidebarToggle = true
1060 10495 }) {
1061 10496 const HeadingTag = `h${headingLevel}`;
1062 - return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Stack, { direction: "column", className: style_default3.header, children: [
1063 - /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1064 - Stack,
1065 - {
1066 - className: style_default3["header-content"],
1067 - direction: "row",
1068 - gap: "sm",
1069 - justify: "space-between",
1070 - children: [
1071 - /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [
1072 - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1073 - SidebarToggleSlot,
1074 - {
1075 - bubblesVirtually: true,
1076 - className: style_default3["sidebar-toggle-slot"]
1077 - }
1078 - ),
1079 - visual && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1080 - "div",
1081 - {
1082 - className: style_default3["header-visual"],
1083 - "aria-hidden": "true",
1084 - children: visual
1085 - }
1086 - ),
1087 - title && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1088 - Text,
1089 - {
1090 - className: style_default3["header-title"],
1091 - render: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(HeadingTag, {}),
1092 - variant: "heading-lg",
1093 - children: title
1094 - }
1095 - ),
1096 - breadcrumbs,
1097 - badges
1098 - ] }),
1099 - actions && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1100 - Stack,
1101 - {
1102 - align: "center",
1103 - className: style_default3["header-actions"],
1104 - direction: "row",
1105 - gap: "sm",
1106 - children: actions
1107 - }
1108 - )
1109 - ]
1110 - }
1111 - ),
1112 - subTitle && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1113 - Text,
1114 - {
1115 - render: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", {}),
1116 - variant: "body-md",
1117 - className: style_default3["header-subtitle"],
1118 - children: subTitle
1119 - }
1120 - )
1121 - ] });
10497 + const hasNavigation = !!navigation?.items?.length;
10498 + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
10499 + Stack,
10500 + {
10501 + direction: "column",
10502 + className: clsx_default(
10503 + style_default14.header,
10504 + hasNavigation && style_default14["has-navigation"]
10505 + ),
10506 + children: [
10507 + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
10508 + Stack,
10509 + {
10510 + className: style_default14["header-content"],
10511 + direction: "row",
10512 + gap: "sm",
10513 + justify: "space-between",
10514 + children: [
10515 + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
10516 + Stack,
10517 + {
10518 + direction: "row",
10519 + gap: "sm",
10520 + align: "center",
10521 + justify: "start",
10522 + className: style_default14["header-lockup"],
10523 + children: [
10524 + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10525 + SidebarToggleSlot,
10526 + {
10527 + bubblesVirtually: true,
10528 + className: style_default14["sidebar-toggle-slot"]
10529 + }
10530 + ),
10531 + visual && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10532 + "div",
10533 + {
10534 + className: style_default14["header-visual"],
10535 + "aria-hidden": "true",
10536 + children: visual
10537 + }
10538 + ),
10539 + title && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10540 + Text,
10541 + {
10542 + className: style_default14["header-title"],
10543 + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(HeadingTag, {}),
10544 + variant: "heading-lg",
10545 + children: title
10546 + }
10547 + ),
10548 + breadcrumbs,
10549 + badges
10550 + ]
10551 + }
10552 + ),
10553 + actions && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10554 + Stack,
10555 + {
10556 + align: "center",
10557 + className: style_default14["header-actions"],
10558 + direction: "row",
10559 + gap: "sm",
10560 + children: actions
10561 + }
10562 + )
10563 + ]
10564 + }
10565 + ),
10566 + subTitle && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10567 + Text,
10568 + {
10569 + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", {}),
10570 + variant: "body-md",
10571 + className: style_default14["header-subtitle"],
10572 + children: subTitle
10573 + }
10574 + ),
10575 + hasNavigation && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
10576 + navigation_default,
10577 + {
10578 + ...navigation,
10579 + linkComponent: components?.link,
10580 + className: style_default14["header-navigation"]
10581 + }
10582 + )
10583 + ]
10584 + }
10585 + );
1122 10586 }
1123 10587
1124 10588 // packages/admin-ui/build-module/page/index.mjs
1125 -var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
1126 -var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash";
1127 -function getRuntime4() {
10589 +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
10590 +var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash";
10591 +function getRuntime16() {
1128 10592 const globalScope = globalThis;
1129 10593 if (globalScope.__wpStyleRuntime) {
1130 10594 return globalScope.__wpStyleRuntime;
1131 10595 }
@@ -1134,30 +10598,30 @@
1134 10598 styles: /* @__PURE__ */ new Map(),
1135 10599 injectedStyles: /* @__PURE__ */ new WeakMap()
1136 10600 };
1137 10601 if (typeof document !== "undefined") {
1138 - registerDocument4(document);
10602 + registerDocument16(document);
1139 10603 }
1140 10604 return globalScope.__wpStyleRuntime;
1141 10605 }
1142 -function documentContainsStyleHash4(targetDocument, hash) {
10606 +function documentContainsStyleHash16(targetDocument, hash) {
1143 10607 if (!targetDocument.head) {
1144 10608 return false;
1145 10609 }
1146 10610 for (const style of targetDocument.head.querySelectorAll(
1147 - `style[${STYLE_HASH_ATTRIBUTE4}]`
10611 + `style[${STYLE_HASH_ATTRIBUTE16}]`
1148 10612 )) {
1149 - if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) {
10613 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) {
1150 10614 return true;
1151 10615 }
1152 10616 }
1153 10617 return false;
1154 10618 }
1155 -function injectStyle4(targetDocument, hash, css) {
10619 +function injectStyle16(targetDocument, hash, css) {
1156 10620 if (!targetDocument.head) {
1157 10621 return;
1158 10622 }
1159 - const runtime = getRuntime4();
10623 + const runtime = getRuntime16();
1160 10624 let injectedStyles = runtime.injectedStyles.get(targetDocument);
1161 10625 if (!injectedStyles) {
1162 10626 injectedStyles = /* @__PURE__ */ new Set();
1163 10627 runtime.injectedStyles.set(targetDocument, injectedStyles);
@@ -1164,26 +10628,26 @@
1164 10628 }
1165 10629 if (injectedStyles.has(hash)) {
1166 10630 return;
1167 10631 }
1168 - if (documentContainsStyleHash4(targetDocument, hash)) {
10632 + if (documentContainsStyleHash16(targetDocument, hash)) {
1169 10633 injectedStyles.add(hash);
1170 10634 return;
1171 10635 }
1172 10636 const style = targetDocument.createElement("style");
1173 - style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash);
10637 + style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash);
1174 10638 style.appendChild(targetDocument.createTextNode(css));
1175 10639 targetDocument.head.appendChild(style);
1176 10640 injectedStyles.add(hash);
1177 10641 }
1178 -function registerDocument4(targetDocument) {
1179 - const runtime = getRuntime4();
10642 +function registerDocument16(targetDocument) {
10643 + const runtime = getRuntime16();
1180 10644 runtime.documents.set(
1181 10645 targetDocument,
1182 10646 (runtime.documents.get(targetDocument) ?? 0) + 1
1183 10647 );
1184 10648 for (const [hash, css] of runtime.styles) {
1185 - injectStyle4(targetDocument, hash, css);
10649 + injectStyle16(targetDocument, hash, css);
1186 10650 }
1187 10651 return () => {
1188 10652 const count = runtime.documents.get(targetDocument);
1189 10653 if (count === void 0) {
@@ -1195,19 +10659,19 @@
1195 10659 }
1196 10660 runtime.documents.set(targetDocument, count - 1);
1197 10661 };
1198 10662 }
1199 -function registerStyle4(hash, css) {
1200 - const runtime = getRuntime4();
10663 +function registerStyle16(hash, css) {
10664 + const runtime = getRuntime16();
1201 10665 runtime.styles.set(hash, css);
1202 10666 for (const targetDocument of runtime.documents.keys()) {
1203 - injectStyle4(targetDocument, hash, css);
10667 + injectStyle16(targetDocument, hash, css);
1204 10668 }
1205 10669 }
1206 10670 if (typeof process === "undefined" || true) {
1207 - registerStyle4("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");
10671 + registerStyle16("1f3750277d", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-background-surface-neutral,#fcfcfc);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-background-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:var(--wpds-dimension-size-md,32px)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8bcd33103b451f30__header-lockup{min-width:0}._8113be94e7caf73c__header-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:var(--wpds-dimension-size-sm,24px);width:var(--wpds-dimension-size-sm,24px);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-foreground-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation,._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation ._60fea2f6bf5319cd__header-subtitle{padding-block-end:0}._673c99dcbfb58211__header-navigation{margin-block-start:var(--wpds-dimension-gap-md,12px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");
1208 10672 }
1209 -var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" };
10673 +var style_default15 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-lockup": "_8bcd33103b451f30__header-lockup", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "has-navigation": "_4b0f17e503d11619__has-navigation", "header-navigation": "_673c99dcbfb58211__header-navigation", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" };
1210 10674 function Page({
1211 10675 headingLevel,
1212 10676 breadcrumbs,
1213 10677 badges,
@@ -1216,16 +10680,18 @@
1216 10680 subTitle,
1217 10681 children,
1218 10682 className,
1219 10683 actions,
10684 + navigation,
10685 + components,
1220 10686 ariaLabel,
1221 10687 hasPadding = false,
1222 10688 showSidebarToggle = true
1223 10689 }) {
1224 - const classes = clsx_default(style_default4.page, className);
10690 + const classes = clsx_default(style_default15.page, className);
1225 10691 const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : "");
1226 - return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [
1227 - (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
10692 + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [
10693 + (title || breadcrumbs || badges || actions || visual || !!navigation?.items?.length) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1228 10694 Header,
1229 10695 {
1230 10696 headingLevel,
1231 10697 breadcrumbs,
@@ -1233,17 +10699,19 @@
1233 10699 visual,
1234 10700 title,
1235 10701 subTitle,
1236 10702 actions,
10703 + navigation,
10704 + components,
1237 10705 showSidebarToggle
1238 10706 }
1239 10707 ),
1240 - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
10708 + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1241 10709 "div",
1242 10710 {
1243 10711 className: clsx_default(
1244 - style_default4.content,
1245 - style_default4["has-padding"]
10712 + style_default15.content,
10713 + style_default15["has-padding"]
1246 10714 ),
1247 10715 children
1248 10716 }
1249 10717 ) : children
@@ -1251,139 +10719,64 @@
1251 10719 }
1252 10720 Page.SidebarToggleFill = SidebarToggleFill;
1253 10721 var page_default = Page;
1254 10722
10723 +// packages/admin-ui/build-module/admin-theme-colors/index.mjs
10724 +var DEFAULT_THEME_COLORS = {
10725 + primary: "#3858e9",
10726 + background: "#222524"
10727 +};
10728 +var ADMIN_THEME_COLORS = /* @__PURE__ */ new Map([
10729 + ["modern", DEFAULT_THEME_COLORS],
10730 + ["fresh", { primary: "#007cba", background: "#25292b" }],
10731 + ["midnight", { primary: "#cf4339", background: "#3d4042" }],
10732 + ["coffee", { primary: "#916745", background: "#5b534d" }],
10733 + ["ocean", { primary: "#567958", background: "#5f787f" }],
10734 + ["blue", { primary: "#437aa8", background: "#3876a8" }],
10735 + ["ectoplasm", { primary: "#646c3e", background: "#4f386e" }],
10736 + ["sunrise", { primary: "#ad631e", background: "#cc4541" }],
10737 + ["light", { primary: "#007cba", background: "#eaeeed" }]
10738 +]);
10739 +function getAdminThemeColors() {
10740 + const scheme = document.body.className.match(/admin-color-([\w-]+)/)?.[1] ?? "modern";
10741 + return ADMIN_THEME_COLORS.get(scheme) ?? DEFAULT_THEME_COLORS;
10742 +}
10743 +
1255 10744 // packages/boot/build-module/components/app/router.mjs
1256 -var import_data11 = __toESM(require_data(), 1);
1257 -var import_core_data6 = __toESM(require_core_data(), 1);
10745 +var import_data13 = __toESM(require_data(), 1);
10746 +var import_core_data7 = __toESM(require_core_data(), 1);
1258 10747 import {
1259 10748 privateApis as routePrivateApis6
1260 10749 } from "@wordpress/route";
1261 10750
1262 10751 // packages/boot/build-module/components/root/index.mjs
1263 -var import_notices = __toESM(require_notices(), 1);
1264 -var import_compose4 = __toESM(require_compose(), 1);
1265 -var import_components15 = __toESM(require_components(), 1);
10752 +var import_notices3 = __toESM(require_notices(), 1);
10753 +var import_compose5 = __toESM(require_compose(), 1);
10754 +var import_components14 = __toESM(require_components(), 1);
1266 10755 import { privateApis as routePrivateApis5 } from "@wordpress/route";
1267 -var import_element15 = __toESM(require_element(), 1);
1268 -var import_i18n11 = __toESM(require_i18n(), 1);
10756 +var import_element41 = __toESM(require_element(), 1);
10757 +var import_i18n18 = __toESM(require_i18n(), 1);
10758 +var import_editor5 = __toESM(require_editor(), 1);
10759 +var import_theme = __toESM(require_theme(), 1);
1269 10760
1270 10761 // packages/boot/build-module/components/sidebar/index.mjs
1271 -var import_components11 = __toESM(require_components(), 1);
1272 -var import_data9 = __toESM(require_data(), 1);
1273 -var import_i18n7 = __toESM(require_i18n(), 1);
10762 +var import_components9 = __toESM(require_components(), 1);
10763 +var import_data7 = __toESM(require_data(), 1);
10764 +var import_i18n9 = __toESM(require_i18n(), 1);
1274 10765
1275 -// packages/boot/build-module/components/site-hub/index.mjs
1276 -var import_data3 = __toESM(require_data(), 1);
1277 -var import_components3 = __toESM(require_components(), 1);
1278 -var import_i18n2 = __toESM(require_i18n(), 1);
1279 -var import_core_data2 = __toESM(require_core_data(), 1);
1280 -var import_html_entities = __toESM(require_html_entities(), 1);
1281 -var import_keycodes = __toESM(require_keycodes(), 1);
1282 -var import_commands = __toESM(require_commands(), 1);
1283 -var import_url = __toESM(require_url(), 1);
10766 +// packages/boot/build-module/components/navigation/index.mjs
10767 +var import_element31 = __toESM(require_element(), 1);
10768 +var import_data4 = __toESM(require_data(), 1);
1284 10769
1285 -// packages/boot/build-module/components/site-icon-link/index.mjs
1286 -var import_components2 = __toESM(require_components(), 1);
1287 -import { Link, privateApis as routePrivateApis } from "@wordpress/route";
1288 -
1289 -// packages/boot/build-module/lock-unlock.mjs
1290 -var import_private_apis = __toESM(require_private_apis(), 1);
1291 -var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
1292 - "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
1293 - "@wordpress/boot"
1294 -);
1295 -
1296 -// packages/boot/build-module/components/site-icon/index.mjs
10770 +// packages/boot/build-module/store/index.mjs
1297 10771 var import_data = __toESM(require_data(), 1);
1298 -var import_i18n = __toESM(require_i18n(), 1);
1299 -var import_core_data = __toESM(require_core_data(), 1);
1300 -var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
1301 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='3ada0e3b8a']")) {
1302 - const style = document.createElement("style");
1303 - style.setAttribute("data-wp-hash", "3ada0e3b8a");
1304 - style.appendChild(document.createTextNode(".boot-site-icon{display:flex}.boot-site-icon__icon{fill:var(--wpds-color-fg-content-neutral,#1e1e1e);height:32px;width:32px}.boot-site-icon__image{aspect-ratio:1/1;border-radius:var(--wpds-border-radius-md,4px);height:32px;object-fit:cover;width:32px}"));
1305 - document.head.appendChild(style);
1306 -}
1307 -function SiteIcon({ className }) {
1308 - const { isRequestingSite, siteIconUrl } = (0, import_data.useSelect)((select) => {
1309 - const { getEntityRecord } = select(import_core_data.store);
1310 - const siteData = getEntityRecord(
1311 - "root",
1312 - "__unstableBase",
1313 - void 0
1314 - );
1315 - return {
1316 - isRequestingSite: !siteData,
1317 - siteIconUrl: siteData?.site_icon_url
1318 - };
1319 - }, []);
1320 - let icon = null;
1321 - if (isRequestingSite && !siteIconUrl) {
1322 - icon = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "boot-site-icon__image" });
1323 - } else {
1324 - icon = siteIconUrl ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1325 - "img",
1326 - {
1327 - className: "boot-site-icon__image",
1328 - alt: (0, import_i18n.__)("Site Icon"),
1329 - src: siteIconUrl
1330 - }
1331 - ) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1332 - icon_default,
1333 - {
1334 - className: "boot-site-icon__icon",
1335 - icon: wordpress_default,
1336 - size: 48
1337 - }
1338 - );
1339 - }
1340 - return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: clsx_default(className, "boot-site-icon"), children: icon });
1341 -}
1342 -var site_icon_default = SiteIcon;
1343 10772
1344 -// packages/boot/build-module/components/site-icon-link/index.mjs
1345 -var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
1346 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='5aacc86eea']")) {
1347 - const style = document.createElement("style");
1348 - style.setAttribute("data-wp-hash", "5aacc86eea");
1349 - style.appendChild(document.createTextNode(".boot-site-icon-link{align-items:center;background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);display:inline-flex;height:64px;justify-content:center;text-decoration:none;width:64px}@media not (prefers-reduced-motion){.boot-site-icon-link{transition:outline .1s ease-out}}.boot-site-icon-link:focus:not(:active){outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}"));
1350 - document.head.appendChild(style);
1351 -}
1352 -var { useCanGoBack, useRouter } = unlock(routePrivateApis);
1353 -function SiteIconLink({
1354 - to,
1355 - isBackButton,
1356 - ...props
1357 -}) {
1358 - const router = useRouter();
1359 - const canGoBack = useCanGoBack();
1360 - return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components2.Tooltip, { text: props["aria-label"], placement: "right", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1361 - Link,
1362 - {
1363 - to,
1364 - "aria-label": props["aria-label"],
1365 - className: "boot-site-icon-link",
1366 - onClick: (event) => {
1367 - if (canGoBack && isBackButton) {
1368 - event.preventDefault();
1369 - router.history.back();
1370 - }
1371 - },
1372 - children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(site_icon_default, {})
1373 - }
1374 - ) });
1375 -}
1376 -var site_icon_link_default = SiteIconLink;
1377 -
1378 -// packages/boot/build-module/store/index.mjs
1379 -var import_data2 = __toESM(require_data(), 1);
1380 -
1381 10773 // packages/boot/build-module/store/reducer.mjs
1382 10774 var initialState = {
1383 10775 menuItems: {},
1384 10776 routes: [],
1385 - dashboardLink: void 0
10777 + dashboardLink: void 0,
10778 + entityLinks: {}
1386 10779 };
1387 10780 function reducer(state = initialState, action) {
1388 10781 switch (action.type) {
1389 10782 case "REGISTER_MENU_ITEM":
@@ -1394,8 +10787,11 @@
1394 10787 [action.id]: action.menuItem
1395 10788 }
1396 10789 };
1397 10790 case "UPDATE_MENU_ITEM":
10791 + if (!state.menuItems[action.id]) {
10792 + return state;
10793 + }
1398 10794 return {
1399 10795 ...state,
1400 10796 menuItems: {
1401 10797 ...state.menuItems,
@@ -1409,8 +10805,19 @@
1409 10805 return {
1410 10806 ...state,
1411 10807 routes: [...state.routes, action.route]
1412 10808 };
10809 + case "REGISTER_ENTITY_LINKS":
10810 + return {
10811 + ...state,
10812 + entityLinks: {
10813 + ...state.entityLinks,
10814 + [action.postType]: {
10815 + ...state.entityLinks[action.postType],
10816 + ...action.links
10817 + }
10818 + }
10819 + };
1413 10820 case "SET_DASHBOARD_LINK":
1414 10821 return {
1415 10822 ...state,
1416 10823 dashboardLink: action.dashboardLink
@@ -1421,8 +10828,9 @@
1421 10828
1422 10829 // packages/boot/build-module/store/actions.mjs
1423 10830 var actions_exports = {};
1424 10831 __export(actions_exports, {
10832 + registerEntityLinks: () => registerEntityLinks,
1425 10833 registerMenuItem: () => registerMenuItem,
1426 10834 registerRoute: () => registerRoute,
1427 10835 setDashboardLink: () => setDashboardLink,
1428 10836 updateMenuItem: () => updateMenuItem
@@ -1446,8 +10854,15 @@
1446 10854 type: "REGISTER_ROUTE",
1447 10855 route
1448 10856 };
1449 10857 }
10858 +function registerEntityLinks(postType, links) {
10859 + return {
10860 + type: "REGISTER_ENTITY_LINKS",
10861 + postType,
10862 + links
10863 + };
10864 +}
1450 10865 function setDashboardLink(dashboardLink) {
1451 10866 return {
1452 10867 type: "SET_DASHBOARD_LINK",
1453 10868 dashboardLink
@@ -1457,8 +10872,9 @@
1457 10872 // packages/boot/build-module/store/selectors.mjs
1458 10873 var selectors_exports = {};
1459 10874 __export(selectors_exports, {
1460 10875 getDashboardLink: () => getDashboardLink,
10876 + getEntityLink: () => getEntityLink,
1461 10877 getMenuItems: () => getMenuItems,
1462 10878 getRoutes: () => getRoutes
1463 10879 });
1464 10880 function getMenuItems(state) {
@@ -1469,104 +10885,61 @@
1469 10885 }
1470 10886 function getDashboardLink(state) {
1471 10887 return state.dashboardLink;
1472 10888 }
10889 +function getEntityLink(state, postType, postId) {
10890 + const links = state.entityLinks[postType] ?? state.entityLinks.default;
10891 + const path = postId === void 0 ? links?.list : links?.edit;
10892 + if (!path) {
10893 + return void 0;
10894 + }
10895 + return path.replace("{type}", encodeURIComponent(postType)).replace("{id}", encodeURIComponent(postId ?? ""));
10896 +}
1473 10897
1474 10898 // packages/boot/build-module/store/index.mjs
1475 10899 var STORE_NAME = "wordpress/boot";
1476 -var store = (0, import_data2.createReduxStore)(STORE_NAME, {
10900 +var store = (0, import_data.createReduxStore)(STORE_NAME, {
1477 10901 reducer,
1478 10902 actions: actions_exports,
1479 10903 selectors: selectors_exports
1480 10904 });
1481 -(0, import_data2.register)(store);
10905 +(0, import_data.register)(store);
1482 10906
1483 -// packages/boot/build-module/components/site-hub/index.mjs
1484 -var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
1485 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='bc60675bd6']")) {
1486 - const style = document.createElement("style");
1487 - style.setAttribute("data-wp-hash", "bc60675bd6");
1488 - style.appendChild(document.createTextNode(".boot-site-hub{align-items:center;background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);display:grid;flex-shrink:0;grid-template-columns:60px 1fr auto;padding-right:16px;position:sticky;top:0;z-index:1}.boot-site-hub__actions{flex-shrink:0}.boot-site-hub__title{align-items:center;display:flex;text-decoration:none}.boot-site-hub__title .components-external-link__contents{margin-inline-start:4px;max-width:140px;overflow:hidden;text-decoration:none}.boot-site-hub__title .components-external-link__icon{opacity:0;transition:opacity .1s ease-out}.boot-site-hub__title:hover .components-external-link__icon{opacity:1}@media not (prefers-reduced-motion){.boot-site-hub__title{transition:outline .1s ease-out}}.boot-site-hub__title:focus:not(:active){outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}.boot-site-hub__title-text{color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-size:13px;font-weight:499}.boot-site-hub__title-text,.boot-site-hub__url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.boot-site-hub__url{color:var(--wpds-color-fg-content-neutral-weak,#707070);font-size:12px}"));
1489 - document.head.appendChild(style);
1490 -}
1491 -function SiteHub() {
1492 - const { dashboardLink, homeUrl, siteTitle } = (0, import_data3.useSelect)((select) => {
1493 - const { getEntityRecord } = select(import_core_data2.store);
1494 - const _base = getEntityRecord(
1495 - "root",
1496 - "__unstableBase"
1497 - );
1498 - return {
1499 - dashboardLink: select(store).getDashboardLink(),
1500 - homeUrl: _base?.home,
1501 - siteTitle: !_base?.name && !!_base?.url ? (0, import_url.filterURLForDisplay)(_base?.url) : _base?.name
1502 - };
1503 - }, []);
1504 - const { open: openCommandCenter } = (0, import_data3.useDispatch)(import_commands.store);
1505 - return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "boot-site-hub", children: [
1506 - /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1507 - site_icon_link_default,
1508 - {
1509 - to: dashboardLink || "/",
1510 - "aria-label": (0, import_i18n2.__)("Go to the Dashboard")
1511 - }
1512 - ),
1513 - /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1514 - import_components3.ExternalLink,
1515 - {
1516 - href: homeUrl ?? "/",
1517 - className: "boot-site-hub__title",
1518 - children: [
1519 - /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "boot-site-hub__title-text", children: siteTitle && (0, import_html_entities.decodeEntities)(siteTitle) }),
1520 - /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "boot-site-hub__url", children: (0, import_url.filterURLForDisplay)(homeUrl ?? "") })
1521 - ]
1522 - }
1523 - ),
1524 - /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_components3.__experimentalHStack, { className: "boot-site-hub__actions", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1525 - import_components3.Button,
1526 - {
1527 - variant: "tertiary",
1528 - icon: search_default,
1529 - onClick: () => openCommandCenter(),
1530 - size: "compact",
1531 - label: (0, import_i18n2.__)("Open command palette"),
1532 - shortcut: import_keycodes.displayShortcut.primary("k")
1533 - }
1534 - ) })
1535 - ] });
1536 -}
1537 -var site_hub_default = SiteHub;
10907 +// packages/boot/build-module/components/navigation/navigation-item/index.mjs
10908 +var import_components4 = __toESM(require_components(), 1);
1538 10909
1539 -// packages/boot/build-module/components/navigation/index.mjs
1540 -var import_element8 = __toESM(require_element(), 1);
1541 -var import_data6 = __toESM(require_data(), 1);
10910 +// packages/boot/build-module/components/navigation/router-link-item.mjs
10911 +var import_element28 = __toESM(require_element(), 1);
10912 +var import_components2 = __toESM(require_components(), 1);
10913 +import { privateApis as routePrivateApis } from "@wordpress/route";
1542 10914
1543 -// packages/boot/build-module/components/navigation/navigation-item/index.mjs
1544 -var import_components6 = __toESM(require_components(), 1);
10915 +// packages/boot/build-module/lock-unlock.mjs
10916 +var import_private_apis2 = __toESM(require_private_apis(), 1);
10917 +var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
10918 + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
10919 + "@wordpress/boot"
10920 +);
1545 10921
1546 10922 // packages/boot/build-module/components/navigation/router-link-item.mjs
1547 -var import_element5 = __toESM(require_element(), 1);
1548 -var import_components4 = __toESM(require_components(), 1);
1549 -import { privateApis as routePrivateApis2 } from "@wordpress/route";
1550 -var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
1551 -var { createLink } = unlock(routePrivateApis2);
10923 +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
10924 +var { createLink } = unlock2(routePrivateApis);
1552 10925 function AnchorOnlyItem(props, forwardedRef) {
1553 - return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_components4.__experimentalItem, { as: "a", ref: forwardedRef, ...props });
10926 + return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components2.__experimentalItem, { as: "a", ref: forwardedRef, ...props });
1554 10927 }
1555 -var RouterLinkItem = createLink((0, import_element5.forwardRef)(AnchorOnlyItem));
10928 +var RouterLinkItem = createLink((0, import_element28.forwardRef)(AnchorOnlyItem));
1556 10929 var router_link_item_default = RouterLinkItem;
1557 10930
1558 10931 // packages/boot/build-module/components/navigation/items.mjs
1559 -var import_element6 = __toESM(require_element(), 1);
1560 -var import_components5 = __toESM(require_components(), 1);
1561 -var import_primitives12 = __toESM(require_primitives(), 1);
1562 -var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
10932 +var import_element29 = __toESM(require_element(), 1);
10933 +var import_components3 = __toESM(require_components(), 1);
10934 +var import_primitives10 = __toESM(require_primitives(), 1);
10935 +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
1563 10936 function isSvg(element) {
1564 - return (0, import_element6.isValidElement)(element) && (element.type === import_primitives12.SVG || element.type === "svg");
10937 + return (0, import_element29.isValidElement)(element) && (element.type === import_primitives10.SVG || element.type === "svg");
1565 10938 }
1566 10939 function wrapIcon(icon, shouldShowPlaceholder = true) {
1567 10940 if (isSvg(icon)) {
1568 - return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components5.Icon, { icon });
10941 + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components3.Icon, { icon });
1569 10942 }
1570 10943 if (typeof icon === "string" && icon.startsWith("dashicons-")) {
1571 10944 const iconKey = icon.replace(
1572 10945 /^dashicons-/,
@@ -1571,10 +10944,10 @@
1571 10944 const iconKey = icon.replace(
1572 10945 /^dashicons-/,
1573 10946 ""
1574 10947 );
1575 - return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1576 - import_components5.Dashicon,
10948 + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
10949 + import_components3.Dashicon,
1577 10950 {
1578 10951 style: { padding: "2px" },
1579 10952 icon: iconKey,
1580 10953 "aria-hidden": "true"
@@ -1581,9 +10954,9 @@
1581 10954 }
1582 10955 );
1583 10956 }
1584 10957 if (typeof icon === "string" && icon.startsWith("data:")) {
1585 - return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10958 + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1586 10959 "img",
1587 10960 {
1588 10961 src: icon,
1589 10962 alt: "",
@@ -1600,9 +10973,9 @@
1600 10973 if (icon) {
1601 10974 return icon;
1602 10975 }
1603 10976 if (shouldShowPlaceholder) {
1604 - return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
10977 + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1605 10978 "div",
1606 10979 {
1607 10980 style: { width: "24px", height: "24px" },
1608 10981 "aria-hidden": "true"
@@ -1612,15 +10985,93 @@
1612 10985 return null;
1613 10986 }
1614 10987
1615 10988 // packages/boot/build-module/components/navigation/navigation-item/index.mjs
1616 -var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
1617 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='26b8e27d3f']")) {
1618 - const style = document.createElement("style");
1619 - style.setAttribute("data-wp-hash", "26b8e27d3f");
1620 - style.appendChild(document.createTextNode('.boot-navigation-item.components-item{align-items:center;border:none;color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);display:flex;font-family:-apple-system,"system-ui",Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:400;line-height:20px;margin-block-end:4px;margin-inline:12px;min-height:32px;padding-block:0;padding-inline:4px;width:calc(100% - 24px)}.boot-dropdown-item__children .boot-navigation-item.components-item{min-height:24px}.boot-navigation-item.components-item{border-radius:var(--wpds-border-radius-sm,2px)}.boot-navigation-item.components-item.active,.boot-navigation-item.components-item:focus,.boot-navigation-item.components-item:hover,.boot-navigation-item.components-item[aria-current=true]{color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}.boot-navigation-item.components-item.active{font-weight:499}.boot-navigation-item.components-item svg:last-child{padding:4px}.boot-navigation-item.components-item[aria-current=true]{color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));font-weight:499}.boot-navigation-item.components-item:focus-visible{transform:translateZ(0)}.boot-navigation-item.components-item.with-suffix{padding-right:16px}'));
1621 - document.head.appendChild(style);
10989 +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
10990 +var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash";
10991 +function getRuntime17() {
10992 + const globalScope = globalThis;
10993 + if (globalScope.__wpStyleRuntime) {
10994 + return globalScope.__wpStyleRuntime;
10995 + }
10996 + globalScope.__wpStyleRuntime = {
10997 + documents: /* @__PURE__ */ new Map(),
10998 + styles: /* @__PURE__ */ new Map(),
10999 + injectedStyles: /* @__PURE__ */ new WeakMap()
11000 + };
11001 + if (typeof document !== "undefined") {
11002 + registerDocument17(document);
11003 + }
11004 + return globalScope.__wpStyleRuntime;
1622 11005 }
11006 +function documentContainsStyleHash17(targetDocument, hash) {
11007 + if (!targetDocument.head) {
11008 + return false;
11009 + }
11010 + for (const style of targetDocument.head.querySelectorAll(
11011 + `style[${STYLE_HASH_ATTRIBUTE17}]`
11012 + )) {
11013 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) {
11014 + return true;
11015 + }
11016 + }
11017 + return false;
11018 +}
11019 +function injectStyle17(targetDocument, hash, css) {
11020 + if (!targetDocument.head) {
11021 + return;
11022 + }
11023 + const runtime = getRuntime17();
11024 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
11025 + if (!injectedStyles) {
11026 + injectedStyles = /* @__PURE__ */ new Set();
11027 + runtime.injectedStyles.set(targetDocument, injectedStyles);
11028 + }
11029 + if (injectedStyles.has(hash)) {
11030 + return;
11031 + }
11032 + if (documentContainsStyleHash17(targetDocument, hash)) {
11033 + injectedStyles.add(hash);
11034 + return;
11035 + }
11036 + const style = targetDocument.createElement("style");
11037 + style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash);
11038 + style.appendChild(targetDocument.createTextNode(css));
11039 + targetDocument.head.appendChild(style);
11040 + injectedStyles.add(hash);
11041 +}
11042 +function registerDocument17(targetDocument) {
11043 + const runtime = getRuntime17();
11044 + runtime.documents.set(
11045 + targetDocument,
11046 + (runtime.documents.get(targetDocument) ?? 0) + 1
11047 + );
11048 + for (const [hash, css] of runtime.styles) {
11049 + injectStyle17(targetDocument, hash, css);
11050 + }
11051 + return () => {
11052 + const count = runtime.documents.get(targetDocument);
11053 + if (count === void 0) {
11054 + return;
11055 + }
11056 + if (count <= 1) {
11057 + runtime.documents.delete(targetDocument);
11058 + return;
11059 + }
11060 + runtime.documents.set(targetDocument, count - 1);
11061 + };
11062 +}
11063 +function registerStyle17(hash, css) {
11064 + const runtime = getRuntime17();
11065 + runtime.styles.set(hash, css);
11066 + for (const targetDocument of runtime.documents.keys()) {
11067 + injectStyle17(targetDocument, hash, css);
11068 + }
11069 +}
11070 +if (typeof process === "undefined" || true) {
11071 + registerStyle17("74796ab776", ".d5331ded354c389a__item.d5331ded354c389a__item{align-items:center;border:none;border-radius:var(--wpds-border-radius-sm,2px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:-apple-system,system-ui,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:var(--wpds-typography-font-weight-default,400);line-height:20px;margin-block-end:4px;margin-inline:12px;min-height:32px;padding-block:0;padding-inline:4px;width:calc(100% - 24px)}.d5331ded354c389a__item.d5331ded354c389a__item:focus,.d5331ded354c389a__item.d5331ded354c389a__item:hover,.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=true]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}.d5331ded354c389a__item.d5331ded354c389a__item svg:last-child{padding:4px}.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=page],.d5331ded354c389a__item.d5331ded354c389a__item[data-status=active]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));font-weight:var(--wpds-typography-font-weight-emphasis,600)}.d5331ded354c389a__item.d5331ded354c389a__item:focus-visible{transform:translateZ(0)}.d5331ded354c389a__item._44ce5374f19a05f7__is-compact{min-height:24px}");
11072 +}
11073 +var style_module_default = { "item": "d5331ded354c389a__item", "is-compact": "_44ce5374f19a05f7__is-compact" };
1623 11074 function NavigationItem({
1624 11075 className,
1625 11076 icon,
1626 11077 shouldShowPlaceholder = true,
@@ -1629,37 +11080,114 @@
1629 11080 }) {
1630 11081 const isExternal = !String(
1631 11082 new URL(to, window.location.origin)
1632 11083 ).startsWith(window.location.origin);
1633 - const content = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_components6.__experimentalHStack, { justify: "flex-start", spacing: 2, style: { flexGrow: "1" }, children: [
11084 + const content = /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_components4.__experimentalHStack, { justify: "flex-start", spacing: 2, style: { flexGrow: "1" }, children: [
1634 11085 wrapIcon(icon, shouldShowPlaceholder),
1635 - /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components6.FlexBlock, { children })
11086 + /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_components4.FlexBlock, { children })
1636 11087 ] });
1637 11088 if (isExternal) {
1638 - return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1639 - import_components6.__experimentalItem,
11089 + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
11090 + import_components4.__experimentalItem,
1640 11091 {
1641 11092 as: "a",
1642 11093 href: to,
1643 - className: clsx_default("boot-navigation-item", className),
11094 + className: clsx_default(style_module_default.item, className),
1644 11095 children: content
1645 11096 }
1646 11097 );
1647 11098 }
1648 - return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1649 - router_link_item_default,
1650 - {
1651 - to,
1652 - className: clsx_default("boot-navigation-item", className),
1653 - children: content
11099 + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(router_link_item_default, { to, className: clsx_default(style_module_default.item, className), children: content });
11100 +}
11101 +
11102 +// packages/boot/build-module/components/navigation/drilldown-item/index.mjs
11103 +var import_components5 = __toESM(require_components(), 1);
11104 +var import_i18n5 = __toESM(require_i18n(), 1);
11105 +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
11106 +var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash";
11107 +function getRuntime18() {
11108 + const globalScope = globalThis;
11109 + if (globalScope.__wpStyleRuntime) {
11110 + return globalScope.__wpStyleRuntime;
11111 + }
11112 + globalScope.__wpStyleRuntime = {
11113 + documents: /* @__PURE__ */ new Map(),
11114 + styles: /* @__PURE__ */ new Map(),
11115 + injectedStyles: /* @__PURE__ */ new WeakMap()
11116 + };
11117 + if (typeof document !== "undefined") {
11118 + registerDocument18(document);
11119 + }
11120 + return globalScope.__wpStyleRuntime;
11121 +}
11122 +function documentContainsStyleHash18(targetDocument, hash) {
11123 + if (!targetDocument.head) {
11124 + return false;
11125 + }
11126 + for (const style of targetDocument.head.querySelectorAll(
11127 + `style[${STYLE_HASH_ATTRIBUTE18}]`
11128 + )) {
11129 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) {
11130 + return true;
1654 11131 }
11132 + }
11133 + return false;
11134 +}
11135 +function injectStyle18(targetDocument, hash, css) {
11136 + if (!targetDocument.head) {
11137 + return;
11138 + }
11139 + const runtime = getRuntime18();
11140 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
11141 + if (!injectedStyles) {
11142 + injectedStyles = /* @__PURE__ */ new Set();
11143 + runtime.injectedStyles.set(targetDocument, injectedStyles);
11144 + }
11145 + if (injectedStyles.has(hash)) {
11146 + return;
11147 + }
11148 + if (documentContainsStyleHash18(targetDocument, hash)) {
11149 + injectedStyles.add(hash);
11150 + return;
11151 + }
11152 + const style = targetDocument.createElement("style");
11153 + style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash);
11154 + style.appendChild(targetDocument.createTextNode(css));
11155 + targetDocument.head.appendChild(style);
11156 + injectedStyles.add(hash);
11157 +}
11158 +function registerDocument18(targetDocument) {
11159 + const runtime = getRuntime18();
11160 + runtime.documents.set(
11161 + targetDocument,
11162 + (runtime.documents.get(targetDocument) ?? 0) + 1
1655 11163 );
11164 + for (const [hash, css] of runtime.styles) {
11165 + injectStyle18(targetDocument, hash, css);
11166 + }
11167 + return () => {
11168 + const count = runtime.documents.get(targetDocument);
11169 + if (count === void 0) {
11170 + return;
11171 + }
11172 + if (count <= 1) {
11173 + runtime.documents.delete(targetDocument);
11174 + return;
11175 + }
11176 + runtime.documents.set(targetDocument, count - 1);
11177 + };
1656 11178 }
1657 -
1658 -// packages/boot/build-module/components/navigation/drilldown-item/index.mjs
1659 -var import_components7 = __toESM(require_components(), 1);
1660 -var import_i18n3 = __toESM(require_i18n(), 1);
1661 -var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
11179 +function registerStyle18(hash, css) {
11180 + const runtime = getRuntime18();
11181 + runtime.styles.set(hash, css);
11182 + for (const targetDocument of runtime.documents.keys()) {
11183 + injectStyle18(targetDocument, hash, css);
11184 + }
11185 +}
11186 +if (typeof process === "undefined" || true) {
11187 + registerStyle18("74796ab776", ".d5331ded354c389a__item.d5331ded354c389a__item{align-items:center;border:none;border-radius:var(--wpds-border-radius-sm,2px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:-apple-system,system-ui,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:var(--wpds-typography-font-weight-default,400);line-height:20px;margin-block-end:4px;margin-inline:12px;min-height:32px;padding-block:0;padding-inline:4px;width:calc(100% - 24px)}.d5331ded354c389a__item.d5331ded354c389a__item:focus,.d5331ded354c389a__item.d5331ded354c389a__item:hover,.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=true]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}.d5331ded354c389a__item.d5331ded354c389a__item svg:last-child{padding:4px}.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=page],.d5331ded354c389a__item.d5331ded354c389a__item[data-status=active]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));font-weight:var(--wpds-typography-font-weight-emphasis,600)}.d5331ded354c389a__item.d5331ded354c389a__item:focus-visible{transform:translateZ(0)}.d5331ded354c389a__item._44ce5374f19a05f7__is-compact{min-height:24px}");
11188 +}
11189 +var style_module_default2 = { "item": "d5331ded354c389a__item", "is-compact": "_44ce5374f19a05f7__is-compact" };
1662 11190 function DrilldownItem({
1663 11191 className,
1664 11192 id,
1665 11193 icon,
@@ -1670,15 +11198,15 @@
1670 11198 const handleClick = (e) => {
1671 11199 e.preventDefault();
1672 11200 onNavigate({ id, direction: "forward" });
1673 11201 };
1674 - return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1675 - import_components7.__experimentalItem,
11202 + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
11203 + import_components5.__experimentalItem,
1676 11204 {
1677 - className: clsx_default("boot-navigation-item", className),
11205 + className: clsx_default(style_module_default2.item, className),
1678 11206 onClick: handleClick,
1679 - children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1680 - import_components7.__experimentalHStack,
11207 + children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
11208 + import_components5.__experimentalHStack,
1681 11209 {
1682 11210 justify: "flex-start",
1683 11211 spacing: 2,
1684 11212 style: { flexGrow: "1" },
@@ -1683,13 +11211,13 @@
1683 11211 spacing: 2,
1684 11212 style: { flexGrow: "1" },
1685 11213 children: [
1686 11214 wrapIcon(icon, shouldShowPlaceholder),
1687 - /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_components7.FlexBlock, { children }),
1688 - /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1689 - import_components7.Icon,
11215 + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_components5.FlexBlock, { children }),
11216 + /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
11217 + import_components5.Icon,
1690 11218 {
1691 - icon: (0, import_i18n3.isRTL)() ? chevron_left_small_default : chevron_right_small_default
11219 + icon: (0, import_i18n5.isRTL)() ? chevron_left_small_default : chevron_right_small_default
1692 11220 }
1693 11221 )
1694 11222 ]
1695 11223 }
@@ -1698,18 +11226,100 @@
1698 11226 );
1699 11227 }
1700 11228
1701 11229 // packages/boot/build-module/components/navigation/dropdown-item/index.mjs
1702 -var import_components8 = __toESM(require_components(), 1);
11230 +var import_components6 = __toESM(require_components(), 1);
1703 11231 var import_compose = __toESM(require_compose(), 1);
1704 -var import_data4 = __toESM(require_data(), 1);
1705 -var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
1706 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='608eff82f3']")) {
1707 - const style = document.createElement("style");
1708 - style.setAttribute("data-wp-hash", "608eff82f3");
1709 - style.appendChild(document.createTextNode(".boot-dropdown-item__children{display:flex;flex-direction:column;margin-block-end:2px;margin-block-start:-2px;margin-inline-start:30px;overflow:hidden;padding:2px}.boot-dropdown-item__chevron.is-up{transform:rotate(180deg)}"));
1710 - document.head.appendChild(style);
11232 +var import_data2 = __toESM(require_data(), 1);
11233 +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
11234 +var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash";
11235 +function getRuntime19() {
11236 + const globalScope = globalThis;
11237 + if (globalScope.__wpStyleRuntime) {
11238 + return globalScope.__wpStyleRuntime;
11239 + }
11240 + globalScope.__wpStyleRuntime = {
11241 + documents: /* @__PURE__ */ new Map(),
11242 + styles: /* @__PURE__ */ new Map(),
11243 + injectedStyles: /* @__PURE__ */ new WeakMap()
11244 + };
11245 + if (typeof document !== "undefined") {
11246 + registerDocument19(document);
11247 + }
11248 + return globalScope.__wpStyleRuntime;
1711 11249 }
11250 +function documentContainsStyleHash19(targetDocument, hash) {
11251 + if (!targetDocument.head) {
11252 + return false;
11253 + }
11254 + for (const style of targetDocument.head.querySelectorAll(
11255 + `style[${STYLE_HASH_ATTRIBUTE19}]`
11256 + )) {
11257 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) {
11258 + return true;
11259 + }
11260 + }
11261 + return false;
11262 +}
11263 +function injectStyle19(targetDocument, hash, css) {
11264 + if (!targetDocument.head) {
11265 + return;
11266 + }
11267 + const runtime = getRuntime19();
11268 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
11269 + if (!injectedStyles) {
11270 + injectedStyles = /* @__PURE__ */ new Set();
11271 + runtime.injectedStyles.set(targetDocument, injectedStyles);
11272 + }
11273 + if (injectedStyles.has(hash)) {
11274 + return;
11275 + }
11276 + if (documentContainsStyleHash19(targetDocument, hash)) {
11277 + injectedStyles.add(hash);
11278 + return;
11279 + }
11280 + const style = targetDocument.createElement("style");
11281 + style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash);
11282 + style.appendChild(targetDocument.createTextNode(css));
11283 + targetDocument.head.appendChild(style);
11284 + injectedStyles.add(hash);
11285 +}
11286 +function registerDocument19(targetDocument) {
11287 + const runtime = getRuntime19();
11288 + runtime.documents.set(
11289 + targetDocument,
11290 + (runtime.documents.get(targetDocument) ?? 0) + 1
11291 + );
11292 + for (const [hash, css] of runtime.styles) {
11293 + injectStyle19(targetDocument, hash, css);
11294 + }
11295 + return () => {
11296 + const count = runtime.documents.get(targetDocument);
11297 + if (count === void 0) {
11298 + return;
11299 + }
11300 + if (count <= 1) {
11301 + runtime.documents.delete(targetDocument);
11302 + return;
11303 + }
11304 + runtime.documents.set(targetDocument, count - 1);
11305 + };
11306 +}
11307 +function registerStyle19(hash, css) {
11308 + const runtime = getRuntime19();
11309 + runtime.styles.set(hash, css);
11310 + for (const targetDocument of runtime.documents.keys()) {
11311 + injectStyle19(targetDocument, hash, css);
11312 + }
11313 +}
11314 +if (typeof process === "undefined" || true) {
11315 + registerStyle19("74796ab776", ".d5331ded354c389a__item.d5331ded354c389a__item{align-items:center;border:none;border-radius:var(--wpds-border-radius-sm,2px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:-apple-system,system-ui,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:var(--wpds-typography-font-weight-default,400);line-height:20px;margin-block-end:4px;margin-inline:12px;min-height:32px;padding-block:0;padding-inline:4px;width:calc(100% - 24px)}.d5331ded354c389a__item.d5331ded354c389a__item:focus,.d5331ded354c389a__item.d5331ded354c389a__item:hover,.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=true]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}.d5331ded354c389a__item.d5331ded354c389a__item svg:last-child{padding:4px}.d5331ded354c389a__item.d5331ded354c389a__item[aria-current=page],.d5331ded354c389a__item.d5331ded354c389a__item[data-status=active]{color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));font-weight:var(--wpds-typography-font-weight-emphasis,600)}.d5331ded354c389a__item.d5331ded354c389a__item:focus-visible{transform:translateZ(0)}.d5331ded354c389a__item._44ce5374f19a05f7__is-compact{min-height:24px}");
11316 +}
11317 +var style_module_default3 = { "item": "d5331ded354c389a__item", "is-compact": "_44ce5374f19a05f7__is-compact" };
11318 +if (typeof process === "undefined" || true) {
11319 + registerStyle19("1a6b086e6c", "._093b894bfb82e8de__dropdown{display:block}._5954dba25ac6e16f__dropdown-children{display:flex;flex-direction:column;margin-block-end:2px;margin-block-start:-2px;margin-inline-start:30px;overflow:hidden;padding:2px}._9a14116ec9dae0e2__chevron.a9ebdaa3f36d6986__is-up{transform:rotate(180deg)}");
11320 +}
11321 +var style_module_default22 = { "dropdown": "_093b894bfb82e8de__dropdown", "dropdown-children": "_5954dba25ac6e16f__dropdown-children", "chevron": "_9a14116ec9dae0e2__chevron", "is-up": "a9ebdaa3f36d6986__is-up" };
1712 11322 var ANIMATION_DURATION = 0.2;
1713 11323 function DropdownItem({
1714 11324 className,
1715 11325 id,
@@ -1717,11 +11327,11 @@
1717 11327 children,
1718 11328 isExpanded,
1719 11329 onToggle
1720 11330 }) {
1721 - const menuItems = (0, import_data4.useSelect)(
11331 + const menuItems = (0, import_data2.useSelect)(
1722 11332 (select) => (
1723 - // @ts-ignore
11333 + // @ts-expect-error Store types are not available when selecting by store name.
1724 11334 select(STORE_NAME).getMenuItems()
1725 11335 ),
1726 11336 []
1727 11337 );
@@ -1726,13 +11336,13 @@
1726 11336 []
1727 11337 );
1728 11338 const items = menuItems.filter((item) => item.parent === id);
1729 11339 const disableMotion = (0, import_compose.useReducedMotion)();
1730 - return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "boot-dropdown-item", children: [
1731 - /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1732 - import_components8.__experimentalItem,
11340 + return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: style_module_default22.dropdown, children: [
11341 + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
11342 + import_components6.__experimentalItem,
1733 11343 {
1734 - className: clsx_default("boot-navigation-item", className),
11344 + className: clsx_default(style_module_default3.item, className),
1735 11345 onClick: (e) => {
1736 11346 e.preventDefault();
1737 11347 e.stopPropagation();
1738 11348 onToggle();
@@ -1737,10 +11347,10 @@
1737 11347 e.stopPropagation();
1738 11348 onToggle();
1739 11349 },
1740 11350 onMouseDown: (e) => e.preventDefault(),
1741 - children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1742 - import_components8.__experimentalHStack,
11351 + children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
11352 + import_components6.__experimentalHStack,
1743 11353 {
1744 11354 justify: "flex-start",
1745 11355 spacing: 2,
1746 11356 style: { flexGrow: "1" },
@@ -1745,15 +11355,15 @@
1745 11355 spacing: 2,
1746 11356 style: { flexGrow: "1" },
1747 11357 children: [
1748 11358 wrapIcon(icon, false),
1749 - /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components8.FlexBlock, { children }),
1750 - /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1751 - import_components8.Icon,
11359 + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_components6.FlexBlock, { children }),
11360 + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
11361 + import_components6.Icon,
1752 11362 {
1753 11363 icon: chevron_down_small_default,
1754 - className: clsx_default("boot-dropdown-item__chevron", {
1755 - "is-up": isExpanded
11364 + className: clsx_default(style_module_default22.chevron, {
11365 + [style_module_default22["is-up"]]: isExpanded
1756 11366 })
1757 11367 }
1758 11368 )
1759 11369 ]
@@ -1760,10 +11370,10 @@
1760 11370 }
1761 11371 )
1762 11372 }
1763 11373 ),
1764 - /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components8.__unstableAnimatePresence, { initial: false, children: isExpanded && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1765 - import_components8.__unstableMotion.div,
11374 + /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_components6.__unstableAnimatePresence, { initial: false, children: isExpanded && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
11375 + import_components6.__unstableMotion.div,
1766 11376 {
1767 11377 initial: { height: 0 },
1768 11378 animate: { height: "auto" },
1769 11379 exit: { height: 0 },
@@ -1771,17 +11381,18 @@
1771 11381 type: "tween",
1772 11382 duration: disableMotion ? 0 : ANIMATION_DURATION,
1773 11383 ease: "easeOut"
1774 11384 },
1775 - className: "boot-dropdown-item__children",
1776 - children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
11385 + className: style_module_default22["dropdown-children"],
11386 + children: items.map((item, index2) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
1777 11387 NavigationItem,
1778 11388 {
11389 + className: style_module_default3["is-compact"],
1779 11390 to: item.to,
1780 11391 shouldShowPlaceholder: false,
1781 11392 children: item.label
1782 11393 },
1783 - index
11394 + index2
1784 11395 ))
1785 11396 }
1786 11397 ) })
1787 11398 ] });
@@ -1787,18 +11398,96 @@
1787 11398 ] });
1788 11399 }
1789 11400
1790 11401 // packages/boot/build-module/components/navigation/navigation-screen/index.mjs
1791 -var import_components9 = __toESM(require_components(), 1);
1792 -var import_i18n4 = __toESM(require_i18n(), 1);
11402 +var import_components7 = __toESM(require_components(), 1);
11403 +var import_i18n6 = __toESM(require_i18n(), 1);
1793 11404 var import_compose2 = __toESM(require_compose(), 1);
1794 -var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
1795 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='c5e42e1495']")) {
1796 - const style = document.createElement("style");
1797 - style.setAttribute("data-wp-hash", "c5e42e1495");
1798 - style.appendChild(document.createTextNode(".boot-navigation-screen{padding-block-end:4px}.boot-navigation-screen .components-text{color:var(--wpds-color-fg-content-neutral,#1e1e1e)}.boot-navigation-screen__title-icon{padding:12px 16px 8px;position:sticky;top:0}.boot-navigation-screen__title{flex-grow:1;overflow-wrap:break-word}.boot-navigation-screen__title.boot-navigation-screen__title,.boot-navigation-screen__title.boot-navigation-screen__title .boot-navigation-screen__title{color:var(--wpds-color-fg-content-neutral,#1e1e1e);line-height:32px}.boot-navigation-screen__actions{display:flex;flex-shrink:0}"));
1799 - document.head.appendChild(style);
11405 +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
11406 +var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash";
11407 +function getRuntime20() {
11408 + const globalScope = globalThis;
11409 + if (globalScope.__wpStyleRuntime) {
11410 + return globalScope.__wpStyleRuntime;
11411 + }
11412 + globalScope.__wpStyleRuntime = {
11413 + documents: /* @__PURE__ */ new Map(),
11414 + styles: /* @__PURE__ */ new Map(),
11415 + injectedStyles: /* @__PURE__ */ new WeakMap()
11416 + };
11417 + if (typeof document !== "undefined") {
11418 + registerDocument20(document);
11419 + }
11420 + return globalScope.__wpStyleRuntime;
1800 11421 }
11422 +function documentContainsStyleHash20(targetDocument, hash) {
11423 + if (!targetDocument.head) {
11424 + return false;
11425 + }
11426 + for (const style of targetDocument.head.querySelectorAll(
11427 + `style[${STYLE_HASH_ATTRIBUTE20}]`
11428 + )) {
11429 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) {
11430 + return true;
11431 + }
11432 + }
11433 + return false;
11434 +}
11435 +function injectStyle20(targetDocument, hash, css) {
11436 + if (!targetDocument.head) {
11437 + return;
11438 + }
11439 + const runtime = getRuntime20();
11440 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
11441 + if (!injectedStyles) {
11442 + injectedStyles = /* @__PURE__ */ new Set();
11443 + runtime.injectedStyles.set(targetDocument, injectedStyles);
11444 + }
11445 + if (injectedStyles.has(hash)) {
11446 + return;
11447 + }
11448 + if (documentContainsStyleHash20(targetDocument, hash)) {
11449 + injectedStyles.add(hash);
11450 + return;
11451 + }
11452 + const style = targetDocument.createElement("style");
11453 + style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash);
11454 + style.appendChild(targetDocument.createTextNode(css));
11455 + targetDocument.head.appendChild(style);
11456 + injectedStyles.add(hash);
11457 +}
11458 +function registerDocument20(targetDocument) {
11459 + const runtime = getRuntime20();
11460 + runtime.documents.set(
11461 + targetDocument,
11462 + (runtime.documents.get(targetDocument) ?? 0) + 1
11463 + );
11464 + for (const [hash, css] of runtime.styles) {
11465 + injectStyle20(targetDocument, hash, css);
11466 + }
11467 + return () => {
11468 + const count = runtime.documents.get(targetDocument);
11469 + if (count === void 0) {
11470 + return;
11471 + }
11472 + if (count <= 1) {
11473 + runtime.documents.delete(targetDocument);
11474 + return;
11475 + }
11476 + runtime.documents.set(targetDocument, count - 1);
11477 + };
11478 +}
11479 +function registerStyle20(hash, css) {
11480 + const runtime = getRuntime20();
11481 + runtime.styles.set(hash, css);
11482 + for (const targetDocument of runtime.documents.keys()) {
11483 + injectStyle20(targetDocument, hash, css);
11484 + }
11485 +}
11486 +if (typeof process === "undefined" || true) {
11487 + registerStyle20("9bfc8fef50", ".c93eb5f7b870f29c__screen{padding-block-end:4px}.c93eb5f7b870f29c__screen .components-text{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.bee113ef4a391bcd__title-icon{padding-block-end:8px;padding-block-start:12px;padding-inline-end:16px;padding-inline-start:16px;position:sticky;top:0}._2f6050d2407c9dee__title{flex-grow:1;overflow-wrap:break-word}._2f6050d2407c9dee__title._2f6050d2407c9dee__title,._2f6050d2407c9dee__title._2f6050d2407c9dee__title ._2f6050d2407c9dee__title{color:var(--wpds-color-foreground-content-neutral,#1e1e1e);line-height:32px}.e78f7a9cf7e91164__actions{display:flex;flex-shrink:0}");
11488 +}
11489 +var style_module_default4 = { "screen": "c93eb5f7b870f29c__screen", "title-icon": "bee113ef4a391bcd__title-icon", "title": "_2f6050d2407c9dee__title", "actions": "e78f7a9cf7e91164__actions" };
1801 11490 var ANIMATION_DURATION2 = 0.3;
1802 11491 var slideVariants = {
1803 11492 initial: (direction) => ({
1804 11493 x: direction === "forward" ? 100 : -100,
@@ -1824,18 +11513,18 @@
1824 11513 backButtonRef,
1825 11514 navigationKey,
1826 11515 onNavigate
1827 11516 }) {
1828 - const icon = (0, import_i18n4.isRTL)() ? chevron_right_default : chevron_left_default;
11517 + const icon = (0, import_i18n6.isRTL)() ? chevron_right_default : chevron_left_default;
1829 11518 const disableMotion = (0, import_compose2.useReducedMotion)();
1830 11519 const handleBackClick = (e) => {
1831 11520 e.preventDefault();
1832 11521 onNavigate({ id: backMenuItem, direction: "backward" });
1833 11522 };
1834 - return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
11523 + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
1835 11524 "div",
1836 11525 {
1837 - className: "boot-navigation-screen",
11526 + className: style_module_default4.screen,
1838 11527 style: {
1839 11528 overflow: "hidden",
1840 11529 position: "relative",
1841 11530 display: "grid",
@@ -1841,10 +11530,10 @@
1841 11530 display: "grid",
1842 11531 gridTemplateColumns: "1fr",
1843 11532 gridTemplateRows: "1fr"
1844 11533 },
1845 - children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components9.__unstableAnimatePresence, { initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1846 - import_components9.__unstableMotion.div,
11534 + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components7.__unstableAnimatePresence, { initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
11535 + import_components7.__unstableMotion.div,
1847 11536 {
1848 11537 custom: animationDirection,
1849 11538 variants: slideVariants,
1850 11539 initial: "initial",
@@ -1860,39 +11549,32 @@
1860 11549 gridColumn: "1",
1861 11550 gridRow: "1"
1862 11551 },
1863 11552 children: [
1864 - /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1865 - import_components9.__experimentalHStack,
1866 - {
1867 - spacing: 2,
1868 - className: "boot-navigation-screen__title-icon",
1869 - children: [
1870 - !isRoot && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1871 - import_components9.Button,
1872 - {
1873 - ref: backButtonRef,
1874 - icon,
1875 - onClick: handleBackClick,
1876 - label: (0, import_i18n4.__)("Back"),
1877 - size: "small",
1878 - variant: "tertiary"
1879 - }
1880 - ),
1881 - /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1882 - import_components9.__experimentalHeading,
1883 - {
1884 - className: "boot-navigation-screen__title",
1885 - level: 1,
1886 - size: "15px",
1887 - children: title
1888 - }
1889 - ),
1890 - actions && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "boot-navigation-screen__actions", children: actions })
1891 - ]
1892 - }
1893 - ),
1894 - description && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "boot-navigation-screen__description", children: description }),
11553 + /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_components7.__experimentalHStack, { spacing: 2, className: style_module_default4["title-icon"], children: [
11554 + !isRoot && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
11555 + import_components7.Button,
11556 + {
11557 + ref: backButtonRef,
11558 + icon,
11559 + onClick: handleBackClick,
11560 + label: (0, import_i18n6.__)("Back"),
11561 + size: "small",
11562 + variant: "tertiary"
11563 + }
11564 + ),
11565 + /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
11566 + import_components7.__experimentalHeading,
11567 + {
11568 + className: style_module_default4.title,
11569 + level: 1,
11570 + size: "15px",
11571 + children: title
11572 + }
11573 + ),
11574 + actions && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: style_module_default4.actions, children: actions })
11575 + ] }),
11576 + description && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: description }),
1895 11577 content
1896 11578 ]
1897 11579 },
1898 11580 navigationKey
@@ -1901,11 +11583,11 @@
1901 11583 );
1902 11584 }
1903 11585
1904 11586 // packages/boot/build-module/components/navigation/use-sidebar-parent.mjs
1905 -var import_element7 = __toESM(require_element(), 1);
1906 -var import_data5 = __toESM(require_data(), 1);
1907 -import { privateApis as routePrivateApis3 } from "@wordpress/route";
11587 +var import_element30 = __toESM(require_element(), 1);
11588 +var import_data3 = __toESM(require_data(), 1);
11589 +import { privateApis as routePrivateApis2 } from "@wordpress/route";
1908 11590
1909 11591 // packages/boot/build-module/components/navigation/path-matching.mjs
1910 11592 var isValidParentPath = (currentPath, menuPath) => {
1911 11593 if (!menuPath || menuPath === currentPath) {
@@ -1979,15 +11661,15 @@
1979 11661 return void 0;
1980 11662 };
1981 11663
1982 11664 // packages/boot/build-module/components/navigation/use-sidebar-parent.mjs
1983 -var { useRouter: useRouter2, useMatches } = unlock(routePrivateApis3);
11665 +var { useRouter, useMatches } = unlock2(routePrivateApis2);
1984 11666 function useSidebarParent() {
1985 11667 const matches = useMatches();
1986 - const router = useRouter2();
1987 - const menuItems = (0, import_data5.useSelect)(
11668 + const router = useRouter();
11669 + const menuItems = (0, import_data3.useSelect)(
1988 11670 (select) => (
1989 - // @ts-ignore
11671 + // @ts-expect-error Store types are not available when selecting by store name.
1990 11672 select(STORE_NAME).getMenuItems()
1991 11673 ),
1992 11674 []
1993 11675 );
@@ -1994,13 +11676,13 @@
1994 11676 const currentPath = matches[matches.length - 1].pathname.slice(
1995 11677 router.options.basepath?.length ?? 0
1996 11678 );
1997 11679 const currentMenuItem = findClosestMenuItem(currentPath, menuItems);
1998 - const [parentId, setParentId] = (0, import_element7.useState)(
11680 + const [parentId, setParentId] = (0, import_element30.useState)(
1999 11681 findDrilldownParent(currentMenuItem?.id, menuItems)
2000 11682 );
2001 - const [parentDropdownId, setParentDropdownId] = (0, import_element7.useState)(findDropdownParent(currentMenuItem?.id, menuItems));
2002 - (0, import_element7.useEffect)(() => {
11683 + const [parentDropdownId, setParentDropdownId] = (0, import_element30.useState)(findDropdownParent(currentMenuItem?.id, menuItems));
11684 + (0, import_element30.useEffect)(() => {
2003 11685 const matchedMenuItem = findClosestMenuItem(currentPath, menuItems);
2004 11686 const updatedParentId = findDrilldownParent(
2005 11687 matchedMenuItem?.id,
2006 11688 menuItems
@@ -2020,21 +11702,21 @@
2020 11702 ];
2021 11703 }
2022 11704
2023 11705 // packages/boot/build-module/components/navigation/index.mjs
2024 -var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
2025 -function Navigation() {
2026 - const backButtonRef = (0, import_element8.useRef)(null);
2027 - const [animationDirection, setAnimationDirection] = (0, import_element8.useState)(null);
11706 +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
11707 +function Navigation2() {
11708 + const backButtonRef = (0, import_element31.useRef)(null);
11709 + const [animationDirection, setAnimationDirection] = (0, import_element31.useState)(null);
2028 11710 const [parentId, setParentId, parentDropdownId, setParentDropdownId] = useSidebarParent();
2029 - const menuItems = (0, import_data6.useSelect)(
11711 + const menuItems = (0, import_data4.useSelect)(
2030 11712 (select) => (
2031 - // @ts-ignore
11713 + // @ts-expect-error Store types are not available when selecting by store name.
2032 11714 select(STORE_NAME).getMenuItems()
2033 11715 ),
2034 11716 []
2035 11717 );
2036 - const parent = (0, import_element8.useMemo)(
11718 + const parent = (0, import_element31.useMemo)(
2037 11719 () => menuItems.find((item) => item.id === parentId),
2038 11720 [menuItems, parentId]
2039 11721 );
2040 11722 const navigationKey = parent ? `drilldown-${parent.id}` : "root";
@@ -2049,14 +11731,14 @@
2049 11731 setParentDropdownId(
2050 11732 parentDropdownId === dropdownId ? void 0 : dropdownId
2051 11733 );
2052 11734 };
2053 - const items = (0, import_element8.useMemo)(
11735 + const items = (0, import_element31.useMemo)(
2054 11736 () => menuItems.filter((item) => item.parent === parentId),
2055 11737 [menuItems, parentId]
2056 11738 );
2057 11739 const hasRealIcons = items.some((item) => !!item.icon);
2058 - return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
11740 + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2059 11741 NavigationScreen,
2060 11742 {
2061 11743 isRoot: !parent,
2062 11744 title: parent ? parent.label : "",
@@ -2064,15 +11746,14 @@
2064 11746 backButtonRef,
2065 11747 animationDirection: animationDirection || void 0,
2066 11748 navigationKey,
2067 11749 onNavigate: handleNavigate,
2068 - content: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children: items.map((item) => {
11750 + content: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { role: "list", children: items.map((item) => {
2069 11751 if (item.parent_type === "dropdown") {
2070 - return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
11752 + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2071 11753 DropdownItem,
2072 11754 {
2073 11755 id: item.id,
2074 - className: "boot-navigation-item",
2075 11756 icon: item.icon,
2076 11757 shouldShowPlaceholder: hasRealIcons,
2077 11758 isExpanded: parentDropdownId === item.id,
2078 11759 onToggle: () => handleDropdownToggle(item.id),
@@ -2081,9 +11762,9 @@
2081 11762 item.id
2082 11763 );
2083 11764 }
2084 11765 if (item.parent_type === "drilldown") {
2085 - return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
11766 + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2086 11767 DrilldownItem,
2087 11768 {
2088 11769 id: item.id,
2089 11770 icon: item.icon,
@@ -2093,9 +11774,9 @@
2093 11774 },
2094 11775 item.id
2095 11776 );
2096 11777 }
2097 - return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
11778 + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2098 11779 NavigationItem,
2099 11780 {
2100 11781 to: item.to,
2101 11782 icon: item.icon,
@@ -2107,41 +11788,41 @@
2107 11788 }) })
2108 11789 }
2109 11790 );
2110 11791 }
2111 -var navigation_default = Navigation;
11792 +var navigation_default2 = Navigation2;
2112 11793
2113 11794 // packages/boot/build-module/components/save-button/index.mjs
2114 -var import_element10 = __toESM(require_element(), 1);
2115 -var import_data8 = __toESM(require_data(), 1);
2116 -var import_i18n6 = __toESM(require_i18n(), 1);
2117 -var import_core_data4 = __toESM(require_core_data(), 1);
2118 -var import_keycodes2 = __toESM(require_keycodes(), 1);
11795 +var import_element33 = __toESM(require_element(), 1);
11796 +var import_data6 = __toESM(require_data(), 1);
11797 +var import_i18n8 = __toESM(require_i18n(), 1);
11798 +var import_core_data2 = __toESM(require_core_data(), 1);
11799 +var import_keycodes = __toESM(require_keycodes(), 1);
2119 11800 var import_editor2 = __toESM(require_editor(), 1);
2120 -var import_components10 = __toESM(require_components(), 1);
11801 +var import_components8 = __toESM(require_components(), 1);
2121 11802
2122 11803 // packages/boot/build-module/components/save-panel/use-save-shortcut.mjs
2123 -var import_element9 = __toESM(require_element(), 1);
11804 +var import_element32 = __toESM(require_element(), 1);
2124 11805 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1);
2125 -var import_i18n5 = __toESM(require_i18n(), 1);
2126 -var import_data7 = __toESM(require_data(), 1);
2127 -var import_core_data3 = __toESM(require_core_data(), 1);
11806 +var import_i18n7 = __toESM(require_i18n(), 1);
11807 +var import_data5 = __toESM(require_data(), 1);
11808 +var import_core_data = __toESM(require_core_data(), 1);
2128 11809 var import_editor = __toESM(require_editor(), 1);
2129 11810 var shortcutName = "core/boot/save";
2130 11811 function useSaveShortcut({
2131 11812 openSavePanel
2132 11813 }) {
2133 - const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } = (0, import_data7.useSelect)(import_core_data3.store);
2134 - const { hasNonPostEntityChanges, isPostSavingLocked } = (0, import_data7.useSelect)(import_editor.store);
2135 - const { savePost } = (0, import_data7.useDispatch)(import_editor.store);
2136 - const { registerShortcut, unregisterShortcut } = (0, import_data7.useDispatch)(
11814 + const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } = (0, import_data5.useSelect)(import_core_data.store);
11815 + const { hasNonPostEntityChanges, isPostSavingLocked } = (0, import_data5.useSelect)(import_editor.store);
11816 + const { savePost } = (0, import_data5.useDispatch)(import_editor.store);
11817 + const { registerShortcut, unregisterShortcut } = (0, import_data5.useDispatch)(
2137 11818 import_keyboard_shortcuts.store
2138 11819 );
2139 - (0, import_element9.useEffect)(() => {
11820 + (0, import_element32.useEffect)(() => {
2140 11821 registerShortcut({
2141 11822 name: shortcutName,
2142 11823 category: "global",
2143 - description: (0, import_i18n5.__)("Save your changes."),
11824 + description: (0, import_i18n7.__)("Save your changes."),
2144 11825 keyCombination: {
2145 11826 modifier: "primary",
2146 11827 character: "s"
2147 11828 }
@@ -2168,19 +11849,97 @@
2168 11849 });
2169 11850 }
2170 11851
2171 11852 // packages/boot/build-module/components/save-button/index.mjs
2172 -var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
2173 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='294e36b777']")) {
2174 - const style = document.createElement("style");
2175 - style.setAttribute("data-wp-hash", "294e36b777");
2176 - style.appendChild(document.createTextNode(".boot-save-button{width:100%}"));
2177 - document.head.appendChild(style);
11853 +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
11854 +var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash";
11855 +function getRuntime21() {
11856 + const globalScope = globalThis;
11857 + if (globalScope.__wpStyleRuntime) {
11858 + return globalScope.__wpStyleRuntime;
11859 + }
11860 + globalScope.__wpStyleRuntime = {
11861 + documents: /* @__PURE__ */ new Map(),
11862 + styles: /* @__PURE__ */ new Map(),
11863 + injectedStyles: /* @__PURE__ */ new WeakMap()
11864 + };
11865 + if (typeof document !== "undefined") {
11866 + registerDocument21(document);
11867 + }
11868 + return globalScope.__wpStyleRuntime;
2178 11869 }
11870 +function documentContainsStyleHash21(targetDocument, hash) {
11871 + if (!targetDocument.head) {
11872 + return false;
11873 + }
11874 + for (const style of targetDocument.head.querySelectorAll(
11875 + `style[${STYLE_HASH_ATTRIBUTE21}]`
11876 + )) {
11877 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) {
11878 + return true;
11879 + }
11880 + }
11881 + return false;
11882 +}
11883 +function injectStyle21(targetDocument, hash, css) {
11884 + if (!targetDocument.head) {
11885 + return;
11886 + }
11887 + const runtime = getRuntime21();
11888 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
11889 + if (!injectedStyles) {
11890 + injectedStyles = /* @__PURE__ */ new Set();
11891 + runtime.injectedStyles.set(targetDocument, injectedStyles);
11892 + }
11893 + if (injectedStyles.has(hash)) {
11894 + return;
11895 + }
11896 + if (documentContainsStyleHash21(targetDocument, hash)) {
11897 + injectedStyles.add(hash);
11898 + return;
11899 + }
11900 + const style = targetDocument.createElement("style");
11901 + style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash);
11902 + style.appendChild(targetDocument.createTextNode(css));
11903 + targetDocument.head.appendChild(style);
11904 + injectedStyles.add(hash);
11905 +}
11906 +function registerDocument21(targetDocument) {
11907 + const runtime = getRuntime21();
11908 + runtime.documents.set(
11909 + targetDocument,
11910 + (runtime.documents.get(targetDocument) ?? 0) + 1
11911 + );
11912 + for (const [hash, css] of runtime.styles) {
11913 + injectStyle21(targetDocument, hash, css);
11914 + }
11915 + return () => {
11916 + const count = runtime.documents.get(targetDocument);
11917 + if (count === void 0) {
11918 + return;
11919 + }
11920 + if (count <= 1) {
11921 + runtime.documents.delete(targetDocument);
11922 + return;
11923 + }
11924 + runtime.documents.set(targetDocument, count - 1);
11925 + };
11926 +}
11927 +function registerStyle21(hash, css) {
11928 + const runtime = getRuntime21();
11929 + runtime.styles.set(hash, css);
11930 + for (const targetDocument of runtime.documents.keys()) {
11931 + injectStyle21(targetDocument, hash, css);
11932 + }
11933 +}
11934 +if (typeof process === "undefined" || true) {
11935 + registerStyle21("1c6bdcf0b8", "._9c7a13851fe5f446__save-button{width:100%}._266ea24d4569bd10__shortcut:not(:first-child){margin-inline-start:8px}");
11936 +}
11937 +var style_module_default5 = { "save-button": "_9c7a13851fe5f446__save-button", "shortcut": "_266ea24d4569bd10__shortcut" };
2179 11938 function SaveButton() {
2180 - const [isSaveViewOpen, setIsSaveViewOpened] = (0, import_element10.useState)(false);
2181 - const { isSaving, dirtyEntityRecordsCount } = (0, import_data8.useSelect)((select) => {
2182 - const { isSavingEntityRecord, __experimentalGetDirtyEntityRecords } = select(import_core_data4.store);
11939 + const [isSaveViewOpen, setIsSaveViewOpened] = (0, import_element33.useState)(false);
11940 + const { isSaving, dirtyEntityRecordsCount } = (0, import_data6.useSelect)((select) => {
11941 + const { isSavingEntityRecord, __experimentalGetDirtyEntityRecords } = select(import_core_data2.store);
2183 11942 const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
2184 11943 return {
2185 11944 isSaving: dirtyEntityRecords.some(
2186 11945 (record) => isSavingEntityRecord(record.kind, record.name, record.key)
@@ -2187,16 +11946,16 @@
2187 11946 ),
2188 11947 dirtyEntityRecordsCount: dirtyEntityRecords.length
2189 11948 };
2190 11949 }, []);
2191 - const [showSavedState, setShowSavedState] = (0, import_element10.useState)(false);
2192 - (0, import_element10.useEffect)(() => {
11950 + const [showSavedState, setShowSavedState] = (0, import_element33.useState)(false);
11951 + (0, import_element33.useEffect)(() => {
2193 11952 if (isSaving) {
2194 11953 setShowSavedState(true);
2195 11954 }
2196 11955 }, [isSaving]);
2197 11956 const hasChanges = dirtyEntityRecordsCount > 0;
2198 - (0, import_element10.useEffect)(() => {
11957 + (0, import_element33.useEffect)(() => {
2199 11958 if (!isSaving && hasChanges) {
2200 11959 setShowSavedState(false);
2201 11960 }
2202 11961 }, [isSaving, hasChanges]);
@@ -2206,22 +11965,30 @@
2206 11965 }
2207 11966 }
2208 11967 const shouldShowButton = hasChanges || showSavedState;
2209 11968 useSaveShortcut({ openSavePanel: () => setIsSaveViewOpened(true) });
11969 + const shortcut = {
11970 + displayShortcut: import_keycodes.displayShortcut.primary("s"),
11971 + ariaKeyShortcut: import_keycodes.ariaKeyShortcut.primary("s"),
11972 + label: import_keycodes.shortcutAriaLabel.primary("s")
11973 + };
11974 + const { descriptionId, targetProps } = useKeyboardShortcutProps({
11975 + shortcut
11976 + });
2210 11977 if (!shouldShowButton) {
2211 11978 return null;
2212 11979 }
2213 11980 const isInSavedState = showSavedState && !hasChanges;
2214 - const disabled = isSaving || isInSavedState;
11981 + const disabled2 = isSaving || isInSavedState;
2215 11982 const getLabel = () => {
2216 11983 if (isInSavedState) {
2217 - return (0, import_i18n6.__)("Saved");
11984 + return (0, import_i18n8.__)("Saved");
2218 11985 }
2219 - return (0, import_i18n6.sprintf)(
11986 + return (0, import_i18n8.sprintf)(
2220 11987 // translators: %d: number of unsaved changes (number).
2221 - (0, import_i18n6._n)(
2222 - "Review %d change\u2026",
2223 - "Review %d changes\u2026",
11988 + (0, import_i18n8._n)(
11989 + "Review %d change…",
11990 + "Review %d changes…",
2224 11991 dirtyEntityRecordsCount
2225 11992 ),
2226 11993 dirtyEntityRecordsCount
2227 11994 );
@@ -2226,39 +11993,58 @@
2226 11993 dirtyEntityRecordsCount
2227 11994 );
2228 11995 };
2229 11996 const label = getLabel();
2230 - return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
2231 - /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2232 - import_components10.Tooltip,
2233 - {
2234 - text: hasChanges ? label : void 0,
2235 - shortcut: import_keycodes2.displayShortcut.primary("s"),
2236 - children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2237 - import_components10.Button,
11997 + return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
11998 + /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(tooltip_exports.Root, { children: [
11999 + /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
12000 + tooltip_exports.Trigger,
12001 + {
12002 + ...targetProps,
12003 + render: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
12004 + import_components8.Button,
12005 + {
12006 + variant: "primary",
12007 + size: "compact",
12008 + onClick: () => setIsSaveViewOpened(true),
12009 + onBlur: hideSavedState,
12010 + disabled: disabled2,
12011 + accessibleWhenDisabled: true,
12012 + isBusy: isSaving,
12013 + className: style_module_default5["save-button"],
12014 + icon: isInSavedState ? check_default : void 0
12015 + }
12016 + ),
12017 + children: [
12018 + label,
12019 + descriptionId && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
12020 + KeyboardShortcutDescription,
12021 + {
12022 + descriptionId,
12023 + shortcut
12024 + }
12025 + )
12026 + ]
12027 + }
12028 + ),
12029 + /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(tooltip_exports.Popup, { children: [
12030 + hasChanges && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: label }),
12031 + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
12032 + KeyboardShortcutDisplay,
2238 12033 {
2239 - variant: "primary",
2240 - size: "compact",
2241 - onClick: () => setIsSaveViewOpened(true),
2242 - onBlur: hideSavedState,
2243 - disabled,
2244 - accessibleWhenDisabled: true,
2245 - isBusy: isSaving,
2246 - "aria-keyshortcuts": import_keycodes2.rawShortcut.primary("s"),
2247 - className: "boot-save-button",
2248 - icon: isInSavedState ? check_default : void 0,
2249 - children: label
12034 + className: style_module_default5.shortcut,
12035 + shortcut
2250 12036 }
2251 12037 )
2252 - }
2253 - ),
2254 - isSaveViewOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2255 - import_components10.Modal,
12038 + ] })
12039 + ] }),
12040 + isSaveViewOpen && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
12041 + import_components8.Modal,
2256 12042 {
2257 - title: (0, import_i18n6.__)("Review changes"),
12043 + title: (0, import_i18n8.__)("Review changes"),
2258 12044 onRequestClose: () => setIsSaveViewOpened(false),
2259 12045 size: "small",
2260 - children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
12046 + children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2261 12047 import_editor2.EntitiesSavedStates,
2262 12048 {
2263 12049 close: () => setIsSaveViewOpened(false),
2264 12050 variant: "inline"
@@ -2269,49 +12055,210 @@
2269 12055 ] });
2270 12056 }
2271 12057
2272 12058 // packages/boot/build-module/components/sidebar/index.mjs
2273 -var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
2274 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='1f27eae1b9']")) {
2275 - const style = document.createElement("style");
2276 - style.setAttribute("data-wp-hash", "1f27eae1b9");
2277 - style.appendChild(document.createTextNode(".boot-sidebar__scrollable{display:flex;flex-direction:column;height:100%;overflow:auto;position:relative}.boot-sidebar__content{contain:content;flex-grow:1;position:relative}.boot-sidebar__footer{padding:16px 8px 8px 16px}.boot-sidebar__back-button{margin:8px 12px}"));
2278 - document.head.appendChild(style);
12059 +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
12060 +var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash";
12061 +function getRuntime22() {
12062 + const globalScope = globalThis;
12063 + if (globalScope.__wpStyleRuntime) {
12064 + return globalScope.__wpStyleRuntime;
12065 + }
12066 + globalScope.__wpStyleRuntime = {
12067 + documents: /* @__PURE__ */ new Map(),
12068 + styles: /* @__PURE__ */ new Map(),
12069 + injectedStyles: /* @__PURE__ */ new WeakMap()
12070 + };
12071 + if (typeof document !== "undefined") {
12072 + registerDocument22(document);
12073 + }
12074 + return globalScope.__wpStyleRuntime;
2279 12075 }
12076 +function documentContainsStyleHash22(targetDocument, hash) {
12077 + if (!targetDocument.head) {
12078 + return false;
12079 + }
12080 + for (const style of targetDocument.head.querySelectorAll(
12081 + `style[${STYLE_HASH_ATTRIBUTE22}]`
12082 + )) {
12083 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) {
12084 + return true;
12085 + }
12086 + }
12087 + return false;
12088 +}
12089 +function injectStyle22(targetDocument, hash, css) {
12090 + if (!targetDocument.head) {
12091 + return;
12092 + }
12093 + const runtime = getRuntime22();
12094 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
12095 + if (!injectedStyles) {
12096 + injectedStyles = /* @__PURE__ */ new Set();
12097 + runtime.injectedStyles.set(targetDocument, injectedStyles);
12098 + }
12099 + if (injectedStyles.has(hash)) {
12100 + return;
12101 + }
12102 + if (documentContainsStyleHash22(targetDocument, hash)) {
12103 + injectedStyles.add(hash);
12104 + return;
12105 + }
12106 + const style = targetDocument.createElement("style");
12107 + style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash);
12108 + style.appendChild(targetDocument.createTextNode(css));
12109 + targetDocument.head.appendChild(style);
12110 + injectedStyles.add(hash);
12111 +}
12112 +function registerDocument22(targetDocument) {
12113 + const runtime = getRuntime22();
12114 + runtime.documents.set(
12115 + targetDocument,
12116 + (runtime.documents.get(targetDocument) ?? 0) + 1
12117 + );
12118 + for (const [hash, css] of runtime.styles) {
12119 + injectStyle22(targetDocument, hash, css);
12120 + }
12121 + return () => {
12122 + const count = runtime.documents.get(targetDocument);
12123 + if (count === void 0) {
12124 + return;
12125 + }
12126 + if (count <= 1) {
12127 + runtime.documents.delete(targetDocument);
12128 + return;
12129 + }
12130 + runtime.documents.set(targetDocument, count - 1);
12131 + };
12132 +}
12133 +function registerStyle22(hash, css) {
12134 + const runtime = getRuntime22();
12135 + runtime.styles.set(hash, css);
12136 + for (const targetDocument of runtime.documents.keys()) {
12137 + injectStyle22(targetDocument, hash, css);
12138 + }
12139 +}
12140 +if (typeof process === "undefined" || true) {
12141 + registerStyle22("2f8ba86269", "._52f77809bed01e5e__scrollable{display:flex;flex-direction:column;height:100%;overflow:auto;position:relative}._6d2e23af506664fb__content{contain:content;flex-grow:1;position:relative}.c95a8ac9c6876d6e__footer{padding-block-end:8px;padding-block-start:16px;padding-inline-end:8px;padding-inline-start:16px}._28ec24681975e557__back-button{margin-block-end:8px;margin-block-start:16px;margin-inline-end:12px;margin-inline-start:12px}");
12142 +}
12143 +var style_module_default6 = { "scrollable": "_52f77809bed01e5e__scrollable", "content": "_6d2e23af506664fb__content", "footer": "c95a8ac9c6876d6e__footer", "back-button": "_28ec24681975e557__back-button" };
2280 12144 function DashboardBackButton() {
2281 - const dashboardLink = (0, import_data9.useSelect)(
12145 + const dashboardLink = (0, import_data7.useSelect)(
2282 12146 (select) => select(store).getDashboardLink(),
2283 12147 []
2284 12148 );
2285 - return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2286 - import_components11.Button,
12149 + return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
12150 + import_components9.Button,
2287 12151 {
2288 12152 __next40pxDefaultSize: true,
2289 - className: "boot-sidebar__back-button",
12153 + className: style_module_default6["back-button"],
2290 12154 href: dashboardLink || "/",
2291 - icon: (0, import_i18n7.isRTL)() ? chevron_right_default : chevron_left_default,
2292 - label: (0, import_i18n7.__)("Go to the Dashboard"),
2293 - children: (0, import_i18n7.__)("Dashboard")
12155 + icon: (0, import_i18n9.isRTL)() ? chevron_right_default : chevron_left_default,
12156 + label: (0, import_i18n9.__)("Go to the Dashboard"),
12157 + children: (0, import_i18n9.__)("Dashboard")
2294 12158 }
2295 12159 );
2296 12160 }
2297 12161 function Sidebar() {
2298 - const hasAdminBarInEditor = window.__experimentalAdminBarInEditor;
2299 - return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "boot-sidebar__scrollable", children: [
2300 - hasAdminBarInEditor ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DashboardBackButton, {}) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(site_hub_default, {}),
2301 - /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "boot-sidebar__content", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(navigation_default, {}) }),
2302 - /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "boot-sidebar__footer", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SaveButton, {}) })
12162 + return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: style_module_default6.scrollable, children: [
12163 + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DashboardBackButton, {}),
12164 + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: style_module_default6.content, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(navigation_default2, {}) }),
12165 + /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: style_module_default6.footer, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SaveButton, {}) })
2303 12166 ] });
2304 12167 }
2305 12168
2306 12169 // packages/boot/build-module/components/save-panel/index.mjs
2307 -var import_element11 = __toESM(require_element(), 1);
2308 -var import_components12 = __toESM(require_components(), 1);
12170 +var import_element34 = __toESM(require_element(), 1);
12171 +var import_components10 = __toESM(require_components(), 1);
2309 12172 var import_editor3 = __toESM(require_editor(), 1);
2310 -var import_i18n8 = __toESM(require_i18n(), 1);
2311 -var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
12173 +var import_i18n10 = __toESM(require_i18n(), 1);
12174 +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
12175 +var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash";
12176 +function getRuntime23() {
12177 + const globalScope = globalThis;
12178 + if (globalScope.__wpStyleRuntime) {
12179 + return globalScope.__wpStyleRuntime;
12180 + }
12181 + globalScope.__wpStyleRuntime = {
12182 + documents: /* @__PURE__ */ new Map(),
12183 + styles: /* @__PURE__ */ new Map(),
12184 + injectedStyles: /* @__PURE__ */ new WeakMap()
12185 + };
12186 + if (typeof document !== "undefined") {
12187 + registerDocument23(document);
12188 + }
12189 + return globalScope.__wpStyleRuntime;
12190 +}
12191 +function documentContainsStyleHash23(targetDocument, hash) {
12192 + if (!targetDocument.head) {
12193 + return false;
12194 + }
12195 + for (const style of targetDocument.head.querySelectorAll(
12196 + `style[${STYLE_HASH_ATTRIBUTE23}]`
12197 + )) {
12198 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) {
12199 + return true;
12200 + }
12201 + }
12202 + return false;
12203 +}
12204 +function injectStyle23(targetDocument, hash, css) {
12205 + if (!targetDocument.head) {
12206 + return;
12207 + }
12208 + const runtime = getRuntime23();
12209 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
12210 + if (!injectedStyles) {
12211 + injectedStyles = /* @__PURE__ */ new Set();
12212 + runtime.injectedStyles.set(targetDocument, injectedStyles);
12213 + }
12214 + if (injectedStyles.has(hash)) {
12215 + return;
12216 + }
12217 + if (documentContainsStyleHash23(targetDocument, hash)) {
12218 + injectedStyles.add(hash);
12219 + return;
12220 + }
12221 + const style = targetDocument.createElement("style");
12222 + style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash);
12223 + style.appendChild(targetDocument.createTextNode(css));
12224 + targetDocument.head.appendChild(style);
12225 + injectedStyles.add(hash);
12226 +}
12227 +function registerDocument23(targetDocument) {
12228 + const runtime = getRuntime23();
12229 + runtime.documents.set(
12230 + targetDocument,
12231 + (runtime.documents.get(targetDocument) ?? 0) + 1
12232 + );
12233 + for (const [hash, css] of runtime.styles) {
12234 + injectStyle23(targetDocument, hash, css);
12235 + }
12236 + return () => {
12237 + const count = runtime.documents.get(targetDocument);
12238 + if (count === void 0) {
12239 + return;
12240 + }
12241 + if (count <= 1) {
12242 + runtime.documents.delete(targetDocument);
12243 + return;
12244 + }
12245 + runtime.documents.set(targetDocument, count - 1);
12246 + };
12247 +}
12248 +function registerStyle23(hash, css) {
12249 + const runtime = getRuntime23();
12250 + runtime.styles.set(hash, css);
12251 + for (const targetDocument of runtime.documents.keys()) {
12252 + injectStyle23(targetDocument, hash, css);
12253 + }
12254 +}
12255 +if (typeof process === "undefined" || true) {
12256 + registerStyle23("df1a59bc40", "@media (min-width:600px){._77efcb9ca06f5774__modal{width:600px}}");
12257 +}
12258 +var style_module_default7 = { "modal": "_77efcb9ca06f5774__modal" };
2312 12259 function SavePanel() {
2313 - const [isOpen, setIsOpen] = (0, import_element11.useState)(false);
12260 + const [isOpen, setIsOpen] = (0, import_element34.useState)(false);
2314 12261 useSaveShortcut({
2315 12262 openSavePanel: () => setIsOpen(true)
2316 12263 });
2317 12264 if (!isOpen) {
@@ -2316,16 +12263,16 @@
2316 12263 });
2317 12264 if (!isOpen) {
2318 12265 return false;
2319 12266 }
2320 - return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2321 - import_components12.Modal,
12267 + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
12268 + import_components10.Modal,
2322 12269 {
2323 - className: "edit-site-save-panel__modal",
12270 + className: style_module_default7.modal,
2324 12271 onRequestClose: () => setIsOpen(false),
2325 - title: (0, import_i18n8.__)("Review changes"),
12272 + title: (0, import_i18n10.__)("Review changes"),
2326 12273 size: "small",
2327 - children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
12274 + children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2328 12275 import_editor3.EntitiesSavedStates,
2329 12276 {
2330 12277 close: () => setIsOpen(false),
2331 12278 variant: "inline"
@@ -2335,40 +12282,23 @@
2335 12282 );
2336 12283 }
2337 12284
2338 12285 // packages/boot/build-module/components/canvas-renderer/index.mjs
2339 -var import_element13 = __toESM(require_element(), 1);
12286 +var import_element37 = __toESM(require_element(), 1);
2340 12287
2341 12288 // packages/boot/build-module/components/canvas/index.mjs
2342 -var import_element12 = __toESM(require_element(), 1);
2343 -var import_components14 = __toESM(require_components(), 1);
2344 -import { useNavigate } from "@wordpress/route";
12289 +var import_element36 = __toESM(require_element(), 1);
12290 +var import_components12 = __toESM(require_components(), 1);
12291 +var import_i18n14 = __toESM(require_i18n(), 1);
12292 +var import_data10 = __toESM(require_data(), 1);
12293 +var import_core_data5 = __toESM(require_core_data(), 1);
12294 +import { useNavigate as useNavigate2, useSearch as useSearch2 } from "@wordpress/route";
2345 12295
2346 12296 // packages/boot/build-module/components/canvas/back-button.mjs
2347 -var import_components13 = __toESM(require_components(), 1);
2348 -var import_compose3 = __toESM(require_compose(), 1);
2349 -var import_i18n9 = __toESM(require_i18n(), 1);
2350 -var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
2351 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='c8750e18d1']")) {
2352 - const style = document.createElement("style");
2353 - style.setAttribute("data-wp-hash", "c8750e18d1");
2354 - style.appendChild(document.createTextNode(".boot-canvas-back-button{height:64px;left:0;position:absolute;top:0;width:64px;z-index:100}.boot-canvas-back-button__container{height:100%;position:relative;width:100%}.boot-canvas-back-button__link.components-button{align-items:center;background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);border-radius:0;display:inline-flex;height:64px;justify-content:center;padding:0;text-decoration:none;width:64px}@media not (prefers-reduced-motion){.boot-canvas-back-button__link.components-button{transition:outline .1s ease-out}}.boot-canvas-back-button__link.components-button:focus:not(:active){outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}.boot-canvas-back-button__icon{align-items:center;background-color:#ccc;display:flex;height:64px;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:64px}.boot-canvas-back-button__icon svg{fill:currentColor}.boot-canvas-back-button__icon.has-site-icon{-webkit-backdrop-filter:saturate(180%) blur(15px);backdrop-filter:saturate(180%) blur(15px);background-color:#fff9}.interface-interface-skeleton__header{margin-top:0!important}"));
2355 - document.head.appendChild(style);
2356 -}
2357 -var toggleHomeIconVariants = {
2358 - edit: {
2359 - opacity: 0,
2360 - scale: 0.2
2361 - },
2362 - hover: {
2363 - opacity: 1,
2364 - scale: 1,
2365 - clipPath: "inset( 22% round 2px )"
2366 - }
2367 -};
12297 +var import_components11 = __toESM(require_components(), 1);
12298 +var import_i18n11 = __toESM(require_i18n(), 1);
12299 +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
2368 12300 function BootBackButton({ length }) {
2369 - const disableMotion = (0, import_compose3.useReducedMotion)();
2370 - const hasAdminBarInEditor = window.__experimentalAdminBarInEditor;
2371 12301 const handleBack = () => {
2372 12302 window.history.back();
2373 12303 };
2374 12304 if (length > 1) {
@@ -2373,54 +12303,247 @@
2373 12303 };
2374 12304 if (length > 1) {
2375 12305 return null;
2376 12306 }
2377 - const transition = {
2378 - duration: disableMotion ? 0 : 0.3
2379 - };
2380 - const arrowIcon = (0, import_i18n9.isRTL)() ? arrow_up_right_default : arrow_up_left_default;
2381 - return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2382 - import_components13.__unstableMotion.div,
12307 + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
12308 + import_components11.Button,
2383 12309 {
2384 - className: "boot-canvas-back-button",
2385 - animate: "edit",
2386 - initial: "edit",
2387 - whileHover: "hover",
2388 - whileTap: "tap",
2389 - transition,
2390 - children: [
2391 - /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2392 - import_components13.Button,
2393 - {
2394 - className: "boot-canvas-back-button__link",
2395 - onClick: handleBack,
2396 - "aria-label": (0, import_i18n9.__)("Go back"),
2397 - __next40pxDefaultSize: true,
2398 - children: !hasAdminBarInEditor && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(site_icon_default, {})
12310 + size: "compact",
12311 + onClick: handleBack,
12312 + label: (0, import_i18n11.__)("Back"),
12313 + icon: (0, import_i18n11.isRTL)() ? chevron_right_default : chevron_left_default
12314 + }
12315 + );
12316 +}
12317 +
12318 +// packages/boot/build-module/components/canvas/site-preview.mjs
12319 +var import_i18n12 = __toESM(require_i18n(), 1);
12320 +var import_data8 = __toESM(require_data(), 1);
12321 +var import_core_data3 = __toESM(require_core_data(), 1);
12322 +var import_dom20 = __toESM(require_dom(), 1);
12323 +var import_url = __toESM(require_url(), 1);
12324 +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
12325 +function SitePreview() {
12326 + const siteUrl = (0, import_data8.useSelect)((select) => {
12327 + const siteData = select(import_core_data3.store).getEntityRecord(
12328 + "root",
12329 + "__unstableBase"
12330 + );
12331 + return siteData?.home;
12332 + }, []);
12333 + if (typeof siteUrl !== "string" || !siteUrl) {
12334 + return null;
12335 + }
12336 + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
12337 + "iframe",
12338 + {
12339 + src: (0, import_url.addQueryArgs)(siteUrl, {
12340 + // Parameter for hiding the admin bar.
12341 + wp_site_preview: 1
12342 + }),
12343 + title: (0, import_i18n12.__)("Site Preview"),
12344 + style: {
12345 + display: "block",
12346 + width: "100%",
12347 + height: "100%",
12348 + backgroundColor: "#fff"
12349 + },
12350 + onLoad: (event) => {
12351 + const iframeDocument = event.target.contentDocument;
12352 + if (!iframeDocument) {
12353 + return;
12354 + }
12355 + import_dom20.focus.focusable.find(iframeDocument.documentElement).forEach((element) => {
12356 + element.style.pointerEvents = "none";
12357 + element.tabIndex = -1;
12358 + element.setAttribute("aria-hidden", "true");
12359 + });
12360 + }
12361 + }
12362 + );
12363 +}
12364 +
12365 +// packages/boot/build-module/components/canvas/use-navigate-to-entity-record.mjs
12366 +var import_element35 = __toESM(require_element(), 1);
12367 +var import_data9 = __toESM(require_data(), 1);
12368 +var import_core_data4 = __toESM(require_core_data(), 1);
12369 +var import_editor4 = __toESM(require_editor(), 1);
12370 +var import_notices = __toESM(require_notices(), 1);
12371 +var import_html_entities = __toESM(require_html_entities(), 1);
12372 +var import_i18n13 = __toESM(require_i18n(), 1);
12373 +import {
12374 + useNavigate,
12375 + useSearch,
12376 + privateApis as routePrivateApis3
12377 +} from "@wordpress/route";
12378 +
12379 +// packages/boot/build-module/components/canvas/viewport.mjs
12380 +var DEFAULT_DEVICE_TYPE = "Desktop";
12381 +var VALID_VIEWPORTS = ["desktop", "tablet", "mobile"];
12382 +function isValidViewport(viewport) {
12383 + return !!viewport && VALID_VIEWPORTS.includes(viewport.toLowerCase());
12384 +}
12385 +function getDeviceType(viewport) {
12386 + if (!isValidViewport(viewport)) {
12387 + return DEFAULT_DEVICE_TYPE;
12388 + }
12389 + const value = viewport.toLowerCase();
12390 + return value.charAt(0).toUpperCase() + value.slice(1);
12391 +}
12392 +
12393 +// packages/boot/build-module/components/canvas/use-navigate-to-entity-record.mjs
12394 +var { useCanGoBack, useRouter: useRouter2 } = unlock2(routePrivateApis3);
12395 +function useNavigateToEntityRecord() {
12396 + const navigate = useNavigate();
12397 + const search = useSearch({ strict: false });
12398 + const registry = (0, import_data9.useRegistry)();
12399 + const getEntityLink2 = (0, import_data9.useSelect)(
12400 + (select) => select(store).getEntityLink,
12401 + []
12402 + );
12403 + const router = useRouter2();
12404 + const canGoBack = useCanGoBack();
12405 + const onNavigateToEntityRecord = (0, import_element35.useCallback)(
12406 + (params) => {
12407 + const currentPostType = registry.select(import_editor4.store).getCurrentPostType();
12408 + const currentPostId = registry.select(import_editor4.store).getCurrentPostId();
12409 + const edits = registry.select(import_core_data4.store).getEntityRecordEdits(
12410 + "postType",
12411 + currentPostType,
12412 + currentPostId
12413 + );
12414 + const selectedBlock = edits?.selection?.selectionStart?.clientId;
12415 + if (selectedBlock) {
12416 + navigate({
12417 + search: (previous) => ({
12418 + ...previous,
12419 + selectedBlock
12420 + }),
12421 + replace: true
12422 + });
12423 + }
12424 + const requestedViewport = params.viewport?.toLowerCase();
12425 + const hasRequestedViewport = isValidViewport(requestedViewport);
12426 + const to = getEntityLink2(params.postType, params.postId);
12427 + if (to) {
12428 + navigate({
12429 + to,
12430 + search: () => ({
12431 + focusMode: true,
12432 + ...hasRequestedViewport ? { viewport: requestedViewport } : {}
12433 + })
12434 + });
12435 + }
12436 + },
12437 + [navigate, registry, getEntityLink2]
12438 + );
12439 + const isFocusMode = !!search.focusMode;
12440 + const onNavigateToPreviousEntityRecord = (0, import_element35.useMemo)(
12441 + () => isFocusMode && canGoBack ? () => router.history.back() : void 0,
12442 + [isFocusMode, canGoBack, router]
12443 + );
12444 + return { onNavigateToEntityRecord, onNavigateToPreviousEntityRecord };
12445 +}
12446 +function useActionPerformed(postType) {
12447 + const navigate = useNavigate();
12448 + const { createSuccessNotice } = (0, import_data9.useDispatch)(import_notices.store);
12449 + const getEntityLink2 = (0, import_data9.useSelect)(
12450 + (select) => select(store).getEntityLink,
12451 + []
12452 + );
12453 + return (0, import_element35.useCallback)(
12454 + (actionId, items) => {
12455 + switch (actionId) {
12456 + case "move-to-trash":
12457 + case "delete-post": {
12458 + const to = postType && getEntityLink2(postType);
12459 + if (to) {
12460 + navigate({ to, search: () => ({}) });
2399 12461 }
2400 - ),
2401 - hasAdminBarInEditor ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "boot-canvas-back-button__icon", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_components13.Icon, { icon: arrowIcon }) }) : (
2402 - /* Overlay arrow that appears on hover */
2403 - /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2404 - import_components13.__unstableMotion.div,
12462 + break;
12463 + }
12464 + case "duplicate-post": {
12465 + const newItem = items[0];
12466 + const to = getEntityLink2(newItem.type, newItem.id);
12467 + if (!to) {
12468 + break;
12469 + }
12470 + const title = typeof newItem.title === "string" ? newItem.title : newItem.title?.rendered;
12471 + createSuccessNotice(
12472 + (0, import_i18n13.sprintf)(
12473 + // translators: %s: Title of the created post, e.g: "Hello world".
12474 + (0, import_i18n13.__)('"%s" successfully created.'),
12475 + (0, import_html_entities.decodeEntities)(title ?? "") || (0, import_i18n13.__)("(no title)")
12476 + ),
2405 12477 {
2406 - className: "boot-canvas-back-button__icon",
2407 - variants: toggleHomeIconVariants,
2408 - children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_components13.Icon, { icon: arrowIcon })
12478 + type: "snackbar",
12479 + id: "duplicate-post-action",
12480 + actions: [
12481 + {
12482 + label: (0, import_i18n13.__)("Edit"),
12483 + onClick: () => navigate({ to })
12484 + }
12485 + ]
2409 12486 }
2410 - )
2411 - )
2412 - ]
2413 - }
12487 + );
12488 + break;
12489 + }
12490 + }
12491 + },
12492 + [navigate, createSuccessNotice, getEntityLink2, postType]
2414 12493 );
2415 12494 }
2416 12495
2417 12496 // packages/boot/build-module/components/canvas/index.mjs
2418 -var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
12497 +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
2419 12498 function Canvas({ canvas }) {
2420 - const [Editor, setEditor] = (0, import_element12.useState)(null);
2421 - const navigate = useNavigate();
2422 - (0, import_element12.useEffect)(() => {
12499 + const [Editor, setEditor] = (0, import_element36.useState)(null);
12500 + const navigate = useNavigate2();
12501 + const { onNavigateToEntityRecord, onNavigateToPreviousEntityRecord } = useNavigateToEntityRecord();
12502 + const onActionPerformed = useActionPerformed(canvas.postType);
12503 + const viewport = useSearch2({
12504 + strict: false,
12505 + select: (search) => search.viewport
12506 + });
12507 + const hasEntity = !!(canvas.postType && canvas.postId);
12508 + const isBlockTheme = (0, import_data10.useSelect)(
12509 + (select) => select(import_core_data5.store).getCurrentTheme()?.is_block_theme,
12510 + []
12511 + );
12512 + const { editLink, isTrashed } = (0, import_data10.useSelect)(
12513 + (select) => {
12514 + if (!canvas.postType || !canvas.postId) {
12515 + return { editLink: void 0, isTrashed: false };
12516 + }
12517 + const record = select(import_core_data5.store).getEntityRecord(
12518 + "postType",
12519 + canvas.postType,
12520 + canvas.postId
12521 + );
12522 + return {
12523 + editLink: select(store).getEntityLink(
12524 + canvas.postType,
12525 + canvas.postId
12526 + ),
12527 + isTrashed: record?.status === "trash"
12528 + };
12529 + },
12530 + [canvas.postType, canvas.postId]
12531 + );
12532 + const settings = (0, import_element36.useMemo)(
12533 + () => ({
12534 + isPreviewMode: canvas.isPreview,
12535 + styles: canvas.isPreview ? [{ css: "body{min-height:100vh;}" }] : [],
12536 + onNavigateToEntityRecord,
12537 + onNavigateToPreviousEntityRecord
12538 + }),
12539 + [
12540 + canvas.isPreview,
12541 + onNavigateToEntityRecord,
12542 + onNavigateToPreviousEntityRecord
12543 + ]
12544 + );
12545 + (0, import_element36.useEffect)(() => {
2423 12546 import("@wordpress/lazy-editor").then((module) => {
2424 12547 setEditor(() => module.Editor);
2425 12548 }).catch((error) => {
2426 12549 console.error("Failed to load lazy editor:", error);
@@ -2425,10 +12548,13 @@
2425 12548 }).catch((error) => {
2426 12549 console.error("Failed to load lazy editor:", error);
2427 12550 });
2428 12551 }, []);
2429 - if (!Editor) {
2430 - return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12552 + if (!hasEntity && isBlockTheme === false) {
12553 + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SitePreview, {});
12554 + }
12555 + if (!Editor || !hasEntity && isBlockTheme === void 0) {
12556 + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2431 12557 "div",
2432 12558 {
2433 12559 style: {
2434 12560 display: "flex",
@@ -2436,52 +12562,56 @@
2436 12562 alignItems: "center",
2437 12563 height: "100%",
2438 12564 padding: "2rem"
2439 12565 },
2440 - children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_components14.Spinner, {})
12566 + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components12.Spinner, {})
2441 12567 }
2442 12568 );
2443 12569 }
2444 - const backButton = !canvas.isPreview ? ({ length }) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(BootBackButton, { length }) : void 0;
2445 - return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { style: { height: "100%", position: "relative" }, children: [
2446 - /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12570 + const backButton = !canvas.isPreview ? ({ length }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(BootBackButton, { length }) : void 0;
12571 + return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { style: { height: "100%", position: "relative" }, children: [
12572 + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2447 12573 "div",
2448 12574 {
2449 12575 style: { height: "100%" },
2450 12576 inert: canvas.isPreview ? "true" : void 0,
2451 - children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12577 + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2452 12578 Editor,
2453 12579 {
2454 12580 postType: canvas.postType,
2455 12581 postId: canvas.postId,
2456 - settings: {
2457 - isPreviewMode: canvas.isPreview,
2458 - styles: canvas.isPreview ? [{ css: "body{min-height:100vh;}" }] : []
2459 - },
2460 - backButton
12582 + renderingMode: canvas.renderingMode,
12583 + settings,
12584 + backButton,
12585 + onActionPerformed,
12586 + initialViewport: getDeviceType(viewport)
2461 12587 }
2462 12588 )
2463 12589 }
2464 12590 ),
2465 - canvas.isPreview && canvas.editLink && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12591 + canvas.isPreview && editLink && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2466 12592 "div",
2467 12593 {
2468 - onClick: () => navigate({ to: canvas.editLink }),
12594 + onClick: isTrashed ? void 0 : () => navigate({ to: editLink }),
2469 12595 onKeyDown: (e) => {
12596 + if (isTrashed) {
12597 + return;
12598 + }
2470 12599 if (e.key === "Enter" || e.key === " ") {
2471 12600 e.preventDefault();
2472 - navigate({ to: canvas.editLink });
12601 + navigate({ to: editLink });
2473 12602 }
2474 12603 },
2475 12604 style: {
2476 12605 position: "absolute",
2477 12606 inset: 0,
2478 - cursor: "pointer",
12607 + cursor: isTrashed ? "default" : "pointer",
2479 12608 zIndex: 1
2480 12609 },
2481 12610 role: "button",
2482 12611 tabIndex: 0,
2483 - "aria-label": "Click to edit"
12612 + "aria-disabled": isTrashed,
12613 + "aria-label": (0, import_i18n14.__)("Edit")
2484 12614 }
2485 12615 )
2486 12616 ] });
2487 12617 }
@@ -2486,15 +12616,15 @@
2486 12616 ] });
2487 12617 }
2488 12618
2489 12619 // packages/boot/build-module/components/canvas-renderer/index.mjs
2490 -var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
12620 +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
2491 12621 function CanvasRenderer({
2492 12622 canvas,
2493 12623 routeContentModule
2494 12624 }) {
2495 - const [CustomCanvas, setCustomCanvas] = (0, import_element13.useState)(null);
2496 - (0, import_element13.useEffect)(() => {
12625 + const [CustomCanvas, setCustomCanvas] = (0, import_element37.useState)(null);
12626 + (0, import_element37.useEffect)(() => {
2497 12627 if (canvas === null && routeContentModule) {
2498 12628 import(routeContentModule).then((module) => {
2499 12629 setCustomCanvas(() => module.canvas);
2500 12630 }).catch((error) => {
@@ -2510,39 +12640,183 @@
2510 12640 if (canvas === null) {
2511 12641 if (!CustomCanvas) {
2512 12642 return null;
2513 12643 }
2514 - return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CustomCanvas, {});
12644 + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CustomCanvas, {});
2515 12645 }
2516 - return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Canvas, { canvas });
12646 + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Canvas, { canvas });
2517 12647 }
2518 12648
12649 +// packages/boot/build-module/components/error-boundary/index.mjs
12650 +var import_element38 = __toESM(require_element(), 1);
12651 +var import_i18n15 = __toESM(require_i18n(), 1);
12652 +var import_components13 = __toESM(require_components(), 1);
12653 +var import_compose3 = __toESM(require_compose(), 1);
12654 +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
12655 +var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash";
12656 +function getRuntime24() {
12657 + const globalScope = globalThis;
12658 + if (globalScope.__wpStyleRuntime) {
12659 + return globalScope.__wpStyleRuntime;
12660 + }
12661 + globalScope.__wpStyleRuntime = {
12662 + documents: /* @__PURE__ */ new Map(),
12663 + styles: /* @__PURE__ */ new Map(),
12664 + injectedStyles: /* @__PURE__ */ new WeakMap()
12665 + };
12666 + if (typeof document !== "undefined") {
12667 + registerDocument24(document);
12668 + }
12669 + return globalScope.__wpStyleRuntime;
12670 +}
12671 +function documentContainsStyleHash24(targetDocument, hash) {
12672 + if (!targetDocument.head) {
12673 + return false;
12674 + }
12675 + for (const style of targetDocument.head.querySelectorAll(
12676 + `style[${STYLE_HASH_ATTRIBUTE24}]`
12677 + )) {
12678 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) {
12679 + return true;
12680 + }
12681 + }
12682 + return false;
12683 +}
12684 +function injectStyle24(targetDocument, hash, css) {
12685 + if (!targetDocument.head) {
12686 + return;
12687 + }
12688 + const runtime = getRuntime24();
12689 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
12690 + if (!injectedStyles) {
12691 + injectedStyles = /* @__PURE__ */ new Set();
12692 + runtime.injectedStyles.set(targetDocument, injectedStyles);
12693 + }
12694 + if (injectedStyles.has(hash)) {
12695 + return;
12696 + }
12697 + if (documentContainsStyleHash24(targetDocument, hash)) {
12698 + injectedStyles.add(hash);
12699 + return;
12700 + }
12701 + const style = targetDocument.createElement("style");
12702 + style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash);
12703 + style.appendChild(targetDocument.createTextNode(css));
12704 + targetDocument.head.appendChild(style);
12705 + injectedStyles.add(hash);
12706 +}
12707 +function registerDocument24(targetDocument) {
12708 + const runtime = getRuntime24();
12709 + runtime.documents.set(
12710 + targetDocument,
12711 + (runtime.documents.get(targetDocument) ?? 0) + 1
12712 + );
12713 + for (const [hash, css] of runtime.styles) {
12714 + injectStyle24(targetDocument, hash, css);
12715 + }
12716 + return () => {
12717 + const count = runtime.documents.get(targetDocument);
12718 + if (count === void 0) {
12719 + return;
12720 + }
12721 + if (count <= 1) {
12722 + runtime.documents.delete(targetDocument);
12723 + return;
12724 + }
12725 + runtime.documents.set(targetDocument, count - 1);
12726 + };
12727 +}
12728 +function registerStyle24(hash, css) {
12729 + const runtime = getRuntime24();
12730 + runtime.styles.set(hash, css);
12731 + for (const targetDocument of runtime.documents.keys()) {
12732 + injectStyle24(targetDocument, hash, css);
12733 + }
12734 +}
12735 +if (typeof process === "undefined" || true) {
12736 + registerStyle24("4780fe0b1b", "._4d71ad18128c9cb8__error-boundary{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-height:100%;padding:16px}");
12737 +}
12738 +var style_module_default8 = { "error-boundary": "_4d71ad18128c9cb8__error-boundary" };
12739 +function CopyErrorButton({ error }) {
12740 + const ref = (0, import_compose3.useCopyToClipboard)(() => error.stack ?? String(error));
12741 + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components13.Button, { __next40pxDefaultSize: true, variant: "secondary", ref, children: (0, import_i18n15.__)("Copy error") });
12742 +}
12743 +var ErrorBoundary = class extends import_element38.Component {
12744 + constructor(props) {
12745 + super(props);
12746 + this.state = { error: null };
12747 + }
12748 + static getDerivedStateFromError(error) {
12749 + return { error };
12750 + }
12751 + render() {
12752 + const { error } = this.state;
12753 + if (!error) {
12754 + return this.props.children;
12755 + }
12756 + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: style_module_default8["error-boundary"], children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(empty_state_exports.Root, { children: [
12757 + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(empty_state_exports.Icon, { icon: caution_default }),
12758 + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(empty_state_exports.Title, { children: (0, import_i18n15.__)("Something went wrong") }),
12759 + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(empty_state_exports.Description, { children: (0, import_i18n15.__)(
12760 + "This part of the screen could not be displayed. Reloading the page may help."
12761 + ) }),
12762 + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(empty_state_exports.Actions, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CopyErrorButton, { error }) })
12763 + ] }) });
12764 + }
12765 +};
12766 +
12767 +// packages/boot/build-module/components/plugin-area/index.mjs
12768 +var import_data11 = __toESM(require_data(), 1);
12769 +var import_i18n16 = __toESM(require_i18n(), 1);
12770 +var import_notices2 = __toESM(require_notices(), 1);
12771 +var import_plugins = __toESM(require_plugins(), 1);
12772 +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
12773 +function PluginArea() {
12774 + const { createErrorNotice } = (0, import_data11.useDispatch)(import_notices2.store);
12775 + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
12776 + import_plugins.PluginArea,
12777 + {
12778 + onError: (name) => {
12779 + createErrorNotice(
12780 + (0, import_i18n16.sprintf)(
12781 + /* translators: %s: plugin name */
12782 + (0, import_i18n16.__)(
12783 + 'The "%s" plugin has encountered an error and cannot be rendered.'
12784 + ),
12785 + name
12786 + )
12787 + );
12788 + }
12789 + }
12790 + );
12791 +}
12792 +
2519 12793 // packages/boot/build-module/components/app/use-route-title.mjs
2520 -var import_element14 = __toESM(require_element(), 1);
2521 -var import_data10 = __toESM(require_data(), 1);
2522 -var import_core_data5 = __toESM(require_core_data(), 1);
2523 -var import_i18n10 = __toESM(require_i18n(), 1);
12794 +var import_element39 = __toESM(require_element(), 1);
12795 +var import_data12 = __toESM(require_data(), 1);
12796 +var import_core_data6 = __toESM(require_core_data(), 1);
12797 +var import_i18n17 = __toESM(require_i18n(), 1);
2524 12798 var import_html_entities2 = __toESM(require_html_entities(), 1);
2525 12799 import { speak } from "@wordpress/a11y";
2526 12800 import { privateApis as routePrivateApis4 } from "@wordpress/route";
2527 -var { useLocation, useMatches: useMatches2 } = unlock(routePrivateApis4);
12801 +var { useLocation, useMatches: useMatches2 } = unlock2(routePrivateApis4);
2528 12802 function useRouteTitle() {
2529 12803 const location = useLocation();
2530 12804 const matches = useMatches2();
2531 12805 const currentMatch = matches[matches.length - 1];
2532 12806 const routeTitle = currentMatch?.loaderData?.title;
2533 - const siteTitle = (0, import_data10.useSelect)(
2534 - (select) => select(import_core_data5.store).getEntityRecord(
12807 + const siteTitle = (0, import_data12.useSelect)(
12808 + (select) => select(import_core_data6.store).getEntityRecord(
2535 12809 "root",
2536 12810 "__unstableBase"
2537 12811 )?.name,
2538 12812 []
2539 12813 );
2540 - const isInitialLocationRef = (0, import_element14.useRef)(true);
2541 - (0, import_element14.useEffect)(() => {
12814 + const isInitialLocationRef = (0, import_element39.useRef)(true);
12815 + (0, import_element39.useEffect)(() => {
2542 12816 isInitialLocationRef.current = false;
2543 12817 }, [location]);
2544 - (0, import_element14.useEffect)(() => {
12818 + (0, import_element39.useEffect)(() => {
2545 12819 if (isInitialLocationRef.current) {
2546 12820 return;
2547 12821 }
2548 12822 if (routeTitle && typeof routeTitle === "string" && siteTitle && typeof siteTitle === "string") {
@@ -2547,11 +12821,11 @@
2547 12821 }
2548 12822 if (routeTitle && typeof routeTitle === "string" && siteTitle && typeof siteTitle === "string") {
2549 12823 const decodedRouteTitle = (0, import_html_entities2.decodeEntities)(routeTitle);
2550 12824 const decodedSiteTitle = (0, import_html_entities2.decodeEntities)(siteTitle);
2551 - const formattedTitle = (0, import_i18n10.sprintf)(
12825 + const formattedTitle = (0, import_i18n17.sprintf)(
2552 12826 /* translators: Admin document title. 1: Admin screen name, 2: Site name. */
2553 - (0, import_i18n10.__)("%1$s \u2039 %2$s \u2014 WordPress"),
12827 + (0, import_i18n17.__)("%1$s ‹ %2$s — WordPress"),
2554 12828 decodedRouteTitle,
2555 12829 decodedSiteTitle
2556 12830 );
2557 12831 document.title = formattedTitle;
@@ -2561,44 +12835,119 @@
2561 12835 }
2562 12836 }, [routeTitle, siteTitle, location]);
2563 12837 }
2564 12838
2565 -// packages/boot/build-module/components/user-theme-provider/index.mjs
2566 -var import_theme = __toESM(require_theme(), 1);
2567 -var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
2568 -var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider;
2569 -var THEME_PRIMARY_COLORS = /* @__PURE__ */ new Map([
2570 - ["light", "#0085ba"],
2571 - ["modern", "#3858e9"],
2572 - ["blue", "#096484"],
2573 - ["coffee", "#46403c"],
2574 - ["ectoplasm", "#523f6d"],
2575 - ["midnight", "#e14d43"],
2576 - ["ocean", "#627c83"],
2577 - ["sunrise", "#dd823b"]
2578 -]);
2579 -function getAdminThemePrimaryColor() {
2580 - const theme = document.body.className.match(/admin-color-([a-z]+)/)?.[1];
2581 - return theme && THEME_PRIMARY_COLORS.get(theme);
12839 +// packages/boot/build-module/components/root/use-sync-body-background.mjs
12840 +var import_element40 = __toESM(require_element(), 1);
12841 +var import_compose4 = __toESM(require_compose(), 1);
12842 +function useSyncBodyBackground() {
12843 + const layoutRef = (0, import_element40.useRef)(null);
12844 + (0, import_compose4.useIsomorphicLayoutEffect)(() => {
12845 + if (!layoutRef.current) {
12846 + return;
12847 + }
12848 + const body = layoutRef.current.ownerDocument.body;
12849 + const bg = getComputedStyle(layoutRef.current).backgroundColor;
12850 + if (!bg) {
12851 + return;
12852 + }
12853 + const previousBackground = body.style.background;
12854 + body.style.background = bg;
12855 + return () => {
12856 + body.style.background = previousBackground;
12857 + };
12858 + }, []);
12859 + return layoutRef;
2582 12860 }
2583 -function UserThemeProvider({
2584 - color,
2585 - ...restProps
2586 -}) {
2587 - const primary = getAdminThemePrimaryColor();
2588 - return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ThemeProvider, { ...restProps, color: { primary, ...color } });
2589 -}
2590 12861
2591 12862 // packages/boot/build-module/components/root/index.mjs
2592 -var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
2593 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='be0c278a6c']")) {
2594 - const style = document.createElement("style");
2595 - style.setAttribute("data-wp-hash", "be0c278a6c");
2596 - style.appendChild(document.createTextNode(".boot-layout{background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}.boot-layout__sidebar-backdrop{background-color:#00000080;bottom:0;cursor:var(--wpds-cursor-control,pointer);left:0;position:fixed;right:0;top:0;z-index:100002}.boot-layout__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.boot-layout__sidebar.is-mobile{background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);bottom:0;box-shadow:2px 0 8px #0003;inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}.boot-layout__mobile-sidebar-drawer{left:0;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout__mobile-sidebar-drawer{top:46px}.boot-layout__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);display:flex;justify-content:flex-start;padding:16px;z-index:3}.boot-layout__canvas.has-mobile-drawer{padding-top:65px;position:relative}.boot-layout__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.boot-layout__surfaces{margin:8px}.boot-layout--single-page .boot-layout__surfaces{margin-top:0;margin-inline-start:0}}.boot-layout__inspector,.boot-layout__stage{background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border-radius:0;bottom:0;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__inspector,.boot-layout__stage{border-radius:8px;height:auto;margin:0;position:static;width:auto}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:auto}}.boot-layout__stage{z-index:2}@media (min-width:782px){.boot-layout__stage{z-index:auto}}.boot-layout__inspector{z-index:3}@media (min-width:782px){.boot-layout__inspector{z-index:auto}}.boot-layout__canvas{background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);border-radius:0;bottom:0;box-shadow:0 1px 3px #0000001a;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw;z-index:1}.boot-layout--single-page .boot-layout__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__canvas{border-radius:8px;height:auto;position:static;width:auto;z-index:auto}.boot-layout--single-page .boot-layout__canvas{height:auto}.boot-layout.has-canvas .boot-layout__stage,.boot-layout__inspector{max-width:400px}}.boot-layout__canvas .interface-interface-skeleton{height:100%;left:0!important;position:relative;top:0!important}.boot-layout.has-full-canvas .boot-layout__surfaces{gap:0;margin:0}.boot-layout.has-full-canvas .boot-layout__inspector,.boot-layout.has-full-canvas .boot-layout__stage{display:none}.boot-layout.has-full-canvas .boot-layout__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;left:0;margin:0;max-width:none;overflow:hidden;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:46px}@media (min-width:782px){.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:32px}}"));
2597 - document.head.appendChild(style);
12863 +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
12864 +var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash";
12865 +function getRuntime25() {
12866 + const globalScope = globalThis;
12867 + if (globalScope.__wpStyleRuntime) {
12868 + return globalScope.__wpStyleRuntime;
12869 + }
12870 + globalScope.__wpStyleRuntime = {
12871 + documents: /* @__PURE__ */ new Map(),
12872 + styles: /* @__PURE__ */ new Map(),
12873 + injectedStyles: /* @__PURE__ */ new WeakMap()
12874 + };
12875 + if (typeof document !== "undefined") {
12876 + registerDocument25(document);
12877 + }
12878 + return globalScope.__wpStyleRuntime;
2598 12879 }
2599 -var { useLocation: useLocation2, useMatches: useMatches3, Outlet } = unlock(routePrivateApis5);
2600 -function Root() {
12880 +function documentContainsStyleHash25(targetDocument, hash) {
12881 + if (!targetDocument.head) {
12882 + return false;
12883 + }
12884 + for (const style of targetDocument.head.querySelectorAll(
12885 + `style[${STYLE_HASH_ATTRIBUTE25}]`
12886 + )) {
12887 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) {
12888 + return true;
12889 + }
12890 + }
12891 + return false;
12892 +}
12893 +function injectStyle25(targetDocument, hash, css) {
12894 + if (!targetDocument.head) {
12895 + return;
12896 + }
12897 + const runtime = getRuntime25();
12898 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
12899 + if (!injectedStyles) {
12900 + injectedStyles = /* @__PURE__ */ new Set();
12901 + runtime.injectedStyles.set(targetDocument, injectedStyles);
12902 + }
12903 + if (injectedStyles.has(hash)) {
12904 + return;
12905 + }
12906 + if (documentContainsStyleHash25(targetDocument, hash)) {
12907 + injectedStyles.add(hash);
12908 + return;
12909 + }
12910 + const style = targetDocument.createElement("style");
12911 + style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash);
12912 + style.appendChild(targetDocument.createTextNode(css));
12913 + targetDocument.head.appendChild(style);
12914 + injectedStyles.add(hash);
12915 +}
12916 +function registerDocument25(targetDocument) {
12917 + const runtime = getRuntime25();
12918 + runtime.documents.set(
12919 + targetDocument,
12920 + (runtime.documents.get(targetDocument) ?? 0) + 1
12921 + );
12922 + for (const [hash, css] of runtime.styles) {
12923 + injectStyle25(targetDocument, hash, css);
12924 + }
12925 + return () => {
12926 + const count = runtime.documents.get(targetDocument);
12927 + if (count === void 0) {
12928 + return;
12929 + }
12930 + if (count <= 1) {
12931 + runtime.documents.delete(targetDocument);
12932 + return;
12933 + }
12934 + runtime.documents.set(targetDocument, count - 1);
12935 + };
12936 +}
12937 +function registerStyle25(hash, css) {
12938 + const runtime = getRuntime25();
12939 + runtime.styles.set(hash, css);
12940 + for (const targetDocument of runtime.documents.keys()) {
12941 + injectStyle25(targetDocument, hash, css);
12942 + }
12943 +}
12944 +if (typeof process === "undefined" || true) {
12945 + registerStyle25("b215aa5eaa", ".c8317e9ebb034cfa__layout{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}@media (min-width:600px){.c8317e9ebb034cfa__layout{bottom:0;inset-inline-end:0;inset-inline-start:0;min-height:calc(100vh - 46px);position:absolute;top:0}}@media (min-width:782px){.c8317e9ebb034cfa__layout{min-height:calc(100vh - 32px)}body:has(.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas) .c8317e9ebb034cfa__layout{min-height:100vh}}:where(.c8317e9ebb034cfa__layout) img{height:auto;max-width:100%}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar{bottom:var(--wpds-dimension-size-md,32px);box-sizing:border-box;display:flex;flex-direction:column;left:0;padding-inline:16px;pointer-events:none;position:fixed;right:0}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar ._94ac6b8f274ce2f6__components-snackbar,.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar .components-snackbar{margin-inline:auto}.bfc3fedf39b1cf71__sidebar-backdrop{background-color:rgba(0,0,0,.5);bottom:0;cursor:var(--wpds-cursor-control,pointer);inset-inline-end:0;inset-inline-start:0;position:fixed;top:0;z-index:100002}.bb4f70cd030be0a3__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.bb4f70cd030be0a3__sidebar._27e6d590dc5963c9__is-mobile{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.2);inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}._0eb5d3a3e94d6273__mobile-sidebar-drawer{inset-inline-end:0;inset-inline-start:0;position:fixed;top:0}._26789cb167e9f578__layout-single-page ._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:46px}._0eb5d3a3e94d6273__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);display:flex;justify-content:flex-start;padding:16px;z-index:3}.fb03501e629fd04e__canvas.fa94dab2ab1e36f3__has-mobile-drawer{padding-top:65px;position:relative}.a03baddce3ef2026__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.a03baddce3ef2026__surfaces{margin:8px}._26789cb167e9f578__layout-single-page .a03baddce3ef2026__surfaces{margin-top:0;margin-inline-start:0}}._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-radius:0;bottom:0;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{border-radius:var(--wpds-border-radius-xl,12px);height:auto;margin:0;position:static;width:auto}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:auto}}.d12c9efe707e6cb3__stage{z-index:2}@media (min-width:782px){.d12c9efe707e6cb3__stage{z-index:auto}}._7ffe3a3db6f69647__inspector{z-index:3}@media (min-width:782px){._7ffe3a3db6f69647__inspector{z-index:auto}}.fb03501e629fd04e__canvas{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:0;bottom:0;box-shadow:0 1px 3px rgba(0,0,0,.1);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw;z-index:1}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.fb03501e629fd04e__canvas{border-radius:var(--wpds-border-radius-xl,12px);height:auto;position:static;width:auto;z-index:auto}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:auto}._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.f7fe42ef8c67e96f__has-canvas .d12c9efe707e6cb3__stage{max-width:400px}}.fb03501e629fd04e__canvas .interface-interface-skeleton{height:100%;inset-inline-start:0!important;position:relative;top:0!important}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .a03baddce3ef2026__surfaces{gap:0;margin:0}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas ._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .d12c9efe707e6cb3__stage{display:none}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;inset-inline-end:0;inset-inline-start:0;margin:0;max-width:none;overflow:hidden;position:fixed;top:var(--wp-admin--admin-bar--height,0)}._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:46px}@media (min-width:782px){._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:32px}}@media (max-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage,.fb03501e629fd04e__canvas:not(.fa94dab2ab1e36f3__has-mobile-drawer){height:calc(100vh - var(--wp-admin--admin-bar--height, 0px));top:var(--wp-admin--admin-bar--height,0)}._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:var(--wp-admin--admin-bar--height,0)}}@media not (prefers-reduced-motion:reduce){.fb03501e629fd04e__canvas .interface-interface-skeleton__header{view-transition-name:boot--canvas-header}.fb03501e629fd04e__canvas .interface-interface-skeleton__sidebar{view-transition-name:boot--canvas-sidebar}.d12c9efe707e6cb3__stage{view-transition-name:boot--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot--canvas}@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.d12c9efe707e6cb3__stage{view-transition-name:boot-safari--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot-safari--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot-safari--canvas}}}@media (max-width:782px){:root:has(.c8317e9ebb034cfa__layout) *{view-transition-name:none!important}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(root),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(root){animation-duration:.25s}@media not (prefers-reduced-motion:reduce){:root:has(.c8317e9ebb034cfa__layout) .components-popover:first-of-type{view-transition-name:boot--components-popover}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-header),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-sidebar),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot-safari--canvas){z-index:1}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage){width:auto}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage){background:#fff;border-radius:var(--wpds-border-radius-xl,12px);height:100%;object-fit:none;object-position:left top;overflow:hidden;width:100%}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas){object-position:center top}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage):only-child{animation-name:ef68027ea03aa34b__zoomOut;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage):only-child{animation-name:_0752ac81dff4c432__zoomIn;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas):only-child{animation-name:_3a2e4dc465681136__slideFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas):only-child{animation-name:_86a367ac26a1b61e__slideToRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-header):only-child{animation-name:_462399c0e9d64199__slideHeaderFromTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-header):only-child{animation-name:_8b272f30d43c9f38__slideHeaderToTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-sidebar):only-child{animation-name:_69ed6a71d53a2e0c__slideSidebarFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-sidebar):only-child{animation-name:bf0697a36b00caad__slideSidebarToRight;will-change:transform}@keyframes ef68027ea03aa34b__zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes _0752ac81dff4c432__zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes _3a2e4dc465681136__slideFromRight{0%{transform:translateX(100vw)}to{transform:translateX(0)}}@keyframes _86a367ac26a1b61e__slideToRight{0%{transform:translateX(0)}to{transform:translateX(100vw)}}@keyframes _462399c0e9d64199__slideHeaderFromTop{0%{transform:translateY(-100%)}}@keyframes _8b272f30d43c9f38__slideHeaderToTop{to{transform:translateY(-100%)}}@keyframes _69ed6a71d53a2e0c__slideSidebarFromRight{0%{transform:translateX(100%)}}@keyframes bf0697a36b00caad__slideSidebarToRight{to{transform:translateX(100%)}}");
12946 +}
12947 +var style_module_default9 = { "layout": "c8317e9ebb034cfa__layout", "has-full-canvas": "e97bb2807a9c4687__has-full-canvas", "notices-snackbar": "b8f8c6cf9ae266bf__notices-snackbar", "components-snackbar": "_94ac6b8f274ce2f6__components-snackbar", "sidebar-backdrop": "bfc3fedf39b1cf71__sidebar-backdrop", "sidebar": "bb4f70cd030be0a3__sidebar", "is-mobile": "_27e6d590dc5963c9__is-mobile", "mobile-sidebar-drawer": "_0eb5d3a3e94d6273__mobile-sidebar-drawer", "layout-single-page": "_26789cb167e9f578__layout-single-page", "canvas": "fb03501e629fd04e__canvas", "has-mobile-drawer": "fa94dab2ab1e36f3__has-mobile-drawer", "surfaces": "a03baddce3ef2026__surfaces", "stage": "d12c9efe707e6cb3__stage", "inspector": "_7ffe3a3db6f69647__inspector", "has-canvas": "f7fe42ef8c67e96f__has-canvas", "zoomOut": "ef68027ea03aa34b__zoomOut", "zoomIn": "_0752ac81dff4c432__zoomIn", "slideFromRight": "_3a2e4dc465681136__slideFromRight", "slideToRight": "_86a367ac26a1b61e__slideToRight", "slideHeaderFromTop": "_462399c0e9d64199__slideHeaderFromTop", "slideHeaderToTop": "_8b272f30d43c9f38__slideHeaderToTop", "slideSidebarFromRight": "_69ed6a71d53a2e0c__slideSidebarFromRight", "slideSidebarToRight": "bf0697a36b00caad__slideSidebarToRight" };
12948 +var { useLocation: useLocation2, useMatches: useMatches3, Outlet } = unlock2(routePrivateApis5);
12949 +function Root3() {
2601 12950 const matches = useMatches3();
2602 12951 const location = useLocation2();
2603 12952 const currentMatch = matches[matches.length - 1];
2604 12953 const canvas = currentMatch?.loaderData?.canvas;
@@ -2604,117 +12953,238 @@
2604 12953 const canvas = currentMatch?.loaderData?.canvas;
2605 12954 const routeContentModule = currentMatch?.loaderData?.routeContentModule;
2606 12955 const isFullScreen = canvas && !canvas.isPreview;
2607 12956 useRouteTitle();
2608 - const isMobileViewport = (0, import_compose4.useViewportMatch)("medium", "<");
2609 - const [isMobileSidebarOpen, setIsMobileSidebarOpen] = (0, import_element15.useState)(false);
2610 - const disableMotion = (0, import_compose4.useReducedMotion)();
2611 - (0, import_element15.useEffect)(() => {
12957 + const isMobileViewport = (0, import_compose5.useViewportMatch)("medium", "<");
12958 + const [isMobileSidebarOpen, setIsMobileSidebarOpen] = (0, import_element41.useState)(false);
12959 + const disableMotion = (0, import_compose5.useReducedMotion)();
12960 + (0, import_element41.useEffect)(() => {
2612 12961 setIsMobileSidebarOpen(false);
2613 12962 }, [location.pathname, isMobileViewport]);
2614 - return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components15.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(UserThemeProvider, { isRoot: true, color: { bg: "#f8f8f8" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(UserThemeProvider, { color: { bg: "#1d2327" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2615 - "div",
2616 - {
2617 - className: clsx_default("boot-layout", {
2618 - "has-canvas": !!canvas || canvas === null,
2619 - "has-full-canvas": isFullScreen
2620 - }),
2621 - children: [
2622 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SavePanel, {}),
2623 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_notices.SnackbarNotices, { className: "boot-notices__snackbar" }),
2624 - isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(page_default.SidebarToggleFill, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2625 - import_components15.Button,
12963 + const themeColors = (0, import_element41.useMemo)(getAdminThemeColors, []);
12964 + const layoutRef = useSyncBodyBackground();
12965 + return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components14.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(tooltip_exports.Provider, { children: [
12966 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PluginArea, {}),
12967 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
12968 + import_theme.ThemeProvider,
12969 + {
12970 + isRoot: true,
12971 + color: { ...themeColors, background: "#f8f8f8" },
12972 + children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_theme.ThemeProvider, { color: themeColors, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
12973 + "div",
2626 12974 {
2627 - icon: menu_default,
2628 - onClick: () => setIsMobileSidebarOpen(true),
2629 - label: (0, import_i18n11.__)("Open navigation panel"),
2630 - size: "compact"
2631 - }
2632 - ) }),
2633 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components15.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2634 - import_components15.__unstableMotion.div,
2635 - {
2636 - initial: { opacity: 0 },
2637 - animate: { opacity: 1 },
2638 - exit: { opacity: 0 },
2639 - transition: {
2640 - type: "tween",
2641 - duration: disableMotion ? 0 : 0.2,
2642 - ease: "easeOut"
2643 - },
2644 - className: "boot-layout__sidebar-backdrop",
2645 - onClick: () => setIsMobileSidebarOpen(false),
2646 - onKeyDown: (event) => {
2647 - if (event.key === "Escape") {
2648 - setIsMobileSidebarOpen(false);
2649 - }
2650 - },
2651 - role: "button",
2652 - tabIndex: -1,
2653 - "aria-label": (0, import_i18n11.__)(
2654 - "Close navigation panel"
2655 - )
2656 - }
2657 - ) }),
2658 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components15.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2659 - import_components15.__unstableMotion.div,
2660 - {
2661 - initial: { x: "-100%" },
2662 - animate: { x: 0 },
2663 - exit: { x: "-100%" },
2664 - transition: {
2665 - type: "tween",
2666 - duration: disableMotion ? 0 : 0.2,
2667 - ease: "easeOut"
2668 - },
2669 - className: "boot-layout__sidebar is-mobile",
2670 - children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Sidebar, {})
2671 - }
2672 - ) }),
2673 - !isMobileViewport && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__sidebar", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Sidebar, {}) }),
2674 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__surfaces", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(UserThemeProvider, { color: { bg: "#ffffff" }, children: [
2675 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Outlet, {}),
2676 - (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2677 - "div",
2678 - {
2679 - className: clsx_default(
2680 - "boot-layout__canvas",
12975 + ref: layoutRef,
12976 + className: clsx_default(style_module_default9.layout, {
12977 + [style_module_default9["has-canvas"]]: !!canvas || canvas === null,
12978 + [style_module_default9["has-full-canvas"]]: isFullScreen
12979 + }),
12980 + children: [
12981 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_editor5.UnsavedChangesWarning, {}),
12982 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SavePanel, {}),
12983 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
12984 + import_notices3.SnackbarNotices,
2681 12985 {
2682 - "has-mobile-drawer": canvas?.isPreview && isMobileViewport
12986 + className: style_module_default9["notices-snackbar"]
2683 12987 }
2684 12988 ),
2685 - children: [
2686 - canvas?.isPreview && isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "boot-layout__mobile-sidebar-drawer", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2687 - import_components15.Button,
2688 - {
2689 - icon: menu_default,
2690 - onClick: () => setIsMobileSidebarOpen(
2691 - true
2692 - ),
2693 - label: (0, import_i18n11.__)(
2694 - "Open navigation panel"
2695 - ),
2696 - size: "compact"
2697 - }
2698 - ) }),
2699 - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2700 - CanvasRenderer,
2701 - {
2702 - canvas,
2703 - routeContentModule
2704 - }
2705 - )
2706 - ]
2707 - }
2708 - )
2709 - ] }) })
2710 - ]
2711 - }
2712 - ) }) }) });
12989 + isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(page_default.SidebarToggleFill, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
12990 + import_components14.Button,
12991 + {
12992 + icon: menu_default,
12993 + onClick: () => setIsMobileSidebarOpen(true),
12994 + label: (0, import_i18n18.__)("Open navigation panel"),
12995 + size: "compact"
12996 + }
12997 + ) }),
12998 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components14.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
12999 + import_components14.__unstableMotion.div,
13000 + {
13001 + initial: { opacity: 0 },
13002 + animate: { opacity: 1 },
13003 + exit: { opacity: 0 },
13004 + transition: {
13005 + type: "tween",
13006 + duration: disableMotion ? 0 : 0.2,
13007 + ease: "easeOut"
13008 + },
13009 + className: style_module_default9["sidebar-backdrop"],
13010 + onClick: () => setIsMobileSidebarOpen(false),
13011 + onKeyDown: (event) => {
13012 + if (event.key === "Escape") {
13013 + setIsMobileSidebarOpen(
13014 + false
13015 + );
13016 + }
13017 + },
13018 + role: "button",
13019 + tabIndex: -1,
13020 + "aria-label": (0, import_i18n18.__)(
13021 + "Close navigation panel"
13022 + )
13023 + }
13024 + ) }),
13025 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components14.__unstableAnimatePresence, { children: isMobileViewport && isMobileSidebarOpen && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
13026 + import_components14.__unstableMotion.div,
13027 + {
13028 + initial: { x: "-100%" },
13029 + animate: { x: 0 },
13030 + exit: { x: "-100%" },
13031 + transition: {
13032 + type: "tween",
13033 + duration: disableMotion ? 0 : 0.2,
13034 + ease: "easeOut"
13035 + },
13036 + className: clsx_default(
13037 + style_module_default9.sidebar,
13038 + style_module_default9["is-mobile"]
13039 + ),
13040 + children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Sidebar, {})
13041 + }
13042 + ) }),
13043 + !isMobileViewport && !isFullScreen && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: style_module_default9.sidebar, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Sidebar, {}) }),
13044 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: style_module_default9.surfaces, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
13045 + import_theme.ThemeProvider,
13046 + {
13047 + color: {
13048 + ...themeColors,
13049 + // Reset to the default background color.
13050 + background: "#fcfcfc"
13051 + },
13052 + children: [
13053 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Outlet, {}),
13054 + (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
13055 + "div",
13056 + {
13057 + className: clsx_default(style_module_default9.canvas, {
13058 + [style_module_default9["has-mobile-drawer"]]: canvas?.isPreview && isMobileViewport
13059 + }),
13060 + children: [
13061 + canvas?.isPreview && isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
13062 + "div",
13063 + {
13064 + className: style_module_default9["mobile-sidebar-drawer"],
13065 + children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
13066 + import_components14.Button,
13067 + {
13068 + icon: menu_default,
13069 + onClick: () => setIsMobileSidebarOpen(
13070 + true
13071 + ),
13072 + label: (0, import_i18n18.__)(
13073 + "Open navigation panel"
13074 + ),
13075 + size: "compact"
13076 + }
13077 + )
13078 + }
13079 + ),
13080 + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
13081 + CanvasRenderer,
13082 + {
13083 + canvas,
13084 + routeContentModule
13085 + }
13086 + ) })
13087 + ]
13088 + }
13089 + )
13090 + ]
13091 + }
13092 + ) })
13093 + ]
13094 + }
13095 + ) })
13096 + }
13097 + )
13098 + ] }) });
2713 13099 }
2714 13100
2715 13101 // packages/boot/build-module/components/app/router.mjs
2716 -var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
13102 +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
13103 +var STYLE_HASH_ATTRIBUTE26 = "data-wp-hash";
13104 +function getRuntime26() {
13105 + const globalScope = globalThis;
13106 + if (globalScope.__wpStyleRuntime) {
13107 + return globalScope.__wpStyleRuntime;
13108 + }
13109 + globalScope.__wpStyleRuntime = {
13110 + documents: /* @__PURE__ */ new Map(),
13111 + styles: /* @__PURE__ */ new Map(),
13112 + injectedStyles: /* @__PURE__ */ new WeakMap()
13113 + };
13114 + if (typeof document !== "undefined") {
13115 + registerDocument26(document);
13116 + }
13117 + return globalScope.__wpStyleRuntime;
13118 +}
13119 +function documentContainsStyleHash26(targetDocument, hash) {
13120 + if (!targetDocument.head) {
13121 + return false;
13122 + }
13123 + for (const style of targetDocument.head.querySelectorAll(
13124 + `style[${STYLE_HASH_ATTRIBUTE26}]`
13125 + )) {
13126 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE26) === hash) {
13127 + return true;
13128 + }
13129 + }
13130 + return false;
13131 +}
13132 +function injectStyle26(targetDocument, hash, css) {
13133 + if (!targetDocument.head) {
13134 + return;
13135 + }
13136 + const runtime = getRuntime26();
13137 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
13138 + if (!injectedStyles) {
13139 + injectedStyles = /* @__PURE__ */ new Set();
13140 + runtime.injectedStyles.set(targetDocument, injectedStyles);
13141 + }
13142 + if (injectedStyles.has(hash)) {
13143 + return;
13144 + }
13145 + if (documentContainsStyleHash26(targetDocument, hash)) {
13146 + injectedStyles.add(hash);
13147 + return;
13148 + }
13149 + const style = targetDocument.createElement("style");
13150 + style.setAttribute(STYLE_HASH_ATTRIBUTE26, hash);
13151 + style.appendChild(targetDocument.createTextNode(css));
13152 + targetDocument.head.appendChild(style);
13153 + injectedStyles.add(hash);
13154 +}
13155 +function registerDocument26(targetDocument) {
13156 + const runtime = getRuntime26();
13157 + runtime.documents.set(
13158 + targetDocument,
13159 + (runtime.documents.get(targetDocument) ?? 0) + 1
13160 + );
13161 + for (const [hash, css] of runtime.styles) {
13162 + injectStyle26(targetDocument, hash, css);
13163 + }
13164 + return () => {
13165 + const count = runtime.documents.get(targetDocument);
13166 + if (count === void 0) {
13167 + return;
13168 + }
13169 + if (count <= 1) {
13170 + runtime.documents.delete(targetDocument);
13171 + return;
13172 + }
13173 + runtime.documents.set(targetDocument, count - 1);
13174 + };
13175 +}
13176 +function registerStyle26(hash, css) {
13177 + const runtime = getRuntime26();
13178 + runtime.styles.set(hash, css);
13179 + for (const targetDocument of runtime.documents.keys()) {
13180 + injectStyle26(targetDocument, hash, css);
13181 + }
13182 +}
13183 +if (typeof process === "undefined" || true) {
13184 + registerStyle26("b215aa5eaa", ".c8317e9ebb034cfa__layout{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}@media (min-width:600px){.c8317e9ebb034cfa__layout{bottom:0;inset-inline-end:0;inset-inline-start:0;min-height:calc(100vh - 46px);position:absolute;top:0}}@media (min-width:782px){.c8317e9ebb034cfa__layout{min-height:calc(100vh - 32px)}body:has(.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas) .c8317e9ebb034cfa__layout{min-height:100vh}}:where(.c8317e9ebb034cfa__layout) img{height:auto;max-width:100%}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar{bottom:var(--wpds-dimension-size-md,32px);box-sizing:border-box;display:flex;flex-direction:column;left:0;padding-inline:16px;pointer-events:none;position:fixed;right:0}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar ._94ac6b8f274ce2f6__components-snackbar,.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar .components-snackbar{margin-inline:auto}.bfc3fedf39b1cf71__sidebar-backdrop{background-color:rgba(0,0,0,.5);bottom:0;cursor:var(--wpds-cursor-control,pointer);inset-inline-end:0;inset-inline-start:0;position:fixed;top:0;z-index:100002}.bb4f70cd030be0a3__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.bb4f70cd030be0a3__sidebar._27e6d590dc5963c9__is-mobile{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.2);inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}._0eb5d3a3e94d6273__mobile-sidebar-drawer{inset-inline-end:0;inset-inline-start:0;position:fixed;top:0}._26789cb167e9f578__layout-single-page ._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:46px}._0eb5d3a3e94d6273__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);display:flex;justify-content:flex-start;padding:16px;z-index:3}.fb03501e629fd04e__canvas.fa94dab2ab1e36f3__has-mobile-drawer{padding-top:65px;position:relative}.a03baddce3ef2026__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.a03baddce3ef2026__surfaces{margin:8px}._26789cb167e9f578__layout-single-page .a03baddce3ef2026__surfaces{margin-top:0;margin-inline-start:0}}._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-radius:0;bottom:0;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{border-radius:var(--wpds-border-radius-xl,12px);height:auto;margin:0;position:static;width:auto}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:auto}}.d12c9efe707e6cb3__stage{z-index:2}@media (min-width:782px){.d12c9efe707e6cb3__stage{z-index:auto}}._7ffe3a3db6f69647__inspector{z-index:3}@media (min-width:782px){._7ffe3a3db6f69647__inspector{z-index:auto}}.fb03501e629fd04e__canvas{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:0;bottom:0;box-shadow:0 1px 3px rgba(0,0,0,.1);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw;z-index:1}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.fb03501e629fd04e__canvas{border-radius:var(--wpds-border-radius-xl,12px);height:auto;position:static;width:auto;z-index:auto}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:auto}._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.f7fe42ef8c67e96f__has-canvas .d12c9efe707e6cb3__stage{max-width:400px}}.fb03501e629fd04e__canvas .interface-interface-skeleton{height:100%;inset-inline-start:0!important;position:relative;top:0!important}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .a03baddce3ef2026__surfaces{gap:0;margin:0}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas ._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .d12c9efe707e6cb3__stage{display:none}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;inset-inline-end:0;inset-inline-start:0;margin:0;max-width:none;overflow:hidden;position:fixed;top:var(--wp-admin--admin-bar--height,0)}._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:46px}@media (min-width:782px){._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:32px}}@media (max-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage,.fb03501e629fd04e__canvas:not(.fa94dab2ab1e36f3__has-mobile-drawer){height:calc(100vh - var(--wp-admin--admin-bar--height, 0px));top:var(--wp-admin--admin-bar--height,0)}._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:var(--wp-admin--admin-bar--height,0)}}@media not (prefers-reduced-motion:reduce){.fb03501e629fd04e__canvas .interface-interface-skeleton__header{view-transition-name:boot--canvas-header}.fb03501e629fd04e__canvas .interface-interface-skeleton__sidebar{view-transition-name:boot--canvas-sidebar}.d12c9efe707e6cb3__stage{view-transition-name:boot--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot--canvas}@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.d12c9efe707e6cb3__stage{view-transition-name:boot-safari--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot-safari--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot-safari--canvas}}}@media (max-width:782px){:root:has(.c8317e9ebb034cfa__layout) *{view-transition-name:none!important}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(root),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(root){animation-duration:.25s}@media not (prefers-reduced-motion:reduce){:root:has(.c8317e9ebb034cfa__layout) .components-popover:first-of-type{view-transition-name:boot--components-popover}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-header),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-sidebar),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot-safari--canvas){z-index:1}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage){width:auto}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage){background:#fff;border-radius:var(--wpds-border-radius-xl,12px);height:100%;object-fit:none;object-position:left top;overflow:hidden;width:100%}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas){object-position:center top}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage):only-child{animation-name:ef68027ea03aa34b__zoomOut;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage):only-child{animation-name:_0752ac81dff4c432__zoomIn;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas):only-child{animation-name:_3a2e4dc465681136__slideFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas):only-child{animation-name:_86a367ac26a1b61e__slideToRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-header):only-child{animation-name:_462399c0e9d64199__slideHeaderFromTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-header):only-child{animation-name:_8b272f30d43c9f38__slideHeaderToTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-sidebar):only-child{animation-name:_69ed6a71d53a2e0c__slideSidebarFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-sidebar):only-child{animation-name:bf0697a36b00caad__slideSidebarToRight;will-change:transform}@keyframes ef68027ea03aa34b__zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes _0752ac81dff4c432__zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes _3a2e4dc465681136__slideFromRight{0%{transform:translateX(100vw)}to{transform:translateX(0)}}@keyframes _86a367ac26a1b61e__slideToRight{0%{transform:translateX(0)}to{transform:translateX(100vw)}}@keyframes _462399c0e9d64199__slideHeaderFromTop{0%{transform:translateY(-100%)}}@keyframes _8b272f30d43c9f38__slideHeaderToTop{to{transform:translateY(-100%)}}@keyframes _69ed6a71d53a2e0c__slideSidebarFromRight{0%{transform:translateX(100%)}}@keyframes bf0697a36b00caad__slideSidebarToRight{to{transform:translateX(100%)}}");
13185 +}
13186 +var style_module_default10 = { "layout": "c8317e9ebb034cfa__layout", "has-full-canvas": "e97bb2807a9c4687__has-full-canvas", "notices-snackbar": "b8f8c6cf9ae266bf__notices-snackbar", "components-snackbar": "_94ac6b8f274ce2f6__components-snackbar", "sidebar-backdrop": "bfc3fedf39b1cf71__sidebar-backdrop", "sidebar": "bb4f70cd030be0a3__sidebar", "is-mobile": "_27e6d590dc5963c9__is-mobile", "mobile-sidebar-drawer": "_0eb5d3a3e94d6273__mobile-sidebar-drawer", "layout-single-page": "_26789cb167e9f578__layout-single-page", "canvas": "fb03501e629fd04e__canvas", "has-mobile-drawer": "fa94dab2ab1e36f3__has-mobile-drawer", "surfaces": "a03baddce3ef2026__surfaces", "stage": "d12c9efe707e6cb3__stage", "inspector": "_7ffe3a3db6f69647__inspector", "has-canvas": "f7fe42ef8c67e96f__has-canvas", "zoomOut": "ef68027ea03aa34b__zoomOut", "zoomIn": "_0752ac81dff4c432__zoomIn", "slideFromRight": "_3a2e4dc465681136__slideFromRight", "slideToRight": "_86a367ac26a1b61e__slideToRight", "slideHeaderFromTop": "_462399c0e9d64199__slideHeaderFromTop", "slideHeaderToTop": "_8b272f30d43c9f38__slideHeaderToTop", "slideSidebarFromRight": "_69ed6a71d53a2e0c__slideSidebarFromRight", "slideSidebarToRight": "bf0697a36b00caad__slideSidebarToRight" };
2717 13187 var {
2718 13188 createLazyRoute,
2719 13189 createRouter,
2720 13190 createRootRoute,
@@ -2722,11 +13192,11 @@
2722 13192 RouterProvider,
2723 13193 createBrowserHistory,
2724 13194 parseHref,
2725 13195 useLoaderData
2726 -} = unlock(routePrivateApis6);
13196 +} = unlock2(routePrivateApis6);
2727 13197 function NotFoundComponent() {
2728 - return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boot-layout__stage", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(page_default, { title: (0, import_i18n12.__)("Route not found"), hasPadding: true, children: (0, import_i18n12.__)("The page you're looking for does not exist") }) });
13198 + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: style_module_default10.stage, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(page_default, { title: (0, import_i18n19.__)("Route not found"), hasPadding: true, children: (0, import_i18n19.__)("The page you're looking for does not exist") }) });
2729 13199 }
2730 13200 function createRouteFromDefinition(route, parentRoute) {
2731 13201 let tanstackRoute = createRoute({
2732 13202 getParentRoute: () => parentRoute,
@@ -2753,9 +13223,9 @@
2753 13223 params: opts.params || {},
2754 13224 search: opts.deps || {}
2755 13225 };
2756 13226 const [, loaderData, canvasData, titleData] = await Promise.all([
2757 - (0, import_data11.resolveSelect)(import_core_data6.store).getEntityRecord(
13227 + (0, import_data13.resolveSelect)(import_core_data7.store).getEntityRecord(
2758 13228 "root",
2759 13229 "__unstableBase"
2760 13230 ),
2761 13231 routeConfig.loader ? routeConfig.loader(context) : Promise.resolve(void 0),
@@ -2765,12 +13235,17 @@
2765 13235 let inspector = true;
2766 13236 if (routeConfig.inspector) {
2767 13237 inspector = await routeConfig.inspector(context);
2768 13238 }
13239 + let stage = true;
13240 + if (routeConfig.stage) {
13241 + stage = await routeConfig.stage(context);
13242 + }
2769 13243 return {
2770 13244 ...loaderData,
2771 13245 canvas: canvasData,
2772 13246 inspector,
13247 + stage,
2773 13248 title: titleData,
2774 13249 routeContentModule: route.content_module
2775 13250 };
2776 13251 },
@@ -2781,12 +13256,12 @@
2781 13256 const Stage = module.stage;
2782 13257 const Inspector = module.inspector;
2783 13258 return createLazyRoute(route.path)({
2784 13259 component: function RouteComponent() {
2785 - const { inspector: showInspector } = useLoaderData({ from: route.path }) ?? {};
2786 - return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
2787 - Stage && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boot-layout__stage", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Stage, {}) }),
2788 - Inspector && showInspector && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boot-layout__inspector", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Inspector, {}) })
13260 + const { inspector: showInspector, stage: showStage } = useLoaderData({ from: route.path }) ?? {};
13261 + return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
13262 + Stage && showStage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: style_module_default10.stage, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Stage, {}) }) }),
13263 + Inspector && showInspector && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: style_module_default10.inspector, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Inspector, {}) }) })
2789 13264 ] });
2790 13265 }
2791 13266 });
2792 13267 });
@@ -2791,9 +13266,9 @@
2791 13266 });
2792 13267 });
2793 13268 return tanstackRoute;
2794 13269 }
2795 -function createRouteTree(routes, rootComponent = Root) {
13270 +function createRouteTree(routes, rootComponent = Root3) {
2796 13271 const rootRoute = createRootRoute({
2797 13272 component: rootComponent,
2798 13273 context: () => ({})
2799 13274 });
@@ -2818,11 +13293,11 @@
2818 13293 });
2819 13294 }
2820 13295 function Router({
2821 13296 routes,
2822 - rootComponent = Root
13297 + rootComponent = Root3
2823 13298 }) {
2824 - const router = (0, import_element16.useMemo)(() => {
13299 + const router = (0, import_element42.useMemo)(() => {
2825 13300 const history = createPathHistory();
2826 13301 const routeTree = createRouteTree(routes, rootComponent);
2827 13302 return createRouter({
2828 13303 history,
@@ -2840,23 +13315,104 @@
2840 13315 }
2841 13316 }
2842 13317 });
2843 13318 }, [routes, rootComponent]);
2844 - return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RouterProvider, { router });
13319 + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RouterProvider, { router });
2845 13320 }
2846 13321
2847 13322 // packages/boot/build-module/components/root/single-page.mjs
2848 -var import_notices2 = __toESM(require_notices(), 1);
2849 -var import_components16 = __toESM(require_components(), 1);
13323 +var import_notices4 = __toESM(require_notices(), 1);
13324 +var import_components15 = __toESM(require_components(), 1);
13325 +var import_element43 = __toESM(require_element(), 1);
2850 13326 import { privateApis as routePrivateApis7 } from "@wordpress/route";
2851 -var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
2852 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='be0c278a6c']")) {
2853 - const style = document.createElement("style");
2854 - style.setAttribute("data-wp-hash", "be0c278a6c");
2855 - style.appendChild(document.createTextNode(".boot-layout{background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}.boot-layout__sidebar-backdrop{background-color:#00000080;bottom:0;cursor:var(--wpds-cursor-control,pointer);left:0;position:fixed;right:0;top:0;z-index:100002}.boot-layout__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.boot-layout__sidebar.is-mobile{background:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);bottom:0;box-shadow:2px 0 8px #0003;inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}.boot-layout__mobile-sidebar-drawer{left:0;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout__mobile-sidebar-drawer{top:46px}.boot-layout__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);display:flex;justify-content:flex-start;padding:16px;z-index:3}.boot-layout__canvas.has-mobile-drawer{padding-top:65px;position:relative}.boot-layout__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.boot-layout__surfaces{margin:8px}.boot-layout--single-page .boot-layout__surfaces{margin-top:0;margin-inline-start:0}}.boot-layout__inspector,.boot-layout__stage{background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border-radius:0;bottom:0;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__inspector,.boot-layout__stage{border-radius:8px;height:auto;margin:0;position:static;width:auto}.boot-layout--single-page .boot-layout__inspector,.boot-layout--single-page .boot-layout__stage{height:auto}}.boot-layout__stage{z-index:2}@media (min-width:782px){.boot-layout__stage{z-index:auto}}.boot-layout__inspector{z-index:3}@media (min-width:782px){.boot-layout__inspector{z-index:auto}}.boot-layout__canvas{background:var(--wpds-color-bg-surface-neutral,#fcfcfc);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);border-radius:0;bottom:0;box-shadow:0 1px 3px #0000001a;color:var(--wpds-color-fg-content-neutral,#1e1e1e);flex:1;height:100vh;left:0;margin:0;overflow-y:auto;position:relative;position:fixed;right:0;top:0;width:100vw;z-index:1}.boot-layout--single-page .boot-layout__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.boot-layout__canvas{border-radius:8px;height:auto;position:static;width:auto;z-index:auto}.boot-layout--single-page .boot-layout__canvas{height:auto}.boot-layout.has-canvas .boot-layout__stage,.boot-layout__inspector{max-width:400px}}.boot-layout__canvas .interface-interface-skeleton{height:100%;left:0!important;position:relative;top:0!important}.boot-layout.has-full-canvas .boot-layout__surfaces{gap:0;margin:0}.boot-layout.has-full-canvas .boot-layout__inspector,.boot-layout.has-full-canvas .boot-layout__stage{display:none}.boot-layout.has-full-canvas .boot-layout__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;left:0;margin:0;max-width:none;overflow:hidden;position:fixed;right:0;top:0}.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:46px}@media (min-width:782px){.boot-layout--single-page .boot-layout.has-full-canvas .boot-layout__canvas{top:32px}}"));
2856 - document.head.appendChild(style);
13327 +var import_theme2 = __toESM(require_theme(), 1);
13328 +var import_editor6 = __toESM(require_editor(), 1);
13329 +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
13330 +var STYLE_HASH_ATTRIBUTE27 = "data-wp-hash";
13331 +function getRuntime27() {
13332 + const globalScope = globalThis;
13333 + if (globalScope.__wpStyleRuntime) {
13334 + return globalScope.__wpStyleRuntime;
13335 + }
13336 + globalScope.__wpStyleRuntime = {
13337 + documents: /* @__PURE__ */ new Map(),
13338 + styles: /* @__PURE__ */ new Map(),
13339 + injectedStyles: /* @__PURE__ */ new WeakMap()
13340 + };
13341 + if (typeof document !== "undefined") {
13342 + registerDocument27(document);
13343 + }
13344 + return globalScope.__wpStyleRuntime;
2857 13345 }
2858 -var { useMatches: useMatches4, Outlet: Outlet2 } = unlock(routePrivateApis7);
13346 +function documentContainsStyleHash27(targetDocument, hash) {
13347 + if (!targetDocument.head) {
13348 + return false;
13349 + }
13350 + for (const style of targetDocument.head.querySelectorAll(
13351 + `style[${STYLE_HASH_ATTRIBUTE27}]`
13352 + )) {
13353 + if (style.getAttribute(STYLE_HASH_ATTRIBUTE27) === hash) {
13354 + return true;
13355 + }
13356 + }
13357 + return false;
13358 +}
13359 +function injectStyle27(targetDocument, hash, css) {
13360 + if (!targetDocument.head) {
13361 + return;
13362 + }
13363 + const runtime = getRuntime27();
13364 + let injectedStyles = runtime.injectedStyles.get(targetDocument);
13365 + if (!injectedStyles) {
13366 + injectedStyles = /* @__PURE__ */ new Set();
13367 + runtime.injectedStyles.set(targetDocument, injectedStyles);
13368 + }
13369 + if (injectedStyles.has(hash)) {
13370 + return;
13371 + }
13372 + if (documentContainsStyleHash27(targetDocument, hash)) {
13373 + injectedStyles.add(hash);
13374 + return;
13375 + }
13376 + const style = targetDocument.createElement("style");
13377 + style.setAttribute(STYLE_HASH_ATTRIBUTE27, hash);
13378 + style.appendChild(targetDocument.createTextNode(css));
13379 + targetDocument.head.appendChild(style);
13380 + injectedStyles.add(hash);
13381 +}
13382 +function registerDocument27(targetDocument) {
13383 + const runtime = getRuntime27();
13384 + runtime.documents.set(
13385 + targetDocument,
13386 + (runtime.documents.get(targetDocument) ?? 0) + 1
13387 + );
13388 + for (const [hash, css] of runtime.styles) {
13389 + injectStyle27(targetDocument, hash, css);
13390 + }
13391 + return () => {
13392 + const count = runtime.documents.get(targetDocument);
13393 + if (count === void 0) {
13394 + return;
13395 + }
13396 + if (count <= 1) {
13397 + runtime.documents.delete(targetDocument);
13398 + return;
13399 + }
13400 + runtime.documents.set(targetDocument, count - 1);
13401 + };
13402 +}
13403 +function registerStyle27(hash, css) {
13404 + const runtime = getRuntime27();
13405 + runtime.styles.set(hash, css);
13406 + for (const targetDocument of runtime.documents.keys()) {
13407 + injectStyle27(targetDocument, hash, css);
13408 + }
13409 +}
13410 +if (typeof process === "undefined" || true) {
13411 + registerStyle27("b215aa5eaa", ".c8317e9ebb034cfa__layout{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:row;height:100%;isolation:isolate;width:100%}@media (min-width:600px){.c8317e9ebb034cfa__layout{bottom:0;inset-inline-end:0;inset-inline-start:0;min-height:calc(100vh - 46px);position:absolute;top:0}}@media (min-width:782px){.c8317e9ebb034cfa__layout{min-height:calc(100vh - 32px)}body:has(.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas) .c8317e9ebb034cfa__layout{min-height:100vh}}:where(.c8317e9ebb034cfa__layout) img{height:auto;max-width:100%}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar{bottom:var(--wpds-dimension-size-md,32px);box-sizing:border-box;display:flex;flex-direction:column;left:0;padding-inline:16px;pointer-events:none;position:fixed;right:0}.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar ._94ac6b8f274ce2f6__components-snackbar,.c8317e9ebb034cfa__layout .b8f8c6cf9ae266bf__notices-snackbar .components-snackbar{margin-inline:auto}.bfc3fedf39b1cf71__sidebar-backdrop{background-color:rgba(0,0,0,.5);bottom:0;cursor:var(--wpds-cursor-control,pointer);inset-inline-end:0;inset-inline-start:0;position:fixed;top:0;z-index:100002}.bb4f70cd030be0a3__sidebar{flex-shrink:0;height:100%;overflow:hidden;position:relative;width:240px}.bb4f70cd030be0a3__sidebar._27e6d590dc5963c9__is-mobile{background:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.2);inset-inline-start:0;max-width:85vw;position:fixed;top:0;width:300px;z-index:100003}._0eb5d3a3e94d6273__mobile-sidebar-drawer{inset-inline-end:0;inset-inline-start:0;position:fixed;top:0}._26789cb167e9f578__layout-single-page ._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:46px}._0eb5d3a3e94d6273__mobile-sidebar-drawer{align-items:center;background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-bottom:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);display:flex;justify-content:flex-start;padding:16px;z-index:3}.fb03501e629fd04e__canvas.fa94dab2ab1e36f3__has-mobile-drawer{padding-top:65px;position:relative}.a03baddce3ef2026__surfaces{display:flex;flex-grow:1;gap:8px;margin:0}@media (min-width:782px){.a03baddce3ef2026__surfaces{margin:8px}._26789cb167e9f578__layout-single-page .a03baddce3ef2026__surfaces{margin-top:0;margin-inline-start:0}}._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border-radius:0;bottom:0;color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:calc(100vh - 46px);top:46px}@media (min-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage{border-radius:var(--wpds-border-radius-xl,12px);height:auto;margin:0;position:static;width:auto}._26789cb167e9f578__layout-single-page ._7ffe3a3db6f69647__inspector,._26789cb167e9f578__layout-single-page .d12c9efe707e6cb3__stage{height:auto}}.d12c9efe707e6cb3__stage{z-index:2}@media (min-width:782px){.d12c9efe707e6cb3__stage{z-index:auto}}._7ffe3a3db6f69647__inspector{z-index:3}@media (min-width:782px){._7ffe3a3db6f69647__inspector{z-index:auto}}.fb03501e629fd04e__canvas{background:var(--wpds-color-background-surface-neutral,#fcfcfc);border:1px solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);border-radius:0;bottom:0;box-shadow:0 1px 3px rgba(0,0,0,.1);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);flex:1;height:100vh;inset-inline-end:0;inset-inline-start:0;margin:0;overflow-y:auto;position:relative;position:fixed;top:0;width:100vw;z-index:1}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:calc(100vh - 46px);top:46px}@media (min-width:782px){.fb03501e629fd04e__canvas{border-radius:var(--wpds-border-radius-xl,12px);height:auto;position:static;width:auto;z-index:auto}._26789cb167e9f578__layout-single-page .fb03501e629fd04e__canvas{height:auto}._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.f7fe42ef8c67e96f__has-canvas .d12c9efe707e6cb3__stage{max-width:400px}}.fb03501e629fd04e__canvas .interface-interface-skeleton{height:100%;inset-inline-start:0!important;position:relative;top:0!important}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .a03baddce3ef2026__surfaces{gap:0;margin:0}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas ._7ffe3a3db6f69647__inspector,.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .d12c9efe707e6cb3__stage{display:none}.c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{border:none;border-radius:0;bottom:0;box-shadow:none;inset-inline-end:0;inset-inline-start:0;margin:0;max-width:none;overflow:hidden;position:fixed;top:var(--wp-admin--admin-bar--height,0)}._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:46px}@media (min-width:782px){._26789cb167e9f578__layout-single-page .c8317e9ebb034cfa__layout.e97bb2807a9c4687__has-full-canvas .fb03501e629fd04e__canvas{top:32px}}@media (max-width:782px){._7ffe3a3db6f69647__inspector,.d12c9efe707e6cb3__stage,.fb03501e629fd04e__canvas:not(.fa94dab2ab1e36f3__has-mobile-drawer){height:calc(100vh - var(--wp-admin--admin-bar--height, 0px));top:var(--wp-admin--admin-bar--height,0)}._0eb5d3a3e94d6273__mobile-sidebar-drawer{top:var(--wp-admin--admin-bar--height,0)}}@media not (prefers-reduced-motion:reduce){.fb03501e629fd04e__canvas .interface-interface-skeleton__header{view-transition-name:boot--canvas-header}.fb03501e629fd04e__canvas .interface-interface-skeleton__sidebar{view-transition-name:boot--canvas-sidebar}.d12c9efe707e6cb3__stage{view-transition-name:boot--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot--canvas}@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.d12c9efe707e6cb3__stage{view-transition-name:boot-safari--stage}._7ffe3a3db6f69647__inspector{view-transition-name:boot-safari--inspector}.fb03501e629fd04e__canvas{view-transition-name:boot-safari--canvas}}}@media (max-width:782px){:root:has(.c8317e9ebb034cfa__layout) *{view-transition-name:none!important}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(root),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(root){animation-duration:.25s}@media not (prefers-reduced-motion:reduce){:root:has(.c8317e9ebb034cfa__layout) .components-popover:first-of-type{view-transition-name:boot--components-popover}}:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-header),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot--canvas-sidebar),:root:has(.c8317e9ebb034cfa__layout)::view-transition-group(boot-safari--canvas){z-index:1}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage){width:auto}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage){background:#fff;border-radius:var(--wpds-border-radius-xl,12px);height:100%;object-fit:none;object-position:left top;overflow:hidden;width:100%}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas),:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas){object-position:center top}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--stage):only-child{animation-name:ef68027ea03aa34b__zoomOut;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--stage):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--inspector):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--stage):only-child{animation-name:_0752ac81dff4c432__zoomIn;will-change:transform,opacity}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot-safari--canvas):only-child{animation-name:_3a2e4dc465681136__slideFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas):only-child,:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot-safari--canvas):only-child{animation-name:_86a367ac26a1b61e__slideToRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-header):only-child{animation-name:_462399c0e9d64199__slideHeaderFromTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-header):only-child{animation-name:_8b272f30d43c9f38__slideHeaderToTop;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-new(boot--canvas-sidebar):only-child{animation-name:_69ed6a71d53a2e0c__slideSidebarFromRight;will-change:transform}:root:has(.c8317e9ebb034cfa__layout)::view-transition-old(boot--canvas-sidebar):only-child{animation-name:bf0697a36b00caad__slideSidebarToRight;will-change:transform}@keyframes ef68027ea03aa34b__zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes _0752ac81dff4c432__zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes _3a2e4dc465681136__slideFromRight{0%{transform:translateX(100vw)}to{transform:translateX(0)}}@keyframes _86a367ac26a1b61e__slideToRight{0%{transform:translateX(0)}to{transform:translateX(100vw)}}@keyframes _462399c0e9d64199__slideHeaderFromTop{0%{transform:translateY(-100%)}}@keyframes _8b272f30d43c9f38__slideHeaderToTop{to{transform:translateY(-100%)}}@keyframes _69ed6a71d53a2e0c__slideSidebarFromRight{0%{transform:translateX(100%)}}@keyframes bf0697a36b00caad__slideSidebarToRight{to{transform:translateX(100%)}}");
13412 +}
13413 +var style_module_default11 = { "layout": "c8317e9ebb034cfa__layout", "has-full-canvas": "e97bb2807a9c4687__has-full-canvas", "notices-snackbar": "b8f8c6cf9ae266bf__notices-snackbar", "components-snackbar": "_94ac6b8f274ce2f6__components-snackbar", "sidebar-backdrop": "bfc3fedf39b1cf71__sidebar-backdrop", "sidebar": "bb4f70cd030be0a3__sidebar", "is-mobile": "_27e6d590dc5963c9__is-mobile", "mobile-sidebar-drawer": "_0eb5d3a3e94d6273__mobile-sidebar-drawer", "layout-single-page": "_26789cb167e9f578__layout-single-page", "canvas": "fb03501e629fd04e__canvas", "has-mobile-drawer": "fa94dab2ab1e36f3__has-mobile-drawer", "surfaces": "a03baddce3ef2026__surfaces", "stage": "d12c9efe707e6cb3__stage", "inspector": "_7ffe3a3db6f69647__inspector", "has-canvas": "f7fe42ef8c67e96f__has-canvas", "zoomOut": "ef68027ea03aa34b__zoomOut", "zoomIn": "_0752ac81dff4c432__zoomIn", "slideFromRight": "_3a2e4dc465681136__slideFromRight", "slideToRight": "_86a367ac26a1b61e__slideToRight", "slideHeaderFromTop": "_462399c0e9d64199__slideHeaderFromTop", "slideHeaderToTop": "_8b272f30d43c9f38__slideHeaderToTop", "slideSidebarFromRight": "_69ed6a71d53a2e0c__slideSidebarFromRight", "slideSidebarToRight": "bf0697a36b00caad__slideSidebarToRight" };
13414 +var { useMatches: useMatches4, Outlet: Outlet2 } = unlock2(routePrivateApis7);
2859 13415 function RootSinglePage() {
2860 13416 const matches = useMatches4();
2861 13417 const currentMatch = matches[matches.length - 1];
2862 13418 const canvas = currentMatch?.loaderData?.canvas;
@@ -2862,42 +13418,78 @@
2862 13418 const canvas = currentMatch?.loaderData?.canvas;
2863 13419 const routeContentModule = currentMatch?.loaderData?.routeContentModule;
2864 13420 const isFullScreen = canvas && !canvas.isPreview;
2865 13421 useRouteTitle();
2866 - return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components16.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(UserThemeProvider, { isRoot: true, color: { bg: "#f8f8f8" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(UserThemeProvider, { color: { bg: "#1d2327" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2867 - "div",
2868 - {
2869 - className: clsx_default(
2870 - "boot-layout boot-layout--single-page",
2871 - {
2872 - "has-canvas": !!canvas || canvas === null,
2873 - "has-full-canvas": isFullScreen
2874 - }
2875 - ),
2876 - children: [
2877 - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SavePanel, {}),
2878 - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_notices2.SnackbarNotices, { className: "boot-notices__snackbar" }),
2879 - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "boot-layout__surfaces", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(UserThemeProvider, { color: { bg: "#ffffff" }, children: [
2880 - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Outlet2, {}),
2881 - (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "boot-layout__canvas", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2882 - CanvasRenderer,
2883 - {
2884 - canvas,
2885 - routeContentModule
2886 - }
2887 - ) })
2888 - ] }) })
2889 - ]
2890 - }
2891 - ) }) }) });
13422 + const themeColors = (0, import_element43.useMemo)(getAdminThemeColors, []);
13423 + const layoutRef = useSyncBodyBackground();
13424 + return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_components15.SlotFillProvider, { children: [
13425 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(PluginArea, {}),
13426 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
13427 + import_theme2.ThemeProvider,
13428 + {
13429 + isRoot: true,
13430 + color: { ...themeColors, background: "#f8f8f8" },
13431 + children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_theme2.ThemeProvider, { color: themeColors, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
13432 + "div",
13433 + {
13434 + ref: layoutRef,
13435 + className: clsx_default(
13436 + style_module_default11.layout,
13437 + style_module_default11["layout-single-page"],
13438 + {
13439 + [style_module_default11["has-canvas"]]: !!canvas || canvas === null,
13440 + [style_module_default11["has-full-canvas"]]: isFullScreen
13441 + }
13442 + ),
13443 + children: [
13444 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_editor6.UnsavedChangesWarning, {}),
13445 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SavePanel, {}),
13446 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
13447 + import_notices4.SnackbarNotices,
13448 + {
13449 + className: style_module_default11["notices-snackbar"]
13450 + }
13451 + ),
13452 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: style_module_default11.surfaces, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
13453 + import_theme2.ThemeProvider,
13454 + {
13455 + color: {
13456 + ...themeColors,
13457 + // Reset to the default background color.
13458 + background: "#fcfcfc"
13459 + },
13460 + children: [
13461 + /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Outlet2, {}),
13462 + (canvas || canvas === null) && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: style_module_default11.canvas, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
13463 + CanvasRenderer,
13464 + {
13465 + canvas,
13466 + routeContentModule
13467 + }
13468 + ) })
13469 + ]
13470 + }
13471 + ) })
13472 + ]
13473 + }
13474 + ) })
13475 + }
13476 + )
13477 + ] });
2892 13478 }
2893 13479
2894 13480 // packages/boot/build-module/components/app/index.mjs
2895 -var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
13481 +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
2896 13482 function App({ rootComponent }) {
2897 - const routes = (0, import_data12.useSelect)((select) => select(store).getRoutes(), []);
2898 - return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Router, { routes, rootComponent });
13483 + const routes = (0, import_data14.useSelect)((select) => select(store).getRoutes(), []);
13484 + return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Router, { routes, rootComponent });
2899 13485 }
13486 +async function runInitModules(initModules) {
13487 + for (const moduleId of initModules ?? []) {
13488 + const module = await import(moduleId);
13489 + await module.init();
13490 + }
13491 +}
2900 13492 async function init({
2901 13493 mountId,
2902 13494 menuItems,
2903 13495 routes,
@@ -2904,59 +13496,68 @@
2904 13496 initModules,
2905 13497 dashboardLink
2906 13498 }) {
2907 13499 (menuItems ?? []).forEach((menuItem) => {
2908 - (0, import_data12.dispatch)(store).registerMenuItem(menuItem.id, menuItem);
13500 + (0, import_data14.dispatch)(store).registerMenuItem(menuItem.id, menuItem);
2909 13501 });
2910 13502 (routes ?? []).forEach((route) => {
2911 - (0, import_data12.dispatch)(store).registerRoute(route);
13503 + (0, import_data14.dispatch)(store).registerRoute(route);
2912 13504 });
2913 13505 if (dashboardLink) {
2914 - (0, import_data12.dispatch)(store).setDashboardLink(dashboardLink);
13506 + (0, import_data14.dispatch)(store).setDashboardLink(dashboardLink);
2915 13507 }
2916 - for (const moduleId of initModules ?? []) {
2917 - const module = await import(moduleId);
2918 - await module.init();
2919 - }
13508 + await runInitModules(initModules);
2920 13509 const rootElement = document.getElementById(mountId);
2921 13510 if (rootElement) {
2922 - const root = (0, import_element17.createRoot)(rootElement);
13511 + const root = (0, import_element44.createRoot)(rootElement);
2923 13512 root.render(
2924 - /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_element17.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(App, {}) })
13513 + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_element44.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(App, {}) })
2925 13514 );
2926 13515 }
2927 13516 }
2928 13517 async function initSinglePage({
2929 13518 mountId,
2930 - routes
13519 + routes,
13520 + initModules
2931 13521 }) {
2932 13522 (routes ?? []).forEach((route) => {
2933 - (0, import_data12.dispatch)(store).registerRoute(route);
13523 + (0, import_data14.dispatch)(store).registerRoute(route);
2934 13524 });
13525 + await runInitModules(initModules);
2935 13526 const rootElement = document.getElementById(mountId);
2936 13527 if (rootElement) {
2937 - const root = (0, import_element17.createRoot)(rootElement);
13528 + const root = (0, import_element44.createRoot)(rootElement);
2938 13529 root.render(
2939 - /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_element17.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(App, { rootComponent: RootSinglePage }) })
13530 + /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_element44.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(App, { rootComponent: RootSinglePage }) })
2940 13531 );
2941 13532 }
2942 13533 }
2943 -
2944 -// packages/boot/build-module/index.mjs
2945 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='9947af2e2a']")) {
2946 - const style = document.createElement("style");
2947 - style.setAttribute("data-wp-hash", "9947af2e2a");
2948 - style.appendChild(document.createTextNode(':root{--wpds-border-radius-xs:1px;--wpds-border-radius-sm:2px;--wpds-border-radius-md:4px;--wpds-border-radius-lg:8px;--wpds-border-width-xs:1px;--wpds-border-width-sm:2px;--wpds-border-width-md:4px;--wpds-border-width-lg:8px;--wpds-border-width-focus:2px;--wpds-color-bg-surface-neutral:#fcfcfc;--wpds-color-bg-surface-neutral-strong:#fff;--wpds-color-bg-surface-neutral-weak:#f4f4f4;--wpds-color-bg-surface-brand:#ecf0fa;--wpds-color-bg-surface-success:#c6f7cd;--wpds-color-bg-surface-success-weak:#ebffed;--wpds-color-bg-surface-info:#deebfa;--wpds-color-bg-surface-info-weak:#f3f9ff;--wpds-color-bg-surface-warning:#fde6be;--wpds-color-bg-surface-warning-weak:#fff7e1;--wpds-color-bg-surface-caution:#fee995;--wpds-color-bg-surface-caution-weak:#fff9ca;--wpds-color-bg-surface-error:#f6e6e3;--wpds-color-bg-surface-error-weak:#fff6f5;--wpds-color-bg-interactive-neutral-strong:#2d2d2d;--wpds-color-bg-interactive-neutral-strong-active:#1e1e1e;--wpds-color-bg-interactive-neutral-strong-disabled:#e6e6e6;--wpds-color-bg-interactive-neutral-weak:#0000;--wpds-color-bg-interactive-neutral-weak-active:#ededed;--wpds-color-bg-interactive-neutral-weak-disabled:#0000;--wpds-color-bg-interactive-brand-strong:#3858e9;--wpds-color-bg-interactive-brand-strong-active:#2e49d9;--wpds-color-bg-interactive-brand-weak:#0000;--wpds-color-bg-interactive-brand-weak-active:#e6eaf4;--wpds-color-bg-interactive-error:#0000;--wpds-color-bg-interactive-error-active:#fff6f5;--wpds-color-bg-interactive-error-strong:#cc1818;--wpds-color-bg-interactive-error-strong-active:#b90000;--wpds-color-bg-interactive-error-weak:#0000;--wpds-color-bg-interactive-error-weak-active:#f6e6e3;--wpds-color-bg-track-neutral-weak:#e4e4e4;--wpds-color-bg-track-neutral:#dbdbdb;--wpds-color-bg-thumb-neutral-weak:#8d8d8d;--wpds-color-bg-thumb-neutral-weak-active:#6e6e6e;--wpds-color-bg-thumb-brand:#3858e9;--wpds-color-bg-thumb-brand-active:#3858e9;--wpds-color-bg-thumb-neutral-disabled:#dbdbdb;--wpds-color-fg-content-neutral:#1e1e1e;--wpds-color-fg-content-neutral-weak:#707070;--wpds-color-fg-content-success:#002900;--wpds-color-fg-content-success-weak:#008030;--wpds-color-fg-content-info:#001b4f;--wpds-color-fg-content-info-weak:#006bd7;--wpds-color-fg-content-warning:#2e1900;--wpds-color-fg-content-warning-weak:#926300;--wpds-color-fg-content-caution:#281d00;--wpds-color-fg-content-caution-weak:#826a00;--wpds-color-fg-content-error:#470000;--wpds-color-fg-content-error-weak:#cc1818;--wpds-color-fg-interactive-neutral:#1e1e1e;--wpds-color-fg-interactive-neutral-active:#1e1e1e;--wpds-color-fg-interactive-neutral-disabled:#8d8d8d;--wpds-color-fg-interactive-neutral-strong:#f0f0f0;--wpds-color-fg-interactive-neutral-strong-active:#f0f0f0;--wpds-color-fg-interactive-neutral-strong-disabled:#8d8d8d;--wpds-color-fg-interactive-neutral-weak:#707070;--wpds-color-fg-interactive-neutral-weak-disabled:#8d8d8d;--wpds-color-fg-interactive-brand:#3858e9;--wpds-color-fg-interactive-brand-active:#3858e9;--wpds-color-fg-interactive-brand-strong:#eff0f2;--wpds-color-fg-interactive-brand-strong-active:#eff0f2;--wpds-color-fg-interactive-error:#cc1818;--wpds-color-fg-interactive-error-active:#cc1818;--wpds-color-fg-interactive-error-strong:#f2efef;--wpds-color-fg-interactive-error-strong-active:#f2efef;--wpds-color-stroke-surface-neutral:#dbdbdb;--wpds-color-stroke-surface-neutral-weak:#e4e4e4;--wpds-color-stroke-surface-neutral-strong:#8d8d8d;--wpds-color-stroke-surface-brand:#a3b1d4;--wpds-color-stroke-surface-brand-strong:#3858e9;--wpds-color-stroke-surface-success:#8ac894;--wpds-color-stroke-surface-success-strong:#008030;--wpds-color-stroke-surface-info:#9fbcdc;--wpds-color-stroke-surface-info-strong:#006bd7;--wpds-color-stroke-surface-warning:#d0b481;--wpds-color-stroke-surface-warning-strong:#926300;--wpds-color-stroke-surface-error:#daa39b;--wpds-color-stroke-surface-error-strong:#cc1818;--wpds-color-stroke-interactive-neutral:#8d8d8d;--wpds-color-stroke-interactive-neutral-active:#6e6e6e;--wpds-color-stroke-interactive-neutral-disabled:#dbdbdb;--wpds-color-stroke-interactive-neutral-strong:#6e6e6e;--wpds-color-stroke-interactive-brand:#3858e9;--wpds-color-stroke-interactive-brand-active:#2337c8;--wpds-color-stroke-interactive-error:#cc1818;--wpds-color-stroke-interactive-error-active:#9d0000;--wpds-color-stroke-interactive-error-strong:#cc1818;--wpds-color-stroke-focus-brand:#3858e9;--wpds-cursor-control:pointer;--wpds-dimension-base:4px;--wpds-dimension-padding-xs:4px;--wpds-dimension-padding-sm:8px;--wpds-dimension-padding-md:12px;--wpds-dimension-padding-lg:16px;--wpds-dimension-padding-xl:20px;--wpds-dimension-padding-2xl:24px;--wpds-dimension-padding-3xl:32px;--wpds-dimension-gap-xs:4px;--wpds-dimension-gap-sm:8px;--wpds-dimension-gap-md:12px;--wpds-dimension-gap-lg:16px;--wpds-dimension-gap-xl:24px;--wpds-dimension-gap-2xl:32px;--wpds-dimension-gap-3xl:40px;--wpds-dimension-surface-width-xs:240px;--wpds-dimension-surface-width-sm:320px;--wpds-dimension-surface-width-md:400px;--wpds-dimension-surface-width-lg:560px;--wpds-dimension-surface-width-xl:720px;--wpds-dimension-surface-width-2xl:960px;--wpds-elevation-xs:0 1px 1px 0 #00000008,0 1px 2px 0 #00000005,0 3px 3px 0 #00000005,0 4px 4px 0 #00000003;--wpds-elevation-sm:0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005;--wpds-elevation-md:0 2px 3px 0 #0000000d,0 4px 5px 0 #0000000a,0 12px 12px 0 #00000008,0 16px 16px 0 #00000005;--wpds-elevation-lg:0 5px 15px 0 #00000014,0 15px 27px 0 #00000012,0 30px 36px 0 #0000000a,0 50px 43px 0 #00000005;--wpds-motion-duration-xs:50ms;--wpds-motion-duration-sm:100ms;--wpds-motion-duration-md:200ms;--wpds-motion-duration-lg:300ms;--wpds-motion-duration-xl:400ms;--wpds-motion-easing-subtle:cubic-bezier(0.15,0,0.15,1);--wpds-motion-easing-balanced:cubic-bezier(0.4,0,0.2,1);--wpds-motion-easing-expressive:cubic-bezier(0.25,0,0,1);--wpds-typography-font-family-heading:-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;--wpds-typography-font-family-body:-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;--wpds-typography-font-family-mono:"Menlo","Consolas",monaco,monospace;--wpds-typography-font-size-xs:11px;--wpds-typography-font-size-sm:12px;--wpds-typography-font-size-md:13px;--wpds-typography-font-size-lg:15px;--wpds-typography-font-size-xl:20px;--wpds-typography-font-size-2xl:32px;--wpds-typography-line-height-xs:16px;--wpds-typography-line-height-sm:20px;--wpds-typography-line-height-md:24px;--wpds-typography-line-height-lg:28px;--wpds-typography-line-height-xl:32px;--wpds-typography-line-height-2xl:40px;--wpds-typography-font-weight-regular:400;--wpds-typography-font-weight-medium:499}[data-wpds-theme-provider-id][data-wpds-density=compact]{--wpds-dimension-padding-xs:4px;--wpds-dimension-padding-sm:4px;--wpds-dimension-padding-md:8px;--wpds-dimension-padding-lg:12px;--wpds-dimension-padding-xl:16px;--wpds-dimension-padding-2xl:20px;--wpds-dimension-padding-3xl:24px;--wpds-dimension-gap-xs:4px;--wpds-dimension-gap-sm:4px;--wpds-dimension-gap-md:8px;--wpds-dimension-gap-lg:12px;--wpds-dimension-gap-xl:20px;--wpds-dimension-gap-2xl:24px;--wpds-dimension-gap-3xl:32px}[data-wpds-theme-provider-id][data-wpds-density=comfortable]{--wpds-dimension-padding-xs:8px;--wpds-dimension-padding-sm:12px;--wpds-dimension-padding-md:16px;--wpds-dimension-padding-lg:20px;--wpds-dimension-padding-xl:24px;--wpds-dimension-padding-2xl:32px;--wpds-dimension-padding-3xl:40px;--wpds-dimension-gap-xs:8px;--wpds-dimension-gap-sm:12px;--wpds-dimension-gap-md:16px;--wpds-dimension-gap-lg:20px;--wpds-dimension-gap-xl:32px;--wpds-dimension-gap-2xl:40px;--wpds-dimension-gap-3xl:48px}[data-wpds-theme-provider-id][data-wpds-density=default]{--wpds-dimension-base:4px;--wpds-dimension-padding-xs:4px;--wpds-dimension-padding-sm:8px;--wpds-dimension-padding-md:12px;--wpds-dimension-padding-lg:16px;--wpds-dimension-padding-xl:20px;--wpds-dimension-padding-2xl:24px;--wpds-dimension-padding-3xl:32px;--wpds-dimension-gap-xs:4px;--wpds-dimension-gap-sm:8px;--wpds-dimension-gap-md:12px;--wpds-dimension-gap-lg:16px;--wpds-dimension-gap-xl:24px;--wpds-dimension-gap-2xl:32px;--wpds-dimension-gap-3xl:40px;--wpds-dimension-surface-width-xs:240px;--wpds-dimension-surface-width-sm:320px;--wpds-dimension-surface-width-md:400px;--wpds-dimension-surface-width-lg:560px;--wpds-dimension-surface-width-xl:720px;--wpds-dimension-surface-width-2xl:960px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wpds-border-width-focus:1.5px}}body.has-admin-bar-in-editor #wpadminbar{display:block}body.has-admin-bar-in-editor .boot-canvas-back-button__link{background:#0000}body.has-admin-bar-in-editor .boot-canvas-back-button__icon{background-color:initial}body.has-admin-bar-in-editor #site-editor-v2-app{bottom:0;height:calc(100vh - 32px)!important;left:0;position:fixed;right:0;top:32px}body.has-admin-bar-in-editor .boot-layout.has-full-canvas .boot-layout__canvas{height:calc(100vh - 32px);top:32px}@media (max-width:782px){body.has-admin-bar-in-editor #site-editor-v2-app{height:calc(100vh - 46px)!important;top:46px}body.has-admin-bar-in-editor .boot-layout.has-full-canvas .boot-layout__canvas,body.has-admin-bar-in-editor .boot-layout__canvas:not(.has-mobile-drawer),body.has-admin-bar-in-editor .boot-layout__inspector,body.has-admin-bar-in-editor .boot-layout__stage{height:calc(100vh - 46px);top:46px}body.has-admin-bar-in-editor .boot-layout__mobile-sidebar-drawer{top:46px}}@media (min-width:600px){.boot-layout-container .boot-layout{bottom:0;left:0;min-height:calc(100vh - 46px);position:absolute;right:0;top:0}}@media (min-width:782px){.boot-layout-container .boot-layout{min-height:calc(100vh - 32px)}body:has(.boot-layout.has-full-canvas) .boot-layout-container .boot-layout{min-height:100vh}}.boot-layout-container .boot-layout img{height:auto;max-width:100%}.boot-layout .boot-notices__snackbar{bottom:24px;box-sizing:border-box;display:flex;flex-direction:column;left:0;padding-inline:16px;pointer-events:none;position:fixed;right:0}.boot-layout .boot-notices__snackbar .components-snackbar{margin-inline:auto}'));
2949 - document.head.appendChild(style);
2950 -}
2951 -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='cc217bc358']")) {
2952 - const style = document.createElement("style");
2953 - style.setAttribute("data-wp-hash", "cc217bc358");
2954 - style.appendChild(document.createTextNode("@media (max-width:782px){*{view-transition-name:none!important}}::view-transition-new(root),::view-transition-old(root){animation-duration:.25s}@media not (prefers-reduced-motion:reduce){.boot-layout__canvas .interface-interface-skeleton__header{view-transition-name:boot--canvas-header}.boot-layout__canvas .interface-interface-skeleton__sidebar{view-transition-name:boot--canvas-sidebar}.boot-layout.has-full-canvas .boot-layout__canvas .boot-site-icon-link,.boot-layout:not(.has-full-canvas) .boot-site-hub .boot-site-icon-link{view-transition-name:boot--site-icon-link}.boot-layout__stage{view-transition-name:boot--stage}.boot-layout__inspector{view-transition-name:boot--inspector}.boot-layout__canvas.is-full-canvas .interface-interface-skeleton__content,.boot-layout__canvas:not(.is-full-canvas){view-transition-name:boot--canvas}@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.boot-layout__stage{view-transition-name:boot-safari--stage}.boot-layout__inspector{view-transition-name:boot-safari--inspector}.boot-layout__canvas.is-full-canvas .interface-interface-skeleton__content,.boot-layout__canvas:not(.is-full-canvas){view-transition-name:boot-safari--canvas}}.components-popover:first-of-type{view-transition-name:boot--components-popover}}::view-transition-group(boot--canvas),::view-transition-group(boot--canvas-header),::view-transition-group(boot--canvas-sidebar),::view-transition-group(boot-safari--canvas){z-index:1}::view-transition-group(boot--site-icon-link){z-index:2}::view-transition-new(boot--site-icon-link),::view-transition-old(boot--site-icon-link){animation:none}::view-transition-new(boot-safari--canvas),::view-transition-new(boot-safari--inspector),::view-transition-new(boot-safari--stage),::view-transition-old(boot-safari--canvas),::view-transition-old(boot-safari--inspector),::view-transition-old(boot-safari--stage){width:auto}::view-transition-new(boot--canvas),::view-transition-new(boot--inspector),::view-transition-new(boot--stage),::view-transition-old(boot--canvas),::view-transition-old(boot--inspector),::view-transition-old(boot--stage){background:#fff;border-radius:8px;height:100%;object-fit:none;object-position:left top;overflow:hidden;width:100%}::view-transition-new(boot--canvas),::view-transition-old(boot--canvas){object-position:center top}::view-transition-old(boot--inspector):only-child,::view-transition-old(boot--stage):only-child,::view-transition-old(boot-safari--inspector):only-child,::view-transition-old(boot-safari--stage):only-child{animation-name:zoomOut;will-change:transform,opacity}::view-transition-new(boot--inspector):only-child,::view-transition-new(boot--stage):only-child,::view-transition-new(boot-safari--inspector):only-child,::view-transition-new(boot-safari--stage):only-child{animation-name:zoomIn;will-change:transform,opacity}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}::view-transition-new(boot--canvas):only-child,::view-transition-new(boot-safari--canvas):only-child{animation-name:slideFromRight;will-change:transform}::view-transition-old(boot--canvas):only-child,::view-transition-old(boot-safari--canvas):only-child{animation-name:slideToRight;will-change:transform}@keyframes slideFromRight{0%{transform:translateX(100vw)}to{transform:translateX(0)}}@keyframes slideToRight{0%{transform:translateX(0)}to{transform:translateX(100vw)}}::view-transition-new(boot--canvas-header):only-child{animation-name:slideHeaderFromTop;will-change:transform}::view-transition-old(boot--canvas-header):only-child{animation-name:slideHeaderToTop;will-change:transform}@keyframes slideHeaderFromTop{0%{transform:translateY(-100%)}}@keyframes slideHeaderToTop{to{transform:translateY(-100%)}}::view-transition-new(boot--canvas-sidebar):only-child{animation-name:slideSidebarFromRight;will-change:transform}::view-transition-old(boot--canvas-sidebar):only-child{animation-name:slideSidebarToRight;will-change:transform}@keyframes slideSidebarFromRight{0%{transform:translateX(100%)}}@keyframes slideSidebarToRight{to{transform:translateX(100%)}}"));
2955 - document.head.appendChild(style);
2956 -}
2957 13534 export {
2958 13535 init,
2959 13536 initSinglePage,
2960 13537 store
2961 13538 };
13539 +/*! Bundled license information:
13540 +
13541 +use-sync-external-store/cjs/use-sync-external-store-shim.development.js:
13542 + (**
13543 + * @license React
13544 + * use-sync-external-store-shim.development.js
13545 + *
13546 + * Copyright (c) Meta Platforms, Inc. and affiliates.
13547 + *
13548 + * This source code is licensed under the MIT license found in the
13549 + * LICENSE file in the root directory of this source tree.
13550 + *)
13551 +
13552 +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js:
13553 + (**
13554 + * @license React
13555 + * use-sync-external-store-shim/with-selector.development.js
13556 + *
13557 + * Copyright (c) Meta Platforms, Inc. and affiliates.
13558 + *
13559 + * This source code is licensed under the MIT license found in the
13560 + * LICENSE file in the root directory of this source tree.
13561 + *)
13562 +*/
2962 13563 //# sourceMappingURL=index.js.map