| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 var __create = Object.create; 2 var __defProp = Object.defineProperty; 3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 4 var __getOwnPropNames = Object.getOwnPropertyNames; 5 var __getProtoOf = Object.getPrototypeOf; 6 var __hasOwnProp = Object.prototype.hasOwnProperty; 7 var __commonJS = (cb, mod) => function __require() { 8 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 9 }; 10 var __export = (target, all) => { 11 for (var name in all) 12 __defProp(target, name, { get: all[name], enumerable: true }); 13 }; 14 var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21 }; 22 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29 )); 30 31 // package-external:@wordpress/element 32 var require_element = __commonJS({ 33 "package-external:@wordpress/element"(exports, module) { 34 module.exports = window.wp.element; 35 } 36 }); 37 38 // vendor-external:react 39 var require_react = __commonJS({ 40 "vendor-external:react"(exports, module) { 41 module.exports = window.React; 42 } 43 }); 44 45 // vendor-external:react/jsx-runtime 46 var require_jsx_runtime = __commonJS({ 47 "vendor-external:react/jsx-runtime"(exports, module) { 48 module.exports = window.ReactJSXRuntime; 49 } 50 }); 51 52 // vendor-external:react-dom 53 var require_react_dom = __commonJS({ 54 "vendor-external:react-dom"(exports, module) { 55 module.exports = window.ReactDOM; 56 } 57 }); 58 59 // package-external:@wordpress/primitives 60 var require_primitives = __commonJS({ 61 "package-external:@wordpress/primitives"(exports, module) { 62 module.exports = window.wp.primitives; 63 } 64 }); 65 66 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js 67 var require_use_sync_external_store_shim_development = __commonJS({ 68 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { 69 "use strict"; 70 (function() { 71 function is(x, y) { 72 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 73 } 74 function useSyncExternalStore$2(subscribe, getSnapshot) { 75 didWarnOld18Alpha || void 0 === React118.startTransition || (didWarnOld18Alpha = true, console.error( 76 "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." 77 )); 78 var value = getSnapshot(); 79 if (!didWarnUncachedGetSnapshot) { 80 var cachedValue = getSnapshot(); 81 objectIs(value, cachedValue) || (console.error( 82 "The result of getSnapshot should be cached to avoid an infinite loop" 83 ), didWarnUncachedGetSnapshot = true); 84 } 85 cachedValue = useState25({ 86 inst: { value, getSnapshot } 87 }); 88 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 89 useLayoutEffect3( 90 function() { 91 inst.value = value; 92 inst.getSnapshot = getSnapshot; 93 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 94 }, 95 [subscribe, value, getSnapshot] 96 ); 97 useEffect20( 98 function() { 99 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 100 return subscribe(function() { 101 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 102 }); 103 }, 104 [subscribe] 105 ); 106 useDebugValue2(value); 107 return value; 108 } 109 function checkIfSnapshotChanged(inst) { 110 var latestGetSnapshot = inst.getSnapshot; 111 inst = inst.value; 112 try { 113 var nextValue = latestGetSnapshot(); 114 return !objectIs(inst, nextValue); 115 } catch (error2) { 116 return true; 117 } 118 } 119 function useSyncExternalStore$1(subscribe, getSnapshot) { 120 return getSnapshot(); 121 } 122 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 123 var React118 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState25 = React118.useState, useEffect20 = React118.useEffect, useLayoutEffect3 = React118.useLayoutEffect, useDebugValue2 = React118.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 124 exports.useSyncExternalStore = void 0 !== React118.useSyncExternalStore ? React118.useSyncExternalStore : shim; 125 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 126 })(); 127 } 128 }); 129 130 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 131 var require_shim = __commonJS({ 132 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 133 "use strict"; 134 if (false) { 135 module.exports = null; 136 } else { 137 module.exports = require_use_sync_external_store_shim_development(); 138 } 139 } 140 }); 141 142 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js 143 var require_with_selector_development = __commonJS({ 144 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { 145 "use strict"; 146 (function() { 147 function is(x, y) { 148 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 149 } 150 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 151 var React118 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef43 = React118.useRef, useEffect20 = React118.useEffect, useMemo34 = React118.useMemo, useDebugValue2 = React118.useDebugValue; 152 exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { 153 var instRef = useRef43(null); 154 if (null === instRef.current) { 155 var inst = { hasValue: false, value: null }; 156 instRef.current = inst; 157 } else inst = instRef.current; 158 instRef = useMemo34( 159 function() { 160 function memoizedSelector(nextSnapshot) { 161 if (!hasMemo) { 162 hasMemo = true; 163 memoizedSnapshot = nextSnapshot; 164 nextSnapshot = selector(nextSnapshot); 165 if (void 0 !== isEqual && inst.hasValue) { 166 var currentSelection = inst.value; 167 if (isEqual(currentSelection, nextSnapshot)) 168 return memoizedSelection = currentSelection; 169 } 170 return memoizedSelection = nextSnapshot; 171 } 172 currentSelection = memoizedSelection; 173 if (objectIs(memoizedSnapshot, nextSnapshot)) 174 return currentSelection; 175 var nextSelection = selector(nextSnapshot); 176 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 177 return memoizedSnapshot = nextSnapshot, currentSelection; 178 memoizedSnapshot = nextSnapshot; 179 return memoizedSelection = nextSelection; 180 } 181 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 182 return [ 183 function() { 184 return memoizedSelector(getSnapshot()); 185 }, 186 null === maybeGetServerSnapshot ? void 0 : function() { 187 return memoizedSelector(maybeGetServerSnapshot()); 188 } 189 ]; 190 }, 191 [getSnapshot, getServerSnapshot, selector, isEqual] 192 ); 193 var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]); 194 useEffect20( 195 function() { 196 inst.hasValue = true; 197 inst.value = value; 198 }, 199 [value] 200 ); 201 useDebugValue2(value); 202 return value; 203 }; 204 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 205 })(); 206 } 207 }); 208 209 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 210 var require_with_selector = __commonJS({ 211 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 212 "use strict"; 213 if (false) { 214 module.exports = null; 215 } else { 216 module.exports = require_with_selector_development(); 217 } 218 } 219 }); 220 221 // package-external:@wordpress/i18n 222 var require_i18n = __commonJS({ 223 "package-external:@wordpress/i18n"(exports, module) { 224 module.exports = window.wp.i18n; 225 } 226 }); 227 228 // package-external:@wordpress/theme 229 var require_theme = __commonJS({ 230 "package-external:@wordpress/theme"(exports, module) { 231 module.exports = window.wp.theme; 232 } 233 }); 234 235 // package-external:@wordpress/private-apis 236 var require_private_apis = __commonJS({ 237 "package-external:@wordpress/private-apis"(exports, module) { 238 module.exports = window.wp.privateApis; 239 } 240 }); 241 242 // package-external:@wordpress/data 243 var require_data = __commonJS({ 244 "package-external:@wordpress/data"(exports, module) { 245 module.exports = window.wp.data; 246 } 247 }); 248 249 // package-external:@wordpress/components 250 var require_components = __commonJS({ 251 "package-external:@wordpress/components"(exports, module) { 252 module.exports = window.wp.components; 253 } 254 }); 255 256 // package-external:@wordpress/keyboard-shortcuts 257 var require_keyboard_shortcuts = __commonJS({ 258 "package-external:@wordpress/keyboard-shortcuts"(exports, module) { 259 module.exports = window.wp.keyboardShortcuts; 260 } 261 }); 262 263 // package-external:@wordpress/keycodes 264 var require_keycodes = __commonJS({ 265 "package-external:@wordpress/keycodes"(exports, module) { 266 module.exports = window.wp.keycodes; 267 } 268 }); 269 270 // package-external:@wordpress/html-entities 271 var require_html_entities = __commonJS({ 272 "package-external:@wordpress/html-entities"(exports, module) { 273 module.exports = window.wp.htmlEntities; 274 } 275 }); 276 277 // packages/workflow/build-module/index.mjs 278 var import_element53 = __toESM(require_element(), 1); 279 280 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 281 var React4 = __toESM(require_react(), 1); 282 283 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 284 var React = __toESM(require_react(), 1); 285 var UNINITIALIZED = {}; 286 function useRefWithInit(init, initArg) { 287 const ref = React.useRef(UNINITIALIZED); 288 if (ref.current === UNINITIALIZED) { 289 ref.current = init(initArg); 290 } 291 return ref; 292 } 293 294 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 295 function useMergedRefs(a, b, c, d) { 296 const forkRef = useRefWithInit(createForkRef).current; 297 if (didChange(forkRef, a, b, c, d)) { 298 update(forkRef, [a, b, c, d]); 299 } 300 return forkRef.callback; 301 } 302 function useMergedRefsN(refs) { 303 const forkRef = useRefWithInit(createForkRef).current; 304 if (didChangeN(forkRef, refs)) { 305 update(forkRef, refs); 306 } 307 return forkRef.callback; 308 } 309 function createForkRef() { 310 return { 311 callback: null, 312 cleanup: null, 313 refs: [] 314 }; 315 } 316 function didChange(forkRef, a, b, c, d) { 317 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 318 } 319 function didChangeN(forkRef, newRefs) { 320 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 321 } 322 function update(forkRef, refs) { 323 forkRef.refs = refs; 324 if (refs.every((ref) => ref == null)) { 325 forkRef.callback = null; 326 return; 327 } 328 forkRef.callback = (instance) => { 329 if (forkRef.cleanup) { 330 forkRef.cleanup(); 331 forkRef.cleanup = null; 332 } 333 if (instance != null) { 334 const cleanupCallbacks = Array(refs.length).fill(null); 335 for (let i = 0; i < refs.length; i += 1) { 336 const ref = refs[i]; 337 if (ref == null) { 338 continue; 339 } 340 switch (typeof ref) { 341 case "function": { 342 const refCleanup = ref(instance); 343 if (typeof refCleanup === "function") { 344 cleanupCallbacks[i] = refCleanup; 345 } 346 break; 347 } 348 case "object": { 349 ref.current = instance; 350 break; 351 } 352 default: 353 } 354 } 355 forkRef.cleanup = () => { 356 for (let i = 0; i < refs.length; i += 1) { 357 const ref = refs[i]; 358 if (ref == null) { 359 continue; 360 } 361 switch (typeof ref) { 362 case "function": { 363 const cleanupCallback = cleanupCallbacks[i]; 364 if (typeof cleanupCallback === "function") { 365 cleanupCallback(); 366 } else { 367 void ref(null); 368 } 369 break; 370 } 371 case "object": { 372 ref.current = null; 373 break; 374 } 375 default: 376 } 377 } 378 }; 379 } 380 }; 381 } 382 383 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 384 var React3 = __toESM(require_react(), 1); 385 386 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 387 var React2 = __toESM(require_react(), 1); 388 var majorVersion = parseInt(React2.version, 10); 389 function isReactVersionAtLeast(reactVersionToCheck) { 390 return majorVersion >= reactVersionToCheck; 391 } 392 393 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 394 function getReactElementRef(element) { 395 if (!/* @__PURE__ */ React3.isValidElement(element)) { 396 return null; 397 } 398 const reactElement = element; 399 const propsWithRef = reactElement.props; 400 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 401 } 402 403 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 404 function mergeObjects(a, b) { 405 if (a && !b) { 406 return a; 407 } 408 if (!a && b) { 409 return b; 410 } 411 if (a || b) { 412 return { 413 ...a, 414 ...b 415 }; 416 } 417 return void 0; 418 } 419 420 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 421 var loggedMessages; 422 if (true) { 423 loggedMessages = /* @__PURE__ */ new Set(); 424 } 425 function createLogOnce(severity, prefix) { 426 return function logOnce(...messages) { 427 if (true) { 428 const message = messages.join(" "); 429 const output = prefix ? `$prefix}: $message}` : message; 430 const key = `$severity}:$output}`; 431 if (!loggedMessages.has(key)) { 432 loggedMessages.add(key); 433 if (severity === "warn") { 434 console.warn(output); 435 } else { 436 console.error(output); 437 } 438 } 439 } 440 }; 441 } 442 443 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 444 var warn = createLogOnce("warn", "Base UI"); 445 446 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 447 function NOOP() { 448 } 449 var EMPTY_ARRAY = Object.freeze([]); 450 var EMPTY_OBJECT = Object.freeze({}); 451 452 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 453 function getStateAttributesProps(state, customMapping) { 454 const props = {}; 455 for (const key in state) { 456 const value = state[key]; 457 if (customMapping?.hasOwnProperty(key)) { 458 const customProps = customMapping[key](value); 459 if (customProps != null) { 460 Object.assign(props, customProps); 461 } 462 continue; 463 } 464 if (value === true) { 465 props[`data-$key.toLowerCase()}`] = ""; 466 } else if (value) { 467 props[`data-$key.toLowerCase()}`] = value.toString(); 468 } 469 } 470 return props; 471 } 472 473 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 474 function resolveClassName(className, state) { 475 return typeof className === "function" ? className(state) : className; 476 } 477 478 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 479 function resolveStyle(style, state) { 480 return typeof style === "function" ? style(state) : style; 481 } 482 483 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 484 var EMPTY_PROPS = {}; 485 function mergeProps(a, b, c, d, e) { 486 if (!c && !d && !e && !a) { 487 return createInitialMergedProps(b); 488 } 489 let merged = createInitialMergedProps(a); 490 if (b) { 491 merged = mergeInto(merged, b); 492 } 493 if (c) { 494 merged = mergeInto(merged, c); 495 } 496 if (d) { 497 merged = mergeInto(merged, d); 498 } 499 if (e) { 500 merged = mergeInto(merged, e); 501 } 502 return merged; 503 } 504 function mergePropsN(props) { 505 if (props.length === 0) { 506 return EMPTY_PROPS; 507 } 508 if (props.length === 1) { 509 return createInitialMergedProps(props[0]); 510 } 511 let merged = createInitialMergedProps(props[0]); 512 for (let i = 1; i < props.length; i += 1) { 513 merged = mergeInto(merged, props[i]); 514 } 515 return merged; 516 } 517 function createInitialMergedProps(inputProps) { 518 if (isPropsGetter(inputProps)) { 519 return { 520 ...inputProps(EMPTY_PROPS) 521 }; 522 } 523 return copyInitialProps(inputProps); 524 } 525 function mergeInto(merged, inputProps) { 526 if (isPropsGetter(inputProps)) { 527 return inputProps(merged); 528 } 529 return mutablyMergeInto(merged, inputProps); 530 } 531 function copyInitialProps(inputProps) { 532 const copiedProps = { 533 ...inputProps 534 }; 535 for (const propName in copiedProps) { 536 const propValue = copiedProps[propName]; 537 if (isEventHandler(propName, propValue)) { 538 copiedProps[propName] = wrapEventHandler(propValue); 539 } 540 } 541 return copiedProps; 542 } 543 function mutablyMergeInto(mergedProps, externalProps) { 544 if (!externalProps) { 545 return mergedProps; 546 } 547 for (const propName in externalProps) { 548 const externalPropValue = externalProps[propName]; 549 switch (propName) { 550 case "style": { 551 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 552 break; 553 } 554 case "className": { 555 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 556 break; 557 } 558 default: { 559 if (isEventHandler(propName, externalPropValue)) { 560 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 561 } else { 562 mergedProps[propName] = externalPropValue; 563 } 564 } 565 } 566 } 567 return mergedProps; 568 } 569 function isEventHandler(key, value) { 570 const code0 = key.charCodeAt(0); 571 const code1 = key.charCodeAt(1); 572 const code2 = key.charCodeAt(2); 573 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 574 } 575 function isPropsGetter(inputProps) { 576 return typeof inputProps === "function"; 577 } 578 function mergeEventHandlers(ourHandler, theirHandler) { 579 if (!theirHandler) { 580 return ourHandler; 581 } 582 if (!ourHandler) { 583 return wrapEventHandler(theirHandler); 584 } 585 return (...args) => { 586 const event = args[0]; 587 if (isSyntheticEvent(event)) { 588 const baseUIEvent = event; 589 makeEventPreventable(baseUIEvent); 590 const result2 = theirHandler(...args); 591 if (!baseUIEvent.baseUIHandlerPrevented) { 592 ourHandler?.(...args); 593 } 594 return result2; 595 } 596 const result = theirHandler(...args); 597 ourHandler?.(...args); 598 return result; 599 }; 600 } 601 function wrapEventHandler(handler) { 602 if (!handler) { 603 return handler; 604 } 605 return (...args) => { 606 const event = args[0]; 607 if (isSyntheticEvent(event)) { 608 makeEventPreventable(event); 609 } 610 return handler(...args); 611 }; 612 } 613 function makeEventPreventable(event) { 614 event.preventBaseUIHandler = () => { 615 event.baseUIHandlerPrevented = true; 616 }; 617 return event; 618 } 619 function mergeClassNames(ourClassName, theirClassName) { 620 if (theirClassName) { 621 if (ourClassName) { 622 return theirClassName + " " + ourClassName; 623 } 624 return theirClassName; 625 } 626 return ourClassName; 627 } 628 function isSyntheticEvent(event) { 629 return event != null && typeof event === "object" && "nativeEvent" in event; 630 } 631 632 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 633 var import_react = __toESM(require_react(), 1); 634 function useRenderElement(element, componentProps, params = {}) { 635 let renderProp = componentProps.render; 636 if (params.enabled !== false) { 637 renderProp = unwrapLazyRenderProp(renderProp); 638 } 639 const outProps = useRenderElementProps(componentProps, params, renderProp); 640 if (params.enabled === false) { 641 return null; 642 } 643 const state = params.state ?? EMPTY_OBJECT; 644 return evaluateRenderProp(element, renderProp, outProps, state); 645 } 646 function useRenderElementProps(componentProps, params, renderProp) { 647 const { 648 className: classNameProp, 649 style: styleProp 650 } = componentProps; 651 const { 652 state = EMPTY_OBJECT, 653 ref, 654 props, 655 stateAttributesMapping: stateAttributesMapping5, 656 enabled = true 657 } = params; 658 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 659 const style = enabled ? resolveStyle(styleProp, state) : void 0; 660 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping5) : EMPTY_OBJECT; 661 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 662 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 663 if (typeof document !== "undefined") { 664 if (!enabled) { 665 void useMergedRefs(null, null); 666 } else if (Array.isArray(ref)) { 667 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 668 } else { 669 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 670 } 671 } 672 if (!enabled) { 673 return EMPTY_OBJECT; 674 } 675 if (className !== void 0) { 676 outProps.className = mergeClassNames(outProps.className, className); 677 } 678 if (style !== void 0) { 679 outProps.style = mergeObjects(outProps.style, style); 680 } 681 return outProps; 682 } 683 function resolveRenderFunctionProps(props) { 684 if (Array.isArray(props)) { 685 return mergePropsN(props); 686 } 687 return mergeProps(void 0, props); 688 } 689 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 690 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 691 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 692 function unwrapLazyRenderProp(render) { 693 if (render?.$$typeof !== REACT_LAZY_TYPE) { 694 return render; 695 } 696 const unwrapped = React4.Children.toArray(render)[0]; 697 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 698 } 699 function evaluateRenderProp(element, render, props, state) { 700 if (render) { 701 if (typeof render === "function") { 702 if (true) { 703 warnIfRenderPropLooksLikeComponent(render); 704 } 705 return render(props, state); 706 } 707 const mergedProps = mergeProps(props, render.props); 708 mergedProps.ref = props.ref; 709 if (true) { 710 if (!/* @__PURE__ */ React4.isValidElement(render)) { 711 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")); 712 } 713 } 714 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 715 } 716 return renderTag(element, props); 717 } 718 function warnIfRenderPropLooksLikeComponent(renderFn) { 719 const functionName = renderFn.name; 720 if (functionName.length === 0) { 721 return; 722 } 723 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 724 return; 725 } 726 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 727 return; 728 } 729 warn(`The \`render\` prop received a function named \`$functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); 730 } 731 function renderTag(Tag, props) { 732 if (Tag === "button") { 733 return /* @__PURE__ */ (0, import_react.createElement)("button", { 734 type: "button", 735 ...props, 736 key: props.key 737 }); 738 } 739 if (Tag === "img") { 740 return /* @__PURE__ */ (0, import_react.createElement)("img", { 741 alt: "", 742 ...props, 743 key: props.key 744 }); 745 } 746 return /* @__PURE__ */ React4.createElement(Tag, props); 747 } 748 749 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 750 var React5 = __toESM(require_react(), 1); 751 var SafeReact = { 752 ...React5 753 }; 754 755 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 756 var useInsertionEffect = SafeReact.useInsertionEffect; 757 var useSafeInsertionEffect = ( 758 // React 17 doesn't have useInsertionEffect. 759 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 760 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 761 ); 762 function useStableCallback(callback) { 763 const stable = useRefWithInit(createStableCallback).current; 764 stable.next = callback; 765 useSafeInsertionEffect(stable.effect); 766 return stable.trampoline; 767 } 768 function createStableCallback() { 769 const stable = { 770 next: void 0, 771 callback: assertNotCalled, 772 trampoline: (...args) => stable.callback?.(...args), 773 effect: () => { 774 stable.callback = stable.next; 775 } 776 }; 777 return stable; 778 } 779 function assertNotCalled() { 780 if (true) { 781 throw ( 782 /* minify-error-disabled */ 783 new Error("Base UI: Cannot call an event handler while rendering.") 784 ); 785 } 786 } 787 788 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 789 var React6 = __toESM(require_react(), 1); 790 var noop = () => { 791 }; 792 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 793 794 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 795 var React8 = __toESM(require_react(), 1); 796 797 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 798 var ReactDOM = __toESM(require_react_dom(), 1); 799 800 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 801 var React7 = __toESM(require_react(), 1); 802 function useOnMount(fn) { 803 React7.useEffect(fn, EMPTY_ARRAY); 804 } 805 806 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 807 var EMPTY = null; 808 var LAST_RAF = globalThis.requestAnimationFrame; 809 var Scheduler = class { 810 /* This implementation uses an array as a backing data-structure for frame callbacks. 811 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 812 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 813 * be much more efficient if there is a call pattern that alterns as 814 * "request-cancel-request-cancel-…". 815 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 816 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 817 callbacks = []; 818 callbacksCount = 0; 819 nextId = 1; 820 startId = 1; 821 isScheduled = false; 822 tick = (timestamp) => { 823 this.isScheduled = false; 824 const currentCallbacks = this.callbacks; 825 const currentCallbacksCount = this.callbacksCount; 826 this.callbacks = []; 827 this.callbacksCount = 0; 828 this.startId = this.nextId; 829 if (currentCallbacksCount > 0) { 830 for (let i = 0; i < currentCallbacks.length; i += 1) { 831 currentCallbacks[i]?.(timestamp); 832 } 833 } 834 }; 835 request(fn) { 836 const id = this.nextId; 837 this.nextId += 1; 838 this.callbacks.push(fn); 839 this.callbacksCount += 1; 840 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 841 if (!this.isScheduled || didRAFChange) { 842 requestAnimationFrame(this.tick); 843 this.isScheduled = true; 844 } 845 return id; 846 } 847 cancel(id) { 848 const index2 = id - this.startId; 849 if (index2 < 0 || index2 >= this.callbacks.length) { 850 return; 851 } 852 if (this.callbacks[index2] === null) { 853 return; 854 } 855 this.callbacks[index2] = null; 856 this.callbacksCount -= 1; 857 } 858 }; 859 var scheduler = new Scheduler(); 860 var AnimationFrame = class _AnimationFrame { 861 static create() { 862 return new _AnimationFrame(); 863 } 864 static request(fn) { 865 return scheduler.request(fn); 866 } 867 static cancel(id) { 868 return scheduler.cancel(id); 869 } 870 currentId = EMPTY; 871 /** 872 * Executes `fn` after `delay`, clearing any previously scheduled call. 873 */ 874 request(fn) { 875 this.cancel(); 876 this.currentId = scheduler.request(() => { 877 this.currentId = EMPTY; 878 fn(); 879 }); 880 } 881 cancel = () => { 882 if (this.currentId !== EMPTY) { 883 scheduler.cancel(this.currentId); 884 this.currentId = EMPTY; 885 } 886 }; 887 disposeEffect = () => { 888 return this.cancel; 889 }; 890 }; 891 function useAnimationFrame() { 892 const timeout = useRefWithInit(AnimationFrame.create).current; 893 useOnMount(timeout.disposeEffect); 894 return timeout; 895 } 896 897 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 898 function resolveRef(maybeRef) { 899 if (maybeRef == null) { 900 return maybeRef; 901 } 902 return "current" in maybeRef ? maybeRef.current : maybeRef; 903 } 904 905 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 906 function getFiniteAnimations(element, options) { 907 return element.getAnimations(options).filter((animation) => { 908 const timing = animation.effect?.getTiming(); 909 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 910 }); 911 } 912 913 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 914 var startingStyle = "data-starting-style"; 915 var endingStyle = "data-ending-style"; 916 917 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 918 var pendingCallbacks = null; 919 function flushBeforePaint(fn) { 920 if (!pendingCallbacks) { 921 const callbacks = []; 922 pendingCallbacks = callbacks; 923 queueMicrotask(() => { 924 pendingCallbacks = null; 925 ReactDOM.flushSync(() => { 926 for (const callback of callbacks) { 927 callback(); 928 } 929 }); 930 }); 931 } 932 pendingCallbacks.push(fn); 933 } 934 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 935 const frame = useAnimationFrame(); 936 return useStableCallback((fnToExecute, signal = null) => { 937 frame.cancel(); 938 const element = resolveRef(elementOrRef); 939 if (element == null) { 940 return; 941 } 942 const resolvedElement = element; 943 const done = () => { 944 if (!batch) { 945 ReactDOM.flushSync(fnToExecute); 946 return; 947 } 948 flushBeforePaint(() => { 949 if (!signal?.aborted) { 950 fnToExecute(); 951 } 952 }); 953 }; 954 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 955 fnToExecute(); 956 return; 957 } 958 function exec() { 959 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 960 if (!signal?.aborted) { 961 done(); 962 } 963 }, () => { 964 if (signal?.aborted) { 965 return; 966 } 967 const currentAnimations = getFiniteAnimations(resolvedElement); 968 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 969 exec(); 970 return; 971 } 972 done(); 973 }); 974 } 975 if (waitForStartingStyleRemoved) { 976 const startingStyleAttribute = startingStyle; 977 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 978 frame.request(exec); 979 return; 980 } 981 const attributeObserver = new MutationObserver(() => { 982 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 983 attributeObserver.disconnect(); 984 exec(); 985 } 986 }); 987 attributeObserver.observe(resolvedElement, { 988 attributes: true, 989 attributeFilter: [startingStyleAttribute] 990 }); 991 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 992 once: true 993 }); 994 return; 995 } 996 frame.request(exec); 997 }); 998 } 999 1000 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1001 function useOpenChangeComplete(parameters) { 1002 const { 1003 enabled = true, 1004 open: open2, 1005 ref, 1006 batch = false, 1007 onComplete: onCompleteParam 1008 } = parameters; 1009 const onComplete = useStableCallback(onCompleteParam); 1010 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1011 React8.useEffect(() => { 1012 if (!enabled) { 1013 return void 0; 1014 } 1015 const abortController = new AbortController(); 1016 runOnceAnimationsFinish(onComplete, abortController.signal); 1017 return () => { 1018 abortController.abort(); 1019 }; 1020 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1021 } 1022 1023 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1024 var STARTING_HOOK = { 1025 [startingStyle]: "" 1026 }; 1027 var ENDING_HOOK = { 1028 [endingStyle]: "" 1029 }; 1030 var transitionStatusMapping = { 1031 transitionStatus(value) { 1032 if (value === "starting") { 1033 return STARTING_HOOK; 1034 } 1035 if (value === "ending") { 1036 return ENDING_HOOK; 1037 } 1038 return null; 1039 } 1040 }; 1041 1042 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1043 var React9 = __toESM(require_react(), 1); 1044 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1045 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1046 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1047 if (open2 && !mounted) { 1048 setMounted(true); 1049 setTransitionStatus("starting"); 1050 } 1051 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1052 setTransitionStatus("ending"); 1053 } 1054 if (!open2 && !mounted && transitionStatus === "ending") { 1055 setTransitionStatus(void 0); 1056 } 1057 useIsoLayoutEffect(() => { 1058 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1059 const frame = AnimationFrame.request(() => { 1060 setTransitionStatus("ending"); 1061 }); 1062 return () => { 1063 AnimationFrame.cancel(frame); 1064 }; 1065 } 1066 return void 0; 1067 }, [open2, mounted, transitionStatus, deferEndingState]); 1068 useIsoLayoutEffect(() => { 1069 if (!open2 || enableIdleState || transitionStatus === void 0) { 1070 return void 0; 1071 } 1072 const frame = AnimationFrame.request(() => { 1073 setTransitionStatus(void 0); 1074 }); 1075 return () => { 1076 AnimationFrame.cancel(frame); 1077 }; 1078 }, [enableIdleState, open2, transitionStatus]); 1079 useIsoLayoutEffect(() => { 1080 if (!open2 || !enableIdleState) { 1081 return void 0; 1082 } 1083 if (open2 && mounted && transitionStatus !== "idle") { 1084 setTransitionStatus("starting"); 1085 } 1086 const frame = AnimationFrame.request(() => { 1087 setTransitionStatus("idle"); 1088 }); 1089 return () => { 1090 AnimationFrame.cancel(frame); 1091 }; 1092 }, [enableIdleState, open2, mounted, transitionStatus]); 1093 return { 1094 mounted, 1095 setMounted, 1096 transitionStatus 1097 }; 1098 } 1099 1100 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1101 var EMPTY2 = 0; 1102 var Timeout = class _Timeout { 1103 static create() { 1104 return new _Timeout(); 1105 } 1106 currentId = EMPTY2; 1107 /** 1108 * Executes `fn` after `delay`, clearing any previously scheduled call. 1109 */ 1110 start(delay, fn) { 1111 this.clear(); 1112 this.currentId = setTimeout(() => { 1113 this.currentId = EMPTY2; 1114 fn(); 1115 }, delay); 1116 } 1117 isStarted() { 1118 return this.currentId !== EMPTY2; 1119 } 1120 clear = () => { 1121 if (this.currentId !== EMPTY2) { 1122 clearTimeout(this.currentId); 1123 this.currentId = EMPTY2; 1124 } 1125 }; 1126 disposeEffect = () => { 1127 return this.clear; 1128 }; 1129 }; 1130 function useTimeout() { 1131 const timeout = useRefWithInit(Timeout.create).current; 1132 useOnMount(timeout.disposeEffect); 1133 return timeout; 1134 } 1135 1136 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 1137 function r(e) { 1138 var t, f, n = ""; 1139 if ("string" == typeof e || "number" == typeof e) n += e; 1140 else if ("object" == typeof e) if (Array.isArray(e)) { 1141 var o = e.length; 1142 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 1143 } else for (f in e) e[f] && (n && (n += " "), n += f); 1144 return n; 1145 } 1146 function clsx() { 1147 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 1148 return n; 1149 } 1150 var clsx_default = clsx; 1151 1152 // packages/ui/build-module/icon/icon.mjs 1153 var import_element = __toESM(require_element(), 1); 1154 var import_primitives = __toESM(require_primitives(), 1); 1155 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 1156 var Icon = (0, import_element.forwardRef)( 1157 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1158 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1159 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( 1160 import_primitives.SVG, 1161 { 1162 ref, 1163 ...icon.props, 1164 ...restProps, 1165 ...mergedStyle ? { style: mergedStyle } : {}, 1166 width: size4, 1167 height: size4 1168 } 1169 ); 1170 } 1171 ); 1172 1173 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1174 var React10 = __toESM(require_react(), 1); 1175 1176 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1177 var error = createLogOnce("error", "Base UI"); 1178 1179 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1180 function useControlled({ 1181 controlled, 1182 default: defaultProp, 1183 name, 1184 state = "value" 1185 }) { 1186 const { 1187 current: isControlled 1188 } = React10.useRef(controlled !== void 0); 1189 const [valueState, setValue] = React10.useState(() => defaultProp); 1190 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1191 if (true) { 1192 React10.useEffect(() => { 1193 if (isControlled !== (controlled !== void 0)) { 1194 error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name} element for the lifetime of the component.`, "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", "More info: https://fb.me/react-controlled-components"].join("\n")); 1195 } 1196 }, [state, name, controlled]); 1197 const { 1198 current: defaultValue 1199 } = React10.useRef(defaultProp); 1200 React10.useEffect(() => { 1201 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1202 error([`A component is changing the default $state} state of an uncontrolled $name} after being initialized. To suppress this warning opt to use a controlled $name}.`].join("\n")); 1203 } 1204 }, [defaultProp]); 1205 } 1206 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1207 if (!isControlled) { 1208 setValue(newValue); 1209 } 1210 }, []); 1211 return [value, setValueIfUncontrolled]; 1212 } 1213 function serializeToDevModeString(input) { 1214 let nextId = 0; 1215 const seen = /* @__PURE__ */ new WeakMap(); 1216 try { 1217 const result = JSON.stringify(input, function replacer(key, value) { 1218 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1219 return void 0; 1220 } 1221 if (typeof value === "bigint") { 1222 return `__bigint__:$value}`; 1223 } 1224 if (value !== null && typeof value === "object") { 1225 const id = seen.get(value); 1226 if (id !== void 0) { 1227 return `__object__:$id}`; 1228 } 1229 seen.set(value, nextId); 1230 nextId += 1; 1231 } 1232 return value; 1233 }); 1234 return result ?? `__top__:$typeof input}`; 1235 } catch { 1236 return "__unserializable__"; 1237 } 1238 } 1239 1240 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1241 var React12 = __toESM(require_react(), 1); 1242 1243 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs 1244 var React11 = __toESM(require_react(), 1); 1245 var CompositeListContext = /* @__PURE__ */ React11.createContext({ 1246 register: () => { 1247 }, 1248 unregister: () => { 1249 }, 1250 subscribeMapChange: () => () => { 1251 }, 1252 nextIndexRef: { 1253 current: 0 1254 } 1255 }); 1256 if (true) CompositeListContext.displayName = "CompositeListContext"; 1257 function useCompositeListContext() { 1258 return React11.useContext(CompositeListContext); 1259 } 1260 1261 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1262 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 1263 function CompositeList(props) { 1264 const { 1265 children, 1266 elementsRef, 1267 labelsRef, 1268 onMapChange: onMapChangeProp 1269 } = props; 1270 const onMapChange = useStableCallback(onMapChangeProp); 1271 const [, setMapTick] = React12.useState(0); 1272 const listeners = useRefWithInit(createListeners).current; 1273 const map = useRefWithInit(createMap).current; 1274 const nextIndexRef = React12.useRef(0); 1275 const isDirtyRef = React12.useRef(true); 1276 const itemsRef = React12.useRef(null); 1277 const mutationObserverRef = React12.useRef(null); 1278 const scheduleMapUpdate = useStableCallback(() => { 1279 if (isDirtyRef.current) { 1280 return; 1281 } 1282 isDirtyRef.current = true; 1283 setMapTick((tick) => tick + 1); 1284 }); 1285 const register2 = useStableCallback((node, registration) => { 1286 map.set(node, registration); 1287 scheduleMapUpdate(); 1288 }); 1289 const unregister = useStableCallback((node) => { 1290 map.delete(node); 1291 scheduleMapUpdate(); 1292 }); 1293 const syncRefs = useStableCallback((items) => { 1294 const nextMap = /* @__PURE__ */ new Map(); 1295 elementsRef.current.length = 0; 1296 if (labelsRef) { 1297 labelsRef.current.length = 0; 1298 } 1299 items.forEach((item) => { 1300 nextMap.set(item.element, { 1301 ...item.registration.metadata ?? {}, 1302 index: item.index 1303 }); 1304 elementsRef.current[item.index] = item.element; 1305 if (labelsRef) { 1306 labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent; 1307 } 1308 }); 1309 nextIndexRef.current = elementsRef.current.length; 1310 return nextMap; 1311 }); 1312 function observe(sortedNodes) { 1313 mutationObserverRef.current?.disconnect(); 1314 mutationObserverRef.current = null; 1315 if (typeof MutationObserver !== "function" || sortedNodes.length < 2) { 1316 return; 1317 } 1318 const mutationObserver = new MutationObserver((entries) => { 1319 if (!hasMovedNode(entries)) { 1320 return; 1321 } 1322 let previousConnectedNode = null; 1323 for (const node of sortedNodes) { 1324 if (!node.isConnected) { 1325 continue; 1326 } 1327 if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) { 1328 mutationObserver.disconnect(); 1329 scheduleMapUpdate(); 1330 return; 1331 } 1332 previousConnectedNode = node; 1333 } 1334 }); 1335 mutationObserverRef.current = mutationObserver; 1336 const roots = /* @__PURE__ */ new Set(); 1337 for (let i = 1; i < sortedNodes.length; i += 1) { 1338 const root2 = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]); 1339 if (root2) { 1340 roots.add(root2); 1341 } 1342 } 1343 roots.forEach((root2) => mutationObserver.observe(root2, { 1344 childList: true 1345 })); 1346 } 1347 const flush = useStableCallback(() => { 1348 const [items, automaticNodes] = getCompositeListSnapshot(map); 1349 const nextMap = syncRefs(items); 1350 const previousItems = itemsRef.current; 1351 const changed = !previousItems || previousItems.length !== items.length || items.some((item, index2) => { 1352 const previousItem = previousItems[index2]; 1353 return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata; 1354 }); 1355 observe(automaticNodes); 1356 itemsRef.current = items; 1357 isDirtyRef.current = false; 1358 if (!changed) { 1359 return; 1360 } 1361 listeners.forEach((listener) => listener(nextMap)); 1362 onMapChange(nextMap); 1363 }); 1364 useIsoLayoutEffect(() => { 1365 if (!isDirtyRef.current && itemsRef.current) { 1366 syncRefs(itemsRef.current); 1367 } 1368 return () => { 1369 elementsRef.current = []; 1370 if (labelsRef) { 1371 labelsRef.current = []; 1372 } 1373 }; 1374 }, [elementsRef, labelsRef, syncRefs]); 1375 useIsoLayoutEffect(() => { 1376 if (isDirtyRef.current) { 1377 flush(); 1378 } 1379 }); 1380 useIsoLayoutEffect(() => { 1381 return () => { 1382 mutationObserverRef.current?.disconnect(); 1383 isDirtyRef.current = true; 1384 }; 1385 }, []); 1386 const subscribeMapChange = useStableCallback((fn) => { 1387 listeners.add(fn); 1388 return () => { 1389 listeners.delete(fn); 1390 }; 1391 }); 1392 const contextValue = React12.useMemo(() => ({ 1393 register: register2, 1394 unregister, 1395 subscribeMapChange, 1396 nextIndexRef 1397 }), [register2, unregister, subscribeMapChange, nextIndexRef]); 1398 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CompositeListContext.Provider, { 1399 value: contextValue, 1400 children 1401 }); 1402 } 1403 function createMap() { 1404 return /* @__PURE__ */ new Map(); 1405 } 1406 function createListeners() { 1407 return /* @__PURE__ */ new Set(); 1408 } 1409 function getCompositeListSnapshot(map) { 1410 const reservedIndices = /* @__PURE__ */ new Set(); 1411 const items = []; 1412 const automaticItems = []; 1413 map.forEach((registration, node) => { 1414 if (!node.isConnected) { 1415 return; 1416 } 1417 const index2 = registration.index; 1418 const item = { 1419 index: index2 ?? -1, 1420 element: node, 1421 registration 1422 }; 1423 if (index2 === null) { 1424 automaticItems.push(item); 1425 } else if (index2 >= 0) { 1426 reservedIndices.add(index2); 1427 items.push(item); 1428 } 1429 }); 1430 let nextAutomaticIndex = 0; 1431 automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)); 1432 automaticItems.forEach((item) => { 1433 while (reservedIndices.has(nextAutomaticIndex)) { 1434 nextAutomaticIndex += 1; 1435 } 1436 item.index = nextAutomaticIndex; 1437 items.push(item); 1438 nextAutomaticIndex += 1; 1439 }); 1440 if (reservedIndices.size > 0) { 1441 items.sort((a, b) => a.index - b.index); 1442 } 1443 return [items, automaticItems.map((item) => item.element)]; 1444 } 1445 function getCommonAncestor(firstNode, lastNode) { 1446 let ancestor = firstNode.parentElement; 1447 while (ancestor && !ancestor.contains(lastNode)) { 1448 ancestor = ancestor.parentElement; 1449 } 1450 return ancestor; 1451 } 1452 function hasMovedNode(entries) { 1453 for (const entry of entries) { 1454 for (let i = 0; i < entry.removedNodes.length; i += 1) { 1455 if (entry.removedNodes[i].isConnected) { 1456 return true; 1457 } 1458 } 1459 } 1460 return false; 1461 } 1462 function sortByDocumentPosition(a, b) { 1463 if (a.nextElementSibling === b) { 1464 return -1; 1465 } 1466 if (b.nextElementSibling === a) { 1467 return 1; 1468 } 1469 return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; 1470 } 1471 1472 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1473 var React14 = __toESM(require_react(), 1); 1474 1475 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1476 var React13 = __toESM(require_react(), 1); 1477 function useForcedRerendering() { 1478 const [, setState] = React13.useState({}); 1479 return React13.useCallback(() => { 1480 setState({}); 1481 }, []); 1482 } 1483 1484 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1485 var globalId = 0; 1486 function useGlobalId(idOverride, prefix = "mui") { 1487 const defaultId = React14.useRef(void 0); 1488 const forceRerender = useForcedRerendering(); 1489 const id = idOverride ?? defaultId.current; 1490 React14.useEffect(() => { 1491 if (defaultId.current == null) { 1492 globalId += 1; 1493 defaultId.current = `$prefix}-$globalId}`; 1494 if (idOverride == null) { 1495 forceRerender(); 1496 } 1497 } 1498 }, [idOverride, prefix, forceRerender]); 1499 return id; 1500 } 1501 var maybeReactUseId = SafeReact.useId; 1502 function useId(idOverride, prefix) { 1503 if (maybeReactUseId !== void 0) { 1504 const reactId = maybeReactUseId(); 1505 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1506 } 1507 return useGlobalId(idOverride, prefix); 1508 } 1509 1510 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1511 function useBaseUiId(idOverride) { 1512 return useId(idOverride, "base-ui"); 1513 } 1514 1515 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1516 function createChangeEventDetails(reason, event, trigger, customProperties) { 1517 let canceled = false; 1518 let allowPropagation = false; 1519 const custom = customProperties ?? EMPTY_OBJECT; 1520 const details = { 1521 reason, 1522 event: event ?? new Event("base-ui"), 1523 cancel() { 1524 canceled = true; 1525 }, 1526 allowPropagation() { 1527 allowPropagation = true; 1528 }, 1529 get isCanceled() { 1530 return canceled; 1531 }, 1532 get isPropagationAllowed() { 1533 return allowPropagation; 1534 }, 1535 trigger, 1536 ...custom 1537 }; 1538 return details; 1539 } 1540 function createGenericEventDetails(reason, event, customProperties) { 1541 const custom = customProperties ?? EMPTY_OBJECT; 1542 const details = { 1543 reason, 1544 event: event ?? new Event("base-ui"), 1545 ...custom 1546 }; 1547 return details; 1548 } 1549 1550 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1551 var reason_parts_exports = {}; 1552 __export(reason_parts_exports, { 1553 cancelOpen: () => cancelOpen, 1554 chipRemovePress: () => chipRemovePress, 1555 clearPress: () => clearPress, 1556 closePress: () => closePress, 1557 closeWatcher: () => closeWatcher, 1558 decrementPress: () => decrementPress, 1559 disabled: () => disabled, 1560 drag: () => drag, 1561 escapeKey: () => escapeKey, 1562 focusOut: () => focusOut, 1563 imperativeAction: () => imperativeAction, 1564 incrementPress: () => incrementPress, 1565 initial: () => initial, 1566 inputBlur: () => inputBlur, 1567 inputChange: () => inputChange, 1568 inputClear: () => inputClear, 1569 inputPaste: () => inputPaste, 1570 inputPress: () => inputPress, 1571 itemPress: () => itemPress, 1572 keyboard: () => keyboard, 1573 linkPress: () => linkPress, 1574 listNavigation: () => listNavigation, 1575 missing: () => missing, 1576 none: () => none, 1577 outsidePress: () => outsidePress, 1578 pointer: () => pointer, 1579 popupClose: () => popupClose, 1580 scrub: () => scrub, 1581 siblingOpen: () => siblingOpen, 1582 swipe: () => swipe, 1583 trackPress: () => trackPress, 1584 triggerFocus: () => triggerFocus, 1585 triggerHover: () => triggerHover, 1586 triggerPress: () => triggerPress, 1587 wheel: () => wheel, 1588 windowResize: () => windowResize 1589 }); 1590 var none = "none"; 1591 var triggerPress = "trigger-press"; 1592 var triggerHover = "trigger-hover"; 1593 var triggerFocus = "trigger-focus"; 1594 var outsidePress = "outside-press"; 1595 var itemPress = "item-press"; 1596 var closePress = "close-press"; 1597 var linkPress = "link-press"; 1598 var clearPress = "clear-press"; 1599 var chipRemovePress = "chip-remove-press"; 1600 var trackPress = "track-press"; 1601 var incrementPress = "increment-press"; 1602 var decrementPress = "decrement-press"; 1603 var inputChange = "input-change"; 1604 var inputClear = "input-clear"; 1605 var inputBlur = "input-blur"; 1606 var inputPaste = "input-paste"; 1607 var inputPress = "input-press"; 1608 var focusOut = "focus-out"; 1609 var escapeKey = "escape-key"; 1610 var closeWatcher = "close-watcher"; 1611 var listNavigation = "list-navigation"; 1612 var keyboard = "keyboard"; 1613 var pointer = "pointer"; 1614 var drag = "drag"; 1615 var wheel = "wheel"; 1616 var scrub = "scrub"; 1617 var popupClose = "popup-close"; 1618 var cancelOpen = "cancel-open"; 1619 var siblingOpen = "sibling-open"; 1620 var disabled = "disabled"; 1621 var missing = "missing"; 1622 var initial = "initial"; 1623 var imperativeAction = "imperative-action"; 1624 var swipe = "swipe"; 1625 var windowResize = "window-resize"; 1626 1627 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs 1628 var React15 = __toESM(require_react(), 1); 1629 function useCompositeListItem(params = {}) { 1630 const { 1631 guess, 1632 label, 1633 metadata, 1634 textRef, 1635 index: externalIndex 1636 } = params; 1637 const { 1638 register: register2, 1639 unregister, 1640 subscribeMapChange, 1641 nextIndexRef 1642 } = useCompositeListContext(); 1643 const indexRef = React15.useRef(-1); 1644 const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => { 1645 if (indexRef.current === -1) { 1646 const newIndex = nextIndexRef.current; 1647 nextIndexRef.current += 1; 1648 indexRef.current = newIndex; 1649 } 1650 return indexRef.current; 1651 } : -1); 1652 const index2 = externalIndex ?? internalIndex; 1653 const componentRef = React15.useRef(null); 1654 const ref = React15.useCallback((node) => { 1655 const previousNode = componentRef.current; 1656 if (previousNode) { 1657 unregister(previousNode); 1658 } 1659 componentRef.current = node; 1660 if (node) { 1661 register2(node, { 1662 metadata: metadata ?? null, 1663 index: externalIndex ?? null, 1664 label, 1665 textRef 1666 }); 1667 } 1668 }, [externalIndex, register2, unregister, metadata, label, textRef]); 1669 useIsoLayoutEffect(() => { 1670 if (externalIndex != null) { 1671 return void 0; 1672 } 1673 return subscribeMapChange((map) => { 1674 const i = componentRef.current ? map.get(componentRef.current)?.index : null; 1675 if (i != null) { 1676 setInternalIndex(i); 1677 } 1678 }); 1679 }, [externalIndex, subscribeMapChange]); 1680 return { 1681 ref, 1682 index: index2 1683 }; 1684 } 1685 1686 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1687 var React18 = __toESM(require_react(), 1); 1688 1689 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1690 function hasWindow() { 1691 return typeof window !== "undefined"; 1692 } 1693 function getNodeName(node) { 1694 if (isNode(node)) { 1695 return (node.nodeName || "").toLowerCase(); 1696 } 1697 return "#document"; 1698 } 1699 function getWindow(node) { 1700 var _node$ownerDocument; 1701 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1702 } 1703 function getDocumentElement(node) { 1704 var _ref; 1705 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1706 } 1707 function isNode(value) { 1708 if (!hasWindow()) { 1709 return false; 1710 } 1711 return value instanceof Node || value instanceof getWindow(value).Node; 1712 } 1713 function isElement(value) { 1714 if (!hasWindow()) { 1715 return false; 1716 } 1717 return value instanceof Element || value instanceof getWindow(value).Element; 1718 } 1719 function isHTMLElement(value) { 1720 if (!hasWindow()) { 1721 return false; 1722 } 1723 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1724 } 1725 function isShadowRoot(value) { 1726 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1727 return false; 1728 } 1729 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1730 } 1731 function isOverflowElement(element) { 1732 const { 1733 overflow, 1734 overflowX, 1735 overflowY, 1736 display 1737 } = getComputedStyle2(element); 1738 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1739 } 1740 function isTableElement(element) { 1741 return /^(table|td|th)$/.test(getNodeName(element)); 1742 } 1743 function isTopLayer(element) { 1744 try { 1745 if (element.matches(":popover-open")) { 1746 return true; 1747 } 1748 } catch (_e) { 1749 } 1750 try { 1751 return element.matches(":modal"); 1752 } catch (_e) { 1753 return false; 1754 } 1755 } 1756 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1757 var containRe = /paint|layout|strict|content/; 1758 var isNotNone = (value) => !!value && value !== "none"; 1759 var isWebKitValue; 1760 function isContainingBlock(elementOrCss) { 1761 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1762 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 || ""); 1763 } 1764 function getContainingBlock(element) { 1765 let currentNode = getParentNode(element); 1766 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1767 if (isContainingBlock(currentNode)) { 1768 return currentNode; 1769 } else if (isTopLayer(currentNode)) { 1770 return null; 1771 } 1772 currentNode = getParentNode(currentNode); 1773 } 1774 return null; 1775 } 1776 function isWebKit() { 1777 if (isWebKitValue == null) { 1778 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1779 } 1780 return isWebKitValue; 1781 } 1782 function isLastTraversableNode(node) { 1783 return /^(html|body|#document)$/.test(getNodeName(node)); 1784 } 1785 function getComputedStyle2(element) { 1786 return getWindow(element).getComputedStyle(element); 1787 } 1788 function getNodeScroll(element) { 1789 if (isElement(element)) { 1790 return { 1791 scrollLeft: element.scrollLeft, 1792 scrollTop: element.scrollTop 1793 }; 1794 } 1795 return { 1796 scrollLeft: element.scrollX, 1797 scrollTop: element.scrollY 1798 }; 1799 } 1800 function getParentNode(node) { 1801 if (getNodeName(node) === "html") { 1802 return node; 1803 } 1804 const result = ( 1805 // Step into the shadow DOM of the parent of a slotted node. 1806 node.assignedSlot || // DOM Element detected. 1807 node.parentNode || // ShadowRoot detected. 1808 isShadowRoot(node) && node.host || // Fallback. 1809 getDocumentElement(node) 1810 ); 1811 return isShadowRoot(result) ? result.host : result; 1812 } 1813 function getNearestOverflowAncestor(node) { 1814 const parentNode = getParentNode(node); 1815 if (isLastTraversableNode(parentNode)) { 1816 return (node.ownerDocument || node).body; 1817 } 1818 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 1819 return parentNode; 1820 } 1821 return getNearestOverflowAncestor(parentNode); 1822 } 1823 function getOverflowAncestors(node, list, traverseIframes) { 1824 var _node$ownerDocument2; 1825 if (list === void 0) { 1826 list = []; 1827 } 1828 if (traverseIframes === void 0) { 1829 traverseIframes = true; 1830 } 1831 const scrollableAncestor = getNearestOverflowAncestor(node); 1832 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 1833 const win = getWindow(scrollableAncestor); 1834 if (isBody) { 1835 const frameElement = getFrameElement(win); 1836 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 1837 } else { 1838 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 1839 } 1840 } 1841 function getFrameElement(win) { 1842 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 1843 } 1844 1845 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 1846 var React16 = __toESM(require_react(), 1); 1847 var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0); 1848 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 1849 function useCompositeRootContext(optional = false) { 1850 const context = React16.useContext(CompositeRootContext); 1851 if (context === void 0 && !optional) { 1852 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 1853 } 1854 return context; 1855 } 1856 1857 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 1858 var React17 = __toESM(require_react(), 1); 1859 function useFocusableWhenDisabled(parameters) { 1860 const { 1861 focusableWhenDisabled, 1862 disabled: disabled2, 1863 composite = false, 1864 tabIndex: tabIndexProp = 0, 1865 isNativeButton 1866 } = parameters; 1867 const isFocusableComposite = composite && focusableWhenDisabled !== false; 1868 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 1869 const props = React17.useMemo(() => { 1870 const additionalProps = { 1871 // allow Tabbing away from focusableWhenDisabled elements 1872 onKeyDown(event) { 1873 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 1874 event.preventDefault(); 1875 } 1876 } 1877 }; 1878 if (!composite) { 1879 additionalProps.tabIndex = tabIndexProp; 1880 if (!isNativeButton && disabled2) { 1881 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 1882 } 1883 } 1884 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 1885 additionalProps["aria-disabled"] = disabled2; 1886 } 1887 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 1888 additionalProps.disabled = disabled2; 1889 } 1890 return additionalProps; 1891 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 1892 return { 1893 props 1894 }; 1895 } 1896 1897 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 1898 function ownerDocument(node) { 1899 return node?.ownerDocument || document; 1900 } 1901 1902 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 1903 function dispatchClickWithModifiers(target, sourceEvent, { 1904 detail = 0, 1905 pointerType = "" 1906 } = {}) { 1907 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 1908 bubbles: true, 1909 cancelable: true, 1910 composed: true, 1911 detail, 1912 pointerType, 1913 shiftKey: sourceEvent.shiftKey, 1914 ctrlKey: sourceEvent.ctrlKey, 1915 altKey: sourceEvent.altKey, 1916 metaKey: sourceEvent.metaKey 1917 })); 1918 } 1919 1920 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1921 function useButton(parameters = {}) { 1922 const { 1923 disabled: disabled2 = false, 1924 focusableWhenDisabled, 1925 tabIndex = 0, 1926 native: isNativeButton = true, 1927 composite: compositeProp 1928 } = parameters; 1929 const elementRef = React18.useRef(null); 1930 const compositeRootContext = useCompositeRootContext(true); 1931 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 1932 const { 1933 props: focusableWhenDisabledProps 1934 } = useFocusableWhenDisabled({ 1935 focusableWhenDisabled, 1936 disabled: disabled2, 1937 composite: isCompositeItem, 1938 tabIndex, 1939 isNativeButton 1940 }); 1941 if (true) { 1942 React18.useEffect(() => { 1943 if (!elementRef.current) { 1944 return; 1945 } 1946 const isButtonTag = isButtonElement(elementRef.current); 1947 if (isNativeButton) { 1948 if (!isButtonTag) { 1949 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1950 const message = "A component that acts as a button expected a native <button> because the `nativeButton` prop is true. Rendering a non-<button> removes native button semantics, which can impact forms and accessibility. Use a real <button> in the `render` prop, or set `nativeButton` to `false`."; 1951 error(`$message}$ownerStackMessage}`); 1952 } 1953 } else if (isButtonTag) { 1954 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1955 const message = "A component that acts as a button expected a non-<button> because the `nativeButton` prop is false. Rendering a <button> keeps native behavior while Base UI applies non-native attributes and handlers, which can add unintended extra attributes (such as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set `nativeButton` to `true`."; 1956 error(`$message}$ownerStackMessage}`); 1957 } 1958 }, [isNativeButton]); 1959 } 1960 const updateDisabled = React18.useCallback(() => { 1961 const element = elementRef.current; 1962 if (!isButtonElement(element)) { 1963 return; 1964 } 1965 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 1966 element.disabled = false; 1967 } 1968 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 1969 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 1970 const getButtonProps = React18.useCallback((externalProps = {}) => { 1971 const { 1972 onClick: externalOnClick, 1973 onMouseDown: externalOnMouseDown, 1974 onKeyUp: externalOnKeyUp, 1975 onKeyDown: externalOnKeyDown, 1976 onPointerDown: externalOnPointerDown, 1977 ...otherExternalProps 1978 } = externalProps; 1979 return mergeProps({ 1980 onClick(event) { 1981 if (disabled2) { 1982 event.preventDefault(); 1983 return; 1984 } 1985 externalOnClick?.(event); 1986 }, 1987 onMouseDown(event) { 1988 if (!disabled2) { 1989 externalOnMouseDown?.(event); 1990 } 1991 }, 1992 onKeyDown(event) { 1993 if (disabled2) { 1994 return; 1995 } 1996 makeEventPreventable(event); 1997 externalOnKeyDown?.(event); 1998 if (event.baseUIHandlerPrevented) { 1999 return; 2000 } 2001 const isCurrentTarget = event.target === event.currentTarget; 2002 const currentTarget = event.currentTarget; 2003 const isButton = isButtonElement(currentTarget); 2004 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 2005 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 2006 const isEnterKey = event.key === "Enter"; 2007 const isSpaceKey = event.key === " "; 2008 const role = currentTarget.getAttribute("role"); 2009 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 2010 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 2011 if (event.defaultPrevented && isTextNavigationRole) { 2012 return; 2013 } 2014 event.preventDefault(); 2015 if (!isNativeButton || isButton) { 2016 event.preventBaseUIHandler(); 2017 dispatchClickWithModifiers(currentTarget, event); 2018 } 2019 return; 2020 } 2021 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 2022 if (isCurrentTarget && isLink && isSpaceKey) { 2023 event.preventDefault(); 2024 } 2025 return; 2026 } 2027 if (event.defaultPrevented) { 2028 return; 2029 } 2030 event.preventDefault(); 2031 if (isEnterKey) { 2032 event.preventBaseUIHandler(); 2033 dispatchClickWithModifiers(currentTarget, event); 2034 } 2035 }, 2036 onKeyUp(event) { 2037 if (disabled2) { 2038 return; 2039 } 2040 makeEventPreventable(event); 2041 externalOnKeyUp?.(event); 2042 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 2043 event.preventDefault(); 2044 return; 2045 } 2046 if (event.baseUIHandlerPrevented) { 2047 return; 2048 } 2049 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 2050 event.preventBaseUIHandler(); 2051 dispatchClickWithModifiers(event.currentTarget, event); 2052 } 2053 }, 2054 onPointerDown(event) { 2055 if (disabled2) { 2056 event.preventDefault(); 2057 return; 2058 } 2059 externalOnPointerDown?.(event); 2060 } 2061 }, isNativeButton ? { 2062 type: "button" 2063 } : { 2064 role: "button" 2065 }, focusableWhenDisabledProps, otherExternalProps); 2066 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2067 const buttonRef = useStableCallback((element) => { 2068 elementRef.current = element; 2069 updateDisabled(); 2070 }); 2071 return { 2072 getButtonProps, 2073 buttonRef 2074 }; 2075 } 2076 function isButtonElement(elem) { 2077 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2078 } 2079 function isValidLinkElement(elem) { 2080 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2081 } 2082 2083 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2084 function addEventListener(target, type, listener, options) { 2085 target.addEventListener(type, listener, options); 2086 return () => { 2087 target.removeEventListener(type, listener, options); 2088 }; 2089 } 2090 2091 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2092 function useValueAsRef(value) { 2093 const latest = useRefWithInit(createLatestRef, value).current; 2094 latest.next = value; 2095 useIsoLayoutEffect(latest.effect); 2096 return latest; 2097 } 2098 function createLatestRef(value) { 2099 const latest = { 2100 current: value, 2101 next: value, 2102 effect: () => { 2103 latest.current = latest.next; 2104 } 2105 }; 2106 return latest; 2107 } 2108 2109 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2110 var parts_exports = {}; 2111 __export(parts_exports, { 2112 engine: () => engine_exports, 2113 env: () => env_exports, 2114 mediaQuery: () => media_query_exports, 2115 os: () => os_exports, 2116 screenReader: () => screen_reader_exports 2117 }); 2118 2119 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2120 var os_exports = {}; 2121 __export(os_exports, { 2122 android: () => android, 2123 apple: () => apple, 2124 ios: () => ios, 2125 linux: () => linux, 2126 mac: () => mac, 2127 windows: () => windows 2128 }); 2129 2130 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2131 function readRawData() { 2132 if (typeof navigator === "undefined") { 2133 return { 2134 userAgent: "", 2135 platform: "", 2136 maxTouchPoints: 0 2137 }; 2138 } 2139 if (true) { 2140 const uaData = navigator.userAgentData; 2141 if (uaData && Array.isArray(uaData.brands)) { 2142 return { 2143 userAgent: uaData.brands.map(({ 2144 brand, 2145 version: version2 2146 }) => `$brand}/$version2}`).join(" "), 2147 platform: uaData.platform ?? navigator.platform ?? "", 2148 maxTouchPoints: navigator.maxTouchPoints ?? 0 2149 }; 2150 } 2151 } 2152 return { 2153 userAgent: navigator.userAgent, 2154 platform: navigator.platform ?? "", 2155 maxTouchPoints: navigator.maxTouchPoints ?? 0 2156 }; 2157 } 2158 var { 2159 userAgent, 2160 platform, 2161 maxTouchPoints 2162 } = readRawData(); 2163 var lowerUserAgent = userAgent.toLowerCase(); 2164 var lowerPlatform = platform.toLowerCase(); 2165 2166 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2167 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2168 var ANDROID_STRING = "android"; 2169 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2170 var mac = !ios && lowerPlatform.startsWith("mac"); 2171 var windows = lowerPlatform.startsWith("win"); 2172 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2173 var apple = mac || ios; 2174 2175 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2176 var engine_exports = {}; 2177 __export(engine_exports, { 2178 blink: () => blink, 2179 gecko: () => gecko, 2180 webkit: () => webkit 2181 }); 2182 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2183 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2184 var blink = !webkit && lowerUserAgent.includes("chrom"); 2185 2186 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2187 var screen_reader_exports = {}; 2188 __export(screen_reader_exports, { 2189 voiceOver: () => voiceOver 2190 }); 2191 var voiceOver = apple; 2192 2193 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2194 var env_exports = {}; 2195 __export(env_exports, { 2196 jsdom: () => jsdom 2197 }); 2198 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2199 2200 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2201 var media_query_exports = {}; 2202 __export(media_query_exports, { 2203 iOS: () => iOS 2204 }); 2205 var iOS = "@supports (-webkit-touch-callout: none)"; 2206 2207 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useScrollLock.mjs 2208 var originalHtmlStyles = {}; 2209 var originalBodyStyles = {}; 2210 var originalHtmlScrollBehavior = ""; 2211 function getViewportScroller(html, body) { 2212 return isOverflowElement(html) ? html : body; 2213 } 2214 function isPageScrollLocked(win, html, body) { 2215 return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY); 2216 } 2217 function hasInsetScrollbars(referenceElement) { 2218 if (typeof document === "undefined") { 2219 return false; 2220 } 2221 const doc = ownerDocument(referenceElement); 2222 const win = getWindow(doc); 2223 return win.innerWidth - doc.documentElement.clientWidth > 0; 2224 } 2225 function supportsStableScrollbarGutter(referenceElement) { 2226 const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable"); 2227 if (!supported || typeof document === "undefined") { 2228 return false; 2229 } 2230 const doc = ownerDocument(referenceElement); 2231 const html = doc.documentElement; 2232 const body = doc.body; 2233 const scrollContainer = getViewportScroller(html, body); 2234 const originalScrollContainerOverflowY = scrollContainer.style.overflowY; 2235 const originalHtmlStyleGutter = html.style.scrollbarGutter; 2236 html.style.scrollbarGutter = "stable"; 2237 scrollContainer.style.overflowY = "scroll"; 2238 const before = scrollContainer.offsetWidth; 2239 scrollContainer.style.overflowY = "hidden"; 2240 const after = scrollContainer.offsetWidth; 2241 scrollContainer.style.overflowY = originalScrollContainerOverflowY; 2242 html.style.scrollbarGutter = originalHtmlStyleGutter; 2243 return before === after; 2244 } 2245 function preventScrollOverlayScrollbars(referenceElement) { 2246 const doc = ownerDocument(referenceElement); 2247 const html = doc.documentElement; 2248 const body = doc.body; 2249 const elementToLock = getViewportScroller(html, body); 2250 const originalElementToLockStyles = { 2251 overflowY: elementToLock.style.overflowY, 2252 overflowX: elementToLock.style.overflowX 2253 }; 2254 Object.assign(elementToLock.style, { 2255 overflowY: "hidden", 2256 overflowX: "hidden" 2257 }); 2258 return () => { 2259 Object.assign(elementToLock.style, originalElementToLockStyles); 2260 }; 2261 } 2262 function preventScrollInsetScrollbars(referenceElement) { 2263 const doc = ownerDocument(referenceElement); 2264 const html = doc.documentElement; 2265 const body = doc.body; 2266 const win = getWindow(html); 2267 let scrollTop = 0; 2268 let scrollLeft = 0; 2269 let updateGutterOnly = false; 2270 const resizeFrame = AnimationFrame.create(); 2271 if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) { 2272 return () => { 2273 }; 2274 } 2275 function lockScroll() { 2276 const htmlStyles = win.getComputedStyle(html); 2277 const bodyStyles = win.getComputedStyle(body); 2278 const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || ""; 2279 const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges"); 2280 const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable"; 2281 scrollTop = html.scrollTop; 2282 scrollLeft = html.scrollLeft; 2283 originalHtmlStyles = { 2284 scrollbarGutter: html.style.scrollbarGutter, 2285 overflowY: html.style.overflowY, 2286 overflowX: html.style.overflowX 2287 }; 2288 originalHtmlScrollBehavior = html.style.scrollBehavior; 2289 originalBodyStyles = { 2290 position: body.style.position, 2291 height: body.style.height, 2292 width: body.style.width, 2293 boxSizing: body.style.boxSizing, 2294 overflowY: body.style.overflowY, 2295 overflowX: body.style.overflowX, 2296 scrollBehavior: body.style.scrollBehavior 2297 }; 2298 const isScrollableY2 = html.scrollHeight > html.clientHeight; 2299 const isScrollableX = html.scrollWidth > html.clientWidth; 2300 const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll"; 2301 const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll"; 2302 const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth); 2303 const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight); 2304 const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom); 2305 const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight); 2306 const elementToLock = getViewportScroller(html, body); 2307 updateGutterOnly = supportsStableScrollbarGutter(referenceElement); 2308 if (updateGutterOnly) { 2309 html.style.scrollbarGutter = scrollbarGutterValue; 2310 elementToLock.style.overflowY = "hidden"; 2311 elementToLock.style.overflowX = "hidden"; 2312 return; 2313 } 2314 Object.assign(html.style, { 2315 scrollbarGutter: scrollbarGutterValue, 2316 overflowY: "hidden", 2317 overflowX: "hidden" 2318 }); 2319 if (isScrollableY2 || hasConstantOverflowY) { 2320 html.style.overflowY = "scroll"; 2321 } 2322 if (isScrollableX || hasConstantOverflowX) { 2323 html.style.overflowX = "scroll"; 2324 } 2325 Object.assign(body.style, { 2326 position: "relative", 2327 height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh", 2328 width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw", 2329 boxSizing: "border-box", 2330 // Assign the longhands that `cleanup` restores, so nothing is left behind. 2331 overflowY: "hidden", 2332 overflowX: "hidden", 2333 scrollBehavior: "unset" 2334 }); 2335 body.scrollTop = scrollTop; 2336 body.scrollLeft = scrollLeft; 2337 html.setAttribute("data-base-ui-scroll-locked", ""); 2338 html.style.scrollBehavior = "unset"; 2339 } 2340 function cleanup() { 2341 Object.assign(html.style, originalHtmlStyles); 2342 Object.assign(body.style, originalBodyStyles); 2343 if (!updateGutterOnly) { 2344 html.scrollTop = scrollTop; 2345 html.scrollLeft = scrollLeft; 2346 html.removeAttribute("data-base-ui-scroll-locked"); 2347 html.style.scrollBehavior = originalHtmlScrollBehavior; 2348 } 2349 } 2350 function handleResize() { 2351 cleanup(); 2352 resizeFrame.request(lockScroll); 2353 } 2354 lockScroll(); 2355 const unsubscribeResize = addEventListener(win, "resize", handleResize); 2356 return () => { 2357 resizeFrame.cancel(); 2358 cleanup(); 2359 if (typeof win.removeEventListener === "function") { 2360 unsubscribeResize(); 2361 } 2362 }; 2363 } 2364 var ScrollLocker = class { 2365 lockCount = 0; 2366 restore = null; 2367 timeoutLock = Timeout.create(); 2368 timeoutUnlock = Timeout.create(); 2369 acquire(referenceElement) { 2370 this.lockCount += 1; 2371 if (this.lockCount === 1 && this.restore === null) { 2372 this.timeoutLock.start(0, () => this.lock(referenceElement)); 2373 } 2374 return this.release; 2375 } 2376 release = () => { 2377 this.lockCount -= 1; 2378 if (this.lockCount === 0 && this.restore) { 2379 this.timeoutUnlock.start(0, this.unlock); 2380 } 2381 }; 2382 unlock = () => { 2383 if (this.lockCount === 0 && this.restore) { 2384 this.restore?.(); 2385 this.restore = null; 2386 } 2387 }; 2388 lock(referenceElement) { 2389 if (this.lockCount === 0 || this.restore !== null) { 2390 return; 2391 } 2392 const doc = ownerDocument(referenceElement); 2393 const html = doc.documentElement; 2394 const body = doc.body; 2395 const win = getWindow(html); 2396 if (isPageScrollLocked(win, html, body)) { 2397 const observer = new win.MutationObserver(() => { 2398 if (isPageScrollLocked(win, html, body)) { 2399 return; 2400 } 2401 observer.disconnect(); 2402 this.restore = null; 2403 this.lock(referenceElement); 2404 }); 2405 const options = { 2406 attributes: true 2407 }; 2408 observer.observe(html, options); 2409 observer.observe(body, options); 2410 this.restore = () => observer.disconnect(); 2411 return; 2412 } 2413 const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement); 2414 this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement); 2415 } 2416 }; 2417 var SCROLL_LOCKER = new ScrollLocker(); 2418 function useScrollLock(enabled = true, referenceElement = null) { 2419 useIsoLayoutEffect(() => { 2420 if (!enabled) { 2421 return void 0; 2422 } 2423 return SCROLL_LOCKER.acquire(referenceElement); 2424 }, [enabled, referenceElement]); 2425 } 2426 2427 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2428 var React19 = __toESM(require_react(), 1); 2429 2430 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2431 function stopEvent(event) { 2432 event.preventDefault(); 2433 event.stopPropagation(); 2434 } 2435 function isReactEvent(event) { 2436 return "nativeEvent" in event; 2437 } 2438 function isVirtualClick(event) { 2439 if (event.pointerType === "" && event.isTrusted) { 2440 return true; 2441 } 2442 if (parts_exports.os.android && event.pointerType) { 2443 return event.type === "click" && event.buttons === 1; 2444 } 2445 return event.detail === 0 && !event.pointerType; 2446 } 2447 function isVirtualPointerEvent(event) { 2448 if (parts_exports.env.jsdom) { 2449 return false; 2450 } 2451 return !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse 2452 // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop 2453 // mouse presses can report no pressure, so only require no pressed button off Android. 2454 event.type === "pointerdown" && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" && (parts_exports.os.android || event.buttons === 0) || // iOS VoiceOver returns 0.333• for width/height. 2455 event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch"; 2456 } 2457 function isMouseLikePointerType(pointerType, strict) { 2458 const values = ["mouse", "pen"]; 2459 if (!strict) { 2460 values.push("", void 0); 2461 } 2462 return values.includes(pointerType); 2463 } 2464 function isClickLikeEvent(event) { 2465 const type = event.type; 2466 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2467 } 2468 2469 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2470 function activeElement(doc) { 2471 let element = doc.activeElement; 2472 while (element?.shadowRoot?.activeElement != null) { 2473 element = element.shadowRoot.activeElement; 2474 } 2475 return element; 2476 } 2477 function contains(parent, child) { 2478 if (!parent || !child) { 2479 return false; 2480 } 2481 const rootNode = child.getRootNode?.(); 2482 if (parent.contains(child)) { 2483 return true; 2484 } 2485 if (rootNode && isShadowRoot(rootNode)) { 2486 let next = child; 2487 while (next) { 2488 if (parent === next) { 2489 return true; 2490 } 2491 next = next.parentNode || next.host; 2492 } 2493 } 2494 return false; 2495 } 2496 function closest(node, selector) { 2497 let current = node; 2498 while (current) { 2499 if (isElement(current) && current.matches(selector)) { 2500 return current; 2501 } 2502 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2503 } 2504 return null; 2505 } 2506 function getTarget(event) { 2507 if ("composedPath" in event) { 2508 return event.composedPath()[0] ?? event.target; 2509 } 2510 return event.target; 2511 } 2512 2513 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2514 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2515 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2516 var ARROW_LEFT = "ArrowLeft"; 2517 var ARROW_RIGHT = "ArrowRight"; 2518 var ARROW_UP = "ArrowUp"; 2519 var ARROW_DOWN = "ArrowDown"; 2520 2521 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2522 var open = "data-open"; 2523 var closed = "data-closed"; 2524 var anchorHidden = "data-anchor-hidden"; 2525 2526 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2527 var CommonTriggerDataAttributes_exports = {}; 2528 __export(CommonTriggerDataAttributes_exports, { 2529 popupOpen: () => popupOpen, 2530 pressed: () => pressed 2531 }); 2532 var popupOpen = "data-popup-open"; 2533 var pressed = "data-pressed"; 2534 2535 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2536 var TRIGGER_HOOK = { 2537 [popupOpen]: "" 2538 }; 2539 var PRESSABLE_TRIGGER_HOOK = { 2540 [popupOpen]: "", 2541 [pressed]: "" 2542 }; 2543 var POPUP_OPEN_HOOK = { 2544 [open]: "" 2545 }; 2546 var POPUP_CLOSED_HOOK = { 2547 [closed]: "" 2548 }; 2549 var ANCHOR_HIDDEN_HOOK = { 2550 [anchorHidden]: "" 2551 }; 2552 var triggerOpenStateMapping = { 2553 open(value) { 2554 if (value) { 2555 return TRIGGER_HOOK; 2556 } 2557 return null; 2558 } 2559 }; 2560 var pressableTriggerOpenStateMapping = { 2561 open(value) { 2562 if (value) { 2563 return PRESSABLE_TRIGGER_HOOK; 2564 } 2565 return null; 2566 } 2567 }; 2568 var popupStateMapping = { 2569 open(value) { 2570 if (value) { 2571 return POPUP_OPEN_HOOK; 2572 } 2573 return POPUP_CLOSED_HOOK; 2574 }, 2575 anchorHidden(value) { 2576 if (value) { 2577 return ANCHOR_HIDDEN_HOOK; 2578 } 2579 return null; 2580 } 2581 }; 2582 var popupTransitionStateMapping = { 2583 ...popupStateMapping, 2584 ...transitionStatusMapping 2585 }; 2586 2587 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs 2588 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 2589 var triggerDisabled = "data-trigger-disabled"; 2590 2591 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2592 function isTargetInsideEnabledTrigger(target, triggerElements) { 2593 if (!isElement(target)) { 2594 return false; 2595 } 2596 const targetElement = target; 2597 if (triggerElements.hasElement(targetElement)) { 2598 return !targetElement.hasAttribute(triggerDisabled); 2599 } 2600 for (const [, trigger] of triggerElements.entries()) { 2601 if (contains(trigger, targetElement)) { 2602 return !trigger.hasAttribute(triggerDisabled); 2603 } 2604 } 2605 return false; 2606 } 2607 function isEventTargetWithin(event, node) { 2608 if (node == null) { 2609 return false; 2610 } 2611 if ("composedPath" in event) { 2612 return event.composedPath().includes(node); 2613 } 2614 const eventAgain = event; 2615 return eventAgain.target != null && node.contains(eventAgain.target); 2616 } 2617 function isRootElement(element) { 2618 return element.matches("html,body"); 2619 } 2620 function isTypeableElement(element) { 2621 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2622 } 2623 function isInteractiveElement(element) { 2624 return closest(element, `button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),$TYPEABLE_SELECTOR}`) != null; 2625 } 2626 function isTypeableCombobox(element) { 2627 if (!element) { 2628 return false; 2629 } 2630 return element.getAttribute("role") === "combobox" && isTypeableElement(element); 2631 } 2632 function matchesFocusVisible(element) { 2633 if (!element || parts_exports.env.jsdom) { 2634 return true; 2635 } 2636 try { 2637 return element.matches(":focus-visible"); 2638 } catch (_e) { 2639 return true; 2640 } 2641 } 2642 function getFloatingFocusElement(floatingElement) { 2643 if (!floatingElement) { 2644 return null; 2645 } 2646 return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement; 2647 } 2648 2649 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs 2650 function resolveValue(value, pointerType) { 2651 if (pointerType != null && !isMouseLikePointerType(pointerType)) { 2652 return 0; 2653 } 2654 if (typeof value === "function") { 2655 return value(); 2656 } 2657 return value; 2658 } 2659 function getDelay(value, prop, pointerType) { 2660 const result = resolveValue(value, pointerType); 2661 if (typeof result === "number") { 2662 return result; 2663 } 2664 return result?.[prop]; 2665 } 2666 function getRestMs(value) { 2667 if (typeof value === "function") { 2668 return value(); 2669 } 2670 return value; 2671 } 2672 function isClickLikeOpenEvent(openEventType, interactedInside) { 2673 return interactedInside || openEventType === "click" || openEventType === "mousedown"; 2674 } 2675 function isHoverOpenEvent(openEventType) { 2676 return openEventType?.includes("mouse") && openEventType !== "mousedown"; 2677 } 2678 2679 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2680 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 2681 var FloatingDelayGroupContext = /* @__PURE__ */ React19.createContext({ 2682 hasProvider: false, 2683 timeoutMs: 0, 2684 delayRef: { 2685 current: 0 2686 }, 2687 initialDelayRef: { 2688 current: 0 2689 }, 2690 timeout: new Timeout(), 2691 currentIdRef: { 2692 current: null 2693 }, 2694 currentContextRef: { 2695 current: null 2696 } 2697 }); 2698 if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; 2699 function resetDelayRef(delayRef, initialDelayRef) { 2700 delayRef.current = initialDelayRef.current; 2701 } 2702 function FloatingDelayGroup(props) { 2703 const { 2704 children, 2705 delay, 2706 timeoutMs = 0 2707 } = props; 2708 const delayRef = React19.useRef(delay); 2709 const initialDelayRef = React19.useRef(delay); 2710 const currentIdRef = React19.useRef(null); 2711 const currentContextRef = React19.useRef(null); 2712 const timeout = useTimeout(); 2713 useIsoLayoutEffect(() => { 2714 initialDelayRef.current = delay; 2715 if (!currentIdRef.current) { 2716 delayRef.current = delay; 2717 return; 2718 } 2719 delayRef.current = { 2720 open: getDelay(delayRef.current, "open"), 2721 close: getDelay(delay, "close") 2722 }; 2723 }, [delay, currentIdRef, delayRef, initialDelayRef]); 2724 return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FloatingDelayGroupContext.Provider, { 2725 value: React19.useMemo(() => ({ 2726 hasProvider: true, 2727 delayRef, 2728 initialDelayRef, 2729 currentIdRef, 2730 timeoutMs, 2731 currentContextRef, 2732 timeout 2733 }), [timeoutMs, timeout]), 2734 children 2735 }); 2736 } 2737 function useDelayGroup(store, options = { 2738 open: false 2739 }) { 2740 const { 2741 open: open2 2742 } = options; 2743 const floatingId = store.useState("floatingId"); 2744 const groupContext = React19.useContext(FloatingDelayGroupContext); 2745 const { 2746 currentIdRef, 2747 delayRef, 2748 timeoutMs, 2749 initialDelayRef, 2750 currentContextRef, 2751 hasProvider, 2752 timeout 2753 } = groupContext; 2754 const [isInstantPhase, setIsInstantPhase] = React19.useState(false); 2755 const openRef = React19.useRef(open2); 2756 useIsoLayoutEffect(() => { 2757 openRef.current = open2; 2758 }, [open2]); 2759 useIsoLayoutEffect(() => { 2760 function unset() { 2761 currentContextRef.current?.setIsInstantPhase(false); 2762 currentIdRef.current = null; 2763 currentContextRef.current = null; 2764 delayRef.current = initialDelayRef.current; 2765 timeout.clear(); 2766 } 2767 if (!currentIdRef.current) { 2768 return void 0; 2769 } 2770 if (!open2 && currentIdRef.current === floatingId) { 2771 setIsInstantPhase(false); 2772 if (timeoutMs) { 2773 const closingId = floatingId; 2774 timeout.start(timeoutMs, () => { 2775 if (store.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { 2776 return; 2777 } 2778 unset(); 2779 }); 2780 return () => { 2781 if (openRef.current || currentIdRef.current !== closingId) { 2782 timeout.clear(); 2783 } 2784 }; 2785 } 2786 unset(); 2787 } 2788 return void 0; 2789 }, [open2, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store]); 2790 useIsoLayoutEffect(() => { 2791 if (!open2) { 2792 return; 2793 } 2794 const prevContext = currentContextRef.current; 2795 const prevId = currentIdRef.current; 2796 timeout.clear(); 2797 currentContextRef.current = { 2798 onOpenChange: store.setOpen, 2799 setIsInstantPhase 2800 }; 2801 currentIdRef.current = floatingId; 2802 delayRef.current = { 2803 open: 0, 2804 close: getDelay(initialDelayRef.current, "close") 2805 }; 2806 if (prevId !== null && prevId !== floatingId) { 2807 setIsInstantPhase(true); 2808 prevContext?.setIsInstantPhase(true); 2809 prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); 2810 } else { 2811 setIsInstantPhase(false); 2812 prevContext?.setIsInstantPhase(false); 2813 } 2814 }, [open2, floatingId, store, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); 2815 useIsoLayoutEffect(() => { 2816 return () => { 2817 if (currentIdRef.current === floatingId) { 2818 currentContextRef.current = null; 2819 if (!openRef.current) { 2820 return; 2821 } 2822 currentIdRef.current = null; 2823 resetDelayRef(delayRef, initialDelayRef); 2824 timeout.clear(); 2825 } 2826 }; 2827 }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]); 2828 return React19.useMemo(() => ({ 2829 activeIdRef: currentIdRef, 2830 hasProvider, 2831 delayRef, 2832 isInstantPhase 2833 }), [currentIdRef, hasProvider, delayRef, isInstantPhase]); 2834 } 2835 2836 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 2837 var React23 = __toESM(require_react(), 1); 2838 2839 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2840 function mergeCleanups(...cleanups) { 2841 return () => { 2842 for (let i = 0; i < cleanups.length; i += 1) { 2843 const cleanup = cleanups[i]; 2844 if (cleanup) { 2845 cleanup(); 2846 } 2847 } 2848 }; 2849 } 2850 2851 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2852 var React20 = __toESM(require_react(), 1); 2853 2854 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2855 var visuallyHiddenBase = { 2856 clipPath: "inset(50%)", 2857 overflow: "hidden", 2858 whiteSpace: "nowrap", 2859 border: 0, 2860 padding: 0, 2861 width: 1, 2862 height: 1, 2863 margin: -1 2864 }; 2865 var visuallyHidden = { 2866 ...visuallyHiddenBase, 2867 position: "fixed", 2868 margin: 0, 2869 top: 0, 2870 left: 0 2871 }; 2872 var visuallyHiddenInput = { 2873 ...visuallyHiddenBase, 2874 position: "absolute" 2875 }; 2876 2877 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2878 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 2879 var FocusGuard = /* @__PURE__ */ React20.forwardRef(function FocusGuard2(props, ref) { 2880 const [role, setRole] = React20.useState(); 2881 useIsoLayoutEffect(() => { 2882 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2883 setRole("button"); 2884 } 2885 }, []); 2886 const restProps = { 2887 tabIndex: 0, 2888 // Role is only for VoiceOver 2889 role 2890 }; 2891 return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { 2892 ...props, 2893 ref, 2894 style: visuallyHidden, 2895 "aria-hidden": role ? void 0 : true, 2896 ...restProps, 2897 "data-base-ui-focus-guard": "" 2898 }); 2899 }); 2900 if (true) FocusGuard.displayName = "FocusGuard"; 2901 2902 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2903 var min = Math.min; 2904 var max = Math.max; 2905 var round = Math.round; 2906 var floor = Math.floor; 2907 var createCoords = (v) => ({ 2908 x: v, 2909 y: v 2910 }); 2911 var oppositeSideMap = { 2912 left: "right", 2913 right: "left", 2914 bottom: "top", 2915 top: "bottom" 2916 }; 2917 function clamp(start, value, end) { 2918 return max(start, min(value, end)); 2919 } 2920 function evaluate(value, param) { 2921 return typeof value === "function" ? value(param) : value; 2922 } 2923 function getSide(placement) { 2924 return placement.split("-")[0]; 2925 } 2926 function getAlignment(placement) { 2927 return placement.split("-")[1]; 2928 } 2929 function getOppositeAxis(axis) { 2930 return axis === "x" ? "y" : "x"; 2931 } 2932 function getAxisLength(axis) { 2933 return axis === "y" ? "height" : "width"; 2934 } 2935 function getSideAxis(placement) { 2936 const firstChar = placement[0]; 2937 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2938 } 2939 function getAlignmentAxis(placement) { 2940 return getOppositeAxis(getSideAxis(placement)); 2941 } 2942 function getAlignmentSides(placement, rects, rtl) { 2943 if (rtl === void 0) { 2944 rtl = false; 2945 } 2946 const alignment = getAlignment(placement); 2947 const alignmentAxis = getAlignmentAxis(placement); 2948 const length = getAxisLength(alignmentAxis); 2949 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 2950 if (rects.reference[length] > rects.floating[length]) { 2951 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 2952 } 2953 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 2954 } 2955 function getExpandedPlacements(placement) { 2956 const oppositePlacement = getOppositePlacement(placement); 2957 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 2958 } 2959 function getOppositeAlignmentPlacement(placement) { 2960 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 2961 } 2962 var lrPlacement = ["left", "right"]; 2963 var rlPlacement = ["right", "left"]; 2964 var tbPlacement = ["top", "bottom"]; 2965 var btPlacement = ["bottom", "top"]; 2966 function getSideList(side, isStart, rtl) { 2967 switch (side) { 2968 case "top": 2969 case "bottom": 2970 if (rtl) return isStart ? rlPlacement : lrPlacement; 2971 return isStart ? lrPlacement : rlPlacement; 2972 case "left": 2973 case "right": 2974 return isStart ? tbPlacement : btPlacement; 2975 default: 2976 return []; 2977 } 2978 } 2979 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 2980 const alignment = getAlignment(placement); 2981 let list = getSideList(getSide(placement), direction === "start", rtl); 2982 if (alignment) { 2983 list = list.map((side) => side + "-" + alignment); 2984 if (flipAlignment) { 2985 list = list.concat(list.map(getOppositeAlignmentPlacement)); 2986 } 2987 } 2988 return list; 2989 } 2990 function getOppositePlacement(placement) { 2991 const side = getSide(placement); 2992 return oppositeSideMap[side] + placement.slice(side.length); 2993 } 2994 function expandPaddingObject(padding) { 2995 var _padding$top, _padding$right, _padding$bottom, _padding$left; 2996 return { 2997 top: (_padding$top = padding.top) != null ? _padding$top : 0, 2998 right: (_padding$right = padding.right) != null ? _padding$right : 0, 2999 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 3000 left: (_padding$left = padding.left) != null ? _padding$left : 0 3001 }; 3002 } 3003 function getPaddingObject(padding) { 3004 return typeof padding !== "number" ? expandPaddingObject(padding) : { 3005 top: padding, 3006 right: padding, 3007 bottom: padding, 3008 left: padding 3009 }; 3010 } 3011 function rectToClientRect(rect) { 3012 const { 3013 x, 3014 y, 3015 width, 3016 height 3017 } = rect; 3018 return { 3019 width, 3020 height, 3021 top: y, 3022 left: x, 3023 right: x + width, 3024 bottom: y + height, 3025 x, 3026 y 3027 }; 3028 } 3029 3030 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 3031 function isDifferentGridRow(index2, cols, prevRow) { 3032 return Math.floor(index2 / cols) !== prevRow; 3033 } 3034 function isIndexOutOfListBounds(list, index2) { 3035 return index2 < 0 || index2 >= list.length; 3036 } 3037 function getMinListIndex(listRef, disabledIndices) { 3038 return findNonDisabledListIndex(listRef.current, { 3039 disabledIndices 3040 }); 3041 } 3042 function getMaxListIndex(listRef, disabledIndices) { 3043 return findNonDisabledListIndex(listRef.current, { 3044 decrement: true, 3045 startingIndex: listRef.current.length, 3046 disabledIndices 3047 }); 3048 } 3049 function getNextListIndex(list, currentIndex, options) { 3050 const { 3051 decrement, 3052 loopFocus, 3053 allowEscape, 3054 disabledIndices, 3055 minIndex, 3056 maxIndex 3057 } = options; 3058 const step = () => findNonDisabledListIndex(list, { 3059 startingIndex: currentIndex, 3060 decrement, 3061 disabledIndices 3062 }); 3063 let index2; 3064 let wrapped = false; 3065 if (!loopFocus) { 3066 index2 = decrement ? Math.max(minIndex, step()) : Math.min(maxIndex, step()); 3067 } else if (decrement ? currentIndex <= minIndex : currentIndex >= maxIndex) { 3068 const outside = decrement ? -1 : list.length; 3069 if (allowEscape && currentIndex !== outside) { 3070 index2 = -1; 3071 } else { 3072 index2 = decrement ? maxIndex : minIndex; 3073 wrapped = true; 3074 } 3075 } else { 3076 index2 = step(); 3077 } 3078 return { 3079 index: isIndexOutOfListBounds(list, index2) ? -1 : index2, 3080 wrapped 3081 }; 3082 } 3083 function findNonDisabledListIndex(list, { 3084 startingIndex = -1, 3085 decrement = false, 3086 disabledIndices, 3087 amount = 1 3088 } = {}) { 3089 let index2 = startingIndex; 3090 do { 3091 index2 += decrement ? -amount : amount; 3092 } while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices)); 3093 return index2; 3094 } 3095 function getGridNavigatedIndex(list, { 3096 event, 3097 orientation, 3098 loopFocus, 3099 onLoop, 3100 rtl, 3101 cols, 3102 disabledIndices, 3103 minIndex, 3104 maxIndex, 3105 prevIndex, 3106 stopEvent: stop = false 3107 }) { 3108 let nextIndex = prevIndex; 3109 let verticalDirection; 3110 if (event.key === ARROW_UP) { 3111 verticalDirection = "up"; 3112 } else if (event.key === ARROW_DOWN) { 3113 verticalDirection = "down"; 3114 } 3115 if (verticalDirection) { 3116 const rows = []; 3117 const rowIndexMap = []; 3118 let hasRoleRow = false; 3119 let visibleItemCount = 0; 3120 { 3121 let currentRowEl = null; 3122 let currentRowIndex = -1; 3123 list.forEach((el, idx) => { 3124 if (el == null) { 3125 return; 3126 } 3127 visibleItemCount += 1; 3128 const rowEl = closest(el, '[role="row"]'); 3129 if (rowEl) { 3130 hasRoleRow = true; 3131 } 3132 if (rowEl !== currentRowEl || currentRowIndex === -1) { 3133 currentRowEl = rowEl; 3134 currentRowIndex += 1; 3135 rows[currentRowIndex] = []; 3136 } 3137 rows[currentRowIndex].push(idx); 3138 rowIndexMap[idx] = currentRowIndex; 3139 }); 3140 } 3141 let hasDomRows = false; 3142 let inferredDomCols = 0; 3143 if (hasRoleRow) { 3144 for (const row of rows) { 3145 const rowLength = row.length; 3146 if (rowLength > inferredDomCols) { 3147 inferredDomCols = rowLength; 3148 } 3149 if (rowLength !== cols) { 3150 hasDomRows = true; 3151 } 3152 } 3153 } 3154 const hasVirtualizedGaps = hasDomRows && visibleItemCount < list.length; 3155 const verticalCols = inferredDomCols || cols; 3156 const navigateVertically = (direction) => { 3157 if (!hasDomRows || prevIndex === -1) { 3158 return void 0; 3159 } 3160 const currentRow = rowIndexMap[prevIndex]; 3161 if (currentRow == null) { 3162 return void 0; 3163 } 3164 const colInRow = rows[currentRow].indexOf(prevIndex); 3165 const step = direction === "up" ? -1 : 1; 3166 for (let nextRow = currentRow + step, i = 0; i < rows.length; i += 1, nextRow += step) { 3167 if (nextRow < 0 || nextRow >= rows.length) { 3168 if (!loopFocus || hasVirtualizedGaps) { 3169 return void 0; 3170 } 3171 nextRow = nextRow < 0 ? rows.length - 1 : 0; 3172 if (onLoop) { 3173 const clampedCol = Math.min(colInRow, rows[nextRow].length - 1); 3174 const targetItemIndex = rows[nextRow][clampedCol] ?? rows[nextRow][0]; 3175 const returnedItemIndex = onLoop(event, prevIndex, targetItemIndex); 3176 nextRow = rowIndexMap[returnedItemIndex] ?? nextRow; 3177 } 3178 } 3179 const targetRow = rows[nextRow]; 3180 for (let col = Math.min(colInRow, targetRow.length - 1); col >= 0; col -= 1) { 3181 const candidate = targetRow[col]; 3182 if (!isListIndexDisabled(list, candidate, disabledIndices)) { 3183 return candidate; 3184 } 3185 } 3186 } 3187 return void 0; 3188 }; 3189 const navigateVerticallyWithInferredRows = (direction) => { 3190 if (!hasVirtualizedGaps || prevIndex === -1) { 3191 return void 0; 3192 } 3193 const colInRow = prevIndex % verticalCols; 3194 const rowStep = direction === "up" ? -verticalCols : verticalCols; 3195 const lastRowStart = maxIndex - maxIndex % verticalCols; 3196 const rowCount = floor(maxIndex / verticalCols) + 1; 3197 for (let rowStart = prevIndex - colInRow + rowStep, i = 0; i < rowCount; i += 1, rowStart += rowStep) { 3198 if (rowStart < 0 || rowStart > maxIndex) { 3199 if (!loopFocus) { 3200 return void 0; 3201 } 3202 rowStart = rowStart < 0 ? lastRowStart : 0; 3203 } 3204 const rowEnd = Math.min(rowStart + verticalCols - 1, maxIndex); 3205 for (let candidate = Math.min(rowStart + colInRow, rowEnd); candidate >= rowStart; candidate -= 1) { 3206 if (!isListIndexDisabled(list, candidate, disabledIndices)) { 3207 return candidate; 3208 } 3209 } 3210 } 3211 return void 0; 3212 }; 3213 if (stop) { 3214 stopEvent(event); 3215 } 3216 const verticalCandidate = navigateVertically(verticalDirection) ?? navigateVerticallyWithInferredRows(verticalDirection); 3217 if (verticalCandidate !== void 0) { 3218 nextIndex = verticalCandidate; 3219 } else if (prevIndex === -1) { 3220 nextIndex = verticalDirection === "up" ? maxIndex : minIndex; 3221 } else { 3222 nextIndex = findNonDisabledListIndex(list, { 3223 startingIndex: prevIndex, 3224 amount: verticalCols, 3225 decrement: verticalDirection === "up", 3226 disabledIndices 3227 }); 3228 if (loopFocus) { 3229 if (verticalDirection === "up" && (prevIndex - verticalCols < minIndex || nextIndex < 0)) { 3230 const col = prevIndex % verticalCols; 3231 const maxCol = maxIndex % verticalCols; 3232 const offset4 = maxIndex - (maxCol - col); 3233 if (maxCol === col) { 3234 nextIndex = maxIndex; 3235 } else { 3236 nextIndex = maxCol > col ? offset4 : offset4 - verticalCols; 3237 } 3238 if (onLoop) { 3239 nextIndex = onLoop(event, prevIndex, nextIndex); 3240 } 3241 } 3242 if (verticalDirection === "down" && prevIndex + verticalCols > maxIndex) { 3243 nextIndex = findNonDisabledListIndex(list, { 3244 startingIndex: prevIndex % verticalCols - verticalCols, 3245 amount: verticalCols, 3246 disabledIndices 3247 }); 3248 if (onLoop) { 3249 nextIndex = onLoop(event, prevIndex, nextIndex); 3250 } 3251 } 3252 } 3253 } 3254 if (isIndexOutOfListBounds(list, nextIndex)) { 3255 nextIndex = prevIndex; 3256 } 3257 } 3258 if (orientation === "both") { 3259 const prevRow = floor(prevIndex / cols); 3260 if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) { 3261 if (stop) { 3262 stopEvent(event); 3263 } 3264 if (prevIndex % cols !== cols - 1) { 3265 nextIndex = findNonDisabledListIndex(list, { 3266 startingIndex: prevIndex, 3267 disabledIndices 3268 }); 3269 if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) { 3270 nextIndex = findNonDisabledListIndex(list, { 3271 startingIndex: prevIndex - prevIndex % cols - 1, 3272 disabledIndices 3273 }); 3274 if (onLoop) { 3275 nextIndex = onLoop(event, prevIndex, nextIndex); 3276 } 3277 } 3278 } else if (loopFocus) { 3279 nextIndex = findNonDisabledListIndex(list, { 3280 startingIndex: prevIndex - prevIndex % cols - 1, 3281 disabledIndices 3282 }); 3283 if (onLoop) { 3284 nextIndex = onLoop(event, prevIndex, nextIndex); 3285 } 3286 } 3287 if (isDifferentGridRow(nextIndex, cols, prevRow)) { 3288 nextIndex = prevIndex; 3289 } 3290 } 3291 if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) { 3292 if (stop) { 3293 stopEvent(event); 3294 } 3295 if (prevIndex % cols !== 0) { 3296 nextIndex = findNonDisabledListIndex(list, { 3297 startingIndex: prevIndex, 3298 decrement: true, 3299 disabledIndices 3300 }); 3301 if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) { 3302 nextIndex = findNonDisabledListIndex(list, { 3303 startingIndex: prevIndex + (cols - prevIndex % cols), 3304 decrement: true, 3305 disabledIndices 3306 }); 3307 if (onLoop) { 3308 nextIndex = onLoop(event, prevIndex, nextIndex); 3309 } 3310 } 3311 } else if (loopFocus) { 3312 nextIndex = findNonDisabledListIndex(list, { 3313 startingIndex: prevIndex + (cols - prevIndex % cols), 3314 decrement: true, 3315 disabledIndices 3316 }); 3317 if (onLoop) { 3318 nextIndex = onLoop(event, prevIndex, nextIndex); 3319 } 3320 } 3321 if (isDifferentGridRow(nextIndex, cols, prevRow)) { 3322 nextIndex = prevIndex; 3323 } 3324 } 3325 const lastRow = floor(maxIndex / cols) === prevRow; 3326 if (isIndexOutOfListBounds(list, nextIndex)) { 3327 if (loopFocus && lastRow) { 3328 nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(list, { 3329 startingIndex: prevIndex - prevIndex % cols - 1, 3330 disabledIndices 3331 }); 3332 if (onLoop) { 3333 nextIndex = onLoop(event, prevIndex, nextIndex); 3334 } 3335 } else { 3336 nextIndex = prevIndex; 3337 } 3338 } 3339 } 3340 return nextIndex; 3341 } 3342 function isListIndexDisabled(list, index2, disabledIndices) { 3343 const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? false; 3344 if (isExplicitlyDisabled) { 3345 return true; 3346 } 3347 const element = list[index2]; 3348 if (!element) { 3349 return false; 3350 } 3351 if (!isElementVisible(element)) { 3352 return true; 3353 } 3354 if (element.matches(":disabled")) { 3355 return true; 3356 } 3357 return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"); 3358 } 3359 function isHiddenByStyles(styles) { 3360 return styles.visibility === "hidden" || styles.visibility === "collapse"; 3361 } 3362 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 3363 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 3364 return false; 3365 } 3366 if (typeof element.checkVisibility === "function") { 3367 return element.checkVisibility(); 3368 } 3369 return styles.display !== "none" && styles.display !== "contents"; 3370 } 3371 3372 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 3373 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 3374 function getParentElement(element) { 3375 const assignedSlot = element.assignedSlot; 3376 if (assignedSlot) { 3377 return assignedSlot; 3378 } 3379 if (element.parentElement) { 3380 return element.parentElement; 3381 } 3382 const rootNode = element.getRootNode(); 3383 return isShadowRoot(rootNode) ? rootNode.host : null; 3384 } 3385 function getDetailsSummary(details) { 3386 for (const child of Array.from(details.children)) { 3387 if (getNodeName(child) === "summary") { 3388 return child; 3389 } 3390 } 3391 return null; 3392 } 3393 function isWithinOpenDetailsSummary(element, details) { 3394 const summary = getDetailsSummary(details); 3395 return !!summary && (element === summary || contains(summary, element)); 3396 } 3397 function isFocusableCandidate(element) { 3398 const nodeName = element ? getNodeName(element) : ""; 3399 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"); 3400 } 3401 function isFocusableElement(element) { 3402 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3403 return false; 3404 } 3405 for (let current = element; current; current = getParentElement(current)) { 3406 const isAncestor = current !== element; 3407 const isSlot = getNodeName(current) === "slot"; 3408 if (current.hasAttribute("inert")) { 3409 return false; 3410 } 3411 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3412 return false; 3413 } 3414 } 3415 return true; 3416 } 3417 function isVisibleInTabbableTree(element, isAncestor) { 3418 const styles = getComputedStyle2(element); 3419 if (!isAncestor) { 3420 return isElementVisible(element, styles); 3421 } 3422 return styles.display !== "none"; 3423 } 3424 function getTabIndex(element) { 3425 const tabIndex = element.tabIndex; 3426 if (tabIndex < 0) { 3427 const nodeName = getNodeName(element); 3428 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3429 return 0; 3430 } 3431 } 3432 return tabIndex; 3433 } 3434 function getNamedRadioInput(element) { 3435 if (getNodeName(element) !== "input") { 3436 return null; 3437 } 3438 const input = element; 3439 return input.type === "radio" && input.name !== "" ? input : null; 3440 } 3441 function isTabbableRadio(element, candidates) { 3442 const input = getNamedRadioInput(element); 3443 if (!input) { 3444 return true; 3445 } 3446 const checkedRadio = candidates.find((candidate) => { 3447 const radio = getNamedRadioInput(candidate); 3448 return radio?.name === input.name && radio.form === input.form && radio.checked; 3449 }); 3450 if (checkedRadio) { 3451 return checkedRadio === input; 3452 } 3453 return candidates.find((candidate) => { 3454 const radio = getNamedRadioInput(candidate); 3455 return radio?.name === input.name && radio.form === input.form; 3456 }) === input; 3457 } 3458 function getComposedChildren(container) { 3459 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3460 const assignedElements = container.assignedElements({ 3461 flatten: true 3462 }); 3463 if (assignedElements.length > 0) { 3464 return assignedElements; 3465 } 3466 } 3467 if (isHTMLElement(container) && container.shadowRoot) { 3468 return Array.from(container.shadowRoot.children); 3469 } 3470 return Array.from(container.children); 3471 } 3472 function appendCandidates(container, list) { 3473 getComposedChildren(container).forEach((child) => { 3474 if (isFocusableCandidate(child)) { 3475 list.push(child); 3476 } 3477 appendCandidates(child, list); 3478 }); 3479 } 3480 function appendMatchingElements(container, selector, list) { 3481 getComposedChildren(container).forEach((child) => { 3482 if (isHTMLElement(child) && child.matches(selector)) { 3483 list.push(child); 3484 } 3485 appendMatchingElements(child, selector, list); 3486 }); 3487 } 3488 function isTabbable(element) { 3489 return isFocusableElement(element) && getTabIndex(element) >= 0; 3490 } 3491 function focusable(container) { 3492 const candidates = []; 3493 appendCandidates(container, candidates); 3494 return candidates.filter(isFocusableElement); 3495 } 3496 function tabbable(container) { 3497 const candidates = focusable(container); 3498 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3499 } 3500 function getTabbableIn(container, dir) { 3501 const list = tabbable(container); 3502 const len = list.length; 3503 if (len === 0) { 3504 return void 0; 3505 } 3506 const active = activeElement(ownerDocument(container)); 3507 const index2 = list.indexOf(active); 3508 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 3509 return list[nextIndex]; 3510 } 3511 function getNextTabbable(referenceElement) { 3512 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3513 } 3514 function getPreviousTabbable(referenceElement) { 3515 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3516 } 3517 function isOutsideEvent(event, container) { 3518 const containerElement = container || event.currentTarget; 3519 const relatedTarget = event.relatedTarget; 3520 return !relatedTarget || !contains(containerElement, relatedTarget); 3521 } 3522 function disableFocusInside(container) { 3523 const tabbableElements = tabbable(container); 3524 tabbableElements.forEach((element) => { 3525 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3526 element.setAttribute("tabindex", "-1"); 3527 }); 3528 } 3529 function enableFocusInside(container) { 3530 const elements = []; 3531 appendMatchingElements(container, "[data-tabindex]", elements); 3532 elements.forEach((element) => { 3533 const tabindex = element.dataset.tabindex; 3534 delete element.dataset.tabindex; 3535 if (tabindex) { 3536 element.setAttribute("tabindex", tabindex); 3537 } else { 3538 element.removeAttribute("tabindex"); 3539 } 3540 }); 3541 } 3542 3543 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3544 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3545 const directChildren = nodes.filter((node) => node.parentId === id); 3546 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3547 } 3548 function getNodeAncestors(nodes, id) { 3549 let allAncestors = []; 3550 let currentParentId = nodes.find((node) => node.id === id)?.parentId; 3551 while (currentParentId) { 3552 const currentNode = nodes.find((node) => node.id === currentParentId); 3553 currentParentId = currentNode?.parentId; 3554 if (currentNode) { 3555 allAncestors = allAncestors.concat(currentNode); 3556 } 3557 } 3558 return allAncestors; 3559 } 3560 3561 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3562 function createAttribute(name) { 3563 return `data-base-ui-$name}`; 3564 } 3565 3566 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs 3567 var rafId = 0; 3568 function enqueueFocus(el, options = {}) { 3569 const { 3570 preventScroll = false, 3571 sync = false, 3572 shouldFocus 3573 } = options; 3574 cancelAnimationFrame(rafId); 3575 function exec() { 3576 if (shouldFocus && !shouldFocus()) { 3577 return; 3578 } 3579 el?.focus({ 3580 preventScroll 3581 }); 3582 } 3583 if (sync) { 3584 exec(); 3585 return NOOP; 3586 } 3587 const currentRafId = requestAnimationFrame(exec); 3588 rafId = currentRafId; 3589 return () => { 3590 if (rafId === currentRafId) { 3591 cancelAnimationFrame(currentRafId); 3592 rafId = 0; 3593 } 3594 }; 3595 } 3596 3597 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs 3598 var markerName = "data-base-ui-inert"; 3599 var ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3600 var uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3601 var markerCounterMap = /* @__PURE__ */ new WeakMap(); 3602 var lockCount = 0; 3603 function unwrapHost(node) { 3604 if (!node) { 3605 return null; 3606 } 3607 return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode); 3608 } 3609 var correctElements = (parent, targets) => targets.map((target) => { 3610 if (parent.contains(target)) { 3611 return target; 3612 } 3613 const correctedTarget = unwrapHost(target); 3614 if (parent.contains(correctedTarget)) { 3615 return correctedTarget; 3616 } 3617 return null; 3618 }).filter((x) => x != null); 3619 var buildKeepSet = (targets) => { 3620 const keep = /* @__PURE__ */ new Set(); 3621 targets.forEach((target) => { 3622 let node = target; 3623 while (node && !keep.has(node)) { 3624 keep.add(node); 3625 node = node.parentNode; 3626 } 3627 }); 3628 return keep; 3629 }; 3630 var collectOutsideElements = (root2, keepElements, stopElements) => { 3631 const outside = []; 3632 const walk = (parent) => { 3633 if (!parent || stopElements.has(parent)) { 3634 return; 3635 } 3636 Array.from(parent.children).forEach((node) => { 3637 if (getNodeName(node) === "script") { 3638 return; 3639 } 3640 if (keepElements.has(node)) { 3641 walk(node); 3642 } else { 3643 outside.push(node); 3644 } 3645 }); 3646 }; 3647 walk(root2); 3648 return outside; 3649 }; 3650 function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, { 3651 mark = true 3652 }) { 3653 const avoidElements = correctElements(body, uncorrectedAvoidElements); 3654 const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : []; 3655 const hiddenElements = []; 3656 const markedElements = []; 3657 if (ariaHidden) { 3658 const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]"))); 3659 const controlElements = avoidElements.concat(ariaLiveElements); 3660 const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)); 3661 controlTargets.forEach((node) => { 3662 const attr2 = node.getAttribute("aria-hidden"); 3663 const alreadyHidden = attr2 !== null && attr2 !== "false"; 3664 const counterValue = (ariaHiddenCounterMap.get(node) || 0) + 1; 3665 ariaHiddenCounterMap.set(node, counterValue); 3666 hiddenElements.push(node); 3667 if (counterValue === 1 && alreadyHidden) { 3668 uncontrolledElementsSet.add(node); 3669 } 3670 if (!alreadyHidden) { 3671 node.setAttribute("aria-hidden", "true"); 3672 } 3673 }); 3674 } 3675 if (mark) { 3676 markerTargets.forEach((node) => { 3677 const markerValue = (markerCounterMap.get(node) || 0) + 1; 3678 markerCounterMap.set(node, markerValue); 3679 markedElements.push(node); 3680 if (markerValue === 1) { 3681 node.setAttribute(markerName, ""); 3682 } 3683 }); 3684 } 3685 lockCount += 1; 3686 return () => { 3687 hiddenElements.forEach((element) => { 3688 const counterValue = (ariaHiddenCounterMap.get(element) || 0) - 1; 3689 ariaHiddenCounterMap.set(element, counterValue); 3690 if (!counterValue) { 3691 if (!uncontrolledElementsSet.has(element)) { 3692 element.removeAttribute("aria-hidden"); 3693 } 3694 uncontrolledElementsSet.delete(element); 3695 } 3696 }); 3697 if (mark) { 3698 markedElements.forEach((element) => { 3699 const markerValue = (markerCounterMap.get(element) || 0) - 1; 3700 markerCounterMap.set(element, markerValue); 3701 if (!markerValue) { 3702 element.removeAttribute(markerName); 3703 } 3704 }); 3705 } 3706 lockCount -= 1; 3707 if (!lockCount) { 3708 ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3709 uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3710 markerCounterMap = /* @__PURE__ */ new WeakMap(); 3711 } 3712 }; 3713 } 3714 function markOthers(avoidElements, options = {}) { 3715 const { 3716 ariaHidden = false, 3717 mark = true 3718 } = options; 3719 const body = ownerDocument(avoidElements[0]).body; 3720 return applyAttributeToOthers(avoidElements, body, ariaHidden, { 3721 mark 3722 }); 3723 } 3724 3725 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3726 var React21 = __toESM(require_react(), 1); 3727 var ReactDOM2 = __toESM(require_react_dom(), 1); 3728 3729 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3730 var DISABLED_TRANSITIONS_STYLE = { 3731 style: { 3732 transition: "none" 3733 } 3734 }; 3735 var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger"; 3736 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3737 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3738 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3739 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3740 var DROPDOWN_COLLISION_AVOIDANCE = { 3741 fallbackAxisSide: "none" 3742 }; 3743 var POPUP_COLLISION_AVOIDANCE = { 3744 fallbackAxisSide: "end" 3745 }; 3746 var ownerVisuallyHidden = { 3747 clipPath: "inset(50%)", 3748 position: "fixed", 3749 top: 0, 3750 left: 0 3751 }; 3752 3753 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3754 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 3755 var PortalContext = /* @__PURE__ */ React21.createContext(null); 3756 if (true) PortalContext.displayName = "PortalContext"; 3757 var usePortalContext = () => React21.useContext(PortalContext); 3758 var attr = createAttribute("portal"); 3759 function useFloatingPortalNode(props = {}) { 3760 const { 3761 ref, 3762 container: containerProp, 3763 componentProps = EMPTY_OBJECT, 3764 elementProps 3765 } = props; 3766 const uniqueId = useId(); 3767 const portalContext = usePortalContext(); 3768 const parentPortalNode = portalContext?.portalNode; 3769 const [containerElement, setContainerElement] = React21.useState(null); 3770 const [portalNode, setPortalNode] = React21.useState(null); 3771 const setPortalNodeRef = useStableCallback((node) => { 3772 if (node !== null) { 3773 setPortalNode(node); 3774 } 3775 }); 3776 const containerRef = React21.useRef(null); 3777 useIsoLayoutEffect(() => { 3778 if (containerProp === null) { 3779 if (containerRef.current) { 3780 containerRef.current = null; 3781 setPortalNode(null); 3782 setContainerElement(null); 3783 } 3784 return; 3785 } 3786 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3787 if (resolvedContainer == null) { 3788 if (containerRef.current) { 3789 containerRef.current = null; 3790 setPortalNode(null); 3791 setContainerElement(null); 3792 } 3793 return; 3794 } 3795 if (containerRef.current !== resolvedContainer) { 3796 containerRef.current = resolvedContainer; 3797 setPortalNode(null); 3798 setContainerElement(resolvedContainer); 3799 } 3800 }, [containerProp, parentPortalNode]); 3801 const portalElement = useRenderElement("div", componentProps, { 3802 ref: [ref, setPortalNodeRef], 3803 props: [{ 3804 id: uniqueId, 3805 [attr]: "" 3806 }, elementProps] 3807 }); 3808 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3809 return { 3810 node: portalNode, 3811 // `id` and `render` props can override or remove the generated ID. Use the exact 3812 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3813 nodeId: /* @__PURE__ */ React21.isValidElement(portalElement) ? portalElement.props.id : void 0, 3814 subtree: portalSubtree 3815 }; 3816 } 3817 var FloatingPortal = /* @__PURE__ */ React21.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3818 const { 3819 render, 3820 className, 3821 style, 3822 children, 3823 container, 3824 portalOwnerRole, 3825 ...elementProps 3826 } = componentProps; 3827 const { 3828 node: portalNode, 3829 nodeId: portalNodeId, 3830 subtree: portalSubtree 3831 } = useFloatingPortalNode({ 3832 container, 3833 ref: forwardedRef, 3834 componentProps, 3835 elementProps 3836 }); 3837 const beforeOutsideRef = React21.useRef(null); 3838 const afterOutsideRef = React21.useRef(null); 3839 const beforeInsideRef = React21.useRef(null); 3840 const afterInsideRef = React21.useRef(null); 3841 const [focusManagerState, setFocusManagerState] = React21.useState(null); 3842 const focusInsideDisabledRef = React21.useRef(false); 3843 const modal = focusManagerState?.modal; 3844 const open2 = focusManagerState?.open; 3845 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3846 React21.useEffect(() => { 3847 if (!portalNode || modal) { 3848 return void 0; 3849 } 3850 function onFocus(event) { 3851 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3852 if (event.type === "focusin") { 3853 if (focusInsideDisabledRef.current) { 3854 enableFocusInside(portalNode); 3855 focusInsideDisabledRef.current = false; 3856 } 3857 } else { 3858 disableFocusInside(portalNode); 3859 focusInsideDisabledRef.current = true; 3860 } 3861 } 3862 } 3863 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3864 }, [portalNode, modal]); 3865 useIsoLayoutEffect(() => { 3866 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 3867 return; 3868 } 3869 enableFocusInside(portalNode); 3870 focusInsideDisabledRef.current = false; 3871 }, [open2, portalNode]); 3872 const portalContextValue = React21.useMemo(() => ({ 3873 beforeOutsideRef, 3874 afterOutsideRef, 3875 beforeInsideRef, 3876 afterInsideRef, 3877 portalNode, 3878 setFocusManagerState 3879 }), [portalNode]); 3880 return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React21.Fragment, { 3881 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(PortalContext.Provider, { 3882 value: portalContextValue, 3883 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FocusGuard, { 3884 "data-type": "outside", 3885 ref: beforeOutsideRef, 3886 onFocus: (event) => { 3887 if (isOutsideEvent(event, portalNode)) { 3888 beforeInsideRef.current?.focus(); 3889 } else { 3890 const domReference = focusManagerState ? focusManagerState.domReference : null; 3891 const prevTabbable = getPreviousTabbable(domReference); 3892 prevTabbable?.focus(); 3893 } 3894 } 3895 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { 3896 role: portalOwnerRole, 3897 "aria-owns": portalNodeId, 3898 style: ownerVisuallyHidden 3899 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FocusGuard, { 3900 "data-type": "outside", 3901 ref: afterOutsideRef, 3902 onFocus: (event) => { 3903 if (isOutsideEvent(event, portalNode)) { 3904 afterInsideRef.current?.focus(); 3905 } else { 3906 const domReference = focusManagerState ? focusManagerState.domReference : null; 3907 const nextTabbable = getNextTabbable(domReference); 3908 nextTabbable?.focus(); 3909 if (focusManagerState?.closeOnFocusOut) { 3910 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3911 } 3912 } 3913 } 3914 })] 3915 })] 3916 }); 3917 }); 3918 if (true) FloatingPortal.displayName = "FloatingPortal"; 3919 3920 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3921 var React22 = __toESM(require_react(), 1); 3922 3923 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3924 function createEventEmitter() { 3925 const map = /* @__PURE__ */ new Map(); 3926 return { 3927 emit(event, data) { 3928 map.get(event)?.forEach((listener) => listener(data)); 3929 }, 3930 on(event, listener) { 3931 if (!map.has(event)) { 3932 map.set(event, /* @__PURE__ */ new Set()); 3933 } 3934 map.get(event).add(listener); 3935 }, 3936 off(event, listener) { 3937 map.get(event)?.delete(listener); 3938 } 3939 }; 3940 } 3941 3942 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3943 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 3944 var FloatingNodeContext = /* @__PURE__ */ React22.createContext(null); 3945 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3946 var FloatingTreeContext = /* @__PURE__ */ React22.createContext(null); 3947 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3948 var useFloatingParentNodeId = () => React22.useContext(FloatingNodeContext)?.id || null; 3949 var useFloatingTree = (externalTree) => { 3950 const contextTree = React22.useContext(FloatingTreeContext); 3951 return externalTree ?? contextTree; 3952 }; 3953 3954 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3955 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 3956 function getEventType(event, lastInteractionType) { 3957 const win = getWindow(getTarget(event)); 3958 if (event instanceof win.KeyboardEvent) { 3959 return "keyboard"; 3960 } 3961 if (event instanceof win.FocusEvent) { 3962 return lastInteractionType || "keyboard"; 3963 } 3964 if ("pointerType" in event) { 3965 return event.pointerType || (isVirtualClick(event) ? "keyboard" : lastInteractionType || "mouse"); 3966 } 3967 if ("touches" in event) { 3968 return "touch"; 3969 } 3970 if (event instanceof win.MouseEvent) { 3971 return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse"); 3972 } 3973 return ""; 3974 } 3975 var LIST_LIMIT = 20; 3976 var previouslyFocusedElements = []; 3977 function clearDisconnectedPreviouslyFocusedElements() { 3978 previouslyFocusedElements = previouslyFocusedElements.filter((entry) => { 3979 return entry.deref()?.isConnected; 3980 }); 3981 } 3982 function addPreviouslyFocusedElement(element) { 3983 clearDisconnectedPreviouslyFocusedElements(); 3984 if (element && getNodeName(element) !== "body") { 3985 previouslyFocusedElements.push(new WeakRef(element)); 3986 if (previouslyFocusedElements.length > LIST_LIMIT) { 3987 previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT); 3988 } 3989 } 3990 } 3991 function getPreviouslyFocusedElement() { 3992 clearDisconnectedPreviouslyFocusedElements(); 3993 return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref(); 3994 } 3995 function getFirstTabbableElement(container) { 3996 if (!container) { 3997 return null; 3998 } 3999 if (isTabbable(container)) { 4000 return container; 4001 } 4002 return tabbable(container)[0] || container; 4003 } 4004 function handleTabIndex(floatingFocusElement) { 4005 if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) { 4006 return; 4007 } 4008 if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) { 4009 return; 4010 } 4011 const focusableElements = focusable(floatingFocusElement); 4012 const tabbableContent = focusableElements.filter((element) => { 4013 const dataTabIndex = element.getAttribute("data-tabindex") || ""; 4014 return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-"); 4015 }); 4016 const tabIndex = floatingFocusElement.getAttribute("tabindex"); 4017 if (tabbableContent.length === 0) { 4018 if (tabIndex !== "0") { 4019 floatingFocusElement.setAttribute("tabindex", "0"); 4020 floatingFocusElement.setAttribute("data-tabindex", "0"); 4021 } 4022 } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") { 4023 floatingFocusElement.setAttribute("tabindex", "-1"); 4024 floatingFocusElement.setAttribute("data-tabindex", "-1"); 4025 } 4026 } 4027 function FloatingFocusManager(props) { 4028 const { 4029 context: store, 4030 children, 4031 disabled: disabled2 = false, 4032 initialFocus = true, 4033 returnFocus = true, 4034 explicitReturnFocus, 4035 restoreFocus = false, 4036 modal = true, 4037 closeOnFocusOut = true, 4038 openInteractionType = "", 4039 nextFocusableElement, 4040 previousFocusableElement, 4041 beforeContentFocusGuardRef, 4042 externalTree, 4043 getInsideElements 4044 } = props; 4045 const open2 = store.useState("open"); 4046 const domReference = store.useState("domReferenceElement"); 4047 const floating = store.useState("floatingElement"); 4048 const { 4049 events, 4050 dataRef 4051 } = store.context; 4052 const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId); 4053 const ignoreInitialFocus = initialFocus === false; 4054 const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus; 4055 const initialFocusRef = useValueAsRef(initialFocus); 4056 const returnFocusRef = useValueAsRef(returnFocus); 4057 const explicitReturnFocusRef = useValueAsRef(explicitReturnFocus); 4058 const openInteractionTypeRef = useValueAsRef(openInteractionType); 4059 const openRef = useValueAsRef(open2); 4060 const tree = useFloatingTree(externalTree); 4061 const portalContext = usePortalContext(); 4062 const preventReturnFocusRef = React23.useRef(false); 4063 const isPointerDownRef = React23.useRef(false); 4064 const pointerDownOutsideRef = React23.useRef(false); 4065 const lastFocusedTabbableRef = React23.useRef(null); 4066 const closeTypeRef = React23.useRef(""); 4067 const lastInteractionTypeRef = React23.useRef(""); 4068 const beforeGuardRef = React23.useRef(null); 4069 const afterGuardRef = React23.useRef(null); 4070 const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef); 4071 const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef); 4072 const blurTimeout = useTimeout(); 4073 const pointerDownTimeout = useTimeout(); 4074 const restoreFocusFrame = useAnimationFrame(); 4075 const isInsidePortal = portalContext != null; 4076 const floatingFocusElement = getFloatingFocusElement(floating); 4077 const getTabbableContent = useStableCallback((container = floatingFocusElement) => { 4078 return container ? tabbable(container) : []; 4079 }); 4080 const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []); 4081 React23.useEffect(() => { 4082 if (disabled2 || !modal) { 4083 return void 0; 4084 } 4085 function onKeyDown(event) { 4086 if (event.key === "Tab") { 4087 if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) { 4088 stopEvent(event); 4089 } 4090 } 4091 } 4092 const doc = ownerDocument(floatingFocusElement); 4093 return addEventListener(doc, "keydown", onKeyDown); 4094 }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]); 4095 React23.useEffect(() => { 4096 if (disabled2 || !open2) { 4097 return void 0; 4098 } 4099 const doc = ownerDocument(floatingFocusElement); 4100 function clearPointerDownOutside() { 4101 pointerDownOutsideRef.current = false; 4102 } 4103 function onPointerDown(event) { 4104 const target = getTarget(event); 4105 const insideElements = getResolvedInsideElements(); 4106 const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target)); 4107 pointerDownOutsideRef.current = !pointerTargetInside; 4108 lastInteractionTypeRef.current = event.pointerType || "keyboard"; 4109 if (closest(target, `[$CLICK_TRIGGER_IDENTIFIER}]`)) { 4110 isPointerDownRef.current = true; 4111 pointerDownTimeout.start(0, () => { 4112 isPointerDownRef.current = false; 4113 }); 4114 } 4115 } 4116 function onKeyDown() { 4117 lastInteractionTypeRef.current = "keyboard"; 4118 } 4119 return mergeCleanups( 4120 addEventListener(doc, "pointerdown", onPointerDown, true), 4121 addEventListener(doc, "pointerup", clearPointerDownOutside, true), 4122 addEventListener(doc, "pointercancel", clearPointerDownOutside, true), 4123 addEventListener(doc, "keydown", onKeyDown, true), 4124 // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups) 4125 // if the popup dismissed between pointerdown and pointerup. 4126 clearPointerDownOutside 4127 ); 4128 }, [disabled2, floating, domReference, floatingFocusElement, open2, portalContext, pointerDownTimeout, getResolvedInsideElements]); 4129 React23.useEffect(() => { 4130 if (disabled2 || !closeOnFocusOut) { 4131 return void 0; 4132 } 4133 const doc = ownerDocument(floatingFocusElement); 4134 function handlePointerDown() { 4135 isPointerDownRef.current = true; 4136 pointerDownTimeout.start(0, () => { 4137 isPointerDownRef.current = false; 4138 }); 4139 } 4140 function handleFocusIn(event) { 4141 const target = getTarget(event); 4142 if (isTabbable(target)) { 4143 lastFocusedTabbableRef.current = target; 4144 } 4145 } 4146 function handleFocusOutside(event) { 4147 const relatedTarget = event.relatedTarget; 4148 const currentTarget = event.currentTarget; 4149 const target = getTarget(event); 4150 if (modal && relatedTarget == null && target != null && contains(floating, target)) { 4151 addPreviouslyFocusedElement(target); 4152 } 4153 queueMicrotask(() => { 4154 const nodeId = getNodeId(); 4155 const triggers = store.context.triggerElements; 4156 const insideElements = getResolvedInsideElements(); 4157 const isRelatedFocusGuard = relatedTarget?.hasAttribute(createAttribute("focus-guard")) && [beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeInsideRef.current, portalContext?.afterInsideRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement)].includes(relatedTarget); 4158 const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext?.portalNode, relatedTarget) || insideElements.some((element) => element === relatedTarget || contains(element, relatedTarget)) || triggers.hasMatchingElement((trigger) => contains(trigger, relatedTarget)) || isRelatedFocusGuard || tree && (getNodeChildren(tree.nodesRef.current, nodeId).find((node) => contains(node.context?.elements.floating, relatedTarget) || contains(node.context?.elements.domReference, relatedTarget)) || getNodeAncestors(tree.nodesRef.current, nodeId).find((node) => [node.context?.elements.floating, getFloatingFocusElement(node.context?.elements.floating)].includes(relatedTarget) || node.context?.elements.domReference === relatedTarget))); 4159 if (currentTarget === domReference && floatingFocusElement) { 4160 handleTabIndex(floatingFocusElement); 4161 } 4162 if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) { 4163 if (isHTMLElement(floatingFocusElement)) { 4164 floatingFocusElement.focus(); 4165 if (restoreFocus === "popup") { 4166 restoreFocusFrame.request(() => { 4167 floatingFocusElement.focus(); 4168 }); 4169 return; 4170 } 4171 } 4172 const tabbableContent = getTabbableContent(); 4173 const prevTabbable = lastFocusedTabbableRef.current; 4174 const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement; 4175 if (isHTMLElement(nodeToFocus)) { 4176 nodeToFocus.focus(); 4177 } 4178 } 4179 if (dataRef.current.insideReactTree) { 4180 dataRef.current.insideReactTree = false; 4181 return; 4182 } 4183 if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering. 4184 // For an "untrapped" typeable combobox (input role=combobox with 4185 // initialFocus=false), re-opening the popup and tabbing out should still close it even 4186 // when the previously focused element (e.g. the next tabbable outside the popup) is 4187 // focused again. Otherwise, the popup remains open on the second Tab sequence: 4188 // click input -> Tab (closes) -> click input -> Tab. 4189 // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element. 4190 (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) { 4191 preventReturnFocusRef.current = true; 4192 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event)); 4193 } 4194 }); 4195 } 4196 function markInsideReactTree() { 4197 if (pointerDownOutsideRef.current) { 4198 return; 4199 } 4200 dataRef.current.insideReactTree = true; 4201 blurTimeout.start(0, () => { 4202 dataRef.current.insideReactTree = false; 4203 }); 4204 } 4205 const domReferenceElement = isHTMLElement(domReference) ? domReference : null; 4206 if (!floating && !domReferenceElement) { 4207 return void 0; 4208 } 4209 return mergeCleanups(domReferenceElement && addEventListener(domReferenceElement, "focusout", handleFocusOutside), domReferenceElement && addEventListener(domReferenceElement, "pointerdown", handlePointerDown), floating && addEventListener(floating, "focusin", handleFocusIn), floating && addEventListener(floating, "focusout", handleFocusOutside), floating && portalContext && addEventListener(floating, "focusout", markInsideReactTree, true)); 4210 }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4211 React23.useEffect(() => { 4212 if (disabled2 || !floating || !open2) { 4213 return void 0; 4214 } 4215 const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []); 4216 const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : []; 4217 const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference; 4218 const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()]; 4219 const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x) => x != null); 4220 const ariaHiddenCleanup = markOthers(insideElements, { 4221 ariaHidden: modal || isUntrappedTypeableCombobox, 4222 mark: false 4223 }); 4224 const markerInsideElements = [floating, ...portalNodes].filter((x) => x != null); 4225 const markerCleanup = markOthers(markerInsideElements); 4226 return () => { 4227 markerCleanup(); 4228 ariaHiddenCleanup(); 4229 }; 4230 }, [open2, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4231 useIsoLayoutEffect(() => { 4232 if (!open2 || disabled2 || !isHTMLElement(floatingFocusElement)) { 4233 return; 4234 } 4235 closeTypeRef.current = ""; 4236 lastInteractionTypeRef.current = ""; 4237 const doc = ownerDocument(floatingFocusElement); 4238 const previouslyFocusedElement = activeElement(doc); 4239 queueMicrotask(() => { 4240 const initialFocusValueOrFn = initialFocusRef.current; 4241 const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn; 4242 if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) { 4243 return; 4244 } 4245 const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement); 4246 if (focusAlreadyInsideFloatingEl) { 4247 return; 4248 } 4249 let focusableElements = null; 4250 const getDefaultFocusElement = () => { 4251 if (focusableElements == null) { 4252 focusableElements = getTabbableContent(floatingFocusElement); 4253 } 4254 return focusableElements[0] || floatingFocusElement; 4255 }; 4256 let elToFocus; 4257 if (resolvedInitialFocus === true || resolvedInitialFocus === null) { 4258 elToFocus = getDefaultFocusElement(); 4259 } else { 4260 elToFocus = resolveRef(resolvedInitialFocus); 4261 } 4262 elToFocus = elToFocus || getDefaultFocusElement(); 4263 const hadFocusInside = contains(floatingFocusElement, activeElement(doc)); 4264 const openEvent = dataRef.current.openEvent; 4265 const openedByVirtualPress = openEvent?.type === "mousedown" && isVirtualClick(openEvent); 4266 void enqueueFocus(elToFocus, { 4267 sync: openedByVirtualPress, 4268 preventScroll: elToFocus === floatingFocusElement, 4269 shouldFocus() { 4270 if (!openRef.current) { 4271 return false; 4272 } 4273 if (hadFocusInside) { 4274 return true; 4275 } 4276 const currentActiveElement = activeElement(doc); 4277 const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement); 4278 return !focusMovedInside; 4279 } 4280 }); 4281 }); 4282 }, [disabled2, open2, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef, dataRef]); 4283 const pendingReturnFocusRef = React23.useRef(null); 4284 useIsoLayoutEffect(() => { 4285 if (disabled2 || !floatingFocusElement) { 4286 pendingReturnFocusRef.current = null; 4287 return void 0; 4288 } 4289 if (pendingReturnFocusRef.current) { 4290 pendingReturnFocusRef.current.cancelled = true; 4291 pendingReturnFocusRef.current = null; 4292 } 4293 const doc = ownerDocument(floatingFocusElement); 4294 const elementFocusedBeforeOpen = activeElement(doc); 4295 const preferPreviousFocus = openInteractionTypeRef.current == null; 4296 addPreviouslyFocusedElement(elementFocusedBeforeOpen); 4297 function onOpenChangeLocal(details) { 4298 if (!details.open) { 4299 closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current); 4300 } 4301 if (details.reason === reason_parts_exports.focusOut && details.triggerElement?.hasAttribute(createAttribute("focus-guard")) || details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") { 4302 preventReturnFocusRef.current = true; 4303 } 4304 if (details.reason !== reason_parts_exports.outsidePress) { 4305 return; 4306 } 4307 if (details.nested) { 4308 preventReturnFocusRef.current = false; 4309 } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) { 4310 preventReturnFocusRef.current = false; 4311 } else { 4312 let isPreventScrollSupported = false; 4313 ownerDocument(floatingFocusElement).createElement("div").focus({ 4314 get preventScroll() { 4315 isPreventScrollSupported = true; 4316 return false; 4317 } 4318 }); 4319 if (isPreventScrollSupported) { 4320 preventReturnFocusRef.current = false; 4321 } else { 4322 preventReturnFocusRef.current = true; 4323 } 4324 } 4325 } 4326 events.on("openchange", onOpenChangeLocal); 4327 function getReturnElement(closeType) { 4328 const returnFocusValueOrFn = returnFocusRef.current; 4329 let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn; 4330 if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) { 4331 return null; 4332 } 4333 if (resolvedReturnFocusValue === null) { 4334 resolvedReturnFocusValue = true; 4335 } 4336 const referenceReturnElement = domReference?.isConnected ? domReference : null; 4337 const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null; 4338 let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement; 4339 if (!defaultReturnElement) { 4340 defaultReturnElement = getPreviouslyFocusedElement() || null; 4341 } 4342 if (typeof resolvedReturnFocusValue === "boolean") { 4343 return defaultReturnElement; 4344 } 4345 return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null; 4346 } 4347 return () => { 4348 events.off("openchange", onOpenChangeLocal); 4349 const activeEl = activeElement(doc); 4350 const insideElements = getResolvedInsideElements(); 4351 const isFocusInsideFloatingTree = contains(floating, activeEl) || insideElements.some((element) => element === activeEl || contains(element, activeEl)) || tree && getNodeChildren(tree.nodesRef.current, getNodeId(), false).some((node) => contains(node.context?.elements.floating, activeEl)); 4352 const returnFocusValueOrFn = returnFocusRef.current; 4353 const closeType = closeTypeRef.current; 4354 const returnElement = getReturnElement(closeType); 4355 const job = { 4356 cancelled: false 4357 }; 4358 pendingReturnFocusRef.current = job; 4359 queueMicrotask(() => { 4360 if (pendingReturnFocusRef.current === job) { 4361 pendingReturnFocusRef.current = null; 4362 } 4363 const tabbableReturnElement = getFirstTabbableElement(returnElement); 4364 const hasExplicitReturnFocus = ( 4365 // eslint-disable-next-line react-hooks/exhaustive-deps 4366 explicitReturnFocusRef.current ?? typeof returnFocusValueOrFn !== "boolean" 4367 ); 4368 if (!job.cancelled && returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus 4369 // since it likely entered a different element which should be 4370 // respected: https://github.com/floating-ui/floating-ui/issues/2607 4371 (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) { 4372 const focusOptions = { 4373 preventScroll: true 4374 }; 4375 if (closeType === "keyboard") { 4376 focusOptions.focusVisible = true; 4377 } 4378 tabbableReturnElement.focus(focusOptions); 4379 } 4380 preventReturnFocusRef.current = false; 4381 }); 4382 }; 4383 }, [disabled2, floating, floatingFocusElement, returnFocusRef, explicitReturnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]); 4384 useIsoLayoutEffect(() => { 4385 if (!parts_exports.engine.webkit || open2 || !floating) { 4386 return; 4387 } 4388 const activeEl = activeElement(ownerDocument(floating)); 4389 if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) { 4390 return; 4391 } 4392 if (contains(floating, activeEl)) { 4393 activeEl.blur(); 4394 } 4395 }, [open2, floating]); 4396 useIsoLayoutEffect(() => { 4397 if (disabled2 || !portalContext) { 4398 return void 0; 4399 } 4400 portalContext.setFocusManagerState({ 4401 modal, 4402 closeOnFocusOut, 4403 open: open2, 4404 onOpenChange: store.setOpen, 4405 domReference 4406 }); 4407 return () => { 4408 portalContext.setFocusManagerState(null); 4409 }; 4410 }, [disabled2, portalContext, modal, open2, store, closeOnFocusOut, domReference]); 4411 useIsoLayoutEffect(() => { 4412 if (disabled2 || !floatingFocusElement) { 4413 return void 0; 4414 } 4415 handleTabIndex(floatingFocusElement); 4416 return () => { 4417 queueMicrotask(clearDisconnectedPreviouslyFocusedElements); 4418 }; 4419 }, [disabled2, floatingFocusElement]); 4420 const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal); 4421 return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(React23.Fragment, { 4422 children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FocusGuard, { 4423 "data-type": "inside", 4424 ref: mergedBeforeGuardRef, 4425 onFocus: (event) => { 4426 if (modal) { 4427 const els = getTabbableContent(); 4428 void enqueueFocus(els[els.length - 1]); 4429 } else if (portalContext?.portalNode) { 4430 preventReturnFocusRef.current = false; 4431 if (isOutsideEvent(event, portalContext.portalNode)) { 4432 const nextTabbable = getNextTabbable(domReference); 4433 nextTabbable?.focus(); 4434 } else { 4435 resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus(); 4436 } 4437 } 4438 } 4439 }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FocusGuard, { 4440 "data-type": "inside", 4441 ref: mergedAfterGuardRef, 4442 onFocus: (event) => { 4443 if (modal) { 4444 void enqueueFocus(getTabbableContent()[0]); 4445 } else if (portalContext?.portalNode) { 4446 if (closeOnFocusOut) { 4447 preventReturnFocusRef.current = true; 4448 } 4449 if (isOutsideEvent(event, portalContext.portalNode)) { 4450 const prevTabbable = getPreviousTabbable(domReference); 4451 prevTabbable?.focus(); 4452 } else { 4453 resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus(); 4454 } 4455 } 4456 } 4457 })] 4458 }); 4459 } 4460 4461 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs 4462 var React24 = __toESM(require_react(), 1); 4463 function useClick(store, props = {}) { 4464 const { 4465 enabled = true, 4466 event: eventOption = "click", 4467 toggle = true, 4468 ignoreMouse = false, 4469 stickIfOpen = true, 4470 touchOpenDelay = 0, 4471 reason = reason_parts_exports.triggerPress 4472 } = props; 4473 const dataRef = store.context.dataRef; 4474 const pointerTypeRef = React24.useRef(void 0); 4475 const frame = useAnimationFrame(); 4476 const touchOpenTimeout = useTimeout(); 4477 const reference = React24.useMemo(() => { 4478 function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) { 4479 const details = createChangeEventDetails(reason, nativeEvent, target); 4480 if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) { 4481 touchOpenTimeout.start(touchOpenDelay, () => { 4482 store.setOpen(true, details); 4483 }); 4484 } else { 4485 store.setOpen(nextOpen, details); 4486 } 4487 } 4488 function getNextOpen(open2, currentTarget, isClickLikeOpenEvent2) { 4489 const openEvent = dataRef.current.openEvent; 4490 const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget; 4491 if (open2 && hasClickedOnInactiveTrigger) { 4492 return true; 4493 } 4494 if (!open2) { 4495 return true; 4496 } 4497 if (!toggle) { 4498 return true; 4499 } 4500 if (openEvent && (typeof stickIfOpen === "function" ? stickIfOpen() : stickIfOpen)) { 4501 return !isClickLikeOpenEvent2(openEvent.type); 4502 } 4503 return false; 4504 } 4505 return { 4506 onPointerDown(event) { 4507 pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType; 4508 }, 4509 onMouseDown(event) { 4510 const pointerType = pointerTypeRef.current; 4511 const nativeEvent = event.nativeEvent; 4512 const open2 = store.select("open"); 4513 if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4514 return; 4515 } 4516 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown"); 4517 const target = getTarget(nativeEvent); 4518 const isTypeable = isTypeableElement(target); 4519 if (isTypeable || pointerType === "virtual") { 4520 setOpenWithTouchDelay(nextOpen, nativeEvent, isTypeable ? target : event.currentTarget, pointerType); 4521 return; 4522 } 4523 const eventCurrentTarget = event.currentTarget; 4524 frame.request(() => { 4525 setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType); 4526 }); 4527 }, 4528 onClick(event) { 4529 if (eventOption === "mousedown-only") { 4530 return; 4531 } 4532 const pointerType = pointerTypeRef.current; 4533 if (eventOption === "mousedown" && pointerType) { 4534 pointerTypeRef.current = void 0; 4535 return; 4536 } 4537 if (isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4538 return; 4539 } 4540 const open2 = store.select("open"); 4541 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup"); 4542 setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType); 4543 }, 4544 onKeyDown() { 4545 pointerTypeRef.current = void 0; 4546 } 4547 }; 4548 }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]); 4549 return React24.useMemo(() => enabled ? { 4550 reference 4551 } : EMPTY_OBJECT, [enabled, reference]); 4552 } 4553 4554 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs 4555 var React25 = __toESM(require_react(), 1); 4556 function createVirtualElement(domElement, data) { 4557 let offsetX = null; 4558 let offsetY = null; 4559 let isAutoUpdateEvent = false; 4560 return { 4561 contextElement: domElement || void 0, 4562 getBoundingClientRect() { 4563 const domRect = domElement?.getBoundingClientRect() || { 4564 width: 0, 4565 height: 0, 4566 x: 0, 4567 y: 0 4568 }; 4569 const isXAxis = data.axis === "x" || data.axis === "both"; 4570 const isYAxis = data.axis === "y" || data.axis === "both"; 4571 const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; 4572 const width = data.axis === "y" ? domRect.width : 0; 4573 const height = data.axis === "x" ? domRect.height : 0; 4574 let x = domRect.x; 4575 let y = domRect.y; 4576 if (offsetX == null && data.x && isXAxis) { 4577 offsetX = domRect.x - data.x; 4578 } 4579 if (offsetY == null && data.y && isYAxis) { 4580 offsetY = domRect.y - data.y; 4581 } 4582 x -= offsetX || 0; 4583 y -= offsetY || 0; 4584 if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { 4585 x = isXAxis && data.x != null ? data.x : x; 4586 y = isYAxis && data.y != null ? data.y : y; 4587 } 4588 isAutoUpdateEvent = true; 4589 return { 4590 width, 4591 height, 4592 x, 4593 y, 4594 top: y, 4595 right: x + width, 4596 bottom: y + height, 4597 left: x 4598 }; 4599 } 4600 }; 4601 } 4602 function isMouseBasedEvent(event) { 4603 return event != null && event.clientX != null; 4604 } 4605 function useClientPoint(store, props = {}) { 4606 const { 4607 enabled = true, 4608 axis = "both" 4609 } = props; 4610 const open2 = store.useState("open"); 4611 const floating = store.useState("floatingElement"); 4612 const domReference = store.useState("domReferenceElement"); 4613 const dataRef = store.context.dataRef; 4614 const initialRef = React25.useRef(false); 4615 const cleanupListenerRef = React25.useRef(null); 4616 const [pointerType, setPointerType] = React25.useState(); 4617 const [reactive, setReactive] = React25.useState([]); 4618 const resetReference = useStableCallback((reference2) => { 4619 store.set("positionReference", reference2); 4620 }); 4621 const setReference = useStableCallback((newX, newY, referenceElement) => { 4622 if (initialRef.current) { 4623 return; 4624 } 4625 if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { 4626 return; 4627 } 4628 store.set("positionReference", createVirtualElement(referenceElement ?? domReference, { 4629 x: newX, 4630 y: newY, 4631 axis, 4632 dataRef, 4633 pointerType 4634 })); 4635 }); 4636 const handleReferenceEnterOrMove = useStableCallback((event) => { 4637 if (!open2) { 4638 setReference(event.clientX, event.clientY, event.currentTarget); 4639 } else if (!cleanupListenerRef.current) { 4640 setReference(event.clientX, event.clientY, event.currentTarget); 4641 setReactive([]); 4642 } 4643 }); 4644 const openCheck = isMouseLikePointerType(pointerType) ? floating : open2; 4645 React25.useEffect(() => { 4646 if (!enabled) { 4647 resetReference(domReference); 4648 return void 0; 4649 } 4650 if (!openCheck) { 4651 return void 0; 4652 } 4653 function cleanupListener() { 4654 cleanupListenerRef.current?.(); 4655 cleanupListenerRef.current = null; 4656 } 4657 const win = getWindow(floating); 4658 function handleMouseMove(event) { 4659 const target = getTarget(event); 4660 if (!contains(floating, target)) { 4661 setReference(event.clientX, event.clientY); 4662 } else { 4663 cleanupListener(); 4664 } 4665 } 4666 if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { 4667 cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); 4668 } else { 4669 resetReference(domReference); 4670 } 4671 return cleanupListener; 4672 }, [openCheck, enabled, floating, dataRef, domReference, store, setReference, resetReference, reactive]); 4673 React25.useEffect(() => () => { 4674 store.set("positionReference", null); 4675 }, [store]); 4676 React25.useEffect(() => { 4677 if (enabled && !floating) { 4678 initialRef.current = false; 4679 } 4680 }, [enabled, floating]); 4681 React25.useEffect(() => { 4682 if (!enabled && open2) { 4683 initialRef.current = true; 4684 } 4685 }, [enabled, open2]); 4686 const reference = React25.useMemo(() => { 4687 function setPointerTypeRef(event) { 4688 setPointerType(event.pointerType); 4689 } 4690 return { 4691 onPointerDown: setPointerTypeRef, 4692 onPointerEnter: setPointerTypeRef, 4693 onMouseMove: handleReferenceEnterOrMove, 4694 onMouseEnter: handleReferenceEnterOrMove 4695 }; 4696 }, [handleReferenceEnterOrMove]); 4697 return React25.useMemo(() => enabled ? { 4698 reference, 4699 trigger: reference 4700 } : {}, [enabled, reference]); 4701 } 4702 4703 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 4704 var React26 = __toESM(require_react(), 1); 4705 function alwaysFalse() { 4706 return false; 4707 } 4708 function normalizeProp(normalizable) { 4709 return { 4710 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 4711 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 4712 }; 4713 } 4714 function useDismiss(store, props = {}) { 4715 const { 4716 enabled = true, 4717 escapeKey: escapeKey2 = true, 4718 outsidePress: outsidePressProp = true, 4719 outsidePressEvent = "sloppy", 4720 referencePress = alwaysFalse, 4721 bubbles, 4722 externalTree 4723 } = props; 4724 const open2 = store.useState("open"); 4725 const floatingElement = store.useState("floatingElement"); 4726 const { 4727 dataRef, 4728 events 4729 } = store.context; 4730 const tree = useFloatingTree(externalTree); 4731 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 4732 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 4733 const outsidePressEnabled = outsidePress2 !== false; 4734 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 4735 const { 4736 escapeKey: escapeKeyBubbles, 4737 outsidePress: outsidePressBubbles 4738 } = normalizeProp(bubbles); 4739 const pressStartedInsideRef = React26.useRef(false); 4740 const pressStartPreventedRef = React26.useRef(false); 4741 const suppressNextOutsideClickRef = React26.useRef(false); 4742 const sawPressWhileOpenRef = React26.useRef(false); 4743 const isComposingRef = React26.useRef(false); 4744 const currentPointerTypeRef = React26.useRef(""); 4745 const touchStateRef = React26.useRef(null); 4746 const cancelDismissOnEndTimeout = useTimeout(); 4747 const clearInsideReactTreeTimeout = useTimeout(); 4748 const compositionTimeout = useTimeout(); 4749 const clearInsideReactTree = useStableCallback(() => { 4750 clearInsideReactTreeTimeout.clear(); 4751 dataRef.current.insideReactTree = false; 4752 }); 4753 const hasBlockingChild = useStableCallback((bubbleKey) => { 4754 const nodeId = dataRef.current.floatingContext?.nodeId; 4755 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 4756 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 4757 }); 4758 const isEventWithinOwnElements = useStableCallback((event) => { 4759 return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); 4760 }); 4761 const closeOnReferencePress = useStableCallback((event) => { 4762 if (!referencePress()) { 4763 return; 4764 } 4765 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 4766 }); 4767 const closeOnEscapeKeyDown = useStableCallback((event) => { 4768 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 4769 return; 4770 } 4771 const native = isReactEvent(event) ? event.nativeEvent : event; 4772 if (isComposingRef.current || native.isComposing) { 4773 return; 4774 } 4775 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 4776 return; 4777 } 4778 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 4779 store.setOpen(false, eventDetails); 4780 if (!eventDetails.isCanceled) { 4781 event.preventDefault(); 4782 } 4783 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 4784 event.stopPropagation(); 4785 } 4786 }); 4787 const markInsideReactTree = useStableCallback(() => { 4788 dataRef.current.insideReactTree = true; 4789 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 4790 }); 4791 const markPressStartedInsideReactTree = useStableCallback((event) => { 4792 if (!open2 || !enabled || event.button !== 0) { 4793 return; 4794 } 4795 const target = getTarget(event.nativeEvent); 4796 if (!contains(store.select("floatingElement"), target)) { 4797 return; 4798 } 4799 if (!pressStartedInsideRef.current) { 4800 pressStartedInsideRef.current = true; 4801 pressStartPreventedRef.current = false; 4802 } 4803 }); 4804 const markInsidePressStartPrevented = useStableCallback((event) => { 4805 if (!open2 || !enabled) { 4806 return; 4807 } 4808 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 4809 return; 4810 } 4811 if (pressStartedInsideRef.current) { 4812 pressStartPreventedRef.current = true; 4813 } 4814 }); 4815 React26.useEffect(() => { 4816 function handleOpenChange(details) { 4817 if (!details.open) { 4818 sawPressWhileOpenRef.current = false; 4819 } 4820 } 4821 events.on("openchange", handleOpenChange); 4822 return () => { 4823 events.off("openchange", handleOpenChange); 4824 }; 4825 }, [events]); 4826 React26.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 4827 React26.useEffect(() => { 4828 if (!open2 || !enabled) { 4829 if (!open2) { 4830 sawPressWhileOpenRef.current = false; 4831 isComposingRef.current = false; 4832 currentPointerTypeRef.current = ""; 4833 touchStateRef.current = null; 4834 } 4835 return clearInsideReactTree; 4836 } 4837 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 4838 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 4839 const preventedPressSuppressionTimeout = new Timeout(); 4840 const doc = ownerDocument(floatingElement); 4841 function handleCompositionStart() { 4842 compositionTimeout.clear(); 4843 isComposingRef.current = true; 4844 } 4845 function handleCompositionEnd() { 4846 isComposingRef.current = true; 4847 compositionTimeout.start( 4848 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 4849 // Only apply to WebKit for the test to remain 0ms. 4850 parts_exports.engine.webkit ? 5 : 0, 4851 () => { 4852 isComposingRef.current = false; 4853 } 4854 ); 4855 } 4856 function suppressImmediateOutsideClickAfterPreventedStart() { 4857 suppressNextOutsideClickRef.current = true; 4858 preventedPressSuppressionTimeout.start(0, () => { 4859 suppressNextOutsideClickRef.current = false; 4860 }); 4861 } 4862 function resetPressStartState() { 4863 pressStartedInsideRef.current = false; 4864 pressStartPreventedRef.current = false; 4865 } 4866 function getOutsidePressEvent() { 4867 const type = currentPointerTypeRef.current; 4868 const computedType = type === "pen" || !type ? "mouse" : type; 4869 const outsidePressEventValue = getOutsidePressEventProp(); 4870 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 4871 if (typeof resolved === "string") { 4872 return resolved; 4873 } 4874 return resolved[computedType]; 4875 } 4876 function shouldIgnoreEvent(event) { 4877 const computedOutsidePressEvent = getOutsidePressEvent(); 4878 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 4879 } 4880 function isEventWithinFloatingTree(event) { 4881 const nodeId = dataRef.current.floatingContext?.nodeId; 4882 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 4883 return isEventWithinOwnElements(event) || targetIsInsideChildren; 4884 } 4885 function closeOnPressOutside(event) { 4886 if (shouldIgnoreEvent(event)) { 4887 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 4888 preventedPressSuppressionTimeout.clear(); 4889 suppressNextOutsideClickRef.current = false; 4890 } 4891 clearInsideReactTree(); 4892 return; 4893 } 4894 if (dataRef.current.insideReactTree) { 4895 clearInsideReactTree(); 4896 return; 4897 } 4898 const target = getTarget(event); 4899 const inertSelector = `[$createAttribute("inert")}]`; 4900 const targetRoot = isElement(target) ? target.getRootNode() : null; 4901 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); 4902 const triggers = store.context.triggerElements; 4903 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 4904 return; 4905 } 4906 let targetRootAncestor = isElement(target) ? target : null; 4907 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 4908 const nextParent = getParentNode(targetRootAncestor); 4909 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 4910 break; 4911 } 4912 targetRootAncestor = nextParent; 4913 } 4914 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 4915 !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the 4916 // element was injected after the floating element rendered. 4917 markers.every((marker) => !contains(targetRootAncestor, marker))) { 4918 return; 4919 } 4920 if (isHTMLElement(target) && !("touches" in event)) { 4921 const lastTraversableNode = isLastTraversableNode(target); 4922 const style = getComputedStyle2(target); 4923 const scrollRe = /auto|scroll/; 4924 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 4925 const isScrollableY2 = lastTraversableNode || scrollRe.test(style.overflowY); 4926 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 4927 const canScrollY = isScrollableY2 && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 4928 const isRTL4 = style.direction === "rtl"; 4929 const pressedVerticalScrollbar = canScrollY && (isRTL4 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 4930 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 4931 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 4932 return; 4933 } 4934 } 4935 if (isEventWithinFloatingTree(event)) { 4936 return; 4937 } 4938 if (getOutsidePressEvent() === "intentional") { 4939 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 4940 return; 4941 } 4942 if (suppressNextOutsideClickRef.current) { 4943 preventedPressSuppressionTimeout.clear(); 4944 suppressNextOutsideClickRef.current = false; 4945 return; 4946 } 4947 } 4948 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4949 return; 4950 } 4951 if (hasBlockingChild("__outsidePressBubbles")) { 4952 return; 4953 } 4954 store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 4955 clearInsideReactTree(); 4956 } 4957 function handlePointerDown(event) { 4958 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4959 return; 4960 } 4961 closeOnPressOutside(event); 4962 } 4963 function handleTouchStart(event) { 4964 if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4965 return; 4966 } 4967 const touch = event.touches[0]; 4968 if (touch) { 4969 touchStateRef.current = { 4970 startTime: Date.now(), 4971 startX: touch.clientX, 4972 startY: touch.clientY, 4973 dismissOnTouchEnd: false, 4974 dismissOnMouseDown: true 4975 }; 4976 cancelDismissOnEndTimeout.start(1e3, () => { 4977 if (touchStateRef.current) { 4978 touchStateRef.current.dismissOnTouchEnd = false; 4979 touchStateRef.current.dismissOnMouseDown = false; 4980 } 4981 }); 4982 } 4983 } 4984 function addTargetEventListenerOnce(event, listener) { 4985 const target = getTarget(event); 4986 if (!target) { 4987 return; 4988 } 4989 const unsubscribe2 = addEventListener(target, event.type, () => { 4990 listener(event); 4991 unsubscribe2(); 4992 }); 4993 } 4994 function handleTouchStartCapture(event) { 4995 currentPointerTypeRef.current = "touch"; 4996 addTargetEventListenerOnce(event, handleTouchStart); 4997 } 4998 function closeOnPressOutsideCapture(event) { 4999 cancelDismissOnEndTimeout.clear(); 5000 if (event.type === "pointerdown") { 5001 if (event.button === 0) { 5002 sawPressWhileOpenRef.current = true; 5003 } 5004 currentPointerTypeRef.current = event.pointerType; 5005 } 5006 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 5007 return; 5008 } 5009 addTargetEventListenerOnce(event, (targetEvent) => { 5010 if (targetEvent.type === "pointerdown") { 5011 handlePointerDown(targetEvent); 5012 } else { 5013 closeOnPressOutside(targetEvent); 5014 } 5015 }); 5016 } 5017 function handlePressEndCapture(event) { 5018 if (event.type === "pointercancel") { 5019 sawPressWhileOpenRef.current = false; 5020 } 5021 if (!pressStartedInsideRef.current) { 5022 return; 5023 } 5024 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 5025 resetPressStartState(); 5026 if (getOutsidePressEvent() !== "intentional") { 5027 return; 5028 } 5029 if (event.type === "pointercancel") { 5030 if (pressStartedInsideDefaultPrevented) { 5031 suppressImmediateOutsideClickAfterPreventedStart(); 5032 } 5033 return; 5034 } 5035 if (isEventWithinFloatingTree(event)) { 5036 return; 5037 } 5038 if (pressStartedInsideDefaultPrevented) { 5039 suppressImmediateOutsideClickAfterPreventedStart(); 5040 return; 5041 } 5042 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 5043 return; 5044 } 5045 preventedPressSuppressionTimeout.clear(); 5046 suppressNextOutsideClickRef.current = true; 5047 clearInsideReactTree(); 5048 } 5049 function handleTouchMove(event) { 5050 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 5051 return; 5052 } 5053 const touch = event.touches[0]; 5054 if (!touch) { 5055 return; 5056 } 5057 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 5058 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 5059 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 5060 if (distance > 5) { 5061 touchStateRef.current.dismissOnTouchEnd = true; 5062 } 5063 if (distance > 10) { 5064 closeOnPressOutside(event); 5065 cancelDismissOnEndTimeout.clear(); 5066 touchStateRef.current = null; 5067 } 5068 } 5069 function handleTouchMoveCapture(event) { 5070 addTargetEventListenerOnce(event, handleTouchMove); 5071 } 5072 function handleTouchEnd(event) { 5073 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 5074 return; 5075 } 5076 if (touchStateRef.current.dismissOnTouchEnd) { 5077 closeOnPressOutside(event); 5078 } 5079 cancelDismissOnEndTimeout.clear(); 5080 touchStateRef.current = null; 5081 } 5082 function handleTouchEndCapture(event) { 5083 addTargetEventListenerOnce(event, handleTouchEnd); 5084 } 5085 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, { 5086 capture: true, 5087 passive: true 5088 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 5089 capture: true, 5090 passive: true 5091 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 5092 capture: true, 5093 passive: true 5094 }))); 5095 return () => { 5096 unsubscribe(); 5097 preventedPressSuppressionTimeout.clear(); 5098 resetPressStartState(); 5099 suppressNextOutsideClickRef.current = false; 5100 }; 5101 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout, compositionTimeout]); 5102 const reference = React26.useMemo(() => ({ 5103 onKeyDown: closeOnEscapeKeyDown, 5104 onPointerDown: closeOnReferencePress, 5105 onClick: closeOnReferencePress 5106 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 5107 const floating = React26.useMemo(() => ({ 5108 onKeyDown: closeOnEscapeKeyDown, 5109 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 5110 // `onPointerDown`, such as with <NumberField.ScrubArea>. 5111 // See https://github.com/mui/base-ui/pull/3379 5112 onPointerDown: markInsidePressStartPrevented, 5113 onMouseDown: markInsidePressStartPrevented, 5114 onClickCapture: markInsideReactTree, 5115 onMouseDownCapture(event) { 5116 markInsideReactTree(); 5117 markPressStartedInsideReactTree(event); 5118 }, 5119 onPointerDownCapture(event) { 5120 markInsideReactTree(); 5121 markPressStartedInsideReactTree(event); 5122 }, 5123 onMouseUpCapture: markInsideReactTree, 5124 onTouchEndCapture: markInsideReactTree, 5125 onTouchMoveCapture: markInsideReactTree 5126 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 5127 return React26.useMemo(() => enabled ? { 5128 reference, 5129 floating, 5130 trigger: reference 5131 } : {}, [enabled, reference, floating]); 5132 } 5133 5134 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupHandle.mjs 5135 var BasePopupHandle = class { 5136 /** 5137 * Stores of every root currently using this handle, in attach order. A handle is meant to be used 5138 * by a single mounted root, but roots can transiently overlap (e.g. during an animated route 5139 * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of 5140 * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first. 5141 */ 5142 attachedStores = []; 5143 /** 5144 * Store of the root that currently controls the handle: the most recently attached one still 5145 * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`. 5146 */ 5147 attachedStoreValue = null; 5148 /** 5149 * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer. 5150 */ 5151 storeListeners = /* @__PURE__ */ new Set(); 5152 /** 5153 * Creates a handle backed by the store used while no root is attached. 5154 * 5155 * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached, 5156 * so they can render and register without a mounted root. Triggers register into whichever store 5157 * `store` currently resolves to, so while detached they live in this store's trigger map and 5158 * migrate themselves to the root's store (and back) as it attaches/detaches. 5159 * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces 5160 * `MenuHandle.open()` in warning text. 5161 * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is 5162 * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to, 5163 * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning. 5164 */ 5165 constructor(fallbackStore, componentName, throwOnMissingTrigger = true) { 5166 this.fallbackStore = fallbackStore; 5167 this.componentName = componentName; 5168 this.throwOnMissingTrigger = throwOnMissingTrigger; 5169 } 5170 get attachedStore() { 5171 return this.attachedStoreValue; 5172 } 5173 /** 5174 * Store that detached triggers read from: the attached root's store, or an inert fallback store 5175 * used while no root is attached. 5176 * @internal 5177 */ 5178 get store() { 5179 return this.attachedStoreValue ?? this.fallbackStore; 5180 } 5181 /** 5182 * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on 5183 * the handle during render because a handle can be shared by concurrent server-rendered requests. 5184 * @internal 5185 */ 5186 get serverStore() { 5187 return this.fallbackStore; 5188 } 5189 /** 5190 * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind 5191 * when a root attaches or detaches. Returns a function that removes the listener. 5192 * @internal 5193 */ 5194 subscribeStore(listener) { 5195 this.storeListeners.add(listener); 5196 return () => { 5197 this.storeListeners.delete(listener); 5198 }; 5199 } 5200 /** 5201 * Points the handle at a root's store and notifies subscribers so detached triggers re-render and 5202 * re-register into it (their registration effect migrates them when the store pointer changes). 5203 * Returns a cleanup function that detaches the store again. 5204 * @internal 5205 */ 5206 attachStore(newStore) { 5207 this.attachedStores.push(newStore); 5208 this.setActiveStore(newStore); 5209 if (true) { 5210 if (this.attachedStores.length > 1) { 5211 const dev = this; 5212 (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => { 5213 if (this.attachedStores.length > 1) { 5214 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."); 5215 } 5216 }); 5217 } 5218 } 5219 return () => { 5220 const index2 = this.attachedStores.lastIndexOf(newStore); 5221 if (index2 !== -1) { 5222 this.attachedStores.splice(index2, 1); 5223 } 5224 this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null); 5225 }; 5226 } 5227 /** 5228 * Sets the store that currently controls the handle and notifies subscribers when it changes, so 5229 * detached triggers re-render and migrate their registration to the new store. 5230 */ 5231 setActiveStore(store) { 5232 if (this.attachedStoreValue !== store) { 5233 this.attachedStoreValue = store; 5234 this.storeListeners.forEach((listener) => { 5235 listener(); 5236 }); 5237 } 5238 } 5239 /** 5240 * Opens the attached root's store and associates it with the trigger with the given id, or a 5241 * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public 5242 * `open()` method, which only narrows the parameter type. 5243 * 5244 * When a trigger id is given but no matching trigger is registered, anchored popups throw (see 5245 * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead. 5246 * 5247 * This method should only be called in an event handler or an effect (not during rendering). 5248 * 5249 * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open 5250 * without associating any trigger. 5251 */ 5252 openByTrigger(triggerId) { 5253 const attachedStore = this.attachedStore; 5254 if (attachedStore === null) { 5255 if (true) { 5256 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.`); 5257 } 5258 return; 5259 } 5260 let triggerElement; 5261 if (triggerId) { 5262 for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) { 5263 triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId); 5264 } 5265 triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId); 5266 } 5267 if (triggerId && !triggerElement) { 5268 if (this.throwOnMissingTrigger) { 5269 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)); 5270 } 5271 if (true) { 5272 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.`); 5273 } 5274 } 5275 attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); 5276 } 5277 /** 5278 * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning) 5279 * while no root is attached. Shared by every concrete handle's public `close()` method. 5280 * 5281 * This method should only be called in an event handler or an effect (not during rendering). 5282 */ 5283 closePopup() { 5284 const attachedStore = this.attachedStore; 5285 if (attachedStore === null) { 5286 if (true) { 5287 console.warn(`Base UI: $this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`); 5288 } 5289 return; 5290 } 5291 attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 5292 } 5293 }; 5294 5295 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 5296 var React28 = __toESM(require_react(), 1); 5297 var ReactDOM3 = __toESM(require_react_dom(), 1); 5298 5299 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs 5300 function useSyncedFloatingRootContext(options) { 5301 const { 5302 popupStore, 5303 treatPopupAsFloatingElement = false, 5304 floatingRootContext: store, 5305 floatingId, 5306 nested, 5307 onOpenChange 5308 } = options; 5309 const open2 = popupStore.useState("open"); 5310 const referenceElement = popupStore.useState("activeTriggerElement"); 5311 const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); 5312 const handleOpenChange = onOpenChange; 5313 popupStore.useSyncedValue("floatingId", floatingId); 5314 useIsoLayoutEffect(() => { 5315 const valuesToSync = { 5316 open: open2, 5317 floatingId, 5318 referenceElement, 5319 floatingElement 5320 }; 5321 if (isElement(referenceElement)) { 5322 valuesToSync.domReferenceElement = referenceElement; 5323 } 5324 if (store.state.positionReference === store.state.referenceElement) { 5325 valuesToSync.positionReference = referenceElement; 5326 } 5327 store.update(valuesToSync); 5328 }, [open2, floatingId, referenceElement, floatingElement, store]); 5329 store.context.onOpenChange = handleOpenChange; 5330 store.context.nested = nested; 5331 return store; 5332 } 5333 5334 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 5335 var React27 = __toESM(require_react(), 1); 5336 function useUnmountAfterClose(parameters) { 5337 const { 5338 open: open2, 5339 ref, 5340 preventUnmountOnClose, 5341 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 5342 onUnmount, 5343 animateInitialOpen 5344 } = parameters; 5345 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 5346 const { 5347 mounted, 5348 setMounted, 5349 transitionStatus 5350 } = useTransitionStatus(open2, false, false, animateInitialOpen); 5351 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 5352 useIsoLayoutEffect(() => { 5353 if (open2) { 5354 setPreventUnmountOnClose(false); 5355 } 5356 }, [open2, setPreventUnmountOnClose]); 5357 const mountedRef = React27.useRef(mounted); 5358 const pendingUnmountRef = React27.useRef(false); 5359 const rerender = useForcedRerendering(); 5360 const unmount = () => { 5361 mountedRef.current = false; 5362 setMounted(false); 5363 onUnmount(); 5364 }; 5365 useIsoLayoutEffect(() => { 5366 mountedRef.current = mounted; 5367 if (pendingUnmountRef.current) { 5368 pendingUnmountRef.current = false; 5369 if (!open2 && mounted) { 5370 unmount(); 5371 } 5372 } 5373 }); 5374 const forceUnmount = useStableCallback(() => { 5375 if (!mountedRef.current) { 5376 return; 5377 } 5378 if (open2) { 5379 pendingUnmountRef.current = true; 5380 rerender(); 5381 return; 5382 } 5383 unmount(); 5384 }); 5385 useOpenChangeComplete({ 5386 enabled: mounted && !open2 && !preventUnmountingOnClose, 5387 open: open2, 5388 ref, 5389 onComplete() { 5390 if (!open2) { 5391 forceUnmount(); 5392 } 5393 } 5394 }); 5395 return { 5396 mounted, 5397 transitionStatus, 5398 preventUnmountingOnClose, 5399 forceUnmount 5400 }; 5401 } 5402 5403 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 5404 var FOCUSABLE_POPUP_PROPS = { 5405 tabIndex: -1, 5406 [FOCUSABLE_ATTRIBUTE]: "" 5407 }; 5408 function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) { 5409 const floatingId = useId(); 5410 const nested = useFloatingParentNodeId() != null; 5411 const store = useRefWithInit(() => createStore(floatingId, nested)).current; 5412 useSyncedFloatingRootContext({ 5413 popupStore: store, 5414 treatPopupAsFloatingElement, 5415 floatingRootContext: store.state.floatingRootContext, 5416 floatingId, 5417 nested, 5418 onOpenChange: store.setOpen 5419 }); 5420 return store; 5421 } 5422 function PopupHandleAttachment({ 5423 handle, 5424 store 5425 }) { 5426 useIsoLayoutEffect(() => { 5427 return handle.attachStore(store); 5428 }, [handle, store]); 5429 return null; 5430 } 5431 function syncTriggerCount(store) { 5432 const triggerCount = store.context.triggerElements.size; 5433 if (store.select("open") && store.state.triggerCount !== triggerCount) { 5434 store.set("triggerCount", triggerCount); 5435 } 5436 } 5437 function useTriggerRegistration(id, store) { 5438 const registrationRef = React28.useRef(null); 5439 return useStableCallback((element) => { 5440 const registration = registrationRef.current; 5441 if (registration !== null) { 5442 if (registration.element === element && registration.store === store && registration.id === id) { 5443 return; 5444 } 5445 registrationRef.current = null; 5446 const registeredStore = registration.store; 5447 if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) { 5448 registeredStore.context.triggerElements.delete(registration.id); 5449 syncTriggerCount(registeredStore); 5450 } 5451 } 5452 if (element !== null && id !== void 0) { 5453 registrationRef.current = { 5454 store, 5455 id, 5456 element 5457 }; 5458 store.context.triggerElements.add(id, element); 5459 syncTriggerCount(store); 5460 } 5461 }); 5462 } 5463 function createPopupOpenState(state, open2, trigger, preventUnmountOnClose = false) { 5464 let preventUnmountingOnClose = state.preventUnmountingOnClose; 5465 if (open2) { 5466 preventUnmountingOnClose = false; 5467 } else if (preventUnmountOnClose) { 5468 preventUnmountingOnClose = true; 5469 } 5470 const triggerId = trigger?.id ?? null; 5471 let activeTriggerId = state.activeTriggerId; 5472 let activeTriggerElement = state.activeTriggerElement; 5473 if (triggerId || open2) { 5474 activeTriggerId = triggerId; 5475 activeTriggerElement = trigger ?? null; 5476 } 5477 return { 5478 open: open2, 5479 preventUnmountingOnClose, 5480 activeTriggerId, 5481 activeTriggerElement, 5482 // An open request without a trigger (a handle's `open(null)` or `openWithPayload()`) must not 5483 // be reassociated with a lone registered trigger later on. Controlled and default opens never 5484 // pass through here, so they keep claiming a lone trigger. A close request keeps the flag: a 5485 // controlled root may decline it and stay open, so the Root clears the flag only once the 5486 // popup is effectively closed. 5487 openedWithoutTrigger: open2 ? trigger == null : state.openedWithoutTrigger 5488 }; 5489 } 5490 function attachPreventUnmountOnClose(eventDetails) { 5491 let preventUnmountOnClose = false; 5492 eventDetails.preventUnmountOnClose = () => { 5493 preventUnmountOnClose = true; 5494 }; 5495 return () => preventUnmountOnClose; 5496 } 5497 function applyPopupOpenChange(store, nextOpen, eventDetails, options = {}) { 5498 const reason = eventDetails.reason; 5499 const isHover = reason === reason_parts_exports.triggerHover; 5500 const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; 5501 const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); 5502 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails); 5503 store.context.onOpenChange?.(nextOpen, eventDetails); 5504 if (eventDetails.isCanceled) { 5505 return; 5506 } 5507 options.onBeforeDispatch?.(); 5508 store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); 5509 const changeState = () => { 5510 const popupOpenState = createPopupOpenState(store.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose()); 5511 const updatedState = { 5512 ...options.extraState, 5513 ...popupOpenState 5514 }; 5515 if (isFocusOpen) { 5516 updatedState.instantType = "focus"; 5517 } else if (isDismissClose) { 5518 updatedState.instantType = "dismiss"; 5519 } else if (isHover) { 5520 updatedState.instantType = void 0; 5521 } 5522 store.update(updatedState); 5523 }; 5524 if (isHover) { 5525 ReactDOM3.flushSync(changeState); 5526 } else { 5527 changeState(); 5528 } 5529 } 5530 function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) { 5531 const isMountedByThisTrigger = store.useState("isMountedByTrigger", triggerId); 5532 const baseRegisterTrigger = useTriggerRegistration(triggerId, store); 5533 const applyTriggerData = useStableCallback((element) => { 5534 const open2 = store.select("open"); 5535 const activeTriggerId = store.select("activeTriggerId"); 5536 if (activeTriggerId === triggerId) { 5537 const changes = { 5538 activeTriggerElement: element, 5539 ...open2 ? stateUpdates : null 5540 }; 5541 store.update(changes); 5542 return; 5543 } 5544 if (activeTriggerId == null && open2 && !store.state.openedWithoutTrigger) { 5545 const changes = { 5546 activeTriggerId: triggerId ?? null, 5547 activeTriggerElement: element, 5548 ...stateUpdates 5549 }; 5550 store.update(changes); 5551 } 5552 }); 5553 const registerTrigger = useStableCallback((element) => { 5554 baseRegisterTrigger(element); 5555 if (element) { 5556 applyTriggerData(element); 5557 } 5558 }); 5559 useIsoLayoutEffect(() => { 5560 registerTrigger(triggerElementRef.current); 5561 return () => registerTrigger(null); 5562 }, [registerTrigger, triggerElementRef, store, triggerId]); 5563 useIsoLayoutEffect(() => { 5564 if (isMountedByThisTrigger) { 5565 const changes = { 5566 activeTriggerElement: triggerElementRef.current, 5567 ...stateUpdates 5568 }; 5569 store.update(changes); 5570 } 5571 }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]); 5572 return { 5573 registerTrigger, 5574 isMountedByThisTrigger 5575 }; 5576 } 5577 function useImplicitActiveTrigger(store, options = {}) { 5578 const { 5579 closeOnActiveTriggerUnmount = false 5580 } = options; 5581 const resolvedActiveTriggerIdRef = React28.useRef(null); 5582 const open2 = store.useState("open"); 5583 const reactiveTriggerCount = store.useState("triggerCount"); 5584 const activeTriggerId = store.useState("activeTriggerId"); 5585 const reactiveActiveTriggerElement = store.useState("activeTriggerElement"); 5586 useIsoLayoutEffect(() => { 5587 if (!open2) { 5588 resolvedActiveTriggerIdRef.current = null; 5589 if (store.state.triggerCount !== 0) { 5590 store.set("triggerCount", 0); 5591 } 5592 if (store.state.openedWithoutTrigger) { 5593 store.set("openedWithoutTrigger", false); 5594 } 5595 return; 5596 } 5597 const triggerCount = store.context.triggerElements.size; 5598 const stateUpdates = {}; 5599 if (store.state.triggerCount !== triggerCount) { 5600 stateUpdates.triggerCount = triggerCount; 5601 } 5602 const currentActiveTriggerId = store.select("activeTriggerId"); 5603 let lostActiveTriggerId = null; 5604 if (currentActiveTriggerId) { 5605 const activeTriggerElement = store.context.triggerElements.getById(currentActiveTriggerId); 5606 if (!activeTriggerElement) { 5607 for (const [triggerId, triggerElement] of store.context.triggerElements.entries()) { 5608 if (triggerElement === store.state.activeTriggerElement) { 5609 stateUpdates.activeTriggerId = triggerId; 5610 stateUpdates.activeTriggerElement = triggerElement; 5611 resolvedActiveTriggerIdRef.current = triggerId; 5612 break; 5613 } 5614 } 5615 if (stateUpdates.activeTriggerId === void 0) { 5616 if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) { 5617 lostActiveTriggerId = currentActiveTriggerId; 5618 } else { 5619 resolvedActiveTriggerIdRef.current = null; 5620 } 5621 } 5622 } else { 5623 resolvedActiveTriggerIdRef.current = currentActiveTriggerId; 5624 if (activeTriggerElement !== store.state.activeTriggerElement) { 5625 stateUpdates.activeTriggerElement = activeTriggerElement; 5626 } 5627 } 5628 } else { 5629 resolvedActiveTriggerIdRef.current = null; 5630 } 5631 if (!lostActiveTriggerId && !currentActiveTriggerId && !store.state.openedWithoutTrigger && triggerCount === 1) { 5632 const iteratorResult = store.context.triggerElements.entries().next(); 5633 if (!iteratorResult.done) { 5634 const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; 5635 stateUpdates.activeTriggerId = implicitTriggerId; 5636 stateUpdates.activeTriggerElement = implicitTriggerElement; 5637 resolvedActiveTriggerIdRef.current = implicitTriggerId; 5638 } 5639 } 5640 if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) { 5641 store.update(stateUpdates); 5642 } 5643 if (lostActiveTriggerId) { 5644 if (closeOnActiveTriggerUnmount) { 5645 queueMicrotask(() => { 5646 if (store.select("open") && store.select("activeTriggerId") === lostActiveTriggerId && !store.context.triggerElements.getById(lostActiveTriggerId)) { 5647 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 5648 store.setOpen(false, eventDetails); 5649 if (!eventDetails.isCanceled) { 5650 store.update({ 5651 activeTriggerId: null, 5652 activeTriggerElement: null 5653 }); 5654 } 5655 } 5656 }); 5657 } 5658 } 5659 }, [open2, store, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]); 5660 } 5661 function useOpenStateTransitions(open2, store, onUnmount, animateInitialOpen) { 5662 const { 5663 mounted, 5664 transitionStatus, 5665 forceUnmount 5666 } = useUnmountAfterClose({ 5667 open: open2, 5668 ref: store.context.popupRef, 5669 preventUnmountOnClose: store.useState("preventUnmountingOnClose"), 5670 setPreventUnmountOnClose: (preventUnmountOnClose) => store.set("preventUnmountingOnClose", preventUnmountOnClose), 5671 animateInitialOpen, 5672 onUnmount() { 5673 store.update({ 5674 activeTriggerId: null, 5675 activeTriggerElement: null, 5676 mounted: false, 5677 preventUnmountingOnClose: false 5678 }); 5679 onUnmount?.(); 5680 store.context.onOpenChangeComplete?.(false); 5681 } 5682 }); 5683 useRefWithInit(() => { 5684 store.set("mounted", mounted); 5685 return null; 5686 }); 5687 store.useSyncedValues({ 5688 mounted, 5689 transitionStatus 5690 }); 5691 return { 5692 forceUnmount, 5693 transitionStatus 5694 }; 5695 } 5696 function usePopupInteractionProps(store, statePart) { 5697 store.useSyncedValues(statePart); 5698 useIsoLayoutEffect(() => () => { 5699 store.update({ 5700 activeTriggerProps: EMPTY_OBJECT, 5701 inactiveTriggerProps: EMPTY_OBJECT, 5702 popupProps: EMPTY_OBJECT 5703 }); 5704 }, [store]); 5705 } 5706 5707 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 5708 var devElementIdsByMap; 5709 function getDevElementIds(map) { 5710 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 5711 let elementIds = devElementIdsByMap.get(map); 5712 if (!elementIds) { 5713 elementIds = /* @__PURE__ */ new WeakMap(); 5714 devElementIdsByMap.set(map, elementIds); 5715 } 5716 return elementIds; 5717 } 5718 var PopupTriggerMap = class { 5719 idMap = /* @__PURE__ */ new Map(); 5720 /** 5721 * Adds a trigger element with the given ID. 5722 * 5723 * Note: The provided element is assumed to not be registered under multiple IDs. 5724 */ 5725 add(id, element) { 5726 if (true) { 5727 const elementIds = getDevElementIds(this); 5728 const existingId = elementIds.get(element); 5729 if (existingId !== void 0 && existingId !== id) { 5730 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 5731 } 5732 const previousElement = this.idMap.get(id); 5733 if (previousElement !== void 0 && previousElement !== element) { 5734 elementIds.delete(previousElement); 5735 } 5736 elementIds.set(element, id); 5737 } 5738 this.idMap.set(id, element); 5739 } 5740 /** 5741 * Removes the trigger element with the given ID. 5742 */ 5743 delete(id) { 5744 if (true) { 5745 const element = this.idMap.get(id); 5746 if (element !== void 0) { 5747 devElementIdsByMap?.get(this)?.delete(element); 5748 } 5749 } 5750 this.idMap.delete(id); 5751 } 5752 /** 5753 * Whether the given element is registered as a trigger. 5754 */ 5755 hasElement(element) { 5756 for (const registered of this.idMap.values()) { 5757 if (registered === element) { 5758 return true; 5759 } 5760 } 5761 return false; 5762 } 5763 /** 5764 * Whether there is a registered trigger element matching the given predicate. 5765 */ 5766 hasMatchingElement(predicate) { 5767 for (const element of this.idMap.values()) { 5768 if (predicate(element)) { 5769 return true; 5770 } 5771 } 5772 return false; 5773 } 5774 /** 5775 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 5776 */ 5777 getById(id) { 5778 return this.idMap.get(id); 5779 } 5780 /** 5781 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 5782 */ 5783 entries() { 5784 return this.idMap.entries(); 5785 } 5786 /** 5787 * Returns an iterable of all registered trigger elements. 5788 */ 5789 elements() { 5790 return this.idMap.values(); 5791 } 5792 /** 5793 * Returns the number of registered trigger elements. 5794 */ 5795 get size() { 5796 return this.idMap.size; 5797 } 5798 }; 5799 5800 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 5801 var React30 = __toESM(require_react(), 1); 5802 var import_shim = __toESM(require_shim(), 1); 5803 var import_with_selector = __toESM(require_with_selector(), 1); 5804 5805 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 5806 var React29 = __toESM(require_react(), 1); 5807 var hooks = []; 5808 var currentInstance = void 0; 5809 function getInstance() { 5810 return currentInstance; 5811 } 5812 function register(hook) { 5813 hooks.push(hook); 5814 } 5815 function fastComponent(fn) { 5816 const FastComponent = (props, forwardedRef) => { 5817 const instance = useRefWithInit(createInstance).current; 5818 let result; 5819 try { 5820 currentInstance = instance; 5821 for (const hook of hooks) { 5822 hook.before(instance); 5823 } 5824 result = fn(props, forwardedRef); 5825 for (const hook of hooks) { 5826 hook.after(instance); 5827 } 5828 instance.didInitialize = true; 5829 } finally { 5830 currentInstance = void 0; 5831 } 5832 return result; 5833 }; 5834 FastComponent.displayName = fn.displayName || fn.name; 5835 return FastComponent; 5836 } 5837 function fastComponentRef(fn) { 5838 return /* @__PURE__ */ React29.forwardRef(fastComponent(fn)); 5839 } 5840 function createInstance() { 5841 return { 5842 didInitialize: false 5843 }; 5844 } 5845 5846 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 5847 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 5848 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 5849 function useStore(store, selector, a1, a2, a3) { 5850 return useStoreImplementation(store, selector, a1, a2, a3); 5851 } 5852 function useStoreR19(store, selector, a1, a2, a3) { 5853 const getSelection = React30.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); 5854 return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); 5855 } 5856 register({ 5857 before(instance) { 5858 instance.syncIndex = 0; 5859 if (!instance.didInitialize) { 5860 instance.syncTick = 1; 5861 instance.syncHooks = []; 5862 instance.didChangeStore = true; 5863 instance.getSnapshot = () => { 5864 let didChange2 = false; 5865 for (let i = 0; i < instance.syncHooks.length; i += 1) { 5866 const hook = instance.syncHooks[i]; 5867 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 5868 if (!Object.is(hook.value, value)) { 5869 didChange2 = true; 5870 hook.value = value; 5871 } 5872 } 5873 if (didChange2) { 5874 instance.syncTick += 1; 5875 } 5876 return instance.syncTick; 5877 }; 5878 } 5879 }, 5880 after(instance) { 5881 if (instance.syncHooks.length > 0) { 5882 if (instance.didChangeStore) { 5883 instance.didChangeStore = false; 5884 instance.subscribe = (onStoreChange) => { 5885 const stores = /* @__PURE__ */ new Set(); 5886 for (const hook of instance.syncHooks) { 5887 stores.add(hook.store); 5888 } 5889 const unsubscribes = []; 5890 for (const store of stores) { 5891 unsubscribes.push(store.subscribe(onStoreChange)); 5892 } 5893 return () => { 5894 for (const unsubscribe of unsubscribes) { 5895 unsubscribe(); 5896 } 5897 }; 5898 }; 5899 } 5900 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 5901 } 5902 } 5903 }); 5904 function useStoreFast(store, selector, a1, a2, a3) { 5905 const instance = getInstance(); 5906 if (!instance) { 5907 return useStoreR19(store, selector, a1, a2, a3); 5908 } 5909 const index2 = instance.syncIndex; 5910 instance.syncIndex += 1; 5911 let hook; 5912 if (!instance.didInitialize) { 5913 hook = { 5914 store, 5915 selector, 5916 a1, 5917 a2, 5918 a3, 5919 value: selector(store.getSnapshot(), a1, a2, a3) 5920 }; 5921 instance.syncHooks.push(hook); 5922 } else { 5923 hook = instance.syncHooks[index2]; 5924 if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 5925 if (hook.store !== store) { 5926 instance.didChangeStore = true; 5927 } 5928 hook.store = store; 5929 hook.selector = selector; 5930 hook.a1 = a1; 5931 hook.a2 = a2; 5932 hook.a3 = a3; 5933 hook.value = selector(store.getSnapshot(), a1, a2, a3); 5934 } 5935 } 5936 return hook.value; 5937 } 5938 function useStoreLegacy(store, selector, a1, a2, a3) { 5939 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); 5940 } 5941 5942 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 5943 var Store = class { 5944 /** 5945 * Creates a store with the given initial state, constructing the class it is called on. 5946 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 5947 * class but degrades the inferred instance type to `Store`; use `new` there instead. 5948 */ 5949 static create(state) { 5950 return new this(state); 5951 } 5952 /** 5953 * The current state of the store. 5954 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 5955 * 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). 5956 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 5957 * 5958 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 5959 */ 5960 // Internal state to handle recursive `setState()` calls 5961 constructor(state) { 5962 this.state = state; 5963 this.listeners = /* @__PURE__ */ new Set(); 5964 this.updateTick = 0; 5965 } 5966 /** 5967 * Registers a listener that will be called whenever the store's state changes. 5968 * 5969 * @param fn The listener function to be called on state changes. 5970 * @returns A function to unsubscribe the listener. 5971 */ 5972 subscribe = (fn) => { 5973 this.listeners.add(fn); 5974 return () => { 5975 this.listeners.delete(fn); 5976 }; 5977 }; 5978 /** 5979 * Returns the current state of the store. 5980 */ 5981 getSnapshot = () => { 5982 return this.state; 5983 }; 5984 /** 5985 * Updates the entire store's state and notifies all registered listeners. 5986 * 5987 * @param newState The new state to set for the store. 5988 */ 5989 setState(newState) { 5990 if (this.state === newState) { 5991 return; 5992 } 5993 this.state = newState; 5994 this.updateTick += 1; 5995 const currentTick = this.updateTick; 5996 for (const listener of this.listeners) { 5997 if (currentTick !== this.updateTick) { 5998 return; 5999 } 6000 listener(newState); 6001 } 6002 } 6003 /** 6004 * Merges the provided changes into the current state and notifies listeners if there are changes. 6005 * Each value must match its state key. Pass an exact known subset rather than a broad 6006 * `Partial<State>`, which may contain `undefined` for required state fields. 6007 * 6008 * @param changes An object containing the changes to apply to the current state. 6009 */ 6010 update(changes) { 6011 for (const key in changes) { 6012 if (!Object.is(this.state[key], changes[key])) { 6013 this.setState({ 6014 ...this.state, 6015 ...changes 6016 }); 6017 return; 6018 } 6019 } 6020 } 6021 /** 6022 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 6023 * 6024 * @param key The key in the store's state to update. 6025 * @param value The new value to set for the specified key. 6026 */ 6027 set(key, value) { 6028 if (!Object.is(this.state[key], value)) { 6029 this.setState({ 6030 ...this.state, 6031 [key]: value 6032 }); 6033 } 6034 } 6035 /** 6036 * Gives the state a new reference and updates all registered listeners. 6037 */ 6038 notifyAll() { 6039 const newState = { 6040 ...this.state 6041 }; 6042 this.setState(newState); 6043 } 6044 use(selector, a1, a2, a3) { 6045 return useStore(this, selector, a1, a2, a3); 6046 } 6047 }; 6048 6049 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 6050 var React31 = __toESM(require_react(), 1); 6051 var ReactStore = class extends Store { 6052 /** 6053 * Creates a new ReactStore instance. 6054 * 6055 * @param state Initial state of the store. 6056 * @param context Non-reactive context values. 6057 * @param selectors Optional selectors for use with `useState`. 6058 */ 6059 constructor(state, context = {}, selectors4) { 6060 super(state); 6061 this.context = context; 6062 this.selectors = selectors4; 6063 } 6064 /** 6065 * Non-reactive values such as refs, callbacks, etc. 6066 */ 6067 /** 6068 * Synchronizes a single external value into the store. 6069 * 6070 * Note that the while the value in `state` is updated immediately, the value returned 6071 * by `useState` is updated before the next render (similarly to React's `useState`). 6072 */ 6073 useSyncedValue(key, value) { 6074 React31.useDebugValue(key); 6075 const store = this; 6076 useIsoLayoutEffect(() => { 6077 if (store.state[key] !== value) { 6078 store.set(key, value); 6079 } 6080 }, [store, key, value]); 6081 } 6082 /** 6083 * Synchronizes a single external value into the store and 6084 * cleans it up (sets to `undefined`) on unmount. 6085 * 6086 * Note that the while the value in `state` is updated immediately, the value returned 6087 * by `useState` is updated before the next render (similarly to React's `useState`). 6088 */ 6089 useSyncedValueWithCleanup(key, value) { 6090 const store = this; 6091 useIsoLayoutEffect(() => { 6092 if (store.state[key] !== value) { 6093 store.set(key, value); 6094 } 6095 return () => { 6096 store.set(key, void 0); 6097 }; 6098 }, [store, key, value]); 6099 } 6100 /** 6101 * Synchronizes multiple external values into the store. 6102 * Each value must match its state key. Pass an exact known subset rather than a broad 6103 * `Partial<State>`, which may contain `undefined` for required state fields. 6104 * 6105 * Note that the while the values in `state` are updated immediately, the values returned 6106 * by `useState` are updated before the next render (similarly to React's `useState`). 6107 * 6108 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 6109 */ 6110 useSyncedValues(statePart) { 6111 const store = this; 6112 if (true) { 6113 React31.useDebugValue(statePart, (p) => Object.keys(p)); 6114 const keys = React31.useRef(Object.keys(statePart)).current; 6115 const nextKeys = Object.keys(statePart); 6116 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 6117 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 6118 } 6119 } 6120 const dependencies = Object.values(statePart); 6121 useIsoLayoutEffect(() => { 6122 store.update(statePart); 6123 }, [store, ...dependencies]); 6124 } 6125 /** 6126 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 6127 * is non-undefined, the store's state at `key` is updated to match `controlled`. 6128 */ 6129 useControlledProp(key, controlled) { 6130 React31.useDebugValue(key); 6131 const store = this; 6132 const isControlled = controlled !== void 0; 6133 useIsoLayoutEffect(() => { 6134 if (isControlled && !Object.is(store.state[key], controlled)) { 6135 store.setState({ 6136 ...store.state, 6137 [key]: controlled 6138 }); 6139 } 6140 }, [store, key, controlled, isControlled]); 6141 if (true) { 6142 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 6143 if (!cache.has(key)) { 6144 cache.set(key, isControlled); 6145 } 6146 const previouslyControlled = cache.get(key); 6147 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 6148 console.error(`A component is changing the $previouslyControlled ? "" : "un"}controlled state of $key.toString()} to be $previouslyControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`); 6149 } 6150 } 6151 } 6152 /** Gets the current value from the store using a selector with the provided key. 6153 * 6154 * @param key Key of the selector to use. 6155 */ 6156 select(key, a1, a2, a3) { 6157 const selector = this.selectors[key]; 6158 return selector(this.state, a1, a2, a3); 6159 } 6160 /** 6161 * Returns a value from the store's state using a selector function. 6162 * Used to subscribe to specific parts of the state. 6163 * This methods causes a rerender whenever the selected state changes. 6164 * 6165 * @param key Key of the selector to use. 6166 */ 6167 useState(key, a1, a2, a3) { 6168 React31.useDebugValue(key); 6169 return useStore(this, this.selectors[key], a1, a2, a3); 6170 } 6171 /** 6172 * Wraps a function with `useStableCallback` to ensure it has a stable reference 6173 * and assigns it to the context. 6174 * 6175 * @param key Key of the event callback. Must be a function in the context. 6176 * @param fn Function to assign. 6177 */ 6178 useContextCallback(key, fn) { 6179 React31.useDebugValue(key); 6180 const stableFunction = useStableCallback(fn ?? NOOP); 6181 this.context[key] = stableFunction; 6182 } 6183 /** 6184 * Returns a stable setter function for a specific key in the store's state. 6185 * It's commonly used to pass as a ref callback to React elements. 6186 * 6187 * @param key Key of the state to set. 6188 */ 6189 useStateSetter(key) { 6190 const ref = React31.useRef(void 0); 6191 if (ref.current === void 0) { 6192 ref.current = (value) => { 6193 this.set(key, value); 6194 }; 6195 } 6196 return ref.current; 6197 } 6198 /** 6199 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 6200 * 6201 * @param key Key of the selector to observe. 6202 * @param listener Listener function called when the selector result changes. 6203 */ 6204 observe(selector, listener) { 6205 let selectFn; 6206 if (typeof selector === "function") { 6207 selectFn = selector; 6208 } else { 6209 selectFn = this.selectors[selector]; 6210 } 6211 let prevValue = selectFn(this.state); 6212 listener(prevValue, prevValue, this); 6213 return this.subscribe((nextState) => { 6214 const nextValue = selectFn(nextState); 6215 if (!Object.is(prevValue, nextValue)) { 6216 const oldValue = prevValue; 6217 prevValue = nextValue; 6218 listener(nextValue, oldValue, this); 6219 } 6220 }); 6221 } 6222 }; 6223 6224 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 6225 var selectors = { 6226 open: (state) => state.open, 6227 transitionStatus: (state) => state.transitionStatus, 6228 domReferenceElement: (state) => state.domReferenceElement, 6229 referenceElement: (state) => state.positionReference ?? state.referenceElement, 6230 floatingElement: (state) => state.floatingElement, 6231 floatingId: (state) => state.floatingId 6232 }; 6233 var FloatingRootStore = class extends ReactStore { 6234 constructor(options) { 6235 const { 6236 syncOnly, 6237 nested, 6238 onOpenChange, 6239 triggerElements, 6240 ...initialState 6241 } = options; 6242 super({ 6243 ...initialState, 6244 positionReference: initialState.referenceElement, 6245 domReferenceElement: initialState.referenceElement 6246 }, { 6247 onOpenChange, 6248 dataRef: { 6249 current: {} 6250 }, 6251 events: createEventEmitter(), 6252 nested, 6253 triggerElements 6254 }, selectors); 6255 this.syncOnly = syncOnly; 6256 } 6257 /** 6258 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 6259 */ 6260 syncOpenEvent = (newOpen, event) => { 6261 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 6262 // click events to upgrade a hover-open. 6263 event != null && isClickLikeEvent(event)) { 6264 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 6265 } 6266 }; 6267 /** 6268 * Runs the root-owned side effects for an open state change. 6269 */ 6270 dispatchOpenChange = (newOpen, eventDetails) => { 6271 this.syncOpenEvent(newOpen, eventDetails.event); 6272 const details = { 6273 open: newOpen, 6274 reason: eventDetails.reason, 6275 nativeEvent: eventDetails.event, 6276 nested: this.context.nested, 6277 triggerElement: eventDetails.trigger 6278 }; 6279 this.context.events.emit("openchange", details); 6280 }; 6281 /** 6282 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 6283 * 6284 * @param newOpen The new open state. 6285 * @param eventDetails Details about the event that triggered the open state change. 6286 */ 6287 setOpen = (newOpen, eventDetails) => { 6288 if (this.syncOnly) { 6289 this.context.onOpenChange?.(newOpen, eventDetails); 6290 return; 6291 } 6292 this.dispatchOpenChange(newOpen, eventDetails); 6293 this.context.onOpenChange?.(newOpen, eventDetails); 6294 }; 6295 }; 6296 6297 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/store.mjs 6298 function createInitialPopupStoreState(triggerElements, floatingId, nested = false) { 6299 return { 6300 open: false, 6301 openProp: void 0, 6302 mounted: false, 6303 transitionStatus: void 0, 6304 floatingRootContext: new FloatingRootStore({ 6305 open: false, 6306 transitionStatus: void 0, 6307 floatingElement: null, 6308 referenceElement: null, 6309 triggerElements, 6310 floatingId, 6311 syncOnly: true, 6312 nested, 6313 onOpenChange: void 0 6314 }), 6315 floatingId, 6316 triggerCount: 0, 6317 preventUnmountingOnClose: false, 6318 payload: void 0, 6319 activeTriggerId: null, 6320 activeTriggerElement: null, 6321 openedWithoutTrigger: false, 6322 triggerIdProp: void 0, 6323 popupElement: null, 6324 positionerElement: null, 6325 activeTriggerProps: EMPTY_OBJECT, 6326 inactiveTriggerProps: EMPTY_OBJECT, 6327 popupProps: EMPTY_OBJECT 6328 }; 6329 } 6330 var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId; 6331 var openSelector = (state) => state.openProp ?? state.open; 6332 var popupIdSelector = (state) => { 6333 const popupId = state.popupElement?.id ?? state.floatingId; 6334 return popupId || void 0; 6335 }; 6336 function triggerOwnsOpenPopup(state, triggerId) { 6337 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; 6338 } 6339 function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { 6340 if (triggerOwnsOpenPopup(state, triggerId)) { 6341 return true; 6342 } 6343 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && !state.openedWithoutTrigger && state.triggerCount === 1; 6344 } 6345 var popupStoreSelectors = { 6346 open: openSelector, 6347 mounted: (state) => state.mounted, 6348 // `open` is written synchronously on an open change; `mounted`/`transitionStatus` sync in a 6349 // layout effect. Match useTransitionStatus so a retained popup does not miss its starting phase. 6350 transitionStatus: (state) => openSelector(state) && !state.mounted ? "starting" : state.transitionStatus, 6351 floatingRootContext: (state) => state.floatingRootContext, 6352 triggerCount: (state) => state.triggerCount, 6353 preventUnmountingOnClose: (state) => state.preventUnmountingOnClose, 6354 payload: (state) => state.payload, 6355 activeTriggerId: activeTriggerIdSelector, 6356 activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null, 6357 popupId: popupIdSelector, 6358 /** 6359 * Whether the trigger with the given ID was used to open the popup. 6360 */ 6361 isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId, 6362 /** 6363 * Whether the popup is open and was activated by a trigger with the given ID. 6364 */ 6365 isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId), 6366 /** 6367 * Whether the popup is mounted and was activated by a trigger with the given ID. 6368 */ 6369 isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted, 6370 triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps, 6371 /** 6372 * Popup id for the trigger that currently owns the open popup. 6373 */ 6374 triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0, 6375 popupProps: (state) => state.popupProps, 6376 popupElement: (state) => state.popupElement, 6377 positionerElement: (state) => state.positionerElement 6378 }; 6379 6380 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs 6381 var React32 = __toESM(require_react(), 1); 6382 var import_shim2 = __toESM(require_shim(), 1); 6383 function usePopupHandleStore(handle) { 6384 const subscribe = React32.useCallback((listener) => { 6385 if (handle === void 0) { 6386 return NOOP; 6387 } 6388 return handle.subscribeStore(listener); 6389 }, [handle]); 6390 const getSnapshot = React32.useCallback(() => { 6391 return handle === void 0 ? void 0 : handle.store; 6392 }, [handle]); 6393 return (0, import_shim2.useSyncExternalStore)(subscribe, getSnapshot, () => handle?.serverStore); 6394 } 6395 6396 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs 6397 function useFloatingRootContext(options) { 6398 const { 6399 open: open2 = false, 6400 onOpenChange, 6401 elements = {} 6402 } = options; 6403 const floatingId = useId(); 6404 const nested = useFloatingParentNodeId() != null; 6405 if (true) { 6406 const optionDomReference = elements.reference; 6407 if (optionDomReference && !isElement(optionDomReference)) { 6408 console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); 6409 } 6410 } 6411 const store = useRefWithInit(() => new FloatingRootStore({ 6412 open: open2, 6413 transitionStatus: void 0, 6414 onOpenChange, 6415 referenceElement: elements.reference ?? null, 6416 floatingElement: elements.floating ?? null, 6417 triggerElements: new PopupTriggerMap(), 6418 floatingId, 6419 syncOnly: false, 6420 nested 6421 })).current; 6422 useIsoLayoutEffect(() => { 6423 const valuesToSync = { 6424 open: open2, 6425 floatingId 6426 }; 6427 if (elements.reference !== void 0) { 6428 valuesToSync.referenceElement = elements.reference; 6429 valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; 6430 } 6431 if (elements.floating !== void 0) { 6432 valuesToSync.floatingElement = elements.floating; 6433 } 6434 store.update(valuesToSync); 6435 }, [open2, floatingId, elements.reference, elements.floating, store]); 6436 store.context.onOpenChange = onOpenChange; 6437 store.context.nested = nested; 6438 return store; 6439 } 6440 6441 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs 6442 var React33 = __toESM(require_react(), 1); 6443 var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit; 6444 function useFocus(store, props = {}) { 6445 const { 6446 enabled = true, 6447 delay 6448 } = props; 6449 const { 6450 events, 6451 dataRef 6452 } = store.context; 6453 const blockFocusRef = React33.useRef(false); 6454 const blockedReferenceRef = React33.useRef(null); 6455 const keyboardModalityRef = React33.useRef(true); 6456 const timeout = useTimeout(); 6457 React33.useEffect(() => { 6458 const domReference = store.select("domReferenceElement"); 6459 if (!enabled) { 6460 return void 0; 6461 } 6462 const win = getWindow(domReference); 6463 function onBlur() { 6464 const currentDomReference = store.select("domReferenceElement"); 6465 if (!store.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { 6466 blockFocusRef.current = true; 6467 blockedReferenceRef.current = currentDomReference; 6468 } 6469 } 6470 function onKeyDown() { 6471 keyboardModalityRef.current = true; 6472 } 6473 function onPointerDown() { 6474 keyboardModalityRef.current = false; 6475 } 6476 return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); 6477 }, [store, enabled]); 6478 React33.useEffect(() => { 6479 if (!enabled) { 6480 return void 0; 6481 } 6482 function onOpenChangeLocal(details) { 6483 if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { 6484 const referenceElement = store.select("domReferenceElement"); 6485 if (isElement(referenceElement)) { 6486 blockedReferenceRef.current = referenceElement; 6487 blockFocusRef.current = true; 6488 } 6489 } 6490 } 6491 events.on("openchange", onOpenChangeLocal); 6492 return () => { 6493 events.off("openchange", onOpenChangeLocal); 6494 }; 6495 }, [events, enabled, store]); 6496 const reference = React33.useMemo(() => { 6497 function resetBlockedFocus() { 6498 blockFocusRef.current = false; 6499 blockedReferenceRef.current = null; 6500 } 6501 return { 6502 onMouseLeave() { 6503 resetBlockedFocus(); 6504 }, 6505 onFocus(event) { 6506 const focusTarget = event.currentTarget; 6507 if (blockFocusRef.current) { 6508 if (blockedReferenceRef.current === focusTarget) { 6509 return; 6510 } 6511 resetBlockedFocus(); 6512 } 6513 const target = getTarget(event.nativeEvent); 6514 if (isElement(target)) { 6515 if (isMacSafari && !event.relatedTarget) { 6516 if (!keyboardModalityRef.current && !isTypeableElement(target)) { 6517 return; 6518 } 6519 } else if (!matchesFocusVisible(target)) { 6520 return; 6521 } 6522 } 6523 const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements); 6524 const { 6525 nativeEvent, 6526 currentTarget 6527 } = event; 6528 if (store.select("open") && movedFromOtherEnabledTrigger || !delay) { 6529 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 6530 return; 6531 } 6532 timeout.start(delay, () => { 6533 if (blockFocusRef.current) { 6534 return; 6535 } 6536 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 6537 }); 6538 }, 6539 onBlur(event) { 6540 resetBlockedFocus(); 6541 const relatedTarget = event.relatedTarget; 6542 const nativeEvent = event.nativeEvent; 6543 const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; 6544 timeout.start(0, () => { 6545 const domReference = store.select("domReferenceElement"); 6546 const activeEl = activeElement(ownerDocument(domReference)); 6547 if (!relatedTarget && activeEl === domReference) { 6548 return; 6549 } 6550 if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { 6551 return; 6552 } 6553 const nextFocusedElement = relatedTarget ?? activeEl; 6554 if (isTargetInsideEnabledTrigger(nextFocusedElement, store.context.triggerElements)) { 6555 return; 6556 } 6557 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); 6558 }); 6559 } 6560 }; 6561 }, [dataRef, delay, store, timeout]); 6562 return React33.useMemo(() => enabled ? { 6563 reference, 6564 trigger: reference 6565 } : {}, [enabled, reference]); 6566 } 6567 6568 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 6569 var React34 = __toESM(require_react(), 1); 6570 6571 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs 6572 var HoverInteraction = class _HoverInteraction { 6573 pointerType = void 0; 6574 interactedInside = false; 6575 handler = void 0; 6576 blockMouseMove = true; 6577 performedPointerEventsMutation = false; 6578 pointerEventsScopeElement = null; 6579 pointerEventsReferenceElement = null; 6580 pointerEventsFloatingElement = null; 6581 restTimeoutPending = false; 6582 openChangeTimeout = new Timeout(); 6583 restTimeout = new Timeout(); 6584 handleCloseOptions = void 0; 6585 static create() { 6586 return new _HoverInteraction(); 6587 } 6588 dispose = () => { 6589 this.openChangeTimeout.clear(); 6590 this.restTimeout.clear(); 6591 }; 6592 disposeEffect = () => { 6593 return this.dispose; 6594 }; 6595 }; 6596 var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); 6597 function clearSafePolygonPointerEventsMutation(instance) { 6598 if (!instance.performedPointerEventsMutation) { 6599 return; 6600 } 6601 const scopeElement = instance.pointerEventsScopeElement; 6602 if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { 6603 instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); 6604 instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); 6605 instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); 6606 pointerEventsMutationOwnerByScopeElement.delete(scopeElement); 6607 } 6608 instance.performedPointerEventsMutation = false; 6609 instance.pointerEventsScopeElement = null; 6610 instance.pointerEventsReferenceElement = null; 6611 instance.pointerEventsFloatingElement = null; 6612 } 6613 function applySafePolygonPointerEventsMutation(instance, options) { 6614 const { 6615 scopeElement, 6616 referenceElement, 6617 floatingElement 6618 } = options; 6619 const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); 6620 if (existingOwner && existingOwner !== instance) { 6621 clearSafePolygonPointerEventsMutation(existingOwner); 6622 } 6623 clearSafePolygonPointerEventsMutation(instance); 6624 instance.performedPointerEventsMutation = true; 6625 instance.pointerEventsScopeElement = scopeElement; 6626 instance.pointerEventsReferenceElement = referenceElement; 6627 instance.pointerEventsFloatingElement = floatingElement; 6628 pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); 6629 scopeElement.style.pointerEvents = "none"; 6630 referenceElement.style.pointerEvents = "auto"; 6631 floatingElement.style.pointerEvents = "auto"; 6632 } 6633 function useHoverInteractionSharedState(store) { 6634 const data = store.context.dataRef.current; 6635 const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; 6636 if (!data.hoverInteractionState) { 6637 data.hoverInteractionState = instance; 6638 } 6639 useOnMount(data.hoverInteractionState.disposeEffect); 6640 return data.hoverInteractionState; 6641 } 6642 6643 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 6644 function useHoverFloatingInteraction(store, parameters = {}) { 6645 const { 6646 enabled = true, 6647 closeDelay: closeDelayProp = 0, 6648 nodeId: nodeIdProp 6649 } = parameters; 6650 const open2 = store.useState("open"); 6651 const floatingElement = store.useState("floatingElement"); 6652 const domReferenceElement = store.useState("domReferenceElement"); 6653 const { 6654 dataRef 6655 } = store.context; 6656 const tree = useFloatingTree(); 6657 const parentId = useFloatingParentNodeId(); 6658 const instance = useHoverInteractionSharedState(store); 6659 const childClosedTimeout = useTimeout(); 6660 const isClickLikeOpenEvent2 = useStableCallback(() => { 6661 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 6662 }); 6663 const isHoverOpen = useStableCallback(() => { 6664 return isHoverOpenEvent(dataRef.current.openEvent?.type); 6665 }); 6666 const clearPointerEvents = useStableCallback(() => { 6667 clearSafePolygonPointerEventsMutation(instance); 6668 }); 6669 useIsoLayoutEffect(() => { 6670 if (!open2) { 6671 instance.pointerType = void 0; 6672 instance.restTimeoutPending = false; 6673 instance.interactedInside = false; 6674 clearPointerEvents(); 6675 } 6676 }, [open2, instance, clearPointerEvents]); 6677 React34.useEffect(() => { 6678 return clearPointerEvents; 6679 }, [clearPointerEvents]); 6680 useIsoLayoutEffect(() => { 6681 if (!enabled) { 6682 return void 0; 6683 } 6684 if (open2 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { 6685 const ref = domReferenceElement; 6686 const floatingEl = floatingElement; 6687 const doc = ownerDocument(floatingElement); 6688 const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; 6689 if (parentFloating) { 6690 parentFloating.style.pointerEvents = ""; 6691 } 6692 const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; 6693 const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; 6694 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? closest(ref, "[data-rootownerid]") ?? doc.body; 6695 applySafePolygonPointerEventsMutation(instance, { 6696 scopeElement, 6697 referenceElement: ref, 6698 floatingElement: floatingEl 6699 }); 6700 return () => { 6701 clearPointerEvents(); 6702 }; 6703 } 6704 return void 0; 6705 }, [enabled, open2, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); 6706 React34.useEffect(() => { 6707 if (!enabled) { 6708 return void 0; 6709 } 6710 function hasParentChildren() { 6711 return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); 6712 } 6713 function closeWithDelay(event) { 6714 const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); 6715 const close = () => { 6716 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6717 tree?.events.emit("floating.closed", event); 6718 }; 6719 if (closeDelay) { 6720 instance.openChangeTimeout.start(closeDelay, close); 6721 } else { 6722 instance.openChangeTimeout.clear(); 6723 close(); 6724 } 6725 } 6726 function handleInteractInside(event) { 6727 const target = getTarget(event); 6728 if (!isInteractiveElement(target)) { 6729 instance.interactedInside = false; 6730 return; 6731 } 6732 instance.interactedInside = closest(target, "[aria-haspopup]") != null; 6733 } 6734 function onFloatingMouseEnter() { 6735 instance.openChangeTimeout.clear(); 6736 childClosedTimeout.clear(); 6737 tree?.events.off("floating.closed", onNodeClosed); 6738 clearPointerEvents(); 6739 } 6740 function onFloatingMouseLeave(event) { 6741 if (hasParentChildren() && tree) { 6742 tree.events.on("floating.closed", onNodeClosed); 6743 return; 6744 } 6745 if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { 6746 return; 6747 } 6748 const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; 6749 const relatedTarget = event.relatedTarget; 6750 const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); 6751 if (isMovingIntoDescendantFloating) { 6752 return; 6753 } 6754 if (instance.handler) { 6755 instance.handler(event); 6756 return; 6757 } 6758 clearPointerEvents(); 6759 if (isHoverOpen() && !isClickLikeOpenEvent2()) { 6760 closeWithDelay(event); 6761 } 6762 } 6763 function onNodeClosed(event) { 6764 if (!tree || !parentId || hasParentChildren()) { 6765 return; 6766 } 6767 childClosedTimeout.start(0, () => { 6768 tree.events.off("floating.closed", onNodeClosed); 6769 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6770 tree.events.emit("floating.closed", event); 6771 }); 6772 } 6773 const floating = floatingElement; 6774 return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { 6775 tree?.events.off("floating.closed", onNodeClosed); 6776 }); 6777 }, [enabled, floatingElement, store, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); 6778 } 6779 6780 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs 6781 var React35 = __toESM(require_react(), 1); 6782 var ReactDOM4 = __toESM(require_react_dom(), 1); 6783 var EMPTY_REF = { 6784 current: null 6785 }; 6786 function useHoverReferenceInteraction(store, props = {}) { 6787 const { 6788 enabled = true, 6789 delay = 0, 6790 handleClose = null, 6791 mouseOnly = false, 6792 restMs = 0, 6793 move = true, 6794 triggerElementRef = EMPTY_REF, 6795 externalTree, 6796 isActiveTrigger = true, 6797 getHandleCloseContext, 6798 isClosing, 6799 shouldOpen: shouldOpenProp, 6800 guardStaleOpen = false 6801 } = props; 6802 const { 6803 dataRef, 6804 events 6805 } = store.context; 6806 const tree = useFloatingTree(externalTree); 6807 const instance = useHoverInteractionSharedState(store); 6808 const isHoverCloseActiveRef = React35.useRef(false); 6809 const handleCloseRef = useValueAsRef(handleClose); 6810 const delayRef = useValueAsRef(delay); 6811 const restMsRef = useValueAsRef(restMs); 6812 const enabledRef = useValueAsRef(enabled); 6813 const shouldOpenRef = useValueAsRef(shouldOpenProp); 6814 const isClosingRef = useValueAsRef(isClosing); 6815 const isClickLikeOpenEvent2 = useStableCallback(() => { 6816 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 6817 }); 6818 const checkShouldOpen = useStableCallback(() => { 6819 return shouldOpenRef.current?.() !== false; 6820 }); 6821 const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { 6822 const allTriggers = store.context.triggerElements; 6823 if (allTriggers.hasElement(currentTarget)) { 6824 return !currentDomReference || !contains(currentDomReference, currentTarget); 6825 } 6826 if (!isElement(target)) { 6827 return false; 6828 } 6829 const targetElement = target; 6830 return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); 6831 }); 6832 const cleanupMouseMoveHandler = useStableCallback(() => { 6833 if (!instance.handler) { 6834 return; 6835 } 6836 const doc = ownerDocument(store.select("domReferenceElement")); 6837 doc.removeEventListener("mousemove", instance.handler); 6838 instance.handler = void 0; 6839 }); 6840 const clearPointerEvents = useStableCallback(() => { 6841 clearSafePolygonPointerEventsMutation(instance); 6842 }); 6843 if (isActiveTrigger) { 6844 instance.handleCloseOptions = handleClose?.__options; 6845 } 6846 React35.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); 6847 React35.useEffect(() => { 6848 if (!enabled) { 6849 return void 0; 6850 } 6851 function onOpenChangeLocal(details) { 6852 if (!details.open) { 6853 isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; 6854 cleanupMouseMoveHandler(); 6855 instance.openChangeTimeout.clear(); 6856 instance.restTimeout.clear(); 6857 instance.blockMouseMove = true; 6858 instance.restTimeoutPending = false; 6859 } else { 6860 isHoverCloseActiveRef.current = false; 6861 } 6862 } 6863 events.on("openchange", onOpenChangeLocal); 6864 return () => { 6865 events.off("openchange", onOpenChangeLocal); 6866 }; 6867 }, [enabled, events, instance, cleanupMouseMoveHandler]); 6868 React35.useEffect(() => { 6869 if (!enabled) { 6870 return void 0; 6871 } 6872 function closeWithDelay(event, runElseBranch = true) { 6873 const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); 6874 if (closeDelay) { 6875 instance.openChangeTimeout.start(closeDelay, () => { 6876 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6877 tree?.events.emit("floating.closed", event); 6878 }); 6879 } else if (runElseBranch) { 6880 instance.openChangeTimeout.clear(); 6881 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6882 tree?.events.emit("floating.closed", event); 6883 } 6884 } 6885 const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select("domReferenceElement") : null); 6886 if (!isElement(trigger)) { 6887 return void 0; 6888 } 6889 function onMouseEnter(event) { 6890 instance.openChangeTimeout.clear(); 6891 instance.blockMouseMove = false; 6892 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 6893 return; 6894 } 6895 const restMsValue = getRestMs(restMsRef.current); 6896 const openDelay = getDelay(delayRef.current, "open", instance.pointerType); 6897 const eventTarget = getTarget(event); 6898 const currentTarget = event.currentTarget ?? null; 6899 const currentDomReference = store.select("domReferenceElement"); 6900 let triggerNode = currentTarget; 6901 if (isElement(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) { 6902 for (const triggerElement of store.context.triggerElements.elements()) { 6903 if (contains(triggerElement, eventTarget)) { 6904 triggerNode = triggerElement; 6905 break; 6906 } 6907 } 6908 } 6909 if (isElement(currentTarget) && isElement(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { 6910 triggerNode = currentDomReference; 6911 } 6912 const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); 6913 const isOpen = store.select("open"); 6914 const isInClosingTransition = isClosingRef.current?.() ?? store.select("transitionStatus") === "ending"; 6915 const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; 6916 const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; 6917 const isRestOnlyDelay = restMsValue > 0 && !openDelay; 6918 const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; 6919 const shouldOpen = !isOpen || isOverInactive; 6920 if (shouldOpenImmediately) { 6921 if (checkShouldOpen()) { 6922 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6923 } 6924 return; 6925 } 6926 if (isRestOnlyDelay) { 6927 return; 6928 } 6929 if (openDelay) { 6930 instance.openChangeTimeout.start(openDelay, () => { 6931 if (shouldOpen && checkShouldOpen()) { 6932 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6933 } 6934 }); 6935 } else if (shouldOpen) { 6936 if (checkShouldOpen()) { 6937 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6938 } 6939 } 6940 } 6941 function onMouseLeave(event) { 6942 if (isClickLikeOpenEvent2()) { 6943 clearPointerEvents(); 6944 return; 6945 } 6946 cleanupMouseMoveHandler(); 6947 const domReferenceElement = store.select("domReferenceElement"); 6948 const doc = ownerDocument(domReferenceElement); 6949 instance.restTimeout.clear(); 6950 instance.restTimeoutPending = false; 6951 const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); 6952 if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { 6953 return; 6954 } 6955 if (handleCloseRef.current && handleCloseContextBase) { 6956 if (!store.select("open")) { 6957 instance.openChangeTimeout.clear(); 6958 } 6959 const currentTrigger = triggerElementRef.current; 6960 instance.handler = handleCloseRef.current({ 6961 ...handleCloseContextBase, 6962 tree, 6963 x: event.clientX, 6964 y: event.clientY, 6965 onClose() { 6966 clearPointerEvents(); 6967 cleanupMouseMoveHandler(); 6968 if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store.select("domReferenceElement")) { 6969 closeWithDelay(event, true); 6970 } 6971 } 6972 }); 6973 doc.addEventListener("mousemove", instance.handler); 6974 instance.handler(event); 6975 return; 6976 } 6977 const shouldClose = instance.pointerType === "touch" ? !contains(store.select("floatingElement"), event.relatedTarget) : true; 6978 if (shouldClose) { 6979 closeWithDelay(event); 6980 } 6981 } 6982 function onMouseOut(event) { 6983 if (contains(trigger, event.relatedTarget)) { 6984 return; 6985 } 6986 instance.openChangeTimeout.clear(); 6987 instance.restTimeout.clear(); 6988 instance.restTimeoutPending = false; 6989 } 6990 const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0; 6991 if (move) { 6992 return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { 6993 once: true 6994 }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 6995 } 6996 return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 6997 }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]); 6998 return React35.useMemo(() => { 6999 if (!enabled) { 7000 return void 0; 7001 } 7002 function setPointerRef(event) { 7003 instance.pointerType = event.pointerType; 7004 } 7005 return { 7006 onPointerDown: setPointerRef, 7007 onPointerEnter: setPointerRef, 7008 onMouseMove(event) { 7009 const { 7010 nativeEvent 7011 } = event; 7012 const trigger = event.currentTarget; 7013 const currentDomReference = store.select("domReferenceElement"); 7014 const currentOpen = store.select("open"); 7015 const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); 7016 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 7017 return; 7018 } 7019 if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { 7020 const floatingElement = store.select("floatingElement"); 7021 if (floatingElement) { 7022 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; 7023 applySafePolygonPointerEventsMutation(instance, { 7024 scopeElement, 7025 referenceElement: trigger, 7026 floatingElement 7027 }); 7028 } 7029 } 7030 const restMsValue = getRestMs(restMsRef.current); 7031 if (currentOpen && !isOverInactive || restMsValue === 0) { 7032 return; 7033 } 7034 if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { 7035 return; 7036 } 7037 instance.restTimeout.clear(); 7038 function handleMouseMove() { 7039 instance.restTimeoutPending = false; 7040 if (isClickLikeOpenEvent2()) { 7041 return; 7042 } 7043 const latestOpen = store.select("open"); 7044 if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { 7045 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); 7046 } 7047 } 7048 if (instance.pointerType === "touch") { 7049 ReactDOM4.flushSync(() => { 7050 handleMouseMove(); 7051 }); 7052 } else if (isOverInactive && currentOpen) { 7053 handleMouseMove(); 7054 } else { 7055 instance.restTimeoutPending = true; 7056 instance.restTimeout.start(restMsValue, handleMouseMove); 7057 } 7058 } 7059 }; 7060 }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store, restMsRef, checkShouldOpen]); 7061 } 7062 7063 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs 7064 var React36 = __toESM(require_react(), 1); 7065 function isStationaryWebKitPointer(event) { 7066 return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0; 7067 } 7068 function doSwitch(orientation, vertical, horizontal) { 7069 switch (orientation) { 7070 case "vertical": 7071 return vertical; 7072 case "horizontal": 7073 return horizontal; 7074 default: 7075 return vertical || horizontal; 7076 } 7077 } 7078 function isMainOrientationKey(key, orientation) { 7079 const vertical = key === ARROW_UP || key === ARROW_DOWN; 7080 const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT; 7081 return doSwitch(orientation, vertical, horizontal); 7082 } 7083 function isMainOrientationToEndKey(key, orientation, rtl) { 7084 const vertical = key === ARROW_DOWN; 7085 const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 7086 return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === ""; 7087 } 7088 function isCrossOrientationOpenKey(key, orientation, rtl) { 7089 const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 7090 const horizontal = key === ARROW_DOWN; 7091 return doSwitch(orientation, vertical, horizontal); 7092 } 7093 function isCrossOrientationCloseKey(key, orientation, rtl, grid) { 7094 const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT; 7095 const horizontal = key === ARROW_UP; 7096 if (orientation === "both" || orientation === "horizontal" && grid) { 7097 return key === "Escape"; 7098 } 7099 return doSwitch(orientation, vertical, horizontal); 7100 } 7101 function useListNavigation(store, props) { 7102 const { 7103 listRef, 7104 activeIndex, 7105 onNavigate: onNavigateProp = () => { 7106 }, 7107 enabled = true, 7108 selectedIndex = null, 7109 allowEscape = false, 7110 loopFocus = false, 7111 nested = false, 7112 rtl = false, 7113 virtual = false, 7114 focusItemOnOpen = "auto", 7115 focusItemOnHover = true, 7116 openOnArrowKeyDown = true, 7117 disabledIndices = void 0, 7118 orientation = "vertical", 7119 triggerOrientation = orientation, 7120 parentOrientation, 7121 id, 7122 resetOnPointerLeave = true, 7123 externalTree, 7124 nestedReturnFocusRef, 7125 grid: navigateGrid 7126 } = props; 7127 const isGrid = navigateGrid != null; 7128 if (true) { 7129 if (allowEscape) { 7130 if (!loopFocus) { 7131 console.warn("`useListNavigation` looping must be enabled to allow escaping."); 7132 } 7133 if (!virtual) { 7134 console.warn("`useListNavigation` must be virtual to allow escaping."); 7135 } 7136 } 7137 if (orientation === "vertical" && isGrid) { 7138 console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".'); 7139 } 7140 } 7141 const open2 = store.useState("open"); 7142 const floatingElement = store.useState("floatingElement"); 7143 const domReferenceElement = store.useState("domReferenceElement"); 7144 const dataRef = store.context.dataRef; 7145 const floatingFocusElement = getFloatingFocusElement(floatingElement); 7146 const typeableComboboxReference = isTypeableCombobox(domReferenceElement); 7147 const floatingFocusElementRef = useValueAsRef(floatingFocusElement); 7148 const parentId = useFloatingParentNodeId(); 7149 const tree = useFloatingTree(externalTree); 7150 const focusItemOnOpenRef = React36.useRef(focusItemOnOpen); 7151 const indexRef = React36.useRef(selectedIndex ?? -1); 7152 const keyRef = React36.useRef(null); 7153 const isPointerModalityRef = React36.useRef(true); 7154 const onNavigate = useStableCallback((event) => { 7155 onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event); 7156 }); 7157 const previousMountedRef = React36.useRef(!!floatingElement); 7158 const previousOpenRef = React36.useRef(open2); 7159 const forceSyncFocusRef = React36.useRef(false); 7160 const forceScrollIntoViewRef = React36.useRef(false); 7161 const cancelQueuedFocusRef = React36.useRef(null); 7162 const disabledIndicesRef = useValueAsRef(disabledIndices); 7163 const latestOpenRef = useValueAsRef(open2); 7164 const selectedIndexRef = useValueAsRef(selectedIndex); 7165 const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave); 7166 const focusFrame = useAnimationFrame(); 7167 const waitForListPopulatedFrame = useAnimationFrame(); 7168 const focusItem = useStableCallback(() => { 7169 focusFrame.cancel(); 7170 function runFocus(item2) { 7171 if (!virtual) { 7172 cancelQueuedFocusRef.current = enqueueFocus(item2, { 7173 sync: forceSyncFocusRef.current, 7174 preventScroll: true 7175 }); 7176 } 7177 } 7178 const initialItem = listRef.current[indexRef.current]; 7179 const forceScrollIntoView = forceScrollIntoViewRef.current; 7180 if (initialItem) { 7181 runFocus(initialItem); 7182 } 7183 const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback); 7184 scheduler2(() => { 7185 const waitedItem = listRef.current[indexRef.current] || initialItem; 7186 if (!waitedItem) { 7187 return; 7188 } 7189 if (!initialItem) { 7190 runFocus(waitedItem); 7191 } 7192 const shouldScrollIntoView = ( 7193 // eslint-disable-next-line @typescript-eslint/no-use-before-define 7194 item && (forceScrollIntoView || !isPointerModalityRef.current) 7195 ); 7196 if (shouldScrollIntoView) { 7197 waitedItem.scrollIntoView?.({ 7198 block: "nearest", 7199 inline: "nearest" 7200 }); 7201 } 7202 }); 7203 }); 7204 useIsoLayoutEffect(() => { 7205 dataRef.current.orientation = orientation; 7206 }, [dataRef, orientation]); 7207 useIsoLayoutEffect(() => { 7208 if (!open2) { 7209 keyRef.current = null; 7210 } 7211 if (!open2 || focusItemOnOpen !== "auto") { 7212 focusItemOnOpenRef.current = focusItemOnOpen; 7213 } 7214 }, [open2, focusItemOnOpen]); 7215 useIsoLayoutEffect(() => { 7216 if (!enabled) { 7217 return; 7218 } 7219 if (open2 && floatingElement) { 7220 indexRef.current = selectedIndex ?? -1; 7221 if (focusItemOnOpenRef.current && selectedIndex != null) { 7222 forceScrollIntoViewRef.current = true; 7223 onNavigate(); 7224 } 7225 } else if (previousMountedRef.current) { 7226 indexRef.current = -1; 7227 onNavigate(); 7228 } 7229 }, [enabled, open2, floatingElement, selectedIndex, onNavigate]); 7230 useIsoLayoutEffect(() => { 7231 if (!enabled) { 7232 return; 7233 } 7234 if (!open2) { 7235 forceSyncFocusRef.current = false; 7236 return; 7237 } 7238 if (!floatingElement) { 7239 return; 7240 } 7241 if (activeIndex == null) { 7242 forceSyncFocusRef.current = false; 7243 if (selectedIndexRef.current != null) { 7244 return; 7245 } 7246 if (previousMountedRef.current) { 7247 indexRef.current = -1; 7248 focusItem(); 7249 } 7250 if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) { 7251 let runs = 0; 7252 const waitForListPopulated = () => { 7253 if (listRef.current[0] == null) { 7254 if (runs < 2) { 7255 const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask; 7256 scheduler2(waitForListPopulated); 7257 } 7258 runs += 1; 7259 } else { 7260 indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, triggerOrientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef); 7261 keyRef.current = null; 7262 onNavigate(); 7263 } 7264 }; 7265 waitForListPopulated(); 7266 } 7267 } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) { 7268 indexRef.current = activeIndex; 7269 focusItem(); 7270 forceScrollIntoViewRef.current = false; 7271 } 7272 }, [enabled, open2, floatingElement, activeIndex, selectedIndexRef, nested, listRef, triggerOrientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]); 7273 useIsoLayoutEffect(() => { 7274 if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) { 7275 return; 7276 } 7277 const nodes = tree.nodesRef.current; 7278 const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating; 7279 const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null)); 7280 const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl)); 7281 if (parent && !treeContainsActiveEl && isPointerModalityRef.current) { 7282 parent.focus({ 7283 preventScroll: true 7284 }); 7285 } 7286 }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]); 7287 useIsoLayoutEffect(() => { 7288 previousOpenRef.current = open2; 7289 previousMountedRef.current = !!floatingElement; 7290 }); 7291 const hasActiveIndex = activeIndex != null; 7292 const syncCurrentTarget = useStableCallback((event) => { 7293 if (!latestOpenRef.current) { 7294 return; 7295 } 7296 const index2 = listRef.current.indexOf(event.currentTarget); 7297 if (index2 !== -1 && (indexRef.current !== index2 || activeIndex !== index2)) { 7298 indexRef.current = index2; 7299 onNavigate(event); 7300 } 7301 }); 7302 const getParentOrientation = useStableCallback(() => { 7303 return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation; 7304 }); 7305 const getMinEnabledIndex = useStableCallback(() => { 7306 return getMinListIndex(listRef, disabledIndicesRef.current); 7307 }); 7308 const commonOnKeyDown = useStableCallback((event) => { 7309 isPointerModalityRef.current = false; 7310 forceSyncFocusRef.current = true; 7311 if (event.which === 229) { 7312 return; 7313 } 7314 if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) { 7315 return; 7316 } 7317 if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) { 7318 if (!isMainOrientationKey(event.key, getParentOrientation())) { 7319 stopEvent(event); 7320 } 7321 store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 7322 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 7323 if (isHTMLElement(returnElement)) { 7324 returnElement.focus(); 7325 } 7326 return; 7327 } 7328 if (activeIndex != null && activeIndex !== indexRef.current && !isIndexOutOfListBounds(listRef.current, activeIndex)) { 7329 indexRef.current = activeIndex; 7330 } 7331 const currentIndex = indexRef.current; 7332 const minIndex = getMinListIndex(listRef, disabledIndices); 7333 const maxIndex = getMaxListIndex(listRef, disabledIndices); 7334 if (!typeableComboboxReference) { 7335 if (event.key === "Home") { 7336 stopEvent(event); 7337 indexRef.current = minIndex; 7338 onNavigate(event); 7339 } 7340 if (event.key === "End") { 7341 stopEvent(event); 7342 indexRef.current = maxIndex; 7343 onNavigate(event); 7344 } 7345 } 7346 if (navigateGrid != null) { 7347 const index2 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex); 7348 if (index2 != null && index2 !== indexRef.current) { 7349 indexRef.current = index2; 7350 onNavigate(event); 7351 } 7352 if (orientation === "both") { 7353 return; 7354 } 7355 } 7356 if (isMainOrientationKey(event.key, orientation)) { 7357 stopEvent(event); 7358 const focusedElement = activeElement(event.currentTarget.ownerDocument); 7359 if (open2 && !virtual && contains(event.currentTarget, focusedElement) && !listRef.current.some((item2) => item2 != null && contains(item2, focusedElement))) { 7360 indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex; 7361 onNavigate(event); 7362 if (activeIndex === indexRef.current) { 7363 focusItem(); 7364 } 7365 return; 7366 } 7367 const { 7368 index: index2, 7369 wrapped 7370 } = getNextListIndex(listRef.current, currentIndex, { 7371 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 7372 loopFocus, 7373 allowEscape, 7374 disabledIndices, 7375 minIndex, 7376 maxIndex 7377 }); 7378 if (wrapped) { 7379 forceSyncFocusRef.current = false; 7380 } 7381 indexRef.current = index2; 7382 onNavigate(event); 7383 } 7384 }); 7385 const item = React36.useMemo(() => { 7386 const itemProps = { 7387 onFocus(event) { 7388 forceSyncFocusRef.current = true; 7389 syncCurrentTarget(event); 7390 }, 7391 onClick({ 7392 currentTarget 7393 }) { 7394 if (!virtual) { 7395 currentTarget.focus({ 7396 preventScroll: true 7397 }); 7398 } 7399 }, 7400 onMouseMove(event) { 7401 if (isStationaryWebKitPointer(event)) { 7402 return; 7403 } 7404 forceSyncFocusRef.current = true; 7405 forceScrollIntoViewRef.current = false; 7406 if (focusItemOnHover) { 7407 syncCurrentTarget(event); 7408 } 7409 }, 7410 onPointerLeave(event) { 7411 if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") { 7412 return; 7413 } 7414 forceSyncFocusRef.current = true; 7415 const relatedTarget = event.relatedTarget; 7416 if (!focusItemOnHover || listRef.current.includes(relatedTarget)) { 7417 return; 7418 } 7419 if (!resetOnPointerLeaveRef.current) { 7420 return; 7421 } 7422 cancelQueuedFocusRef.current?.(); 7423 cancelQueuedFocusRef.current = null; 7424 indexRef.current = -1; 7425 onNavigate(event); 7426 if (!virtual) { 7427 const floatingFocusEl = floatingFocusElementRef.current; 7428 const activeEl = activeElement(ownerDocument(floatingFocusEl)); 7429 if (floatingFocusEl && contains(floatingFocusEl, activeEl)) { 7430 floatingFocusEl.focus({ 7431 preventScroll: true 7432 }); 7433 } 7434 } 7435 } 7436 }; 7437 return itemProps; 7438 }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]); 7439 const ariaActiveDescendantProp = React36.useMemo(() => { 7440 return virtual && open2 && hasActiveIndex && { 7441 "aria-activedescendant": `$id}-$activeIndex}` 7442 }; 7443 }, [virtual, open2, hasActiveIndex, id, activeIndex]); 7444 const floating = React36.useMemo(() => { 7445 return { 7446 ...!typeableComboboxReference ? ariaActiveDescendantProp : {}, 7447 onKeyDown(event) { 7448 if (event.key === "Tab" && event.shiftKey && open2 && !virtual) { 7449 const target = getTarget(event.nativeEvent); 7450 if (target && !contains(floatingFocusElementRef.current, target)) { 7451 return; 7452 } 7453 stopEvent(event); 7454 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 7455 store.setOpen(false, details); 7456 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 7457 if (!details.isCanceled && isHTMLElement(returnElement)) { 7458 returnElement.focus(); 7459 } 7460 return; 7461 } 7462 commonOnKeyDown(event); 7463 }, 7464 onPointerMove(event) { 7465 if (isStationaryWebKitPointer(event)) { 7466 return; 7467 } 7468 isPointerModalityRef.current = true; 7469 } 7470 }; 7471 }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store, open2, virtual, domReferenceElement, nestedReturnFocusRef]); 7472 const trigger = React36.useMemo(() => { 7473 function openOnNavigationKeyDown(event) { 7474 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 7475 } 7476 function checkVirtualMouse(event) { 7477 if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) { 7478 focusItemOnOpenRef.current = !virtual; 7479 } 7480 } 7481 function checkVirtualPointer(event) { 7482 focusItemOnOpenRef.current = focusItemOnOpen; 7483 if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) { 7484 focusItemOnOpenRef.current = true; 7485 } 7486 } 7487 return { 7488 onKeyDown(event) { 7489 const currentOpen = store.select("open"); 7490 isPointerModalityRef.current = false; 7491 const isArrowKey = event.key.startsWith("Arrow"); 7492 const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl); 7493 const isMainKey = isMainOrientationKey(event.key, currentOpen ? orientation : triggerOrientation); 7494 const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === ""; 7495 if (virtual && currentOpen && (!nested || isTypeableElement(event.currentTarget))) { 7496 return commonOnKeyDown(event); 7497 } 7498 if (!currentOpen && !openOnArrowKeyDown && isArrowKey) { 7499 return void 0; 7500 } 7501 if (isNavigationKey) { 7502 const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation()); 7503 keyRef.current = nested && isParentMainKey ? null : event.key; 7504 } 7505 if (nested) { 7506 if (isParentCrossOpenKey) { 7507 stopEvent(event); 7508 if (currentOpen) { 7509 indexRef.current = getMinEnabledIndex(); 7510 onNavigate(event); 7511 if (virtual) { 7512 floatingFocusElementRef.current?.focus(); 7513 } 7514 } else { 7515 openOnNavigationKeyDown(event); 7516 } 7517 } 7518 return void 0; 7519 } 7520 if (isMainKey) { 7521 if (selectedIndexRef.current != null) { 7522 indexRef.current = selectedIndexRef.current; 7523 } 7524 stopEvent(event); 7525 if (!currentOpen && openOnArrowKeyDown) { 7526 openOnNavigationKeyDown(event); 7527 } else { 7528 commonOnKeyDown(event); 7529 } 7530 if (currentOpen) { 7531 onNavigate(event); 7532 } 7533 } 7534 return void 0; 7535 }, 7536 onFocus(event) { 7537 if (event.target !== event.currentTarget) { 7538 return; 7539 } 7540 if (store.select("open") && !virtual) { 7541 indexRef.current = -1; 7542 onNavigate(event); 7543 } 7544 }, 7545 onPointerDown: checkVirtualPointer, 7546 onPointerEnter: checkVirtualPointer, 7547 onMouseDown: checkVirtualMouse, 7548 onClick: checkVirtualMouse 7549 }; 7550 }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, triggerOrientation, getParentOrientation, rtl, selectedIndexRef, virtual, floatingFocusElementRef]); 7551 const reference = React36.useMemo(() => { 7552 return { 7553 ...ariaActiveDescendantProp, 7554 ...trigger 7555 }; 7556 }, [ariaActiveDescendantProp, trigger]); 7557 return React36.useMemo(() => enabled ? { 7558 reference, 7559 floating, 7560 item, 7561 trigger 7562 } : {}, [enabled, reference, floating, trigger, item]); 7563 } 7564 7565 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs 7566 var React37 = __toESM(require_react(), 1); 7567 function useTypeahead(store, props) { 7568 const { 7569 listRef, 7570 elementsRef, 7571 activeIndex, 7572 onMatch: onMatchProp, 7573 disabledIndices, 7574 onTyping: onTypingProp, 7575 enabled = true, 7576 resetMs = 750, 7577 selectedIndex = null 7578 } = props; 7579 const onTyping = useStableCallback(onTypingProp); 7580 const open2 = store.useState("open"); 7581 const timeout = useTimeout(); 7582 const stringRef = React37.useRef(""); 7583 const prevIndexRef = React37.useRef(selectedIndex ?? activeIndex ?? -1); 7584 const matchIndexRef = React37.useRef(null); 7585 const onKeyDown = useStableCallback((event) => { 7586 function getElement(index3) { 7587 return elementsRef?.current[index3]; 7588 } 7589 function isItemAvailable(index3) { 7590 const element = getElement(index3); 7591 if (element && !isElementVisible(element) || element?.matches(":disabled")) { 7592 return false; 7593 } 7594 return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index3, disabledIndices); 7595 } 7596 function getMatchingIndex(list, string, startIndex2 = 0) { 7597 if (list.length === 0) { 7598 return -1; 7599 } 7600 const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length; 7601 const lowerString = string.toLowerCase(); 7602 for (let offset4 = 0; offset4 < list.length; offset4 += 1) { 7603 const index3 = (normalizedStartIndex + offset4) % list.length; 7604 const text = list[index3]; 7605 if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index3)) { 7606 continue; 7607 } 7608 return index3; 7609 } 7610 return -1; 7611 } 7612 const listContent = listRef.current; 7613 if (stringRef.current.length > 0 && event.key === " ") { 7614 stopEvent(event); 7615 onTyping?.(true); 7616 } 7617 if (stringRef.current.length > 0 && stringRef.current[0] !== " ") { 7618 if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") { 7619 onTyping?.(false); 7620 } 7621 } 7622 if (listContent == null || // Character key. 7623 event.key.length !== 1 || // Modifier key. 7624 event.ctrlKey || event.metaKey || event.altKey) { 7625 return; 7626 } 7627 if (open2 && event.key !== " ") { 7628 stopEvent(event); 7629 onTyping?.(true); 7630 } 7631 const isNewSession = stringRef.current === ""; 7632 if (isNewSession) { 7633 prevIndexRef.current = selectedIndex ?? activeIndex ?? -1; 7634 } 7635 const allowRapidSuccessionOfFirstLetter = listContent.every((text, index3) => text && isItemAvailable(index3) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true); 7636 if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) { 7637 stringRef.current = ""; 7638 prevIndexRef.current = matchIndexRef.current; 7639 } 7640 stringRef.current += event.key; 7641 timeout.start(resetMs, () => { 7642 stringRef.current = ""; 7643 prevIndexRef.current = matchIndexRef.current; 7644 onTyping?.(false); 7645 }); 7646 const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current; 7647 const startIndex = (prevIndex ?? 0) + 1; 7648 const index2 = getMatchingIndex(listContent, stringRef.current, startIndex); 7649 if (index2 !== -1) { 7650 onMatchProp?.(index2, event); 7651 matchIndexRef.current = index2; 7652 } else if (event.key !== " ") { 7653 stringRef.current = ""; 7654 onTyping?.(false); 7655 } 7656 }); 7657 const onBlur = useStableCallback((event) => { 7658 const next = event.relatedTarget; 7659 const currentDomReferenceElement = store.select("domReferenceElement"); 7660 const currentFloatingElement = store.select("floatingElement"); 7661 const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next); 7662 if (withinComposite) { 7663 return; 7664 } 7665 timeout.clear(); 7666 stringRef.current = ""; 7667 prevIndexRef.current = matchIndexRef.current; 7668 onTyping?.(false); 7669 }); 7670 useIsoLayoutEffect(() => { 7671 if (!open2 && selectedIndex !== null) { 7672 return; 7673 } 7674 timeout.clear(); 7675 matchIndexRef.current = null; 7676 if (stringRef.current !== "") { 7677 stringRef.current = ""; 7678 onTyping?.(false); 7679 } 7680 }, [open2, selectedIndex, timeout, onTyping]); 7681 const sharedProps = React37.useMemo(() => ({ 7682 onKeyDown, 7683 onBlur 7684 }), [onKeyDown, onBlur]); 7685 return React37.useMemo(() => enabled ? { 7686 reference: sharedProps, 7687 floating: sharedProps 7688 } : {}, [enabled, sharedProps]); 7689 } 7690 7691 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs 7692 var CURSOR_SPEED_THRESHOLD = 0.1; 7693 var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; 7694 var POLYGON_BUFFER = 0.5; 7695 function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { 7696 return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; 7697 } 7698 function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { 7699 let isInsideValue = false; 7700 if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { 7701 isInsideValue = !isInsideValue; 7702 } 7703 if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { 7704 isInsideValue = !isInsideValue; 7705 } 7706 if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { 7707 isInsideValue = !isInsideValue; 7708 } 7709 if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { 7710 isInsideValue = !isInsideValue; 7711 } 7712 return isInsideValue; 7713 } 7714 function isInsideRect(pointX, pointY, rect) { 7715 return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; 7716 } 7717 function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { 7718 const minX = Math.min(x1, x2); 7719 const maxX = Math.max(x1, x2); 7720 const minY = Math.min(y1, y2); 7721 const maxY = Math.max(y1, y2); 7722 return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; 7723 } 7724 function safePolygon(options = {}) { 7725 const { 7726 blockPointerEvents = false 7727 } = options; 7728 const timeout = new Timeout(); 7729 const fn = ({ 7730 x, 7731 y, 7732 placement, 7733 elements, 7734 onClose, 7735 nodeId, 7736 tree 7737 }) => { 7738 const side = placement?.split("-")[0]; 7739 let hasLanded = false; 7740 let lastX = null; 7741 let lastY = null; 7742 let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; 7743 function isCursorMovingSlowly(nextX, nextY) { 7744 const currentTime = performance.now(); 7745 const elapsedTime = currentTime - lastCursorTime; 7746 if (lastX === null || lastY === null || elapsedTime === 0) { 7747 lastX = nextX; 7748 lastY = nextY; 7749 lastCursorTime = currentTime; 7750 return false; 7751 } 7752 const deltaX = nextX - lastX; 7753 const deltaY = nextY - lastY; 7754 const distanceSquared = deltaX * deltaX + deltaY * deltaY; 7755 const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; 7756 lastX = nextX; 7757 lastY = nextY; 7758 lastCursorTime = currentTime; 7759 return distanceSquared < thresholdSquared; 7760 } 7761 function close() { 7762 timeout.clear(); 7763 onClose(); 7764 } 7765 return function onMouseMove(event) { 7766 timeout.clear(); 7767 const domReference = elements.domReference; 7768 const floating = elements.floating; 7769 if (!domReference || !floating || side == null || x == null || y == null) { 7770 return void 0; 7771 } 7772 const { 7773 clientX, 7774 clientY 7775 } = event; 7776 const target = getTarget(event); 7777 const isLeave = event.type === "mouseleave"; 7778 const isOverFloatingEl = contains(floating, target); 7779 const isOverReferenceEl = contains(domReference, target); 7780 if (isOverFloatingEl) { 7781 hasLanded = true; 7782 if (!isLeave) { 7783 return void 0; 7784 } 7785 } 7786 if (isOverReferenceEl) { 7787 hasLanded = false; 7788 if (!isLeave) { 7789 hasLanded = true; 7790 return void 0; 7791 } 7792 } 7793 if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { 7794 return void 0; 7795 } 7796 function hasOpenChildNode() { 7797 return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); 7798 } 7799 function closeIfNoOpenChild() { 7800 if (!hasOpenChildNode()) { 7801 close(); 7802 } 7803 } 7804 if (hasOpenChildNode()) { 7805 return void 0; 7806 } 7807 const refRect = domReference.getBoundingClientRect(); 7808 const rect = floating.getBoundingClientRect(); 7809 const cursorLeaveFromRight = x > rect.right - rect.width / 2; 7810 const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2; 7811 const isFloatingWider = rect.width > refRect.width; 7812 const isFloatingTaller = rect.height > refRect.height; 7813 const left = (isFloatingWider ? refRect : rect).left; 7814 const right = (isFloatingWider ? refRect : rect).right; 7815 const top = (isFloatingTaller ? refRect : rect).top; 7816 const bottom = (isFloatingTaller ? refRect : rect).bottom; 7817 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) { 7818 closeIfNoOpenChild(); 7819 return void 0; 7820 } 7821 let isInsideTroughRect = false; 7822 switch (side) { 7823 case "top": 7824 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); 7825 break; 7826 case "bottom": 7827 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); 7828 break; 7829 case "left": 7830 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); 7831 break; 7832 case "right": 7833 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); 7834 break; 7835 default: 7836 } 7837 if (isInsideTroughRect) { 7838 return void 0; 7839 } 7840 if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { 7841 closeIfNoOpenChild(); 7842 return void 0; 7843 } 7844 if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { 7845 closeIfNoOpenChild(); 7846 return void 0; 7847 } 7848 let isInsidePolygon = false; 7849 switch (side) { 7850 case "top": { 7851 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7852 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 7853 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 7854 const cursorPointY = y + POLYGON_BUFFER + 1; 7855 const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; 7856 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; 7857 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 7858 break; 7859 } 7860 case "bottom": { 7861 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7862 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 7863 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 7864 const cursorPointY = y - POLYGON_BUFFER; 7865 const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; 7866 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; 7867 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 7868 break; 7869 } 7870 case "left": { 7871 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7872 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 7873 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 7874 const cursorPointX = x + POLYGON_BUFFER + 1; 7875 const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; 7876 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; 7877 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); 7878 break; 7879 } 7880 case "right": { 7881 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7882 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 7883 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 7884 const cursorPointX = x - POLYGON_BUFFER; 7885 const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; 7886 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; 7887 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); 7888 break; 7889 } 7890 default: 7891 } 7892 if (!isInsidePolygon) { 7893 closeIfNoOpenChild(); 7894 } else if (!hasLanded) { 7895 timeout.start(40, closeIfNoOpenChild); 7896 } 7897 return void 0; 7898 }; 7899 }; 7900 fn.__options = { 7901 ...options, 7902 blockPointerEvents 7903 }; 7904 return fn; 7905 } 7906 7907 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 7908 function computeCoordsFromPlacement(_ref, placement, rtl) { 7909 let { 7910 reference, 7911 floating 7912 } = _ref; 7913 const sideAxis = getSideAxis(placement); 7914 const alignmentAxis = getAlignmentAxis(placement); 7915 const alignLength = getAxisLength(alignmentAxis); 7916 const side = getSide(placement); 7917 const isVertical = sideAxis === "y"; 7918 const commonX = reference.x + reference.width / 2 - floating.width / 2; 7919 const commonY = reference.y + reference.height / 2 - floating.height / 2; 7920 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 7921 let coords; 7922 switch (side) { 7923 case "top": 7924 coords = { 7925 x: commonX, 7926 y: reference.y - floating.height 7927 }; 7928 break; 7929 case "bottom": 7930 coords = { 7931 x: commonX, 7932 y: reference.y + reference.height 7933 }; 7934 break; 7935 case "right": 7936 coords = { 7937 x: reference.x + reference.width, 7938 y: commonY 7939 }; 7940 break; 7941 case "left": 7942 coords = { 7943 x: reference.x - floating.width, 7944 y: commonY 7945 }; 7946 break; 7947 default: 7948 coords = { 7949 x: reference.x, 7950 y: reference.y 7951 }; 7952 } 7953 const alignment = getAlignment(placement); 7954 if (alignment) { 7955 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 7956 } 7957 return coords; 7958 } 7959 async function detectOverflow(state, options) { 7960 var _await$platform$isEle; 7961 if (options === void 0) { 7962 options = {}; 7963 } 7964 const { 7965 x, 7966 y, 7967 platform: platform3, 7968 rects, 7969 elements, 7970 strategy 7971 } = state; 7972 const { 7973 boundary = "clippingAncestors", 7974 rootBoundary = "viewport", 7975 elementContext = "floating", 7976 altBoundary = false, 7977 padding = 0 7978 } = evaluate(options, state); 7979 const paddingObject = getPaddingObject(padding); 7980 const altContext = elementContext === "floating" ? "reference" : "floating"; 7981 const element = elements[altBoundary ? altContext : elementContext]; 7982 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 7983 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)), 7984 boundary, 7985 rootBoundary, 7986 strategy 7987 })); 7988 const rect = elementContext === "floating" ? { 7989 x, 7990 y, 7991 width: rects.floating.width, 7992 height: rects.floating.height 7993 } : rects.reference; 7994 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 7995 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 7996 x: 1, 7997 y: 1 7998 }; 7999 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 8000 elements, 8001 rect, 8002 offsetParent, 8003 strategy 8004 }) : rect); 8005 return { 8006 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 8007 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 8008 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 8009 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 8010 }; 8011 } 8012 var MAX_RESET_COUNT = 50; 8013 var computePosition = async (reference, floating, config) => { 8014 const { 8015 placement = "bottom", 8016 strategy = "absolute", 8017 middleware = [], 8018 platform: platform3 8019 } = config; 8020 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 8021 ...platform3, 8022 detectOverflow 8023 }; 8024 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 8025 let rects = await platform3.getElementRects({ 8026 reference, 8027 floating, 8028 strategy 8029 }); 8030 let { 8031 x, 8032 y 8033 } = computeCoordsFromPlacement(rects, placement, rtl); 8034 let statefulPlacement = placement; 8035 let resetCount = 0; 8036 const middlewareData = {}; 8037 for (let i = 0; i < middleware.length; i++) { 8038 const currentMiddleware = middleware[i]; 8039 if (!currentMiddleware) { 8040 continue; 8041 } 8042 const { 8043 name, 8044 fn 8045 } = currentMiddleware; 8046 const { 8047 x: nextX, 8048 y: nextY, 8049 data, 8050 reset 8051 } = await fn({ 8052 x, 8053 y, 8054 initialPlacement: placement, 8055 placement: statefulPlacement, 8056 strategy, 8057 middlewareData, 8058 rects, 8059 platform: platformWithDetectOverflow, 8060 elements: { 8061 reference, 8062 floating 8063 } 8064 }); 8065 x = nextX != null ? nextX : x; 8066 y = nextY != null ? nextY : y; 8067 middlewareData[name] = { 8068 ...middlewareData[name], 8069 ...data 8070 }; 8071 if (reset && resetCount < MAX_RESET_COUNT) { 8072 resetCount++; 8073 if (typeof reset === "object") { 8074 if (reset.placement) { 8075 statefulPlacement = reset.placement; 8076 } 8077 if (reset.rects) { 8078 rects = reset.rects === true ? await platform3.getElementRects({ 8079 reference, 8080 floating, 8081 strategy 8082 }) : reset.rects; 8083 } 8084 ({ 8085 x, 8086 y 8087 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 8088 } 8089 i = -1; 8090 } 8091 } 8092 return { 8093 x, 8094 y, 8095 placement: statefulPlacement, 8096 strategy, 8097 middlewareData 8098 }; 8099 }; 8100 var flip = function(options) { 8101 if (options === void 0) { 8102 options = {}; 8103 } 8104 return { 8105 name: "flip", 8106 options, 8107 async fn(state) { 8108 var _middlewareData$arrow, _middlewareData$flip; 8109 const { 8110 placement, 8111 middlewareData, 8112 rects, 8113 initialPlacement, 8114 platform: platform3, 8115 elements 8116 } = state; 8117 const { 8118 mainAxis: checkMainAxis = true, 8119 crossAxis: checkCrossAxis = true, 8120 fallbackPlacements: specifiedFallbackPlacements, 8121 fallbackStrategy = "bestFit", 8122 fallbackAxisSideDirection = "none", 8123 flipAlignment = true, 8124 ...detectOverflowOptions 8125 } = evaluate(options, state); 8126 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 8127 return {}; 8128 } 8129 const side = getSide(placement); 8130 const initialSideAxis = getSideAxis(initialPlacement); 8131 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 8132 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 8133 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 8134 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 8135 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 8136 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 8137 } 8138 const placements2 = [initialPlacement, ...fallbackPlacements]; 8139 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8140 const overflows = []; 8141 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 8142 if (checkMainAxis) { 8143 overflows.push(overflow[side]); 8144 } 8145 if (checkCrossAxis) { 8146 const sides2 = getAlignmentSides(placement, rects, rtl); 8147 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 8148 } 8149 overflowsData = [...overflowsData, { 8150 placement, 8151 overflows 8152 }]; 8153 if (!overflows.every((side2) => side2 <= 0)) { 8154 var _middlewareData$flip2, _overflowsData$filter; 8155 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 8156 const nextPlacement = placements2[nextIndex]; 8157 if (nextPlacement) { 8158 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 8159 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 8160 // overflows the main axis. 8161 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 8162 return { 8163 data: { 8164 index: nextIndex, 8165 overflows: overflowsData 8166 }, 8167 reset: { 8168 placement: nextPlacement 8169 } 8170 }; 8171 } 8172 } 8173 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; 8174 if (!resetPlacement) { 8175 switch (fallbackStrategy) { 8176 case "bestFit": { 8177 var _overflowsData$filter2; 8178 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 8179 if (hasFallbackAxisSideDirection) { 8180 const currentSideAxis = getSideAxis(d.placement); 8181 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 8182 // reading directions favoring greater width. 8183 currentSideAxis === "y"; 8184 } 8185 return true; 8186 }).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]; 8187 if (placement2) { 8188 resetPlacement = placement2; 8189 } 8190 break; 8191 } 8192 case "initialPlacement": 8193 resetPlacement = initialPlacement; 8194 break; 8195 } 8196 } 8197 if (placement !== resetPlacement) { 8198 return { 8199 reset: { 8200 placement: resetPlacement 8201 } 8202 }; 8203 } 8204 } 8205 return {}; 8206 } 8207 }; 8208 }; 8209 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 8210 async function convertValueToCoords(state, options) { 8211 const { 8212 placement, 8213 platform: platform3, 8214 elements 8215 } = state; 8216 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 8217 const side = getSide(placement); 8218 const alignment = getAlignment(placement); 8219 const isVertical = getSideAxis(placement) === "y"; 8220 const mainAxisMulti = originSides.has(side) ? -1 : 1; 8221 const crossAxisMulti = rtl && isVertical ? -1 : 1; 8222 const rawValue = evaluate(options, state); 8223 let { 8224 mainAxis, 8225 crossAxis, 8226 alignmentAxis 8227 } = typeof rawValue === "number" ? { 8228 mainAxis: rawValue, 8229 crossAxis: 0, 8230 alignmentAxis: null 8231 } : { 8232 mainAxis: rawValue.mainAxis || 0, 8233 crossAxis: rawValue.crossAxis || 0, 8234 alignmentAxis: rawValue.alignmentAxis 8235 }; 8236 if (alignment && typeof alignmentAxis === "number") { 8237 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 8238 } 8239 return isVertical ? { 8240 x: crossAxis * crossAxisMulti, 8241 y: mainAxis * mainAxisMulti 8242 } : { 8243 x: mainAxis * mainAxisMulti, 8244 y: crossAxis * crossAxisMulti 8245 }; 8246 } 8247 var offset = function(options) { 8248 if (options === void 0) { 8249 options = 0; 8250 } 8251 return { 8252 name: "offset", 8253 options, 8254 async fn(state) { 8255 var _middlewareData$offse, _middlewareData$arrow; 8256 const { 8257 x, 8258 y, 8259 placement, 8260 middlewareData 8261 } = state; 8262 const diffCoords = await convertValueToCoords(state, options); 8263 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 8264 return {}; 8265 } 8266 return { 8267 x: x + diffCoords.x, 8268 y: y + diffCoords.y, 8269 data: { 8270 ...diffCoords, 8271 placement 8272 } 8273 }; 8274 } 8275 }; 8276 }; 8277 var shift = function(options) { 8278 if (options === void 0) { 8279 options = {}; 8280 } 8281 return { 8282 name: "shift", 8283 options, 8284 async fn(state) { 8285 const { 8286 x, 8287 y, 8288 placement, 8289 platform: platform3 8290 } = state; 8291 const { 8292 mainAxis: checkMainAxis = true, 8293 crossAxis: checkCrossAxis = false, 8294 limiter = { 8295 fn: (_ref) => { 8296 let { 8297 x: x2, 8298 y: y2 8299 } = _ref; 8300 return { 8301 x: x2, 8302 y: y2 8303 }; 8304 } 8305 }, 8306 ...detectOverflowOptions 8307 } = evaluate(options, state); 8308 const coords = { 8309 x, 8310 y 8311 }; 8312 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8313 const crossAxis = getSideAxis(placement); 8314 const mainAxis = getOppositeAxis(crossAxis); 8315 let mainAxisCoord = coords[mainAxis]; 8316 let crossAxisCoord = coords[crossAxis]; 8317 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 8318 if (checkMainAxis) { 8319 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 8320 } 8321 if (checkCrossAxis) { 8322 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 8323 } 8324 const limitedCoords = limiter.fn({ 8325 ...state, 8326 [mainAxis]: mainAxisCoord, 8327 [crossAxis]: crossAxisCoord 8328 }); 8329 return { 8330 ...limitedCoords, 8331 data: { 8332 x: limitedCoords.x - x, 8333 y: limitedCoords.y - y, 8334 enabled: { 8335 [mainAxis]: checkMainAxis, 8336 [crossAxis]: checkCrossAxis 8337 } 8338 } 8339 }; 8340 } 8341 }; 8342 }; 8343 var limitShift = function(options) { 8344 if (options === void 0) { 8345 options = {}; 8346 } 8347 return { 8348 options, 8349 fn(state) { 8350 var _rawOffset$mainAxis, _rawOffset$crossAxis; 8351 const { 8352 x, 8353 y, 8354 placement, 8355 rects, 8356 middlewareData 8357 } = state; 8358 const { 8359 offset: offset4 = 0, 8360 mainAxis: checkMainAxis = true, 8361 crossAxis: checkCrossAxis = true 8362 } = evaluate(options, state); 8363 const coords = { 8364 x, 8365 y 8366 }; 8367 const crossAxis = getSideAxis(placement); 8368 const mainAxis = getOppositeAxis(crossAxis); 8369 let mainAxisCoord = coords[mainAxis]; 8370 let crossAxisCoord = coords[crossAxis]; 8371 const rawOffset = evaluate(offset4, state); 8372 const computedOffset = typeof rawOffset === "number" ? { 8373 mainAxis: rawOffset, 8374 crossAxis: 0 8375 } : { 8376 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 8377 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 8378 }; 8379 if (checkMainAxis) { 8380 const len = mainAxis === "y" ? "height" : "width"; 8381 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 8382 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 8383 if (mainAxisCoord < limitMin) { 8384 mainAxisCoord = limitMin; 8385 } else if (mainAxisCoord > limitMax) { 8386 mainAxisCoord = limitMax; 8387 } 8388 } 8389 if (checkCrossAxis) { 8390 var _middlewareData$offse, _middlewareData$offse2; 8391 const len = mainAxis === "y" ? "width" : "height"; 8392 const isOriginSide = originSides.has(getSide(placement)); 8393 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); 8394 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); 8395 if (crossAxisCoord < limitMin) { 8396 crossAxisCoord = limitMin; 8397 } else if (crossAxisCoord > limitMax) { 8398 crossAxisCoord = limitMax; 8399 } 8400 } 8401 return { 8402 [mainAxis]: mainAxisCoord, 8403 [crossAxis]: crossAxisCoord 8404 }; 8405 } 8406 }; 8407 }; 8408 var size = function(options) { 8409 if (options === void 0) { 8410 options = {}; 8411 } 8412 return { 8413 name: "size", 8414 options, 8415 async fn(state) { 8416 const { 8417 placement, 8418 rects, 8419 platform: platform3, 8420 elements 8421 } = state; 8422 const { 8423 apply = () => { 8424 }, 8425 ...detectOverflowOptions 8426 } = evaluate(options, state); 8427 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8428 const side = getSide(placement); 8429 const alignment = getAlignment(placement); 8430 const isYAxis = getSideAxis(placement) === "y"; 8431 const { 8432 width, 8433 height 8434 } = rects.floating; 8435 let heightSide; 8436 let widthSide; 8437 if (side === "top" || side === "bottom") { 8438 heightSide = side; 8439 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 8440 } else { 8441 widthSide = side; 8442 heightSide = alignment === "end" ? "top" : "bottom"; 8443 } 8444 const maximumClippingHeight = height - overflow.top - overflow.bottom; 8445 const maximumClippingWidth = width - overflow.left - overflow.right; 8446 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 8447 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 8448 const shiftData = state.middlewareData.shift; 8449 const noShift = !shiftData; 8450 let availableHeight2 = overflowAvailableHeight; 8451 let availableWidth2 = overflowAvailableWidth; 8452 if (shiftData != null && shiftData.enabled.x) { 8453 availableWidth2 = maximumClippingWidth; 8454 } 8455 if (shiftData != null && shiftData.enabled.y) { 8456 availableHeight2 = maximumClippingHeight; 8457 } 8458 if (noShift && !alignment) { 8459 if (isYAxis) { 8460 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 8461 } else { 8462 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 8463 } 8464 } 8465 await apply({ 8466 ...state, 8467 availableWidth: availableWidth2, 8468 availableHeight: availableHeight2 8469 }); 8470 const nextDimensions = await platform3.getDimensions(elements.floating); 8471 if (width !== nextDimensions.width || height !== nextDimensions.height) { 8472 return { 8473 reset: { 8474 rects: true 8475 } 8476 }; 8477 } 8478 return {}; 8479 } 8480 }; 8481 }; 8482 8483 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 8484 function getCssDimensions(element) { 8485 const css = getComputedStyle2(element); 8486 let width = parseFloat(css.width) || 0; 8487 let height = parseFloat(css.height) || 0; 8488 const hasOffset = isHTMLElement(element); 8489 const offsetWidth = hasOffset ? element.offsetWidth : width; 8490 const offsetHeight = hasOffset ? element.offsetHeight : height; 8491 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 8492 if (shouldFallback) { 8493 width = offsetWidth; 8494 height = offsetHeight; 8495 } 8496 return { 8497 width, 8498 height, 8499 $: shouldFallback 8500 }; 8501 } 8502 function unwrapElement(element) { 8503 return !isElement(element) ? element.contextElement : element; 8504 } 8505 function getScale(element) { 8506 const domElement = unwrapElement(element); 8507 if (!isHTMLElement(domElement)) { 8508 return createCoords(1); 8509 } 8510 const rect = domElement.getBoundingClientRect(); 8511 const { 8512 width, 8513 height, 8514 $ 8515 } = getCssDimensions(domElement); 8516 let x = ($ ? round(rect.width) : rect.width) / width; 8517 let y = ($ ? round(rect.height) : rect.height) / height; 8518 if (!x || !Number.isFinite(x)) { 8519 x = 1; 8520 } 8521 if (!y || !Number.isFinite(y)) { 8522 y = 1; 8523 } 8524 return { 8525 x, 8526 y 8527 }; 8528 } 8529 var noOffsets = /* @__PURE__ */ createCoords(0); 8530 function getVisualOffsets(element) { 8531 const win = getWindow(element); 8532 if (!isWebKit() || !win.visualViewport) { 8533 return noOffsets; 8534 } 8535 return { 8536 x: win.visualViewport.offsetLeft, 8537 y: win.visualViewport.offsetTop 8538 }; 8539 } 8540 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 8541 if (isFixed === void 0) { 8542 isFixed = false; 8543 } 8544 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 8545 } 8546 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 8547 if (includeScale === void 0) { 8548 includeScale = false; 8549 } 8550 if (isFixedStrategy === void 0) { 8551 isFixedStrategy = false; 8552 } 8553 const clientRect = element.getBoundingClientRect(); 8554 const domElement = unwrapElement(element); 8555 let scale = createCoords(1); 8556 if (includeScale) { 8557 if (offsetParent) { 8558 if (isElement(offsetParent)) { 8559 scale = getScale(offsetParent); 8560 } 8561 } else { 8562 scale = getScale(element); 8563 } 8564 } 8565 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 8566 let x = (clientRect.left + visualOffsets.x) / scale.x; 8567 let y = (clientRect.top + visualOffsets.y) / scale.y; 8568 let width = clientRect.width / scale.x; 8569 let height = clientRect.height / scale.y; 8570 if (domElement && offsetParent) { 8571 const win = getWindow(domElement); 8572 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 8573 let currentWin = win; 8574 let currentIFrame = getFrameElement(currentWin); 8575 while (currentIFrame && offsetWin !== currentWin) { 8576 const iframeScale = getScale(currentIFrame); 8577 const iframeRect = currentIFrame.getBoundingClientRect(); 8578 const css = getComputedStyle2(currentIFrame); 8579 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 8580 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 8581 x *= iframeScale.x; 8582 y *= iframeScale.y; 8583 width *= iframeScale.x; 8584 height *= iframeScale.y; 8585 x += left; 8586 y += top; 8587 currentWin = getWindow(currentIFrame); 8588 currentIFrame = getFrameElement(currentWin); 8589 } 8590 } 8591 return rectToClientRect({ 8592 width, 8593 height, 8594 x, 8595 y 8596 }); 8597 } 8598 function getWindowScrollBarX(element, rect) { 8599 const leftScroll = getNodeScroll(element).scrollLeft; 8600 if (!rect) { 8601 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 8602 } 8603 return rect.left + leftScroll; 8604 } 8605 function getHTMLOffset(documentElement, scroll) { 8606 const htmlRect = documentElement.getBoundingClientRect(); 8607 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 8608 const y = htmlRect.top + scroll.scrollTop; 8609 return { 8610 x, 8611 y 8612 }; 8613 } 8614 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 8615 let { 8616 elements, 8617 rect, 8618 offsetParent, 8619 strategy 8620 } = _ref; 8621 const isFixed = strategy === "fixed"; 8622 const documentElement = getDocumentElement(offsetParent); 8623 const topLayer = elements ? isTopLayer(elements.floating) : false; 8624 if (offsetParent === documentElement || topLayer && isFixed) { 8625 return rect; 8626 } 8627 let scroll = { 8628 scrollLeft: 0, 8629 scrollTop: 0 8630 }; 8631 let scale = createCoords(1); 8632 const offsets = createCoords(0); 8633 const isOffsetParentAnElement = isHTMLElement(offsetParent); 8634 if (isOffsetParentAnElement || !isFixed) { 8635 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 8636 scroll = getNodeScroll(offsetParent); 8637 } 8638 if (isOffsetParentAnElement) { 8639 const offsetRect = getBoundingClientRect(offsetParent); 8640 scale = getScale(offsetParent); 8641 offsets.x = offsetRect.x + offsetParent.clientLeft; 8642 offsets.y = offsetRect.y + offsetParent.clientTop; 8643 } 8644 } 8645 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 8646 return { 8647 width: rect.width * scale.x, 8648 height: rect.height * scale.y, 8649 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 8650 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 8651 }; 8652 } 8653 function getClientRects(element) { 8654 return element.getClientRects ? Array.from(element.getClientRects()) : []; 8655 } 8656 function getDocumentRect(html) { 8657 const scroll = getNodeScroll(html); 8658 const body = html.ownerDocument.body; 8659 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 8660 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 8661 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 8662 const y = -scroll.scrollTop; 8663 if (getComputedStyle2(body).direction === "rtl") { 8664 x += max(html.clientWidth, body.clientWidth) - width; 8665 } 8666 return { 8667 width, 8668 height, 8669 x, 8670 y 8671 }; 8672 } 8673 var SCROLLBAR_MAX = 25; 8674 function getViewportRect(element, strategy, rootBoundary) { 8675 if (rootBoundary === void 0) { 8676 rootBoundary = "viewport"; 8677 } 8678 const isLayoutViewport = rootBoundary === "layoutViewport"; 8679 const win = getWindow(element); 8680 const html = getDocumentElement(element); 8681 const visualViewport = win.visualViewport; 8682 let width = html.clientWidth; 8683 let height = html.clientHeight; 8684 let x = 0; 8685 let y = 0; 8686 if (visualViewport) { 8687 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 8688 if (isLayoutViewport) { 8689 if (!layoutRelativeClientCoords) { 8690 x = -visualViewport.offsetLeft; 8691 y = -visualViewport.offsetTop; 8692 } 8693 } else { 8694 width = visualViewport.width; 8695 height = visualViewport.height; 8696 if (layoutRelativeClientCoords) { 8697 x = visualViewport.offsetLeft; 8698 y = visualViewport.offsetTop; 8699 } 8700 } 8701 } 8702 const windowScrollbarX = getWindowScrollBarX(html); 8703 if (windowScrollbarX <= 0) { 8704 const doc = html.ownerDocument; 8705 const body = doc.body; 8706 const bodyStyles = getComputedStyle(body); 8707 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 8708 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 8709 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 8710 if (gutter <= SCROLLBAR_MAX) { 8711 width -= gutter; 8712 } 8713 } 8714 return { 8715 width, 8716 height, 8717 x, 8718 y 8719 }; 8720 } 8721 function getInnerBoundingClientRect(element, strategy) { 8722 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 8723 const top = clientRect.top + element.clientTop; 8724 const left = clientRect.left + element.clientLeft; 8725 const scale = getScale(element); 8726 const width = element.clientWidth * scale.x; 8727 const height = element.clientHeight * scale.y; 8728 const x = left * scale.x; 8729 const y = top * scale.y; 8730 return { 8731 width, 8732 height, 8733 x, 8734 y 8735 }; 8736 } 8737 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 8738 let rect; 8739 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 8740 rect = getViewportRect(element, strategy, clippingAncestor); 8741 } else if (clippingAncestor === "document") { 8742 rect = getDocumentRect(getDocumentElement(element)); 8743 } else if (isElement(clippingAncestor)) { 8744 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 8745 } else { 8746 const visualOffsets = getVisualOffsets(element); 8747 rect = { 8748 x: clippingAncestor.x - visualOffsets.x, 8749 y: clippingAncestor.y - visualOffsets.y, 8750 width: clippingAncestor.width, 8751 height: clippingAncestor.height 8752 }; 8753 } 8754 return rectToClientRect(rect); 8755 } 8756 function getClippingElementAncestors(element, cache) { 8757 const cachedResult = cache.get(element); 8758 if (cachedResult) { 8759 return cachedResult; 8760 } 8761 let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); 8762 let lastKeptComputedStyle = null; 8763 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 8764 let currentNode = elementIsFixed ? getParentNode(element) : element; 8765 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 8766 const computedStyle = getComputedStyle2(currentNode); 8767 const currentNodeIsContaining = isContainingBlock(currentNode); 8768 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 8769 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 8770 if (shouldDropCurrentNode) { 8771 result = result.filter((ancestor) => ancestor !== currentNode); 8772 } else { 8773 lastKeptComputedStyle = computedStyle; 8774 } 8775 currentNode = getParentNode(currentNode); 8776 } 8777 cache.set(element, result); 8778 return result; 8779 } 8780 function getClippingRect(_ref) { 8781 let { 8782 element, 8783 boundary, 8784 rootBoundary, 8785 strategy 8786 } = _ref; 8787 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 8788 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 8789 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 8790 let top = firstRect.top; 8791 let right = firstRect.right; 8792 let bottom = firstRect.bottom; 8793 let left = firstRect.left; 8794 for (let i = 1; i < clippingAncestors.length; i++) { 8795 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 8796 top = max(rect.top, top); 8797 right = min(rect.right, right); 8798 bottom = min(rect.bottom, bottom); 8799 left = max(rect.left, left); 8800 } 8801 return { 8802 width: right - left, 8803 height: bottom - top, 8804 x: left, 8805 y: top 8806 }; 8807 } 8808 function getDimensions(element) { 8809 const { 8810 width, 8811 height 8812 } = getCssDimensions(element); 8813 return { 8814 width, 8815 height 8816 }; 8817 } 8818 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 8819 const isOffsetParentAnElement = isHTMLElement(offsetParent); 8820 const documentElement = getDocumentElement(offsetParent); 8821 const isFixed = strategy === "fixed"; 8822 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 8823 let scroll = { 8824 scrollLeft: 0, 8825 scrollTop: 0 8826 }; 8827 const offsets = createCoords(0); 8828 if (isOffsetParentAnElement || !isFixed) { 8829 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 8830 scroll = getNodeScroll(offsetParent); 8831 } 8832 if (isOffsetParentAnElement) { 8833 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 8834 offsets.x = offsetRect.x + offsetParent.clientLeft; 8835 offsets.y = offsetRect.y + offsetParent.clientTop; 8836 } 8837 } 8838 if (!isOffsetParentAnElement && documentElement) { 8839 offsets.x = getWindowScrollBarX(documentElement); 8840 } 8841 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 8842 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 8843 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 8844 return { 8845 x, 8846 y, 8847 width: rect.width, 8848 height: rect.height 8849 }; 8850 } 8851 function isStaticPositioned(element) { 8852 return getComputedStyle2(element).position === "static"; 8853 } 8854 function getTrueOffsetParent(element, polyfill) { 8855 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 8856 return null; 8857 } 8858 if (polyfill) { 8859 return polyfill(element); 8860 } 8861 let rawOffsetParent = element.offsetParent; 8862 if (getDocumentElement(element) === rawOffsetParent) { 8863 rawOffsetParent = rawOffsetParent.ownerDocument.body; 8864 } 8865 return rawOffsetParent; 8866 } 8867 function getOffsetParent(element, polyfill) { 8868 const win = getWindow(element); 8869 if (isTopLayer(element)) { 8870 return win; 8871 } 8872 if (!isHTMLElement(element)) { 8873 let svgOffsetParent = getParentNode(element); 8874 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 8875 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 8876 return svgOffsetParent; 8877 } 8878 svgOffsetParent = getParentNode(svgOffsetParent); 8879 } 8880 return win; 8881 } 8882 let offsetParent = getTrueOffsetParent(element, polyfill); 8883 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 8884 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 8885 } 8886 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 8887 return win; 8888 } 8889 return offsetParent || getContainingBlock(element) || win; 8890 } 8891 var getElementRects = async function(data) { 8892 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 8893 const getDimensionsFn = this.getDimensions; 8894 const floatingDimensions = await getDimensionsFn(data.floating); 8895 return { 8896 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 8897 floating: { 8898 x: 0, 8899 y: 0, 8900 width: floatingDimensions.width, 8901 height: floatingDimensions.height 8902 } 8903 }; 8904 }; 8905 function isRTL(element) { 8906 return getComputedStyle2(element).direction === "rtl"; 8907 } 8908 var platform2 = { 8909 convertOffsetParentRelativeRectToViewportRelativeRect, 8910 getDocumentElement, 8911 getClippingRect, 8912 getOffsetParent, 8913 getElementRects, 8914 getClientRects, 8915 getDimensions, 8916 getScale, 8917 isElement, 8918 isRTL 8919 }; 8920 function rectsAreEqual(a, b) { 8921 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 8922 } 8923 function observeMove(element, onMove, ancestorResize) { 8924 let io = null; 8925 let timeoutId; 8926 const root2 = getDocumentElement(element); 8927 function cleanup() { 8928 var _io; 8929 clearTimeout(timeoutId); 8930 (_io = io) == null || _io.disconnect(); 8931 io = null; 8932 } 8933 function refresh(skip, threshold) { 8934 if (skip === void 0) { 8935 skip = false; 8936 } 8937 if (threshold === void 0) { 8938 threshold = 1; 8939 } 8940 cleanup(); 8941 const elementRectForRootMargin = element.getBoundingClientRect(); 8942 const { 8943 left, 8944 top, 8945 width, 8946 height 8947 } = elementRectForRootMargin; 8948 if (!skip) { 8949 onMove(); 8950 } 8951 if (!width || !height) { 8952 return; 8953 } 8954 const insetTop = floor(top); 8955 const insetRight = floor(root2.clientWidth - (left + width)); 8956 const insetBottom = floor(root2.clientHeight - (top + height)); 8957 const insetLeft = floor(left); 8958 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 8959 const options = { 8960 rootMargin, 8961 threshold: max(0, min(1, threshold)) || 1 8962 }; 8963 let isFirstUpdate = true; 8964 function handleObserve(entries) { 8965 const ratio = entries[0].intersectionRatio; 8966 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 8967 return refresh(); 8968 } 8969 if (ratio !== threshold) { 8970 if (!isFirstUpdate) { 8971 return refresh(); 8972 } 8973 if (!ratio) { 8974 timeoutId = setTimeout(() => { 8975 refresh(false, 1e-7); 8976 }, 1e3); 8977 } else { 8978 refresh(false, ratio); 8979 } 8980 } 8981 isFirstUpdate = false; 8982 } 8983 try { 8984 io = new IntersectionObserver(handleObserve, { 8985 ...options, 8986 // Handle <iframe>s 8987 root: root2.ownerDocument 8988 }); 8989 } catch (_e) { 8990 io = new IntersectionObserver(handleObserve, options); 8991 } 8992 io.observe(element); 8993 } 8994 const win = getWindow(element); 8995 const handleResize = () => refresh(ancestorResize); 8996 win.addEventListener("resize", handleResize); 8997 refresh(true); 8998 return () => { 8999 win.removeEventListener("resize", handleResize); 9000 cleanup(); 9001 }; 9002 } 9003 function autoUpdate(reference, floating, update2, options) { 9004 if (options === void 0) { 9005 options = {}; 9006 } 9007 const { 9008 ancestorScroll = true, 9009 ancestorResize = true, 9010 elementResize = typeof ResizeObserver === "function", 9011 layoutShift = typeof IntersectionObserver === "function", 9012 animationFrame = false 9013 } = options; 9014 const referenceEl = unwrapElement(reference); 9015 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 9016 ancestors.forEach((ancestor) => { 9017 ancestorScroll && ancestor.addEventListener("scroll", update2); 9018 ancestorResize && ancestor.addEventListener("resize", update2); 9019 }); 9020 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 9021 let reobserveFrame = -1; 9022 let resizeObserver = null; 9023 if (elementResize) { 9024 resizeObserver = new ResizeObserver((_ref) => { 9025 let [firstEntry] = _ref; 9026 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 9027 resizeObserver.unobserve(floating); 9028 cancelAnimationFrame(reobserveFrame); 9029 reobserveFrame = requestAnimationFrame(() => { 9030 var _resizeObserver; 9031 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 9032 }); 9033 } 9034 update2(); 9035 }); 9036 if (referenceEl && !animationFrame) { 9037 resizeObserver.observe(referenceEl); 9038 } 9039 if (floating) { 9040 resizeObserver.observe(floating); 9041 } 9042 } 9043 let frameId; 9044 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 9045 if (animationFrame) { 9046 frameLoop(); 9047 } 9048 function frameLoop() { 9049 const nextRefRect = getBoundingClientRect(reference); 9050 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 9051 update2(); 9052 } 9053 prevRefRect = nextRefRect; 9054 frameId = requestAnimationFrame(frameLoop); 9055 } 9056 update2(); 9057 return () => { 9058 var _resizeObserver2; 9059 ancestors.forEach((ancestor) => { 9060 ancestorScroll && ancestor.removeEventListener("scroll", update2); 9061 ancestorResize && ancestor.removeEventListener("resize", update2); 9062 }); 9063 cleanupIo == null || cleanupIo(); 9064 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 9065 resizeObserver = null; 9066 if (animationFrame) { 9067 cancelAnimationFrame(frameId); 9068 } 9069 }; 9070 } 9071 var offset2 = offset; 9072 var shift2 = shift; 9073 var flip2 = flip; 9074 var size2 = size; 9075 var limitShift2 = limitShift; 9076 var computePosition2 = (reference, floating, options) => { 9077 const cache = /* @__PURE__ */ new Map(); 9078 const mergedOptions = options != null ? options : {}; 9079 const platformWithCache = { 9080 ...platform2, 9081 ...mergedOptions.platform, 9082 _c: cache 9083 }; 9084 return computePosition(reference, floating, { 9085 ...mergedOptions, 9086 platform: platformWithCache 9087 }); 9088 }; 9089 9090 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 9091 var React38 = __toESM(require_react(), 1); 9092 var import_react2 = __toESM(require_react(), 1); 9093 var ReactDOM5 = __toESM(require_react_dom(), 1); 9094 var isClient = typeof document !== "undefined"; 9095 var noop2 = function noop3() { 9096 }; 9097 var index = isClient ? import_react2.useLayoutEffect : noop2; 9098 function deepEqual(a, b) { 9099 if (a === b) { 9100 return true; 9101 } 9102 if (typeof a !== typeof b) { 9103 return false; 9104 } 9105 if (typeof a === "function" && a.toString() === b.toString()) { 9106 return true; 9107 } 9108 let length; 9109 let i; 9110 let keys; 9111 if (a && b && typeof a === "object") { 9112 if (Array.isArray(a)) { 9113 length = a.length; 9114 if (length !== b.length) return false; 9115 for (i = length; i-- !== 0; ) { 9116 if (!deepEqual(a[i], b[i])) { 9117 return false; 9118 } 9119 } 9120 return true; 9121 } 9122 keys = Object.keys(a); 9123 length = keys.length; 9124 if (length !== Object.keys(b).length) { 9125 return false; 9126 } 9127 for (i = length; i-- !== 0; ) { 9128 if (!{}.hasOwnProperty.call(b, keys[i])) { 9129 return false; 9130 } 9131 } 9132 for (i = length; i-- !== 0; ) { 9133 const key = keys[i]; 9134 if (key === "_owner" && a.$$typeof) { 9135 continue; 9136 } 9137 if (!deepEqual(a[key], b[key])) { 9138 return false; 9139 } 9140 } 9141 return true; 9142 } 9143 return a !== a && b !== b; 9144 } 9145 function getDPR(element) { 9146 if (typeof window === "undefined") { 9147 return 1; 9148 } 9149 const win = element.ownerDocument.defaultView || window; 9150 return win.devicePixelRatio || 1; 9151 } 9152 function roundByDPR(element, value) { 9153 const dpr = getDPR(element); 9154 return Math.round(value * dpr) / dpr; 9155 } 9156 function useLatestRef(value) { 9157 const ref = React38.useRef(value); 9158 index(() => { 9159 ref.current = value; 9160 }); 9161 return ref; 9162 } 9163 function useFloating(options) { 9164 if (options === void 0) { 9165 options = {}; 9166 } 9167 const { 9168 placement = "bottom", 9169 strategy = "absolute", 9170 middleware = [], 9171 platform: platform3, 9172 elements: { 9173 reference: externalReference, 9174 floating: externalFloating 9175 } = {}, 9176 transform = true, 9177 whileElementsMounted, 9178 open: open2 9179 } = options; 9180 const [data, setData] = React38.useState({ 9181 x: 0, 9182 y: 0, 9183 strategy, 9184 placement, 9185 middlewareData: {}, 9186 isPositioned: false 9187 }); 9188 const [latestMiddleware, setLatestMiddleware] = React38.useState(middleware); 9189 if (!deepEqual(latestMiddleware, middleware)) { 9190 setLatestMiddleware(middleware); 9191 } 9192 const [_reference, _setReference] = React38.useState(null); 9193 const [_floating, _setFloating] = React38.useState(null); 9194 const setReference = React38.useCallback((node) => { 9195 if (node !== referenceRef.current) { 9196 referenceRef.current = node; 9197 _setReference(node); 9198 } 9199 }, []); 9200 const setFloating = React38.useCallback((node) => { 9201 if (node !== floatingRef.current) { 9202 floatingRef.current = node; 9203 _setFloating(node); 9204 } 9205 }, []); 9206 const referenceEl = externalReference || _reference; 9207 const floatingEl = externalFloating || _floating; 9208 const referenceRef = React38.useRef(null); 9209 const floatingRef = React38.useRef(null); 9210 const dataRef = React38.useRef(data); 9211 const hasWhileElementsMounted = whileElementsMounted != null; 9212 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 9213 const platformRef = useLatestRef(platform3); 9214 const openRef = useLatestRef(open2); 9215 const update2 = React38.useCallback(() => { 9216 if (!referenceRef.current || !floatingRef.current) { 9217 return; 9218 } 9219 const config = { 9220 placement, 9221 strategy, 9222 middleware: latestMiddleware 9223 }; 9224 if (platformRef.current) { 9225 config.platform = platformRef.current; 9226 } 9227 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 9228 const fullData = { 9229 ...data2, 9230 // The floating element's position may be recomputed while it's closed 9231 // but still mounted (such as when transitioning out). To ensure 9232 // `isPositioned` will be `false` initially on the next open, avoid 9233 // setting it to `true` when `open === false` (must be specified). 9234 isPositioned: openRef.current !== false 9235 }; 9236 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 9237 dataRef.current = fullData; 9238 ReactDOM5.flushSync(() => { 9239 setData(fullData); 9240 }); 9241 } 9242 }); 9243 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 9244 index(() => { 9245 if (open2 === false && dataRef.current.isPositioned) { 9246 dataRef.current.isPositioned = false; 9247 setData((data2) => ({ 9248 ...data2, 9249 isPositioned: false 9250 })); 9251 } 9252 }, [open2]); 9253 const isMountedRef = React38.useRef(false); 9254 index(() => { 9255 isMountedRef.current = true; 9256 return () => { 9257 isMountedRef.current = false; 9258 }; 9259 }, []); 9260 index(() => { 9261 if (referenceEl) referenceRef.current = referenceEl; 9262 if (floatingEl) floatingRef.current = floatingEl; 9263 if (referenceEl && floatingEl) { 9264 if (whileElementsMountedRef.current) { 9265 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 9266 } 9267 update2(); 9268 } 9269 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 9270 const refs = React38.useMemo(() => ({ 9271 reference: referenceRef, 9272 floating: floatingRef, 9273 setReference, 9274 setFloating 9275 }), [setReference, setFloating]); 9276 const elements = React38.useMemo(() => ({ 9277 reference: referenceEl, 9278 floating: floatingEl 9279 }), [referenceEl, floatingEl]); 9280 const floatingStyles = React38.useMemo(() => { 9281 const initialStyles = { 9282 position: strategy, 9283 left: 0, 9284 top: 0 9285 }; 9286 if (!elements.floating) { 9287 return initialStyles; 9288 } 9289 const x = roundByDPR(elements.floating, data.x); 9290 const y = roundByDPR(elements.floating, data.y); 9291 if (transform) { 9292 return { 9293 ...initialStyles, 9294 transform: "translate(" + x + "px, " + y + "px)", 9295 ...getDPR(elements.floating) >= 1.5 && { 9296 willChange: "transform" 9297 } 9298 }; 9299 } 9300 return { 9301 position: strategy, 9302 left: x, 9303 top: y 9304 }; 9305 }, [strategy, transform, elements.floating, data.x, data.y]); 9306 return React38.useMemo(() => ({ 9307 ...data, 9308 update: update2, 9309 refs, 9310 elements, 9311 floatingStyles 9312 }), [data, update2, refs, elements, floatingStyles]); 9313 } 9314 var offset3 = (options, deps) => { 9315 const result = offset2(options); 9316 return { 9317 name: result.name, 9318 fn: result.fn, 9319 options: [options, deps] 9320 }; 9321 }; 9322 var shift3 = (options, deps) => { 9323 const result = shift2(options); 9324 return { 9325 name: result.name, 9326 fn: result.fn, 9327 options: [options, deps] 9328 }; 9329 }; 9330 var limitShift3 = (options, deps) => { 9331 const result = limitShift2(options); 9332 return { 9333 fn: result.fn, 9334 options: [options, deps] 9335 }; 9336 }; 9337 var flip3 = (options, deps) => { 9338 const result = flip2(options); 9339 return { 9340 name: result.name, 9341 fn: result.fn, 9342 options: [options, deps] 9343 }; 9344 }; 9345 var size3 = (options, deps) => { 9346 const result = size2(options); 9347 return { 9348 name: result.name, 9349 fn: result.fn, 9350 options: [options, deps] 9351 }; 9352 }; 9353 9354 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/NullStore.mjs 9355 var NullStore = class extends ReactStore { 9356 // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding 9357 // `setState` alone would neutralize them today. They are overridden explicitly so the store stays 9358 // inert even if a future base-class change stops routing a mutator through `setState`. 9359 setState(_newState) { 9360 } 9361 update(_changes) { 9362 } 9363 set(_key, _value) { 9364 } 9365 notifyAll() { 9366 } 9367 }; 9368 9369 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 9370 function inertValue(value) { 9371 if (isReactVersionAtLeast(19)) { 9372 return value; 9373 } 9374 return value ? "true" : void 0; 9375 } 9376 9377 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/InternalBackdrop.mjs 9378 var React39 = __toESM(require_react(), 1); 9379 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 9380 var InternalBackdrop = /* @__PURE__ */ React39.forwardRef(function InternalBackdrop2(props, ref) { 9381 const { 9382 cutout, 9383 ...otherProps 9384 } = props; 9385 let clipPath; 9386 if (cutout) { 9387 const rect = cutout.getBoundingClientRect(); 9388 clipPath = `polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,$rect.left}px $rect.top}px,$rect.left}px $rect.bottom}px,$rect.right}px $rect.bottom}px,$rect.right}px $rect.top}px,$rect.left}px $rect.top}px)`; 9389 } 9390 return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { 9391 ref, 9392 role: "presentation", 9393 "data-base-ui-inert": "", 9394 ...otherProps, 9395 style: { 9396 position: "fixed", 9397 inset: 0, 9398 userSelect: "none", 9399 WebkitUserSelect: "none", 9400 clipPath 9401 } 9402 }); 9403 }); 9404 if (true) InternalBackdrop.displayName = "InternalBackdrop"; 9405 9406 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 9407 var React42 = __toESM(require_react(), 1); 9408 9409 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs 9410 var React40 = __toESM(require_react(), 1); 9411 function useEnhancedClickHandler(handler) { 9412 const lastClickInteractionTypeRef = React40.useRef(""); 9413 const handlePointerDown = React40.useCallback((event) => { 9414 if (event.defaultPrevented) { 9415 return; 9416 } 9417 lastClickInteractionTypeRef.current = event.pointerType; 9418 handler(event, event.pointerType); 9419 }, [handler]); 9420 const handleClick = React40.useCallback((event) => { 9421 if (event.detail === 0) { 9422 handler(event, "keyboard"); 9423 return; 9424 } 9425 if ("pointerType" in event) { 9426 handler(event, event.pointerType); 9427 } else { 9428 handler(event, lastClickInteractionTypeRef.current); 9429 } 9430 lastClickInteractionTypeRef.current = ""; 9431 }, [handler]); 9432 return { 9433 onClick: handleClick, 9434 onPointerDown: handlePointerDown 9435 }; 9436 } 9437 9438 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useValueChanged.mjs 9439 var React41 = __toESM(require_react(), 1); 9440 function useValueChanged(value, onChange) { 9441 const valueRef = React41.useRef(value); 9442 const onChangeCallback = useStableCallback(onChange); 9443 useIsoLayoutEffect(() => { 9444 if (valueRef.current !== value) { 9445 onChangeCallback(valueRef.current); 9446 } 9447 valueRef.current = value; 9448 }, [value, onChangeCallback]); 9449 } 9450 9451 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 9452 function useOpenMethodTriggerProps(open2, setOpenMethod) { 9453 const handleTriggerClick = useStableCallback((_, interactionType) => { 9454 const isOpen = typeof open2 === "function" ? open2() : open2; 9455 if (!isOpen) { 9456 setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's 9457 // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType` 9458 // will be "" in that case. 9459 (parts_exports.os.ios ? "touch" : "")); 9460 } 9461 }); 9462 const { 9463 onClick, 9464 onPointerDown 9465 } = useEnhancedClickHandler(handleTriggerClick); 9466 return React42.useMemo(() => ({ 9467 onClick, 9468 onPointerDown 9469 }), [onClick, onPointerDown]); 9470 } 9471 function useOpenInteractionType(open2) { 9472 const [openMethod, setOpenMethod] = React42.useState(null); 9473 const triggerProps = useOpenMethodTriggerProps(open2, setOpenMethod); 9474 useValueChanged(open2, (previousOpen) => { 9475 if (previousOpen && !open2) { 9476 setOpenMethod(null); 9477 } 9478 }); 9479 return React42.useMemo(() => ({ 9480 openMethod, 9481 triggerProps 9482 }), [openMethod, triggerProps]); 9483 } 9484 9485 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/index.parts.mjs 9486 var index_parts_exports = {}; 9487 __export(index_parts_exports, { 9488 Arrow: () => ComboboxArrow, 9489 Backdrop: () => ComboboxBackdrop, 9490 Clear: () => ComboboxClear, 9491 Collection: () => ComboboxCollection, 9492 Empty: () => ComboboxEmpty, 9493 Group: () => ComboboxGroup, 9494 GroupLabel: () => ComboboxGroupLabel, 9495 Icon: () => ComboboxIcon, 9496 Input: () => ComboboxInput, 9497 InputGroup: () => AutocompleteInputGroup, 9498 Item: () => AutocompleteItem, 9499 List: () => ComboboxList, 9500 Popup: () => ComboboxPopup, 9501 Portal: () => ComboboxPortal, 9502 Positioner: () => ComboboxPositioner, 9503 Root: () => AutocompleteRoot, 9504 Row: () => ComboboxRow, 9505 Separator: () => AutocompleteSeparator, 9506 Status: () => ComboboxStatus, 9507 Trigger: () => AutocompleteTrigger, 9508 Value: () => AutocompleteValue, 9509 useFilter: () => useCoreFilter, 9510 useFilteredItems: () => useFilteredItems 9511 }); 9512 9513 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/root/AutocompleteRoot.mjs 9514 var React53 = __toESM(require_react(), 1); 9515 9516 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/AriaCombobox.mjs 9517 var React52 = __toESM(require_react(), 1); 9518 9519 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnFirstRender.mjs 9520 var React43 = __toESM(require_react(), 1); 9521 function useOnFirstRender(fn) { 9522 const ref = React43.useRef(true); 9523 if (ref.current) { 9524 ref.current = false; 9525 fn(); 9526 } 9527 } 9528 9529 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/gridNavigation.mjs 9530 function gridNavigation(event, prevIndex, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex, cols = 2) { 9531 const nextIndex = getGridNavigatedIndex(listRef.current, { 9532 event, 9533 orientation, 9534 loopFocus, 9535 rtl, 9536 cols, 9537 disabledIndices, 9538 minIndex, 9539 maxIndex, 9540 // An out-of-range previous index falls back to the first enabled item. 9541 prevIndex: prevIndex > maxIndex ? minIndex : prevIndex, 9542 stopEvent: true 9543 }); 9544 return isIndexOutOfListBounds(listRef.current, nextIndex) ? void 0 : nextIndex; 9545 } 9546 9547 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getHighlightReason.mjs 9548 function getHighlightReason(event) { 9549 if (event == null) { 9550 return reason_parts_exports.none; 9551 } 9552 if (event.type.startsWith("key")) { 9553 return reason_parts_exports.keyboard; 9554 } 9555 if (event.type.startsWith("mouse") || event.type.startsWith("pointer")) { 9556 return reason_parts_exports.pointer; 9557 } 9558 return reason_parts_exports.none; 9559 } 9560 9561 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/ComboboxRootContext.mjs 9562 var React44 = __toESM(require_react(), 1); 9563 var ComboboxRootContext = /* @__PURE__ */ React44.createContext(void 0); 9564 if (true) ComboboxRootContext.displayName = "ComboboxRootContext"; 9565 var ComboboxFloatingContext = /* @__PURE__ */ React44.createContext(void 0); 9566 if (true) ComboboxFloatingContext.displayName = "ComboboxFloatingContext"; 9567 var ComboboxDerivedItemsContext = /* @__PURE__ */ React44.createContext(void 0); 9568 if (true) ComboboxDerivedItemsContext.displayName = "ComboboxDerivedItemsContext"; 9569 var ComboboxHasItemsContext = /* @__PURE__ */ React44.createContext(false); 9570 if (true) ComboboxHasItemsContext.displayName = "ComboboxHasItemsContext"; 9571 var ComboboxInputValueContext = /* @__PURE__ */ React44.createContext(""); 9572 if (true) ComboboxInputValueContext.displayName = "ComboboxInputValueContext"; 9573 function useComboboxRootContext() { 9574 const context = React44.useContext(ComboboxRootContext); 9575 if (!context) { 9576 throw new Error(true ? "Base UI: ComboboxRootContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(22)); 9577 } 9578 return context; 9579 } 9580 function useComboboxFloatingContext() { 9581 const context = React44.useContext(ComboboxFloatingContext); 9582 if (!context) { 9583 throw new Error(true ? "Base UI: ComboboxFloatingContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(23)); 9584 } 9585 return context; 9586 } 9587 function useComboboxDerivedItemsContext() { 9588 const context = React44.useContext(ComboboxDerivedItemsContext); 9589 if (!context) { 9590 throw new Error(true ? "Base UI: ComboboxItemsContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(24)); 9591 } 9592 return context; 9593 } 9594 function useComboboxInputValueContext() { 9595 return React44.useContext(ComboboxInputValueContext); 9596 } 9597 function useComboboxHasItemsContext() { 9598 return React44.useContext(ComboboxHasItemsContext); 9599 } 9600 9601 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/areArraysEqual.mjs 9602 function areArraysEqual(array1, array2, itemComparer = Object.is) { 9603 const { 9604 length 9605 } = array1; 9606 if (length !== array2.length) { 9607 return false; 9608 } 9609 for (let i = 0; i < length; i += 1) { 9610 if (!itemComparer(array1[i], array2[i])) { 9611 return false; 9612 } 9613 } 9614 return true; 9615 } 9616 9617 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/itemEquality.mjs 9618 var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); 9619 function compareItemEquality(itemValue, selectedValue, comparer) { 9620 if (itemValue == null || selectedValue == null) { 9621 return Object.is(itemValue, selectedValue); 9622 } 9623 return comparer(itemValue, selectedValue); 9624 } 9625 function isSelectedValueDirty(currentValue, initialValue, comparer) { 9626 if (Array.isArray(currentValue) && Array.isArray(initialValue)) { 9627 return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer)); 9628 } 9629 return currentValue !== initialValue; 9630 } 9631 function selectedValueIncludes(selectedValues, itemValue, comparer) { 9632 if (!selectedValues) { 9633 return false; 9634 } 9635 return selectedValues.some((selectedValue) => { 9636 if (selectedValue === void 0) { 9637 return false; 9638 } 9639 return compareItemEquality(itemValue, selectedValue, comparer); 9640 }); 9641 } 9642 function findItemIndex(itemValues, selectedValue, comparer) { 9643 if (!itemValues) { 9644 return -1; 9645 } 9646 return itemValues.findIndex((itemValue) => { 9647 if (itemValue === void 0) { 9648 return false; 9649 } 9650 return compareItemEquality(itemValue, selectedValue, comparer); 9651 }); 9652 } 9653 function createSelectionMatcher(selectedValues, comparer) { 9654 if (comparer !== defaultItemEquality) { 9655 return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer); 9656 } 9657 const index2 = new Set(selectedValues); 9658 index2.delete(void 0); 9659 return (itemValue) => index2.has(itemValue) && (itemValue !== 0 || selectedValues.some((v) => Object.is(itemValue, v))); 9660 } 9661 function findSelectionIndex(itemValues, selectedValue, comparer, multiple) { 9662 const index2 = multiple && Array.isArray(selectedValue) ? ( 9663 // Anchor to the first selected item in rendered order so the index does not depend 9664 // on the order in which the values were added to the array. 9665 itemValues.findIndex(createSelectionMatcher(selectedValue, comparer)) 9666 ) : findItemIndex(itemValues, selectedValue, comparer); 9667 return index2 === -1 ? null : index2; 9668 } 9669 function resolveSelectedIndex(index2, itemValue, registry, selectedValues, comparer, currentIndex) { 9670 if (selectedValueIncludes(selectedValues, itemValue, comparer)) { 9671 return currentIndex != null && index2 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index2; 9672 } 9673 return index2 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex; 9674 } 9675 function removeItem(selectedValues, itemValue, comparer) { 9676 return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer)); 9677 } 9678 9679 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 9680 var React45 = __toESM(require_react(), 1); 9681 9682 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/serializeValue.mjs 9683 function serializeValue(value) { 9684 if (value == null) { 9685 return ""; 9686 } 9687 if (typeof value === "string") { 9688 return value; 9689 } 9690 try { 9691 return JSON.stringify(value); 9692 } catch { 9693 return String(value); 9694 } 9695 } 9696 9697 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 9698 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 9699 function isGroup(item) { 9700 return typeof item === "object" && item != null && Array.isArray(item.items); 9701 } 9702 function isGroupedItems(items) { 9703 return isGroup(items?.[0]); 9704 } 9705 function flattenLeafItems(items) { 9706 return isGroupedItems(items) ? items.flatMap((group) => group.items) : items; 9707 } 9708 function hasNullItemLabel(items) { 9709 if (!Array.isArray(items)) { 9710 return items != null && "null" in items; 9711 } 9712 const arrayItems = items; 9713 if (isGroupedItems(arrayItems)) { 9714 for (const group of arrayItems) { 9715 for (const item of group.items) { 9716 if (item && item.value == null && item.label != null) { 9717 return true; 9718 } 9719 } 9720 } 9721 return false; 9722 } 9723 for (const item of arrayItems) { 9724 if (item && item.value == null && item.label != null) { 9725 return true; 9726 } 9727 } 9728 return false; 9729 } 9730 function stringifyAsLabel(item, itemToStringLabel) { 9731 if (itemToStringLabel && item != null) { 9732 return itemToStringLabel(item) ?? ""; 9733 } 9734 if (item && typeof item === "object") { 9735 if ("label" in item && item.label != null) { 9736 return String(item.label); 9737 } 9738 if ("value" in item) { 9739 return String(item.value); 9740 } 9741 } 9742 return serializeValue(item); 9743 } 9744 function stringifyAsValue(item, itemToStringValue) { 9745 if (itemToStringValue && item != null) { 9746 return itemToStringValue(item) ?? ""; 9747 } 9748 if (item && typeof item === "object" && "value" in item && "label" in item) { 9749 return serializeValue(item.value); 9750 } 9751 return serializeValue(item); 9752 } 9753 9754 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/store.mjs 9755 var selectors2 = { 9756 id: (state) => state.id, 9757 labelId: (state) => state.labelId, 9758 items: (state) => state.items, 9759 selectedValue: (state) => state.selectedValue, 9760 hasSelectionChips: (state) => { 9761 const selectedValue = state.selectedValue; 9762 return Array.isArray(selectedValue) && selectedValue.length > 0; 9763 }, 9764 hasSelectedValue: (state) => { 9765 const { 9766 selectedValue, 9767 selectionMode 9768 } = state; 9769 if (selectedValue == null) { 9770 return false; 9771 } 9772 if (selectionMode === "multiple" && Array.isArray(selectedValue)) { 9773 return selectedValue.length > 0; 9774 } 9775 return true; 9776 }, 9777 hasNullItemLabel: (state, enabled) => { 9778 return enabled ? hasNullItemLabel(state.items) : false; 9779 }, 9780 open: (state) => state.open, 9781 mounted: (state) => state.mounted, 9782 forceMounted: (state) => state.forceMounted, 9783 inline: (state) => state.inline, 9784 activeIndex: (state) => state.activeIndex, 9785 selectedIndex: (state) => state.selectedIndex, 9786 isActive: (state, index2) => state.activeIndex === index2, 9787 isSelected: (state, itemValue) => { 9788 const comparer = state.isItemEqualToValue; 9789 const selectedValue = state.selectedValue; 9790 if (Array.isArray(selectedValue)) { 9791 return selectedValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer)); 9792 } 9793 return compareItemEquality(itemValue, selectedValue, comparer); 9794 }, 9795 transitionStatus: (state) => state.transitionStatus, 9796 popupProps: (state) => state.popupProps, 9797 listProps: (state) => state.listProps, 9798 inputProps: (state) => state.inputProps, 9799 triggerProps: (state) => state.triggerProps, 9800 itemRoot: (state) => state.itemRoot, 9801 positionerElement: (state) => state.positionerElement, 9802 listElement: (state) => state.listElement, 9803 popupId: (state) => state.popupId, 9804 triggerElement: (state) => state.triggerElement, 9805 inputElement: (state) => state.inputElement, 9806 inputGroupElement: (state) => state.inputGroupElement, 9807 popupSide: (state) => state.popupSide, 9808 openMethod: (state) => state.openMethod, 9809 inputInsidePopup: (state) => state.inputInsidePopup, 9810 inputOwnsFormValue: (state) => state.inputOwnsFormValue, 9811 selectionMode: (state) => state.selectionMode, 9812 name: (state) => state.name, 9813 form: (state) => state.form, 9814 disabled: (state) => state.disabled, 9815 readOnly: (state) => state.readOnly, 9816 required: (state) => state.required, 9817 grid: (state) => state.grid, 9818 virtualized: (state) => state.virtualized, 9819 itemToStringLabel: (state) => state.itemToStringLabel, 9820 isItemEqualToValue: (state) => state.isItemEqualToValue, 9821 modal: (state) => state.modal, 9822 autoHighlight: (state) => state.autoHighlight 9823 }; 9824 9825 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 9826 var React46 = __toESM(require_react(), 1); 9827 9828 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs 9829 var valid = "data-valid"; 9830 var invalid = "data-invalid"; 9831 9832 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-constants/constants.mjs 9833 var DEFAULT_VALIDITY_STATE = { 9834 badInput: false, 9835 customError: false, 9836 patternMismatch: false, 9837 rangeOverflow: false, 9838 rangeUnderflow: false, 9839 stepMismatch: false, 9840 tooLong: false, 9841 tooShort: false, 9842 typeMismatch: false, 9843 valid: null, 9844 valueMissing: false 9845 }; 9846 var DEFAULT_FIELD_STATE_ATTRIBUTES = { 9847 valid: null, 9848 touched: false, 9849 dirty: false, 9850 filled: false, 9851 focused: false 9852 }; 9853 var DEFAULT_FIELD_ROOT_STATE = { 9854 disabled: false, 9855 ...DEFAULT_FIELD_STATE_ATTRIBUTES 9856 }; 9857 var fieldValidityMapping = { 9858 valid(value) { 9859 if (value === null) { 9860 return null; 9861 } 9862 if (value) { 9863 return { 9864 [valid]: "" 9865 }; 9866 } 9867 return { 9868 [invalid]: "" 9869 }; 9870 } 9871 }; 9872 9873 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 9874 var DEFAULT_FIELD_ROOT_CONTEXT = { 9875 invalid: void 0, 9876 name: void 0, 9877 validityData: { 9878 state: DEFAULT_VALIDITY_STATE, 9879 errors: [], 9880 error: "", 9881 value: "", 9882 initialValue: null 9883 }, 9884 setValidityData: NOOP, 9885 disabled: void 0, 9886 setTouched: NOOP, 9887 setDirty: NOOP, 9888 setFilled: NOOP, 9889 setFocused: NOOP, 9890 focusOwnerRef: { 9891 current: void 0 9892 }, 9893 validationMode: "onSubmit", 9894 shouldValidateOnChange: () => false, 9895 state: DEFAULT_FIELD_ROOT_STATE, 9896 registerFieldControl: NOOP, 9897 validation: { 9898 getValidationProps: (_disabled, props = EMPTY_OBJECT) => props, 9899 inputRef: { 9900 current: null 9901 }, 9902 registeredInputs: /* @__PURE__ */ new Map(), 9903 registerInput: NOOP, 9904 getInputControl: () => null, 9905 commit: async () => { 9906 }, 9907 change: NOOP 9908 } 9909 }; 9910 var FieldRootContext = /* @__PURE__ */ React46.createContext(DEFAULT_FIELD_ROOT_CONTEXT); 9911 if (true) FieldRootContext.displayName = "FieldRootContext"; 9912 function useFieldRootContext(optional = true) { 9913 const context = React46.useContext(FieldRootContext); 9914 if (context.setValidityData === NOOP && !optional) { 9915 throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28)); 9916 } 9917 return context; 9918 } 9919 9920 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs 9921 function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name) { 9922 const { 9923 registerFieldControl 9924 } = useFieldRootContext(); 9925 const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 9926 useIsoLayoutEffect(() => { 9927 const source = sourceRef.current; 9928 if (!enabled) { 9929 registerFieldControl(source, void 0); 9930 return; 9931 } 9932 const registration = { 9933 controlRef, 9934 getValue: getFormValueOverride, 9935 id, 9936 name, 9937 value 9938 }; 9939 registerFieldControl(source, registration); 9940 }, [controlRef, enabled, getFormValueOverride, id, name, registerFieldControl, sourceRef, value]); 9941 useIsoLayoutEffect(() => { 9942 const source = sourceRef.current; 9943 return () => { 9944 registerFieldControl(source, void 0); 9945 }; 9946 }, [registerFieldControl, sourceRef]); 9947 } 9948 9949 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/form-context/FormContext.mjs 9950 var React47 = __toESM(require_react(), 1); 9951 var FormContext = /* @__PURE__ */ React47.createContext({ 9952 elementRef: { 9953 current: null 9954 }, 9955 formRef: { 9956 current: { 9957 fields: /* @__PURE__ */ new Map() 9958 } 9959 }, 9960 errors: {}, 9961 clearErrors: NOOP, 9962 validationMode: "onSubmit", 9963 submitCountRef: { 9964 current: 0 9965 } 9966 }); 9967 if (true) FormContext.displayName = "FormContext"; 9968 function useFormContext() { 9969 return React47.useContext(FormContext); 9970 } 9971 9972 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 9973 var React49 = __toESM(require_react(), 1); 9974 9975 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs 9976 var React48 = __toESM(require_react(), 1); 9977 var LabelableContext = /* @__PURE__ */ React48.createContext({ 9978 controlId: void 0, 9979 registerControlId: NOOP, 9980 resetControlId: NOOP, 9981 labelId: void 0, 9982 setLabelId: NOOP, 9983 messageIds: [], 9984 setMessageIds: NOOP, 9985 getDescriptionProps: (externalProps) => externalProps 9986 }); 9987 if (true) LabelableContext.displayName = "LabelableContext"; 9988 function useLabelableContext() { 9989 return React48.useContext(LabelableContext); 9990 } 9991 9992 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 9993 function useLabelableId(params = {}) { 9994 const { 9995 id, 9996 enabled = true 9997 } = params; 9998 const { 9999 controlId, 10000 registerControlId, 10001 resetControlId 10002 } = useLabelableContext(); 10003 const defaultId = useBaseUiId(); 10004 const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 10005 const hasRegisteredRef = React49.useRef(false); 10006 const hadExplicitIdRef = React49.useRef(false); 10007 const unregisterControlId = useStableCallback(() => { 10008 if (!hasRegisteredRef.current || registerControlId === NOOP) { 10009 return; 10010 } 10011 hasRegisteredRef.current = false; 10012 registerControlId(controlSourceRef.current, void 0); 10013 }); 10014 useIsoLayoutEffect(() => { 10015 if (!enabled || registerControlId === NOOP) { 10016 unregisterControlId(); 10017 return void 0; 10018 } 10019 let nextId; 10020 if (id !== void 0) { 10021 hadExplicitIdRef.current = true; 10022 nextId = id; 10023 } else if (hadExplicitIdRef.current) { 10024 nextId = defaultId; 10025 } else { 10026 resetControlId(); 10027 return void 0; 10028 } 10029 if (nextId === void 0) { 10030 unregisterControlId(); 10031 return void 0; 10032 } 10033 hasRegisteredRef.current = true; 10034 registerControlId(controlSourceRef.current, nextId); 10035 return void 0; 10036 }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]); 10037 useIsoLayoutEffect(() => { 10038 return unregisterControlId; 10039 }, [unregisterControlId]); 10040 return (enabled ? controlId : void 0) ?? id ?? defaultId; 10041 } 10042 10043 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/utils/index.mjs 10044 function getComboboxPopupId(rootId) { 10045 return rootId == null ? void 0 : `$rootId}-popup`; 10046 } 10047 function createCollatorItemFilter(collatorFilter, itemToStringLabel) { 10048 return (item, query) => { 10049 if (item == null) { 10050 return false; 10051 } 10052 return collatorFilter.contains(item, query, itemToStringLabel); 10053 }; 10054 } 10055 10056 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/utils/useFilter.mjs 10057 var React50 = __toESM(require_react(), 1); 10058 10059 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/stringifyLocale.mjs 10060 function stringifyLocale(locale) { 10061 if (Array.isArray(locale)) { 10062 return locale.map((value) => stringifyLocale(value)).join(","); 10063 } 10064 if (locale == null) { 10065 return ""; 10066 } 10067 return String(locale); 10068 } 10069 10070 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/filter.mjs 10071 var filterCache = /* @__PURE__ */ new Map(); 10072 function getFilter(options = {}) { 10073 const { 10074 locale, 10075 ...restOptions 10076 } = options; 10077 const collatorOptions = { 10078 usage: "search", 10079 sensitivity: "base", 10080 ignorePunctuation: true, 10081 ...restOptions 10082 }; 10083 const cacheKey = `$stringifyLocale(locale)}|$JSON.stringify(collatorOptions)}`; 10084 const cachedFilter = filterCache.get(cacheKey); 10085 if (cachedFilter) { 10086 return cachedFilter; 10087 } 10088 const collator = new Intl.Collator(locale, collatorOptions); 10089 const filter = { 10090 contains(item, query, itemToString) { 10091 if (!query) { 10092 return true; 10093 } 10094 const itemString = stringifyAsLabel(item, itemToString); 10095 for (let i = 0; i <= itemString.length - query.length; i += 1) { 10096 if (collator.compare(itemString.slice(i, i + query.length), query) === 0) { 10097 return true; 10098 } 10099 } 10100 return false; 10101 }, 10102 startsWith(item, query, itemToString) { 10103 if (!query) { 10104 return true; 10105 } 10106 const itemString = stringifyAsLabel(item, itemToString); 10107 return collator.compare(itemString.slice(0, query.length), query) === 0; 10108 }, 10109 endsWith(item, query, itemToString) { 10110 if (!query) { 10111 return true; 10112 } 10113 const itemString = stringifyAsLabel(item, itemToString); 10114 const queryLength = query.length; 10115 return itemString.length >= queryLength && collator.compare(itemString.slice(itemString.length - queryLength), query) === 0; 10116 } 10117 }; 10118 filterCache.set(cacheKey, filter); 10119 return filter; 10120 } 10121 10122 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/utils/useFilter.mjs 10123 var useCoreFilter = getFilter; 10124 10125 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/scrollable.mjs 10126 function isScrollableY(element, allowOverflowIntent = false) { 10127 const { 10128 overflowY 10129 } = getComputedStyle2(element); 10130 if (overflowY !== "auto" && overflowY !== "scroll") { 10131 return false; 10132 } 10133 return allowOverflowIntent ? element.clientHeight > 0 : element.scrollHeight > element.clientHeight; 10134 } 10135 10136 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/utils/constants.mjs 10137 var NO_ACTIVE_VALUE = /* @__PURE__ */ Symbol("none"); 10138 var INITIAL_LAST_HIGHLIGHT = { 10139 value: NO_ACTIVE_VALUE, 10140 index: -1 10141 }; 10142 10143 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 10144 var React51 = __toESM(require_react(), 1); 10145 var DirectionContext = /* @__PURE__ */ React51.createContext(void 0); 10146 if (true) DirectionContext.displayName = "DirectionContext"; 10147 function useDirection() { 10148 const context = React51.useContext(DirectionContext); 10149 return context?.direction ?? "ltr"; 10150 } 10151 10152 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/items/itemCollection.mjs 10153 function findCollectionItem(valueToItem, itemValue, isEqual) { 10154 const exactItem = valueToItem.get(itemValue); 10155 if (exactItem !== void 0 || isEqual === defaultItemEquality) { 10156 return exactItem; 10157 } 10158 for (const [derivedValue, item] of valueToItem) { 10159 if (compareItemEquality(derivedValue, itemValue, isEqual)) { 10160 return item; 10161 } 10162 } 10163 return void 0; 10164 } 10165 10166 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/AriaCombobox.mjs 10167 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 10168 function AriaCombobox(props) { 10169 const { 10170 id: idProp, 10171 onOpenChangeComplete: onOpenChangeCompleteProp, 10172 defaultSelectedValue = null, 10173 selectedValue: selectedValueProp, 10174 onSelectedValueChange, 10175 defaultInputValue, 10176 inputValue: inputValueProp, 10177 open: openProp, 10178 defaultOpen = false, 10179 selectionMode, 10180 onItemHighlighted: onItemHighlightedProp, 10181 name: nameProp, 10182 form, 10183 disabled: disabledProp = false, 10184 readOnly = false, 10185 required = false, 10186 inputRef: inputRefProp, 10187 grid = false, 10188 items: itemsProp, 10189 filteredItems: filteredItemsProp, 10190 filter: filterProp, 10191 filterQuery: filterQueryProp, 10192 openOnInputClick = true, 10193 autoHighlight = false, 10194 keepHighlight = false, 10195 highlightItemOnHover = true, 10196 loopFocus = true, 10197 itemToStringLabel: itemToStringLabelProp, 10198 itemToStringValue, 10199 isItemEqualToValue = defaultItemEquality, 10200 virtualized = false, 10201 inline: inlineProp = false, 10202 fillInputOnItemPress = true, 10203 modal = false, 10204 limit = -1, 10205 autoComplete = "list", 10206 formAutoComplete, 10207 locale, 10208 submitOnItemClick = false 10209 } = props; 10210 const { 10211 clearErrors 10212 } = useFormContext(); 10213 const { 10214 setDirty, 10215 validityData, 10216 setFilled, 10217 name: fieldName, 10218 disabled: fieldDisabled, 10219 setTouched, 10220 setFocused, 10221 validationMode, 10222 validation 10223 } = useFieldRootContext(); 10224 const direction = useDirection(); 10225 const id = useLabelableId({ 10226 id: idProp 10227 }); 10228 const collatorFilter = useCoreFilter({ 10229 locale 10230 }); 10231 const collection = Array.isArray(itemsProp) ? null : itemsProp; 10232 if (collection && typeof collection.label !== "function") { 10233 throw new Error(true ? "Base UI: the `items` prop received an object that is not a collection, so its items cannot be read. Pass an array of items, an array of groups with items, or the result of `createItems()`. See https://base-ui.com/react/components/combobox#createitems" : formatErrorMessage_default(100)); 10234 } 10235 const items = collection ? collection.data : itemsProp; 10236 const itemToValue = collection?.value; 10237 const storeItems = itemToValue ? void 0 : items; 10238 const externalWindow = React52.useMemo(() => { 10239 if (!filteredItemsProp || !itemToValue) { 10240 return void 0; 10241 } 10242 const flat = flattenLeafItems(filteredItemsProp); 10243 const values = flat.map(itemToValue); 10244 let valueToItem; 10245 return { 10246 values, 10247 findItem(itemValue, isEqual) { 10248 if (!valueToItem) { 10249 valueToItem = /* @__PURE__ */ new Map(); 10250 for (let i = 0; i < values.length; i += 1) { 10251 if (!valueToItem.has(values[i])) { 10252 valueToItem.set(values[i], flat[i]); 10253 } 10254 } 10255 } 10256 return findCollectionItem(valueToItem, itemValue, isEqual); 10257 } 10258 }; 10259 }, [filteredItemsProp, itemToValue]); 10260 const itemToStringLabel = React52.useMemo(() => { 10261 if (!collection) { 10262 return itemToStringLabelProp; 10263 } 10264 return (itemValue) => { 10265 return collection.label(itemValue, isItemEqualToValue, (unresolvedValue) => { 10266 const externalItem = externalWindow?.findItem(unresolvedValue, isItemEqualToValue); 10267 if (externalItem != null) { 10268 return collection.itemLabel(externalItem); 10269 } 10270 return stringifyAsLabel(unresolvedValue, itemToStringLabelProp); 10271 }); 10272 }; 10273 }, [collection, itemToStringLabelProp, externalWindow, isItemEqualToValue]); 10274 const filterItemToString = React52.useMemo(() => { 10275 if (!collection) { 10276 return itemToStringLabelProp; 10277 } 10278 return Object.assign((item) => collection.itemLabel(item), { 10279 selected: (value) => stringifyAsLabel(value, itemToStringLabel) 10280 }); 10281 }, [collection, itemToStringLabel, itemToStringLabelProp]); 10282 function stringifyValueLabel(item) { 10283 return stringifyAsLabel(item, itemToStringLabel); 10284 } 10285 const [queryChangedAfterOpen, setQueryChangedAfterOpen] = React52.useState(false); 10286 const [closeQuery, setCloseQuery] = React52.useState(null); 10287 const previousCloseQueryRef = React52.useRef(closeQuery); 10288 const listRef = React52.useRef([]); 10289 const labelsRef = React52.useRef([]); 10290 const popupRef = React52.useRef(null); 10291 const inputRef = React52.useRef(null); 10292 const startDismissRef = React52.useRef(null); 10293 const endDismissRef = React52.useRef(null); 10294 const emptyRef = React52.useRef(null); 10295 const hadInputClearRef = React52.useRef(false); 10296 const chipsContainerRef = React52.useRef(null); 10297 const clearRef = React52.useRef(null); 10298 const selectionEventRef = React52.useRef(null); 10299 const lastHighlightRef = React52.useRef(INITIAL_LAST_HIGHLIGHT); 10300 const pendingQueryHighlightRef = React52.useRef(null); 10301 const valuesRef = React52.useRef([]); 10302 const pointerDownItemRef = React52.useRef(null); 10303 const disabled2 = fieldDisabled || disabledProp; 10304 const name = fieldName ?? nameProp; 10305 const multiple = selectionMode === "multiple"; 10306 const single = selectionMode === "single"; 10307 const hasInputValue = inputValueProp !== void 0 || defaultInputValue !== void 0; 10308 const hasItems = items !== void 0; 10309 const hasFilteredItemsProp = filteredItemsProp !== void 0; 10310 let autoHighlightMode; 10311 if (autoHighlight === "always") { 10312 autoHighlightMode = "always"; 10313 } else { 10314 autoHighlightMode = autoHighlight ? "input-change" : false; 10315 } 10316 const [selectedValue, setSelectedValueUnwrapped] = useControlled({ 10317 controlled: selectedValueProp, 10318 default: multiple ? defaultSelectedValue ?? EMPTY_ARRAY : defaultSelectedValue, 10319 name: "Combobox", 10320 state: "selectedValue" 10321 }); 10322 const filter = React52.useMemo(() => { 10323 if (filterProp === null) { 10324 return () => true; 10325 } 10326 if (filterProp !== void 0) { 10327 return filterProp; 10328 } 10329 return createCollatorItemFilter(collatorFilter, filterItemToString); 10330 }, [filterProp, collatorFilter, filterItemToString]); 10331 const initialDefaultInputValue = useRefWithInit(() => { 10332 if (hasInputValue) { 10333 return defaultInputValue ?? ""; 10334 } 10335 if (single) { 10336 return stringifyValueLabel(selectedValue); 10337 } 10338 return ""; 10339 }).current; 10340 const [inputValue, setInputValueUnwrapped] = useControlled({ 10341 controlled: inputValueProp, 10342 default: initialDefaultInputValue, 10343 name: "Combobox", 10344 state: "inputValue" 10345 }); 10346 const [open2, setOpenUnwrapped] = useControlled({ 10347 controlled: openProp, 10348 default: defaultOpen, 10349 name: "Combobox", 10350 state: "open" 10351 }); 10352 const isGrouped = isGroupedItems(items); 10353 const query = !open2 && closeQuery !== null ? closeQuery : String(inputValue).trim(); 10354 const selectedLabelString = single ? stringifyValueLabel(selectedValue) : ""; 10355 const shouldBypassFiltering = single && !queryChangedAfterOpen && query !== "" && selectedLabelString.length === query.length && collatorFilter.contains(selectedLabelString, query); 10356 const filterQuery = shouldBypassFiltering ? "" : filterQueryProp ?? query; 10357 const shouldIgnoreExternalFiltering = hasItems && hasFilteredItemsProp && shouldBypassFiltering && (!collection || collection.hasValue(selectedValue, isItemEqualToValue)); 10358 const flatItems = React52.useMemo(() => items ? flattenLeafItems(items) : EMPTY_ARRAY, [items]); 10359 const filteredItems = React52.useMemo(() => { 10360 if (filteredItemsProp && !shouldIgnoreExternalFiltering) { 10361 return filteredItemsProp; 10362 } 10363 if (!items) { 10364 return EMPTY_ARRAY; 10365 } 10366 if (isGrouped) { 10367 const groupedItems = items; 10368 const resultingGroups = []; 10369 let currentCount = 0; 10370 for (const group of groupedItems) { 10371 if (limit > -1 && currentCount >= limit) { 10372 break; 10373 } 10374 const remainingLimit = limit > -1 ? limit - currentCount : Infinity; 10375 const itemsToTake = filterQuery === "" ? group.items.slice(0, remainingLimit) : []; 10376 if (filterQuery !== "") { 10377 for (const item of group.items) { 10378 if (itemsToTake.length >= remainingLimit) { 10379 break; 10380 } 10381 if (filter(item, filterQuery, filterItemToString)) { 10382 itemsToTake.push(item); 10383 } 10384 } 10385 } 10386 if (itemsToTake.length > 0) { 10387 const newGroup = { 10388 ...group, 10389 items: itemsToTake 10390 }; 10391 resultingGroups.push(newGroup); 10392 currentCount += itemsToTake.length; 10393 } 10394 } 10395 return resultingGroups; 10396 } 10397 if (filterQuery === "") { 10398 return limit > -1 ? flatItems.slice(0, limit) : ( 10399 // The cast here is done as `flatItems` is readonly. 10400 // valuesRef.current, a mutable ref, can be set to `flatFilteredValues`, which may 10401 // reference this exact readonly value, creating a mutation risk. 10402 // However, <Combobox.Item> can never mutate this value as the mutating effect 10403 // bails early when `items` is provided, and this is only ever returned 10404 // when `items` is provided due to the early return at the top of this hook. 10405 flatItems 10406 ); 10407 } 10408 const limitedItems = []; 10409 for (const item of flatItems) { 10410 if (limit > -1 && limitedItems.length >= limit) { 10411 break; 10412 } 10413 if (filter(item, filterQuery, filterItemToString)) { 10414 limitedItems.push(item); 10415 } 10416 } 10417 return limitedItems; 10418 }, [filteredItemsProp, shouldIgnoreExternalFiltering, items, isGrouped, filterQuery, limit, filter, filterItemToString, flatItems]); 10419 const flatFilteredValues = React52.useMemo(() => { 10420 if (externalWindow && filteredItems === filteredItemsProp) { 10421 return externalWindow.values; 10422 } 10423 const flat = flattenLeafItems(filteredItems); 10424 return itemToValue ? flat.map((item) => itemToValue(item)) : flat; 10425 }, [filteredItems, filteredItemsProp, externalWindow, itemToValue]); 10426 const store = useRefWithInit(() => { 10427 let initialSelectedIndex = null; 10428 if (inlineProp && open2 && hasItems && selectionMode !== "none") { 10429 initialSelectedIndex = findSelectionIndex(flatFilteredValues, selectedValue, isItemEqualToValue, multiple); 10430 } 10431 return new ReactStore({ 10432 id, 10433 labelId: void 0, 10434 selectedValue, 10435 open: open2, 10436 items: storeItems, 10437 selectionMode, 10438 name, 10439 form, 10440 disabled: disabled2, 10441 readOnly, 10442 required, 10443 grid, 10444 virtualized, 10445 openOnInputClick, 10446 itemToStringLabel, 10447 isItemEqualToValue, 10448 modal, 10449 autoHighlight: autoHighlightMode, 10450 submitOnItemClick, 10451 hasInputValue, 10452 mounted: false, 10453 forceMounted: false, 10454 transitionStatus: "idle", 10455 inline: inlineProp, 10456 activeIndex: null, 10457 selectedIndex: initialSelectedIndex, 10458 popupProps: {}, 10459 listProps: {}, 10460 inputProps: {}, 10461 triggerProps: {}, 10462 itemRoot: { 10463 props: EMPTY_OBJECT, 10464 id, 10465 selectionMode, 10466 disabled: disabled2, 10467 readOnly, 10468 isItemEqualToValue 10469 }, 10470 positionerElement: null, 10471 listElement: null, 10472 popupId: void 0, 10473 triggerElement: null, 10474 inputElement: null, 10475 inputGroupElement: null, 10476 popupSide: null, 10477 openMethod: null, 10478 inputInsidePopup: true, 10479 // Avoid duplicate names in the server HTML. Popup inputs aren't rendered 10480 // until after hydration, so the hidden input takes over then if needed. 10481 inputOwnsFormValue: selectionMode === "none" 10482 }, { 10483 // Placeholder callbacks replaced on first render 10484 onOpenChangeComplete: NOOP, 10485 setOpen: NOOP, 10486 setInputValue: NOOP, 10487 setSelectedValue: NOOP, 10488 setIndices: NOOP, 10489 handleSelection: NOOP, 10490 forceMount: NOOP, 10491 requestSubmit: NOOP, 10492 listRef, 10493 labelsRef, 10494 popupRef, 10495 emptyRef, 10496 inputRef, 10497 startDismissRef, 10498 endDismissRef, 10499 chipsContainerRef, 10500 clearRef, 10501 valuesRef, 10502 pointerDownItemRef, 10503 selectionEventRef 10504 }, selectors2); 10505 }).current; 10506 const fieldRawValue = selectionMode === "none" ? inputValue : selectedValue; 10507 const fieldStringValue = React52.useMemo(() => { 10508 if (selectionMode === "none") { 10509 return fieldRawValue; 10510 } 10511 if (Array.isArray(selectedValue)) { 10512 return selectedValue.map((value) => stringifyAsValue(value, itemToStringValue)); 10513 } 10514 return stringifyAsValue(selectedValue, itemToStringValue); 10515 }, [fieldRawValue, itemToStringValue, selectionMode, selectedValue]); 10516 const onItemHighlighted = useStableCallback(onItemHighlightedProp); 10517 const onOpenChangeComplete = useStableCallback(onOpenChangeCompleteProp); 10518 const activeIndex = store.useState("activeIndex"); 10519 const selectedIndex = store.useState("selectedIndex"); 10520 const positionerElement = store.useState("positionerElement"); 10521 const listElement = store.useState("listElement"); 10522 const triggerElement = store.useState("triggerElement"); 10523 const inputElement = store.useState("inputElement"); 10524 const inputGroupElement = store.useState("inputGroupElement"); 10525 const inline4 = store.useState("inline"); 10526 const inputInsidePopup = store.useState("inputInsidePopup"); 10527 const inputOwnsFormValue = store.useState("inputOwnsFormValue"); 10528 const inputMatchesSelectedValue = single && !inputInsidePopup && inputValue === selectedLabelString; 10529 const triggerRef = useValueAsRef(triggerElement); 10530 const { 10531 openMethod, 10532 triggerProps 10533 } = useOpenInteractionType(open2); 10534 const getStringifiedValueForForm = useStableCallback(() => fieldStringValue); 10535 useRegisterFieldControl(inputInsidePopup ? triggerRef : inputRef, id, fieldRawValue, getStringifiedValueForForm, !disabled2, nameProp); 10536 const forceMount = useStableCallback(() => { 10537 if (items) { 10538 labelsRef.current = flatFilteredValues.map(stringifyValueLabel); 10539 } else { 10540 store.set("forceMounted", true); 10541 } 10542 }); 10543 const emitHighlight = useStableCallback((value, index2, type, event) => { 10544 if (index2 === -1) { 10545 if (lastHighlightRef.current === INITIAL_LAST_HIGHLIGHT) { 10546 return; 10547 } 10548 lastHighlightRef.current = INITIAL_LAST_HIGHLIGHT; 10549 } else { 10550 lastHighlightRef.current = { 10551 value, 10552 index: index2 10553 }; 10554 } 10555 onItemHighlighted(value, createGenericEventDetails(type, event, { 10556 index: index2 10557 })); 10558 }); 10559 const setIndices = useStableCallback((options) => { 10560 const update2 = {}; 10561 if (options.activeIndex !== void 0) { 10562 update2.activeIndex = options.activeIndex; 10563 } 10564 if (options.selectedIndex !== void 0) { 10565 update2.selectedIndex = options.selectedIndex; 10566 } 10567 store.update(update2); 10568 const activeIndexOption = options.activeIndex; 10569 if (activeIndexOption === void 0) { 10570 return; 10571 } 10572 const type = options.type || reason_parts_exports.none; 10573 if (activeIndexOption === null) { 10574 emitHighlight(void 0, -1, type, options.event); 10575 } else { 10576 emitHighlight(valuesRef.current[activeIndexOption], activeIndexOption, type, options.event); 10577 } 10578 }); 10579 const setInputValue = useStableCallback((next, eventDetails) => { 10580 props.onInputValueChange?.(next, eventDetails); 10581 if (eventDetails.isCanceled) { 10582 return; 10583 } 10584 hadInputClearRef.current = eventDetails.reason === reason_parts_exports.inputClear; 10585 if (eventDetails.reason === reason_parts_exports.inputChange) { 10586 if (open2 && closeQuery !== null) { 10587 setCloseQuery(null); 10588 } 10589 const event = eventDetails.event; 10590 const inputType = event.inputType; 10591 const isTypedInput = event.type === "compositionend" || inputType != null && inputType !== "" && inputType !== "insertReplacementText"; 10592 if (isTypedInput) { 10593 const hasQuery = next.trim() !== ""; 10594 if (hasQuery) { 10595 setQueryChangedAfterOpen(true); 10596 } 10597 pendingQueryHighlightRef.current = { 10598 hasQuery 10599 }; 10600 const list = store.state.listElement; 10601 if (!store.state.virtualized && list) { 10602 const popup = popupRef.current; 10603 for (const ancestor of getOverflowAncestors(list.firstElementChild ?? list)) { 10604 if (!isHTMLElement(ancestor) || (popup ? !contains(popup, ancestor) : ancestor.getAttribute("role") === "dialog")) { 10605 break; 10606 } 10607 if (isScrollableY(ancestor)) { 10608 ancestor.scrollTop = 0; 10609 break; 10610 } 10611 } 10612 } 10613 if (hasQuery && autoHighlightMode && store.state.activeIndex == null && (open2 || inline4)) { 10614 store.set("activeIndex", 0); 10615 } 10616 } 10617 } else if (eventDetails.reason === reason_parts_exports.inputClear && next === "" && store.state.inputInsidePopup) { 10618 pendingQueryHighlightRef.current = { 10619 hasQuery: false, 10620 selection: true 10621 }; 10622 } 10623 setInputValueUnwrapped(next); 10624 }); 10625 const handleInterruptedReopen = useStableCallback((isInputChange) => { 10626 const clearsPendingInput = !isInputChange && inputInsidePopup && !inline4 && inputValue !== "" && (String(inputValue).trim() === closeQuery || inputValue === selectedLabelString); 10627 if (!isInputChange && (clearsPendingInput || inputValue === "" || inputMatchesSelectedValue)) { 10628 setQueryChangedAfterOpen(false); 10629 } 10630 setCloseQuery(null); 10631 if (clearsPendingInput) { 10632 setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear)); 10633 } 10634 }); 10635 const [preventUnmountOnClose, setPreventUnmountOnClose] = React52.useState(false); 10636 const setOpen = useStableCallback((nextOpen, eventDetails) => { 10637 if (open2 === nextOpen) { 10638 return; 10639 } 10640 if (eventDetails.reason === reason_parts_exports.escapeKey && hasItems && flatFilteredValues.length === 0 && !emptyRef.current) { 10641 eventDetails.allowPropagation(); 10642 } 10643 const openEventDetails = eventDetails; 10644 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(openEventDetails); 10645 props.onOpenChange?.(nextOpen, openEventDetails); 10646 if (pendingQueryHighlightRef.current?.hasQuery && eventDetails.reason === reason_parts_exports.inputChange === eventDetails.isCanceled) { 10647 pendingQueryHighlightRef.current = null; 10648 } 10649 if (eventDetails.isCanceled) { 10650 return; 10651 } 10652 if (nextOpen && closeQuery !== null) { 10653 handleInterruptedReopen(eventDetails.reason === reason_parts_exports.inputChange); 10654 } 10655 if (!nextOpen && queryChangedAfterOpen) { 10656 if (single) { 10657 if (!inline4) { 10658 setCloseQuery(query); 10659 } 10660 if (query === "") { 10661 setQueryChangedAfterOpen(false); 10662 } 10663 } else if (multiple) { 10664 if (!inline4) { 10665 setCloseQuery(query); 10666 } 10667 if (inputInsidePopup) { 10668 setIndices({ 10669 activeIndex: null 10670 }); 10671 } 10672 if (!inputInsidePopup || inline4) { 10673 setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear, eventDetails.event, void 0, { 10674 isItemPress: eventDetails.reason === reason_parts_exports.itemPress 10675 })); 10676 } 10677 } 10678 } 10679 if (!nextOpen) { 10680 setPreventUnmountOnClose(shouldPreventUnmountOnClose()); 10681 } 10682 setOpenUnwrapped(nextOpen); 10683 if (!nextOpen && inputInsidePopup && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) { 10684 setTouched(true); 10685 setFocused(false); 10686 if (validationMode === "onBlur") { 10687 const valueToValidate = selectionMode === "none" ? inputValue : selectedValue; 10688 validation.commit(valueToValidate); 10689 } 10690 } 10691 }); 10692 const setSelectedValue = useStableCallback((nextValue, eventDetails) => { 10693 onSelectedValueChange?.(nextValue, eventDetails); 10694 if (eventDetails.isCanceled) { 10695 return; 10696 } 10697 setSelectedValueUnwrapped(nextValue); 10698 const shouldFillInput = selectionMode === "none" && popupRef.current && fillInputOnItemPress || single && !store.state.inputInsidePopup; 10699 if (shouldFillInput) { 10700 setInputValue(stringifyValueLabel(nextValue), createChangeEventDetails(eventDetails.reason, eventDetails.event)); 10701 } 10702 }); 10703 const handleSelection = useStableCallback((event, itemValue) => { 10704 const targetEl = getTarget(event); 10705 const overrideEvent = selectionEventRef.current ?? event; 10706 selectionEventRef.current = null; 10707 const eventDetails = createChangeEventDetails(reason_parts_exports.itemPress, overrideEvent); 10708 const href = closest(targetEl, "a")?.getAttribute("href"); 10709 if (href) { 10710 if (href.startsWith("#")) { 10711 setOpen(false, eventDetails); 10712 } 10713 return; 10714 } 10715 if (multiple) { 10716 const currentSelectedValue = Array.isArray(selectedValue) ? selectedValue : []; 10717 const isCurrentlySelected = selectedValueIncludes(currentSelectedValue, itemValue, isItemEqualToValue); 10718 const nextValue = isCurrentlySelected ? removeItem(currentSelectedValue, itemValue, isItemEqualToValue) : [...currentSelectedValue, itemValue]; 10719 setSelectedValue(nextValue, eventDetails); 10720 if (eventDetails.isCanceled) { 10721 return; 10722 } 10723 const wasFiltering = inputRef.current ? inputRef.current.value.trim() !== "" : false; 10724 if (!wasFiltering) { 10725 return; 10726 } 10727 if (store.state.inputInsidePopup) { 10728 setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear, eventDetails.event, void 0, { 10729 isItemPress: true 10730 })); 10731 const pendingHighlight = pendingQueryHighlightRef.current; 10732 if (pendingHighlight && !isCurrentlySelected) { 10733 pendingHighlight.toggledValue = itemValue; 10734 } 10735 } else { 10736 setOpen(false, eventDetails); 10737 } 10738 } else { 10739 setSelectedValue(itemValue, eventDetails); 10740 if (eventDetails.isCanceled) { 10741 return; 10742 } 10743 setOpen(false, eventDetails); 10744 } 10745 }); 10746 const requestSubmit = useStableCallback(() => { 10747 const formElement = validation.inputRef.current?.form ?? store.state.inputElement?.form; 10748 if (formElement && typeof formElement.requestSubmit === "function") { 10749 formElement.requestSubmit(); 10750 } 10751 }); 10752 const handleUnmountCleanup = useStableCallback(() => { 10753 onOpenChangeComplete?.(false); 10754 setQueryChangedAfterOpen(false); 10755 setCloseQuery(null); 10756 if (selectionMode === "none") { 10757 setIndices({ 10758 activeIndex: null, 10759 selectedIndex: null 10760 }); 10761 } else { 10762 setIndices({ 10763 activeIndex: null 10764 }); 10765 } 10766 if (multiple && inputRef.current && inputRef.current.value !== "" && !hadInputClearRef.current) { 10767 setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear)); 10768 } 10769 if (single) { 10770 if (store.state.inputInsidePopup) { 10771 if (inputRef.current && inputRef.current.value !== "") { 10772 setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear)); 10773 } 10774 } else { 10775 const stringVal = stringifyValueLabel(selectedValue); 10776 if (inputRef.current && inputRef.current.value !== stringVal) { 10777 const reason = stringVal === "" ? reason_parts_exports.inputClear : reason_parts_exports.none; 10778 setInputValue(stringVal, createChangeEventDetails(reason)); 10779 } 10780 } 10781 } 10782 }); 10783 const resolvedPopupRef = React52.useMemo(() => { 10784 if (inline4 && positionerElement) { 10785 return { 10786 current: closest(positionerElement, '[role="dialog"]') 10787 }; 10788 } 10789 return popupRef; 10790 }, [inline4, positionerElement]); 10791 const { 10792 mounted, 10793 transitionStatus, 10794 forceUnmount: handleUnmount 10795 } = useUnmountAfterClose({ 10796 open: open2, 10797 ref: resolvedPopupRef, 10798 preventUnmountOnClose, 10799 setPreventUnmountOnClose, 10800 onUnmount: handleUnmountCleanup 10801 }); 10802 React52.useImperativeHandle(props.actionsRef, () => ({ 10803 unmount: handleUnmount, 10804 close: () => setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)) 10805 }), [handleUnmount, setOpen]); 10806 useIsoLayoutEffect(function syncSelectedIndex() { 10807 const closeQueryReleased = previousCloseQueryRef.current !== null && closeQuery === null; 10808 previousCloseQueryRef.current = closeQuery; 10809 if (open2 && (!closeQueryReleased || !hasItems)) { 10810 return; 10811 } 10812 if (!open2) { 10813 pointerDownItemRef.current = null; 10814 } 10815 if (selectionMode === "none") { 10816 return; 10817 } 10818 const registry = hasItems ? flatFilteredValues : valuesRef.current; 10819 setIndices({ 10820 selectedIndex: findSelectionIndex(registry, selectedValue, isItemEqualToValue, multiple) 10821 }); 10822 }, [open2, closeQuery, selectedValue, selectionMode, multiple, hasItems, flatFilteredValues, isItemEqualToValue, setIndices]); 10823 useIsoLayoutEffect(() => { 10824 if (items) { 10825 valuesRef.current = flatFilteredValues; 10826 listRef.current.length = flatFilteredValues.length; 10827 } 10828 }, [items, flatFilteredValues]); 10829 useIsoLayoutEffect(() => { 10830 if (!open2 && pendingQueryHighlightRef.current?.hasQuery) { 10831 pendingQueryHighlightRef.current = null; 10832 } 10833 }, [open2]); 10834 useIsoLayoutEffect(() => { 10835 if (!open2 && inline4 && resolvedPopupRef.current) { 10836 pendingQueryHighlightRef.current = null; 10837 return; 10838 } 10839 const candidateItems = hasItems || hasFilteredItemsProp ? flatFilteredValues : valuesRef.current; 10840 const pendingHighlight = pendingQueryHighlightRef.current; 10841 if (pendingHighlight) { 10842 const listIsNavigable = open2 || inline4 || store.state.positionerElement?.hidden === false; 10843 if (pendingHighlight.hasQuery) { 10844 const input = inputRef.current; 10845 if (!autoHighlightMode || String(inputValue).trim() === "" || inline4 && autoHighlightMode !== "always" && (!input || activeElement(input.ownerDocument) !== input)) { 10846 pendingQueryHighlightRef.current = null; 10847 } else if (listIsNavigable && // Individually rendered items register without re-running this effect, and their 10848 // registry has holes mid-reindex, so resolve their request immediately. 10849 (candidateItems[0] !== void 0 || !hasItems && !hasFilteredItemsProp)) { 10850 store.set("activeIndex", 0); 10851 pendingQueryHighlightRef.current = null; 10852 } 10853 } else if (String(inputValue).trim() === "") { 10854 pendingQueryHighlightRef.current = null; 10855 if (listIsNavigable) { 10856 const clearedBySelection = pendingHighlight.selection; 10857 if (autoHighlightMode === "always" && !clearedBySelection && store.state.selectionMode === "none") { 10858 store.set("activeIndex", 0); 10859 } 10860 queueMicrotask(() => { 10861 if (!store.state.open && (!store.state.inline || resolvedPopupRef.current) || inputRef.current && inputRef.current.value.trim() !== "") { 10862 return; 10863 } 10864 const currentSelectedValue = store.state.selectedValue; 10865 const isMultiple = store.state.selectionMode === "multiple"; 10866 const hasSelection = isMultiple && Array.isArray(currentSelectedValue) ? currentSelectedValue.length > 0 : store.state.selectionMode !== "none" && currentSelectedValue != null; 10867 if (hasSelection) { 10868 const registry = hasItems || hasFilteredItemsProp ? flatFilteredValues : valuesRef.current; 10869 const toggledIndex = findItemIndex(registry, pendingHighlight.toggledValue, store.state.isItemEqualToValue); 10870 store.set("activeIndex", toggledIndex !== -1 ? toggledIndex : findSelectionIndex(registry, currentSelectedValue, store.state.isItemEqualToValue, isMultiple)); 10871 } else if (clearedBySelection) { 10872 store.set("activeIndex", null); 10873 } else if (autoHighlightMode === "always") { 10874 store.set("activeIndex", 0); 10875 } 10876 }); 10877 } 10878 } 10879 } 10880 if (!open2 && !inline4) { 10881 return; 10882 } 10883 const storeActiveIndex = store.state.activeIndex; 10884 if (storeActiveIndex == null) { 10885 if (autoHighlightMode === "always" && candidateItems.length > 0) { 10886 store.set("activeIndex", 0); 10887 return; 10888 } 10889 emitHighlight(void 0, -1, reason_parts_exports.none); 10890 return; 10891 } 10892 if (storeActiveIndex >= candidateItems.length) { 10893 emitHighlight(void 0, -1, reason_parts_exports.none); 10894 store.set("activeIndex", null); 10895 return; 10896 } 10897 const itemValue = candidateItems[storeActiveIndex]; 10898 const previouslyHighlightedItemValue = lastHighlightRef.current.value; 10899 const isSameItem = previouslyHighlightedItemValue !== NO_ACTIVE_VALUE && compareItemEquality(itemValue, previouslyHighlightedItemValue, store.state.isItemEqualToValue); 10900 if (lastHighlightRef.current.index !== storeActiveIndex || !isSameItem) { 10901 emitHighlight(itemValue, storeActiveIndex, reason_parts_exports.none); 10902 } 10903 }, [ 10904 activeIndex, 10905 autoHighlightMode, 10906 emitHighlight, 10907 hasFilteredItemsProp, 10908 hasItems, 10909 flatFilteredValues, 10910 inline4, 10911 open2, 10912 resolvedPopupRef, 10913 store, 10914 // Reruns the effect when the query changes without affecting the deps above, such as 10915 // clearing the input when no items are filtered out (individually rendered items). 10916 inputValue 10917 ]); 10918 useIsoLayoutEffect(() => { 10919 if (selectionMode === "none") { 10920 setFilled(String(inputValue) !== ""); 10921 return; 10922 } 10923 setFilled(multiple ? Array.isArray(selectedValue) && selectedValue.length > 0 : selectedValue != null); 10924 }, [setFilled, selectionMode, inputValue, selectedValue, multiple]); 10925 React52.useEffect(() => { 10926 if (hasItems && autoHighlightMode && flatFilteredValues.length === 0) { 10927 setIndices({ 10928 activeIndex: null 10929 }); 10930 } 10931 }, [hasItems, autoHighlightMode, flatFilteredValues.length, setIndices]); 10932 function handleQueryChanged() { 10933 if (open2 && query !== "" && query !== String(initialDefaultInputValue) && !inputMatchesSelectedValue) { 10934 setQueryChangedAfterOpen(true); 10935 } 10936 } 10937 function handleOpenChanged() { 10938 if (open2 && closeQuery !== null) { 10939 handleInterruptedReopen(false); 10940 } 10941 } 10942 let syncedSelectedLabel = false; 10943 function syncInputToSelectedLabel() { 10944 if (!syncedSelectedLabel && inputValue !== selectedLabelString) { 10945 syncedSelectedLabel = true; 10946 setInputValue(selectedLabelString, createChangeEventDetails(reason_parts_exports.none)); 10947 } 10948 } 10949 function handleSelectedValueChanged() { 10950 if (selectionMode === "none") { 10951 return; 10952 } 10953 clearErrors(name); 10954 setDirty(isSelectedValueDirty(selectedValue, validityData.initialValue, isItemEqualToValue)); 10955 validation.change(selectedValue); 10956 if (single && !hasInputValue && !inputInsidePopup) { 10957 syncInputToSelectedLabel(); 10958 } 10959 } 10960 function syncInputAfterItemsOrLabelChange() { 10961 if (single && !hasInputValue && !inputInsidePopup && !queryChangedAfterOpen) { 10962 syncInputToSelectedLabel(); 10963 } 10964 } 10965 function handleInputValueChanged() { 10966 if (selectionMode !== "none") { 10967 return; 10968 } 10969 clearErrors(name); 10970 setDirty(inputValue !== validityData.initialValue); 10971 validation.change(inputValue); 10972 } 10973 useValueChanged(query, handleQueryChanged); 10974 useValueChanged(open2, handleOpenChanged); 10975 useValueChanged(selectedValue, handleSelectedValueChanged); 10976 useValueChanged(selectedLabelString, syncInputAfterItemsOrLabelChange); 10977 useValueChanged(items, syncInputAfterItemsOrLabelChange); 10978 useValueChanged(inputValue, handleInputValueChanged); 10979 const floatingRootContext = useFloatingRootContext({ 10980 open: inline4 ? true : open2, 10981 onOpenChange: setOpen, 10982 elements: { 10983 reference: inputInsidePopup ? triggerElement : inputElement, 10984 floating: positionerElement 10985 } 10986 }); 10987 const ariaHasPopup = grid ? "grid" : "listbox"; 10988 const expanded = open2 || inline4; 10989 const ariaExpanded = expanded ? "true" : "false"; 10990 const role = React52.useMemo(() => { 10991 const isPlainInput = inputElement?.tagName === "INPUT"; 10992 const shouldTreatAsInput = inputElement == null || isPlainInput; 10993 const shouldApplyAria = shouldTreatAsInput || expanded; 10994 const reference = shouldTreatAsInput ? { 10995 autoComplete: "off", 10996 spellCheck: "false", 10997 autoCorrect: "off", 10998 autoCapitalize: "none" 10999 } : {}; 11000 if (shouldApplyAria) { 11001 reference.role = "combobox"; 11002 reference["aria-expanded"] = ariaExpanded; 11003 reference["aria-haspopup"] = ariaHasPopup; 11004 reference["aria-controls"] = expanded ? listElement?.id : void 0; 11005 reference["aria-autocomplete"] = readOnly ? "none" : autoComplete; 11006 } 11007 return { 11008 reference, 11009 floating: { 11010 role: "presentation" 11011 } 11012 }; 11013 }, [inputElement, expanded, ariaExpanded, ariaHasPopup, listElement?.id, autoComplete, readOnly]); 11014 const click = useClick(floatingRootContext, { 11015 enabled: !disabled2 && openOnInputClick, 11016 event: "mousedown-only", 11017 toggle: false, 11018 // Apply a small delay for touch to let mobile viewport/keyboard positioning settle. 11019 // This avoids top-bottom flip flickers if the preferred position is "top" when first tapping. 11020 touchOpenDelay: inputInsidePopup ? 0 : 100, 11021 reason: reason_parts_exports.inputPress 11022 }); 11023 const dismiss = useDismiss(floatingRootContext, { 11024 enabled: !disabled2 && !inline4, 11025 outsidePressEvent: { 11026 mouse: "sloppy", 11027 // The visual viewport (affected by the mobile software keyboard) can be 11028 // somewhat small. The user may want to scroll the screen to see more of 11029 // the popup. 11030 touch: "intentional" 11031 }, 11032 // Without a popup, let the Escape key bubble the event up to other popups' handlers. 11033 bubbles: inline4 ? true : void 0, 11034 outsidePress(event) { 11035 const target = getTarget(event); 11036 return !contains(triggerElement, target) && !contains(clearRef.current, target) && !contains(chipsContainerRef.current, target) && !contains(inputGroupElement, target); 11037 } 11038 }); 11039 const listNavigation2 = useListNavigation(floatingRootContext, { 11040 enabled: !disabled2, 11041 id, 11042 listRef, 11043 activeIndex, 11044 selectedIndex, 11045 virtual: true, 11046 loopFocus, 11047 allowEscape: loopFocus && !autoHighlightMode, 11048 focusItemOnOpen: queryChangedAfterOpen || selectionMode === "none" && !autoHighlightMode ? false : "auto", 11049 focusItemOnHover: highlightItemOnHover, 11050 resetOnPointerLeave: !keepHighlight, 11051 orientation: grid ? "horizontal" : void 0, 11052 rtl: direction === "rtl", 11053 disabledIndices: EMPTY_ARRAY, 11054 grid: grid ? gridNavigation : void 0, 11055 onNavigate(nextActiveIndex, event) { 11056 if (!event && !open2 && !(inline4 && nextActiveIndex === null) || transitionStatus === "ending") { 11057 return; 11058 } 11059 setIndices({ 11060 activeIndex: nextActiveIndex, 11061 type: getHighlightReason(event), 11062 event: event?.nativeEvent 11063 }); 11064 } 11065 }); 11066 const inputProps = React52.useMemo(() => mergeProps(listNavigation2.reference, { 11067 onKeyDown(event) { 11068 if (grid && store.state.activeIndex == null && (event.key === "ArrowLeft" || event.key === "ArrowRight")) { 11069 event.preventBaseUIHandler(); 11070 } 11071 } 11072 }, dismiss.reference, click.reference, role.reference), [listNavigation2.reference, dismiss.reference, click.reference, role.reference, grid, store]); 11073 const popupProps = React52.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, dismiss.floating), [dismiss.floating]); 11074 const listProps = React52.useMemo(() => mergeProps(listNavigation2.floating, role.floating), [listNavigation2.floating, role.floating]); 11075 const itemRoot = React52.useMemo(() => { 11076 const listNavigationItemProps = listNavigation2.item; 11077 return { 11078 // Combobox keeps focus on the input; item focus would incorrectly sync 11079 // list navigation state from DOM focus. 11080 props: listNavigationItemProps ? { 11081 ...listNavigationItemProps, 11082 onFocus: void 0 11083 } : EMPTY_OBJECT, 11084 id, 11085 selectionMode, 11086 disabled: disabled2, 11087 readOnly, 11088 isItemEqualToValue 11089 }; 11090 }, [listNavigation2.item, id, selectionMode, disabled2, readOnly, isItemEqualToValue]); 11091 store.useContextCallback("setOpen", setOpen); 11092 store.useContextCallback("setInputValue", setInputValue); 11093 store.useContextCallback("setSelectedValue", setSelectedValue); 11094 store.useContextCallback("setIndices", setIndices); 11095 store.useContextCallback("handleSelection", handleSelection); 11096 store.useContextCallback("forceMount", forceMount); 11097 store.useContextCallback("requestSubmit", requestSubmit); 11098 store.useContextCallback("onOpenChangeComplete", onOpenChangeCompleteProp); 11099 useOnFirstRender(() => { 11100 store.update({ 11101 inline: inlineProp, 11102 popupProps, 11103 listProps, 11104 inputProps, 11105 triggerProps, 11106 itemRoot 11107 }); 11108 }); 11109 const syncedValues = { 11110 id, 11111 selectedValue, 11112 open: open2, 11113 mounted, 11114 transitionStatus, 11115 items: storeItems, 11116 inline: inlineProp, 11117 popupProps, 11118 listProps, 11119 inputProps, 11120 triggerProps, 11121 itemRoot, 11122 openMethod, 11123 selectionMode, 11124 name, 11125 form, 11126 disabled: disabled2, 11127 readOnly, 11128 required, 11129 grid, 11130 virtualized, 11131 openOnInputClick, 11132 itemToStringLabel, 11133 modal, 11134 autoHighlight: autoHighlightMode, 11135 isItemEqualToValue, 11136 submitOnItemClick, 11137 hasInputValue 11138 }; 11139 useIsoLayoutEffect(() => { 11140 store.update({ 11141 ...syncedValues, 11142 inputOwnsFormValue: selectionMode === "none" && (inlineProp || !store.state.inputInsidePopup) 11143 }); 11144 }, [store, ...Object.values(syncedValues)]); 11145 const hiddenInputRef = useMergedRefs(inputRefProp, validation.inputRef); 11146 const itemsContextValue = React52.useMemo(() => ({ 11147 query, 11148 hasItems, 11149 filteredItems, 11150 flatFilteredValues 11151 }), [query, hasItems, filteredItems, flatFilteredValues]); 11152 const serializedValue = React52.useMemo(() => { 11153 if (Array.isArray(fieldRawValue)) { 11154 return ""; 11155 } 11156 return stringifyAsValue(fieldRawValue, itemToStringValue); 11157 }, [fieldRawValue, itemToStringValue]); 11158 const hasMultipleSelection = multiple && Array.isArray(selectedValue) && selectedValue.length > 0; 11159 const hiddenInputName = multiple || selectionMode === "none" && inputOwnsFormValue ? void 0 : name; 11160 const hiddenInputs = React52.useMemo(() => { 11161 if (!multiple || !Array.isArray(selectedValue) || !name) { 11162 return null; 11163 } 11164 return selectedValue.map((value) => { 11165 const currentSerializedValue = stringifyAsValue(value, itemToStringValue); 11166 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("input", { 11167 type: "hidden", 11168 form, 11169 name, 11170 value: currentSerializedValue, 11171 disabled: disabled2 11172 }, currentSerializedValue); 11173 }); 11174 }, [multiple, selectedValue, form, name, itemToStringValue, disabled2]); 11175 const children = /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(React52.Fragment, { 11176 children: [props.children, /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("input", { 11177 ...validation.getValidationProps(disabled2, { 11178 // Move focus when the hidden input is focused. 11179 onFocus() { 11180 if (inputInsidePopup) { 11181 triggerElement?.focus(); 11182 return; 11183 } 11184 (inputRef.current || triggerElement)?.focus(); 11185 }, 11186 // Handle browser autofill. 11187 onChange(event) { 11188 if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) { 11189 return; 11190 } 11191 const nextValue = event.currentTarget.value; 11192 const nextValueLower = nextValue.toLowerCase(); 11193 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 11194 const findSerializedMatchIndex = () => valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyValueLabel(candidate).toLowerCase() === nextValueLower); 11195 function handleChange() { 11196 if (multiple) { 11197 return; 11198 } 11199 if (selectionMode === "none") { 11200 setInputValue(nextValue, details); 11201 return; 11202 } 11203 let matchingIndex = findSerializedMatchIndex(); 11204 if (matchingIndex === -1) { 11205 matchingIndex = valuesRef.current.findIndex((_, index2) => { 11206 const renderedLabel = labelsRef.current[index2]; 11207 return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower; 11208 }); 11209 } 11210 const matchingValue = matchingIndex === -1 ? void 0 : valuesRef.current[matchingIndex]; 11211 if (matchingValue != null) { 11212 setSelectedValue?.(matchingValue, details); 11213 } 11214 } 11215 if (single) { 11216 forceMount(); 11217 if (items && findSerializedMatchIndex() === -1) { 11218 store.set("forceMounted", true); 11219 } 11220 } 11221 queueMicrotask(handleChange); 11222 } 11223 }), 11224 id: id && hiddenInputName == null ? `$id}-hidden-input` : void 0, 11225 form, 11226 name: hiddenInputName, 11227 autoComplete: formAutoComplete, 11228 disabled: disabled2, 11229 required: required && !hasMultipleSelection, 11230 readOnly, 11231 value: serializedValue, 11232 ref: hiddenInputRef, 11233 style: hiddenInputName ? visuallyHiddenInput : visuallyHidden, 11234 tabIndex: -1, 11235 "aria-hidden": true, 11236 suppressHydrationWarning: true 11237 }), hiddenInputs] 11238 }); 11239 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ComboboxRootContext.Provider, { 11240 value: store, 11241 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ComboboxFloatingContext.Provider, { 11242 value: floatingRootContext, 11243 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ComboboxHasItemsContext.Provider, { 11244 value: hasItems, 11245 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ComboboxDerivedItemsContext.Provider, { 11246 value: itemsContextValue, 11247 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ComboboxInputValueContext.Provider, { 11248 value: inputValue, 11249 children 11250 }) 11251 }) 11252 }) 11253 }) 11254 }); 11255 } 11256 11257 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/root/AutocompleteRoot.mjs 11258 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 11259 function AutocompleteRoot(props) { 11260 const { 11261 openOnInputClick = false, 11262 value, 11263 defaultValue, 11264 onValueChange, 11265 mode = "list", 11266 itemToStringValue, 11267 ...other 11268 } = props; 11269 const enableInline = (mode === "inline" || mode === "both") && !props.readOnly; 11270 const staticItems = mode === "inline" || mode === "none"; 11271 const isControlled = value !== void 0; 11272 const [internalValue, setInternalValue] = React53.useState(defaultValue ?? ""); 11273 const [inlineInputValue, setInlineInputValue] = React53.useState(""); 11274 React53.useEffect(() => { 11275 if (isControlled || !enableInline) { 11276 setInlineInputValue(""); 11277 } 11278 }, [value, isControlled, enableInline]); 11279 let resolvedInputValue; 11280 if (enableInline && inlineInputValue !== "") { 11281 resolvedInputValue = inlineInputValue; 11282 } else if (isControlled) { 11283 resolvedInputValue = value ?? ""; 11284 } else { 11285 resolvedInputValue = internalValue; 11286 } 11287 const collator = useCoreFilter({ 11288 locale: other.locale 11289 }); 11290 const resolvedQuery = String((isControlled ? value : internalValue) ?? "").trim(); 11291 const resolvedFilter = staticItems || other.filter === null ? null : other.filter ?? collator.contains; 11292 function handleValueChange(nextValue, eventDetails) { 11293 setInlineInputValue(""); 11294 if (!isControlled) { 11295 setInternalValue(nextValue); 11296 } 11297 onValueChange?.(nextValue, eventDetails); 11298 } 11299 function handleItemHighlighted(highlightedValue, eventDetails) { 11300 props.onItemHighlighted?.(highlightedValue, eventDetails); 11301 if (eventDetails.reason === reason_parts_exports.pointer) { 11302 return; 11303 } 11304 setInlineInputValue(enableInline && highlightedValue != null ? stringifyAsLabel(highlightedValue, itemToStringValue) : ""); 11305 } 11306 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AriaCombobox, { 11307 ...other, 11308 itemToStringLabel: itemToStringValue, 11309 openOnInputClick, 11310 selectionMode: "none", 11311 fillInputOnItemPress: true, 11312 filter: resolvedFilter, 11313 filterQuery: ( 11314 // Inline completion temporarily changes the displayed input without changing this query. 11315 mode === "both" ? resolvedQuery : void 0 11316 ), 11317 autoComplete: mode, 11318 inputValue: resolvedInputValue, 11319 defaultInputValue: defaultValue, 11320 onInputValueChange: handleValueChange, 11321 onItemHighlighted: handleItemHighlighted 11322 }); 11323 } 11324 11325 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/value/AutocompleteValue.mjs 11326 var React54 = __toESM(require_react(), 1); 11327 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 11328 function AutocompleteValue(props) { 11329 const { 11330 children 11331 } = props; 11332 const inputValue = useComboboxInputValueContext(); 11333 let returnValue = null; 11334 if (typeof children === "function") { 11335 returnValue = children(String(inputValue)); 11336 } else if (children != null) { 11337 returnValue = children; 11338 } else { 11339 returnValue = inputValue; 11340 } 11341 return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(React54.Fragment, { 11342 children: returnValue 11343 }); 11344 } 11345 11346 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/trigger/ComboboxTrigger.mjs 11347 var React55 = __toESM(require_react(), 1); 11348 11349 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/input/ComboboxInputDataAttributes.mjs 11350 var popupOpen3 = CommonTriggerDataAttributes_exports.popupOpen; 11351 var pressed2 = CommonTriggerDataAttributes_exports.pressed; 11352 var popupSide = "data-popup-side"; 11353 var listEmpty = "data-list-empty"; 11354 11355 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/utils/stateAttributesMapping.mjs 11356 var triggerStateAttributesMapping = { 11357 ...pressableTriggerOpenStateMapping, 11358 ...fieldValidityMapping, 11359 popupSide: (side) => side ? { 11360 [popupSide]: side 11361 } : null, 11362 listEmpty: (empty) => empty ? { 11363 [listEmpty]: "" 11364 } : null 11365 }; 11366 11367 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/useSetFieldFocused.mjs 11368 function useSetFieldFocused(disabled2, focusTargetRef, onFocusedChange) { 11369 const { 11370 setFocused, 11371 focusOwnerRef 11372 } = useFieldRootContext(); 11373 const setFieldFocused = useStableCallback((focused) => { 11374 if (focused ? !disabled2 : focusOwnerRef.current === setFieldFocused) { 11375 focusOwnerRef.current = focused && setFieldFocused; 11376 onFocusedChange?.(focused); 11377 setFocused(focused); 11378 } 11379 }); 11380 useIsoLayoutEffect(() => { 11381 const el = focusTargetRef.current; 11382 const root2 = el?.getRootNode(); 11383 if (root2?.activeElement === el) { 11384 setFieldFocused(true); 11385 } 11386 return () => setFieldFocused(false); 11387 }, [disabled2, focusTargetRef, setFieldFocused]); 11388 return setFieldFocused; 11389 } 11390 11391 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs 11392 var BOUNDARY_OFFSET = 5; 11393 function isMouseWithinBounds(event, element) { 11394 const bounds = getPseudoElementBounds(element); 11395 return event.clientX >= bounds.left - BOUNDARY_OFFSET && event.clientX <= bounds.right + BOUNDARY_OFFSET && event.clientY >= bounds.top - BOUNDARY_OFFSET && event.clientY <= bounds.bottom + BOUNDARY_OFFSET; 11396 } 11397 function getPseudoElementBounds(element) { 11398 const elementRect = element.getBoundingClientRect(); 11399 const win = getWindow(element); 11400 if (parts_exports.env.jsdom) { 11401 return elementRect; 11402 } 11403 const beforeStyles = win.getComputedStyle(element, "::before"); 11404 const afterStyles = win.getComputedStyle(element, "::after"); 11405 const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none"; 11406 if (!hasPseudoElements) { 11407 return elementRect; 11408 } 11409 const beforeWidth = parseFloat(beforeStyles.width) || 0; 11410 const beforeHeight = parseFloat(beforeStyles.height) || 0; 11411 const afterWidth = parseFloat(afterStyles.width) || 0; 11412 const afterHeight = parseFloat(afterStyles.height) || 0; 11413 const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth); 11414 const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight); 11415 const widthDiff = totalWidth - elementRect.width; 11416 const heightDiff = totalHeight - elementRect.height; 11417 return { 11418 left: elementRect.left - widthDiff / 2, 11419 right: elementRect.right + widthDiff / 2, 11420 top: elementRect.top - heightDiff / 2, 11421 bottom: elementRect.bottom + heightDiff / 2 11422 }; 11423 } 11424 11425 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs 11426 function resolveAriaLabelledBy(fieldLabelId, localLabelId) { 11427 return fieldLabelId ?? localLabelId; 11428 } 11429 11430 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/utils/parts.mjs 11431 function usePopupSide(store) { 11432 const mounted = store.useState("mounted"); 11433 const popupSide2 = store.useState("popupSide"); 11434 const positionerElement = store.useState("positionerElement"); 11435 return mounted && positionerElement ? popupSide2 : null; 11436 } 11437 function useListEmpty() { 11438 return useComboboxDerivedItemsContext().filteredItems.length === 0; 11439 } 11440 function getChipNavigationKeys(direction) { 11441 return direction === "rtl" ? ["ArrowRight", "ArrowLeft"] : ["ArrowLeft", "ArrowRight"]; 11442 } 11443 function clickHighlightedItem(store, activeIndex, nativeEvent) { 11444 const listItem = store.context.listRef.current[activeIndex]; 11445 if (listItem) { 11446 store.context.selectionEventRef.current = nativeEvent; 11447 listItem.click(); 11448 store.context.selectionEventRef.current = null; 11449 } 11450 } 11451 11452 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/trigger/ComboboxTrigger.mjs 11453 var ComboboxTrigger = /* @__PURE__ */ React55.forwardRef(function ComboboxTrigger2(componentProps, forwardedRef) { 11454 const { 11455 render, 11456 className, 11457 nativeButton = true, 11458 disabled: disabledProp = false, 11459 id: idProp, 11460 style, 11461 ...elementProps 11462 } = componentProps; 11463 const { 11464 state: fieldState, 11465 disabled: fieldDisabled, 11466 setTouched, 11467 validationMode, 11468 validation 11469 } = useFieldRootContext(); 11470 const { 11471 labelId: fieldLabelId 11472 } = useLabelableContext(); 11473 const store = useComboboxRootContext(); 11474 const selectionMode = store.useState("selectionMode"); 11475 const comboboxDisabled = store.useState("disabled"); 11476 const readOnly = store.useState("readOnly"); 11477 const required = store.useState("required"); 11478 const positionerElement = store.useState("positionerElement"); 11479 const listElement = store.useState("listElement"); 11480 const storedPopupId = store.useState("popupId"); 11481 const triggerProps = store.useState("triggerProps"); 11482 const inputInsidePopup = store.useState("inputInsidePopup"); 11483 const rootId = store.useState("id"); 11484 const comboboxLabelId = store.useState("labelId"); 11485 const open2 = store.useState("open"); 11486 const selectedValue = store.useState("selectedValue"); 11487 const activeIndex = store.useState("activeIndex"); 11488 const selectedIndex = store.useState("selectedIndex"); 11489 const hasSelectedValue = store.useState("hasSelectedValue"); 11490 const floatingRootContext = useComboboxFloatingContext(); 11491 const inputValue = useComboboxInputValueContext(); 11492 const focusTimeout = useTimeout(); 11493 const disabled2 = fieldDisabled || comboboxDisabled || disabledProp; 11494 const listEmpty2 = useListEmpty(); 11495 const popupSide2 = usePopupSide(store); 11496 const triggerRef = React55.useRef(null); 11497 const setFocused = useSetFieldFocused(disabled2, triggerRef); 11498 useLabelableId({ 11499 id: inputInsidePopup ? idProp : void 0 11500 }); 11501 const id = inputInsidePopup ? idProp ?? rootId : idProp; 11502 const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, comboboxLabelId); 11503 let ariaControls; 11504 if (open2 && inputInsidePopup) { 11505 ariaControls = storedPopupId ?? getComboboxPopupId(rootId); 11506 } else if (open2) { 11507 ariaControls = listElement?.id; 11508 } 11509 const currentPointerTypeRef = React55.useRef(""); 11510 function trackPointerType(event) { 11511 currentPointerTypeRef.current = event.pointerType; 11512 } 11513 const { 11514 reference: triggerTypeaheadProps 11515 } = useTypeahead(floatingRootContext, { 11516 // Typeahead on a closed trigger commits a value rather than moving a highlight, so it stays 11517 // gated on `readOnly`. 11518 enabled: !open2 && !readOnly && !comboboxDisabled && selectionMode === "single", 11519 listRef: store.context.labelsRef, 11520 activeIndex, 11521 selectedIndex, 11522 onMatch(index2) { 11523 const nextSelectedValue = store.context.valuesRef.current[index2]; 11524 if (nextSelectedValue !== void 0) { 11525 store.context.setSelectedValue(nextSelectedValue, createChangeEventDetails(reason_parts_exports.none)); 11526 } 11527 } 11528 }); 11529 const { 11530 reference: triggerClickProps 11531 } = useClick(floatingRootContext, { 11532 enabled: !comboboxDisabled, 11533 event: "mousedown" 11534 }); 11535 const { 11536 buttonRef, 11537 getButtonProps 11538 } = useButton({ 11539 native: nativeButton, 11540 disabled: disabled2 11541 }); 11542 const state = { 11543 ...fieldState, 11544 readOnly, 11545 open: open2, 11546 disabled: disabled2, 11547 popupSide: popupSide2, 11548 listEmpty: listEmpty2, 11549 placeholder: selectionMode === "none" ? false : !hasSelectedValue 11550 }; 11551 const setTriggerElement = useStableCallback((element2) => { 11552 store.set("triggerElement", element2); 11553 }); 11554 const element = useRenderElement("button", componentProps, { 11555 ref: [forwardedRef, buttonRef, triggerRef, setTriggerElement], 11556 state, 11557 props: [triggerProps, triggerClickProps, triggerTypeaheadProps, { 11558 id, 11559 tabIndex: inputInsidePopup ? 0 : -1, 11560 role: inputInsidePopup ? "combobox" : void 0, 11561 "aria-expanded": open2, 11562 "aria-haspopup": inputInsidePopup ? "dialog" : "listbox", 11563 "aria-controls": ariaControls, 11564 "aria-required": inputInsidePopup ? required || void 0 : void 0, 11565 // Only valid alongside the `combobox` role; without it the trigger is a plain button, and 11566 // the `Combobox.Input` outside the popup already carries `aria-readonly`. 11567 "aria-readonly": inputInsidePopup ? readOnly || void 0 : void 0, 11568 "aria-labelledby": ariaLabelledBy, 11569 onPointerDown: trackPointerType, 11570 onPointerEnter: trackPointerType, 11571 onFocus() { 11572 setFocused(true); 11573 if (disabled2) { 11574 return; 11575 } 11576 focusTimeout.start(0, store.context.forceMount); 11577 }, 11578 onBlur(event) { 11579 if (contains(positionerElement, event.relatedTarget)) { 11580 return; 11581 } 11582 setTouched(true); 11583 setFocused(false); 11584 if (validationMode === "onBlur") { 11585 const valueToValidate = selectionMode === "none" ? inputValue : selectedValue; 11586 validation.commit(valueToValidate); 11587 } 11588 }, 11589 onMouseDown(event) { 11590 if (disabled2) { 11591 return; 11592 } 11593 if (!inputInsidePopup) { 11594 floatingRootContext.set("domReferenceElement", event.currentTarget); 11595 } 11596 store.context.forceMount(); 11597 if (currentPointerTypeRef.current !== "touch") { 11598 store.context.inputRef.current?.focus(); 11599 if (!inputInsidePopup) { 11600 event.preventDefault(); 11601 } 11602 } 11603 if (open2) { 11604 return; 11605 } 11606 const doc = ownerDocument(event.currentTarget); 11607 function handleMouseUp(mouseEvent) { 11608 const currentTriggerElement = store.state.triggerElement; 11609 if (!currentTriggerElement) { 11610 return; 11611 } 11612 const mouseUpTarget = getTarget(mouseEvent); 11613 const positioner = store.state.positionerElement; 11614 const list = store.state.listElement; 11615 if (contains(currentTriggerElement, mouseUpTarget) || contains(positioner, mouseUpTarget) || contains(list, mouseUpTarget)) { 11616 return; 11617 } 11618 if (isMouseWithinBounds(mouseEvent, currentTriggerElement)) { 11619 return; 11620 } 11621 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent)); 11622 } 11623 if (inputInsidePopup) { 11624 doc.addEventListener("mouseup", handleMouseUp, { 11625 once: true 11626 }); 11627 } 11628 }, 11629 onKeyDown(event) { 11630 if (event.key === "ArrowDown" || event.key === "ArrowUp") { 11631 stopEvent(event); 11632 store.context.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 11633 store.context.inputRef.current?.focus(); 11634 } 11635 } 11636 }, validation.getValidationProps(disabled2, elementProps), getButtonProps], 11637 stateAttributesMapping: triggerStateAttributesMapping 11638 }); 11639 return element; 11640 }); 11641 if (true) ComboboxTrigger.displayName = "ComboboxTrigger"; 11642 11643 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/trigger/AutocompleteTrigger.mjs 11644 var AutocompleteTrigger = ComboboxTrigger; 11645 11646 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/input/ComboboxInput.mjs 11647 var React59 = __toESM(require_react(), 1); 11648 11649 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/chips/ComboboxChipsContext.mjs 11650 var React56 = __toESM(require_react(), 1); 11651 var ComboboxChipsContext = /* @__PURE__ */ React56.createContext(void 0); 11652 if (true) ComboboxChipsContext.displayName = "ComboboxChipsContext"; 11653 function useComboboxChipsContext() { 11654 return React56.useContext(ComboboxChipsContext); 11655 } 11656 11657 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/positioner/ComboboxPositionerContext.mjs 11658 var React57 = __toESM(require_react(), 1); 11659 var ComboboxPositionerContext = /* @__PURE__ */ React57.createContext(void 0); 11660 if (true) ComboboxPositionerContext.displayName = "ComboboxPositionerContext"; 11661 function useComboboxPositionerContext(optional) { 11662 const context = React57.useContext(ComboboxPositionerContext); 11663 if (context === void 0 && !optional) { 11664 throw new Error(true ? "Base UI: <Combobox.Popup> and <Combobox.Arrow> must be used within the <Combobox.Positioner> component" : formatErrorMessage_default(21)); 11665 } 11666 return context; 11667 } 11668 11669 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/utils/ComboboxInternalDismissButton.mjs 11670 var React58 = __toESM(require_react(), 1); 11671 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 11672 var ComboboxInternalDismissButton = /* @__PURE__ */ React58.forwardRef(function ComboboxInternalDismissButton2(_, forwardedRef) { 11673 const store = useComboboxRootContext(); 11674 const { 11675 buttonRef, 11676 getButtonProps 11677 } = useButton({ 11678 native: false 11679 }); 11680 const mergedRef = useMergedRefs(forwardedRef, buttonRef); 11681 function handleDismiss(event) { 11682 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.closePress, event.nativeEvent, event.currentTarget)); 11683 } 11684 const dismissProps = getButtonProps({ 11685 onClick: handleDismiss 11686 }); 11687 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { 11688 ref: mergedRef, 11689 ...dismissProps, 11690 "aria-label": "Dismiss", 11691 tabIndex: void 0, 11692 style: visuallyHiddenInput 11693 }); 11694 }); 11695 if (true) ComboboxInternalDismissButton.displayName = "ComboboxInternalDismissButton"; 11696 11697 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/input/ComboboxInput.mjs 11698 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 11699 var ComboboxInput = /* @__PURE__ */ React59.forwardRef(function ComboboxInput2(componentProps, forwardedRef) { 11700 const { 11701 render, 11702 className, 11703 disabled: disabledProp = false, 11704 id: idProp, 11705 style, 11706 ...elementProps 11707 } = componentProps; 11708 const { 11709 state: fieldState, 11710 disabled: fieldDisabled, 11711 setTouched, 11712 validationMode, 11713 validation 11714 } = useFieldRootContext(); 11715 const { 11716 labelId: fieldLabelId 11717 } = useLabelableContext(); 11718 const comboboxChipsContext = useComboboxChipsContext(); 11719 const positioning = useComboboxPositionerContext(true); 11720 const hasPositionerParent = Boolean(positioning); 11721 const store = useComboboxRootContext(); 11722 const inputValue = useComboboxInputValueContext(); 11723 const direction = useDirection(); 11724 const required = store.useState("required"); 11725 const comboboxDisabled = store.useState("disabled"); 11726 const readOnly = store.useState("readOnly"); 11727 const name = store.useState("name"); 11728 const form = store.useState("form"); 11729 const selectionMode = store.useState("selectionMode"); 11730 const autoHighlightMode = store.useState("autoHighlight"); 11731 const inputProps = store.useState("inputProps"); 11732 const triggerProps = store.useState("triggerProps"); 11733 const open2 = store.useState("open"); 11734 const mounted = store.useState("mounted"); 11735 const selectedValue = store.useState("selectedValue"); 11736 const rootId = store.useState("id"); 11737 const inline4 = store.useState("inline"); 11738 const modal = store.useState("modal"); 11739 const autoHighlightEnabled = Boolean(autoHighlightMode); 11740 const popupSide2 = usePopupSide(store); 11741 const disabled2 = fieldDisabled || comboboxDisabled || disabledProp; 11742 const listEmpty2 = useListEmpty(); 11743 const setFocused = useSetFieldFocused(disabled2, store.context.inputRef); 11744 const isInsidePopup = hasPositionerParent || inline4; 11745 const focusManagerModal = !isInsidePopup || modal; 11746 const id = useBaseUiId(idProp ?? (!isInsidePopup ? rootId : void 0)); 11747 const fieldStateForInput = hasPositionerParent ? DEFAULT_FIELD_STATE_ATTRIBUTES : fieldState; 11748 const [composingValue, setComposingValue] = React59.useState(null); 11749 const isComposingRef = React59.useRef(false); 11750 const lastActiveIndexRef = React59.useRef(null); 11751 useIsoLayoutEffect(() => { 11752 if (!open2) { 11753 lastActiveIndexRef.current = null; 11754 } 11755 }, [open2]); 11756 const inputOwnsFormValue = selectionMode === "none" && !hasPositionerParent; 11757 const setInputElement = useStableCallback((element2) => { 11758 const nextIsInsidePopup = hasPositionerParent || store.state.inline; 11759 if (nextIsInsidePopup && !store.state.hasInputValue) { 11760 store.context.setInputValue("", createChangeEventDetails(reason_parts_exports.none)); 11761 } 11762 store.update({ 11763 inputElement: element2, 11764 inputInsidePopup: nextIsInsidePopup, 11765 inputOwnsFormValue 11766 }); 11767 }); 11768 const validationProps = hasPositionerParent ? elementProps : validation.getValidationProps(disabled2, elementProps); 11769 function clearHighlight(event) { 11770 store.context.setIndices({ 11771 activeIndex: null, 11772 selectedIndex: null, 11773 type: getHighlightReason(event), 11774 event 11775 }); 11776 } 11777 const state = { 11778 ...fieldStateForInput, 11779 open: open2, 11780 disabled: disabled2, 11781 readOnly, 11782 popupSide: popupSide2, 11783 listEmpty: listEmpty2 11784 }; 11785 function handleKeyDown(event) { 11786 if (!comboboxChipsContext) { 11787 return void 0; 11788 } 11789 let nextIndex; 11790 const renderedChipsCount = comboboxChipsContext.chipsRef.current.length; 11791 const [previousChipKey] = getChipNavigationKeys(direction); 11792 if (event.key === previousChipKey && (event.currentTarget.selectionStart ?? 0) === 0 && selectedValue.length > 0) { 11793 event.preventDefault(); 11794 nextIndex = renderedChipsCount > 0 ? renderedChipsCount - 1 : void 0; 11795 } 11796 return nextIndex; 11797 } 11798 const element = useRenderElement("input", componentProps, { 11799 state, 11800 ref: [forwardedRef, store.context.inputRef, setInputElement], 11801 props: [inputProps, triggerProps, { 11802 value: composingValue ?? inputValue, 11803 "aria-readonly": readOnly || void 0, 11804 "aria-required": required || void 0, 11805 "aria-labelledby": fieldLabelId, 11806 disabled: disabled2, 11807 readOnly, 11808 required: selectionMode === "none" ? required : void 0, 11809 form, 11810 ...inputOwnsFormValue && name && { 11811 name 11812 }, 11813 id, 11814 onFocus() { 11815 setFocused(true); 11816 if (!inline4) { 11817 return; 11818 } 11819 const nextActiveIndex = lastActiveIndexRef.current; 11820 lastActiveIndexRef.current = null; 11821 if (nextActiveIndex == null || // `valuesRef` can be sparse, so guard against restoring a removed slot. 11822 !Object.hasOwn(store.context.valuesRef.current, nextActiveIndex)) { 11823 return; 11824 } 11825 store.context.setIndices({ 11826 activeIndex: nextActiveIndex 11827 }); 11828 }, 11829 onBlur() { 11830 setTouched(true); 11831 setFocused(false); 11832 const activeIndex = store.state.activeIndex; 11833 if (inline4 && activeIndex !== null && autoHighlightMode !== "always") { 11834 lastActiveIndexRef.current = activeIndex; 11835 store.context.setIndices({ 11836 activeIndex: null 11837 }); 11838 } 11839 if (validationMode === "onBlur") { 11840 const valueToValidate = selectionMode === "none" ? inputValue : selectedValue; 11841 validation.commit(valueToValidate); 11842 } 11843 }, 11844 onCompositionStart(event) { 11845 if (parts_exports.os.android) { 11846 return; 11847 } 11848 isComposingRef.current = true; 11849 setComposingValue(event.currentTarget.value); 11850 }, 11851 onCompositionEnd(event) { 11852 isComposingRef.current = false; 11853 const next = event.currentTarget.value; 11854 setComposingValue(null); 11855 store.context.setInputValue(next, createChangeEventDetails(reason_parts_exports.inputChange, event.nativeEvent)); 11856 }, 11857 onChange(event) { 11858 const nativeEvent = event.nativeEvent; 11859 const inputType = nativeEvent.inputType; 11860 const autofillLikeInput = !inputType || inputType === "insertReplacementText"; 11861 const shouldOpenOnInput = isComposingRef.current || !autofillLikeInput; 11862 function maybeOpenOnInput(trimmed) { 11863 if (readOnly || disabled2 || !trimmed || !shouldOpenOnInput) { 11864 return; 11865 } 11866 store.context.setOpen(true, createChangeEventDetails(reason_parts_exports.inputChange, nativeEvent)); 11867 if (!autoHighlightEnabled) { 11868 clearHighlight(nativeEvent); 11869 } 11870 } 11871 if (isComposingRef.current) { 11872 const nextVal = event.currentTarget.value; 11873 setComposingValue(nextVal); 11874 if (nextVal === "" && !store.state.openOnInputClick && !store.state.inputInsidePopup) { 11875 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.inputClear, nativeEvent)); 11876 } 11877 const trimmed = nextVal.trim(); 11878 const shouldMaintainHighlight = autoHighlightEnabled && trimmed !== ""; 11879 maybeOpenOnInput(trimmed); 11880 if (open2 && store.state.activeIndex !== null && !shouldMaintainHighlight) { 11881 clearHighlight(nativeEvent); 11882 } 11883 return; 11884 } 11885 const inputChangeDetails = createChangeEventDetails(reason_parts_exports.inputChange, nativeEvent); 11886 store.context.setInputValue(event.currentTarget.value, inputChangeDetails); 11887 if (inputChangeDetails.isCanceled) { 11888 return; 11889 } 11890 const empty = event.currentTarget.value === ""; 11891 const clearDetails = createChangeEventDetails(reason_parts_exports.inputClear, nativeEvent); 11892 if (empty && !store.state.inputInsidePopup) { 11893 if (selectionMode === "single") { 11894 store.context.setSelectedValue(null, clearDetails); 11895 } 11896 if (!store.state.openOnInputClick) { 11897 store.context.setOpen(false, clearDetails); 11898 } 11899 } 11900 maybeOpenOnInput(event.currentTarget.value.trim()); 11901 if (open2 && store.state.activeIndex !== null && !autoHighlightEnabled) { 11902 clearHighlight(nativeEvent); 11903 } 11904 }, 11905 onKeyDown(event) { 11906 if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) { 11907 return; 11908 } 11909 if (disabled2 || readOnly) { 11910 if (readOnly && event.key === "Enter" && open2 && store.state.activeIndex !== null) { 11911 stopEvent(event); 11912 } 11913 return; 11914 } 11915 const input = event.currentTarget; 11916 const scrollAmount = input.scrollWidth - input.clientWidth; 11917 const isRTL4 = direction === "rtl"; 11918 if (event.key === "Home") { 11919 stopEvent(event); 11920 const cursor = parts_exports.engine.gecko && isRTL4 ? input.value.length : 0; 11921 input.setSelectionRange(cursor, cursor); 11922 input.scrollLeft = 0; 11923 return; 11924 } 11925 if (event.key === "End") { 11926 stopEvent(event); 11927 const cursor = parts_exports.engine.gecko && isRTL4 ? 0 : input.value.length; 11928 input.setSelectionRange(cursor, cursor); 11929 input.scrollLeft = isRTL4 ? -scrollAmount : scrollAmount; 11930 return; 11931 } 11932 if (!mounted && event.key === "Escape") { 11933 const isClear = selectionMode === "multiple" && Array.isArray(selectedValue) ? selectedValue.length === 0 : selectedValue === null; 11934 const details = createChangeEventDetails(reason_parts_exports.escapeKey, event.nativeEvent); 11935 const value = selectionMode === "multiple" ? [] : null; 11936 store.context.setInputValue("", details); 11937 store.context.setSelectedValue(value, details); 11938 if (!isClear && !store.state.inline && !details.isPropagationAllowed) { 11939 event.stopPropagation(); 11940 } 11941 return; 11942 } 11943 if (comboboxChipsContext && event.key === "Backspace" && input.value === "" && Array.isArray(selectedValue) && selectedValue.length > 0) { 11944 const renderedChipsCount = comboboxChipsContext.chipsRef.current.length; 11945 const removalIndex = renderedChipsCount > 0 ? renderedChipsCount - 1 : selectedValue.length - 1; 11946 const newValue = selectedValue.filter((_, index2) => index2 !== removalIndex); 11947 clearHighlight(event.nativeEvent); 11948 store.context.setSelectedValue(newValue, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent)); 11949 return; 11950 } 11951 const nextIndex = handleKeyDown(event); 11952 if (nextIndex !== void 0) { 11953 comboboxChipsContext?.chipsRef.current[nextIndex]?.focus(); 11954 } 11955 if (event.which === 229) { 11956 return; 11957 } 11958 if (event.key === "Enter" && open2) { 11959 const activeIndex = store.state.activeIndex; 11960 const nativeEvent = event.nativeEvent; 11961 if (activeIndex === null) { 11962 if (inline4) { 11963 return; 11964 } 11965 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, nativeEvent)); 11966 return; 11967 } 11968 stopEvent(event); 11969 clickHighlightedItem(store, activeIndex, nativeEvent); 11970 } 11971 } 11972 }, validationProps], 11973 stateAttributesMapping: triggerStateAttributesMapping 11974 }); 11975 const renderedInput = hasPositionerParent ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(FieldRootContext.Provider, { 11976 value: DEFAULT_FIELD_ROOT_CONTEXT, 11977 children: element 11978 }) : element; 11979 return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(React59.Fragment, { 11980 children: [open2 && focusManagerModal && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ComboboxInternalDismissButton, { 11981 ref: store.context.startDismissRef 11982 }), renderedInput] 11983 }); 11984 }); 11985 if (true) ComboboxInput.displayName = "ComboboxInput"; 11986 11987 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/input-group/ComboboxInputGroup.mjs 11988 var React60 = __toESM(require_react(), 1); 11989 11990 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/utils/handleInputPress.mjs 11991 function handleInputPress(event, store, disabled2, shouldIgnoreTarget) { 11992 if (event.baseUIHandlerPrevented) { 11993 return; 11994 } 11995 const target = getTarget(event.nativeEvent); 11996 const targetElement = isElement(target) ? target : null; 11997 if (targetElement !== event.currentTarget && (shouldIgnoreTarget?.(targetElement) || isInteractiveElement(targetElement))) { 11998 return; 11999 } 12000 event.preventDefault(); 12001 if (disabled2) { 12002 return; 12003 } 12004 store.context.inputRef.current?.focus(); 12005 if (store.state.openOnInputClick) { 12006 store.context.setOpen(true, createChangeEventDetails(reason_parts_exports.inputPress, event.nativeEvent)); 12007 } 12008 } 12009 12010 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/input-group/ComboboxInputGroup.mjs 12011 var ComboboxInputGroup = /* @__PURE__ */ React60.forwardRef(function ComboboxInputGroup2(componentProps, forwardedRef) { 12012 const { 12013 render, 12014 className, 12015 style, 12016 ...elementProps 12017 } = componentProps; 12018 const { 12019 state: fieldState 12020 } = useFieldRootContext(); 12021 const store = useComboboxRootContext(); 12022 const open2 = store.useState("open"); 12023 const comboboxDisabled = store.useState("disabled"); 12024 const readOnly = store.useState("readOnly"); 12025 const hasSelectedValue = store.useState("hasSelectedValue"); 12026 const selectionMode = store.useState("selectionMode"); 12027 const popupSide2 = usePopupSide(store); 12028 const disabled2 = comboboxDisabled; 12029 const listEmpty2 = useListEmpty(); 12030 const placeholder = selectionMode === "none" ? false : !hasSelectedValue; 12031 const state = { 12032 ...fieldState, 12033 open: open2, 12034 disabled: disabled2, 12035 readOnly, 12036 popupSide: popupSide2, 12037 listEmpty: listEmpty2, 12038 placeholder 12039 }; 12040 const setInputGroupElement = useStableCallback((element) => { 12041 store.set("inputGroupElement", element); 12042 }); 12043 return useRenderElement("div", componentProps, { 12044 ref: [forwardedRef, setInputGroupElement], 12045 props: [{ 12046 role: "group", 12047 onMouseDown(event) { 12048 handleInputPress(event, store, disabled2, (target) => { 12049 return contains(store.context.chipsContainerRef.current, target); 12050 }); 12051 } 12052 }, elementProps], 12053 state, 12054 stateAttributesMapping: triggerStateAttributesMapping 12055 }); 12056 }); 12057 if (true) ComboboxInputGroup.displayName = "ComboboxInputGroup"; 12058 12059 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/input-group/AutocompleteInputGroup.mjs 12060 var AutocompleteInputGroup = ComboboxInputGroup; 12061 12062 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/icon/ComboboxIcon.mjs 12063 var React61 = __toESM(require_react(), 1); 12064 var ComboboxIcon = /* @__PURE__ */ React61.forwardRef(function ComboboxIcon2(componentProps, forwardedRef) { 12065 const { 12066 render, 12067 className, 12068 style, 12069 ...elementProps 12070 } = componentProps; 12071 const element = useRenderElement("span", componentProps, { 12072 ref: forwardedRef, 12073 props: [{ 12074 "aria-hidden": true, 12075 children: "▼" 12076 }, elementProps] 12077 }); 12078 return element; 12079 }); 12080 if (true) ComboboxIcon.displayName = "ComboboxIcon"; 12081 12082 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/clear/ComboboxClear.mjs 12083 var React62 = __toESM(require_react(), 1); 12084 var stateAttributesMapping = { 12085 ...transitionStatusMapping, 12086 ...triggerOpenStateMapping 12087 }; 12088 var ComboboxClear = /* @__PURE__ */ React62.forwardRef(function ComboboxClear2(componentProps, forwardedRef) { 12089 const { 12090 render, 12091 className, 12092 disabled: disabledProp = false, 12093 nativeButton = true, 12094 keepMounted = false, 12095 style, 12096 ...elementProps 12097 } = componentProps; 12098 const { 12099 disabled: fieldDisabled 12100 } = useFieldRootContext(); 12101 const store = useComboboxRootContext(); 12102 const selectionMode = store.useState("selectionMode"); 12103 const comboboxDisabled = store.useState("disabled"); 12104 const readOnly = store.useState("readOnly"); 12105 const open2 = store.useState("open"); 12106 const selectedValue = store.useState("selectedValue"); 12107 const hasSelectionChips = store.useState("hasSelectionChips"); 12108 const inputValue = useComboboxInputValueContext(); 12109 let visible = false; 12110 if (selectionMode === "none") { 12111 visible = inputValue !== ""; 12112 } else if (selectionMode === "single") { 12113 visible = selectedValue != null; 12114 } else { 12115 visible = hasSelectionChips; 12116 } 12117 const disabled2 = fieldDisabled || comboboxDisabled || disabledProp; 12118 const { 12119 buttonRef, 12120 getButtonProps 12121 } = useButton({ 12122 native: nativeButton, 12123 disabled: disabled2 12124 }); 12125 const { 12126 mounted, 12127 transitionStatus, 12128 setMounted 12129 } = useTransitionStatus(visible); 12130 const state = { 12131 disabled: disabled2, 12132 visible, 12133 open: open2, 12134 transitionStatus 12135 }; 12136 useOpenChangeComplete({ 12137 open: visible, 12138 ref: store.context.clearRef, 12139 onComplete() { 12140 if (!visible) { 12141 setMounted(false); 12142 } 12143 } 12144 }); 12145 const element = useRenderElement("button", componentProps, { 12146 state, 12147 ref: [forwardedRef, buttonRef, store.context.clearRef], 12148 props: [{ 12149 tabIndex: -1, 12150 children: "x", 12151 // Avoid stealing focus from the input. 12152 onMouseDown(event) { 12153 event.preventDefault(); 12154 }, 12155 onClick(event) { 12156 if (disabled2 || readOnly) { 12157 return; 12158 } 12159 const type = getHighlightReason(event); 12160 store.context.setInputValue("", createChangeEventDetails(reason_parts_exports.clearPress, event.nativeEvent)); 12161 if (selectionMode !== "none") { 12162 store.context.setSelectedValue(Array.isArray(selectedValue) ? [] : null, createChangeEventDetails(reason_parts_exports.clearPress, event.nativeEvent)); 12163 store.context.setIndices({ 12164 activeIndex: null, 12165 selectedIndex: null, 12166 type, 12167 event: event.nativeEvent 12168 }); 12169 } else { 12170 store.context.setIndices({ 12171 activeIndex: null, 12172 type, 12173 event: event.nativeEvent 12174 }); 12175 } 12176 store.context.inputRef.current?.focus(); 12177 } 12178 }, elementProps, getButtonProps], 12179 stateAttributesMapping 12180 }); 12181 const shouldRender = keepMounted || mounted; 12182 if (!shouldRender) { 12183 return null; 12184 } 12185 return element; 12186 }); 12187 if (true) ComboboxClear.displayName = "ComboboxClear"; 12188 12189 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/list/ComboboxList.mjs 12190 var React65 = __toESM(require_react(), 1); 12191 12192 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/collection/ComboboxCollection.mjs 12193 var React64 = __toESM(require_react(), 1); 12194 12195 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/collection/GroupCollectionContext.mjs 12196 var React63 = __toESM(require_react(), 1); 12197 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 12198 var GroupCollectionContext = /* @__PURE__ */ React63.createContext(null); 12199 if (true) GroupCollectionContext.displayName = "GroupCollectionContext"; 12200 function useGroupCollectionContext() { 12201 return React63.useContext(GroupCollectionContext); 12202 } 12203 function GroupCollectionProvider(props) { 12204 const { 12205 children, 12206 items 12207 } = props; 12208 const contextValue = React63.useMemo(() => ({ 12209 items 12210 }), [items]); 12211 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GroupCollectionContext.Provider, { 12212 value: contextValue, 12213 children 12214 }); 12215 } 12216 12217 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/collection/ComboboxCollection.mjs 12218 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 12219 function ComboboxCollection(props) { 12220 const { 12221 children 12222 } = props; 12223 const { 12224 filteredItems 12225 } = useComboboxDerivedItemsContext(); 12226 const groupContext = useGroupCollectionContext(); 12227 const itemsToRender = groupContext ? groupContext.items : filteredItems; 12228 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(React64.Fragment, { 12229 children: itemsToRender.map(children) 12230 }); 12231 } 12232 12233 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/list/ComboboxList.mjs 12234 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 12235 var ComboboxList = /* @__PURE__ */ React65.forwardRef(function ComboboxList2(componentProps, forwardedRef) { 12236 var _ComboboxCollection; 12237 const { 12238 render, 12239 className, 12240 style, 12241 children, 12242 ...elementProps 12243 } = componentProps; 12244 const store = useComboboxRootContext(); 12245 const floatingRootContext = useComboboxFloatingContext(); 12246 const hasPositionerContext = Boolean(useComboboxPositionerContext(true)); 12247 const { 12248 filteredItems, 12249 hasItems 12250 } = useComboboxDerivedItemsContext(); 12251 const selectionMode = store.useState("selectionMode"); 12252 const grid = store.useState("grid"); 12253 const readOnly = store.useState("readOnly"); 12254 const listProps = store.useState("listProps"); 12255 const virtualized = store.useState("virtualized"); 12256 const forceMounted = store.useState("forceMounted"); 12257 const multiple = selectionMode === "multiple"; 12258 const empty = filteredItems.length === 0; 12259 const setPositionerElement = useStableCallback((element2) => { 12260 store.set("positionerElement", element2); 12261 }); 12262 const setListElement = useStableCallback((element2) => { 12263 store.set("listElement", element2); 12264 }); 12265 const resolvedChildren = React65.useMemo(() => { 12266 if (typeof children === "function") { 12267 return _ComboboxCollection || (_ComboboxCollection = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ComboboxCollection, { 12268 children 12269 })); 12270 } 12271 return children; 12272 }, [children]); 12273 const state = { 12274 empty 12275 }; 12276 const floatingId = floatingRootContext.useState("floatingId"); 12277 const element = useRenderElement("div", componentProps, { 12278 state, 12279 ref: [forwardedRef, setListElement, hasPositionerContext ? null : setPositionerElement], 12280 props: [listProps, { 12281 children: resolvedChildren, 12282 tabIndex: -1, 12283 id: floatingId, 12284 role: grid ? "grid" : "listbox", 12285 "aria-multiselectable": multiple ? "true" : void 0, 12286 // On a grid the attribute describes cell editability, not selection, so it's left to the 12287 // combobox element in that mode. 12288 "aria-readonly": !grid && readOnly ? true : void 0, 12289 onKeyDown(event) { 12290 if (store.state.disabled || store.state.readOnly) { 12291 return; 12292 } 12293 if (event.key === "Enter") { 12294 const activeIndex = store.state.activeIndex; 12295 if (activeIndex == null) { 12296 return; 12297 } 12298 stopEvent(event); 12299 clickHighlightedItem(store, activeIndex, event.nativeEvent); 12300 } 12301 } 12302 }, elementProps] 12303 }); 12304 if (virtualized) { 12305 return element; 12306 } 12307 const labelsRef = hasItems && !forceMounted ? void 0 : store.context.labelsRef; 12308 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CompositeList, { 12309 elementsRef: store.context.listRef, 12310 labelsRef, 12311 children: element 12312 }); 12313 }); 12314 if (true) ComboboxList.displayName = "ComboboxList"; 12315 12316 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/status/ComboboxStatus.mjs 12317 var React67 = __toESM(require_react(), 1); 12318 12319 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useInitialLiveRegionTextMutation.mjs 12320 var React66 = __toESM(require_react(), 1); 12321 var LIVE_REGION_MARKER = ""; 12322 var INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY = 200; 12323 function findLastTextNode(root2) { 12324 const walker = root2.ownerDocument.createTreeWalker(root2, NodeFilter.SHOW_TEXT); 12325 let lastTextNode = null; 12326 while (walker.nextNode()) { 12327 const textNode = walker.currentNode; 12328 if (textNode.nodeValue !== "") { 12329 lastTextNode = textNode; 12330 } 12331 } 12332 return lastTextNode; 12333 } 12334 function useInitialLiveRegionTextMutation(present = true) { 12335 const timeout = useTimeout(); 12336 const rootRef = React66.useRef(null); 12337 React66.useEffect(() => { 12338 if (!present || parts_exports.os.ios) { 12339 return void 0; 12340 } 12341 const root2 = rootRef.current; 12342 if (root2 == null) { 12343 return void 0; 12344 } 12345 const textNode = findLastTextNode(root2); 12346 if (textNode == null) { 12347 return void 0; 12348 } 12349 const originalValue = textNode.data; 12350 const markedValue = `$originalValue}$LIVE_REGION_MARKER}`; 12351 textNode.nodeValue = markedValue; 12352 timeout.start(INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY, () => { 12353 if (textNode.nodeValue === markedValue) { 12354 textNode.nodeValue = originalValue; 12355 } 12356 }); 12357 return () => { 12358 timeout.clear(); 12359 if (textNode.nodeValue === markedValue) { 12360 textNode.nodeValue = originalValue; 12361 } 12362 }; 12363 }, [present, rootRef, timeout]); 12364 return rootRef; 12365 } 12366 12367 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/status/ComboboxStatus.mjs 12368 var ComboboxStatus = /* @__PURE__ */ React67.forwardRef(function ComboboxStatus2(componentProps, forwardedRef) { 12369 const { 12370 render, 12371 className, 12372 style, 12373 children: childrenProp, 12374 ...elementProps 12375 } = componentProps; 12376 const statusRef = useInitialLiveRegionTextMutation(); 12377 return useRenderElement("div", componentProps, { 12378 ref: [forwardedRef, statusRef], 12379 props: [{ 12380 children: childrenProp, 12381 role: "status", 12382 "aria-live": "polite", 12383 "aria-atomic": true 12384 }, elementProps] 12385 }); 12386 }); 12387 if (true) ComboboxStatus.displayName = "ComboboxStatus"; 12388 12389 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/portal/ComboboxPortal.mjs 12390 var React69 = __toESM(require_react(), 1); 12391 12392 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/portal/ComboboxPortalContext.mjs 12393 var React68 = __toESM(require_react(), 1); 12394 var ComboboxPortalContext = /* @__PURE__ */ React68.createContext(void 0); 12395 if (true) ComboboxPortalContext.displayName = "ComboboxPortalContext"; 12396 function useComboboxPortalContext() { 12397 const context = React68.useContext(ComboboxPortalContext); 12398 if (context === void 0) { 12399 throw new Error(true ? "Base UI: <Combobox.Portal> is missing." : formatErrorMessage_default(20)); 12400 } 12401 return context; 12402 } 12403 12404 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/portal/ComboboxPortal.mjs 12405 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 12406 var ComboboxPortal = /* @__PURE__ */ React69.forwardRef(function ComboboxPortal2(props, forwardedRef) { 12407 const { 12408 keepMounted = false, 12409 ...portalProps 12410 } = props; 12411 const store = useComboboxRootContext(); 12412 const mounted = store.useState("mounted"); 12413 const forceMounted = store.useState("forceMounted"); 12414 const shouldRender = mounted || keepMounted || forceMounted; 12415 if (!shouldRender) { 12416 return null; 12417 } 12418 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ComboboxPortalContext.Provider, { 12419 value: keepMounted, 12420 children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(FloatingPortal, { 12421 ref: forwardedRef, 12422 ...portalProps 12423 }) 12424 }); 12425 }); 12426 if (true) ComboboxPortal.displayName = "ComboboxPortal"; 12427 12428 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/backdrop/ComboboxBackdrop.mjs 12429 var React70 = __toESM(require_react(), 1); 12430 var stateAttributesMapping2 = { 12431 ...popupStateMapping, 12432 ...transitionStatusMapping 12433 }; 12434 var ComboboxBackdrop = /* @__PURE__ */ React70.forwardRef(function ComboboxBackdrop2(componentProps, forwardedRef) { 12435 const { 12436 render, 12437 className, 12438 style, 12439 ...elementProps 12440 } = componentProps; 12441 const store = useComboboxRootContext(); 12442 const open2 = store.useState("open"); 12443 const mounted = store.useState("mounted"); 12444 const transitionStatus = store.useState("transitionStatus"); 12445 const state = { 12446 open: open2, 12447 transitionStatus 12448 }; 12449 return useRenderElement("div", componentProps, { 12450 state, 12451 ref: forwardedRef, 12452 stateAttributesMapping: stateAttributesMapping2, 12453 props: [{ 12454 role: "presentation", 12455 hidden: !mounted, 12456 style: { 12457 userSelect: "none", 12458 WebkitUserSelect: "none" 12459 } 12460 }, elementProps] 12461 }); 12462 }); 12463 if (true) ComboboxBackdrop.displayName = "ComboboxBackdrop"; 12464 12465 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/positioner/ComboboxPositioner.mjs 12466 var React74 = __toESM(require_react(), 1); 12467 12468 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 12469 var React72 = __toESM(require_react(), 1); 12470 12471 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 12472 var React71 = __toESM(require_react(), 1); 12473 function useBaseUIFloating(options) { 12474 const { 12475 nodeId, 12476 externalTree, 12477 rootContext: store 12478 } = options; 12479 const referenceElement = store.useState("referenceElement"); 12480 const floatingElement = store.useState("floatingElement"); 12481 const domReferenceElement = store.useState("domReferenceElement"); 12482 const open2 = store.useState("open"); 12483 const floatingId = store.useState("floatingId"); 12484 const [positionReference, setPositionReferenceRaw] = React71.useState(null); 12485 const domReferenceRef = React71.useRef(null); 12486 const tree = useFloatingTree(externalTree); 12487 const storeElements = React71.useMemo(() => ({ 12488 reference: referenceElement, 12489 floating: floatingElement, 12490 domReference: domReferenceElement 12491 }), [referenceElement, floatingElement, domReferenceElement]); 12492 const position = useFloating({ 12493 ...options, 12494 elements: { 12495 ...storeElements, 12496 ...positionReference && { 12497 reference: positionReference 12498 } 12499 } 12500 }); 12501 const setPositionReference = React71.useCallback((node) => { 12502 const computedPositionReference = isElement(node) ? { 12503 getBoundingClientRect: () => node.getBoundingClientRect(), 12504 getClientRects: () => node.getClientRects(), 12505 contextElement: node 12506 } : node; 12507 setPositionReferenceRaw(computedPositionReference); 12508 position.refs.setReference(computedPositionReference); 12509 }, [position.refs]); 12510 const refs = React71.useMemo(() => ({ 12511 ...position.refs, 12512 setPositionReference, 12513 domReference: domReferenceRef 12514 }), [position.refs, setPositionReference]); 12515 const elements = React71.useMemo(() => ({ 12516 ...position.elements, 12517 domReference: domReferenceElement 12518 }), [position.elements, domReferenceElement]); 12519 const context = React71.useMemo(() => ({ 12520 ...position, 12521 dataRef: store.context.dataRef, 12522 open: open2, 12523 onOpenChange: store.setOpen, 12524 events: store.context.events, 12525 floatingId, 12526 refs, 12527 elements, 12528 nodeId, 12529 rootStore: store 12530 }), [position, refs, elements, nodeId, store, open2, floatingId]); 12531 useIsoLayoutEffect(() => { 12532 if (domReferenceElement) { 12533 domReferenceRef.current = domReferenceElement; 12534 } 12535 }, [domReferenceElement]); 12536 useIsoLayoutEffect(() => { 12537 store.context.dataRef.current.floatingContext = context; 12538 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 12539 if (node) { 12540 node.context = context; 12541 } 12542 }); 12543 return React71.useMemo(() => ({ 12544 ...position, 12545 context, 12546 refs, 12547 elements, 12548 rootStore: store 12549 }), [position, refs, elements, context, store]); 12550 } 12551 12552 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 12553 var baseArrow = (options) => ({ 12554 name: "arrow", 12555 options, 12556 async fn(state) { 12557 const { 12558 x, 12559 y, 12560 placement, 12561 rects, 12562 platform: platform3, 12563 elements, 12564 middlewareData 12565 } = state; 12566 const { 12567 element, 12568 padding = 0 12569 } = evaluate(options, state) || {}; 12570 if (element == null) { 12571 return {}; 12572 } 12573 const paddingObject = getPaddingObject(padding); 12574 const coords = { 12575 x, 12576 y 12577 }; 12578 const axis = getAlignmentAxis(placement); 12579 const length = getAxisLength(axis); 12580 const arrowDimensions = await platform3.getDimensions(element); 12581 const isYAxis = axis === "y"; 12582 const minProp = isYAxis ? "top" : "left"; 12583 const maxProp = isYAxis ? "bottom" : "right"; 12584 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 12585 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 12586 const startDiff = coords[axis] - rects.reference[axis]; 12587 const clientSize = elements.floating[clientProp] || rects.floating[length]; 12588 const centerToReference = endDiff / 2 - startDiff / 2; 12589 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 12590 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 12591 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 12592 const min2 = minPadding; 12593 const max2 = clientSize - arrowDimensions[length] - maxPadding; 12594 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 12595 const offset4 = clamp(min2, center, max2); 12596 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 12597 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 12598 return { 12599 [axis]: coords[axis] + alignmentOffset, 12600 data: { 12601 [axis]: offset4, 12602 centerOffset: center - offset4 - alignmentOffset, 12603 ...shouldAddOffset && { 12604 alignmentOffset 12605 } 12606 }, 12607 reset: shouldAddOffset 12608 }; 12609 } 12610 }); 12611 var arrow4 = (options, deps) => { 12612 const { 12613 name, 12614 fn 12615 } = baseArrow(options); 12616 return { 12617 name, 12618 fn, 12619 options: [options, deps] 12620 }; 12621 }; 12622 12623 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 12624 var hide4 = { 12625 name: "hide", 12626 async fn(state) { 12627 const { 12628 width, 12629 height, 12630 x, 12631 y 12632 } = state.rects.reference; 12633 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 12634 const overflow = await state.platform.detectOverflow(state, { 12635 elementContext: "reference" 12636 }); 12637 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 12638 return { 12639 data: { 12640 referenceHidden: referenceHidden || anchorHidden2 12641 } 12642 }; 12643 } 12644 }; 12645 12646 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 12647 var DEFAULT_SIDES = { 12648 sideX: "left", 12649 sideY: "top" 12650 }; 12651 12652 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 12653 var availableWidth = "--available-width"; 12654 var availableHeight = "--available-height"; 12655 var anchorWidth = "--anchor-width"; 12656 var anchorHeight = "--anchor-height"; 12657 var transformOrigin = "--transform-origin"; 12658 var positionerWidth = "--positioner-width"; 12659 var positionerHeight = "--positioner-height"; 12660 12661 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 12662 var AVAILABLE_WIDTH_VAR = availableWidth; 12663 var AVAILABLE_HEIGHT_VAR = availableHeight; 12664 function getLogicalSide(sideParam, renderedSide, isRtl) { 12665 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 12666 const logicalRight = isRtl ? "inline-start" : "inline-end"; 12667 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 12668 return { 12669 top: "top", 12670 right: isLogicalSideParam ? logicalRight : "right", 12671 bottom: "bottom", 12672 left: isLogicalSideParam ? logicalLeft : "left" 12673 }[renderedSide]; 12674 } 12675 function getOffsetData(state, sideParam, isRtl) { 12676 const { 12677 rects, 12678 placement 12679 } = state; 12680 const data = { 12681 side: getLogicalSide(sideParam, getSide(placement), isRtl), 12682 align: getAlignment(placement) || "center", 12683 anchor: { 12684 width: rects.reference.width, 12685 height: rects.reference.height 12686 }, 12687 positioner: { 12688 width: rects.floating.width, 12689 height: rects.floating.height 12690 } 12691 }; 12692 return data; 12693 } 12694 function useAnchorPositioning(params) { 12695 return useAnchorPositioningWithHook(params, useBaseUIFloating); 12696 } 12697 function useAnchorPositioningWithHook(params, useFloatingHook) { 12698 const { 12699 // Public parameters 12700 anchor, 12701 positionMethod = "absolute", 12702 side: sideParam = "bottom", 12703 sideOffset = 0, 12704 align = "center", 12705 alignOffset = 0, 12706 collisionBoundary, 12707 collisionPadding: collisionPaddingParam = 5, 12708 sticky = false, 12709 arrowPadding = 5, 12710 disableAnchorTracking = false, 12711 inline: inlineMiddleware, 12712 // Private parameters 12713 keepMounted = false, 12714 floatingRootContext, 12715 mounted, 12716 collisionAvoidance, 12717 shift: shift4, 12718 nodeId, 12719 adaptiveOrigin: adaptiveOrigin2, 12720 lazyFlip = false, 12721 externalTree 12722 } = params; 12723 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 12724 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 12725 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 12726 const shiftCrossAxis = shift4?.crossAxis ?? false; 12727 const shiftRootBoundary = shift4?.rootBoundary; 12728 const anchorFn = typeof anchor === "function" ? anchor : void 0; 12729 const anchorFnCallback = useStableCallback(anchorFn); 12730 const anchorDep = anchorFn ? anchorFnCallback : anchor; 12731 const anchorValueRef = useValueAsRef(anchor); 12732 const mountedRef = useValueAsRef(mounted); 12733 const direction = useDirection(); 12734 const isRtl = direction === "rtl"; 12735 const [mountPlacement, setMountPlacement] = React72.useState(null); 12736 if (!mounted && mountPlacement !== null) { 12737 setMountPlacement(null); 12738 } 12739 const lockAlign = lazyFlip === "placement"; 12740 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 12741 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 12742 const side = mountSide || { 12743 top: "top", 12744 right: "right", 12745 bottom: "bottom", 12746 left: "left", 12747 "inline-end": isRtl ? "left" : "right", 12748 "inline-start": isRtl ? "right" : "left" 12749 }[sideParam]; 12750 const placementAlign = mountAlign || align; 12751 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 12752 let collisionPadding = collisionPaddingParam; 12753 if (typeof collisionPadding === "number") { 12754 collisionPadding = { 12755 top: collisionPadding, 12756 right: collisionPadding, 12757 bottom: collisionPadding, 12758 left: collisionPadding 12759 }; 12760 } else if (collisionPadding) { 12761 collisionPadding = { 12762 top: collisionPadding.top || 0, 12763 right: collisionPadding.right || 0, 12764 bottom: collisionPadding.bottom || 0, 12765 left: collisionPadding.left || 0 12766 }; 12767 } 12768 const bias = 1; 12769 const biasTop = sideParam === "bottom" ? bias : 0; 12770 const biasBottom = sideParam === "top" ? bias : 0; 12771 const biasLeft = sideParam === "right" ? bias : 0; 12772 const biasRight = sideParam === "left" ? bias : 0; 12773 const commonCollisionProps = { 12774 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 12775 padding: collisionPadding 12776 }; 12777 const arrowRef = React72.useRef(null); 12778 const sideOffsetRef = useValueAsRef(sideOffset); 12779 const alignOffsetRef = useValueAsRef(alignOffset); 12780 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 12781 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 12782 const middleware = []; 12783 if (inlineMiddleware) { 12784 middleware.push(inlineMiddleware); 12785 } 12786 middleware.push(offset3((state) => { 12787 const data = getOffsetData(state, sideParam, isRtl); 12788 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 12789 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 12790 return { 12791 mainAxis: sideAxis, 12792 crossAxis: alignAxis, 12793 alignmentAxis: alignAxis 12794 }; 12795 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 12796 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 12797 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 12798 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 12799 ...commonCollisionProps, 12800 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 12801 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 12802 padding: { 12803 top: collisionPadding.top + bias + biasTop, 12804 right: collisionPadding.right + bias + biasRight, 12805 bottom: collisionPadding.bottom + bias + biasBottom, 12806 left: collisionPadding.left + bias + biasLeft 12807 }, 12808 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 12809 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 12810 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 12811 }); 12812 const shiftMiddleware = shiftDisabled ? null : shift3({ 12813 ...commonCollisionProps, 12814 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 12815 rootBoundary: shiftRootBoundary, 12816 mainAxis: collisionAvoidanceAlign !== "none", 12817 crossAxis: crossAxisShiftEnabled, 12818 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 12819 if (!arrowRef.current) { 12820 return {}; 12821 } 12822 const { 12823 width, 12824 height 12825 } = arrowRef.current.getBoundingClientRect(); 12826 const sideAxis = getSideAxis(getSide(limitData.placement)); 12827 const arrowSize = sideAxis === "y" ? width : height; 12828 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 12829 return { 12830 offset: arrowSize / 2 + offsetAmount / 2 12831 }; 12832 }) 12833 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 12834 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 12835 middleware.push(shiftMiddleware, flipMiddleware); 12836 } else { 12837 middleware.push(flipMiddleware, shiftMiddleware); 12838 } 12839 middleware.push(size3({ 12840 ...commonCollisionProps, 12841 apply({ 12842 elements: { 12843 floating 12844 }, 12845 availableWidth: availableWidth2, 12846 availableHeight: availableHeight2, 12847 rects 12848 }) { 12849 if (!mountedRef.current) { 12850 return; 12851 } 12852 const floatingStyle = floating.style; 12853 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 12854 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 12855 const dpr = getWindow(floating).devicePixelRatio || 1; 12856 const { 12857 x: x2, 12858 y: y2, 12859 width, 12860 height 12861 } = rects.reference; 12862 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 12863 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 12864 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 12865 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 12866 } 12867 }), arrow4((state) => ({ 12868 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 12869 // we'll create a fake element. 12870 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 12871 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 12872 padding: arrowRef.current ? arrowPadding : 0 12873 }), [arrowPadding]), { 12874 name: "transformOrigin", 12875 fn(state) { 12876 const { 12877 elements: { 12878 floating 12879 }, 12880 middlewareData: middlewareData2, 12881 placement: renderedPlacement2, 12882 platform: platform3, 12883 rects, 12884 y: y2 12885 } = state; 12886 const renderedSide2 = getSide(renderedPlacement2); 12887 const renderedAlign2 = getAlignment(renderedPlacement2); 12888 const isVertical = getSideAxis(renderedSide2) === "y"; 12889 const arrowEl = arrowRef.current; 12890 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 12891 let crossOrigin; 12892 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 12893 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 12894 } else { 12895 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 12896 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 12897 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 12898 } 12899 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 12900 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 12901 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 12902 } 12903 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 12904 return {}; 12905 } 12906 }, hide4, adaptiveOrigin2); 12907 useIsoLayoutEffect(() => { 12908 if (!mounted && floatingRootContext) { 12909 floatingRootContext.update({ 12910 referenceElement: null, 12911 floatingElement: null, 12912 domReferenceElement: null, 12913 positionReference: null 12914 }); 12915 } 12916 }, [mounted, floatingRootContext]); 12917 const autoUpdateOptions = React72.useMemo(() => ({ 12918 ancestorScroll: !disableAnchorTracking, 12919 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 12920 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 12921 }), [disableAnchorTracking]); 12922 const { 12923 refs, 12924 elements, 12925 x, 12926 y, 12927 middlewareData, 12928 update: update2, 12929 placement: renderedPlacement, 12930 context, 12931 isPositioned, 12932 floatingStyles: originalFloatingStyles 12933 } = useFloatingHook({ 12934 rootContext: floatingRootContext, 12935 open: keepMounted ? mounted : void 0, 12936 placement, 12937 middleware, 12938 strategy: positionMethod, 12939 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 12940 nodeId, 12941 externalTree 12942 }); 12943 const { 12944 sideX, 12945 sideY 12946 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 12947 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 12948 const floatingStyles = React72.useMemo(() => { 12949 let base; 12950 if (!isPositioned) { 12951 base = { 12952 position: resolvedPosition, 12953 top: 0, 12954 left: 0 12955 }; 12956 } else if (adaptiveOrigin2) { 12957 base = { 12958 position: resolvedPosition, 12959 [sideX]: x, 12960 [sideY]: y 12961 }; 12962 } else { 12963 base = { 12964 ...originalFloatingStyles, 12965 position: resolvedPosition 12966 }; 12967 } 12968 base[AVAILABLE_WIDTH_VAR] = "100vw"; 12969 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 12970 if (!isPositioned) { 12971 base.opacity = 0; 12972 } 12973 return base; 12974 }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 12975 const registeredPositionReferenceRef = React72.useRef(null); 12976 useIsoLayoutEffect(() => { 12977 if (!mounted) { 12978 return; 12979 } 12980 const anchorValue = anchorValueRef.current; 12981 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 12982 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 12983 const finalAnchor = unwrappedElement || null; 12984 if (finalAnchor !== registeredPositionReferenceRef.current) { 12985 refs.setPositionReference(finalAnchor); 12986 registeredPositionReferenceRef.current = finalAnchor; 12987 } 12988 }, [mounted, refs, anchorDep, anchorValueRef]); 12989 React72.useEffect(() => { 12990 if (!mounted) { 12991 return; 12992 } 12993 const anchorValue = anchorValueRef.current; 12994 if (typeof anchorValue === "function") { 12995 return; 12996 } 12997 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 12998 refs.setPositionReference(anchorValue.current); 12999 registeredPositionReferenceRef.current = anchorValue.current; 13000 } 13001 }, [mounted, refs, anchorDep, anchorValueRef]); 13002 React72.useEffect(() => { 13003 if (keepMounted && mounted && elements.reference && elements.floating) { 13004 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 13005 } 13006 return void 0; 13007 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 13008 const renderedSide = getSide(renderedPlacement); 13009 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 13010 const renderedAlign = getAlignment(renderedPlacement) || "center"; 13011 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 13012 useIsoLayoutEffect(() => { 13013 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 13014 setMountPlacement(renderedPlacement); 13015 } 13016 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 13017 const arrowStyles = React72.useMemo(() => ({ 13018 position: "absolute", 13019 top: middlewareData.arrow?.y, 13020 left: middlewareData.arrow?.x 13021 }), [middlewareData.arrow]); 13022 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 13023 return React72.useMemo(() => ({ 13024 positionerStyles: floatingStyles, 13025 arrowStyles, 13026 arrowRef, 13027 arrowUncentered, 13028 side: logicalRenderedSide, 13029 align: renderedAlign, 13030 physicalSide: renderedSide, 13031 anchorHidden: anchorHidden2, 13032 refs, 13033 context, 13034 isPositioned, 13035 update: update2 13036 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 13037 } 13038 function isRef(param) { 13039 return param != null && "current" in param; 13040 } 13041 13042 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 13043 function getDisabledMountTransitionStyles(transitionStatus) { 13044 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 13045 } 13046 13047 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 13048 function usePositioner(componentProps, state, { 13049 styles, 13050 transitionStatus, 13051 props, 13052 refs, 13053 hidden, 13054 inert = false 13055 }) { 13056 const style = { 13057 ...styles 13058 }; 13059 if (inert) { 13060 style.pointerEvents = "none"; 13061 } 13062 return useRenderElement("div", componentProps, { 13063 state, 13064 ref: refs, 13065 props: [{ 13066 role: "presentation", 13067 hidden, 13068 style 13069 }, getDisabledMountTransitionStyles(transitionStatus), props], 13070 stateAttributesMapping: popupStateMapping 13071 }); 13072 } 13073 13074 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs 13075 var React73 = __toESM(require_react(), 1); 13076 var VIEWPORT_WIDTH_TOLERANCE_PX = 20; 13077 function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) { 13078 const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React73.useState(false); 13079 useIsoLayoutEffect(() => { 13080 if (!enabled || !touchOpen || positionerElement == null) { 13081 setTouchOpenShouldLockScroll(false); 13082 return; 13083 } 13084 const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth; 13085 const popupWidth2 = positionerElement.offsetWidth; 13086 setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth2 > 0 && popupWidth2 >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX); 13087 }, [enabled, touchOpen, positionerElement]); 13088 useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement); 13089 } 13090 13091 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/positioner/ComboboxPositioner.mjs 13092 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 13093 var ComboboxPositioner = /* @__PURE__ */ React74.forwardRef(function ComboboxPositioner2(componentProps, forwardedRef) { 13094 const { 13095 render, 13096 className, 13097 anchor, 13098 // `useAnchorPositioning` applies the same defaults to the undefined values; the names 13099 // remain destructured to exclude the props from `elementProps`. 13100 positionMethod, 13101 side, 13102 align, 13103 sideOffset, 13104 alignOffset, 13105 collisionBoundary = "clipping-ancestors", 13106 collisionPadding, 13107 arrowPadding, 13108 sticky, 13109 disableAnchorTracking = false, 13110 collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE, 13111 style: styleProp, 13112 ...elementProps 13113 } = componentProps; 13114 const store = useComboboxRootContext(); 13115 const floatingRootContext = useComboboxFloatingContext(); 13116 const keepMounted = useComboboxPortalContext(); 13117 const modal = store.useState("modal"); 13118 const open2 = store.useState("open"); 13119 const mounted = store.useState("mounted"); 13120 const openMethod = store.useState("openMethod"); 13121 const positionerElement = store.useState("positionerElement"); 13122 const triggerElement = store.useState("triggerElement"); 13123 const inputElement = store.useState("inputElement"); 13124 const inputGroupElement = store.useState("inputGroupElement"); 13125 const inputInsidePopup = store.useState("inputInsidePopup"); 13126 const transitionStatus = store.useState("transitionStatus"); 13127 const empty = useListEmpty(); 13128 const resolvedAnchor = anchor ?? (inputInsidePopup ? triggerElement : inputGroupElement ?? inputElement); 13129 const positioning = useAnchorPositioning({ 13130 anchor: resolvedAnchor, 13131 floatingRootContext, 13132 positionMethod, 13133 mounted, 13134 side, 13135 sideOffset, 13136 align, 13137 alignOffset, 13138 arrowPadding, 13139 collisionBoundary, 13140 collisionPadding, 13141 sticky, 13142 disableAnchorTracking, 13143 keepMounted, 13144 collisionAvoidance, 13145 lazyFlip: true 13146 }); 13147 useAnchoredPopupScrollLock(open2 && modal, openMethod === "touch", positionerElement, triggerElement); 13148 const state = { 13149 open: open2, 13150 side: positioning.side, 13151 align: positioning.align, 13152 anchorHidden: positioning.anchorHidden, 13153 empty 13154 }; 13155 useIsoLayoutEffect(() => { 13156 store.set("popupSide", positioning.side); 13157 }, [store, positioning.side]); 13158 const setPositionerElement = useStableCallback((element2) => { 13159 store.set("positionerElement", element2); 13160 }); 13161 const element = usePositioner(componentProps, state, { 13162 styles: positioning.positionerStyles, 13163 transitionStatus, 13164 props: elementProps, 13165 refs: [forwardedRef, setPositionerElement], 13166 hidden: !mounted, 13167 inert: !open2 13168 }); 13169 return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(ComboboxPositionerContext.Provider, { 13170 value: positioning, 13171 children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(InternalBackdrop, { 13172 inert: inertValue(!open2), 13173 cutout: inputGroupElement ?? inputElement ?? triggerElement 13174 }), element] 13175 }); 13176 }); 13177 if (true) ComboboxPositioner.displayName = "ComboboxPositioner"; 13178 13179 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/popup/ComboboxPopup.mjs 13180 var React75 = __toESM(require_react(), 1); 13181 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 13182 var stateAttributesMapping3 = { 13183 ...popupStateMapping, 13184 ...transitionStatusMapping 13185 }; 13186 var ComboboxPopup = /* @__PURE__ */ React75.forwardRef(function ComboboxPopup2(componentProps, forwardedRef) { 13187 const { 13188 render, 13189 className, 13190 style, 13191 initialFocus, 13192 finalFocus, 13193 ...elementProps 13194 } = componentProps; 13195 const store = useComboboxRootContext(); 13196 const positioning = useComboboxPositionerContext(); 13197 const floatingRootContext = useComboboxFloatingContext(); 13198 const mounted = store.useState("mounted"); 13199 const open2 = store.useState("open"); 13200 const openMethod = store.useState("openMethod"); 13201 const popupProps = store.useState("popupProps"); 13202 const transitionStatus = store.useState("transitionStatus"); 13203 const inputInsidePopup = store.useState("inputInsidePopup"); 13204 const inputElement = store.useState("inputElement"); 13205 const modal = store.useState("modal"); 13206 const rootId = store.useState("id"); 13207 const empty = useListEmpty(); 13208 const popupId = elementProps.id ?? (inputInsidePopup ? getComboboxPopupId(rootId) : void 0); 13209 useIsoLayoutEffect(() => { 13210 store.set("popupId", store.context.popupRef.current?.id || popupId); 13211 return () => { 13212 store.set("popupId", void 0); 13213 }; 13214 }, [store, popupId]); 13215 useOpenChangeComplete({ 13216 open: open2, 13217 ref: store.context.popupRef, 13218 onComplete() { 13219 if (open2) { 13220 store.context.onOpenChangeComplete(true); 13221 } 13222 } 13223 }); 13224 const state = { 13225 open: open2, 13226 side: positioning.side, 13227 align: positioning.align, 13228 anchorHidden: positioning.anchorHidden, 13229 transitionStatus, 13230 empty 13231 }; 13232 const element = useRenderElement("div", componentProps, { 13233 state, 13234 ref: [forwardedRef, store.context.popupRef], 13235 props: [popupProps, { 13236 id: popupId, 13237 role: inputInsidePopup ? "dialog" : "presentation", 13238 onFocus(event) { 13239 const target = getTarget(event.nativeEvent); 13240 if (openMethod !== "touch" && (contains(store.state.listElement, target) || target === event.currentTarget)) { 13241 store.context.inputRef.current?.focus(); 13242 } 13243 } 13244 }, getDisabledMountTransitionStyles(transitionStatus), elementProps], 13245 stateAttributesMapping: stateAttributesMapping3 13246 }); 13247 const computedDefaultInitialFocus = inputInsidePopup ? (interactionType) => interactionType === "touch" ? store.context.popupRef.current : inputElement : false; 13248 const resolvedInitialFocus = initialFocus === void 0 ? computedDefaultInitialFocus : initialFocus; 13249 let resolvedFinalFocus; 13250 if (finalFocus != null) { 13251 resolvedFinalFocus = finalFocus; 13252 } else { 13253 resolvedFinalFocus = inputInsidePopup ? void 0 : false; 13254 } 13255 const focusManagerModal = !inputInsidePopup || modal; 13256 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FloatingFocusManager, { 13257 context: floatingRootContext, 13258 disabled: !mounted, 13259 modal: focusManagerModal, 13260 openInteractionType: openMethod, 13261 initialFocus: resolvedInitialFocus, 13262 returnFocus: resolvedFinalFocus, 13263 getInsideElements: () => [store.context.startDismissRef.current, store.context.endDismissRef.current], 13264 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(React75.Fragment, { 13265 children: [element, focusManagerModal && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ComboboxInternalDismissButton, { 13266 ref: store.context.endDismissRef 13267 })] 13268 }) 13269 }); 13270 }); 13271 if (true) ComboboxPopup.displayName = "ComboboxPopup"; 13272 13273 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/arrow/ComboboxArrow.mjs 13274 var React76 = __toESM(require_react(), 1); 13275 var ComboboxArrow = /* @__PURE__ */ React76.forwardRef(function ComboboxArrow2(componentProps, forwardedRef) { 13276 const { 13277 render, 13278 className, 13279 style, 13280 ...elementProps 13281 } = componentProps; 13282 const store = useComboboxRootContext(); 13283 const { 13284 arrowRef, 13285 side, 13286 align, 13287 arrowUncentered, 13288 arrowStyles 13289 } = useComboboxPositionerContext(); 13290 const open2 = store.useState("open"); 13291 const state = { 13292 open: open2, 13293 side, 13294 align, 13295 uncentered: arrowUncentered 13296 }; 13297 return useRenderElement("div", componentProps, { 13298 ref: [arrowRef, forwardedRef], 13299 stateAttributesMapping: popupStateMapping, 13300 state, 13301 props: { 13302 style: arrowStyles, 13303 "aria-hidden": true, 13304 ...elementProps 13305 } 13306 }); 13307 }); 13308 if (true) ComboboxArrow.displayName = "ComboboxArrow"; 13309 13310 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/group/ComboboxGroup.mjs 13311 var React78 = __toESM(require_react(), 1); 13312 13313 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/group/ComboboxGroupContext.mjs 13314 var React77 = __toESM(require_react(), 1); 13315 var ComboboxGroupContext = /* @__PURE__ */ React77.createContext(void 0); 13316 if (true) ComboboxGroupContext.displayName = "ComboboxGroupContext"; 13317 function useComboboxGroupContext() { 13318 const context = React77.useContext(ComboboxGroupContext); 13319 if (context === void 0) { 13320 throw new Error(true ? "Base UI: ComboboxGroupContext is missing. ComboboxGroup parts must be placed within <Combobox.Group>." : formatErrorMessage_default(18)); 13321 } 13322 return context; 13323 } 13324 13325 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/group/ComboboxGroup.mjs 13326 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 13327 var ComboboxGroup = /* @__PURE__ */ React78.forwardRef(function ComboboxGroup2(componentProps, forwardedRef) { 13328 const { 13329 render, 13330 className, 13331 style, 13332 items, 13333 ...elementProps 13334 } = componentProps; 13335 const store = useComboboxRootContext(); 13336 const grid = store.useState("grid"); 13337 const [labelId, setLabelId] = React78.useState(); 13338 const contextValue = React78.useMemo(() => ({ 13339 labelId, 13340 setLabelId, 13341 items 13342 }), [labelId, setLabelId, items]); 13343 const element = useRenderElement("div", componentProps, { 13344 ref: forwardedRef, 13345 props: [{ 13346 // `group` is not a valid owned element of `grid`, and `row` must be owned 13347 // by `grid`, `rowgroup`, or `treegrid`. 13348 role: grid ? "rowgroup" : "group", 13349 "aria-labelledby": labelId 13350 }, elementProps] 13351 }); 13352 const wrappedElement = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComboboxGroupContext.Provider, { 13353 value: contextValue, 13354 children: element 13355 }); 13356 if (items) { 13357 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(GroupCollectionProvider, { 13358 items, 13359 children: wrappedElement 13360 }); 13361 } 13362 return wrappedElement; 13363 }); 13364 if (true) ComboboxGroup.displayName = "ComboboxGroup"; 13365 13366 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/group-label/ComboboxGroupLabel.mjs 13367 var React79 = __toESM(require_react(), 1); 13368 var ComboboxGroupLabel = /* @__PURE__ */ React79.forwardRef(function ComboboxGroupLabel2(componentProps, forwardedRef) { 13369 const { 13370 render, 13371 className, 13372 style, 13373 id: idProp, 13374 ...elementProps 13375 } = componentProps; 13376 const { 13377 setLabelId 13378 } = useComboboxGroupContext(); 13379 const id = useBaseUiId(idProp); 13380 useIsoLayoutEffect(() => { 13381 setLabelId(id); 13382 return () => { 13383 setLabelId((currentId) => currentId === id ? void 0 : currentId); 13384 }; 13385 }, [id, setLabelId]); 13386 const element = useRenderElement("div", componentProps, { 13387 ref: forwardedRef, 13388 props: [{ 13389 id, 13390 "aria-hidden": true 13391 }, elementProps] 13392 }); 13393 return element; 13394 }); 13395 if (true) ComboboxGroupLabel.displayName = "ComboboxGroupLabel"; 13396 13397 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/item/ComboboxItem.mjs 13398 var React82 = __toESM(require_react(), 1); 13399 var ReactDOM6 = __toESM(require_react_dom(), 1); 13400 13401 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/item/ComboboxItemContext.mjs 13402 var React80 = __toESM(require_react(), 1); 13403 var ComboboxItemContext = /* @__PURE__ */ React80.createContext(void 0); 13404 if (true) ComboboxItemContext.displayName = "ComboboxItemContext"; 13405 13406 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/row/ComboboxRowContext.mjs 13407 var React81 = __toESM(require_react(), 1); 13408 var ComboboxRowContext = /* @__PURE__ */ React81.createContext(false); 13409 if (true) ComboboxRowContext.displayName = "ComboboxRowContext"; 13410 function useComboboxRowContext() { 13411 return React81.useContext(ComboboxRowContext); 13412 } 13413 13414 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/item/ComboboxItem.mjs 13415 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 13416 function ComboboxItemInner(props) { 13417 const { 13418 componentProps, 13419 forwardedRef, 13420 virtualized, 13421 indexFromFilter 13422 } = props; 13423 const { 13424 render, 13425 className, 13426 style, 13427 value: itemValue = null, 13428 index: indexProp, 13429 disabled: disabledProp = false, 13430 nativeButton = false, 13431 ...elementProps 13432 } = componentProps; 13433 const textRef = React82.useRef(null); 13434 const listItem = useCompositeListItem({ 13435 guess: true, 13436 index: indexProp, 13437 textRef 13438 }); 13439 const store = useComboboxRootContext(); 13440 const isRow = useComboboxRowContext(); 13441 const hasItems = useComboboxHasItemsContext(); 13442 const { 13443 props: itemProps, 13444 id: rootId, 13445 selectionMode, 13446 disabled: rootDisabled, 13447 readOnly, 13448 isItemEqualToValue 13449 } = store.useState("itemRoot"); 13450 const disabled2 = rootDisabled || disabledProp; 13451 const selectable = selectionMode !== "none"; 13452 const index2 = indexProp ?? indexFromFilter ?? listItem.index; 13453 const hasRegistered = index2 !== -1; 13454 const highlighted = store.useState("isActive", index2); 13455 const matchesSelectedValue = store.useState("isSelected", itemValue); 13456 const itemRef = React82.useRef(null); 13457 const id = rootId != null && hasRegistered ? `$rootId}-$index2}` : void 0; 13458 const selected = matchesSelectedValue && selectable; 13459 useIsoLayoutEffect(() => { 13460 const shouldRun = hasRegistered && (virtualized || indexProp != null); 13461 if (!shouldRun) { 13462 return void 0; 13463 } 13464 const list = store.context.listRef.current; 13465 list[index2] = itemRef.current; 13466 return () => { 13467 delete list[index2]; 13468 }; 13469 }, [hasRegistered, virtualized, index2, indexProp, store]); 13470 useIsoLayoutEffect(() => { 13471 if (!hasRegistered || hasItems) { 13472 return void 0; 13473 } 13474 const visibleValues = store.context.valuesRef.current; 13475 visibleValues[index2] = itemValue; 13476 return () => { 13477 delete visibleValues[index2]; 13478 }; 13479 }, [hasRegistered, hasItems, index2, itemValue, store]); 13480 useIsoLayoutEffect(() => { 13481 if (!hasRegistered || hasItems) { 13482 return; 13483 } 13484 const selectedValue = store.state.selectedValue; 13485 let nextIndex = store.state.selectedIndex; 13486 if (store.state.selectionMode === "multiple" && Array.isArray(selectedValue)) { 13487 nextIndex = resolveSelectedIndex(index2, itemValue, store.context.valuesRef.current, selectedValue, isItemEqualToValue, nextIndex); 13488 } else if (compareItemEquality(itemValue, selectedValue, isItemEqualToValue)) { 13489 nextIndex = index2; 13490 } 13491 store.set("selectedIndex", nextIndex); 13492 }, [hasRegistered, hasItems, store, index2, itemValue, isItemEqualToValue]); 13493 const { 13494 getButtonProps, 13495 buttonRef 13496 } = useButton({ 13497 disabled: disabled2, 13498 focusableWhenDisabled: true, 13499 native: nativeButton, 13500 composite: true 13501 }); 13502 const state = { 13503 disabled: disabled2, 13504 selected, 13505 highlighted 13506 }; 13507 function commitSelection(nativeEvent) { 13508 function selectItem() { 13509 store.context.handleSelection(nativeEvent, itemValue); 13510 } 13511 if (store.state.submitOnItemClick) { 13512 ReactDOM6.flushSync(selectItem); 13513 store.context.requestSubmit(); 13514 } else { 13515 selectItem(); 13516 } 13517 } 13518 const defaultProps = { 13519 id, 13520 role: isRow ? "gridcell" : "option", 13521 "aria-selected": selectable ? selected : void 0, 13522 // Focusable items steal focus from the input upon mouseup. 13523 // Warn if the user renders a natively focusable element like `<button>`, 13524 // as it should be a `<div>` instead. 13525 tabIndex: void 0, 13526 onPointerDownCapture(event) { 13527 if (event.isPrimary) { 13528 store.context.pointerDownItemRef.current = event.currentTarget; 13529 } 13530 event.preventDefault(); 13531 }, 13532 onMouseDown(event) { 13533 event.preventDefault(); 13534 }, 13535 onClick(event) { 13536 if (disabled2 || readOnly) { 13537 return; 13538 } 13539 commitSelection(event.nativeEvent); 13540 }, 13541 onMouseUp(event) { 13542 const pointerStartedOnItem = store.context.pointerDownItemRef.current === event.currentTarget; 13543 store.context.pointerDownItemRef.current = null; 13544 if (disabled2 || readOnly || event.button !== 0 || pointerStartedOnItem || !highlighted) { 13545 return; 13546 } 13547 commitSelection(event.nativeEvent); 13548 } 13549 }; 13550 const element = useRenderElement("div", componentProps, { 13551 ref: [buttonRef, forwardedRef, listItem.ref, itemRef], 13552 state, 13553 props: [itemProps, defaultProps, elementProps, getButtonProps] 13554 }); 13555 const contextValue = React82.useMemo(() => ({ 13556 selected, 13557 textRef 13558 }), [selected, textRef]); 13559 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ComboboxItemContext.Provider, { 13560 value: contextValue, 13561 children: element 13562 }); 13563 } 13564 function ComboboxItemVirtualizedIndex(props) { 13565 const { 13566 componentProps, 13567 forwardedRef 13568 } = props; 13569 const store = useComboboxRootContext(); 13570 const isItemEqualToValue = store.useState("isItemEqualToValue"); 13571 const { 13572 flatFilteredValues 13573 } = useComboboxDerivedItemsContext(); 13574 const lookupValue = componentProps.value ?? null; 13575 const indexFromFilter = findItemIndex(flatFilteredValues, lookupValue, isItemEqualToValue); 13576 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ComboboxItemInner, { 13577 componentProps, 13578 forwardedRef, 13579 virtualized: true, 13580 indexFromFilter 13581 }); 13582 } 13583 var ComboboxItem = /* @__PURE__ */ React82.memo(/* @__PURE__ */ React82.forwardRef(function ComboboxItem2(componentProps, forwardedRef) { 13584 const store = useComboboxRootContext(); 13585 const virtualized = store.useState("virtualized"); 13586 if (virtualized && componentProps.index == null) { 13587 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ComboboxItemVirtualizedIndex, { 13588 componentProps, 13589 forwardedRef 13590 }); 13591 } 13592 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ComboboxItemInner, { 13593 componentProps, 13594 forwardedRef, 13595 virtualized, 13596 indexFromFilter: void 0 13597 }); 13598 })); 13599 if (true) ComboboxItem.displayName = "ComboboxItem"; 13600 13601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/item/AutocompleteItem.mjs 13602 var AutocompleteItem = ComboboxItem; 13603 13604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/row/ComboboxRow.mjs 13605 var React83 = __toESM(require_react(), 1); 13606 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 13607 var ComboboxRow = /* @__PURE__ */ React83.forwardRef(function ComboboxRow2(componentProps, forwardedRef) { 13608 const { 13609 render, 13610 className, 13611 style, 13612 ...elementProps 13613 } = componentProps; 13614 const element = useRenderElement("div", componentProps, { 13615 ref: forwardedRef, 13616 props: [{ 13617 role: "row" 13618 }, elementProps] 13619 }); 13620 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ComboboxRowContext.Provider, { 13621 value: true, 13622 children: element 13623 }); 13624 }); 13625 if (true) ComboboxRow.displayName = "ComboboxRow"; 13626 13627 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/empty/ComboboxEmpty.mjs 13628 var React84 = __toESM(require_react(), 1); 13629 var ComboboxEmpty = /* @__PURE__ */ React84.forwardRef(function ComboboxEmpty2(componentProps, forwardedRef) { 13630 const { 13631 render, 13632 className, 13633 style, 13634 children: childrenProp, 13635 ...elementProps 13636 } = componentProps; 13637 const { 13638 filteredItems 13639 } = useComboboxDerivedItemsContext(); 13640 const store = useComboboxRootContext(); 13641 const emptyRef = useInitialLiveRegionTextMutation(); 13642 const children = filteredItems.length === 0 ? childrenProp : null; 13643 return useRenderElement("div", componentProps, { 13644 ref: [forwardedRef, store.context.emptyRef, emptyRef], 13645 props: [{ 13646 children, 13647 role: "status", 13648 "aria-live": "polite", 13649 "aria-atomic": true 13650 }, elementProps] 13651 }); 13652 }); 13653 if (true) ComboboxEmpty.displayName = "ComboboxEmpty"; 13654 13655 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs 13656 var React85 = __toESM(require_react(), 1); 13657 var ListboxSeparator = /* @__PURE__ */ React85.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) { 13658 const { 13659 className, 13660 render, 13661 orientation = "horizontal", 13662 style, 13663 ...elementProps 13664 } = componentProps; 13665 const state = { 13666 orientation 13667 }; 13668 return useRenderElement("div", componentProps, { 13669 state, 13670 ref: forwardedRef, 13671 props: [{ 13672 role: "presentation" 13673 }, elementProps] 13674 }); 13675 }); 13676 if (true) ListboxSeparator.displayName = "ListboxSeparator"; 13677 13678 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/autocomplete/separator/AutocompleteSeparator.mjs 13679 var AutocompleteSeparator = ListboxSeparator; 13680 13681 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/combobox/root/utils/useFilteredItems.mjs 13682 function useFilteredItems() { 13683 const items = useComboboxDerivedItemsContext(); 13684 return items.filteredItems; 13685 } 13686 13687 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/button/Button.mjs 13688 var React86 = __toESM(require_react(), 1); 13689 var Button = /* @__PURE__ */ React86.forwardRef(function Button2(componentProps, forwardedRef) { 13690 const { 13691 render, 13692 className, 13693 disabled: disabled2 = false, 13694 focusableWhenDisabled = false, 13695 nativeButton = true, 13696 style, 13697 ...elementProps 13698 } = componentProps; 13699 const { 13700 getButtonProps, 13701 buttonRef 13702 } = useButton({ 13703 disabled: disabled2, 13704 focusableWhenDisabled, 13705 native: nativeButton 13706 }); 13707 const state = { 13708 disabled: disabled2 13709 }; 13710 return useRenderElement("button", componentProps, { 13711 state, 13712 ref: [forwardedRef, buttonRef], 13713 props: [elementProps, getButtonProps] 13714 }); 13715 }); 13716 if (true) Button.displayName = "Button"; 13717 13718 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItemContext.mjs 13719 var React87 = __toESM(require_react(), 1); 13720 var FieldItemContext = /* @__PURE__ */ React87.createContext({ 13721 disabled: false 13722 }); 13723 if (true) FieldItemContext.displayName = "FieldItemContext"; 13724 function useFieldItemContext() { 13725 const context = React87.useContext(FieldItemContext); 13726 return context; 13727 } 13728 13729 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 13730 var React88 = __toESM(require_react(), 1); 13731 13732 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs 13733 function getCombinedFieldValidityData(validityData, invalid2) { 13734 return { 13735 ...validityData, 13736 state: { 13737 ...validityData.state, 13738 valid: !invalid2 && validityData.state.valid 13739 } 13740 }; 13741 } 13742 13743 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 13744 var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE); 13745 function isEligibleInput(input, formElement) { 13746 if (input.matches(":disabled")) { 13747 return false; 13748 } 13749 if (!formElement || input.form === formElement) { 13750 return true; 13751 } 13752 return input.form === null && !input.hasAttribute("form"); 13753 } 13754 function findRepresentativeInput(inputs, formElement) { 13755 let fallback = null; 13756 for (const input of inputs.keys()) { 13757 if (!isEligibleInput(input, formElement)) { 13758 continue; 13759 } 13760 if (!input.validity.valid) { 13761 return input; 13762 } 13763 fallback ??= input; 13764 } 13765 return fallback; 13766 } 13767 function makeState(customError) { 13768 return { 13769 ...DEFAULT_VALIDITY_STATE, 13770 valid: !customError, 13771 customError 13772 }; 13773 } 13774 function getNativeErrors(element) { 13775 return element && element.validationMessage ? [element.validationMessage] : []; 13776 } 13777 function useFieldValidation(params) { 13778 const { 13779 elementRef, 13780 formRef 13781 } = useFormContext(); 13782 const { 13783 setValidityData, 13784 validate, 13785 validityData, 13786 validationDebounceTime, 13787 invalid: invalid2, 13788 markedDirtyRef, 13789 state, 13790 shouldValidateOnChange, 13791 validationMode, 13792 registeredFieldIdRef 13793 } = params; 13794 const { 13795 controlId, 13796 getDescriptionProps 13797 } = useLabelableContext(); 13798 const timeout = useTimeout(); 13799 const inputRef = React88.useRef(null); 13800 const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current; 13801 const validationCommitIdRef = React88.useRef(0); 13802 const customValidityRef = React88.useRef(null); 13803 const registerInput = React88.useCallback((element, registration) => { 13804 registeredInputs.set(element, registration); 13805 return () => { 13806 registeredInputs.delete(element); 13807 }; 13808 }, [registeredInputs]); 13809 const getInputControl = useStableCallback(() => { 13810 const element = findRepresentativeInput(registeredInputs, elementRef.current); 13811 return element && registeredInputs.get(element)?.controlRef.current || null; 13812 }); 13813 const commit = useStableCallback(async (value, revalidate = false) => { 13814 validationCommitIdRef.current += 1; 13815 const validationCommitId = validationCommitIdRef.current; 13816 function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid2) { 13817 const fieldId = registeredFieldIdRef.current ?? controlId; 13818 if (fieldId == null) { 13819 return; 13820 } 13821 const currentFieldData = formRef.current.fields.get(fieldId); 13822 if (!currentFieldData) { 13823 return; 13824 } 13825 const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid); 13826 formRef.current.fields.set(fieldId, { 13827 ...currentFieldData, 13828 validityData: validityDataWithFormErrors 13829 }); 13830 } 13831 function makeValidityData(validityState, errorMessages) { 13832 const errors = validityState.valid === false ? errorMessages : []; 13833 return { 13834 value, 13835 state: validityState, 13836 error: errors[0] ?? "", 13837 errors, 13838 initialValue: validityData.initialValue 13839 }; 13840 } 13841 function setCustomValidity(element2, message) { 13842 const displaced = element2.validity.customError ? element2.validationMessage : ""; 13843 const ownedMessage = message.replace(/\r\n?/g, "\n"); 13844 element2.setCustomValidity(ownedMessage); 13845 customValidityRef.current = [element2, ownedMessage, displaced]; 13846 } 13847 function clearCustomValidity() { 13848 const record = customValidityRef.current; 13849 customValidityRef.current = null; 13850 if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) { 13851 record[0].setCustomValidity(record[2]); 13852 } 13853 } 13854 function publish(validityState, errorMessages, externalInvalid) { 13855 const nextValidityData = makeValidityData(validityState, errorMessages); 13856 updateRegisteredFieldValidity(nextValidityData, externalInvalid); 13857 setValidityData(nextValidityData); 13858 } 13859 function getState(el) { 13860 const computedState = validityKeys.reduce((acc, key) => { 13861 acc[key] = el.validity[key]; 13862 return acc; 13863 }, {}); 13864 let hasOnlyValueMissingError = false; 13865 for (const key of validityKeys) { 13866 if (key === "valid") { 13867 continue; 13868 } 13869 if (key === "valueMissing" && computedState[key]) { 13870 hasOnlyValueMissingError = true; 13871 } else if (computedState[key]) { 13872 return computedState; 13873 } 13874 } 13875 if (hasOnlyValueMissingError && !markedDirtyRef.current) { 13876 computedState.valid = true; 13877 computedState.valueMissing = false; 13878 } 13879 return computedState; 13880 } 13881 function resolveRepresentativeInput() { 13882 return registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current; 13883 } 13884 let element = resolveRepresentativeInput(); 13885 function refreshState() { 13886 element = resolveRepresentativeInput(); 13887 return element?.willValidate ? getState(element) : makeState(false); 13888 } 13889 if (revalidate) { 13890 if (state.valid !== false || !element) { 13891 return; 13892 } 13893 if (!element.validity.valueMissing) { 13894 clearCustomValidity(); 13895 const currentElement = resolveRepresentativeInput(); 13896 const foreign = currentElement?.validity.customError ? getNativeErrors(currentElement) : []; 13897 publish(makeState(foreign.length > 0), foreign, false); 13898 return; 13899 } 13900 for (const key of validityKeys) { 13901 if (key !== "valid" && key !== "valueMissing" && key !== "customError" && element.validity[key]) { 13902 return; 13903 } 13904 } 13905 } 13906 timeout.clear(); 13907 clearCustomValidity(); 13908 let nextState = refreshState(); 13909 let validationErrors = getNativeErrors(element); 13910 const isValidatingOnChange = shouldValidateOnChange(); 13911 if (validationErrors.length === 0 || isValidatingOnChange) { 13912 const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => { 13913 if (field.name) { 13914 acc[field.name] = field.getValue(); 13915 } 13916 return acc; 13917 }, {}); 13918 const resultOrPromise = validate(value, formValues); 13919 let result; 13920 if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) { 13921 if (nextState.valid === false) { 13922 publish(nextState, validationErrors); 13923 } else if (validationMode === "onSubmit" || !validityData.state.customError) { 13924 nextState.valid = null; 13925 publish(nextState, validationErrors); 13926 } 13927 result = await resultOrPromise; 13928 if (validationCommitId !== validationCommitIdRef.current) { 13929 return; 13930 } 13931 nextState = refreshState(); 13932 } else { 13933 result = resultOrPromise; 13934 } 13935 validationErrors = result ? [].concat(result).filter(Boolean) : []; 13936 if (validationErrors.length > 0) { 13937 nextState.valid = false; 13938 nextState.customError = true; 13939 if (element?.willValidate) { 13940 setCustomValidity(element, validationErrors.join("\n")); 13941 } 13942 } else { 13943 validationErrors = getNativeErrors(element); 13944 } 13945 } 13946 publish(nextState, validationErrors); 13947 }); 13948 const change = useStableCallback((value, cancelPending = false) => { 13949 timeout.clear(); 13950 validationCommitIdRef.current += 1; 13951 if (cancelPending) { 13952 return; 13953 } 13954 const validateOnChange = shouldValidateOnChange(); 13955 if (validateOnChange && value !== "" && validationDebounceTime) { 13956 timeout.start(validationDebounceTime, () => { 13957 commit(value); 13958 }); 13959 } else { 13960 commit(value, !validateOnChange); 13961 } 13962 }); 13963 const getValidationProps = React88.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? { 13964 "aria-invalid": true 13965 } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]); 13966 return React88.useMemo(() => ({ 13967 getValidationProps, 13968 inputRef, 13969 registeredInputs, 13970 registerInput, 13971 getInputControl, 13972 commit, 13973 change 13974 }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]); 13975 } 13976 13977 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs 13978 function useRegisteredLabelId(idProp, setLabelId) { 13979 const id = useBaseUiId(idProp); 13980 useIsoLayoutEffect(() => { 13981 setLabelId(id); 13982 return () => { 13983 setLabelId((currentId) => currentId === id ? void 0 : currentId); 13984 }; 13985 }, [id, setLabelId]); 13986 return id; 13987 } 13988 13989 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs 13990 function useLabel(params = {}) { 13991 const { 13992 id: idProp, 13993 fallbackControlId, 13994 native = false, 13995 setLabelId: setLabelIdProp, 13996 focusControl: focusControlProp 13997 } = params; 13998 const { 13999 controlId: contextControlId, 14000 setLabelId: setContextLabelId 14001 } = useLabelableContext(); 14002 const syncLabelId = useStableCallback((nextLabelId) => { 14003 setContextLabelId(nextLabelId); 14004 setLabelIdProp?.(nextLabelId); 14005 }); 14006 const id = useRegisteredLabelId(idProp, syncLabelId); 14007 const resolvedControlId = contextControlId ?? fallbackControlId; 14008 function focusControl(event) { 14009 if (focusControlProp) { 14010 focusControlProp(event, resolvedControlId); 14011 return; 14012 } 14013 if (!resolvedControlId) { 14014 return; 14015 } 14016 const controlElement = getControlById(event.currentTarget, resolvedControlId); 14017 if (isHTMLElement(controlElement)) { 14018 focusElementWithVisible(controlElement); 14019 } 14020 } 14021 function handleInteraction(event) { 14022 const target = getTarget(event.nativeEvent); 14023 if (closest(target, "button,input,select,textarea")) { 14024 return; 14025 } 14026 if (!event.defaultPrevented && event.detail > 1) { 14027 event.preventDefault(); 14028 } 14029 if (native) { 14030 return; 14031 } 14032 focusControl(event); 14033 } 14034 return native ? { 14035 id, 14036 htmlFor: resolvedControlId, 14037 onMouseDown: handleInteraction 14038 } : { 14039 id, 14040 onClick: handleInteraction, 14041 onPointerDown(event) { 14042 event.preventDefault(); 14043 } 14044 }; 14045 } 14046 function getControlById(label, id) { 14047 let root2 = label.getRootNode(); 14048 while (isShadowRoot(root2)) { 14049 const element = root2.getElementById(id); 14050 if (element) { 14051 return element; 14052 } 14053 root2 = root2.host.getRootNode(); 14054 } 14055 return ownerDocument(label).getElementById(id); 14056 } 14057 function focusElementWithVisible(element) { 14058 element.focus({ 14059 // Available from Chrome 144+ (January 2026). 14060 // Safari and Firefox already support it. 14061 focusVisible: true 14062 }); 14063 } 14064 14065 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 14066 var React92 = __toESM(require_react(), 1); 14067 var ReactDOM7 = __toESM(require_react_dom(), 1); 14068 14069 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 14070 var React89 = __toESM(require_react(), 1); 14071 function usePreviousValue(value) { 14072 const [state, setState] = React89.useState({ 14073 current: value, 14074 previous: null 14075 }); 14076 if (!Object.is(value, state.current)) { 14077 setState({ 14078 current: value, 14079 previous: state.current 14080 }); 14081 } 14082 return state.previous; 14083 } 14084 14085 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 14086 var React90 = __toESM(require_react(), 1); 14087 14088 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getCssDimensions.mjs 14089 function getCssDimensions2(element) { 14090 const css = getComputedStyle2(element); 14091 let width = parseFloat(css.width) || 0; 14092 let height = parseFloat(css.height) || 0; 14093 const hasOffset = isHTMLElement(element); 14094 const offsetWidth = hasOffset ? element.offsetWidth : width; 14095 const offsetHeight = hasOffset ? element.offsetHeight : height; 14096 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 14097 if (shouldFallback) { 14098 width = offsetWidth; 14099 height = offsetHeight; 14100 } 14101 return { 14102 width, 14103 height 14104 }; 14105 } 14106 14107 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs 14108 var popupWidth = "--popup-width"; 14109 var popupHeight = "--popup-height"; 14110 14111 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 14112 function usePopupAutoResize(parameters) { 14113 const { 14114 popupElement, 14115 positionerElement, 14116 content, 14117 mounted, 14118 onMeasureLayout: onMeasureLayoutParam, 14119 onMeasureLayoutComplete: onMeasureLayoutCompleteParam, 14120 side, 14121 direction 14122 } = parameters; 14123 const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true); 14124 const animationFrame = useAnimationFrame(); 14125 const committedDimensionsRef = React90.useRef(null); 14126 const onMeasureLayout = useStableCallback(onMeasureLayoutParam); 14127 const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); 14128 const anchoringStyles = React90.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]); 14129 useIsoLayoutEffect(() => { 14130 if (!mounted) { 14131 committedDimensionsRef.current = null; 14132 return void 0; 14133 } 14134 if (!popupElement || !positionerElement) { 14135 return void 0; 14136 } 14137 const restoreAnchoringStyles = applyElementStyles(popupElement, anchoringStyles); 14138 setPopupCssSize(popupElement, "auto"); 14139 const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); 14140 const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); 14141 const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); 14142 const restorePositionerAvailableSize = applyElementStyles(positionerElement, { 14143 [availableWidth]: "max-content", 14144 [availableHeight]: "max-content" 14145 }); 14146 function restoreMeasurementOverrides() { 14147 restorePopupPosition(); 14148 restorePopupTransform(); 14149 restorePositionerAvailableSize(); 14150 restorePopupScale(); 14151 } 14152 onMeasureLayout?.(); 14153 if (committedDimensionsRef.current === null) { 14154 setPositionerCssSize(positionerElement, "max-content"); 14155 const dimensions = getCssDimensions2(popupElement); 14156 committedDimensionsRef.current = dimensions; 14157 setPositionerCssSize(positionerElement, dimensions); 14158 restoreMeasurementOverrides(); 14159 onMeasureLayoutComplete?.(null, dimensions); 14160 return restoreAnchoringStyles; 14161 } 14162 setPositionerCssSize(positionerElement, "max-content"); 14163 const previousDimensions = committedDimensionsRef.current; 14164 const newDimensions = getCssDimensions2(popupElement); 14165 committedDimensionsRef.current = newDimensions; 14166 setPopupCssSize(popupElement, previousDimensions); 14167 restoreMeasurementOverrides(); 14168 onMeasureLayoutComplete?.(previousDimensions, newDimensions); 14169 setPositionerCssSize(positionerElement, newDimensions); 14170 const abortController = new AbortController(); 14171 animationFrame.request(() => { 14172 setPopupCssSize(popupElement, newDimensions); 14173 runOnceAnimationsFinish(() => { 14174 popupElement.style.setProperty(popupWidth, "auto"); 14175 popupElement.style.setProperty(popupHeight, "auto"); 14176 }, abortController.signal); 14177 }); 14178 return () => { 14179 abortController.abort(); 14180 animationFrame.cancel(); 14181 restoreAnchoringStyles(); 14182 }; 14183 }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); 14184 } 14185 function getPopupAnchoringStyles(side, direction) { 14186 const isPhysicalTop = side === "top"; 14187 const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start"); 14188 if (!isPhysicalTop && !isPhysicalLeft) { 14189 return EMPTY_OBJECT; 14190 } 14191 return { 14192 position: "absolute", 14193 [isPhysicalTop ? "bottom" : "top"]: "0", 14194 [isPhysicalLeft ? "right" : "left"]: "0" 14195 }; 14196 } 14197 function overrideElementStyle(element, property, value) { 14198 const originalValue = element.style.getPropertyValue(property); 14199 element.style.setProperty(property, value); 14200 return () => { 14201 element.style.setProperty(property, originalValue); 14202 }; 14203 } 14204 function applyElementStyles(element, styles) { 14205 const restorers = []; 14206 for (const [key, value] of Object.entries(styles)) { 14207 restorers.push(overrideElementStyle(element, key, value)); 14208 } 14209 return restorers.length ? () => { 14210 restorers.forEach((restore) => restore()); 14211 } : NOOP; 14212 } 14213 function setPopupCssSize(popupElement, size4) { 14214 const width = size4 === "auto" ? "auto" : `$size4.width}px`; 14215 const height = size4 === "auto" ? "auto" : `$size4.height}px`; 14216 popupElement.style.setProperty(popupWidth, width); 14217 popupElement.style.setProperty(popupHeight, height); 14218 } 14219 function setPositionerCssSize(positionerElement, size4) { 14220 const width = size4 === "max-content" ? "max-content" : `$size4.width}px`; 14221 const height = size4 === "max-content" ? "max-content" : `$size4.height}px`; 14222 positionerElement.style.setProperty(positionerWidth, width); 14223 positionerElement.style.setProperty(positionerHeight, height); 14224 } 14225 14226 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 14227 var React91 = __toESM(require_react(), 1); 14228 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 14229 var DirectionProvider = function DirectionProvider2(props) { 14230 const { 14231 direction = "ltr" 14232 } = props; 14233 const contextValue = React91.useMemo(() => ({ 14234 direction 14235 }), [direction]); 14236 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DirectionContext.Provider, { 14237 value: contextValue, 14238 children: props.children 14239 }); 14240 }; 14241 if (true) DirectionProvider.displayName = "DirectionProvider"; 14242 14243 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs 14244 var adaptiveOrigin = { 14245 name: "adaptiveOrigin", 14246 async fn(state) { 14247 const { 14248 x: rawX, 14249 y: rawY, 14250 rects: { 14251 floating: floatRect 14252 }, 14253 elements: { 14254 floating 14255 }, 14256 platform: platform3, 14257 strategy, 14258 placement 14259 } = state; 14260 const win = getWindow(floating); 14261 const styles = win.getComputedStyle(floating); 14262 const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; 14263 if (!hasTransition) { 14264 return { 14265 x: rawX, 14266 y: rawY, 14267 data: DEFAULT_SIDES 14268 }; 14269 } 14270 const offsetParent = await platform3.getOffsetParent?.(floating); 14271 let offsetDimensions = { 14272 width: 0, 14273 height: 0 14274 }; 14275 if (strategy === "fixed" && win?.visualViewport) { 14276 offsetDimensions = { 14277 width: win.visualViewport.width, 14278 height: win.visualViewport.height 14279 }; 14280 } else if (offsetParent === win) { 14281 const doc = ownerDocument(floating); 14282 offsetDimensions = { 14283 width: doc.documentElement.clientWidth, 14284 height: doc.documentElement.clientHeight 14285 }; 14286 } else if (await platform3.isElement?.(offsetParent)) { 14287 offsetDimensions = await platform3.getDimensions(offsetParent); 14288 } 14289 const currentSide = getSide(placement); 14290 let x = rawX; 14291 let y = rawY; 14292 if (currentSide === "left") { 14293 x = offsetDimensions.width - (rawX + floatRect.width); 14294 } 14295 if (currentSide === "top") { 14296 y = offsetDimensions.height - (rawY + floatRect.height); 14297 } 14298 const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; 14299 const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; 14300 return { 14301 x, 14302 y, 14303 data: { 14304 sideX, 14305 sideY 14306 } 14307 }; 14308 } 14309 }; 14310 14311 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs 14312 var activationDirection = "data-activation-direction"; 14313 14314 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 14315 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 14316 var popupViewportStateMapping = { 14317 activationDirection: (value) => value ? { 14318 [activationDirection]: value 14319 } : null 14320 }; 14321 function usePopupViewport(parameters) { 14322 const { 14323 store, 14324 side, 14325 children 14326 } = parameters; 14327 const direction = useDirection(); 14328 const activeTrigger = store.useState("activeTriggerElement"); 14329 const activeTriggerId = store.useState("activeTriggerId"); 14330 const open2 = store.useState("open"); 14331 const payload = store.useState("payload"); 14332 const mounted = store.useState("mounted"); 14333 const popupElement = store.useState("popupElement"); 14334 const positionerElement = store.useState("positionerElement"); 14335 const previousActiveTrigger = usePreviousValue(open2 ? activeTrigger : null); 14336 const currentContentKey = usePopupContentKey(activeTriggerId, payload); 14337 const capturedNodeRef = React92.useRef(null); 14338 const [previousContentNode, setPreviousContentNode] = React92.useState(null); 14339 const [newTriggerOffset, setNewTriggerOffset] = React92.useState(null); 14340 const currentContainerRef = React92.useRef(null); 14341 const previousContainerRef = React92.useRef(null); 14342 const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true); 14343 const cleanupFrame = useAnimationFrame(); 14344 const cleanupControllerRef = React92.useRef(null); 14345 const [previousContentDimensions, setPreviousContentDimensions] = React92.useState(null); 14346 const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React92.useState(false); 14347 useIsoLayoutEffect(() => { 14348 store.set("adaptiveOrigin", adaptiveOrigin); 14349 return () => { 14350 store.set("adaptiveOrigin", void 0); 14351 }; 14352 }, [store]); 14353 const handleMeasureLayout = useStableCallback(() => { 14354 currentContainerRef.current?.style.setProperty("animation", "none"); 14355 currentContainerRef.current?.style.setProperty("transition", "none"); 14356 previousContainerRef.current?.style.setProperty("display", "none"); 14357 }); 14358 const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { 14359 currentContainerRef.current?.style.removeProperty("animation"); 14360 currentContainerRef.current?.style.removeProperty("transition"); 14361 previousContainerRef.current?.style.removeProperty("display"); 14362 if (previousDimensions) { 14363 setPreviousContentDimensions(previousDimensions); 14364 } 14365 }); 14366 const armViewportCleanup = useStableCallback(() => { 14367 cleanupControllerRef.current?.abort(); 14368 const controller = new AbortController(); 14369 cleanupControllerRef.current = controller; 14370 onAnimationsFinished(() => { 14371 setPreviousContentNode(null); 14372 setPreviousContentDimensions(null); 14373 capturedNodeRef.current = null; 14374 }, controller.signal); 14375 }); 14376 const lastHandledTriggerRef = React92.useRef(null); 14377 useIsoLayoutEffect(() => { 14378 if (!open2 || !mounted) { 14379 lastHandledTriggerRef.current = null; 14380 } 14381 }, [open2, mounted]); 14382 useIsoLayoutEffect(() => { 14383 if (open2 && activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { 14384 setPreviousContentNode(capturedNodeRef.current); 14385 setShowStartingStyleAttribute(true); 14386 const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); 14387 setNewTriggerOffset(offset4); 14388 lastHandledTriggerRef.current = activeTrigger; 14389 } 14390 }, [open2, activeTrigger, previousActiveTrigger]); 14391 useIsoLayoutEffect(() => { 14392 if (previousContentNode == null) { 14393 return; 14394 } 14395 cleanupControllerRef.current?.abort(); 14396 setShowStartingStyleAttribute(true); 14397 cleanupFrame.request(() => { 14398 ReactDOM7.flushSync(() => { 14399 setShowStartingStyleAttribute(false); 14400 }); 14401 armViewportCleanup(); 14402 }); 14403 }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]); 14404 useIsoLayoutEffect(() => { 14405 const source = currentContainerRef.current; 14406 if (!source) { 14407 return; 14408 } 14409 const wrapper = ownerDocument(source).createElement("div"); 14410 for (const child of Array.from(source.childNodes)) { 14411 wrapper.appendChild(child.cloneNode(true)); 14412 } 14413 capturedNodeRef.current = wrapper; 14414 }); 14415 const isTransitioning = previousContentNode != null; 14416 let childrenToRender; 14417 if (!isTransitioning) { 14418 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { 14419 "data-current": true, 14420 ref: currentContainerRef, 14421 children 14422 }, currentContentKey); 14423 } else { 14424 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(React92.Fragment, { 14425 children: [/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { 14426 "data-previous": true, 14427 inert: inertValue(true), 14428 ref: previousContainerRef, 14429 style: { 14430 ...previousContentDimensions ? { 14431 [popupWidth]: `$previousContentDimensions.width}px`, 14432 [popupHeight]: `$previousContentDimensions.height}px` 14433 } : null, 14434 position: "absolute" 14435 }, 14436 "data-ending-style": showStartingStyleAttribute ? void 0 : "" 14437 }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { 14438 "data-current": true, 14439 ref: currentContainerRef, 14440 "data-starting-style": showStartingStyleAttribute ? "" : void 0, 14441 children 14442 }, currentContentKey)] 14443 }); 14444 } 14445 useIsoLayoutEffect(() => { 14446 const container = previousContainerRef.current; 14447 if (!container || !previousContentNode) { 14448 return; 14449 } 14450 container.replaceChildren(...Array.from(previousContentNode.childNodes)); 14451 }, [previousContentNode]); 14452 usePopupAutoResize({ 14453 popupElement, 14454 positionerElement, 14455 mounted, 14456 content: payload, 14457 onMeasureLayout: handleMeasureLayout, 14458 onMeasureLayoutComplete: handleMeasureLayoutComplete, 14459 side, 14460 direction 14461 }); 14462 const state = { 14463 activationDirection: getActivationDirection(newTriggerOffset), 14464 transitioning: isTransitioning 14465 }; 14466 return { 14467 children: childrenToRender, 14468 state 14469 }; 14470 } 14471 function getActivationDirection(offset4) { 14472 if (!offset4) { 14473 return void 0; 14474 } 14475 return `$getValueWithTolerance(offset4.horizontal, 5, "right", "left")} $getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; 14476 } 14477 function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { 14478 if (value > tolerance) { 14479 return positiveLabel; 14480 } 14481 if (value < -tolerance) { 14482 return negativeLabel; 14483 } 14484 return ""; 14485 } 14486 function calculateRelativePosition(from, to) { 14487 const fromRect = from.getBoundingClientRect(); 14488 const toRect = to.getBoundingClientRect(); 14489 const fromCenter = { 14490 x: fromRect.left + fromRect.width / 2, 14491 y: fromRect.top + fromRect.height / 2 14492 }; 14493 const toCenter = { 14494 x: toRect.left + toRect.width / 2, 14495 y: toRect.top + toRect.height / 2 14496 }; 14497 return { 14498 horizontal: toCenter.x - fromCenter.x, 14499 vertical: toCenter.y - fromCenter.y 14500 }; 14501 } 14502 function usePopupContentKey(activeTriggerId, payload) { 14503 const [contentKey, setContentKey] = React92.useState(0); 14504 const previousActiveTriggerIdRef = React92.useRef(activeTriggerId); 14505 const previousPayloadRef = React92.useRef(payload); 14506 const pendingPayloadUpdateRef = React92.useRef(false); 14507 useIsoLayoutEffect(() => { 14508 const previousActiveTriggerId = previousActiveTriggerIdRef.current; 14509 const previousPayload = previousPayloadRef.current; 14510 const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; 14511 const payloadChanged = payload !== previousPayload; 14512 if (triggerIdChanged) { 14513 setContentKey((value) => value + 1); 14514 pendingPayloadUpdateRef.current = !payloadChanged; 14515 } else if (pendingPayloadUpdateRef.current && payloadChanged) { 14516 setContentKey((value) => value + 1); 14517 pendingPayloadUpdateRef.current = false; 14518 } 14519 previousActiveTriggerIdRef.current = activeTriggerId; 14520 previousPayloadRef.current = payload; 14521 }, [activeTriggerId, payload]); 14522 return `$activeTriggerId ?? "current"}-$contentKey}`; 14523 } 14524 14525 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/index.parts.mjs 14526 var index_parts_exports2 = {}; 14527 __export(index_parts_exports2, { 14528 Control: () => FieldControl, 14529 Description: () => FieldDescription, 14530 Error: () => FieldError, 14531 Item: () => FieldItem, 14532 Label: () => FieldLabel, 14533 Root: () => FieldRoot, 14534 Validity: () => FieldValidity 14535 }); 14536 14537 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 14538 var React96 = __toESM(require_react(), 1); 14539 14540 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs 14541 var React93 = __toESM(require_react(), 1); 14542 var FieldsetRootContext = /* @__PURE__ */ React93.createContext(void 0); 14543 if (true) FieldsetRootContext.displayName = "FieldsetRootContext"; 14544 function useFieldsetRootContext(optional = false) { 14545 const context = React93.useContext(FieldsetRootContext); 14546 if (!context && !optional) { 14547 throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86)); 14548 } 14549 return context; 14550 } 14551 14552 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs 14553 var React94 = __toESM(require_react(), 1); 14554 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 14555 var LabelableProvider = function LabelableProvider2(props) { 14556 const defaultId = useBaseUiId(); 14557 const [controlIdState, setControlIdState] = React94.useState(defaultId); 14558 const [labelId, setLabelId] = React94.useState(); 14559 const [messageIds, setMessageIds] = React94.useState([]); 14560 const controlId = controlIdState === void 0 ? defaultId : controlIdState; 14561 const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map()); 14562 const { 14563 messageIds: parentMessageIds 14564 } = useLabelableContext(); 14565 const registerControlId = useStableCallback((source, nextId) => { 14566 const registrations = registrationsRef.current; 14567 if (nextId === void 0) { 14568 registrations.delete(source); 14569 } else { 14570 registrations.set(source, nextId); 14571 } 14572 setControlIdState((prev) => { 14573 if (registrations.size === 0) { 14574 return prev; 14575 } 14576 let nextControlId; 14577 for (const id of registrations.values()) { 14578 if (id === prev) { 14579 return prev; 14580 } 14581 if (nextControlId === void 0) { 14582 nextControlId = id; 14583 } 14584 } 14585 return nextControlId; 14586 }); 14587 }); 14588 const resetControlId = useStableCallback(() => { 14589 if (registrationsRef.current.size === 0) { 14590 setControlIdState(defaultId); 14591 } 14592 }); 14593 const getDescriptionProps = React94.useCallback((externalProps) => { 14594 const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : []; 14595 ids.push(...parentMessageIds, ...messageIds); 14596 return { 14597 ...externalProps, 14598 "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0 14599 }; 14600 }, [parentMessageIds, messageIds]); 14601 const contextValue = React94.useMemo(() => ({ 14602 controlId, 14603 registerControlId, 14604 resetControlId, 14605 labelId, 14606 setLabelId, 14607 messageIds, 14608 setMessageIds, 14609 getDescriptionProps 14610 }), [controlId, registerControlId, resetControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]); 14611 return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelableContext.Provider, { 14612 value: contextValue, 14613 children: props.children 14614 }); 14615 }; 14616 if (true) LabelableProvider.displayName = "LabelableProvider"; 14617 14618 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs 14619 var React95 = __toESM(require_react(), 1); 14620 function useFieldControlRegistration(params) { 14621 const { 14622 change, 14623 commit, 14624 invalid: invalid2, 14625 markedDirtyRef, 14626 name, 14627 setRegisteredFieldName, 14628 registeredFieldIdRef, 14629 setValidityData, 14630 validityData 14631 } = params; 14632 const { 14633 formRef 14634 } = useFormContext(); 14635 const activeFieldControlSourceRef = React95.useRef(null); 14636 const registrationRef = React95.useRef(null); 14637 const initialValueCapturedRef = React95.useRef(false); 14638 const getValueForForm = useStableCallback(() => { 14639 const registration = registrationRef.current; 14640 if (!registration) { 14641 return void 0; 14642 } 14643 if (registration.getValue) { 14644 return registration.getValue(); 14645 } 14646 return registration.value; 14647 }); 14648 function getRegistrationValue(registration) { 14649 return registration.value === void 0 ? getValueForForm() : registration.value; 14650 } 14651 const validate = useStableCallback(() => { 14652 const registration = registrationRef.current; 14653 markedDirtyRef.current = true; 14654 if (!registration) { 14655 commit(validityData.value); 14656 return; 14657 } 14658 commit(getRegistrationValue(registration)); 14659 }); 14660 function refreshRegistration() { 14661 const registration = registrationRef.current; 14662 if (!registration || !registration.id) { 14663 return; 14664 } 14665 formRef.current.fields.set(registration.id, { 14666 getValue: getValueForForm, 14667 name: name ?? registration.name, 14668 controlRef: registration.controlRef, 14669 validityData: getCombinedFieldValidityData(validityData, invalid2), 14670 validate 14671 }); 14672 } 14673 function deleteRegistration(id = registrationRef.current?.id) { 14674 if (id) { 14675 formRef.current.fields.delete(id); 14676 } 14677 } 14678 function captureInitialValue(registration) { 14679 if (initialValueCapturedRef.current) { 14680 return; 14681 } 14682 initialValueCapturedRef.current = true; 14683 const initialValue = getRegistrationValue(registration); 14684 setValidityData((prev) => prev.initialValue === initialValue ? prev : { 14685 ...prev, 14686 initialValue 14687 }); 14688 } 14689 useIsoLayoutEffect(() => { 14690 const registration = registrationRef.current; 14691 if (!registration || !registration.id) { 14692 return; 14693 } 14694 setRegisteredFieldName(name ? void 0 : registration.name); 14695 formRef.current.fields.set(registration.id, { 14696 getValue: getValueForForm, 14697 name: name ?? registration.name, 14698 controlRef: registration.controlRef, 14699 validityData: getCombinedFieldValidityData(validityData, invalid2), 14700 validate 14701 }); 14702 }, [formRef, getValueForForm, invalid2, name, setRegisteredFieldName, validate, validityData]); 14703 useIsoLayoutEffect(() => { 14704 const fields = formRef.current.fields; 14705 return () => { 14706 const id = registrationRef.current?.id; 14707 if (id) { 14708 fields.delete(id); 14709 } 14710 }; 14711 }, [formRef]); 14712 const register2 = useStableCallback((source, registration) => { 14713 if (!registration) { 14714 if (activeFieldControlSourceRef.current === source) { 14715 activeFieldControlSourceRef.current = null; 14716 change(void 0, true); 14717 deleteRegistration(); 14718 registrationRef.current = null; 14719 setRegisteredFieldName(void 0); 14720 registeredFieldIdRef.current = void 0; 14721 } 14722 return; 14723 } 14724 const previousId = registrationRef.current?.id; 14725 const previousSource = activeFieldControlSourceRef.current; 14726 if (previousSource && previousSource !== source) { 14727 change(void 0, true); 14728 } 14729 activeFieldControlSourceRef.current = source; 14730 registrationRef.current = registration; 14731 if (!name) { 14732 setRegisteredFieldName(registration.name); 14733 } 14734 registeredFieldIdRef.current = registration.id; 14735 if (previousId && previousId !== registration.id) { 14736 deleteRegistration(previousId); 14737 } 14738 captureInitialValue(registration); 14739 refreshRegistration(); 14740 }); 14741 return [validate, register2]; 14742 } 14743 14744 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 14745 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 14746 var FieldRootInner = /* @__PURE__ */ React96.forwardRef(function FieldRootInner2(componentProps, forwardedRef) { 14747 const { 14748 errors, 14749 validationMode: formValidationMode, 14750 submitCountRef 14751 } = useFormContext(); 14752 const { 14753 render, 14754 className, 14755 validate: validateProp, 14756 validationDebounceTime = 0, 14757 validationMode = formValidationMode, 14758 name, 14759 disabled: disabledProp = false, 14760 invalid: invalidProp, 14761 dirty: dirtyProp, 14762 touched: touchedProp, 14763 actionsRef, 14764 style, 14765 ...elementProps 14766 } = componentProps; 14767 const disabledFieldset = useFieldsetRootContext(true)?.disabled; 14768 const validate = useStableCallback(validateProp || (() => null)); 14769 const disabled2 = disabledFieldset || disabledProp; 14770 const [touchedState, setTouchedUnwrapped] = React96.useState(false); 14771 const [dirtyState, setDirtyUnwrapped] = React96.useState(false); 14772 const [filled, setFilled] = React96.useState(false); 14773 const [focused, setFocused] = React96.useState(false); 14774 const focusOwnerRef = React96.useRef(void 0); 14775 const dirty = dirtyProp ?? dirtyState; 14776 const touched = touchedProp ?? touchedState; 14777 const markedDirtyRef = React96.useRef(dirty); 14778 const registeredFieldIdRef = React96.useRef(void 0); 14779 const [registeredFieldName, setRegisteredFieldName] = React96.useState(); 14780 const effectiveName = name ?? registeredFieldName; 14781 useIsoLayoutEffect(() => { 14782 if (dirtyProp !== void 0) { 14783 markedDirtyRef.current = dirtyProp; 14784 } 14785 }, [dirtyProp]); 14786 const setDirty = useStableCallback((value) => { 14787 if (dirtyProp !== void 0) { 14788 return; 14789 } 14790 if (value) { 14791 markedDirtyRef.current = true; 14792 } 14793 setDirtyUnwrapped(value); 14794 }); 14795 const setTouched = useStableCallback((value) => { 14796 if (touchedProp !== void 0) { 14797 return; 14798 } 14799 setTouchedUnwrapped(value); 14800 }); 14801 const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitCountRef.current > 0); 14802 const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null; 14803 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 14804 const invalid2 = invalidProp === true || hasFormError; 14805 const [validityData, setValidityData] = React96.useState({ 14806 state: DEFAULT_VALIDITY_STATE, 14807 error: "", 14808 errors: [], 14809 value: null, 14810 initialValue: null 14811 }); 14812 const valid2 = !invalid2 && (disabled2 ? null : validityData.state.valid); 14813 const state = React96.useMemo(() => ({ 14814 disabled: disabled2, 14815 touched, 14816 dirty, 14817 valid: valid2, 14818 filled, 14819 focused 14820 }), [disabled2, touched, dirty, valid2, filled, focused]); 14821 const validation = useFieldValidation({ 14822 setValidityData, 14823 validate, 14824 validityData, 14825 validationDebounceTime, 14826 invalid: invalid2, 14827 markedDirtyRef, 14828 state, 14829 shouldValidateOnChange, 14830 validationMode, 14831 registeredFieldIdRef 14832 }); 14833 const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({ 14834 change: validation.change, 14835 commit: validation.commit, 14836 invalid: invalid2, 14837 markedDirtyRef, 14838 name, 14839 setRegisteredFieldName, 14840 registeredFieldIdRef, 14841 setValidityData, 14842 validityData 14843 }); 14844 React96.useImperativeHandle(actionsRef, () => ({ 14845 validate: validateFieldControl 14846 }), [validateFieldControl]); 14847 const contextValue = React96.useMemo(() => ({ 14848 invalid: invalid2, 14849 name: effectiveName, 14850 validityData, 14851 setValidityData, 14852 disabled: disabled2, 14853 setTouched, 14854 setDirty, 14855 setFilled, 14856 setFocused, 14857 focusOwnerRef, 14858 validationMode, 14859 shouldValidateOnChange, 14860 state, 14861 registerFieldControl, 14862 validation 14863 }), [invalid2, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]); 14864 const element = useRenderElement("div", componentProps, { 14865 ref: forwardedRef, 14866 state, 14867 props: elementProps, 14868 stateAttributesMapping: fieldValidityMapping 14869 }); 14870 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(FieldRootContext.Provider, { 14871 value: contextValue, 14872 children: element 14873 }); 14874 }); 14875 if (true) FieldRootInner.displayName = "FieldRootInner"; 14876 var FieldRoot = /* @__PURE__ */ React96.forwardRef(function FieldRoot2(componentProps, forwardedRef) { 14877 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(LabelableProvider, { 14878 children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(FieldRootInner, { 14879 ...componentProps, 14880 ref: forwardedRef 14881 }) 14882 }); 14883 }); 14884 if (true) FieldRoot.displayName = "FieldRoot"; 14885 14886 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/label/FieldLabel.mjs 14887 var React97 = __toESM(require_react(), 1); 14888 var FieldLabel = /* @__PURE__ */ React97.forwardRef(function FieldLabel2(componentProps, forwardedRef) { 14889 const { 14890 render, 14891 className, 14892 style, 14893 id: idProp, 14894 nativeLabel = true, 14895 ...elementProps 14896 } = componentProps; 14897 const fieldRootContext = useFieldRootContext(false); 14898 const fieldItemContext = useFieldItemContext(); 14899 const { 14900 labelId 14901 } = useLabelableContext(); 14902 const state = { 14903 ...fieldRootContext.state, 14904 disabled: fieldRootContext.disabled || fieldItemContext.disabled 14905 }; 14906 const labelRef = React97.useRef(null); 14907 const labelProps = useLabel({ 14908 id: labelId ?? idProp, 14909 native: nativeLabel 14910 }); 14911 if (true) { 14912 React97.useEffect(() => { 14913 if (!labelRef.current) { 14914 return; 14915 } 14916 const isLabelTag = labelRef.current.tagName === "LABEL"; 14917 if (nativeLabel) { 14918 if (!isLabelTag) { 14919 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 14920 const message = "<Field.Label> expected a <label> element because the `nativeLabel` prop is true. Rendering a non-<label> disables native label association, so `htmlFor` will not work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`."; 14921 error(`$message}$ownerStackMessage}`); 14922 } 14923 } else if (isLabelTag) { 14924 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 14925 const message = "<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. Rendering a <label> assumes native label behavior while Base UI treats it as non-native, which can cause unexpected pointer behavior. Use a non-<label> in the `render` prop, or set `nativeLabel` to `true`."; 14926 error(`$message}$ownerStackMessage}`); 14927 } 14928 }, [nativeLabel]); 14929 } 14930 const element = useRenderElement("label", componentProps, { 14931 ref: [forwardedRef, labelRef], 14932 state, 14933 props: [labelProps, elementProps], 14934 stateAttributesMapping: fieldValidityMapping 14935 }); 14936 return element; 14937 }); 14938 if (true) FieldLabel.displayName = "FieldLabel"; 14939 14940 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/error/FieldError.mjs 14941 var React98 = __toESM(require_react(), 1); 14942 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 14943 var stateAttributesMapping4 = { 14944 ...fieldValidityMapping, 14945 ...transitionStatusMapping 14946 }; 14947 var FieldError = /* @__PURE__ */ React98.forwardRef(function FieldError2(componentProps, forwardedRef) { 14948 const { 14949 render, 14950 id: idProp, 14951 className, 14952 match, 14953 style, 14954 ...elementProps 14955 } = componentProps; 14956 const id = useBaseUiId(idProp); 14957 const { 14958 validityData, 14959 state: fieldState, 14960 name 14961 } = useFieldRootContext(false); 14962 const { 14963 setMessageIds 14964 } = useLabelableContext(); 14965 const { 14966 errors 14967 } = useFormContext(); 14968 const formError = name && Object.hasOwn(errors, name) ? errors[name] : null; 14969 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 14970 const hasSpecificMatch = typeof match === "string"; 14971 let rendered = false; 14972 if (match === true) { 14973 rendered = true; 14974 } else if (fieldState.disabled) { 14975 rendered = false; 14976 } else if (hasSpecificMatch) { 14977 rendered = Boolean(validityData.state[match]); 14978 } else { 14979 rendered = hasFormError || validityData.state.valid === false; 14980 } 14981 const { 14982 mounted, 14983 transitionStatus, 14984 setMounted 14985 } = useTransitionStatus(rendered); 14986 useIsoLayoutEffect(() => { 14987 if (!rendered || !id) { 14988 return void 0; 14989 } 14990 setMessageIds((v) => v.concat(id)); 14991 return () => { 14992 setMessageIds((v) => v.filter((item) => item !== id)); 14993 }; 14994 }, [rendered, id, setMessageIds]); 14995 const errorRef = React98.useRef(null); 14996 const [lastRenderedMessage, setLastRenderedMessage] = React98.useState(null); 14997 const [lastRenderedMessageKey, setLastRenderedMessageKey] = React98.useState(null); 14998 let error2 = validityData.error; 14999 if (!hasSpecificMatch && hasFormError) { 15000 error2 = formError; 15001 } else if (validityData.errors.length > 1) { 15002 error2 = validityData.errors; 15003 } 15004 let errorMessage = error2; 15005 if (Array.isArray(error2)) { 15006 errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("ul", { 15007 children: error2.map((message) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { 15008 children: message 15009 }, message)) 15010 }) : error2[0]; 15011 } 15012 const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2; 15013 if (rendered && errorKey !== lastRenderedMessageKey) { 15014 setLastRenderedMessageKey(errorKey); 15015 setLastRenderedMessage(errorMessage); 15016 } 15017 useOpenChangeComplete({ 15018 open: rendered, 15019 ref: errorRef, 15020 onComplete() { 15021 if (!rendered) { 15022 setMounted(false); 15023 } 15024 } 15025 }); 15026 const state = { 15027 ...fieldState, 15028 transitionStatus 15029 }; 15030 const element = useRenderElement("div", componentProps, { 15031 ref: [forwardedRef, errorRef], 15032 state, 15033 props: [{ 15034 id, 15035 children: rendered ? errorMessage : lastRenderedMessage 15036 }, elementProps], 15037 stateAttributesMapping: stateAttributesMapping4, 15038 enabled: mounted 15039 }); 15040 if (!mounted) { 15041 return null; 15042 } 15043 return element; 15044 }); 15045 if (true) FieldError.displayName = "FieldError"; 15046 15047 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/description/FieldDescription.mjs 15048 var React99 = __toESM(require_react(), 1); 15049 var FieldDescription = /* @__PURE__ */ React99.forwardRef(function FieldDescription2(componentProps, forwardedRef) { 15050 const { 15051 render, 15052 id: idProp, 15053 className, 15054 style, 15055 ...elementProps 15056 } = componentProps; 15057 const id = useBaseUiId(idProp); 15058 const fieldRootContext = useFieldRootContext(false); 15059 const fieldItemContext = useFieldItemContext(); 15060 const { 15061 setMessageIds 15062 } = useLabelableContext(); 15063 const state = { 15064 ...fieldRootContext.state, 15065 disabled: fieldRootContext.disabled || fieldItemContext.disabled 15066 }; 15067 useIsoLayoutEffect(() => { 15068 if (!id) { 15069 return void 0; 15070 } 15071 setMessageIds((v) => v.concat(id)); 15072 return () => { 15073 setMessageIds((v) => v.filter((item) => item !== id)); 15074 }; 15075 }, [id, setMessageIds]); 15076 const element = useRenderElement("p", componentProps, { 15077 ref: forwardedRef, 15078 state, 15079 props: [{ 15080 id 15081 }, elementProps], 15082 stateAttributesMapping: fieldValidityMapping 15083 }); 15084 return element; 15085 }); 15086 if (true) FieldDescription.displayName = "FieldDescription"; 15087 15088 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControl.mjs 15089 var React100 = __toESM(require_react(), 1); 15090 var FieldControl = /* @__PURE__ */ React100.forwardRef(function FieldControl2(componentProps, forwardedRef) { 15091 const { 15092 render, 15093 className, 15094 id: idProp, 15095 name: nameProp, 15096 value, 15097 disabled: disabledProp = false, 15098 onValueChange, 15099 defaultValue, 15100 autoFocus = false, 15101 style, 15102 ...elementProps 15103 } = componentProps; 15104 const { 15105 state: fieldState, 15106 name: fieldName, 15107 disabled: fieldDisabled, 15108 setTouched, 15109 setDirty, 15110 validityData, 15111 setFilled, 15112 validationMode, 15113 validation 15114 } = useFieldRootContext(); 15115 const { 15116 clearErrors, 15117 elementRef: formElementRef, 15118 submitCountRef 15119 } = useFormContext(); 15120 const disabled2 = fieldDisabled || disabledProp; 15121 const name = fieldName ?? nameProp; 15122 const state = { 15123 ...fieldState, 15124 disabled: disabled2 15125 }; 15126 const { 15127 labelId 15128 } = useLabelableContext(); 15129 const id = useLabelableId({ 15130 id: idProp 15131 }); 15132 const isControlled = value !== void 0; 15133 const serializedValue = value == null ? void 0 : String(value); 15134 const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value); 15135 useRegisterFieldControl(validation.inputRef, id, serializedValue, getValueFromInput, !disabled2, nameProp); 15136 useIsoLayoutEffect(() => { 15137 const currentValue = serializedValue ?? validation.inputRef.current?.value; 15138 if (currentValue !== void 0) { 15139 setFilled(currentValue !== ""); 15140 } 15141 }, [serializedValue, defaultValue, validation.inputRef, setFilled]); 15142 useValueChanged(serializedValue, () => { 15143 if (serializedValue === void 0) { 15144 return; 15145 } 15146 clearErrors(name); 15147 setDirty(serializedValue !== (validityData.initialValue ?? "")); 15148 validation.change(serializedValue); 15149 }); 15150 const inputRef = React100.useRef(null); 15151 const setFocused = useSetFieldFocused(disabled2, inputRef); 15152 const enterValidationTimeout = useTimeout(); 15153 const element = useRenderElement("input", componentProps, { 15154 ref: [forwardedRef, inputRef], 15155 state, 15156 props: [{ 15157 id, 15158 disabled: disabled2, 15159 name, 15160 ref: validation.inputRef, 15161 "aria-labelledby": labelId, 15162 autoFocus, 15163 ...isControlled ? { 15164 value 15165 } : { 15166 defaultValue 15167 }, 15168 onChange(event) { 15169 const inputValue = event.currentTarget.value; 15170 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 15171 onValueChange?.(inputValue, details); 15172 if (isControlled) { 15173 return; 15174 } 15175 setDirty(inputValue !== (validityData.initialValue ?? "")); 15176 setFilled(inputValue !== ""); 15177 if (!event.nativeEvent.defaultPrevented && !details.isCanceled) { 15178 clearErrors(name); 15179 validation.change(inputValue); 15180 } 15181 }, 15182 onFocus() { 15183 setFocused(true); 15184 }, 15185 onBlur(event) { 15186 setTouched(true); 15187 setFocused(false); 15188 if (validationMode === "onBlur") { 15189 const inputValue = event.currentTarget.value; 15190 validation.commit(inputValue); 15191 if (isControlled) { 15192 queueMicrotask(() => { 15193 const nextValue = validation.inputRef.current?.value; 15194 if (nextValue !== void 0 && nextValue !== inputValue && nextValue !== (validityData.initialValue ?? "")) { 15195 validation.commit(nextValue); 15196 } 15197 }); 15198 } 15199 } 15200 }, 15201 onKeyDown(event) { 15202 if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") { 15203 setTouched(true); 15204 const value2 = event.currentTarget.value; 15205 const form = event.currentTarget.form; 15206 if (form && form === formElementRef.current && !event.defaultPrevented) { 15207 const input = event.currentTarget; 15208 const submitCount = submitCountRef.current; 15209 enterValidationTimeout.start(0, () => { 15210 if (submitCountRef.current === submitCount) { 15211 validation.commit(input.value); 15212 } 15213 }); 15214 } else { 15215 validation.commit(value2); 15216 } 15217 } 15218 } 15219 }, elementProps, (props) => validation.getValidationProps(disabled2, props)], 15220 stateAttributesMapping: fieldValidityMapping 15221 }); 15222 return element; 15223 }); 15224 if (true) FieldControl.displayName = "FieldControl"; 15225 15226 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/validity/FieldValidity.mjs 15227 var React101 = __toESM(require_react(), 1); 15228 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 15229 var FieldValidity = function FieldValidity2(props) { 15230 const { 15231 children 15232 } = props; 15233 const { 15234 validityData, 15235 invalid: invalid2 15236 } = useFieldRootContext(false); 15237 const combinedFieldValidityData = React101.useMemo(() => getCombinedFieldValidityData(validityData, invalid2), [validityData, invalid2]); 15238 const isInvalid = combinedFieldValidityData.state.valid === false; 15239 const { 15240 transitionStatus 15241 } = useTransitionStatus(isInvalid); 15242 const fieldValidityState = React101.useMemo(() => { 15243 return { 15244 ...combinedFieldValidityData, 15245 validity: combinedFieldValidityData.state, 15246 transitionStatus 15247 }; 15248 }, [combinedFieldValidityData, transitionStatus]); 15249 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(React101.Fragment, { 15250 children: children(fieldValidityState) 15251 }); 15252 }; 15253 if (true) FieldValidity.displayName = "FieldValidity"; 15254 15255 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItem.mjs 15256 var React102 = __toESM(require_react(), 1); 15257 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 15258 var FieldItem = /* @__PURE__ */ React102.forwardRef(function FieldItem2(componentProps, forwardedRef) { 15259 const { 15260 render, 15261 className, 15262 style, 15263 disabled: disabledProp = false, 15264 ...elementProps 15265 } = componentProps; 15266 const { 15267 state: fieldState, 15268 disabled: rootDisabled 15269 } = useFieldRootContext(false); 15270 const disabled2 = rootDisabled || disabledProp; 15271 const state = { 15272 ...fieldState, 15273 disabled: disabled2 15274 }; 15275 const fieldItemContext = React102.useMemo(() => ({ 15276 disabled: disabled2 15277 }), [disabled2]); 15278 const element = useRenderElement("div", componentProps, { 15279 ref: forwardedRef, 15280 state, 15281 props: elementProps, 15282 stateAttributesMapping: fieldValidityMapping 15283 }); 15284 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LabelableProvider, { 15285 children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(FieldItemContext.Provider, { 15286 value: fieldItemContext, 15287 children: element 15288 }) 15289 }); 15290 }); 15291 if (true) FieldItem.displayName = "FieldItem"; 15292 15293 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/input/Input.mjs 15294 var React103 = __toESM(require_react(), 1); 15295 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 15296 var Input = /* @__PURE__ */ React103.forwardRef(function Input2(props, forwardedRef) { 15297 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(index_parts_exports2.Control, { 15298 ref: forwardedRef, 15299 ...props 15300 }); 15301 }); 15302 if (true) Input.displayName = "Input"; 15303 15304 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FloatingPortalLite.mjs 15305 var React104 = __toESM(require_react(), 1); 15306 var ReactDOM8 = __toESM(require_react_dom(), 1); 15307 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 15308 var FloatingPortalLite = /* @__PURE__ */ React104.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { 15309 const { 15310 children, 15311 container, 15312 className, 15313 render, 15314 style, 15315 ...elementProps 15316 } = componentProps; 15317 const { 15318 node: portalNode, 15319 subtree: portalSubtree 15320 } = useFloatingPortalNode({ 15321 container, 15322 ref: forwardedRef, 15323 componentProps, 15324 elementProps 15325 }); 15326 if (!portalSubtree && !portalNode) { 15327 return null; 15328 } 15329 return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(React104.Fragment, { 15330 children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM8.createPortal(children, portalNode)] 15331 }); 15332 }); 15333 if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; 15334 15335 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/index.parts.mjs 15336 var index_parts_exports3 = {}; 15337 __export(index_parts_exports3, { 15338 Arrow: () => TooltipArrow, 15339 Handle: () => TooltipHandle, 15340 Popup: () => TooltipPopup, 15341 Portal: () => TooltipPortal, 15342 Positioner: () => TooltipPositioner, 15343 Provider: () => TooltipProvider, 15344 Root: () => TooltipRoot, 15345 Trigger: () => TooltipTrigger, 15346 Viewport: () => TooltipViewport, 15347 createHandle: () => createTooltipHandle 15348 }); 15349 15350 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 15351 var React107 = __toESM(require_react(), 1); 15352 15353 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs 15354 var React105 = __toESM(require_react(), 1); 15355 var TooltipRootContext = /* @__PURE__ */ React105.createContext(void 0); 15356 if (true) TooltipRootContext.displayName = "TooltipRootContext"; 15357 function useTooltipRootContext(optional) { 15358 const context = React105.useContext(TooltipRootContext); 15359 if (context === void 0 && !optional) { 15360 throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); 15361 } 15362 return context; 15363 } 15364 15365 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs 15366 var React106 = __toESM(require_react(), 1); 15367 var selectors3 = { 15368 ...popupStoreSelectors, 15369 disabled: (state) => state.disabled, 15370 instantType: (state) => state.instantType, 15371 isInstantPhase: (state) => state.isInstantPhase, 15372 trackCursorAxis: (state) => state.trackCursorAxis, 15373 disableHoverablePopup: (state) => state.disableHoverablePopup, 15374 lastOpenChangeReason: (state) => state.openChangeReason, 15375 closeOnClick: (state) => state.closeOnClick, 15376 // Active and inactive trigger props are the same object, so a constant for triggers that discard 15377 // them keeps those triggers from re-rendering when the props change. 15378 appliedTriggerProps: (state, apply) => apply ? state.activeTriggerProps : void 0, 15379 closeDelay: (state) => state.closeDelay, 15380 adaptiveOrigin: (state) => state.adaptiveOrigin 15381 }; 15382 var TooltipStore = class extends ReactStore { 15383 constructor(initialState, floatingId, nested) { 15384 const triggerElements = new PopupTriggerMap(); 15385 super(createInitialState(initialState, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors3); 15386 } 15387 setOpen = (nextOpen, eventDetails) => { 15388 applyPopupOpenChange(this, nextOpen, eventDetails, { 15389 extraState: { 15390 openChangeReason: eventDetails.reason 15391 } 15392 }); 15393 }; 15394 // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. 15395 cancelPendingOpen(event) { 15396 this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); 15397 } 15398 }; 15399 function createNullTooltipStore() { 15400 const triggerElements = new PopupTriggerMap(); 15401 const store = new NullStore(Object.freeze(createInitialState(void 0, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors3); 15402 return Object.assign(store, { 15403 setOpen: NOOP, 15404 cancelPendingOpen: NOOP 15405 }); 15406 } 15407 function createInitialState(initialState, triggerElements, floatingId, nested = false) { 15408 const state = { 15409 ...createInitialPopupStoreState(triggerElements, floatingId, nested), 15410 disabled: false, 15411 instantType: void 0, 15412 isInstantPhase: false, 15413 trackCursorAxis: "none", 15414 disableHoverablePopup: false, 15415 openChangeReason: null, 15416 closeOnClick: true, 15417 closeDelay: 0, 15418 adaptiveOrigin: void 0, 15419 ...initialState 15420 }; 15421 return state; 15422 } 15423 function createInitialContext(triggerElements) { 15424 return { 15425 popupRef: /* @__PURE__ */ React106.createRef(), 15426 onOpenChange: void 0, 15427 onOpenChangeComplete: void 0, 15428 triggerElements 15429 }; 15430 } 15431 15432 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 15433 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 15434 var TooltipRoot = fastComponent(function TooltipRoot2(props) { 15435 const { 15436 disabled: disabled2 = false, 15437 defaultOpen = false, 15438 open: openProp, 15439 disableHoverablePopup = false, 15440 trackCursorAxis = "none", 15441 actionsRef, 15442 onOpenChange, 15443 onOpenChangeComplete, 15444 handle, 15445 triggerId: triggerIdProp, 15446 defaultTriggerId: defaultTriggerIdProp = null, 15447 children 15448 } = props; 15449 const store = usePopupRootStore((floatingId, nested) => new TooltipStore({ 15450 open: defaultOpen, 15451 openProp, 15452 activeTriggerId: defaultTriggerIdProp, 15453 triggerIdProp 15454 }, floatingId, nested)); 15455 store.useControlledProp("openProp", openProp); 15456 store.useControlledProp("triggerIdProp", triggerIdProp); 15457 store.useContextCallback("onOpenChange", onOpenChange); 15458 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 15459 const openState = store.useState("open"); 15460 const open2 = !disabled2 && openState; 15461 const activeTriggerId = store.useState("activeTriggerId"); 15462 const mounted = store.useState("mounted"); 15463 const payload = store.useState("payload"); 15464 store.useSyncedValues({ 15465 trackCursorAxis, 15466 disableHoverablePopup, 15467 disabled: disabled2 15468 }); 15469 useImplicitActiveTrigger(store, { 15470 closeOnActiveTriggerUnmount: true 15471 }); 15472 const { 15473 forceUnmount, 15474 transitionStatus 15475 } = useOpenStateTransitions(open2, store); 15476 const isInstantPhase = store.useState("isInstantPhase"); 15477 const instantType = store.useState("instantType"); 15478 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 15479 const previousInstantTypeRef = React107.useRef(null); 15480 useIsoLayoutEffect(() => { 15481 if (openState && disabled2) { 15482 store.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); 15483 } 15484 }, [openState, disabled2, store]); 15485 useIsoLayoutEffect(() => { 15486 if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { 15487 if (instantType !== "delay") { 15488 previousInstantTypeRef.current = instantType; 15489 } 15490 store.set("instantType", "delay"); 15491 } else if (previousInstantTypeRef.current !== null) { 15492 store.set("instantType", previousInstantTypeRef.current); 15493 previousInstantTypeRef.current = null; 15494 } 15495 }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store]); 15496 useIsoLayoutEffect(() => { 15497 if (open2) { 15498 if (activeTriggerId == null) { 15499 store.set("payload", void 0); 15500 } 15501 } 15502 }, [store, activeTriggerId, open2]); 15503 React107.useImperativeHandle(actionsRef, () => ({ 15504 unmount: forceUnmount, 15505 close: () => store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)) 15506 }), [forceUnmount, store]); 15507 const shouldRenderInteractions = open2 || mounted || !disabled2 && trackCursorAxis !== "none"; 15508 return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(TooltipRootContext.Provider, { 15509 value: store, 15510 children: [handle && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(PopupHandleAttachment, { 15511 handle, 15512 store 15513 }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TooltipInteractions, { 15514 store, 15515 disabled: disabled2, 15516 trackCursorAxis 15517 }), typeof children === "function" ? children({ 15518 payload 15519 }) : children] 15520 }); 15521 }); 15522 if (true) TooltipRoot.displayName = "TooltipRoot"; 15523 function TooltipInteractions({ 15524 store, 15525 disabled: disabled2, 15526 trackCursorAxis 15527 }) { 15528 const floatingRootContext = store.useState("floatingRootContext"); 15529 const dismiss = useDismiss(floatingRootContext, { 15530 enabled: !disabled2, 15531 referencePress: () => store.select("closeOnClick") 15532 }); 15533 const clientPoint = useClientPoint(floatingRootContext, { 15534 enabled: !disabled2 && trackCursorAxis !== "none", 15535 axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis 15536 }); 15537 const triggerProps = React107.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); 15538 usePopupInteractionProps(store, { 15539 activeTriggerProps: triggerProps, 15540 inactiveTriggerProps: triggerProps, 15541 popupProps: dismiss.floating ?? EMPTY_OBJECT 15542 }); 15543 return null; 15544 } 15545 15546 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 15547 var React109 = __toESM(require_react(), 1); 15548 15549 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs 15550 var React108 = __toESM(require_react(), 1); 15551 var TooltipProviderContext = /* @__PURE__ */ React108.createContext(void 0); 15552 if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; 15553 function useTooltipProviderContext() { 15554 return React108.useContext(TooltipProviderContext); 15555 } 15556 15557 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/utils/constants.mjs 15558 var OPEN_DELAY = 600; 15559 15560 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 15561 var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; 15562 function getTargetElement(event) { 15563 const target = getTarget(event); 15564 return isElement(target) ? target : null; 15565 } 15566 var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { 15567 const { 15568 render, 15569 className, 15570 style, 15571 handle, 15572 payload, 15573 disabled: disabledProp, 15574 delay, 15575 closeOnClick = true, 15576 closeDelay, 15577 id: idProp, 15578 ...elementProps 15579 } = componentProps; 15580 const rootContext = useTooltipRootContext(true); 15581 const handleStore = usePopupHandleStore(handle); 15582 const store = handleStore ?? rootContext; 15583 if (!store) { 15584 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)); 15585 } 15586 const thisTriggerId = useBaseUiId(idProp); 15587 const isTriggerActive = store.useState("isTriggerActive", thisTriggerId); 15588 const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId); 15589 const floatingRootContext = store.useState("floatingRootContext"); 15590 const triggerElementRef = React109.useRef(null); 15591 const closeDelayWithDefault = closeDelay ?? 0; 15592 const { 15593 registerTrigger, 15594 isMountedByThisTrigger 15595 } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, { 15596 payload, 15597 closeOnClick, 15598 closeDelay: closeDelayWithDefault 15599 }); 15600 const providerDelay = useTooltipProviderContext(); 15601 const { 15602 activeIdRef, 15603 delayRef, 15604 isInstantPhase, 15605 hasProvider 15606 } = useDelayGroup(floatingRootContext, { 15607 open: isOpenedByThisTrigger 15608 }); 15609 const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); 15610 store.useSyncedValue("isInstantPhase", isInstantPhase); 15611 const rootDisabled = store.useState("disabled"); 15612 const disabled2 = disabledProp ?? rootDisabled; 15613 const disabledRef = useValueAsRef(disabled2); 15614 const trackCursorAxis = store.useState("trackCursorAxis"); 15615 const disableHoverablePopup = store.useState("disableHoverablePopup"); 15616 const isNestedTriggerHoveredRef = React109.useRef(false); 15617 const nestedTriggerOpenTimeout = useTimeout(); 15618 const pointerTypeRef = React109.useRef(void 0); 15619 function getOpenDelay() { 15620 if (hasProvider && activeIdRef.current != null) { 15621 return 0; 15622 } 15623 return delay ?? providerDelay ?? OPEN_DELAY; 15624 } 15625 function isEnabledNestedTriggerTarget(target) { 15626 const triggerEl = triggerElementRef.current; 15627 if (!triggerEl || !target) { 15628 return false; 15629 } 15630 const nearestTrigger = closest(target, `[$TOOLTIP_TRIGGER_IDENTIFIER}]`); 15631 return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); 15632 } 15633 function detectNestedTriggerHover(target) { 15634 const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); 15635 isNestedTriggerHoveredRef.current = nestedTriggerHovered; 15636 if (nestedTriggerHovered) { 15637 hoverInteraction.openChangeTimeout.clear(); 15638 hoverInteraction.restTimeout.clear(); 15639 hoverInteraction.restTimeoutPending = false; 15640 nestedTriggerOpenTimeout.clear(); 15641 } 15642 return nestedTriggerHovered; 15643 } 15644 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 15645 enabled: !disabled2, 15646 mouseOnly: true, 15647 move: false, 15648 handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, 15649 restMs: getOpenDelay, 15650 delay() { 15651 if (closeDelay == null && hasProvider) { 15652 return { 15653 close: getDelay(delayRef.current, "close") 15654 }; 15655 } 15656 return { 15657 close: closeDelayWithDefault 15658 }; 15659 }, 15660 triggerElementRef, 15661 isActiveTrigger: isTriggerActive, 15662 isClosing: () => store.select("transitionStatus") === "ending", 15663 shouldOpen() { 15664 return !isNestedTriggerHoveredRef.current; 15665 } 15666 }); 15667 const focusProps = useFocus(floatingRootContext, { 15668 enabled: !disabled2 15669 }).reference; 15670 const handleNestedTriggerHover = (event) => { 15671 const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; 15672 const target = getTargetElement(event); 15673 const nestedTriggerHovered = detectNestedTriggerHover(target); 15674 const triggerEl = triggerElementRef.current; 15675 const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); 15676 if (nestedTriggerHovered && store.select("open") && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { 15677 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 15678 return; 15679 } 15680 if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. 15681 isMouseLikePointerType(pointerTypeRef.current)) { 15682 const open2 = () => { 15683 if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select("open")) { 15684 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); 15685 } 15686 }; 15687 const openDelay = getOpenDelay(); 15688 if (openDelay === 0) { 15689 nestedTriggerOpenTimeout.clear(); 15690 open2(); 15691 } else { 15692 nestedTriggerOpenTimeout.start(openDelay, open2); 15693 } 15694 } 15695 }; 15696 const rootTriggerProps = store.useState("appliedTriggerProps", isMountedByThisTrigger || trackCursorAxis !== "none"); 15697 const state = { 15698 open: isOpenedByThisTrigger 15699 }; 15700 const element = useRenderElement("button", componentProps, { 15701 state, 15702 ref: [forwardedRef, registerTrigger, triggerElementRef], 15703 props: [hoverProps, focusProps, rootTriggerProps, { 15704 onMouseOver(event) { 15705 handleNestedTriggerHover(event.nativeEvent); 15706 }, 15707 onFocus(event) { 15708 if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { 15709 event.preventBaseUIHandler(); 15710 } 15711 }, 15712 onMouseLeave() { 15713 isNestedTriggerHoveredRef.current = false; 15714 nestedTriggerOpenTimeout.clear(); 15715 pointerTypeRef.current = void 0; 15716 }, 15717 onPointerEnter(event) { 15718 pointerTypeRef.current = event.pointerType; 15719 }, 15720 onPointerDown(event) { 15721 pointerTypeRef.current = event.pointerType; 15722 store.set("closeOnClick", closeOnClick); 15723 if (closeOnClick && !store.select("open")) { 15724 store.cancelPendingOpen(event.nativeEvent); 15725 } 15726 }, 15727 onClick(event) { 15728 if (closeOnClick && !store.select("open")) { 15729 store.cancelPendingOpen(event.nativeEvent); 15730 } 15731 }, 15732 id: thisTriggerId, 15733 [triggerDisabled]: disabled2 ? "" : void 0, 15734 [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" 15735 }, elementProps], 15736 stateAttributesMapping: triggerOpenStateMapping 15737 }); 15738 return element; 15739 }); 15740 if (true) TooltipTrigger.displayName = "TooltipTrigger"; 15741 15742 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 15743 var React111 = __toESM(require_react(), 1); 15744 15745 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs 15746 var React110 = __toESM(require_react(), 1); 15747 var TooltipPortalContext = /* @__PURE__ */ React110.createContext(void 0); 15748 if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; 15749 function useTooltipPortalContext() { 15750 const value = React110.useContext(TooltipPortalContext); 15751 if (value === void 0) { 15752 throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); 15753 } 15754 return value; 15755 } 15756 15757 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 15758 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 15759 var TooltipPortal = /* @__PURE__ */ React111.forwardRef(function TooltipPortal2(props, forwardedRef) { 15760 const { 15761 keepMounted = false, 15762 ...portalProps 15763 } = props; 15764 const store = useTooltipRootContext(); 15765 const mounted = store.useState("mounted"); 15766 const shouldRender = mounted || keepMounted; 15767 if (!shouldRender) { 15768 return null; 15769 } 15770 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TooltipPortalContext.Provider, { 15771 value: keepMounted, 15772 children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FloatingPortalLite, { 15773 ref: forwardedRef, 15774 ...portalProps 15775 }) 15776 }); 15777 }); 15778 if (true) TooltipPortal.displayName = "TooltipPortal"; 15779 15780 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 15781 var React113 = __toESM(require_react(), 1); 15782 15783 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs 15784 var React112 = __toESM(require_react(), 1); 15785 var TooltipPositionerContext = /* @__PURE__ */ React112.createContext(void 0); 15786 if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; 15787 function useTooltipPositionerContext() { 15788 const context = React112.useContext(TooltipPositionerContext); 15789 if (context === void 0) { 15790 throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); 15791 } 15792 return context; 15793 } 15794 15795 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 15796 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 15797 var TooltipPositioner = /* @__PURE__ */ React113.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { 15798 const { 15799 render, 15800 className, 15801 anchor, 15802 positionMethod = "absolute", 15803 side = "top", 15804 align = "center", 15805 sideOffset = 0, 15806 alignOffset = 0, 15807 collisionBoundary = "clipping-ancestors", 15808 collisionPadding = 5, 15809 arrowPadding = 5, 15810 sticky = false, 15811 disableAnchorTracking = false, 15812 collisionAvoidance = POPUP_COLLISION_AVOIDANCE, 15813 style, 15814 ...elementProps 15815 } = componentProps; 15816 const store = useTooltipRootContext(); 15817 const keepMounted = useTooltipPortalContext(); 15818 const open2 = store.useState("open"); 15819 const mounted = store.useState("mounted"); 15820 const trackCursorAxis = store.useState("trackCursorAxis"); 15821 const disableHoverablePopup = store.useState("disableHoverablePopup"); 15822 const floatingRootContext = store.useState("floatingRootContext"); 15823 const instantType = store.useState("instantType"); 15824 const transitionStatus = store.useState("transitionStatus"); 15825 const adaptiveOrigin2 = store.useState("adaptiveOrigin"); 15826 const positioning = useAnchorPositioning({ 15827 anchor, 15828 positionMethod, 15829 floatingRootContext, 15830 mounted, 15831 side, 15832 sideOffset, 15833 align, 15834 alignOffset, 15835 collisionBoundary, 15836 collisionPadding, 15837 sticky, 15838 arrowPadding, 15839 disableAnchorTracking, 15840 keepMounted, 15841 collisionAvoidance, 15842 adaptiveOrigin: adaptiveOrigin2 15843 }); 15844 const state = React113.useMemo(() => ({ 15845 open: open2, 15846 side: positioning.side, 15847 align: positioning.align, 15848 anchorHidden: positioning.anchorHidden, 15849 instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType 15850 }), [open2, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); 15851 const element = usePositioner(componentProps, state, { 15852 styles: positioning.positionerStyles, 15853 transitionStatus, 15854 props: elementProps, 15855 refs: [forwardedRef, store.useStateSetter("positionerElement")], 15856 hidden: !mounted, 15857 inert: !open2 || trackCursorAxis === "both" || disableHoverablePopup 15858 }); 15859 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TooltipPositionerContext.Provider, { 15860 value: positioning, 15861 children: element 15862 }); 15863 }); 15864 if (true) TooltipPositioner.displayName = "TooltipPositioner"; 15865 15866 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs 15867 var React114 = __toESM(require_react(), 1); 15868 var TooltipPopup = /* @__PURE__ */ React114.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { 15869 const { 15870 render, 15871 className, 15872 style, 15873 ...elementProps 15874 } = componentProps; 15875 const store = useTooltipRootContext(); 15876 const { 15877 side, 15878 align 15879 } = useTooltipPositionerContext(); 15880 const open2 = store.useState("open"); 15881 const instantType = store.useState("instantType"); 15882 const transitionStatus = store.useState("transitionStatus"); 15883 const popupProps = store.useState("popupProps"); 15884 const floatingContext = store.useState("floatingRootContext"); 15885 const disabled2 = store.useState("disabled"); 15886 const closeDelay = store.useState("closeDelay"); 15887 useOpenChangeComplete({ 15888 open: open2, 15889 ref: store.context.popupRef, 15890 onComplete() { 15891 if (open2) { 15892 store.context.onOpenChangeComplete?.(true); 15893 } 15894 } 15895 }); 15896 useHoverFloatingInteraction(floatingContext, { 15897 enabled: !disabled2, 15898 closeDelay 15899 }); 15900 const setPopupElement = store.useStateSetter("popupElement"); 15901 const state = { 15902 open: open2, 15903 side, 15904 align, 15905 instant: instantType, 15906 transitionStatus 15907 }; 15908 const element = useRenderElement("div", componentProps, { 15909 state, 15910 ref: [forwardedRef, store.context.popupRef, setPopupElement], 15911 props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], 15912 stateAttributesMapping: popupTransitionStateMapping 15913 }); 15914 return element; 15915 }); 15916 if (true) TooltipPopup.displayName = "TooltipPopup"; 15917 15918 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs 15919 var React115 = __toESM(require_react(), 1); 15920 var TooltipArrow = /* @__PURE__ */ React115.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { 15921 const { 15922 render, 15923 className, 15924 style, 15925 ...elementProps 15926 } = componentProps; 15927 const store = useTooltipRootContext(); 15928 const { 15929 arrowRef, 15930 side, 15931 align, 15932 arrowUncentered, 15933 arrowStyles 15934 } = useTooltipPositionerContext(); 15935 const open2 = store.useState("open"); 15936 const instantType = store.useState("instantType"); 15937 const state = { 15938 open: open2, 15939 side, 15940 align, 15941 uncentered: arrowUncentered, 15942 instant: instantType 15943 }; 15944 const element = useRenderElement("div", componentProps, { 15945 state, 15946 ref: [forwardedRef, arrowRef], 15947 props: [{ 15948 style: arrowStyles, 15949 "aria-hidden": true 15950 }, elementProps], 15951 stateAttributesMapping: popupStateMapping 15952 }); 15953 return element; 15954 }); 15955 if (true) TooltipArrow.displayName = "TooltipArrow"; 15956 15957 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs 15958 var React116 = __toESM(require_react(), 1); 15959 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 15960 var TooltipProvider = function TooltipProvider2(props) { 15961 const { 15962 delay, 15963 closeDelay, 15964 timeout = 400 15965 } = props; 15966 const delayValue = React116.useMemo(() => ({ 15967 open: delay, 15968 close: closeDelay 15969 }), [delay, closeDelay]); 15970 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TooltipProviderContext.Provider, { 15971 value: delay, 15972 children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(FloatingDelayGroup, { 15973 delay: delayValue, 15974 timeoutMs: timeout, 15975 children: props.children 15976 }) 15977 }); 15978 }; 15979 if (true) TooltipProvider.displayName = "TooltipProvider"; 15980 15981 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs 15982 var React117 = __toESM(require_react(), 1); 15983 var TooltipViewport = /* @__PURE__ */ React117.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { 15984 const { 15985 render, 15986 className, 15987 style, 15988 children, 15989 ...elementProps 15990 } = componentProps; 15991 const store = useTooltipRootContext(); 15992 const positioner = useTooltipPositionerContext(); 15993 const instantType = store.useState("instantType"); 15994 const { 15995 children: childrenToRender, 15996 state: viewportState 15997 } = usePopupViewport({ 15998 store, 15999 side: positioner.side, 16000 children 16001 }); 16002 const state = { 16003 activationDirection: viewportState.activationDirection, 16004 transitioning: viewportState.transitioning, 16005 instant: instantType 16006 }; 16007 return useRenderElement("div", componentProps, { 16008 state, 16009 ref: forwardedRef, 16010 props: [elementProps, { 16011 children: childrenToRender 16012 }], 16013 stateAttributesMapping: popupViewportStateMapping 16014 }); 16015 }); 16016 if (true) TooltipViewport.displayName = "TooltipViewport"; 16017 16018 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs 16019 var TooltipHandle = class extends BasePopupHandle { 16020 constructor() { 16021 super(createNullTooltipStore(), "Tooltip"); 16022 } 16023 /** 16024 * Opens the tooltip and associates it with the trigger with the given id. 16025 * 16026 * This method should only be called in an event handler or an effect (not during rendering). 16027 * 16028 * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching 16029 * `Tooltip.Trigger` with this handle passed as a prop. 16030 */ 16031 open(triggerId) { 16032 this.openByTrigger(triggerId); 16033 } 16034 /** 16035 * Closes the tooltip. 16036 * 16037 * This method should only be called in an event handler or an effect (not during rendering). 16038 */ 16039 close() { 16040 this.closePopup(); 16041 } 16042 /** 16043 * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle. 16044 */ 16045 get isOpen() { 16046 return this.attachedStore?.select("open") ?? false; 16047 } 16048 }; 16049 function createTooltipHandle() { 16050 return new TooltipHandle(); 16051 } 16052 16053 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 16054 function useRender(params) { 16055 return useRenderElement(params.defaultTagName ?? "div", params, params); 16056 } 16057 16058 // packages/ui/build-module/text/text.mjs 16059 var import_element18 = __toESM(require_element(), 1); 16060 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 16061 function getRuntime() { 16062 const globalScope = globalThis; 16063 if (globalScope.__wpStyleRuntime) { 16064 return globalScope.__wpStyleRuntime; 16065 } 16066 globalScope.__wpStyleRuntime = { 16067 documents: /* @__PURE__ */ new Map(), 16068 styles: /* @__PURE__ */ new Map(), 16069 injectedStyles: /* @__PURE__ */ new WeakMap() 16070 }; 16071 if (typeof document !== "undefined") { 16072 registerDocument(document); 16073 } 16074 return globalScope.__wpStyleRuntime; 16075 } 16076 function documentContainsStyleHash(targetDocument, hash) { 16077 if (!targetDocument.head) { 16078 return false; 16079 } 16080 for (const style of targetDocument.head.querySelectorAll( 16081 `style[$STYLE_HASH_ATTRIBUTE}]` 16082 )) { 16083 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 16084 return true; 16085 } 16086 } 16087 return false; 16088 } 16089 function injectStyle(targetDocument, hash, css) { 16090 if (!targetDocument.head) { 16091 return; 16092 } 16093 const runtime = getRuntime(); 16094 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16095 if (!injectedStyles) { 16096 injectedStyles = /* @__PURE__ */ new Set(); 16097 runtime.injectedStyles.set(targetDocument, injectedStyles); 16098 } 16099 if (injectedStyles.has(hash)) { 16100 return; 16101 } 16102 if (documentContainsStyleHash(targetDocument, hash)) { 16103 injectedStyles.add(hash); 16104 return; 16105 } 16106 const style = targetDocument.createElement("style"); 16107 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 16108 style.appendChild(targetDocument.createTextNode(css)); 16109 targetDocument.head.appendChild(style); 16110 injectedStyles.add(hash); 16111 } 16112 function registerDocument(targetDocument) { 16113 const runtime = getRuntime(); 16114 runtime.documents.set( 16115 targetDocument, 16116 (runtime.documents.get(targetDocument) ?? 0) + 1 16117 ); 16118 for (const [hash, css] of runtime.styles) { 16119 injectStyle(targetDocument, hash, css); 16120 } 16121 return () => { 16122 const count = runtime.documents.get(targetDocument); 16123 if (count === void 0) { 16124 return; 16125 } 16126 if (count <= 1) { 16127 runtime.documents.delete(targetDocument); 16128 return; 16129 } 16130 runtime.documents.set(targetDocument, count - 1); 16131 }; 16132 } 16133 function registerStyle(hash, css) { 16134 const runtime = getRuntime(); 16135 runtime.styles.set(hash, css); 16136 for (const targetDocument of runtime.documents.keys()) { 16137 injectStyle(targetDocument, hash, css); 16138 } 16139 } 16140 if (typeof process === "undefined" || true) { 16141 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)}}}'); 16142 } 16143 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" }; 16144 if (typeof process === "undefined" || true) { 16145 registerStyle("abb19c3171", "._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)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 16146 } 16147 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", "span": "_400bf7ee0c6061a9__span" }; 16148 var Text = (0, import_element18.forwardRef)( 16149 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 16150 const element = useRender({ 16151 render, 16152 defaultTagName: "span", 16153 ref, 16154 props: mergeProps(props, { 16155 className: clsx_default( 16156 style_default.text, 16157 global_css_defense_default.heading, 16158 global_css_defense_default.p, 16159 style_default[variant], 16160 className 16161 ) 16162 }) 16163 }); 16164 return element; 16165 } 16166 ); 16167 16168 // packages/ui/build-module/button/button.mjs 16169 var import_element20 = __toESM(require_element(), 1); 16170 var import_i18n = __toESM(require_i18n(), 1); 16171 import { speak } from "@wordpress/a11y"; 16172 16173 // packages/ui/build-module/spinner/spinner.mjs 16174 var import_element19 = __toESM(require_element(), 1); 16175 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 16176 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 16177 function getRuntime2() { 16178 const globalScope = globalThis; 16179 if (globalScope.__wpStyleRuntime) { 16180 return globalScope.__wpStyleRuntime; 16181 } 16182 globalScope.__wpStyleRuntime = { 16183 documents: /* @__PURE__ */ new Map(), 16184 styles: /* @__PURE__ */ new Map(), 16185 injectedStyles: /* @__PURE__ */ new WeakMap() 16186 }; 16187 if (typeof document !== "undefined") { 16188 registerDocument2(document); 16189 } 16190 return globalScope.__wpStyleRuntime; 16191 } 16192 function documentContainsStyleHash2(targetDocument, hash) { 16193 if (!targetDocument.head) { 16194 return false; 16195 } 16196 for (const style of targetDocument.head.querySelectorAll( 16197 `style[$STYLE_HASH_ATTRIBUTE2}]` 16198 )) { 16199 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 16200 return true; 16201 } 16202 } 16203 return false; 16204 } 16205 function injectStyle2(targetDocument, hash, css) { 16206 if (!targetDocument.head) { 16207 return; 16208 } 16209 const runtime = getRuntime2(); 16210 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16211 if (!injectedStyles) { 16212 injectedStyles = /* @__PURE__ */ new Set(); 16213 runtime.injectedStyles.set(targetDocument, injectedStyles); 16214 } 16215 if (injectedStyles.has(hash)) { 16216 return; 16217 } 16218 if (documentContainsStyleHash2(targetDocument, hash)) { 16219 injectedStyles.add(hash); 16220 return; 16221 } 16222 const style = targetDocument.createElement("style"); 16223 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 16224 style.appendChild(targetDocument.createTextNode(css)); 16225 targetDocument.head.appendChild(style); 16226 injectedStyles.add(hash); 16227 } 16228 function registerDocument2(targetDocument) { 16229 const runtime = getRuntime2(); 16230 runtime.documents.set( 16231 targetDocument, 16232 (runtime.documents.get(targetDocument) ?? 0) + 1 16233 ); 16234 for (const [hash, css] of runtime.styles) { 16235 injectStyle2(targetDocument, hash, css); 16236 } 16237 return () => { 16238 const count = runtime.documents.get(targetDocument); 16239 if (count === void 0) { 16240 return; 16241 } 16242 if (count <= 1) { 16243 runtime.documents.delete(targetDocument); 16244 return; 16245 } 16246 runtime.documents.set(targetDocument, count - 1); 16247 }; 16248 } 16249 function registerStyle2(hash, css) { 16250 const runtime = getRuntime2(); 16251 runtime.styles.set(hash, css); 16252 for (const targetDocument of runtime.documents.keys()) { 16253 injectStyle2(targetDocument, hash, css); 16254 } 16255 } 16256 if (typeof process === "undefined" || true) { 16257 registerStyle2("dbe7fd6094", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator{fill:transparent;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;transform-origin:50% 50%;@media (forced-colors:active){stroke:CanvasText}animation:_02322d973909703c__spinner-spin 1.4s linear infinite both}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}"); 16258 } 16259 var style_default2 = { "spinner": "ab4d64c07c0ba587__spinner", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__spinner-spin" }; 16260 var Spinner = (0, import_element19.forwardRef)( 16261 function UnforwardedSpinner({ className, color, style, ...props }, ref) { 16262 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 16263 "svg", 16264 { 16265 className: clsx_default(style_default2.spinner, className), 16266 style: color === void 0 ? style : { ...style, color }, 16267 viewBox: "0 0 24 24", 16268 xmlns: "http://www.w3.org/2000/svg", 16269 role: "presentation", 16270 focusable: "false", 16271 ...props, 16272 ref, 16273 children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 16274 "path", 16275 { 16276 className: style_default2.indicator, 16277 d: "m 12 0 a 12 12 0 0 1 0 24" 16278 } 16279 ) 16280 } 16281 ); 16282 } 16283 ); 16284 16285 // packages/ui/build-module/button/button.mjs 16286 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 16287 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 16288 function getRuntime3() { 16289 const globalScope = globalThis; 16290 if (globalScope.__wpStyleRuntime) { 16291 return globalScope.__wpStyleRuntime; 16292 } 16293 globalScope.__wpStyleRuntime = { 16294 documents: /* @__PURE__ */ new Map(), 16295 styles: /* @__PURE__ */ new Map(), 16296 injectedStyles: /* @__PURE__ */ new WeakMap() 16297 }; 16298 if (typeof document !== "undefined") { 16299 registerDocument3(document); 16300 } 16301 return globalScope.__wpStyleRuntime; 16302 } 16303 function documentContainsStyleHash3(targetDocument, hash) { 16304 if (!targetDocument.head) { 16305 return false; 16306 } 16307 for (const style of targetDocument.head.querySelectorAll( 16308 `style[$STYLE_HASH_ATTRIBUTE3}]` 16309 )) { 16310 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 16311 return true; 16312 } 16313 } 16314 return false; 16315 } 16316 function injectStyle3(targetDocument, hash, css) { 16317 if (!targetDocument.head) { 16318 return; 16319 } 16320 const runtime = getRuntime3(); 16321 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16322 if (!injectedStyles) { 16323 injectedStyles = /* @__PURE__ */ new Set(); 16324 runtime.injectedStyles.set(targetDocument, injectedStyles); 16325 } 16326 if (injectedStyles.has(hash)) { 16327 return; 16328 } 16329 if (documentContainsStyleHash3(targetDocument, hash)) { 16330 injectedStyles.add(hash); 16331 return; 16332 } 16333 const style = targetDocument.createElement("style"); 16334 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 16335 style.appendChild(targetDocument.createTextNode(css)); 16336 targetDocument.head.appendChild(style); 16337 injectedStyles.add(hash); 16338 } 16339 function registerDocument3(targetDocument) { 16340 const runtime = getRuntime3(); 16341 runtime.documents.set( 16342 targetDocument, 16343 (runtime.documents.get(targetDocument) ?? 0) + 1 16344 ); 16345 for (const [hash, css] of runtime.styles) { 16346 injectStyle3(targetDocument, hash, css); 16347 } 16348 return () => { 16349 const count = runtime.documents.get(targetDocument); 16350 if (count === void 0) { 16351 return; 16352 } 16353 if (count <= 1) { 16354 runtime.documents.delete(targetDocument); 16355 return; 16356 } 16357 runtime.documents.set(targetDocument, count - 1); 16358 }; 16359 } 16360 function registerStyle3(hash, css) { 16361 const runtime = getRuntime3(); 16362 runtime.styles.set(hash, css); 16363 for (const targetDocument of runtime.documents.keys()) { 16364 injectStyle3(targetDocument, hash, css); 16365 } 16366 } 16367 if (typeof process === "undefined" || true) { 16368 registerStyle3("1052986a11", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;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(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);>*{stroke-width:2.75}@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 16369 } 16370 var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "spinner": "_1322fe375ff021a3__spinner" }; 16371 if (typeof process === "undefined" || true) { 16372 registerStyle3("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 16373 } 16374 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 16375 if (typeof process === "undefined" || true) { 16376 registerStyle3("7c3267f794", "@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{--_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))}}}"); 16377 } 16378 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-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 16379 if (typeof process === "undefined" || true) { 16380 registerStyle3("abb19c3171", "._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)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 16381 } 16382 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", "span": "_400bf7ee0c6061a9__span" }; 16383 var Button3 = (0, import_element20.forwardRef)( 16384 function UnforwardedButton({ 16385 tone = "brand", 16386 variant = "solid", 16387 size: size4 = "default", 16388 className, 16389 focusableWhenDisabled = true, 16390 disabled: disabled2, 16391 loading, 16392 loadingAnnouncement = (0, import_i18n.__)("Loading"), 16393 children, 16394 ...props 16395 }, ref) { 16396 const mergedClassName = clsx_default( 16397 global_css_defense_default2.button, 16398 resets_default["box-sizing"], 16399 focus_module_default["outset-ring--focus-except-active"], 16400 variant !== "unstyled" && style_default3.button, 16401 style_default3[`is-$tone}`], 16402 style_default3[`is-$variant}`], 16403 style_default3[`is-$size4}`], 16404 loading && style_default3["is-loading"], 16405 className 16406 ); 16407 (0, import_element20.useEffect)(() => { 16408 if (loading && loadingAnnouncement) { 16409 speak(loadingAnnouncement); 16410 } 16411 }, [loading, loadingAnnouncement]); 16412 return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)( 16413 Button, 16414 { 16415 ref, 16416 className: mergedClassName, 16417 focusableWhenDisabled, 16418 disabled: disabled2 ?? loading, 16419 ...props, 16420 children: [ 16421 children, 16422 loading && variant !== "unstyled" && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Spinner, { className: style_default3.spinner }) 16423 ] 16424 } 16425 ); 16426 } 16427 ); 16428 16429 // packages/ui/build-module/button/icon.mjs 16430 var import_element21 = __toESM(require_element(), 1); 16431 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 16432 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 16433 function getRuntime4() { 16434 const globalScope = globalThis; 16435 if (globalScope.__wpStyleRuntime) { 16436 return globalScope.__wpStyleRuntime; 16437 } 16438 globalScope.__wpStyleRuntime = { 16439 documents: /* @__PURE__ */ new Map(), 16440 styles: /* @__PURE__ */ new Map(), 16441 injectedStyles: /* @__PURE__ */ new WeakMap() 16442 }; 16443 if (typeof document !== "undefined") { 16444 registerDocument4(document); 16445 } 16446 return globalScope.__wpStyleRuntime; 16447 } 16448 function documentContainsStyleHash4(targetDocument, hash) { 16449 if (!targetDocument.head) { 16450 return false; 16451 } 16452 for (const style of targetDocument.head.querySelectorAll( 16453 `style[$STYLE_HASH_ATTRIBUTE4}]` 16454 )) { 16455 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 16456 return true; 16457 } 16458 } 16459 return false; 16460 } 16461 function injectStyle4(targetDocument, hash, css) { 16462 if (!targetDocument.head) { 16463 return; 16464 } 16465 const runtime = getRuntime4(); 16466 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16467 if (!injectedStyles) { 16468 injectedStyles = /* @__PURE__ */ new Set(); 16469 runtime.injectedStyles.set(targetDocument, injectedStyles); 16470 } 16471 if (injectedStyles.has(hash)) { 16472 return; 16473 } 16474 if (documentContainsStyleHash4(targetDocument, hash)) { 16475 injectedStyles.add(hash); 16476 return; 16477 } 16478 const style = targetDocument.createElement("style"); 16479 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 16480 style.appendChild(targetDocument.createTextNode(css)); 16481 targetDocument.head.appendChild(style); 16482 injectedStyles.add(hash); 16483 } 16484 function registerDocument4(targetDocument) { 16485 const runtime = getRuntime4(); 16486 runtime.documents.set( 16487 targetDocument, 16488 (runtime.documents.get(targetDocument) ?? 0) + 1 16489 ); 16490 for (const [hash, css] of runtime.styles) { 16491 injectStyle4(targetDocument, hash, css); 16492 } 16493 return () => { 16494 const count = runtime.documents.get(targetDocument); 16495 if (count === void 0) { 16496 return; 16497 } 16498 if (count <= 1) { 16499 runtime.documents.delete(targetDocument); 16500 return; 16501 } 16502 runtime.documents.set(targetDocument, count - 1); 16503 }; 16504 } 16505 function registerStyle4(hash, css) { 16506 const runtime = getRuntime4(); 16507 runtime.styles.set(hash, css); 16508 for (const targetDocument of runtime.documents.keys()) { 16509 injectStyle4(targetDocument, hash, css); 16510 } 16511 } 16512 if (typeof process === "undefined" || true) { 16513 registerStyle4("1052986a11", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;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(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);>*{stroke-width:2.75}@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 16514 } 16515 var style_default4 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "spinner": "_1322fe375ff021a3__spinner" }; 16516 var ButtonIcon = (0, import_element21.forwardRef)( 16517 function UnforwardedButtonIcon({ className, icon, ...props }, ref) { 16518 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 16519 Icon, 16520 { 16521 ref, 16522 icon, 16523 className: clsx_default(style_default4.icon, className), 16524 size: 24, 16525 ...props 16526 } 16527 ); 16528 } 16529 ); 16530 16531 // packages/ui/build-module/button/index.mjs 16532 ButtonIcon.displayName = "Button.Icon"; 16533 var Button4 = Object.assign(Button3, { 16534 /** 16535 * An icon component specifically designed to work well when rendered inside 16536 * a `Button` component. 16537 */ 16538 Icon: ButtonIcon 16539 }); 16540 16541 // packages/icons/build-module/library/close-small.mjs 16542 var import_primitives2 = __toESM(require_primitives(), 1); 16543 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 16544 var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime40.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_runtime40.jsx)(import_primitives2.Path, { d: "M7.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75" }) }); 16545 16546 // packages/icons/build-module/library/search.mjs 16547 var import_primitives3 = __toESM(require_primitives(), 1); 16548 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 16549 var search_default = /* @__PURE__ */ (0, import_jsx_runtime41.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_runtime41.jsx)(import_primitives3.Path, { d: "M5 19L9.28769 14.7123M18.25 11C18.25 13.8995 15.8995 16.25 13 16.25C10.1005 16.25 7.75 13.8995 7.75 11C7.75 8.10051 10.1005 5.75 13 5.75C15.8995 5.75 18.25 8.10051 18.25 11Z" }) }); 16550 16551 // packages/ui/build-module/utils/keyboard-shortcut.mjs 16552 var import_element23 = __toESM(require_element(), 1); 16553 var import_i18n2 = __toESM(require_i18n(), 1); 16554 16555 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 16556 var import_element22 = __toESM(require_element(), 1); 16557 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 16558 function getRuntime5() { 16559 const globalScope = globalThis; 16560 if (globalScope.__wpStyleRuntime) { 16561 return globalScope.__wpStyleRuntime; 16562 } 16563 globalScope.__wpStyleRuntime = { 16564 documents: /* @__PURE__ */ new Map(), 16565 styles: /* @__PURE__ */ new Map(), 16566 injectedStyles: /* @__PURE__ */ new WeakMap() 16567 }; 16568 if (typeof document !== "undefined") { 16569 registerDocument5(document); 16570 } 16571 return globalScope.__wpStyleRuntime; 16572 } 16573 function documentContainsStyleHash5(targetDocument, hash) { 16574 if (!targetDocument.head) { 16575 return false; 16576 } 16577 for (const style of targetDocument.head.querySelectorAll( 16578 `style[$STYLE_HASH_ATTRIBUTE5}]` 16579 )) { 16580 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 16581 return true; 16582 } 16583 } 16584 return false; 16585 } 16586 function injectStyle5(targetDocument, hash, css) { 16587 if (!targetDocument.head) { 16588 return; 16589 } 16590 const runtime = getRuntime5(); 16591 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16592 if (!injectedStyles) { 16593 injectedStyles = /* @__PURE__ */ new Set(); 16594 runtime.injectedStyles.set(targetDocument, injectedStyles); 16595 } 16596 if (injectedStyles.has(hash)) { 16597 return; 16598 } 16599 if (documentContainsStyleHash5(targetDocument, hash)) { 16600 injectedStyles.add(hash); 16601 return; 16602 } 16603 const style = targetDocument.createElement("style"); 16604 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 16605 style.appendChild(targetDocument.createTextNode(css)); 16606 targetDocument.head.appendChild(style); 16607 injectedStyles.add(hash); 16608 } 16609 function registerDocument5(targetDocument) { 16610 const runtime = getRuntime5(); 16611 runtime.documents.set( 16612 targetDocument, 16613 (runtime.documents.get(targetDocument) ?? 0) + 1 16614 ); 16615 for (const [hash, css] of runtime.styles) { 16616 injectStyle5(targetDocument, hash, css); 16617 } 16618 return () => { 16619 const count = runtime.documents.get(targetDocument); 16620 if (count === void 0) { 16621 return; 16622 } 16623 if (count <= 1) { 16624 runtime.documents.delete(targetDocument); 16625 return; 16626 } 16627 runtime.documents.set(targetDocument, count - 1); 16628 }; 16629 } 16630 function registerStyle5(hash, css) { 16631 const runtime = getRuntime5(); 16632 runtime.styles.set(hash, css); 16633 for (const targetDocument of runtime.documents.keys()) { 16634 injectStyle5(targetDocument, hash, css); 16635 } 16636 } 16637 if (typeof process === "undefined" || true) { 16638 registerStyle5("15abcab4d0", ".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}"); 16639 } 16640 var style_default5 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 16641 var VisuallyHidden = (0, import_element22.forwardRef)( 16642 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 16643 const element = useRender({ 16644 render, 16645 ref, 16646 props: mergeProps( 16647 { className: style_default5["visually-hidden"] }, 16648 restProps, 16649 { 16650 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 16651 "data-visually-hidden": "" 16652 } 16653 ) 16654 }); 16655 return element; 16656 } 16657 ); 16658 16659 // packages/ui/build-module/utils/keyboard-shortcut.mjs 16660 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 16661 function useKeyboardShortcutProps({ 16662 "aria-describedby": ariaDescribedBy, 16663 "aria-keyshortcuts": ariaKeyShortcuts, 16664 shortcut 16665 }) { 16666 const generatedDescriptionId = (0, import_element23.useId)(); 16667 const descriptionId = shortcut ? generatedDescriptionId : void 0; 16668 const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" "); 16669 return { 16670 descriptionId, 16671 targetProps: { 16672 "aria-describedby": describedBy || void 0, 16673 "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts 16674 } 16675 }; 16676 } 16677 var KeyboardShortcutDescription = (0, import_element23.forwardRef)(function UnforwardedKeyboardShortcutDescription({ descriptionId, shortcut }, ref) { 16678 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 16679 VisuallyHidden, 16680 { 16681 id: descriptionId, 16682 "aria-hidden": "true", 16683 render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { ref }), 16684 children: (0, import_i18n2.sprintf)( 16685 /* translators: %s: keyboard shortcut. */ 16686 (0, import_i18n2.__)("Keyboard shortcut: %s"), 16687 shortcut.label ?? shortcut.ariaKeyShortcut 16688 ) 16689 } 16690 ); 16691 }); 16692 var KeyboardShortcutDisplay = (0, import_element23.forwardRef)(function UnforwardedKeyboardShortcutDisplay({ className, shortcut }, ref) { 16693 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut }); 16694 }); 16695 16696 // packages/ui/build-module/utils/item-popup/item-content.mjs 16697 var import_element24 = __toESM(require_element(), 1); 16698 var VALIDATION_ENABLED = true; 16699 function parseItemContent(children, { Label, Description, validationMessage }) { 16700 const childArray = import_element24.Children.toArray(children); 16701 const [label, ...descriptions] = childArray; 16702 const hasLabel = (0, import_element24.isValidElement)(label) && label.type === Label; 16703 const descriptionElements = descriptions.filter( 16704 (description) => (0, import_element24.isValidElement)(description) && description.type === Description 16705 ); 16706 if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) { 16707 throw new Error(validationMessage); 16708 } 16709 return { 16710 descriptionIds: descriptionElements.map( 16711 (description) => description.props.id 16712 ), 16713 hasLabel, 16714 labelId: hasLabel ? label.props.id : void 0 16715 }; 16716 } 16717 function useItemContent(children, components, { 16718 "aria-describedby": ariaDescribedBy, 16719 "aria-label": ariaLabel, 16720 "aria-labelledby": ariaLabelledBy 16721 } = {}) { 16722 const generatedLabelId = (0, import_element24.useId)(); 16723 const generatedDescriptionId = (0, import_element24.useId)(); 16724 const { descriptionIds, hasLabel, labelId } = parseItemContent( 16725 children, 16726 components 16727 ); 16728 const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0; 16729 const resolvedDescriptionIds = descriptionIds.map( 16730 (descriptionId, index2) => descriptionId ?? `$generatedDescriptionId}-$index2}` 16731 ); 16732 const itemDescribedBy = Array.from( 16733 /* @__PURE__ */ new Set([ 16734 ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [], 16735 ...resolvedDescriptionIds 16736 ]) 16737 ).join(" "); 16738 let descriptionIndex = 0; 16739 const { Label, Description, descriptionValidationToken } = components; 16740 const contentChildren = import_element24.Children.map(children, (child) => { 16741 if (!(0, import_element24.isValidElement)(child)) { 16742 return child; 16743 } 16744 if (child.type === Label) { 16745 return child.props.id === resolvedLabelId ? child : (0, import_element24.cloneElement)(child, { id: resolvedLabelId }); 16746 } 16747 if (child.type !== Description) { 16748 return child; 16749 } 16750 const descriptionId = resolvedDescriptionIds[descriptionIndex++]; 16751 if (!descriptionValidationToken && child.props.id === descriptionId) { 16752 return child; 16753 } 16754 return (0, import_element24.cloneElement)(child, { 16755 id: descriptionId, 16756 ...descriptionValidationToken && { 16757 validationToken: descriptionValidationToken 16758 } 16759 }); 16760 }); 16761 const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId); 16762 return { 16763 contentChildren, 16764 resolvedLabelId, 16765 itemAriaProps: { 16766 "aria-describedby": itemDescribedBy || void 0, 16767 "aria-label": ariaLabel, 16768 "aria-labelledby": labelledBy 16769 } 16770 }; 16771 } 16772 16773 // packages/ui/build-module/utils/render-slot-with-children.mjs 16774 var import_element25 = __toESM(require_element(), 1); 16775 function renderSlotWithChildren(slot, defaultSlot, children) { 16776 return (0, import_element25.cloneElement)( 16777 slot ?? defaultSlot, 16778 { children } 16779 ); 16780 } 16781 16782 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 16783 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 16784 function getRuntime6() { 16785 const globalScope = globalThis; 16786 if (globalScope.__wpStyleRuntime) { 16787 return globalScope.__wpStyleRuntime; 16788 } 16789 globalScope.__wpStyleRuntime = { 16790 documents: /* @__PURE__ */ new Map(), 16791 styles: /* @__PURE__ */ new Map(), 16792 injectedStyles: /* @__PURE__ */ new WeakMap() 16793 }; 16794 if (typeof document !== "undefined") { 16795 registerDocument6(document); 16796 } 16797 return globalScope.__wpStyleRuntime; 16798 } 16799 function documentContainsStyleHash6(targetDocument, hash) { 16800 if (!targetDocument.head) { 16801 return false; 16802 } 16803 for (const style of targetDocument.head.querySelectorAll( 16804 `style[$STYLE_HASH_ATTRIBUTE6}]` 16805 )) { 16806 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 16807 return true; 16808 } 16809 } 16810 return false; 16811 } 16812 function injectStyle6(targetDocument, hash, css) { 16813 if (!targetDocument.head) { 16814 return; 16815 } 16816 const runtime = getRuntime6(); 16817 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16818 if (!injectedStyles) { 16819 injectedStyles = /* @__PURE__ */ new Set(); 16820 runtime.injectedStyles.set(targetDocument, injectedStyles); 16821 } 16822 if (injectedStyles.has(hash)) { 16823 return; 16824 } 16825 if (documentContainsStyleHash6(targetDocument, hash)) { 16826 injectedStyles.add(hash); 16827 return; 16828 } 16829 const style = targetDocument.createElement("style"); 16830 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 16831 style.appendChild(targetDocument.createTextNode(css)); 16832 targetDocument.head.appendChild(style); 16833 injectedStyles.add(hash); 16834 } 16835 function registerDocument6(targetDocument) { 16836 const runtime = getRuntime6(); 16837 runtime.documents.set( 16838 targetDocument, 16839 (runtime.documents.get(targetDocument) ?? 0) + 1 16840 ); 16841 for (const [hash, css] of runtime.styles) { 16842 injectStyle6(targetDocument, hash, css); 16843 } 16844 return () => { 16845 const count = runtime.documents.get(targetDocument); 16846 if (count === void 0) { 16847 return; 16848 } 16849 if (count <= 1) { 16850 runtime.documents.delete(targetDocument); 16851 return; 16852 } 16853 runtime.documents.set(targetDocument, count - 1); 16854 }; 16855 } 16856 function registerStyle6(hash, css) { 16857 const runtime = getRuntime6(); 16858 runtime.styles.set(hash, css); 16859 for (const targetDocument of runtime.documents.keys()) { 16860 injectStyle6(targetDocument, hash, css); 16861 } 16862 } 16863 if (typeof process === "undefined" || true) { 16864 registerStyle6("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}}}"); 16865 } 16866 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 16867 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 16868 function resolveOwnerDocument() { 16869 return typeof document === "undefined" ? null : document; 16870 } 16871 function isInWordPressEnvironment() { 16872 let topWp; 16873 try { 16874 topWp = window.top?.wp; 16875 } catch { 16876 } 16877 const wp = topWp ?? window.wp; 16878 return typeof wp?.components === "object" && wp.components !== null; 16879 } 16880 var cachedSlot = null; 16881 function ensureSlotIsAccessible(element) { 16882 element.setAttribute("aria-hidden", "false"); 16883 return element; 16884 } 16885 function createSlot(ownerDocument2) { 16886 const element = ownerDocument2.createElement("div"); 16887 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 16888 if (wp_compat_overlay_slot_default.slot) { 16889 element.classList.add(wp_compat_overlay_slot_default.slot); 16890 } 16891 ownerDocument2.body.appendChild(element); 16892 return element; 16893 } 16894 function getWpCompatOverlaySlot() { 16895 if (typeof window === "undefined") { 16896 return void 0; 16897 } 16898 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 16899 return void 0; 16900 } 16901 const ownerDocument2 = resolveOwnerDocument(); 16902 if (!ownerDocument2 || !ownerDocument2.body) { 16903 return void 0; 16904 } 16905 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 16906 return ensureSlotIsAccessible(cachedSlot); 16907 } 16908 const existing = ownerDocument2.querySelector( 16909 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 16910 ); 16911 if (existing instanceof HTMLDivElement) { 16912 cachedSlot = ensureSlotIsAccessible(existing); 16913 return cachedSlot; 16914 } 16915 if (cachedSlot?.isConnected) { 16916 cachedSlot.remove(); 16917 } 16918 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 16919 return cachedSlot; 16920 } 16921 16922 // packages/ui/build-module/form/primitives/constants.mjs 16923 var ITEM_POPUP_POSITIONER_PROPS = { 16924 align: "start", 16925 sideOffset: 8, 16926 collisionPadding: 12 16927 }; 16928 16929 // packages/ui/build-module/utils/direction-provider.mjs 16930 var import_i18n3 = __toESM(require_i18n(), 1); 16931 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 16932 function DirectionProvider3({ children }) { 16933 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 16934 } 16935 16936 // packages/ui/build-module/tooltip/popup.mjs 16937 var import_element28 = __toESM(require_element(), 1); 16938 16939 // packages/ui/build-module/tooltip/portal.mjs 16940 var import_element26 = __toESM(require_element(), 1); 16941 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 16942 var Portal = (0, import_element26.forwardRef)( 16943 function TooltipPortal3({ container, ...restProps }, ref) { 16944 return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 16945 index_parts_exports3.Portal, 16946 { 16947 container: container === void 0 ? getWpCompatOverlaySlot() : container, 16948 ...restProps, 16949 ref 16950 } 16951 ); 16952 } 16953 ); 16954 16955 // packages/ui/build-module/tooltip/positioner.mjs 16956 var import_element27 = __toESM(require_element(), 1); 16957 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 16958 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 16959 function getRuntime7() { 16960 const globalScope = globalThis; 16961 if (globalScope.__wpStyleRuntime) { 16962 return globalScope.__wpStyleRuntime; 16963 } 16964 globalScope.__wpStyleRuntime = { 16965 documents: /* @__PURE__ */ new Map(), 16966 styles: /* @__PURE__ */ new Map(), 16967 injectedStyles: /* @__PURE__ */ new WeakMap() 16968 }; 16969 if (typeof document !== "undefined") { 16970 registerDocument7(document); 16971 } 16972 return globalScope.__wpStyleRuntime; 16973 } 16974 function documentContainsStyleHash7(targetDocument, hash) { 16975 if (!targetDocument.head) { 16976 return false; 16977 } 16978 for (const style of targetDocument.head.querySelectorAll( 16979 `style[$STYLE_HASH_ATTRIBUTE7}]` 16980 )) { 16981 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 16982 return true; 16983 } 16984 } 16985 return false; 16986 } 16987 function injectStyle7(targetDocument, hash, css) { 16988 if (!targetDocument.head) { 16989 return; 16990 } 16991 const runtime = getRuntime7(); 16992 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16993 if (!injectedStyles) { 16994 injectedStyles = /* @__PURE__ */ new Set(); 16995 runtime.injectedStyles.set(targetDocument, injectedStyles); 16996 } 16997 if (injectedStyles.has(hash)) { 16998 return; 16999 } 17000 if (documentContainsStyleHash7(targetDocument, hash)) { 17001 injectedStyles.add(hash); 17002 return; 17003 } 17004 const style = targetDocument.createElement("style"); 17005 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 17006 style.appendChild(targetDocument.createTextNode(css)); 17007 targetDocument.head.appendChild(style); 17008 injectedStyles.add(hash); 17009 } 17010 function registerDocument7(targetDocument) { 17011 const runtime = getRuntime7(); 17012 runtime.documents.set( 17013 targetDocument, 17014 (runtime.documents.get(targetDocument) ?? 0) + 1 17015 ); 17016 for (const [hash, css] of runtime.styles) { 17017 injectStyle7(targetDocument, hash, css); 17018 } 17019 return () => { 17020 const count = runtime.documents.get(targetDocument); 17021 if (count === void 0) { 17022 return; 17023 } 17024 if (count <= 1) { 17025 runtime.documents.delete(targetDocument); 17026 return; 17027 } 17028 runtime.documents.set(targetDocument, count - 1); 17029 }; 17030 } 17031 function registerStyle7(hash, css) { 17032 const runtime = getRuntime7(); 17033 runtime.styles.set(hash, css); 17034 for (const targetDocument of runtime.documents.keys()) { 17035 injectStyle7(targetDocument, hash, css); 17036 } 17037 } 17038 if (typeof process === "undefined" || true) { 17039 registerStyle7("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 17040 } 17041 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 17042 if (typeof process === "undefined" || true) { 17043 registerStyle7("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}}}}'); 17044 } 17045 var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 17046 var Positioner = (0, import_element27.forwardRef)( 17047 function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { 17048 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 17049 index_parts_exports3.Positioner, 17050 { 17051 ref, 17052 align, 17053 side, 17054 sideOffset, 17055 ...props, 17056 className: clsx_default( 17057 resets_default2["box-sizing"], 17058 style_default6.positioner, 17059 className 17060 ) 17061 } 17062 ); 17063 } 17064 ); 17065 17066 // packages/ui/build-module/utils/theme-provider.mjs 17067 var theme = __toESM(require_theme(), 1); 17068 17069 // packages/ui/build-module/lock-unlock.mjs 17070 var import_private_apis = __toESM(require_private_apis(), 1); 17071 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 17072 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 17073 "@wordpress/ui" 17074 ); 17075 17076 // packages/ui/build-module/utils/theme-provider.mjs 17077 function getThemeProvider() { 17078 const themePackage = theme; 17079 if (themePackage.ThemeProvider) { 17080 return themePackage.ThemeProvider; 17081 } 17082 if (!themePackage.privateApis) { 17083 throw new Error( 17084 "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`." 17085 ); 17086 } 17087 return unlock( 17088 themePackage.privateApis 17089 ).ThemeProvider; 17090 } 17091 var ThemeProvider = getThemeProvider(); 17092 17093 // packages/ui/build-module/tooltip/popup.mjs 17094 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 17095 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 17096 function getRuntime8() { 17097 const globalScope = globalThis; 17098 if (globalScope.__wpStyleRuntime) { 17099 return globalScope.__wpStyleRuntime; 17100 } 17101 globalScope.__wpStyleRuntime = { 17102 documents: /* @__PURE__ */ new Map(), 17103 styles: /* @__PURE__ */ new Map(), 17104 injectedStyles: /* @__PURE__ */ new WeakMap() 17105 }; 17106 if (typeof document !== "undefined") { 17107 registerDocument8(document); 17108 } 17109 return globalScope.__wpStyleRuntime; 17110 } 17111 function documentContainsStyleHash8(targetDocument, hash) { 17112 if (!targetDocument.head) { 17113 return false; 17114 } 17115 for (const style of targetDocument.head.querySelectorAll( 17116 `style[$STYLE_HASH_ATTRIBUTE8}]` 17117 )) { 17118 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 17119 return true; 17120 } 17121 } 17122 return false; 17123 } 17124 function injectStyle8(targetDocument, hash, css) { 17125 if (!targetDocument.head) { 17126 return; 17127 } 17128 const runtime = getRuntime8(); 17129 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17130 if (!injectedStyles) { 17131 injectedStyles = /* @__PURE__ */ new Set(); 17132 runtime.injectedStyles.set(targetDocument, injectedStyles); 17133 } 17134 if (injectedStyles.has(hash)) { 17135 return; 17136 } 17137 if (documentContainsStyleHash8(targetDocument, hash)) { 17138 injectedStyles.add(hash); 17139 return; 17140 } 17141 const style = targetDocument.createElement("style"); 17142 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 17143 style.appendChild(targetDocument.createTextNode(css)); 17144 targetDocument.head.appendChild(style); 17145 injectedStyles.add(hash); 17146 } 17147 function registerDocument8(targetDocument) { 17148 const runtime = getRuntime8(); 17149 runtime.documents.set( 17150 targetDocument, 17151 (runtime.documents.get(targetDocument) ?? 0) + 1 17152 ); 17153 for (const [hash, css] of runtime.styles) { 17154 injectStyle8(targetDocument, hash, css); 17155 } 17156 return () => { 17157 const count = runtime.documents.get(targetDocument); 17158 if (count === void 0) { 17159 return; 17160 } 17161 if (count <= 1) { 17162 runtime.documents.delete(targetDocument); 17163 return; 17164 } 17165 runtime.documents.set(targetDocument, count - 1); 17166 }; 17167 } 17168 function registerStyle8(hash, css) { 17169 const runtime = getRuntime8(); 17170 runtime.styles.set(hash, css); 17171 for (const targetDocument of runtime.documents.keys()) { 17172 injectStyle8(targetDocument, hash, css); 17173 } 17174 } 17175 if (typeof process === "undefined" || true) { 17176 registerStyle8("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}}}}'); 17177 } 17178 var style_default7 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 17179 var POPUP_COLOR = { background: "#1e1e1e" }; 17180 var Popup = (0, import_element28.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { 17181 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( 17182 index_parts_exports3.Popup, 17183 { 17184 ref, 17185 className: clsx_default(style_default7.popup, className), 17186 ...props, 17187 children 17188 } 17189 ) }); 17190 const positionedPopup = renderSlotWithChildren( 17191 positioner, 17192 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Positioner, {}), 17193 popupContent 17194 ); 17195 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Portal, {}), positionedPopup); 17196 }); 17197 17198 // packages/ui/build-module/tooltip/trigger.mjs 17199 var import_element29 = __toESM(require_element(), 1); 17200 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 17201 var Trigger = (0, import_element29.forwardRef)( 17202 function TooltipTrigger3(props, ref) { 17203 return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(index_parts_exports3.Trigger, { ref, ...props }); 17204 } 17205 ); 17206 17207 // packages/ui/build-module/tooltip/root.mjs 17208 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 17209 function Root(props) { 17210 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(index_parts_exports3.Root, { ...props }) }); 17211 } 17212 17213 // packages/ui/build-module/icon-button/icon-button.mjs 17214 var import_element30 = __toESM(require_element(), 1); 17215 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 17216 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 17217 function getRuntime9() { 17218 const globalScope = globalThis; 17219 if (globalScope.__wpStyleRuntime) { 17220 return globalScope.__wpStyleRuntime; 17221 } 17222 globalScope.__wpStyleRuntime = { 17223 documents: /* @__PURE__ */ new Map(), 17224 styles: /* @__PURE__ */ new Map(), 17225 injectedStyles: /* @__PURE__ */ new WeakMap() 17226 }; 17227 if (typeof document !== "undefined") { 17228 registerDocument9(document); 17229 } 17230 return globalScope.__wpStyleRuntime; 17231 } 17232 function documentContainsStyleHash9(targetDocument, hash) { 17233 if (!targetDocument.head) { 17234 return false; 17235 } 17236 for (const style of targetDocument.head.querySelectorAll( 17237 `style[$STYLE_HASH_ATTRIBUTE9}]` 17238 )) { 17239 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 17240 return true; 17241 } 17242 } 17243 return false; 17244 } 17245 function injectStyle9(targetDocument, hash, css) { 17246 if (!targetDocument.head) { 17247 return; 17248 } 17249 const runtime = getRuntime9(); 17250 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17251 if (!injectedStyles) { 17252 injectedStyles = /* @__PURE__ */ new Set(); 17253 runtime.injectedStyles.set(targetDocument, injectedStyles); 17254 } 17255 if (injectedStyles.has(hash)) { 17256 return; 17257 } 17258 if (documentContainsStyleHash9(targetDocument, hash)) { 17259 injectedStyles.add(hash); 17260 return; 17261 } 17262 const style = targetDocument.createElement("style"); 17263 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 17264 style.appendChild(targetDocument.createTextNode(css)); 17265 targetDocument.head.appendChild(style); 17266 injectedStyles.add(hash); 17267 } 17268 function registerDocument9(targetDocument) { 17269 const runtime = getRuntime9(); 17270 runtime.documents.set( 17271 targetDocument, 17272 (runtime.documents.get(targetDocument) ?? 0) + 1 17273 ); 17274 for (const [hash, css] of runtime.styles) { 17275 injectStyle9(targetDocument, hash, css); 17276 } 17277 return () => { 17278 const count = runtime.documents.get(targetDocument); 17279 if (count === void 0) { 17280 return; 17281 } 17282 if (count <= 1) { 17283 runtime.documents.delete(targetDocument); 17284 return; 17285 } 17286 runtime.documents.set(targetDocument, count - 1); 17287 }; 17288 } 17289 function registerStyle9(hash, css) { 17290 const runtime = getRuntime9(); 17291 runtime.styles.set(hash, css); 17292 for (const targetDocument of runtime.documents.keys()) { 17293 injectStyle9(targetDocument, hash, css); 17294 } 17295 } 17296 if (typeof process === "undefined" || true) { 17297 registerStyle9("c5cdafb1bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0px;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}"); 17298 } 17299 var style_default8 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; 17300 var IconButton = (0, import_element30.forwardRef)( 17301 function UnforwardedIconButton({ 17302 label, 17303 className, 17304 // Prevent accidental forwarding of `children` 17305 children: _children, 17306 disabled: disabled2, 17307 focusableWhenDisabled = true, 17308 icon, 17309 size: size4, 17310 shortcut, 17311 positioner, 17312 "aria-describedby": ariaDescribedBy, 17313 "aria-keyshortcuts": ariaKeyShortcuts, 17314 ...restProps 17315 }, ref) { 17316 const classes = clsx_default(style_default8["icon-button"], className); 17317 const { descriptionId, targetProps } = useKeyboardShortcutProps({ 17318 "aria-describedby": ariaDescribedBy, 17319 "aria-keyshortcuts": ariaKeyShortcuts, 17320 shortcut 17321 }); 17322 return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Root, { children: [ 17323 /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)( 17324 Trigger, 17325 { 17326 ref, 17327 ...targetProps, 17328 disabled: disabled2 && !focusableWhenDisabled, 17329 render: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 17330 Button4, 17331 { 17332 ...restProps, 17333 size: size4, 17334 "aria-label": label, 17335 disabled: disabled2, 17336 focusableWhenDisabled 17337 } 17338 ), 17339 className: classes, 17340 children: [ 17341 /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { icon, size: 24, className: style_default8.icon }), 17342 shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 17343 KeyboardShortcutDescription, 17344 { 17345 descriptionId, 17346 shortcut 17347 } 17348 ) 17349 ] 17350 } 17351 ), 17352 /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Popup, { positioner, children: [ 17353 label, 17354 shortcut && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [ 17355 " ", 17356 /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(KeyboardShortcutDisplay, { shortcut }) 17357 ] }) 17358 ] }) 17359 ] }); 17360 } 17361 ); 17362 17363 // packages/ui/build-module/form/primitives/autocomplete/index.mjs 17364 var autocomplete_exports = {}; 17365 __export(autocomplete_exports, { 17366 Clear: () => Clear, 17367 Collection: () => Collection, 17368 Empty: () => Empty, 17369 Group: () => Group, 17370 GroupLabel: () => GroupLabel, 17371 Input: () => Input4, 17372 InputGroup: () => InputGroup, 17373 Item: () => Item, 17374 ItemDescription: () => ForwardedItemDescription, 17375 ItemLabel: () => ForwardedItemLabel, 17376 List: () => List, 17377 ListBody: () => ListBody, 17378 Popup: () => Popup2, 17379 Portal: () => Portal2, 17380 Positioner: () => Positioner2, 17381 Root: () => Root2, 17382 Row: () => Row, 17383 Separator: () => Separator, 17384 Status: () => Status, 17385 Value: () => Value, 17386 useFilteredItems: () => useFilteredItems2 17387 }); 17388 17389 // packages/ui/build-module/form/primitives/autocomplete/clear.mjs 17390 var import_element31 = __toESM(require_element(), 1); 17391 var import_i18n4 = __toESM(require_i18n(), 1); 17392 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 17393 var DEFAULT_RENDER = ({ 17394 "aria-label": ariaLabel = (0, import_i18n4.__)("Clear"), 17395 ...props 17396 }, { disabled: disabled2 }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 17397 IconButton, 17398 { 17399 icon: close_small_default, 17400 focusableWhenDisabled: false, 17401 disabled: disabled2, 17402 "aria-hidden": disabled2 || void 0, 17403 size: "small", 17404 variant: "minimal", 17405 tone: "neutral", 17406 label: ariaLabel, 17407 ...props 17408 } 17409 ); 17410 var Clear = (0, import_element31.forwardRef)( 17411 function UnforwardedClear({ render = DEFAULT_RENDER, ...restProps }, ref) { 17412 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 17413 index_parts_exports.Clear, 17414 { 17415 ref, 17416 render, 17417 ...restProps 17418 } 17419 ); 17420 } 17421 ); 17422 17423 // packages/ui/build-module/form/primitives/autocomplete/collection.mjs 17424 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 17425 function Collection({ 17426 children, 17427 ...restProps 17428 }) { 17429 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(index_parts_exports.Collection, { ...restProps, children }); 17430 } 17431 17432 // packages/ui/build-module/form/primitives/autocomplete/empty.mjs 17433 var import_element32 = __toESM(require_element(), 1); 17434 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 17435 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 17436 function getRuntime10() { 17437 const globalScope = globalThis; 17438 if (globalScope.__wpStyleRuntime) { 17439 return globalScope.__wpStyleRuntime; 17440 } 17441 globalScope.__wpStyleRuntime = { 17442 documents: /* @__PURE__ */ new Map(), 17443 styles: /* @__PURE__ */ new Map(), 17444 injectedStyles: /* @__PURE__ */ new WeakMap() 17445 }; 17446 if (typeof document !== "undefined") { 17447 registerDocument10(document); 17448 } 17449 return globalScope.__wpStyleRuntime; 17450 } 17451 function documentContainsStyleHash10(targetDocument, hash) { 17452 if (!targetDocument.head) { 17453 return false; 17454 } 17455 for (const style of targetDocument.head.querySelectorAll( 17456 `style[$STYLE_HASH_ATTRIBUTE10}]` 17457 )) { 17458 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 17459 return true; 17460 } 17461 } 17462 return false; 17463 } 17464 function injectStyle10(targetDocument, hash, css) { 17465 if (!targetDocument.head) { 17466 return; 17467 } 17468 const runtime = getRuntime10(); 17469 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17470 if (!injectedStyles) { 17471 injectedStyles = /* @__PURE__ */ new Set(); 17472 runtime.injectedStyles.set(targetDocument, injectedStyles); 17473 } 17474 if (injectedStyles.has(hash)) { 17475 return; 17476 } 17477 if (documentContainsStyleHash10(targetDocument, hash)) { 17478 injectedStyles.add(hash); 17479 return; 17480 } 17481 const style = targetDocument.createElement("style"); 17482 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 17483 style.appendChild(targetDocument.createTextNode(css)); 17484 targetDocument.head.appendChild(style); 17485 injectedStyles.add(hash); 17486 } 17487 function registerDocument10(targetDocument) { 17488 const runtime = getRuntime10(); 17489 runtime.documents.set( 17490 targetDocument, 17491 (runtime.documents.get(targetDocument) ?? 0) + 1 17492 ); 17493 for (const [hash, css] of runtime.styles) { 17494 injectStyle10(targetDocument, hash, css); 17495 } 17496 return () => { 17497 const count = runtime.documents.get(targetDocument); 17498 if (count === void 0) { 17499 return; 17500 } 17501 if (count <= 1) { 17502 runtime.documents.delete(targetDocument); 17503 return; 17504 } 17505 runtime.documents.set(targetDocument, count - 1); 17506 }; 17507 } 17508 function registerStyle10(hash, css) { 17509 const runtime = getRuntime10(); 17510 runtime.styles.set(hash, css); 17511 for (const targetDocument of runtime.documents.keys()) { 17512 injectStyle10(targetDocument, hash, css); 17513 } 17514 } 17515 if (typeof process === "undefined" || true) { 17516 registerStyle10("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 17517 } 17518 var item_popup_default = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 17519 var Empty = (0, import_element32.forwardRef)( 17520 function UnforwardedEmpty({ className, ...restProps }, ref) { 17521 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( 17522 index_parts_exports.Empty, 17523 { 17524 className: clsx_default(item_popup_default.empty, className), 17525 ref, 17526 ...restProps 17527 } 17528 ); 17529 } 17530 ); 17531 17532 // packages/ui/build-module/form/primitives/autocomplete/group.mjs 17533 var import_element33 = __toESM(require_element(), 1); 17534 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 17535 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 17536 function getRuntime11() { 17537 const globalScope = globalThis; 17538 if (globalScope.__wpStyleRuntime) { 17539 return globalScope.__wpStyleRuntime; 17540 } 17541 globalScope.__wpStyleRuntime = { 17542 documents: /* @__PURE__ */ new Map(), 17543 styles: /* @__PURE__ */ new Map(), 17544 injectedStyles: /* @__PURE__ */ new WeakMap() 17545 }; 17546 if (typeof document !== "undefined") { 17547 registerDocument11(document); 17548 } 17549 return globalScope.__wpStyleRuntime; 17550 } 17551 function documentContainsStyleHash11(targetDocument, hash) { 17552 if (!targetDocument.head) { 17553 return false; 17554 } 17555 for (const style of targetDocument.head.querySelectorAll( 17556 `style[$STYLE_HASH_ATTRIBUTE11}]` 17557 )) { 17558 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 17559 return true; 17560 } 17561 } 17562 return false; 17563 } 17564 function injectStyle11(targetDocument, hash, css) { 17565 if (!targetDocument.head) { 17566 return; 17567 } 17568 const runtime = getRuntime11(); 17569 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17570 if (!injectedStyles) { 17571 injectedStyles = /* @__PURE__ */ new Set(); 17572 runtime.injectedStyles.set(targetDocument, injectedStyles); 17573 } 17574 if (injectedStyles.has(hash)) { 17575 return; 17576 } 17577 if (documentContainsStyleHash11(targetDocument, hash)) { 17578 injectedStyles.add(hash); 17579 return; 17580 } 17581 const style = targetDocument.createElement("style"); 17582 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 17583 style.appendChild(targetDocument.createTextNode(css)); 17584 targetDocument.head.appendChild(style); 17585 injectedStyles.add(hash); 17586 } 17587 function registerDocument11(targetDocument) { 17588 const runtime = getRuntime11(); 17589 runtime.documents.set( 17590 targetDocument, 17591 (runtime.documents.get(targetDocument) ?? 0) + 1 17592 ); 17593 for (const [hash, css] of runtime.styles) { 17594 injectStyle11(targetDocument, hash, css); 17595 } 17596 return () => { 17597 const count = runtime.documents.get(targetDocument); 17598 if (count === void 0) { 17599 return; 17600 } 17601 if (count <= 1) { 17602 runtime.documents.delete(targetDocument); 17603 return; 17604 } 17605 runtime.documents.set(targetDocument, count - 1); 17606 }; 17607 } 17608 function registerStyle11(hash, css) { 17609 const runtime = getRuntime11(); 17610 runtime.styles.set(hash, css); 17611 for (const targetDocument of runtime.documents.keys()) { 17612 injectStyle11(targetDocument, hash, css); 17613 } 17614 } 17615 if (typeof process === "undefined" || true) { 17616 registerStyle11("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 17617 } 17618 var item_popup_default2 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 17619 var Group = (0, import_element33.forwardRef)( 17620 function UnforwardedGroup({ className, children, ...restProps }, ref) { 17621 return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 17622 index_parts_exports.Group, 17623 { 17624 className: clsx_default(item_popup_default2.group, className), 17625 ref, 17626 ...restProps, 17627 children 17628 } 17629 ); 17630 } 17631 ); 17632 17633 // packages/ui/build-module/form/primitives/autocomplete/group-label.mjs 17634 var import_element34 = __toESM(require_element(), 1); 17635 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 17636 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 17637 function getRuntime12() { 17638 const globalScope = globalThis; 17639 if (globalScope.__wpStyleRuntime) { 17640 return globalScope.__wpStyleRuntime; 17641 } 17642 globalScope.__wpStyleRuntime = { 17643 documents: /* @__PURE__ */ new Map(), 17644 styles: /* @__PURE__ */ new Map(), 17645 injectedStyles: /* @__PURE__ */ new WeakMap() 17646 }; 17647 if (typeof document !== "undefined") { 17648 registerDocument12(document); 17649 } 17650 return globalScope.__wpStyleRuntime; 17651 } 17652 function documentContainsStyleHash12(targetDocument, hash) { 17653 if (!targetDocument.head) { 17654 return false; 17655 } 17656 for (const style of targetDocument.head.querySelectorAll( 17657 `style[$STYLE_HASH_ATTRIBUTE12}]` 17658 )) { 17659 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 17660 return true; 17661 } 17662 } 17663 return false; 17664 } 17665 function injectStyle12(targetDocument, hash, css) { 17666 if (!targetDocument.head) { 17667 return; 17668 } 17669 const runtime = getRuntime12(); 17670 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17671 if (!injectedStyles) { 17672 injectedStyles = /* @__PURE__ */ new Set(); 17673 runtime.injectedStyles.set(targetDocument, injectedStyles); 17674 } 17675 if (injectedStyles.has(hash)) { 17676 return; 17677 } 17678 if (documentContainsStyleHash12(targetDocument, hash)) { 17679 injectedStyles.add(hash); 17680 return; 17681 } 17682 const style = targetDocument.createElement("style"); 17683 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 17684 style.appendChild(targetDocument.createTextNode(css)); 17685 targetDocument.head.appendChild(style); 17686 injectedStyles.add(hash); 17687 } 17688 function registerDocument12(targetDocument) { 17689 const runtime = getRuntime12(); 17690 runtime.documents.set( 17691 targetDocument, 17692 (runtime.documents.get(targetDocument) ?? 0) + 1 17693 ); 17694 for (const [hash, css] of runtime.styles) { 17695 injectStyle12(targetDocument, hash, css); 17696 } 17697 return () => { 17698 const count = runtime.documents.get(targetDocument); 17699 if (count === void 0) { 17700 return; 17701 } 17702 if (count <= 1) { 17703 runtime.documents.delete(targetDocument); 17704 return; 17705 } 17706 runtime.documents.set(targetDocument, count - 1); 17707 }; 17708 } 17709 function registerStyle12(hash, css) { 17710 const runtime = getRuntime12(); 17711 runtime.styles.set(hash, css); 17712 for (const targetDocument of runtime.documents.keys()) { 17713 injectStyle12(targetDocument, hash, css); 17714 } 17715 } 17716 if (typeof process === "undefined" || true) { 17717 registerStyle12("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 17718 } 17719 var item_popup_default3 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 17720 var GroupLabel = (0, import_element34.forwardRef)(function UnforwardedGroupLabel({ className, children, ...restProps }, ref) { 17721 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 17722 Text, 17723 { 17724 variant: "heading-sm", 17725 className: clsx_default(item_popup_default3["group-label"], className), 17726 render: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(index_parts_exports.GroupLabel, { ref, ...restProps }), 17727 children 17728 } 17729 ); 17730 }); 17731 17732 // packages/ui/build-module/form/primitives/autocomplete/input-group.mjs 17733 var import_element35 = __toESM(require_element(), 1); 17734 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 17735 var InputGroup = (0, import_element35.forwardRef)(function UnforwardedInputGroup(props, ref) { 17736 return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(index_parts_exports.InputGroup, { ref, ...props }); 17737 }); 17738 17739 // packages/ui/build-module/form/primitives/autocomplete/input.mjs 17740 var import_element39 = __toESM(require_element(), 1); 17741 17742 // packages/ui/build-module/form/primitives/input/input.mjs 17743 var import_element38 = __toESM(require_element(), 1); 17744 17745 // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs 17746 var import_element36 = __toESM(require_element(), 1); 17747 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 17748 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 17749 function getRuntime13() { 17750 const globalScope = globalThis; 17751 if (globalScope.__wpStyleRuntime) { 17752 return globalScope.__wpStyleRuntime; 17753 } 17754 globalScope.__wpStyleRuntime = { 17755 documents: /* @__PURE__ */ new Map(), 17756 styles: /* @__PURE__ */ new Map(), 17757 injectedStyles: /* @__PURE__ */ new WeakMap() 17758 }; 17759 if (typeof document !== "undefined") { 17760 registerDocument13(document); 17761 } 17762 return globalScope.__wpStyleRuntime; 17763 } 17764 function documentContainsStyleHash13(targetDocument, hash) { 17765 if (!targetDocument.head) { 17766 return false; 17767 } 17768 for (const style of targetDocument.head.querySelectorAll( 17769 `style[$STYLE_HASH_ATTRIBUTE13}]` 17770 )) { 17771 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 17772 return true; 17773 } 17774 } 17775 return false; 17776 } 17777 function injectStyle13(targetDocument, hash, css) { 17778 if (!targetDocument.head) { 17779 return; 17780 } 17781 const runtime = getRuntime13(); 17782 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17783 if (!injectedStyles) { 17784 injectedStyles = /* @__PURE__ */ new Set(); 17785 runtime.injectedStyles.set(targetDocument, injectedStyles); 17786 } 17787 if (injectedStyles.has(hash)) { 17788 return; 17789 } 17790 if (documentContainsStyleHash13(targetDocument, hash)) { 17791 injectedStyles.add(hash); 17792 return; 17793 } 17794 const style = targetDocument.createElement("style"); 17795 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 17796 style.appendChild(targetDocument.createTextNode(css)); 17797 targetDocument.head.appendChild(style); 17798 injectedStyles.add(hash); 17799 } 17800 function registerDocument13(targetDocument) { 17801 const runtime = getRuntime13(); 17802 runtime.documents.set( 17803 targetDocument, 17804 (runtime.documents.get(targetDocument) ?? 0) + 1 17805 ); 17806 for (const [hash, css] of runtime.styles) { 17807 injectStyle13(targetDocument, hash, css); 17808 } 17809 return () => { 17810 const count = runtime.documents.get(targetDocument); 17811 if (count === void 0) { 17812 return; 17813 } 17814 if (count <= 1) { 17815 runtime.documents.delete(targetDocument); 17816 return; 17817 } 17818 runtime.documents.set(targetDocument, count - 1); 17819 }; 17820 } 17821 function registerStyle13(hash, css) { 17822 const runtime = getRuntime13(); 17823 runtime.styles.set(hash, css); 17824 for (const targetDocument of runtime.documents.keys()) { 17825 injectStyle13(targetDocument, hash, css); 17826 } 17827 } 17828 if (typeof process === "undefined" || true) { 17829 registerStyle13("abb19c3171", "._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)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 17830 } 17831 var global_css_defense_default3 = { "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", "span": "_400bf7ee0c6061a9__span" }; 17832 if (typeof process === "undefined" || true) { 17833 registerStyle13("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 17834 } 17835 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 17836 if (typeof process === "undefined" || true) { 17837 registerStyle13("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;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-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 17838 } 17839 var style_default9 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 17840 var InputLayout = (0, import_element36.forwardRef)( 17841 function UnforwardedInputLayout({ 17842 className, 17843 children, 17844 visuallyDisabled, 17845 size: size4 = "default", 17846 isBorderless, 17847 prefix, 17848 suffix, 17849 ...restProps 17850 }, ref) { 17851 return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 17852 "div", 17853 { 17854 ref, 17855 className: clsx_default( 17856 global_css_defense_default3.div, 17857 resets_default3["box-sizing"], 17858 style_default9["input-layout"], 17859 style_default9[`is-size-$size4}`], 17860 visuallyDisabled && style_default9["is-disabled"], 17861 isBorderless && style_default9["is-borderless"], 17862 className 17863 ), 17864 ...restProps, 17865 children: [ 17866 import_element36.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 17867 "div", 17868 { 17869 className: style_default9["slot-wrapper"], 17870 "data-slot-type": "prefix", 17871 children: prefix 17872 } 17873 ), 17874 children, 17875 import_element36.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 17876 "div", 17877 { 17878 className: style_default9["slot-wrapper"], 17879 "data-slot-type": "suffix", 17880 children: suffix 17881 } 17882 ) 17883 ] 17884 } 17885 ); 17886 } 17887 ); 17888 17889 // packages/ui/build-module/form/primitives/input-layout/slot.mjs 17890 var import_element37 = __toESM(require_element(), 1); 17891 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 17892 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 17893 function getRuntime14() { 17894 const globalScope = globalThis; 17895 if (globalScope.__wpStyleRuntime) { 17896 return globalScope.__wpStyleRuntime; 17897 } 17898 globalScope.__wpStyleRuntime = { 17899 documents: /* @__PURE__ */ new Map(), 17900 styles: /* @__PURE__ */ new Map(), 17901 injectedStyles: /* @__PURE__ */ new WeakMap() 17902 }; 17903 if (typeof document !== "undefined") { 17904 registerDocument14(document); 17905 } 17906 return globalScope.__wpStyleRuntime; 17907 } 17908 function documentContainsStyleHash14(targetDocument, hash) { 17909 if (!targetDocument.head) { 17910 return false; 17911 } 17912 for (const style of targetDocument.head.querySelectorAll( 17913 `style[$STYLE_HASH_ATTRIBUTE14}]` 17914 )) { 17915 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 17916 return true; 17917 } 17918 } 17919 return false; 17920 } 17921 function injectStyle14(targetDocument, hash, css) { 17922 if (!targetDocument.head) { 17923 return; 17924 } 17925 const runtime = getRuntime14(); 17926 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17927 if (!injectedStyles) { 17928 injectedStyles = /* @__PURE__ */ new Set(); 17929 runtime.injectedStyles.set(targetDocument, injectedStyles); 17930 } 17931 if (injectedStyles.has(hash)) { 17932 return; 17933 } 17934 if (documentContainsStyleHash14(targetDocument, hash)) { 17935 injectedStyles.add(hash); 17936 return; 17937 } 17938 const style = targetDocument.createElement("style"); 17939 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 17940 style.appendChild(targetDocument.createTextNode(css)); 17941 targetDocument.head.appendChild(style); 17942 injectedStyles.add(hash); 17943 } 17944 function registerDocument14(targetDocument) { 17945 const runtime = getRuntime14(); 17946 runtime.documents.set( 17947 targetDocument, 17948 (runtime.documents.get(targetDocument) ?? 0) + 1 17949 ); 17950 for (const [hash, css] of runtime.styles) { 17951 injectStyle14(targetDocument, hash, css); 17952 } 17953 return () => { 17954 const count = runtime.documents.get(targetDocument); 17955 if (count === void 0) { 17956 return; 17957 } 17958 if (count <= 1) { 17959 runtime.documents.delete(targetDocument); 17960 return; 17961 } 17962 runtime.documents.set(targetDocument, count - 1); 17963 }; 17964 } 17965 function registerStyle14(hash, css) { 17966 const runtime = getRuntime14(); 17967 runtime.styles.set(hash, css); 17968 for (const targetDocument of runtime.documents.keys()) { 17969 injectStyle14(targetDocument, hash, css); 17970 } 17971 } 17972 if (typeof process === "undefined" || true) { 17973 registerStyle14("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;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-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 17974 } 17975 var style_default10 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 17976 var InputLayoutSlot = (0, import_element37.forwardRef)(function UnforwardedInputLayoutSlot({ padding = "default", className, ...restProps }, ref) { 17977 return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 17978 "div", 17979 { 17980 ref, 17981 className: clsx_default( 17982 style_default10["input-layout-slot"], 17983 style_default10[`is-padding-$padding}`], 17984 className 17985 ), 17986 ...restProps 17987 } 17988 ); 17989 }); 17990 InputLayoutSlot.displayName = "InputLayout.Slot"; 17991 17992 // packages/ui/build-module/form/primitives/input-layout/index.mjs 17993 var InputLayout2 = Object.assign(InputLayout, { 17994 Slot: InputLayoutSlot 17995 }); 17996 17997 // packages/ui/build-module/form/primitives/input/input.mjs 17998 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 17999 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 18000 function getRuntime15() { 18001 const globalScope = globalThis; 18002 if (globalScope.__wpStyleRuntime) { 18003 return globalScope.__wpStyleRuntime; 18004 } 18005 globalScope.__wpStyleRuntime = { 18006 documents: /* @__PURE__ */ new Map(), 18007 styles: /* @__PURE__ */ new Map(), 18008 injectedStyles: /* @__PURE__ */ new WeakMap() 18009 }; 18010 if (typeof document !== "undefined") { 18011 registerDocument15(document); 18012 } 18013 return globalScope.__wpStyleRuntime; 18014 } 18015 function documentContainsStyleHash15(targetDocument, hash) { 18016 if (!targetDocument.head) { 18017 return false; 18018 } 18019 for (const style of targetDocument.head.querySelectorAll( 18020 `style[$STYLE_HASH_ATTRIBUTE15}]` 18021 )) { 18022 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 18023 return true; 18024 } 18025 } 18026 return false; 18027 } 18028 function injectStyle15(targetDocument, hash, css) { 18029 if (!targetDocument.head) { 18030 return; 18031 } 18032 const runtime = getRuntime15(); 18033 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18034 if (!injectedStyles) { 18035 injectedStyles = /* @__PURE__ */ new Set(); 18036 runtime.injectedStyles.set(targetDocument, injectedStyles); 18037 } 18038 if (injectedStyles.has(hash)) { 18039 return; 18040 } 18041 if (documentContainsStyleHash15(targetDocument, hash)) { 18042 injectedStyles.add(hash); 18043 return; 18044 } 18045 const style = targetDocument.createElement("style"); 18046 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 18047 style.appendChild(targetDocument.createTextNode(css)); 18048 targetDocument.head.appendChild(style); 18049 injectedStyles.add(hash); 18050 } 18051 function registerDocument15(targetDocument) { 18052 const runtime = getRuntime15(); 18053 runtime.documents.set( 18054 targetDocument, 18055 (runtime.documents.get(targetDocument) ?? 0) + 1 18056 ); 18057 for (const [hash, css] of runtime.styles) { 18058 injectStyle15(targetDocument, hash, css); 18059 } 18060 return () => { 18061 const count = runtime.documents.get(targetDocument); 18062 if (count === void 0) { 18063 return; 18064 } 18065 if (count <= 1) { 18066 runtime.documents.delete(targetDocument); 18067 return; 18068 } 18069 runtime.documents.set(targetDocument, count - 1); 18070 }; 18071 } 18072 function registerStyle15(hash, css) { 18073 const runtime = getRuntime15(); 18074 runtime.styles.set(hash, css); 18075 for (const targetDocument of runtime.documents.keys()) { 18076 injectStyle15(targetDocument, hash, css); 18077 } 18078 } 18079 if (typeof process === "undefined" || true) { 18080 registerStyle15("abb19c3171", "._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)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 18081 } 18082 var global_css_defense_default4 = { "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", "span": "_400bf7ee0c6061a9__span" }; 18083 if (typeof process === "undefined" || true) { 18084 registerStyle15("7c3267f794", "@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{--_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))}}}"); 18085 } 18086 var focus_module_default2 = { "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-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 18087 if (typeof process === "undefined" || true) { 18088 registerStyle15("afb8caf1cd", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2ae7be2fc1bb17a3__input{--_gcd-input-padding:var(--wp-ui-input-padding-block,0px) var(--wp-ui-input-layout-padding-inline,0px);--_gcd-input-font-size:max(var(--wpds-typography-font-size-md,13px),16px);background:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding-block:var(--wp-ui-input-padding-block,0);padding-inline:var(--wp-ui-input-layout-padding-inline,0);width:100%;@media (min-width:600px){--_gcd-input-font-size:inherit}&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}&:disabled,&[aria-disabled=true]{--_gcd-input-placeholder-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}@media (forced-colors:active){color:GrayText}}&[type=email],&[type=url]{direction:ltr}&[type=number]{appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0}}}}@layer compositions{.beecada4b38856ab__layout{font-size:max(var(--wpds-typography-font-size-md,13px),16px);@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}}}}"); 18089 } 18090 var style_default11 = { "input": "_2ae7be2fc1bb17a3__input", "layout": "beecada4b38856ab__layout" }; 18091 var Input3 = (0, import_element38.forwardRef)( 18092 function UnforwardedInput({ className, size: size4 = "default", prefix, suffix, style, ...restProps }, ref) { 18093 return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 18094 InputLayout2, 18095 { 18096 className: clsx_default( 18097 style_default11.layout, 18098 focus_module_default2["outset-ring--focus-within"], 18099 className 18100 ), 18101 style, 18102 size: size4, 18103 visuallyDisabled: restProps.disabled, 18104 prefix, 18105 suffix, 18106 children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 18107 Input, 18108 { 18109 ref, 18110 className: clsx_default(global_css_defense_default4.input, style_default11.input), 18111 ...restProps 18112 } 18113 ) 18114 } 18115 ); 18116 } 18117 ); 18118 18119 // packages/ui/build-module/form/primitives/autocomplete/input.mjs 18120 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 18121 var DEFAULT_RENDER2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Input3, { ...props }); 18122 var Input4 = (0, import_element39.forwardRef)( 18123 function UnforwardedInput2({ render = DEFAULT_RENDER2, ...restProps }, ref) { 18124 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( 18125 index_parts_exports.Input, 18126 { 18127 ref, 18128 render, 18129 ...restProps 18130 } 18131 ); 18132 } 18133 ); 18134 18135 // packages/ui/build-module/form/primitives/autocomplete/item.mjs 18136 var import_element42 = __toESM(require_element(), 1); 18137 18138 // packages/ui/build-module/form/primitives/autocomplete/item-description.mjs 18139 var import_element40 = __toESM(require_element(), 1); 18140 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 18141 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 18142 function getRuntime16() { 18143 const globalScope = globalThis; 18144 if (globalScope.__wpStyleRuntime) { 18145 return globalScope.__wpStyleRuntime; 18146 } 18147 globalScope.__wpStyleRuntime = { 18148 documents: /* @__PURE__ */ new Map(), 18149 styles: /* @__PURE__ */ new Map(), 18150 injectedStyles: /* @__PURE__ */ new WeakMap() 18151 }; 18152 if (typeof document !== "undefined") { 18153 registerDocument16(document); 18154 } 18155 return globalScope.__wpStyleRuntime; 18156 } 18157 function documentContainsStyleHash16(targetDocument, hash) { 18158 if (!targetDocument.head) { 18159 return false; 18160 } 18161 for (const style of targetDocument.head.querySelectorAll( 18162 `style[$STYLE_HASH_ATTRIBUTE16}]` 18163 )) { 18164 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 18165 return true; 18166 } 18167 } 18168 return false; 18169 } 18170 function injectStyle16(targetDocument, hash, css) { 18171 if (!targetDocument.head) { 18172 return; 18173 } 18174 const runtime = getRuntime16(); 18175 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18176 if (!injectedStyles) { 18177 injectedStyles = /* @__PURE__ */ new Set(); 18178 runtime.injectedStyles.set(targetDocument, injectedStyles); 18179 } 18180 if (injectedStyles.has(hash)) { 18181 return; 18182 } 18183 if (documentContainsStyleHash16(targetDocument, hash)) { 18184 injectedStyles.add(hash); 18185 return; 18186 } 18187 const style = targetDocument.createElement("style"); 18188 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 18189 style.appendChild(targetDocument.createTextNode(css)); 18190 targetDocument.head.appendChild(style); 18191 injectedStyles.add(hash); 18192 } 18193 function registerDocument16(targetDocument) { 18194 const runtime = getRuntime16(); 18195 runtime.documents.set( 18196 targetDocument, 18197 (runtime.documents.get(targetDocument) ?? 0) + 1 18198 ); 18199 for (const [hash, css] of runtime.styles) { 18200 injectStyle16(targetDocument, hash, css); 18201 } 18202 return () => { 18203 const count = runtime.documents.get(targetDocument); 18204 if (count === void 0) { 18205 return; 18206 } 18207 if (count <= 1) { 18208 runtime.documents.delete(targetDocument); 18209 return; 18210 } 18211 runtime.documents.set(targetDocument, count - 1); 18212 }; 18213 } 18214 function registerStyle16(hash, css) { 18215 const runtime = getRuntime16(); 18216 runtime.styles.set(hash, css); 18217 for (const targetDocument of runtime.documents.keys()) { 18218 injectStyle16(targetDocument, hash, css); 18219 } 18220 } 18221 if (typeof process === "undefined" || true) { 18222 registerStyle16("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18223 } 18224 var item_popup_default4 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18225 var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol(); 18226 var ForwardedItemDescription = (0, import_element40.forwardRef)(function ItemDescription(props, ref) { 18227 const { className, validationToken, ...restProps } = props; 18228 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) { 18229 throw new Error( 18230 "Autocomplete.ItemDescription: Missing direct autocomplete item parent. Render <Autocomplete.ItemDescription> as a direct child of <Autocomplete.Item>." 18231 ); 18232 } 18233 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 18234 Text, 18235 { 18236 ref, 18237 variant: "body-sm", 18238 className: clsx_default( 18239 item_popup_default4["item-description"], 18240 className 18241 ), 18242 ...restProps 18243 } 18244 ); 18245 }); 18246 18247 // packages/ui/build-module/form/primitives/autocomplete/item-label.mjs 18248 var import_element41 = __toESM(require_element(), 1); 18249 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 18250 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 18251 function getRuntime17() { 18252 const globalScope = globalThis; 18253 if (globalScope.__wpStyleRuntime) { 18254 return globalScope.__wpStyleRuntime; 18255 } 18256 globalScope.__wpStyleRuntime = { 18257 documents: /* @__PURE__ */ new Map(), 18258 styles: /* @__PURE__ */ new Map(), 18259 injectedStyles: /* @__PURE__ */ new WeakMap() 18260 }; 18261 if (typeof document !== "undefined") { 18262 registerDocument17(document); 18263 } 18264 return globalScope.__wpStyleRuntime; 18265 } 18266 function documentContainsStyleHash17(targetDocument, hash) { 18267 if (!targetDocument.head) { 18268 return false; 18269 } 18270 for (const style of targetDocument.head.querySelectorAll( 18271 `style[$STYLE_HASH_ATTRIBUTE17}]` 18272 )) { 18273 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 18274 return true; 18275 } 18276 } 18277 return false; 18278 } 18279 function injectStyle17(targetDocument, hash, css) { 18280 if (!targetDocument.head) { 18281 return; 18282 } 18283 const runtime = getRuntime17(); 18284 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18285 if (!injectedStyles) { 18286 injectedStyles = /* @__PURE__ */ new Set(); 18287 runtime.injectedStyles.set(targetDocument, injectedStyles); 18288 } 18289 if (injectedStyles.has(hash)) { 18290 return; 18291 } 18292 if (documentContainsStyleHash17(targetDocument, hash)) { 18293 injectedStyles.add(hash); 18294 return; 18295 } 18296 const style = targetDocument.createElement("style"); 18297 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 18298 style.appendChild(targetDocument.createTextNode(css)); 18299 targetDocument.head.appendChild(style); 18300 injectedStyles.add(hash); 18301 } 18302 function registerDocument17(targetDocument) { 18303 const runtime = getRuntime17(); 18304 runtime.documents.set( 18305 targetDocument, 18306 (runtime.documents.get(targetDocument) ?? 0) + 1 18307 ); 18308 for (const [hash, css] of runtime.styles) { 18309 injectStyle17(targetDocument, hash, css); 18310 } 18311 return () => { 18312 const count = runtime.documents.get(targetDocument); 18313 if (count === void 0) { 18314 return; 18315 } 18316 if (count <= 1) { 18317 runtime.documents.delete(targetDocument); 18318 return; 18319 } 18320 runtime.documents.set(targetDocument, count - 1); 18321 }; 18322 } 18323 function registerStyle17(hash, css) { 18324 const runtime = getRuntime17(); 18325 runtime.styles.set(hash, css); 18326 for (const targetDocument of runtime.documents.keys()) { 18327 injectStyle17(targetDocument, hash, css); 18328 } 18329 } 18330 if (typeof process === "undefined" || true) { 18331 registerStyle17("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18332 } 18333 var item_popup_default5 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18334 var ForwardedItemLabel = (0, import_element41.forwardRef)(function ItemLabel({ className, ...restProps }, ref) { 18335 return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 18336 Text, 18337 { 18338 ref, 18339 variant: "body-md", 18340 className: clsx_default(item_popup_default5["item-label"], className), 18341 ...restProps 18342 } 18343 ); 18344 }); 18345 18346 // packages/ui/build-module/form/primitives/autocomplete/item.mjs 18347 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 18348 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 18349 function getRuntime18() { 18350 const globalScope = globalThis; 18351 if (globalScope.__wpStyleRuntime) { 18352 return globalScope.__wpStyleRuntime; 18353 } 18354 globalScope.__wpStyleRuntime = { 18355 documents: /* @__PURE__ */ new Map(), 18356 styles: /* @__PURE__ */ new Map(), 18357 injectedStyles: /* @__PURE__ */ new WeakMap() 18358 }; 18359 if (typeof document !== "undefined") { 18360 registerDocument18(document); 18361 } 18362 return globalScope.__wpStyleRuntime; 18363 } 18364 function documentContainsStyleHash18(targetDocument, hash) { 18365 if (!targetDocument.head) { 18366 return false; 18367 } 18368 for (const style of targetDocument.head.querySelectorAll( 18369 `style[$STYLE_HASH_ATTRIBUTE18}]` 18370 )) { 18371 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 18372 return true; 18373 } 18374 } 18375 return false; 18376 } 18377 function injectStyle18(targetDocument, hash, css) { 18378 if (!targetDocument.head) { 18379 return; 18380 } 18381 const runtime = getRuntime18(); 18382 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18383 if (!injectedStyles) { 18384 injectedStyles = /* @__PURE__ */ new Set(); 18385 runtime.injectedStyles.set(targetDocument, injectedStyles); 18386 } 18387 if (injectedStyles.has(hash)) { 18388 return; 18389 } 18390 if (documentContainsStyleHash18(targetDocument, hash)) { 18391 injectedStyles.add(hash); 18392 return; 18393 } 18394 const style = targetDocument.createElement("style"); 18395 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 18396 style.appendChild(targetDocument.createTextNode(css)); 18397 targetDocument.head.appendChild(style); 18398 injectedStyles.add(hash); 18399 } 18400 function registerDocument18(targetDocument) { 18401 const runtime = getRuntime18(); 18402 runtime.documents.set( 18403 targetDocument, 18404 (runtime.documents.get(targetDocument) ?? 0) + 1 18405 ); 18406 for (const [hash, css] of runtime.styles) { 18407 injectStyle18(targetDocument, hash, css); 18408 } 18409 return () => { 18410 const count = runtime.documents.get(targetDocument); 18411 if (count === void 0) { 18412 return; 18413 } 18414 if (count <= 1) { 18415 runtime.documents.delete(targetDocument); 18416 return; 18417 } 18418 runtime.documents.set(targetDocument, count - 1); 18419 }; 18420 } 18421 function registerStyle18(hash, css) { 18422 const runtime = getRuntime18(); 18423 runtime.styles.set(hash, css); 18424 for (const targetDocument of runtime.documents.keys()) { 18425 injectStyle18(targetDocument, hash, css); 18426 } 18427 } 18428 if (typeof process === "undefined" || true) { 18429 registerStyle18("abb19c3171", "._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)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 18430 } 18431 var global_css_defense_default5 = { "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", "span": "_400bf7ee0c6061a9__span" }; 18432 if (typeof process === "undefined" || true) { 18433 registerStyle18("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18434 } 18435 var item_popup_default6 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18436 if (typeof process === "undefined" || true) { 18437 registerStyle18("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 18438 } 18439 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 18440 var ITEM_CONTENT_COMPONENTS = { 18441 Label: ForwardedItemLabel, 18442 Description: ForwardedItemDescription, 18443 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD, 18444 validationMessage: "Autocomplete.ItemLabel must be the first direct child of every autocomplete item, followed only by Autocomplete.ItemDescription components." 18445 }; 18446 var Item = (0, import_element42.forwardRef)( 18447 function UnforwardedItem({ 18448 className, 18449 children, 18450 "aria-describedby": ariaDescribedBy, 18451 "aria-label": ariaLabel, 18452 "aria-labelledby": ariaLabelledBy, 18453 ...restProps 18454 }, ref) { 18455 const { contentChildren, itemAriaProps } = useItemContent( 18456 children, 18457 ITEM_CONTENT_COMPONENTS, 18458 { 18459 "aria-describedby": ariaDescribedBy, 18460 "aria-label": ariaLabel, 18461 "aria-labelledby": ariaLabelledBy 18462 } 18463 ); 18464 return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( 18465 index_parts_exports.Item, 18466 { 18467 className: clsx_default( 18468 global_css_defense_default5.div, 18469 resets_default4["box-sizing"], 18470 item_popup_default6.item, 18471 className 18472 ), 18473 ref, 18474 ...itemAriaProps, 18475 ...restProps, 18476 children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: item_popup_default6["item-text"], children: contentChildren }) 18477 } 18478 ); 18479 } 18480 ); 18481 18482 // packages/ui/build-module/form/primitives/autocomplete/list.mjs 18483 var import_element43 = __toESM(require_element(), 1); 18484 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 18485 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 18486 function getRuntime19() { 18487 const globalScope = globalThis; 18488 if (globalScope.__wpStyleRuntime) { 18489 return globalScope.__wpStyleRuntime; 18490 } 18491 globalScope.__wpStyleRuntime = { 18492 documents: /* @__PURE__ */ new Map(), 18493 styles: /* @__PURE__ */ new Map(), 18494 injectedStyles: /* @__PURE__ */ new WeakMap() 18495 }; 18496 if (typeof document !== "undefined") { 18497 registerDocument19(document); 18498 } 18499 return globalScope.__wpStyleRuntime; 18500 } 18501 function documentContainsStyleHash19(targetDocument, hash) { 18502 if (!targetDocument.head) { 18503 return false; 18504 } 18505 for (const style of targetDocument.head.querySelectorAll( 18506 `style[$STYLE_HASH_ATTRIBUTE19}]` 18507 )) { 18508 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 18509 return true; 18510 } 18511 } 18512 return false; 18513 } 18514 function injectStyle19(targetDocument, hash, css) { 18515 if (!targetDocument.head) { 18516 return; 18517 } 18518 const runtime = getRuntime19(); 18519 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18520 if (!injectedStyles) { 18521 injectedStyles = /* @__PURE__ */ new Set(); 18522 runtime.injectedStyles.set(targetDocument, injectedStyles); 18523 } 18524 if (injectedStyles.has(hash)) { 18525 return; 18526 } 18527 if (documentContainsStyleHash19(targetDocument, hash)) { 18528 injectedStyles.add(hash); 18529 return; 18530 } 18531 const style = targetDocument.createElement("style"); 18532 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 18533 style.appendChild(targetDocument.createTextNode(css)); 18534 targetDocument.head.appendChild(style); 18535 injectedStyles.add(hash); 18536 } 18537 function registerDocument19(targetDocument) { 18538 const runtime = getRuntime19(); 18539 runtime.documents.set( 18540 targetDocument, 18541 (runtime.documents.get(targetDocument) ?? 0) + 1 18542 ); 18543 for (const [hash, css] of runtime.styles) { 18544 injectStyle19(targetDocument, hash, css); 18545 } 18546 return () => { 18547 const count = runtime.documents.get(targetDocument); 18548 if (count === void 0) { 18549 return; 18550 } 18551 if (count <= 1) { 18552 runtime.documents.delete(targetDocument); 18553 return; 18554 } 18555 runtime.documents.set(targetDocument, count - 1); 18556 }; 18557 } 18558 function registerStyle19(hash, css) { 18559 const runtime = getRuntime19(); 18560 runtime.styles.set(hash, css); 18561 for (const targetDocument of runtime.documents.keys()) { 18562 injectStyle19(targetDocument, hash, css); 18563 } 18564 } 18565 if (typeof process === "undefined" || true) { 18566 registerStyle19("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18567 } 18568 var item_popup_default7 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18569 var List = (0, import_element43.forwardRef)( 18570 function UnforwardedList({ className, ...restProps }, ref) { 18571 return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 18572 index_parts_exports.List, 18573 { 18574 className: clsx_default(item_popup_default7.list, className), 18575 ref, 18576 ...restProps 18577 } 18578 ); 18579 } 18580 ); 18581 18582 // packages/ui/build-module/form/primitives/autocomplete/list-body.mjs 18583 var import_element44 = __toESM(require_element(), 1); 18584 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 18585 function getRuntime20() { 18586 const globalScope = globalThis; 18587 if (globalScope.__wpStyleRuntime) { 18588 return globalScope.__wpStyleRuntime; 18589 } 18590 globalScope.__wpStyleRuntime = { 18591 documents: /* @__PURE__ */ new Map(), 18592 styles: /* @__PURE__ */ new Map(), 18593 injectedStyles: /* @__PURE__ */ new WeakMap() 18594 }; 18595 if (typeof document !== "undefined") { 18596 registerDocument20(document); 18597 } 18598 return globalScope.__wpStyleRuntime; 18599 } 18600 function documentContainsStyleHash20(targetDocument, hash) { 18601 if (!targetDocument.head) { 18602 return false; 18603 } 18604 for (const style of targetDocument.head.querySelectorAll( 18605 `style[$STYLE_HASH_ATTRIBUTE20}]` 18606 )) { 18607 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 18608 return true; 18609 } 18610 } 18611 return false; 18612 } 18613 function injectStyle20(targetDocument, hash, css) { 18614 if (!targetDocument.head) { 18615 return; 18616 } 18617 const runtime = getRuntime20(); 18618 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18619 if (!injectedStyles) { 18620 injectedStyles = /* @__PURE__ */ new Set(); 18621 runtime.injectedStyles.set(targetDocument, injectedStyles); 18622 } 18623 if (injectedStyles.has(hash)) { 18624 return; 18625 } 18626 if (documentContainsStyleHash20(targetDocument, hash)) { 18627 injectedStyles.add(hash); 18628 return; 18629 } 18630 const style = targetDocument.createElement("style"); 18631 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 18632 style.appendChild(targetDocument.createTextNode(css)); 18633 targetDocument.head.appendChild(style); 18634 injectedStyles.add(hash); 18635 } 18636 function registerDocument20(targetDocument) { 18637 const runtime = getRuntime20(); 18638 runtime.documents.set( 18639 targetDocument, 18640 (runtime.documents.get(targetDocument) ?? 0) + 1 18641 ); 18642 for (const [hash, css] of runtime.styles) { 18643 injectStyle20(targetDocument, hash, css); 18644 } 18645 return () => { 18646 const count = runtime.documents.get(targetDocument); 18647 if (count === void 0) { 18648 return; 18649 } 18650 if (count <= 1) { 18651 runtime.documents.delete(targetDocument); 18652 return; 18653 } 18654 runtime.documents.set(targetDocument, count - 1); 18655 }; 18656 } 18657 function registerStyle20(hash, css) { 18658 const runtime = getRuntime20(); 18659 runtime.styles.set(hash, css); 18660 for (const targetDocument of runtime.documents.keys()) { 18661 injectStyle20(targetDocument, hash, css); 18662 } 18663 } 18664 if (typeof process === "undefined" || true) { 18665 registerStyle20("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18666 } 18667 var item_popup_default8 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18668 var ListBody = (0, import_element44.forwardRef)( 18669 function UnforwardedListBody({ render, ...props }, ref) { 18670 const element = useRender({ 18671 defaultTagName: "div", 18672 render, 18673 ref, 18674 props: mergeProps( 18675 { className: item_popup_default8["list-scrollable-container"] }, 18676 props 18677 ) 18678 }); 18679 return element; 18680 } 18681 ); 18682 18683 // packages/ui/build-module/form/primitives/autocomplete/popup.mjs 18684 var import_element47 = __toESM(require_element(), 1); 18685 18686 // packages/ui/build-module/utils/css/item-popup.mjs 18687 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 18688 function getRuntime21() { 18689 const globalScope = globalThis; 18690 if (globalScope.__wpStyleRuntime) { 18691 return globalScope.__wpStyleRuntime; 18692 } 18693 globalScope.__wpStyleRuntime = { 18694 documents: /* @__PURE__ */ new Map(), 18695 styles: /* @__PURE__ */ new Map(), 18696 injectedStyles: /* @__PURE__ */ new WeakMap() 18697 }; 18698 if (typeof document !== "undefined") { 18699 registerDocument21(document); 18700 } 18701 return globalScope.__wpStyleRuntime; 18702 } 18703 function documentContainsStyleHash21(targetDocument, hash) { 18704 if (!targetDocument.head) { 18705 return false; 18706 } 18707 for (const style of targetDocument.head.querySelectorAll( 18708 `style[$STYLE_HASH_ATTRIBUTE21}]` 18709 )) { 18710 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 18711 return true; 18712 } 18713 } 18714 return false; 18715 } 18716 function injectStyle21(targetDocument, hash, css) { 18717 if (!targetDocument.head) { 18718 return; 18719 } 18720 const runtime = getRuntime21(); 18721 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18722 if (!injectedStyles) { 18723 injectedStyles = /* @__PURE__ */ new Set(); 18724 runtime.injectedStyles.set(targetDocument, injectedStyles); 18725 } 18726 if (injectedStyles.has(hash)) { 18727 return; 18728 } 18729 if (documentContainsStyleHash21(targetDocument, hash)) { 18730 injectedStyles.add(hash); 18731 return; 18732 } 18733 const style = targetDocument.createElement("style"); 18734 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 18735 style.appendChild(targetDocument.createTextNode(css)); 18736 targetDocument.head.appendChild(style); 18737 injectedStyles.add(hash); 18738 } 18739 function registerDocument21(targetDocument) { 18740 const runtime = getRuntime21(); 18741 runtime.documents.set( 18742 targetDocument, 18743 (runtime.documents.get(targetDocument) ?? 0) + 1 18744 ); 18745 for (const [hash, css] of runtime.styles) { 18746 injectStyle21(targetDocument, hash, css); 18747 } 18748 return () => { 18749 const count = runtime.documents.get(targetDocument); 18750 if (count === void 0) { 18751 return; 18752 } 18753 if (count <= 1) { 18754 runtime.documents.delete(targetDocument); 18755 return; 18756 } 18757 runtime.documents.set(targetDocument, count - 1); 18758 }; 18759 } 18760 function registerStyle21(hash, css) { 18761 const runtime = getRuntime21(); 18762 runtime.styles.set(hash, css); 18763 for (const targetDocument of runtime.documents.keys()) { 18764 injectStyle21(targetDocument, hash, css); 18765 } 18766 } 18767 if (typeof process === "undefined" || true) { 18768 registerStyle21("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18769 } 18770 var item_popup_default9 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 18771 function getItemPopupWidthClassName(width = "anchor") { 18772 switch (width) { 18773 case "available": 18774 return item_popup_default9["is-width-available"]; 18775 case "content": 18776 return item_popup_default9["is-width-content"]; 18777 case "lg": 18778 return item_popup_default9["is-width-lg"]; 18779 case "md": 18780 return item_popup_default9["is-width-md"]; 18781 case "sm": 18782 return item_popup_default9["is-width-sm"]; 18783 case "anchor": 18784 return item_popup_default9["is-width-anchor"]; 18785 default: 18786 return false; 18787 } 18788 } 18789 18790 // packages/ui/build-module/form/primitives/autocomplete/portal.mjs 18791 var import_element45 = __toESM(require_element(), 1); 18792 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 18793 var Portal2 = (0, import_element45.forwardRef)( 18794 function AutocompletePortal({ container, ...restProps }, ref) { 18795 return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( 18796 index_parts_exports.Portal, 18797 { 18798 container: container === void 0 ? getWpCompatOverlaySlot() : container, 18799 ...restProps, 18800 ref 18801 } 18802 ); 18803 } 18804 ); 18805 18806 // packages/ui/build-module/form/primitives/autocomplete/positioner.mjs 18807 var import_element46 = __toESM(require_element(), 1); 18808 var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); 18809 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 18810 function getRuntime22() { 18811 const globalScope = globalThis; 18812 if (globalScope.__wpStyleRuntime) { 18813 return globalScope.__wpStyleRuntime; 18814 } 18815 globalScope.__wpStyleRuntime = { 18816 documents: /* @__PURE__ */ new Map(), 18817 styles: /* @__PURE__ */ new Map(), 18818 injectedStyles: /* @__PURE__ */ new WeakMap() 18819 }; 18820 if (typeof document !== "undefined") { 18821 registerDocument22(document); 18822 } 18823 return globalScope.__wpStyleRuntime; 18824 } 18825 function documentContainsStyleHash22(targetDocument, hash) { 18826 if (!targetDocument.head) { 18827 return false; 18828 } 18829 for (const style of targetDocument.head.querySelectorAll( 18830 `style[$STYLE_HASH_ATTRIBUTE22}]` 18831 )) { 18832 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 18833 return true; 18834 } 18835 } 18836 return false; 18837 } 18838 function injectStyle22(targetDocument, hash, css) { 18839 if (!targetDocument.head) { 18840 return; 18841 } 18842 const runtime = getRuntime22(); 18843 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18844 if (!injectedStyles) { 18845 injectedStyles = /* @__PURE__ */ new Set(); 18846 runtime.injectedStyles.set(targetDocument, injectedStyles); 18847 } 18848 if (injectedStyles.has(hash)) { 18849 return; 18850 } 18851 if (documentContainsStyleHash22(targetDocument, hash)) { 18852 injectedStyles.add(hash); 18853 return; 18854 } 18855 const style = targetDocument.createElement("style"); 18856 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 18857 style.appendChild(targetDocument.createTextNode(css)); 18858 targetDocument.head.appendChild(style); 18859 injectedStyles.add(hash); 18860 } 18861 function registerDocument22(targetDocument) { 18862 const runtime = getRuntime22(); 18863 runtime.documents.set( 18864 targetDocument, 18865 (runtime.documents.get(targetDocument) ?? 0) + 1 18866 ); 18867 for (const [hash, css] of runtime.styles) { 18868 injectStyle22(targetDocument, hash, css); 18869 } 18870 return () => { 18871 const count = runtime.documents.get(targetDocument); 18872 if (count === void 0) { 18873 return; 18874 } 18875 if (count <= 1) { 18876 runtime.documents.delete(targetDocument); 18877 return; 18878 } 18879 runtime.documents.set(targetDocument, count - 1); 18880 }; 18881 } 18882 function registerStyle22(hash, css) { 18883 const runtime = getRuntime22(); 18884 runtime.styles.set(hash, css); 18885 for (const targetDocument of runtime.documents.keys()) { 18886 injectStyle22(targetDocument, hash, css); 18887 } 18888 } 18889 if (typeof process === "undefined" || true) { 18890 registerStyle22("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 18891 } 18892 var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 18893 if (typeof process === "undefined" || true) { 18894 registerStyle22("e61eb95308", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._8eb0a29484225eea__positioner{z-index:var(--wp-ui-autocomplete-z-index,initial)}}}"); 18895 } 18896 var style_default12 = { "positioner": "_8eb0a29484225eea__positioner" }; 18897 var Positioner2 = (0, import_element46.forwardRef)( 18898 function AutocompletePositioner({ className, ...props }, ref) { 18899 return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( 18900 index_parts_exports.Positioner, 18901 { 18902 ...ITEM_POPUP_POSITIONER_PROPS, 18903 ...props, 18904 ref, 18905 className: clsx_default( 18906 resets_default5["box-sizing"], 18907 style_default12.positioner, 18908 className 18909 ) 18910 } 18911 ); 18912 } 18913 ); 18914 18915 // packages/ui/build-module/form/primitives/autocomplete/popup.mjs 18916 var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); 18917 var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash"; 18918 function getRuntime23() { 18919 const globalScope = globalThis; 18920 if (globalScope.__wpStyleRuntime) { 18921 return globalScope.__wpStyleRuntime; 18922 } 18923 globalScope.__wpStyleRuntime = { 18924 documents: /* @__PURE__ */ new Map(), 18925 styles: /* @__PURE__ */ new Map(), 18926 injectedStyles: /* @__PURE__ */ new WeakMap() 18927 }; 18928 if (typeof document !== "undefined") { 18929 registerDocument23(document); 18930 } 18931 return globalScope.__wpStyleRuntime; 18932 } 18933 function documentContainsStyleHash23(targetDocument, hash) { 18934 if (!targetDocument.head) { 18935 return false; 18936 } 18937 for (const style of targetDocument.head.querySelectorAll( 18938 `style[$STYLE_HASH_ATTRIBUTE23}]` 18939 )) { 18940 if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) { 18941 return true; 18942 } 18943 } 18944 return false; 18945 } 18946 function injectStyle23(targetDocument, hash, css) { 18947 if (!targetDocument.head) { 18948 return; 18949 } 18950 const runtime = getRuntime23(); 18951 let injectedStyles = runtime.injectedStyles.get(targetDocument); 18952 if (!injectedStyles) { 18953 injectedStyles = /* @__PURE__ */ new Set(); 18954 runtime.injectedStyles.set(targetDocument, injectedStyles); 18955 } 18956 if (injectedStyles.has(hash)) { 18957 return; 18958 } 18959 if (documentContainsStyleHash23(targetDocument, hash)) { 18960 injectedStyles.add(hash); 18961 return; 18962 } 18963 const style = targetDocument.createElement("style"); 18964 style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash); 18965 style.appendChild(targetDocument.createTextNode(css)); 18966 targetDocument.head.appendChild(style); 18967 injectedStyles.add(hash); 18968 } 18969 function registerDocument23(targetDocument) { 18970 const runtime = getRuntime23(); 18971 runtime.documents.set( 18972 targetDocument, 18973 (runtime.documents.get(targetDocument) ?? 0) + 1 18974 ); 18975 for (const [hash, css] of runtime.styles) { 18976 injectStyle23(targetDocument, hash, css); 18977 } 18978 return () => { 18979 const count = runtime.documents.get(targetDocument); 18980 if (count === void 0) { 18981 return; 18982 } 18983 if (count <= 1) { 18984 runtime.documents.delete(targetDocument); 18985 return; 18986 } 18987 runtime.documents.set(targetDocument, count - 1); 18988 }; 18989 } 18990 function registerStyle23(hash, css) { 18991 const runtime = getRuntime23(); 18992 runtime.styles.set(hash, css); 18993 for (const targetDocument of runtime.documents.keys()) { 18994 injectStyle23(targetDocument, hash, css); 18995 } 18996 } 18997 if (typeof process === "undefined" || true) { 18998 registerStyle23("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 18999 } 19000 var item_popup_default10 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 19001 var Popup2 = (0, import_element47.forwardRef)( 19002 function UnforwardedPopup({ className, portal, positioner, width, ...restProps }, ref) { 19003 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( 19004 index_parts_exports.Popup, 19005 { 19006 ref, 19007 className: clsx_default( 19008 item_popup_default10.popup, 19009 getItemPopupWidthClassName(width), 19010 className 19011 ), 19012 ...restProps 19013 } 19014 ); 19015 const positionedPopup = renderSlotWithChildren( 19016 positioner, 19017 /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Positioner2, {}), 19018 popupContent 19019 ); 19020 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Portal2, {}), positionedPopup); 19021 } 19022 ); 19023 19024 // packages/ui/build-module/form/primitives/autocomplete/context.mjs 19025 var import_element48 = __toESM(require_element(), 1); 19026 var AutocompleteGridContext = (0, import_element48.createContext)(false); 19027 var useAutocompleteGridContext = () => (0, import_element48.useContext)(AutocompleteGridContext); 19028 19029 // packages/ui/build-module/form/primitives/autocomplete/root.mjs 19030 var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); 19031 var Root2 = function Root22(props) { 19032 return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(AutocompleteGridContext.Provider, { value: Boolean(props.grid), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(index_parts_exports.Root, { ...props }) }) }); 19033 }; 19034 19035 // packages/ui/build-module/form/primitives/autocomplete/row.mjs 19036 var import_element49 = __toESM(require_element(), 1); 19037 var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); 19038 var Row = (0, import_element49.forwardRef)( 19039 function UnforwardedRow({ children, ...restProps }, ref) { 19040 const isGrid = useAutocompleteGridContext(); 19041 if (!isGrid) { 19042 throw new Error( 19043 "Autocomplete.Row: Missing parent <Autocomplete.Root grid>. Render <Autocomplete.Row> inside <Autocomplete.Root grid>." 19044 ); 19045 } 19046 return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(index_parts_exports.Row, { ref, ...restProps, children }); 19047 } 19048 ); 19049 19050 // packages/ui/build-module/form/primitives/autocomplete/separator.mjs 19051 var import_element50 = __toESM(require_element(), 1); 19052 var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); 19053 var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash"; 19054 function getRuntime24() { 19055 const globalScope = globalThis; 19056 if (globalScope.__wpStyleRuntime) { 19057 return globalScope.__wpStyleRuntime; 19058 } 19059 globalScope.__wpStyleRuntime = { 19060 documents: /* @__PURE__ */ new Map(), 19061 styles: /* @__PURE__ */ new Map(), 19062 injectedStyles: /* @__PURE__ */ new WeakMap() 19063 }; 19064 if (typeof document !== "undefined") { 19065 registerDocument24(document); 19066 } 19067 return globalScope.__wpStyleRuntime; 19068 } 19069 function documentContainsStyleHash24(targetDocument, hash) { 19070 if (!targetDocument.head) { 19071 return false; 19072 } 19073 for (const style of targetDocument.head.querySelectorAll( 19074 `style[$STYLE_HASH_ATTRIBUTE24}]` 19075 )) { 19076 if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) { 19077 return true; 19078 } 19079 } 19080 return false; 19081 } 19082 function injectStyle24(targetDocument, hash, css) { 19083 if (!targetDocument.head) { 19084 return; 19085 } 19086 const runtime = getRuntime24(); 19087 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19088 if (!injectedStyles) { 19089 injectedStyles = /* @__PURE__ */ new Set(); 19090 runtime.injectedStyles.set(targetDocument, injectedStyles); 19091 } 19092 if (injectedStyles.has(hash)) { 19093 return; 19094 } 19095 if (documentContainsStyleHash24(targetDocument, hash)) { 19096 injectedStyles.add(hash); 19097 return; 19098 } 19099 const style = targetDocument.createElement("style"); 19100 style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash); 19101 style.appendChild(targetDocument.createTextNode(css)); 19102 targetDocument.head.appendChild(style); 19103 injectedStyles.add(hash); 19104 } 19105 function registerDocument24(targetDocument) { 19106 const runtime = getRuntime24(); 19107 runtime.documents.set( 19108 targetDocument, 19109 (runtime.documents.get(targetDocument) ?? 0) + 1 19110 ); 19111 for (const [hash, css] of runtime.styles) { 19112 injectStyle24(targetDocument, hash, css); 19113 } 19114 return () => { 19115 const count = runtime.documents.get(targetDocument); 19116 if (count === void 0) { 19117 return; 19118 } 19119 if (count <= 1) { 19120 runtime.documents.delete(targetDocument); 19121 return; 19122 } 19123 runtime.documents.set(targetDocument, count - 1); 19124 }; 19125 } 19126 function registerStyle24(hash, css) { 19127 const runtime = getRuntime24(); 19128 runtime.styles.set(hash, css); 19129 for (const targetDocument of runtime.documents.keys()) { 19130 injectStyle24(targetDocument, hash, css); 19131 } 19132 } 19133 if (typeof process === "undefined" || true) { 19134 registerStyle24("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 19135 } 19136 var item_popup_default11 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 19137 var Separator = (0, import_element50.forwardRef)(function AutocompleteSeparator2({ 19138 className, 19139 orientation: _orientation, 19140 ...props 19141 }, ref) { 19142 return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( 19143 index_parts_exports.Separator, 19144 { 19145 ref, 19146 className: clsx_default(item_popup_default11.separator, className), 19147 ...props 19148 } 19149 ); 19150 }); 19151 19152 // packages/ui/build-module/form/primitives/autocomplete/status.mjs 19153 var import_element51 = __toESM(require_element(), 1); 19154 var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); 19155 var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash"; 19156 function getRuntime25() { 19157 const globalScope = globalThis; 19158 if (globalScope.__wpStyleRuntime) { 19159 return globalScope.__wpStyleRuntime; 19160 } 19161 globalScope.__wpStyleRuntime = { 19162 documents: /* @__PURE__ */ new Map(), 19163 styles: /* @__PURE__ */ new Map(), 19164 injectedStyles: /* @__PURE__ */ new WeakMap() 19165 }; 19166 if (typeof document !== "undefined") { 19167 registerDocument25(document); 19168 } 19169 return globalScope.__wpStyleRuntime; 19170 } 19171 function documentContainsStyleHash25(targetDocument, hash) { 19172 if (!targetDocument.head) { 19173 return false; 19174 } 19175 for (const style of targetDocument.head.querySelectorAll( 19176 `style[$STYLE_HASH_ATTRIBUTE25}]` 19177 )) { 19178 if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) { 19179 return true; 19180 } 19181 } 19182 return false; 19183 } 19184 function injectStyle25(targetDocument, hash, css) { 19185 if (!targetDocument.head) { 19186 return; 19187 } 19188 const runtime = getRuntime25(); 19189 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19190 if (!injectedStyles) { 19191 injectedStyles = /* @__PURE__ */ new Set(); 19192 runtime.injectedStyles.set(targetDocument, injectedStyles); 19193 } 19194 if (injectedStyles.has(hash)) { 19195 return; 19196 } 19197 if (documentContainsStyleHash25(targetDocument, hash)) { 19198 injectedStyles.add(hash); 19199 return; 19200 } 19201 const style = targetDocument.createElement("style"); 19202 style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash); 19203 style.appendChild(targetDocument.createTextNode(css)); 19204 targetDocument.head.appendChild(style); 19205 injectedStyles.add(hash); 19206 } 19207 function registerDocument25(targetDocument) { 19208 const runtime = getRuntime25(); 19209 runtime.documents.set( 19210 targetDocument, 19211 (runtime.documents.get(targetDocument) ?? 0) + 1 19212 ); 19213 for (const [hash, css] of runtime.styles) { 19214 injectStyle25(targetDocument, hash, css); 19215 } 19216 return () => { 19217 const count = runtime.documents.get(targetDocument); 19218 if (count === void 0) { 19219 return; 19220 } 19221 if (count <= 1) { 19222 runtime.documents.delete(targetDocument); 19223 return; 19224 } 19225 runtime.documents.set(targetDocument, count - 1); 19226 }; 19227 } 19228 function registerStyle25(hash, css) { 19229 const runtime = getRuntime25(); 19230 runtime.styles.set(hash, css); 19231 for (const targetDocument of runtime.documents.keys()) { 19232 injectStyle25(targetDocument, hash, css); 19233 } 19234 } 19235 if (typeof process === "undefined" || true) { 19236 registerStyle25("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-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-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 19237 } 19238 var item_popup_default12 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 19239 var Status = (0, import_element51.forwardRef)( 19240 function UnforwardedStatus({ className, ...restProps }, ref) { 19241 return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( 19242 index_parts_exports.Status, 19243 { 19244 className: clsx_default(item_popup_default12.status, className), 19245 ref, 19246 ...restProps 19247 } 19248 ); 19249 } 19250 ); 19251 19252 // packages/ui/build-module/form/primitives/autocomplete/use-filtered-items.mjs 19253 function useFilteredItems2() { 19254 return index_parts_exports.useFilteredItems(); 19255 } 19256 19257 // packages/ui/build-module/form/primitives/autocomplete/value.mjs 19258 var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); 19259 function Value(props) { 19260 return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(index_parts_exports.Value, { ...props }); 19261 } 19262 19263 // packages/workflow/build-module/components/workflow-menu.mjs 19264 var import_data = __toESM(require_data(), 1); 19265 var import_element52 = __toESM(require_element(), 1); 19266 var import_i18n6 = __toESM(require_i18n(), 1); 19267 var import_components = __toESM(require_components(), 1); 19268 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); 19269 var import_keycodes = __toESM(require_keycodes(), 1); 19270 import { executeAbility, store as abilitiesStore } from "@wordpress/abilities"; 19271 19272 // packages/workflow/build-module/utils/get-error-message.mjs 19273 var import_html_entities = __toESM(require_html_entities(), 1); 19274 var import_i18n5 = __toESM(require_i18n(), 1); 19275 function getErrorMessage(error2) { 19276 let message = ""; 19277 if (typeof error2 === "object" && error2 !== null) { 19278 if ("message" in error2 && typeof error2.message === "string") { 19279 message = error2.message; 19280 } 19281 if (!message && "name" in error2 && typeof error2.name === "string") { 19282 message = error2.name; 19283 } 19284 } else if (error2 !== null && error2 !== void 0) { 19285 message = String(error2); 19286 } 19287 if (!message) { 19288 return (0, import_i18n5.__)( 19289 "This ability couldn’t run. Check the browser console for details." 19290 ); 19291 } 19292 return (0, import_html_entities.decodeEntities)(message); 19293 } 19294 19295 // packages/workflow/build-module/components/workflow-menu.mjs 19296 var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); 19297 if (typeof document !== "undefined" && (typeof process === "undefined" || true) && !document.head.querySelector("style[data-wp-hash='715ff4efd0']")) { 19298 const style = document.createElement("style"); 19299 style.setAttribute("data-wp-hash", "715ff4efd0"); 19300 style.appendChild(document.createTextNode(":root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33.0384615385,68.7307692308,230.4615384615;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:23.6923076923,58.1538461538,214.3076923077;--wp-admin-border-width-focus:2px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}body.admin-color-fresh{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-fresh{--wp-admin-border-width-focus:1.5px}}.workflows-workflow-menu{border-radius:4px;margin:auto;max-width:400px;position:relative;top:calc(5% + 64px);width:calc(100% - 32px)}@media (min-width:600px){.workflows-workflow-menu{top:calc(10% + 64px)}}.workflows-workflow-menu .components-modal__content{margin:0;padding:0}.workflows-workflow-menu__overlay{align-items:start;display:block}.workflows-workflow-menu__container{will-change:transform}.workflows-workflow-menu__container:focus{outline:none}.workflows-workflow-menu__input{margin:8px}.workflows-workflow-menu__list{max-height:376px}.workflows-workflow-menu__list-body{padding:0 8px 8px}.workflows-workflow-menu__item-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workflows-workflow-menu__item mark{background:unset;color:inherit;font-weight:var(--wpds-typography-font-weight-emphasis,600)}.workflows-workflow-menu__output{padding:16px}.workflows-workflow-menu__output-header{border-bottom:1px solid #ddd;margin-bottom:16px;padding-bottom:8px}.workflows-workflow-menu__output-header h3{color:#1e1e1e;font-size:16px;font-weight:var(--wpds-typography-font-weight-emphasis,600);margin:0 0 4px}.workflows-workflow-menu__output-hint{color:#757575;font-size:12px;margin:0}.workflows-workflow-menu__output-content{max-height:400px;overflow:auto}.workflows-workflow-menu__output-content pre{background:#f0f0f0;border-radius:2px;color:#1e1e1e;font-size:12px;line-height:1.5;margin:0;overflow-wrap:anywhere;padding:12px;white-space:pre-wrap}.workflows-workflow-menu__output-error{background:#e0e0e0;border:1px solid #9e1313;border-radius:2px;color:#cc1818;padding:12px}.workflows-workflow-menu__output-error p{font-size:13px;margin:0}.workflows-workflow-menu__empty:not(:empty),.workflows-workflow-menu__executing:not(:empty){justify-content:center;padding:8px 0 16px}")); 19301 document.head.appendChild(style); 19302 } 19303 var EMPTY_ARRAY2 = []; 19304 var inputLabel = (0, import_i18n6.__)("Run abilities and workflows"); 19305 function WorkflowMenu() { 19306 const { registerShortcut } = (0, import_data.useDispatch)(import_keyboard_shortcuts.store); 19307 const [isOpen, setIsOpen] = (0, import_element52.useState)(false); 19308 (0, import_element52.useEffect)(() => { 19309 registerShortcut({ 19310 name: "core/workflows", 19311 category: "global", 19312 description: (0, import_i18n6.__)("Open the workflow palette."), 19313 keyCombination: { 19314 modifier: "primary", 19315 character: "j" 19316 } 19317 }); 19318 }, [registerShortcut]); 19319 (0, import_keyboard_shortcuts.useShortcut)( 19320 "core/workflows", 19321 (0, import_keycodes.withIgnoreIMEEvents)((event) => { 19322 if (event.defaultPrevented) { 19323 return; 19324 } 19325 event.preventDefault(); 19326 setIsOpen((open2) => !open2); 19327 }) 19328 ); 19329 (0, import_element52.useEffect)(() => { 19330 if (isOpen) { 19331 import("@wordpress/core-abilities"); 19332 } 19333 }, [isOpen]); 19334 if (!isOpen) { 19335 return null; 19336 } 19337 return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(WorkflowPalette, { onClose: () => setIsOpen(false) }); 19338 } 19339 function WorkflowPalette({ onClose }) { 19340 const [search, setSearch] = (0, import_element52.useState)(""); 19341 const [abilityOutput, setAbilityOutput] = (0, import_element52.useState)(null); 19342 const [isExecuting, setIsExecuting] = (0, import_element52.useState)(false); 19343 const containerRef = (0, import_element52.useRef)(null); 19344 const inputRef = (0, import_element52.useRef)(null); 19345 const abilities = (0, import_data.useSelect)((select) => { 19346 const allAbilities = select(abilitiesStore).getAbilities(); 19347 return allAbilities || EMPTY_ARRAY2; 19348 }, []); 19349 const filteredAbilities = (0, import_element52.useMemo)(() => { 19350 if (!search) { 19351 return abilities; 19352 } 19353 const searchLower = search.toLowerCase(); 19354 return abilities.filter( 19355 (ability) => ability.label.toLowerCase().includes(searchLower) || ability.name.toLowerCase().includes(searchLower) 19356 ); 19357 }, [abilities, search]); 19358 (0, import_element52.useEffect)(() => { 19359 if (abilityOutput && containerRef.current) { 19360 containerRef.current.focus(); 19361 } 19362 }, [abilityOutput]); 19363 (0, import_element52.useEffect)(() => { 19364 if (!abilityOutput) { 19365 inputRef.current?.focus(); 19366 } 19367 }, [abilityOutput]); 19368 const goBack = () => { 19369 setAbilityOutput(null); 19370 setIsExecuting(false); 19371 setSearch(""); 19372 }; 19373 const handleExecuteAbility = async (ability) => { 19374 setIsExecuting(true); 19375 const details = { 19376 name: ability.name, 19377 label: ability.label || ability.name, 19378 description: ability.description || "" 19379 }; 19380 try { 19381 const result = await executeAbility(ability.name); 19382 setAbilityOutput({ ...details, success: true, data: result }); 19383 } catch (error2) { 19384 setAbilityOutput({ 19385 ...details, 19386 success: false, 19387 error: getErrorMessage(error2) 19388 }); 19389 } finally { 19390 setIsExecuting(false); 19391 } 19392 }; 19393 const onContainerKeyDown = (event) => { 19394 if (abilityOutput && (event.key === "Escape" || event.key === "Backspace" || event.key === "Delete")) { 19395 event.preventDefault(); 19396 event.stopPropagation(); 19397 goBack(); 19398 } 19399 }; 19400 const items = isExecuting ? EMPTY_ARRAY2 : filteredAbilities; 19401 const showEmpty = !isExecuting && !!search && !filteredAbilities.length; 19402 return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19403 import_components.Modal, 19404 { 19405 className: "workflows-workflow-menu", 19406 overlayClassName: "workflows-workflow-menu__overlay", 19407 onRequestClose: abilityOutput ? goBack : onClose, 19408 __experimentalHideHeader: true, 19409 contentLabel: (0, import_i18n6.__)("Workflow palette"), 19410 children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19411 "div", 19412 { 19413 className: "workflows-workflow-menu__container", 19414 onKeyDown: (0, import_keycodes.withIgnoreIMEEvents)(onContainerKeyDown), 19415 ref: containerRef, 19416 tabIndex: -1, 19417 role: "presentation", 19418 children: abilityOutput ? /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "workflows-workflow-menu__output", children: [ 19419 /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "workflows-workflow-menu__output-header", children: [ 19420 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("h3", { children: abilityOutput.label }), 19421 abilityOutput.description && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("p", { className: "workflows-workflow-menu__output-hint", children: abilityOutput.description }) 19422 ] }), 19423 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "workflows-workflow-menu__output-content", children: abilityOutput.success ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("pre", { children: JSON.stringify( 19424 abilityOutput.data, 19425 null, 19426 2 19427 ) }) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "workflows-workflow-menu__output-error", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("p", { children: abilityOutput.error }) }) }) 19428 ] }) : /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( 19429 autocomplete_exports.Root, 19430 { 19431 items: abilities, 19432 filteredItems: items, 19433 mode: "list", 19434 value: search, 19435 onValueChange: setSearch, 19436 open: true, 19437 inline: true, 19438 autoHighlight: true, 19439 children: [ 19440 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19441 autocomplete_exports.Input, 19442 { 19443 ref: inputRef, 19444 placeholder: inputLabel, 19445 "aria-label": inputLabel, 19446 className: "workflows-workflow-menu__input", 19447 render: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19448 Input3, 19449 { 19450 prefix: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(InputLayout2.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19451 Icon, 19452 { 19453 icon: search_default, 19454 style: (0, import_i18n6.isRTL)() ? void 0 : { 19455 transform: "scaleX(-1)" 19456 } 19457 } 19458 ) }) 19459 } 19460 ) 19461 } 19462 ), 19463 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(autocomplete_exports.Status, { className: "workflows-workflow-menu__executing", children: isExecuting ? (0, import_i18n6.__)("Executing ability…") : null }), 19464 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(autocomplete_exports.Empty, { className: "workflows-workflow-menu__empty", children: showEmpty ? (0, import_i18n6.__)("No results found.") : null }), 19465 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19466 autocomplete_exports.List, 19467 { 19468 className: "workflows-workflow-menu__list", 19469 "aria-label": (0, import_i18n6.__)("Workflow suggestions"), 19470 children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(autocomplete_exports.ListBody, { className: "workflows-workflow-menu__list-body", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(autocomplete_exports.Collection, { children: (item) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19471 autocomplete_exports.Item, 19472 { 19473 value: item, 19474 className: "workflows-workflow-menu__item", 19475 onClick: () => handleExecuteAbility(item), 19476 children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(autocomplete_exports.ItemLabel, { className: "workflows-workflow-menu__item-label", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 19477 import_components.TextHighlight, 19478 { 19479 text: item.label, 19480 highlight: search 19481 } 19482 ) }) 19483 }, 19484 item.name 19485 ) }) }) 19486 } 19487 ) 19488 ] 19489 } 19490 ) 19491 } 19492 ) 19493 } 19494 ); 19495 } 19496 19497 // packages/workflow/build-module/index.mjs 19498 var root = document.createElement("div"); 19499 document.body.appendChild(root); 19500 (0, import_element53.createRoot)(root).render((0, import_element53.createElement)(WorkflowMenu)); 19501 /*! Bundled license information: 19502 19503 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 19504 (** 19505 * @license React 19506 * use-sync-external-store-shim.development.js 19507 * 19508 * Copyright (c) Meta Platforms, Inc. and affiliates. 19509 * 19510 * This source code is licensed under the MIT license found in the 19511 * LICENSE file in the root directory of this source tree. 19512 *) 19513 19514 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 19515 (** 19516 * @license React 19517 * use-sync-external-store-shim/with-selector.development.js 19518 * 19519 * Copyright (c) Meta Platforms, Inc. and affiliates. 19520 * 19521 * This source code is licensed under the MIT license found in the 19522 * LICENSE file in the root directory of this source tree. 19523 *) 19524 */
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Tue Nov 3 08:20:36 2026 | Cross-referenced by PHPXref |